?

Log in

No account? Create an account
Cat-light

klink0v


Блохи в свитере деда Сергеича


Ох уж эта GRO
Cat-light
klink0v

Влетел в очередной трудновылавливаемый баг, связанный с GRO (Generic Receive Offload). Симптомы весьма странные. Если пакет приходит транзитом через Linux-based VLAN-маршрутизатор на виртуалку, запущенную на соседнем хосте (в том же сегменте второго уровня), то у такого пакета "бьётся" контрольная сумма. Во всех остальных случаях никаких проблем не наблюдается. Более того, никаких вопросов не возникает и в том случае, если у клиента на интерфейсе выставлено MTU меньше стандартного (например, 1300 байт).

Команда "ethtool -K eth0 gro off" на маршрутизаторе спасла отца русской демократии, но всё равно в этой истории ещё очень много странного.

Поиск в гугле выдал что-то очень похожее на то, что наблюдается у меня вот здесь. Но там речь шла о достаточно старых ядрах (2.6.32), а у меня уже давно везде 3.2.0, где упоминаемый в том обсуждении баг вроде как давным-давно пофиксили.

И я тоже, конечно, долбанулся "на отличненько", построив схему "eth0+eth1 -> bond0 -> vlan1 -> br0" (мост поверх VLAN-а поверх bond-а из двух физических интерфейсов). Это назвается "скажите спасибо, что в kernel panic не валится с такими выкрутасами". Но как сделать по-другому, я, честно говоря, не знаю. Раньше решал тупо добавлением физических портов в сервак, но потом эти огромные жгуты витой пары в стойке стали сильно напрягать, да и в свитче портов тоже конечное количество. Такие дела.