broken PMTUd test case with TSO

50 views
Skip to first unread message

Sabrina Dubroca

unread,
Mar 27, 2017, 10:37:53 AM3/27/17
to packetdrill
Hi,

The pmtud-1pkt-1460-to-1160.pkt test case fails on upstream kernels since commit 10d3be569243 ("tcp-tso: do not split TSO packets at retransmit time").  Disabling TSO on the tun device created by packetdrill makes the case pass again.

Simulating the same situation on a real network device, the packet that ends up on the wire is correct, because the NIC actually performs TSO.  But tun is a "dumb" device, and doesn't actually perform TSO, even when it advertises it.  So the stack transmits a large packet, expecting it to be segmented by the device, and packetdrill expects the packet to have been segmented when it reads it from the tun device.

So I'm wondering what can be done to fix this test case, and why packetdrill configures its tun device to use TSO.

Thanks,
Sabrina

Neal Cardwell

unread,
Mar 27, 2017, 3:25:38 PM3/27/17
to Sabrina Dubroca, packetdrill
Hi,

Thanks for your email. Yes, the commit 10d3be569243 ("tcp-tso: do not split TSO packets at retransmit time") changes the Linux TCP stack behavior in a way that breaks some tests.

(Packetdrill configures the tun device to use TSO because TSO is generally needed for TCP high-performance servers.)

Unfortunately our team has not had time to keep the Linux packetdrill tests in the packetdrill repo up-to-date with the latest Linux code. We don't have the resources for this right now. If there are volunteers to do this kind of maintenance work, that would be great.

For this class of issue, we have an experimental patch internally at Google that makes packetdrill agnostic to the TSO decisions of the sender, by default. If the script does care about the exact TSO chunks the sender uses then it can enable this with a command line flag. We will work on merging this into the public Google packetdrill repo as quickly as time allows.

thanks,
neal


--
You received this message because you are subscribed to the Google Groups "packetdrill" group.
To unsubscribe from this group and stop receiving emails from it, send an email to packetdrill+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages