## Additional information / frame forensics

A frame capture was done on the receiving peer to investigate to what
extent the frames are corrupted. With TX offloading enabled on the
sender (frames 1–5) and disabled (frames 6-12), the receiving capture
shows the following errors in each IPv4 SYN frame with an 802.1Q tag (78
bytes):

Bytes 16–17 (EtherType)
0x0800 (IPv4) is replaced by 0x0040, which is interpreted as the length of an 
Ethernet LLC frame. In an untagged frame they would hold the IPv4 total length. 
0x0040 (64) equals the frame length - 14 (78-14), the length computed assuming 
a 14-byte MAC header so without VLAN Tag.

Bytes 24–25 (IPv4 flags/fragment offset)
Both are overwritten with changing, inconsistent values setting the reserved 
bit R to 1, which is forbidden. The IP header checksum (0xCF73 in frame 1) is 
valid only if the field is 0x4000 (R=0, DF=1, MF=0, offset 0), so the field was 
overwritten after the checksum was computed. 

In an untagged frame, bytes 24–25 are the header checksum position. The
written value is the ones complement of the sum of all bytes 14–77 (VLAN
TCI, EtherType, IP header, TCP header and options; 64 bytes), with bytes
24–25 set to 0. An IP header checksum normally covers only the 20-byte
header.

Beside of the last issue, this is consistent with an offloading that
does not account for the 4-byte VLAN tag and writes both values with an
4 bytes offset.

Bytes 54–55 (TCP checksum)
The value equals the pseudo-header sum (source/destination address, protocol, 
TCP length), the seed that the kernel places in the field for checksum offload 
and that the NIC must complete. The final checksum was not calculated by the 
NIC, and the frame was sent with an unfinalized and so incorrect TCP checksum.

Starting with frame 6, with TX offloading disabled, EtherType, flags and
both checksums are correct and the SSH connection is established

** Attachment added: "Captured Frames (1-5 with offloading) and (6-12 without 
offloading)"
   
https://bugs.launchpad.net/ubuntu/+source/linux-signed/+bug/2173506/+attachment/6015652/+files/capture-frames-1-12.pcapng

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2173506

Title:
  r8169 IPv4 TCP via 802.1Q VLAN subinterface times out unless TX
  checksum offload is disabled

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux-signed/+bug/2173506/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to