I am having trouble understanding this passage. I'm wondering is someone could help me understand this as it seems like an important design detail: >"Another benefit to using UDP is that the source port can be filled in with a per-connection hash so that they are flow within the datacenter over different paths (where ECMP is used within the datacenter), and received on different RX queues on the proxy server’s NIC (w…
GLB: GitHub's open source load balancer
61–65 of 65 posts
Re: GLB: GitHub's open source load balancer
#62Earlier quoted context omitted.
Round-robin routing is one way that really doesn't cut it at the level of scale that Github and others operate at. Overlay networks also typically have no notion of load and how to send traffic to the hop with the least amount of load.
Use least connections for HTTP load balancing, it is load aware.
Re: GLB: GitHub's open source load balancer
#63Earlier quoted context omitted.
Or VRRP with the open source keepalived, which has been around for a decade+ and works wonderfully on Linux.
That is exactly what Stack Overflow uses: keepalived to manage a virtual IP between two decent sized baremetal HAProxy servers (w/ bonded 10G nics). Works great and combined with DNS or Anycast based load balancing can scale pretty damn well. Definitely worth investigating as a KISS approach. To quote a recent Atwood tweet: "if I have learned anything in my career, it is the shocking effectiveness of building ... lit…
Re: GLB: GitHub's open source load balancer
#64I am having trouble understanding this passage. I'm wondering is someone could help me understand this as it seems like an important design detail: >"Another benefit to using UDP is that the source port can be filled in with a per-connection hash so that they are flow within the datacenter over different paths (where ECMP is used within the datacenter), and received on different RX queues on the proxy server’s NIC (w…
Just a guess, but by using UDP transport for the encapsulated data and configuring the module on the proxy to accept UDP on a wide range of ports, you can pick any port you want (not just the destination port of the TCP stream in the encapsulated packet). And if you are using ECMP with a known hashing algorithm you can then use that UDP port to explicitly spread packets across the RX queues on the proxy servers (gain…
Re: GLB: GitHub's open source load balancer
#65>"Each server has a bonded pair of network interfaces, and those interfaces are shared between DPDK and Linux on GLB director servers."
What's the distinction between DPDK and Linux here? It wasn't clear to me why SR-IOV is needed in this design. Does DPGK need to "own" the entire NIC device is that? In other words using DPDK and regular kernel networking are mutually exclusive option on the NIC? Is that correct?