Pomalý upload za Linux NAT?
V posledních pár dnech se mi projevil poměrně zajímavý problém – u jednoho zákazníka najednou totálně padl TCP upload skrz NAT do Internetu. Upload na bránu samotnou byl ok. Protože se problém týkal jen strojů s Windows 7 a Windows 8 resp. 8.1, podezíral jsem MS z nějaké nekalé aktualizace.
Bohužel se mi nedařilo nalézt žádnou takovou, která by výkon skutečně ovlivnila. Ani instalace posledních ovladačů ze stránky výrobce nepomohla, ba dokonce ani „hraní si“ s parametry síťovky.
Nakonec jsem narazil na hlášení tohoto bugu a začalo mi svítat, protože jsem skutečně nedávno aktualizoval na nový kernel, na což jsem zapomněl.
V kostce se jedná o to, že kernel se snaží přeroutovat a „spravit“ na správné MTU pakety s větší velikostí než je právě MTU, což se mu úplně dobře nedaří.
Rychlé a hrubé řešení je prostě zakázat síťovce, aby takové pakety přijímala, tedy se Windows bude snažit vejít do správné velikosti MTU. Kouzelný příkaz je
ethtool -K eth0 gro off