So before anyone gets excited about using this, XDP has to be enabled at the driver level to work, because basically is allows you to write your own program to handle incoming packets from the driver, taking the kernel out as the middle man. The list of supported drivers is small:<p><a href="http://prototype-kernel.readthedocs.io/en/latest/networking/XDP/implementation/drivers.html" rel="nofollow">http://prototype-kernel.readthedocs.io/en/latest/networking/...</a><p>I’m actually working on porting XDP into the Xen net front end driver to see if I can’t get something like this working in AWS. If I do it, I’ll likely post an example about it here:<p><a href="https://github.com/newtools/ebpf" rel="nofollow">https://github.com/newtools/ebpf</a><p>As an aside cloudflare is using that repo for an XDP load balancer as well.
This is where Facebook actually does some good... their open source efforts are really good...<p><a href="https://github.com/facebookincubator" rel="nofollow">https://github.com/facebookincubator</a>
And...
<a href="https://github.com/facebook" rel="nofollow">https://github.com/facebook</a>
An interesting idea to load balance at L4 so as not to terminate the TCP sessions (for speed). Normally this constrains the network rather as you can't route the output packets normally after that (they need to be routed to a vLAN) but encapsulating with IPIP means the load balancer output can go straight back into the normal routing layer.<p>Not constraining the output of the load balancer to a single vLAN really helps for larger networks.<p>Reading the readme I see they've made every effort to process the packets as little as possible to it seems likely that this will run at line speed.<p>For L4 the main competitor is LVS which scales pretty well in my experience but probably not as well as this.
They talk about being compatible with RSS.<p>What is RSS in this context, ? My guess is that it's not this RSS <a href="https://en.wikipedia.org/wiki/RSS" rel="nofollow">https://en.wikipedia.org/wiki/RSS</a> because I do not see how/why you should need any rule at L4 to maintain compatibility with an XML based protocol.<p>Is it possible they talk about : <a href="https://en.wikipedia.org/wiki/Network_interface_controller#RSS" rel="nofollow">https://en.wikipedia.org/wiki/Network_interface_controller#R...</a> ?
What is the difference with IPVS kernel module in Linux? Both are layer 4 load balancers and IPVS has come a long time and is proven to be good. Any performance comparisons available?