Часто в результатах tcpdump
видно большое количество ошибок проверки контрольных сумм.
Вызваны они нагрузкой из-за того, что для сетевой карты установлен режим TCP offload engine, в результате чего tcpdump
получает данные о контрольных суммах от ядра системы – до того, как контрольная сумма будет установлена самим сетевым интерфейсом.
Например:
... 15:29:36.247427 IP (tos 0x0, ttl 64, id 6296, offset 0, flags [DF], proto TCP (6), length 150) 10.**.**.176.80 > 77.**.**.20.34491: Flags [P.], cksum 0xddc6 (incorrect -> 0xf075), seq 230139:230237, ack 164, win 243, options [nop,nop,TS val 2082338658 ecr 1211867427], length 98 ...
Проверяем:
# ethtool -k eth0 | grep on tx-checksumming: on scatter-gather: on tcp-segmentation-offload: on udp-fragmentation-offload: off generic-segmentation-offload: on generic-receive-offload: on rx-vlan-offload: on tx-vlan-offload: on
Отключаем:
# ethtool --offload eth0 rx off tx off Actual changes: rx-checksumming: off tx-checksumming: off tx-checksum-ip-generic: off tcp-segmentation-offload: off tx-tcp-segmentation: off
После работы с tcpdump
рекомендуется его включить для ускорения работы карты:
# ethtool --offload eth0 rx on tx on Actual changes: rx-checksumming: on tx-checksumming: on tx-checksum-ip-generic: on