I have two points to this discussion:

GRO/LRO must be disabled by default! Truly transparent network appliances, such 
as classic Layer 3 routers and Layer 2 switches (and our SmartShare 
StraightShaper appliance), may not want to merge multiple smaller packets into 
one larger packet, regardless of any processing performance benefit. Also refer 
to Wikipedia (https://en.wikipedia.org/wiki/Large_receive_offload), especially 
reference 9 (https://bugzilla.redhat.com/show_bug.cgi?id=772317). And if any of 
you developers don't intuitively agree, just ask any old network engineer about 
all the mess he had to deal with "back in the days" when packet sizes were 
important... flaky path MTU discovery, MSS clamping for PPPoE and VPN tunnels, 
packet reassembly causing performance degradation and packet loss on 
underpowered VPN routers, etc.

We should consider librte_net a library for miscellaneous utilities, i.e. 
mainly stateless functions. Functions for packet merging (of multiple IP 
packets or actual IP fragments), which clearly requires a lot of memory and 
statefulness, does not belong here. This is worth noting, not only for the 
GRO/GSO library, but for similar future discussions. (The size of the compiled 
library is irrelevant - only its purpose matters.)


Med venlig hilsen / kind regards

Morten Brørup
CTO


SmartShare Systems A/S
Tonsbakken 16-18
DK-2740 Skovlunde
Denmark

Office      +45 70 20 00 93
Direct      +45 89 93 50 22
Mobile     +45 25 40 82 12

m...@smartsharesystems.com
www.smartsharesystems.com

Reply via email to