Networking frame loss in transmission

Alex Anagnos woodshop2300 at gmail.com
Sat Apr 16 00:24:09 UTC 2011


FreeBSD 8.0-RELEASE w/ VirtualBox 3.2.12.

The setup is a small application in a Guest OS that is sending UDP
Ethernet frames.
I Am capturing on FreeBSD on the device with both Wireshark, and a
custom written program that uses BPF zero copy.

What i'm seeing is that when the application send data that is beyond
the MTU the data is fragmented.
However, sometimes, the first few fragments never show up in the
capture, and indeed the receiving app never gets the message
(reassembly fails).

So when I call send with an 8192 payload, i see,  frames 1 and 2 go
missing, but 3, 4, and , 5 get out fine. (1500 MTU)
When calling send 2 times in rapid succession, all fragments of the
first send go missing as well as 1, and 2 of the 2nd send. 3, 4, and 5
get out fine.
When calling send 3 times in rapid succession, all fragments of send 1
& 2 get lost as well as fragment 1 & 2 of the 3rd send. Frags 3, 4,
and 5 are fine.

When sending this at like 1 Message per second, things occasionally don't work.
When going at 3000FPS, it has so far always been the first few frames,
after that the rest of the stream gets through ok almost like the
driver has to warm up or something..

The issue happens sending from both a Linux guest and from a Windows Guest.
The issue does not care about the speed of the traffic, it happens at
1FPS and at 3000FPS.
The issue does seam to occur less often the smaller the message sent.
When the message does not require fragmentation I have not seen the
issue happen but i'm not going to guarantee it does not happen.

The problem happens using Bridged, VDE, and Host-Only.
The problem happens using the FastPCI driver, intel e1000, and para-virtualized.
The problem happens with any number of the above 3 combos.

The problem happens in Version 3.2.6 and inversion 3.2.12.

The problem looks to be somewhere in the VirtualBox box code, or maybe
in the VirtualBox kernel module integration with FreeBSD


More information about the freebsd-emulation mailing list