Multiple ISP usage question

Hi, I have 3 ISPs which I’d like to use (concurrently, ideally, but maybe that is a more advanced question) and so far, when one connection drops, I physically disconnect the cable from one modem/ISP, connect the other one and test the connection, which is time-consuming and not efficient at all.

What I’d like to know is, if there’s a way to have the router (hAP ac lite RB952Ui-5ac2nd-US) check for the quality of the connections, and autoselect the best one? As I said, I would also like to use every connection, but I’m not familiar with the terminology to search for and read up on that.
Thanks in advance.

Using connection and route marks it is possible to direct traffic via multiple WAN connections, you can create marks based on source or destination ports or addresses - e.g. all traffic from a specific device on your LAN, all traffic to a specific host on the internet, all HTTP traffic, etc. One example here https://wiki.mikrotik.com/wiki/Manual:PCC

There are some caveats - when making multiple connections to a service, especially one with multiple addresses or fronted by a cloud delivery network, things can break when using the most aggressive marking strategies, e.g. some online backing and streaming services.

Disabling a particular outgoing WAN by checking of something is no longer reachable is possible, but “connection quality” is subjective and there isn’t anything to check it.

This is all I did for 2 ISP failover and it seems to work fine. Experts correct me if I am wrong. ISP1 is main, ISP2 is failover. They key is in the Distance set in /ip route.

/interface ethernet
set [ find default-name=ether1 ] comment=“To Switch”
set [ find default-name=ether2 ] comment=“ISP1”
set [ find default-name=ether3 ] comment=“ISP2”
set [ find default-name=ether4 ] disabled=yes
set [ find default-name=ether5 ] disabled=yes

/ip address
add address=XX.XX.XX.XX/XX interface=ether1 network=XX.XX.XX.XX
add address=XX.XX.XX.XX/XX interface=ether2 network=XX.XX.XX.XX
add address=XX.XX.XX.XX/XX interface=ether3 network=XX.XX.XX.XX

/ip route
add check-gateway=ping comment=“ISP1” distance=1 gateway=XX.XX.XX.XX
add check-gateway=ping comment=“ISP2” distance=2 gateway=XX.XX.XX.XX


After this, you can set routing marks to determine which particular LAN IP Address (or groups of addresses) will go out the 1st or 2nd ISP.

What I do is set up mangle rules to mark packets and do the routing decision. I use per connection classifier. A script monitors each isp by pinging 3 different hosts on the Internet and if 2 of them fails then disable respective mangle rules. Not real quality test but quite effective. Also traffic shaping with queue tree for each isp, sticky connections and rules to route traffic over same interface that was received that is useful for dst-Nat to the router public ip a dresses over the Internet.