TCP Over IP Anycast – Pipe Dream or Reality?
engineering.linkedin.com
engineering.linkedin.com
Some know-it-all busybodies like to proclaim that anycast can't work for TCP because the route can change during the session, but the reality is that:
- route changes are infrequent
- individual sessions are typically much shorter than route change intervals
- we never experienced proposed problems with sustained route flapping
- route changes are readily detected and handled as (rare) dead connections. The nicest bit is that transferred live connections can get rejected and closed immediately by the new server allowing for rapid recovery (unlike DNS changes which leaves things hanging for a long time).
We had extremely fast datacenter failover using anycast (100% of traffic moved as soon as 5 seconds). Contrasted to the minutes-to-hours nightmare delays that characterize DNS failover. (The DNS time-to-live is an advisory at best, and outright ignored by many clients)
It's too bad more hosting providers don't allow route announcements.
True for web traffic, not true for large file transfers, many multiplayer games, VPNs.
> live connections can get rejected and closed immediately by the new server allowing for rapid recovery
...if the client protocol allows recovery.
It also helps to respond to DNS with multiple VIPs within your anycast /24. Browser retry logic is pretty nifty and solves most of the real world problems.
Lets chat offline. I am curious to see if you guys faced some issues that we are seeing.
(Never mind, I just looked at LinkedIn, which I don't use much. With their new layout, I had to scroll through three screens of ads to get to anything that affected me.)
When a route flap happens that causes an AS path selection change, the user almost universally routes back to the exact same node they would have routed to prior to the flap.
The theoretical "IT person in texas doing per packet load balancing on a Sprint T1 to Atlanta and an ATT T1 to Denver" doesn't actually exist.
Best, Sebastian
Inherent instability meaning packet-switched networking, a.k.a. the most basic mechanism of how the internet works.
I'm curious why linkedin didn't just use a commercially available CDN service for this? Could save them a lot of time and maintenance, while probably getting a better result because CDNs have this down to the details.
Connect to a remote plan9 machine by whatever means using 9p, import /net from the remote machine into your local namespace, et viola you now have all the network connections of that remote machine available, including the tcp stack.