I apologize for the cross post. I didn't notice the "Configuration" forum and couldn't delete my original wrongly placed post.
I have a virtual machine running on Linux with a non routable 172.16.0.81 ip address. I have a set of Windows PC's that use non-open source software to access other non-open source software on the virtual machine, but they require broadcasts. I have no problem when they are all collocated, but I setup OpenVPN to access the virtual machine remotely. I'll post my configs when I get back in on Monday. Both OpenVPN and the virtual machine use the same TAP on the Linux side. I can ping the VM from the Windows clients and both sides see the broadcast packets from each other. My non-open source software connects and starts doing its thing, but 1 UDP fragment gets dropped. The protocol is similar to TFTP. Hundreds of similar fragments get through, but this one magic bullet fragment just will not get through, and its the same fragment every time.
Below are 3 UDP fragments that get through successfully and recorded by Wireshark on the Windows box (sans payloads and target mac):
No. Time Source Destination Protocol Length Info
1125 404.333982 172.16.168.1 172.16.0.81 IPv4 1514 Fragmented IP protocol (proto=UDP 0x11, off=0, ID=7280) [Reassembled in #1127]
Frame 1125: 1514 bytes on wire (12112 bits), 1514 bytes captured (12112 bits)
Arrival Time: Nov 18, 2011 12:38:46.607803000 CST
Epoch Time: 1321641526.607803000 seconds
[Time delta from previous captured frame: 0.000491000 seconds]
[Time delta from previous displayed frame: 0.000000000 seconds]
[Time since reference or first frame: 404.333982000 seconds]
Frame Number: 1125
Frame Length: 1514 bytes (12112 bits)
Capture Length: 1514 bytes (12112 bits)
[Frame is marked: True]
[Frame is ignored: False]
[Protocols in frame: eth:ip:data]
Ethernet II, Src: 00:ff:5b:67:b9:23 (00:ff:5b:67:b9:23), Dst: xx:xx:xx:xx:xx:xx (xx:xx:xx:xx:xx:xx)
Destination: xx:xx:xx:xx:xx:xx (xx:xx:xx:xx:xx:xx)
Address: xx:xx:xx:xx:xx:xx (xx:xx:xx:xx:xx:xx)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..1. .... .... .... .... = LG bit: Locally administered address (this is NOT the factory default)
Source: 00:ff:5b:67:b9:23 (00:ff:5b:67:b9:23)
Address: 00:ff:5b:67:b9:23 (00:ff:5b:67:b9:23)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Type: IP (0x0800)
Internet Protocol Version 4, Src: 172.16.168.1 (172.16.168.1), Dst: 172.16.0.81 (172.16.0.81)
Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport))
0000 00.. = Differentiated Services Codepoint: Default (0x00)
.... ..00 = Explicit Congestion Notification: Not-ECT (Not ECN-Capable Transport) (0x00)
Total Length: 1500
Identification: 0x7280 (29312)
Flags: 0x01 (More Fragments)
0... .... = Reserved bit: Not set
.0.. .... = Don't fragment: Not set
..1. .... = More fragments: Set
Fragment offset: 0
Time to live: 128
Protocol: UDP (17)
Header checksum: 0xa21d [correct]
[Good: True]
[Bad: False]
Source: 172.16.168.1 (172.16.168.1)
Destination: 172.16.0.81 (172.16.0.81)
Reassembled IPv4 in frame: 1127
Data (1480 bytes)
No. Time Source Destination Protocol Length Info
1126 404.334031 172.16.168.1 172.16.0.81 IPv4 1514 Fragmented IP protocol (proto=UDP 0x11, off=1480, ID=7280) [Reassembled in #1127]
Frame 1126: 1514 bytes on wire (12112 bits), 1514 bytes captured (12112 bits)
Arrival Time: Nov 18, 2011 12:38:46.607852000 CST
Epoch Time: 1321641526.607852000 seconds
[Time delta from previous captured frame: 0.000049000 seconds]
[Time delta from previous displayed frame: 0.000049000 seconds]
[Time since reference or first frame: 404.334031000 seconds]
Frame Number: 1126
Frame Length: 1514 bytes (12112 bits)
Capture Length: 1514 bytes (12112 bits)
[Frame is marked: True]
[Frame is ignored: False]
[Protocols in frame: eth:ip:data]
Ethernet II, Src: 00:ff:5b:67:b9:23 (00:ff:5b:67:b9:23), Dst: xx:xx:xx:xx:xx:xx (xx:xx:xx:xx:xx:xx)
Destination: xx:xx:xx:xx:xx:xx (xx:xx:xx:xx:xx:xx)
Address: xx:xx:xx:xx:xx:xx (xx:xx:xx:xx:xx:xx)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..1. .... .... .... .... = LG bit: Locally administered address (this is NOT the factory default)
Source: 00:ff:5b:67:b9:23 (00:ff:5b:67:b9:23)
Address: 00:ff:5b:67:b9:23 (00:ff:5b:67:b9:23)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Type: IP (0x0800)
Internet Protocol Version 4, Src: 172.16.168.1 (172.16.168.1), Dst: 172.16.0.81 (172.16.0.81)
Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport))
0000 00.. = Differentiated Services Codepoint: Default (0x00)
.... ..00 = Explicit Congestion Notification: Not-ECT (Not ECN-Capable Transport) (0x00)
Total Length: 1500
Identification: 0x7280 (29312)
Flags: 0x01 (More Fragments)
0... .... = Reserved bit: Not set
.0.. .... = Don't fragment: Not set
..1. .... = More fragments: Set
Fragment offset: 1480
Time to live: 128
Protocol: UDP (17)
Header checksum: 0xa164 [correct]
[Good: True]
[Bad: False]
Source: 172.16.168.1 (172.16.168.1)
Destination: 172.16.0.81 (172.16.0.81)
Reassembled IPv4 in frame: 1127
Data (1480 bytes)
No. Time Source Destination Protocol Length Info
1127 404.334087 172.16.168.1 172.16.0.81 UDP 670 Source port: 4414 Destination port: 60000
Frame 1127: 670 bytes on wire (5360 bits), 670 bytes captured (5360 bits)
Arrival Time: Nov 18, 2011 12:38:46.607908000 CST
Epoch Time: 1321641526.607908000 seconds
[Time delta from previous captured frame: 0.000056000 seconds]
[Time delta from previous displayed frame: 0.000056000 seconds]
[Time since reference or first frame: 404.334087000 seconds]
Frame Number: 1127
Frame Length: 670 bytes (5360 bits)
Capture Length: 670 bytes (5360 bits)
[Frame is marked: True]
[Frame is ignored: False]
[Protocols in frame: eth:ip:udp:data]
[Coloring Rule Name: UDP]
[Coloring Rule String: udp]
Ethernet II, Src: 00:ff:5b:67:b9:23 (00:ff:5b:67:b9:23), Dst: xx:xx:xx:xx:xx:xx (xx:xx:xx:xx:xx:xx)
Destination: xx:xx:xx:xx:xx:xx (xx:xx:xx:xx:xx:xx)
Address: xx:xx:xx:xx:xx:xx (xx:xx:xx:xx:xx:xx)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..1. .... .... .... .... = LG bit: Locally administered address (this is NOT the factory default)
Source: 00:ff:5b:67:b9:23 (00:ff:5b:67:b9:23)
Address: 00:ff:5b:67:b9:23 (00:ff:5b:67:b9:23)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Type: IP (0x0800)
Internet Protocol Version 4, Src: 172.16.168.1 (172.16.168.1), Dst: 172.16.0.81 (172.16.0.81)
Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport))
0000 00.. = Differentiated Services Codepoint: Default (0x00)
.... ..00 = Explicit Congestion Notification: Not-ECT (Not ECN-Capable Transport) (0x00)
Total Length: 656
Identification: 0x7280 (29312)
Flags: 0x00
0... .... = Reserved bit: Not set
.0.. .... = Don't fragment: Not set
..0. .... = More fragments: Not set
Fragment offset: 2960
Time to live: 128
Protocol: UDP (17)
Header checksum: 0xc3f7 [correct]
[Good: True]
[Bad: False]
Source: 172.16.168.1 (172.16.168.1)
Destination: 172.16.0.81 (172.16.0.81)
[3 IPv4 Fragments (3596 bytes): #1125(1480), #1126(1480), #1127(636)]
[Frame: 1125, payload: 0-1479 (1480 bytes)]
[Frame: 1126, payload: 1480-2959 (1480 bytes)]
[Frame: 1127, payload: 2960-3595 (636 bytes)]
[Fragment count: 3]
[Reassembled IPv4 length: 3596]
User Datagram Protocol, Src Port: 4414 (4414), Dst Port: 60000 (60000)
Source port: 4414 (4414)
Destination port: 60000 (60000)
Length: 3596
Checksum: 0xb11c [validation disabled]
[Good Checksum: False]
[Bad Checksum: False]
Data (3588 bytes)
The following 3 fragments sent from the Windows box to the Linux server immediately after the previous 3 as recorded by Wireshark (sans payload). Packet number
1130 gets silently dropped and does not appear on the Linux side.
No. Time Source Destination Protocol Length Info
1129 404.338438 172.16.168.1 172.16.0.81 IPv4 1514 Fragmented IP protocol (proto=UDP 0x11, off=0, ID=7284) [Reassembled in #1131]
Frame 1129: 1514 bytes on wire (12112 bits), 1514 bytes captured (12112 bits)
Arrival Time: Nov 18, 2011 12:38:46.612259000 CST
Epoch Time: 1321641526.612259000 seconds
[Time delta from previous captured frame: 0.000511000 seconds]
[Time delta from previous displayed frame: 0.004351000 seconds]
[Time since reference or first frame: 404.338438000 seconds]
Frame Number: 1129
Frame Length: 1514 bytes (12112 bits)
Capture Length: 1514 bytes (12112 bits)
[Frame is marked: True]
[Frame is ignored: False]
[Protocols in frame: eth:ip:data]
Ethernet II, Src: 00:ff:5b:67:b9:23 (00:ff:5b:67:b9:23), Dst: xx:xx:xx:xx:xx:xx (xx:xx:xx:xx:xx:xx)
Destination: xx:xx:xx:xx:xx:xx (xx:xx:xx:xx:xx:xx)
Address: xx:xx:xx:xx:xx:xx (xx:xx:xx:xx:xx:xx)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..1. .... .... .... .... = LG bit: Locally administered address (this is NOT the factory default)
Source: 00:ff:5b:67:b9:23 (00:ff:5b:67:b9:23)
Address: 00:ff:5b:67:b9:23 (00:ff:5b:67:b9:23)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Type: IP (0x0800)
Internet Protocol Version 4, Src: 172.16.168.1 (172.16.168.1), Dst: 172.16.0.81 (172.16.0.81)
Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport))
0000 00.. = Differentiated Services Codepoint: Default (0x00)
.... ..00 = Explicit Congestion Notification: Not-ECT (Not ECN-Capable Transport) (0x00)
Total Length: 1500
Identification: 0x7284 (29316)
Flags: 0x01 (More Fragments)
0... .... = Reserved bit: Not set
.0.. .... = Don't fragment: Not set
..1. .... = More fragments: Set
Fragment offset: 0
Time to live: 128
Protocol: UDP (17)
Header checksum: 0xa219 [correct]
[Good: True]
[Bad: False]
Source: 172.16.168.1 (172.16.168.1)
Destination: 172.16.0.81 (172.16.0.81)
Reassembled IPv4 in frame: 1131
Data (1480 bytes)
No. Time Source Destination Protocol Length Info
1130 404.338487 172.16.168.1 172.16.0.81 IPv4 1514 Fragmented IP protocol (proto=UDP 0x11, off=1480, ID=7284) [Reassembled in #1131]
Frame 1130: 1514 bytes on wire (12112 bits), 1514 bytes captured (12112 bits)
Arrival Time: Nov 18, 2011 12:38:46.612308000 CST
Epoch Time: 1321641526.612308000 seconds
[Time delta from previous captured frame: 0.000049000 seconds]
[Time delta from previous displayed frame: 0.000049000 seconds]
[Time since reference or first frame: 404.338487000 seconds]
Frame Number: 1130
Frame Length: 1514 bytes (12112 bits)
Capture Length: 1514 bytes (12112 bits)
[Frame is marked: True]
[Frame is ignored: False]
[Protocols in frame: eth:ip:data]
Ethernet II, Src: 00:ff:5b:67:b9:23 (00:ff:5b:67:b9:23), Dst: xx:xx:xx:xx:xx:xx (xx:xx:xx:xx:xx:xx)
Destination: xx:xx:xx:xx:xx:xx (xx:xx:xx:xx:xx:xx)
Address: xx:xx:xx:xx:xx:xx (xx:xx:xx:xx:xx:xx)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..1. .... .... .... .... = LG bit: Locally administered address (this is NOT the factory default)
Source: 00:ff:5b:67:b9:23 (00:ff:5b:67:b9:23)
Address: 00:ff:5b:67:b9:23 (00:ff:5b:67:b9:23)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Type: IP (0x0800)
Internet Protocol Version 4, Src: 172.16.168.1 (172.16.168.1), Dst: 172.16.0.81 (172.16.0.81)
Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport))
0000 00.. = Differentiated Services Codepoint: Default (0x00)
.... ..00 = Explicit Congestion Notification: Not-ECT (Not ECN-Capable Transport) (0x00)
Total Length: 1500
Identification: 0x7284 (29316)
Flags: 0x01 (More Fragments)
0... .... = Reserved bit: Not set
.0.. .... = Don't fragment: Not set
..1. .... = More fragments: Set
Fragment offset: 1480
Time to live: 128
Protocol: UDP (17)
Header checksum: 0xa160 [correct]
[Good: True]
[Bad: False]
Source: 172.16.168.1 (172.16.168.1)
Destination: 172.16.0.81 (172.16.0.81)
Reassembled IPv4 in frame: 1131
Data (1480 bytes)
No. Time Source Destination Protocol Length Info
1131 404.338541 172.16.168.1 172.16.0.81 UDP 670 Source port: 4414 Destination port: 60000
Frame 1131: 670 bytes on wire (5360 bits), 670 bytes captured (5360 bits)
Arrival Time: Nov 18, 2011 12:38:46.612362000 CST
Epoch Time: 1321641526.612362000 seconds
[Time delta from previous captured frame: 0.000054000 seconds]
[Time delta from previous displayed frame: 0.000054000 seconds]
[Time since reference or first frame: 404.338541000 seconds]
Frame Number: 1131
Frame Length: 670 bytes (5360 bits)
Capture Length: 670 bytes (5360 bits)
[Frame is marked: True]
[Frame is ignored: False]
[Protocols in frame: eth:ip:udp:data]
[Coloring Rule Name: UDP]
[Coloring Rule String: udp]
Ethernet II, Src: 00:ff:5b:67:b9:23 (00:ff:5b:67:b9:23), Dst: xx:xx:xx:xx:xx:xx (xx:xx:xx:xx:xx:xx)
Destination: xx:xx:xx:xx:xx:xx (xx:xx:xx:xx:xx:xx)
Address: xx:xx:xx:xx:xx:xx (xx:xx:xx:xx:xx:xx)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..1. .... .... .... .... = LG bit: Locally administered address (this is NOT the factory default)
Source: 00:ff:5b:67:b9:23 (00:ff:5b:67:b9:23)
Address: 00:ff:5b:67:b9:23 (00:ff:5b:67:b9:23)
.... ...0 .... .... .... .... = IG bit: Individual address (unicast)
.... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
Type: IP (0x0800)
Internet Protocol Version 4, Src: 172.16.168.1 (172.16.168.1), Dst: 172.16.0.81 (172.16.0.81)
Version: 4
Header length: 20 bytes
Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport))
0000 00.. = Differentiated Services Codepoint: Default (0x00)
.... ..00 = Explicit Congestion Notification: Not-ECT (Not ECN-Capable Transport) (0x00)
Total Length: 656
Identification: 0x7284 (29316)
Flags: 0x00
0... .... = Reserved bit: Not set
.0.. .... = Don't fragment: Not set
..0. .... = More fragments: Not set
Fragment offset: 2960
Time to live: 128
Protocol: UDP (17)
Header checksum: 0xc3f3 [correct]
[Good: True]
[Bad: False]
Source: 172.16.168.1 (172.16.168.1)
Destination: 172.16.0.81 (172.16.0.81)
[3 IPv4 Fragments (3596 bytes): #1129(1480), #1130(1480), #1131(636)]
[Frame: 1129, payload: 0-1479 (1480 bytes)]
[Frame: 1130, payload: 1480-2959 (1480 bytes)]
[Frame: 1131, payload: 2960-3595 (636 bytes)]
[Fragment count: 3]
[Reassembled IPv4 length: 3596]
User Datagram Protocol, Src Port: 4414 (4414), Dst Port: 60000 (60000)
Source port: 4414 (4414)
Destination port: 60000 (60000)
Length: 3596
Checksum: 0xe5c9 [validation disabled]
[Good Checksum: False]
[Bad Checksum: False]
Data (3588 bytes)
I diff'd these fragments every which way against each other and can't find anything special about the dropped fragment. I'll post the OpenVPN maximum verbosity logs on Monday too. All I could infer from the logs is that the fragment was put into the tunnel on the Window side, but there is no mention of it on the Linux side.
The bit pattern from message 1130 gets dropped every time I send it. Not just a random UDP fragment drop. That one in particular, without fail. What is so special about the bit pattern? Why is it dropped? I've almost exhausted everything I can think of doing. I found some debug print statements in the OpenVPN code. I'm going to recompile OpenVPN with those debug print statements enabled on Monday.