Огромная гигантская рамка?

625
user338930

У меня есть коммутатор 2960g cisco и 2 сервера с 4 сетевыми картами каждый, настроенные в режиме lacp. Я включил гигантские кадры (9000 байт) в сети. Я проверил передачу файлов, и она работает на полной скорости (100 Мбит / с по сравнению примерно с 80 Мбит / с без больших кадров. Я знаю, что при передаче tcp с одного IP на другой будет использоваться только 1 ссылка из 4, доступных с lacp.)

Я сделал захват одного из сетевых адаптеров и был довольно удивлен, увидев кадры размером 17966, 26914 и даже 44810 байт ... Большинство кадров имеют только 9018 байт, как и должно быть. Но как / почему / что это за мега-джамбо кадры по 40кб ?? Я не думал, что это даже возможно ..

Это побочный эффект Lacp? Обратите внимание, что я вижу эти кадры, независимо от того, фиксирую ли я их со связанного интерфейса или подчиненного интерфейса, который фактически передает данные. Или это артефакт, который каким-то образом проник через tcpdump? Или мне нужно поменять очки?

Спасибо,

Винсент

1
Может быть вызвано разгрузкой сегментации TCP, захват был сделан на одном из серверов .. user338930 10 лет назад 1

1 ответ на вопрос

2
Spiff

Вероятно, это была разгрузка сегментации передачи TCP (TSO), возможно, в сочетании с большой разгрузкой приема (LRO).

Вы попали на одну из машин, выполняющих тест, а не на машину независимого наблюдателя. Таким образом, вы на самом деле не видели, что находится на проводе, вы видели, что происходило между сетевым стеком вашего хоста и его сетевым адаптером Ethernet. И когда NIC предоставляет такие услуги, как TSO и LRO, своему хосту, пакеты между хостом и его NIC намного больше, чем то, что NIC фактически отправляет / принимает по проводам.

Если слишком неудобно настраивать отдельную снифферную машину и зеркалирование портов, вы, вероятно, можете отключить TSO и LRO, чтобы увидеть нечто более похожее на то, что будет на самом деле на проводе.

Например, если ваши серверы работают под управлением OS X, вы можете использовать эти sysctl для отключения TSO и LRO:

sudo sysctl -w net.inet.tcp.tso=0 net.inet.tcp.lro=0 

Конечно, вы, вероятно, получите более высокую загрузку ЦП и меньшую пропускную способность, если вы сделаете это, но по крайней мере захват ваших пакетов покажется более разумным.

Спасибо, TSO было причиной этого поведения. При выключенном TSO все кадры имеют правильные длины. На самом деле это задокументировано на wiki wireshark: http://wiki.wireshark.org/CaptureSetup/Offloading. В centos вы можете получить настройки интерфейса с помощью: ethtool -K eth3 и отключить TSO с помощью: ethtool -K eth3 tso off (хотя есть нет причин отключать tso в системе prod) user338930 10 лет назад 0