vrouter drops fragments in some cases if they are received out of order
Bug #1579828 reported by
Raja Sivaramakrishnan
This bug affects 2 people
Affects | Status | Importance | Assigned to | Milestone | ||
---|---|---|---|---|---|---|
Juniper Openstack | Status tracked in Trunk | |||||
R2.20 |
Fix Committed
|
Critical
|
Anand H. Krishnan | |||
R2.21.x |
Fix Committed
|
Critical
|
Anand H. Krishnan | |||
R2.22.x |
Fix Committed
|
Critical
|
Anand H. Krishnan | |||
R3.0 |
Fix Committed
|
Critical
|
Anand H. Krishnan | |||
Trunk |
Fix Committed
|
Critical
|
Anand H. Krishnan |
Bug Description
If the second fragment is received from the wire by vrouter before the first, it is dropped by vrouter in some cases as a result of fragment timeout.
information type: | Private → Public |
Changed in juniperopenstack: | |
importance: | Undecided → Critical |
tags: |
added: releasenote removed: fragment |
To post a comment you must log in.
while trying to simulate this in our setup, we see similar fragment loss for traffic from VM to vrouter.
Computes nodes are with vlan tag and sender VM has FIP.
Test details:
Sender VM - vn1-vm1, IP- 1.1.1.3, FIP- 10.204.221.181
Receiver VM - public1, IP- 10.204.221.180
Sending fragmented out of order echo request from vn1-vm1 to public1.
Order of fragments sent from VM – offset 8 , offset 0 , offset 16, offset 24
Sometime fragment with offset 8 is not sent out of the sender compute node.
On sender compute node(nodei2):
root@nodei2:~# tcpdump -nnvvi any host 10.204.221.180
tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
20:41:26.546050 IP (tos 0x0, ttl 64, id 64422, offset 8, flags [+], proto ICMP (1), length 28)
1.1.1.3 > 10.204.221.180: ip-proto-1
20:41:26.548882 IP (tos 0x0, ttl 64, id 64422, offset 0, flags [+], proto ICMP (1), length 28)
1.1.1.3 > 10.204.221.180: ICMP echo request, id 0, seq 0, length 8
20:41:26.548902 IP (tos 0x0, ttl 63, id 64422, offset 0, flags [+], proto ICMP (1), length 28)
10.204.221.181 > 10.204.221.180: ICMP echo request, id 0, seq 0, length 8
20:41:26.548907 ethertype IPv4, IP (tos 0x0, ttl 63, id 64422, offset 0, flags [+], proto ICMP (1), length 28)
10.204.221.181 > 10.204.221.180: ICMP echo request, id 0, seq 0, length 8
20:41:26.551059 IP (tos 0x0, ttl 64, id 64422, offset 16, flags [+], proto ICMP (1), length 28)
1.1.1.3 > 10.204.221.180: ip-proto-1
20:41:26.551076 IP (tos 0x0, ttl 63, id 64422, offset 16, flags [+], proto ICMP (1), length 28)
10.204.221.181 > 10.204.221.180: ip-proto-1
20:41:26.551079 ethertype IPv4, IP (tos 0x0, ttl 63, id 64422, offset 16, flags [+], proto ICMP (1), length 28)
10.204.221.181 > 10.204.221.180: ip-proto-1
20:41:26.553635 IP (tos 0x0, ttl 64, id 64422, offset 24, flags [none], proto ICMP (1), length 24)
1.1.1.3 > 10.204.221.180: ip-proto-1
20:41:26.553651 IP (tos 0x0, ttl 63, id 64422, offset 24, flags [none], proto ICMP (1), length 24)
10.204.221.181 > 10.204.221.180: ip-proto-1
20:41:26.553653 ethertype IPv4, IP (tos 0x0, ttl 63, id 64422, offset 24, flags [none], proto ICMP (1), length 24)
10.204.221.181 > 10.204.221.180: ip-proto-1
20:41:56.614628 IP (tos 0xc0, ttl 63, id 49537, offset 0, flags [none], proto ICMP (1), length 56)
10.204.221.180 > 1.1.1.3: ICMP ip reassembly time exceeded, length 36
IP (tos 0x0, ttl 63, id 64422, offset 0, flags [+], proto ICMP (1), length 28)
1.1.1.3 > 10.204.221.180: ICMP echo request, id 0, seq 0, length 8
20:41:56.614747 IP (tos 0xc0, ttl 63, id 49537, offset 0, flags [none], proto ICMP (1), length 56)
10.204.221.180 > 1.1.1.3: ICMP ip reassembly time exceeded, length 36
IP (tos 0x0, ttl 63, id 64422, offset 0, flags [+], proto ICMP (1), length 28)
1.1.1.3 > 10.204.221.180: ICMP echo request, id 0, seq 0, length 8
Verified it on receiver compute too, don’t see offset 8 packet there.
Setup details:
env.roledefs = {
'all': [host1, host2, host3, host4, host5, host6],
'cfgm': [host1],
'openstack': [host1],
'webui': [host2],
'control': [host1, host2, host3],
'compute': [host4, host5, host6],
'collector': [host1, host2, host3],
'database': [host1],
'build'...