TCP/IP: ошибки cksum 0xe2bc (incorrect -> 0xc9a0)

Автор: | 02/12/2015

TCPIPDOCЧасто в результатах 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