5 ms·
ECMP is pretty old-hat. Example from 2007: https://www.nanog.org/meetings/nanog41/presentations/Kapela-lightning.pdf https://www.nanog.org/meetings/nanog41/pres
by jauer 11y ago
ECMP is pretty old-hat. Example from 2007: https://www.nanog.org/meetings/nanog41/presentations/Kapela-lightning.pdf https://www.nanog.org/meetings/nanog41/presentations/Kapela-...
Exactly how the routes get steered to servers can vary (static routes with track objects, OSPF or BGP on the server), but the basic idea of using network gear to ECMP traffic between servers is, if not ancient, pretty common.
I suspect there's something novel in control plane or hashing used to steer ECMP but I didn't see anything about that in the article.
- teraflop 11y agoYeah, the interesting details are in the paper. If I understand it correctly, ECMP alone doesn't give you a very even distribution because of the small number of hash buckets. And every time the routing table changes (e.g. when taking backends in or out of rotation) it will drop connections because packets are suddenly being hashed to different destinations. Maglev adds an additional layer behind ECMP that solves those problems.
- transitorykris 11y agoECMP is old, we've being pulling this stunt for a long time, for the right applications (e.g., UDP, short lived TCP). Adding/removing routes in ECMP can cause flows to hash to a new destination. The connection tracking and consistent hashing in Maglev is important to deal with faults and avoid disrupting unrelated flows. Still nothing new.
- asuffield 11y ago(Tedious disclaimer: my opinion only, not speaking for anybody else. I'm an SRE at Google, and I'm oncall for this service.) Well, it's "not new" in the sense that this system's been running google.com for about 8 years now ;) This is just the first time that we've published how it works.
- kijiki 11y agoWe (Cumulus Networks) support a feature called "resilient hashing" that ensures that if a software LB fails, only the flows going to that LB are redistributed to the remaining LBs. You still lose some connections when an LB fails, but only the ones going through the failed LB. Unrelated flows to other LBs are not impacted. We've got multiple customers doing variants of the LB architecture Google talks about here.
- newman314 11y agoI didn't know Cumulus had a LB product. Any more details that you can share?
- wmf 11y agoYou can turn any switches into ghetto load balancers by running BGP on some hosts and advertising a /32 into your switches.
- bogomipz 11y agoYou want BGP on your edge router, where your transit connections, these are what do the ECMP towards your LBs which speak iBGP. I'm not sure where you would use a cheap switch in this setup, certainly not at the edge.
- wmf 11y agoMany recent data centers run eBGP between all switches. I can't explain the rest without diagrams.
- bogomipz 11y agoHuh? Then you must not understand what you are talking about very well. Are you talking about running BGP to ToR switches? What does that have to do with ECMP or load balancers? Its just an L3 design and its not new.
- alinspired 11y agoI think they mean hashing algorithm for cumulus ECMP routing, that serves downstream LBs
- bogomipz 11y agobut this resiliency has nothing to do with the hashing per se correct? Once the route is withdrawn via BGP it is no longer a viable path so it wouldn't ever be routed to and by extension "hashed(source/dest etc.) Or am I misunderstanding what you are saying?
- bogomipz 11y agoUsually ECMP on your LBs, you run a routing daemon on the LB box - such Quagga or BIRD and the speak BGP to the edge, if an LB fails or goes away then the route is withdrawn from BGP peer and this withdrawl is how faults are dealt with. Can you or someone else elaborate on how Malev adds or differs from that? Unfortunately I can not get to google at the moment.