[Virtual-pkg-base-maintainers] Bug#735196: base: TCP offloading of network interface can not be deactivaed

michael m_josenhans at web.de
Mon Jan 13 18:38:41 UTC 2014


Package: base
Severity: normal
Tags: upstream

Dear Maintainer,
   * What led up to the situation?
      Checksum calcualtion for outgoing tcp packages had been moved from the
kernel to the network interface card (ethX or wlanX).
      Thus when capturing data with tcpdump / Wireshark/ pcap invalid checksums
occur. Thus it is no longer possible to determine which packages had invalid
checksums and will be discarded.
      Therefore TCP-offloading needs to be manually deactivated with ethtool.
   * What exactly did you do (or not do) that was effective (or
     ineffective)?
   I deactivated all netwark card features and thus expected the kernel to
calculate the outgoing checksums:
   su
   ethtool -K eth0 rx off tx off sg off tso off gso off
   * What was the outcome of this action?

   All features are activated according ethtool:
ethtool -k eth0
Features for eth0:
rx-checksumming: off
tx-checksumming: off
        tx-checksum-ipv4: off [fixed]
        tx-checksum-unneeded: off [fixed]
        tx-checksum-ip-generic: off
        tx-checksum-ipv6: off [fixed]
        tx-checksum-fcoe-crc: off [fixed]
        tx-checksum-sctp: off [fixed]
scatter-gather: off
        tx-scatter-gather: off
        tx-scatter-gather-fraglist: off [fixed]
tcp-segmentation-offload: off
        tx-tcp-segmentation: off
        tx-tcp-ecn-segmentation: off [fixed]
        tx-tcp6-segmentation: off
udp-fragmentation-offload: off [fixed]
generic-segmentation-offload: off
generic-receive-offload: off
large-receive-offload: off [fixed]
rx-vlan-offload: on
tx-vlan-offload: on
ntuple-filters: off [fixed]
receive-hashing: off [fixed]
highdma: on [fixed]
rx-vlan-filter: on [fixed]
vlan-challenged: off [fixed]
tx-lockless: off [fixed]
netns-local: off [fixed]
tx-gso-robust: off [fixed]
tx-fcoe-segmentation: off [fixed]
fcoe-mtu: off [fixed]
tx-nocache-copy: on
loopback: off [fixed]

I entered:
wget www.heise.de

