My 3G failover system is orovided by a USB ‘dongle’ 3G NIC which looks like a modem to the router and the router switches over diverting traffic to 3G when all copper lines fail at the same time. My ISP does a PPP LCP ‘ping’ (not an ICMP usual ping, but they can do the latter too) of each of my lines every few seconds and my router similarly PPP LCP pings some [? which
] router at the ISP end every few seconds similarly to test whether or not each line is up, so if one link goes down then it redirects upstream traffic. If my router detects all lines really going down at the same time, it then switches over to 3G instead.
So both the ISP and my own router know from one second to the next whether a link is really up or down by testing all the way to the far end; ie a modem might report that a line is ‘up’ but there is an outage further away so the link effectively is still no good, but since we use end-to-end test continuously we really know whether the link is truly working or not (and we also know the latency too).
I have a program I wrote running in my iPad that talks to all my four modems (which contain custom firmware written by my friend here ‘johnson’
) and the program queries each modem for sync rates down and up. It converts the upstream rate received from sync rate to IP PDU rate (using the aforementioned multiplication) and generates an appropriate snippet of router XML config containing correct speed limits upstream for each modem (hence the 0.95 ‘modem loading factor’ which is used as well as the ‘protocol efficiency factor’ which for you and for me would be 0.884434 assuming your ADSL2 like me has a 32 byte protocol overhead for the combined total of all ADSL protocols below IP). This snippet of XML is inserted into an XML config file template and then the combined result is uploaded into my router. This means that the upstream speeds are set correctly for each line whenever I run the program, but this is not automatic, I have not yet got this to run on a monitoring server and change the speeds when needed. In any event that might not be such a good thing, since changing the ‘upstream egress rates’ on a link results in a tiny downtime, hardly noticeable, but it does happen if the old and new speeds differ. So I don’t routinely do it, not unless a link’s speed has gone down significantly.