News for hackers. Stuff that matters.
Re:How to Achieve 20Gb and 30Gb Bandwidth through Network Bo... by GauntletWizard on Friday July 17, 2015 @05:22PM (#9905415)
The only-slightly-more complex hostport hashing scheme solves your problems, but... TCP OOO is almost never an issue. Out-of-order packets happen all the time, and if you're not moving huge quantities of data with hugely lagging packets, it won't matter. If you swap the positions of every pair of packets, BADCFE style, your machine will hold B, process A, and make AB available to the upper layer - almost zero real cost. There's a ringbuffer involved in nearly every TCP connection that's several packets long, and B can be delivered to it's proper place in the queue before A arrives.

Sure, it'll look bad in wireshark, but you can simply disable the reporting of OOO, and the stream is perfectly interpretable anyway.

Re:How to Achieve 20Gb and 30Gb Bandwidth through Network Bo... by suprjami on Friday July 17, 2015 @06:08PM (#9905651)
I'm afraid that doesn't solve the problem I cite either.

Using Mode 2 or Mode 4 with xmit_hash_policy=layer3+4 (so you're load balancing on the IP/port tuple) still only balances one TCP stream out one slave.

An out-of-order might be common over the internet, but shouldn't happen on a good high-speed LAN connection. As we approach tens of gigabits, too much out-of-order processing will kill wirespeed bandwidths.

Considering people suggest disabling TCP SACK because the CPU overhead is (allegedly) too high on good working connections, out-of-order processing cost would be much higher.

All bonding modes except Mode 4 (LACP) and Mode 6 (ALB) are transmit-only. The receive throughput on a Mode 0/1/2/3/5 bond is still the max of one slave.