Bug 19 - pasta/past drops outbound zero-length UDP packets
Summary: pasta/past drops outbound zero-length UDP packets
Status: RESOLVED FIXED
Alias: None
Product: passt
Classification: Unclassified
Component: UDP (show other bugs)
Version: unspecified
Hardware: All Linux
: Normal normal
Assignee: David Gibson
URL:
Depends on:
Blocks:
 
Reported: 2022-09-09 01:09 UTC by David Gibson
Modified: 2022-09-28 06:57 UTC (History)
0 users

See Also:


Attachments

Description David Gibson 2022-09-09 01:09:30 UTC
When the guest/namespace sends a zero-length UDP packet out via the TAP interface, the packet isn't propagated on the outbound interface.  Zero length packets can safely be dropped on stream protocols, but not datagram protocols.

I observed this experimenting with socat's null-eof and shut-null options, and confirmed with packet captures.

Steps to reproduce:
  1. Run a packet capture on the host's loopback interface
  2. Run pasta with -p to capture packets
  3. On the host, run:
      socat -u UDP4-LISTEN:10000,null-eof STDOUT
  4. In the namespace, run:
      socat -u OPEN:/dev/null UDP4:<gateway address>:10000,shut-null

Expected results:
  * Listening socat exits once the sending socat has completed
  * Both packet captures show zero length UDP packet

Actual results:
  * Listening socat continues waiting
  * Only the "inner" packet capture (from pasta) shows the zero length UDP packet
Comment 1 David Gibson 2022-09-09 03:45:26 UTC
I've debugged this and will post a fix soon.
Comment 2 David Gibson 2022-09-28 06:57:22 UTC
Fix is now merged, closing.

Note You need to log in before you can comment on or make changes to this bug.