While tracking the traffic with tcpdump (see "incorrect" for checksums of
traffic in outgoing direction (Donald.fritz.box.43681 > redirector.heise.de):

tcpdump -i eth0 -vvv tcp
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535
bytes
18:57:13.399866 IP (tos 0x0, ttl 64, id 50216, offset 0, flags [DF], proto TCP
(6), length 60)
    Donald.fritz.box.43681 > redirector.heise.de.http: Flags [S], cksum 0xc4a8
(incorrect -> 0x573c), seq 2174976360, win 14600, options [mss 1460,sackOK,TS
val 345408 ecr 0,nop,wscale 6], length 0
18:57:13.413922 IP (tos 0x0, ttl 245, id 15109, offset 0, flags [DF], proto TCP
(6), length 60)
    redirector.heise.de.http > Donald.fritz.box.43681: Flags [S.], cksum 0x6a7a
(correct), seq 3901327278, ack 2174976361, win 4356, options [mss
1452,nop,nop,TS val 2361400012 ecr 345408,sackOK,eol], length 0
18:57:13.413989 IP (tos 0x0, ttl 64, id 50217, offset 0, flags [DF], proto TCP
(6), length 52)
    Donald.fritz.box.43681 > redirector.heise.de.http: Flags [.], cksum 0xc4a0
(incorrect -> 0x6e2d), seq 1, ack 1, win 14600, options [nop,nop,TS val 345412
ecr 2361400012], length 0
18:57:13.414200 IP (tos 0x0, ttl 64, id 50218, offset 0, flags [DF], proto TCP
(6), length 160)
    Donald.fritz.box.43681 > redirector.heise.de.http: Flags [P.], cksum 0x03dd
(correct), seq 1:109, ack 1, win 14600, options [nop,nop,TS val 345412 ecr
2361400012], length 108
18:57:13.434350 IP (tos 0x0, ttl 245, id 15510, offset 0, flags [DF], proto TCP
(6), length 544)
    redirector.heise.de.http > Donald.fritz.box.43681: Flags [P.], cksum 0x7e69
(correct), seq 1:493, ack 109, win 4464, options [nop,nop,TS val 2361400030 ecr
345412], length 492
18:57:13.434438 IP (tos 0x0, ttl 64, id 50219, offset 0, flags [DF], proto TCP
(6), length 52)
    Donald.fritz.box.43681 > redirector.heise.de.http: Flags [.], cksum 0xc4a0
(incorrect -> 0x680e), seq 109, ack 493, win 15544, options [nop,nop,TS val
345417 ecr 2361400030], length 0
18:57:13.434456 IP (tos 0x0, ttl 245, id 15512, offset 0, flags [DF], proto TCP
(6), length 52)
    redirector.heise.de.http > Donald.fritz.box.43681: Flags [F.], cksum 0x935a
(correct), seq 493, ack 109, win 4464, options [nop,nop,TS val 2361400030 ecr
345412], length 0
18:57:13.434716 IP (tos 0x0, ttl 64, id 50220, offset 0, flags [DF], proto TCP
(6), length 52)
    Donald.fritz.box.43681 > redirector.heise.de.http: Flags [R.], cksum 0xc4a0
(incorrect -> 0x6809), seq 109, ack 494, win 15544, options [nop,nop,TS val
345417 ecr 2361400030], length 0
18:57:13.436862 IP (tos 0x0, ttl 64, id 57218, offset 0, flags [DF], proto TCP
(6), length 60)
    Donald.fritz.box.51718 > www.heise.de.http: Flags [S], cksum 0xc4ad
(incorrect -> 0x4e36), seq 1372822219, win 14600, options [mss 1460,sackOK,TS
val 345417 ecr 0,nop,wscale 6], length 0
18:57:13.452346 IP (tos 0x0, ttl 245, id 16086, offset 0, flags [DF], proto TCP
(6), length 60)
    www.heise.de.http > Donald.fritz.box.51718: Flags [S.], cksum 0x133b
(correct), seq 2147368525, ack 1372822220, win 4356, options [mss
1452,nop,nop,TS val 2361400050 ecr 345417,sackOK,eol], length 0
18:57:13.452421 IP (tos 0x0, ttl 64, id 57219, offset 0, flags [DF], proto TCP
(6), length 52)
    Donald.fritz.box.51718 > www.heise.de.http: Flags [.], cksum 0xc4a5
(incorrect -> 0x16ee), seq 1, ack 1, win 14600, options [nop,nop,TS val 345421
ecr 2361400050], length 0
18:57:13.452674 IP (tos 0x0, ttl 64, id 57220, offset 0, flags [DF], proto TCP
(6), length 164)
    Donald.fritz.box.51718 > www.heise.de.http: Flags [P.], cksum 0xbdf3
(correct), seq 1:113, ack 1, win 14600, options [nop,nop,TS val 345421 ecr
2361400050], length 112
18:57:13.573991 IP (tos 0x0, ttl 245, id 19085, offset 0, flags [DF], proto TCP
(6), length 52)
    www.heise.de.http > Donald.fritz.box.51718: Flags [.], cksum 0x3d9c
(correct), seq 1, ack 113, win 4468, options [nop,nop,TS val 2361400168 ecr
345421], length 0
18:57:13.897574 IP (tos 0x0, ttl 245, id 28551, offset 0, flags [DF], proto TCP
(6), length 1492)
    www.heise.de.http > Donald.fritz.box.51718: Flags [.], cksum 0x5721
(correct), seq 1:1441, ack 113, win 4468, options [nop,nop,TS val 2361400495
ecr 345421], length 1440
18:57:13.897634 IP (tos 0x0, ttl 64, id 57221, offset 0, flags [DF], proto TCP
(6), length 52)
    Donald.fritz.box.51718 > www.heise.de.http: Flags [.], cksum 0xc4a5
(incorrect -> 0x043a), seq 113, ack 1441, win 17280, options [nop,nop,TS val
345532 ecr 2361400495], length 0
18:57:13.897652 IP (tos 0x0, ttl 245, id 28552, offset 0, flags [DF], proto TCP
(6), length 60)
    www.heise.de.http > Donald.fritz.box.51718: Flags [P.], cksum 0xc6fc
(correct), seq 1441:1449, ack 113, win 4468, options [nop,nop,TS val 2361400495
ecr 345421], length 8
18:57:13.897669 IP (tos 0x0, ttl 64, id 57222, offset 0, flags [DF], proto TCP
(6), length 52)
    Donald.fritz.box.51718 > www.heise.de.http: Flags [.], cksum 0xc4a5
(incorrect -> 0x0431), seq 113, ack 1449, win 17280, options [nop,nop,TS val
345533 ecr 2361400495], length 0
18:57:13.898942 IP (tos 0x0, ttl 245, id 28553, offset 0, flags [DF], proto TCP
(6), length 1492)
    www.heise.de.http > Donald.fritz.box.51718: Flags [.], cksum 0x8c13
(correct), seq 1449:2889, ack 113, win 4468, options [nop,nop,TS val 2361400495
ecr 345421], length 1440
18:57:13.898964 IP (tos 0x0, ttl 64, id 57223, offset 0, flags [DF], proto TCP
(6), length 52)
    Donald.fritz.box.51718 > www.heise.de.http: Flags [.], cksum 0xc4a5
(incorrect -> 0xf350), seq 113, ack 2889, win 20160, options [nop,nop,TS val
345533 ecr 2361400495], length 0

   * What outcome did you expect instead?
I expected valid checksums of taced outgoing packages.

Note:
I did the same test on debian testing. Here the tcpdump checksums were ok
(correct).



-- System Information:
Debian Release: 7.3
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 3.2.0-4-amd64 (SMP w/2 CPU cores)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash



More information about the Virtual-pkg-base-maintainers mailing list