[vrouter] bad chksum on IPSEC UDP packets
Affects | Status | Importance | Assigned to | Milestone | ||
---|---|---|---|---|---|---|
Juniper Openstack | Status tracked in Trunk | |||||
R3.2 |
In Progress
|
Undecided
|
Unassigned | |||
Trunk |
Fix Committed
|
Undecided
|
Unassigned | |||
OpenContrail |
New
|
Undecided
|
Unassigned |
Bug Description
Observed on R2.21 / R3.2
We are trying to setup IPsec tunnels from contrail to other environments.
When using a FIP the vrouter is adding an incorrect UDP cksum and the packet is drop at the other end.
The VM sends packets without chksums:
tcpdump: WARNING: tap96f6ee93-e3: no IPv4 address assigned
tcpdump: listening on tap96f6ee93-e3, link-type EN10MB (Ethernet), capture size 65535 bytes
15:17:11.783321 IP (tos 0x0, ttl 64, id 7755, offset 0, flags [DF], proto UDP (17), length 160)
172.10.1.3.4500 > 90.84.46.223.4500: [no cksum] UDP-encap: ESP(spi=
On the physical interface we can see the bad cksum:
tcpdump: WARNING: bond0.1002: no IPv4 address assigned
tcpdump: listening on bond0.1002, link-type EN10MB (Ethernet), capture size 65535 bytes
15:18:07.223355 IP (tos 0x0, ttl 64, id 15097, offset 0, flags [none], proto GRE (47), length 188)
10.12.129.65 > 10.128.0.251: GREv0, Flags [none], length 168
MPLS (label 17, exp 0, [S], ttl 63)
IP (tos 0x0, ttl 63, id 15097, offset 0, flags [DF], proto UDP (17), length 160)
84.
Tx chksum offload is disabled on the host:
Features for bond0.1002:
rx-checksumming: off [fixed]
tx-checksumming: off
This seems to only happen when the vrouter is doing N(S)/N(D) on the flow.
If we add the FIP on the guest interface, the vrouter doesn't NAT the packets and no chksum is added.
If we use a SNAT service instance, no chksum is added also.
Issue is present on master also
No Tc on interfaces:
[cloud@devstack:~] 39s $ sudo vif --list
Vrouter Interface Table
Flags: P=Policy, X=Cross Connect, S=Service Chain, Mr=Receive Mirror
Mt=Transmit Mirror, Tc=Transmit Checksum Offload, L3=Layer 3, L2=Layer 2
D=DHCP, Vp=Vhost Physical, Pr=Promiscuous, Vnt=Native Vlan Tagged
Mnp=No MAC Proxy, Dpdk=DPDK PMD Interface, Rfl=Receive Filtering Offload, Mon=Interface is Monitored
Uuf=Unknown Unicast Flood, Vof=VLAN insert/strip offload, Df=Drop New Flows, L=MAC Learning Enabled
Proxy=MAC Requests Proxied Always, Er=Etree Root, Mn=Mirror without Vlan Tag, Ig=Igmp Trap Enabled
vif0/0 OS: ens3
Type: Physical HWaddr: 02:17:78: da:90:6c IPaddr:0.0.0.0
Vrf:0 Mcast Vrf:65535 Flags:L3L2VpEr QOS:-1 Ref:3
RX packets:11900 bytes:4736349 errors:0
TX packets:13496 bytes:5594197 errors:0
Drops:0
vif0/1 OS: vhost0
Type: Host HWaddr: 02:17:78: da:90:6c IPaddr: 192.168. 40.11
Vrf:0 Mcast Vrf:65535 Flags:L3DEr QOS:-1 Ref:8
RX packets:13633 bytes:5610074 errors:0
TX packets:12465 bytes:4769656 errors:0
Drops:0
vif0/2 OS: pkt0
Type: Agent HWaddr: 00:00:5e: 00:01:00 IPaddr:0.0.0.0
Vrf: 65535 Mcast Vrf:65535 Flags:L3Er QOS:-1 Ref:3
RX packets:2439 bytes:223920 errors:4
TX packets:1729 bytes:157545 errors:0
Drops:8
vif0/6 OS: tap7b38c53a-7c
Type: Virtual HWaddr: 00:00:5e: 00:01:00 IPaddr:10.24.0.4
Drops: 15
Vrf:4 Mcast Vrf:4 Flags:PL3L2DEr QOS:-1 Ref:6
RX packets:2583 bytes:346981 errors:0
TX packets:5795 bytes:4184638 errors:0
ISID: 0 Bmac: 02:7b:38:c5:3a:7c
No cksum from the VM, bad after the NAT
[cloud@devstack:~] $ sudo tcpdump -vv -i any -n port 4500 0xc863117d, seq=0xef) , length 132 0xc863117d, seq=0xef) , length 132
13:44:42.423143 IP (tos 0x0, ttl 64, id 32615, offset 0, flags [DF], proto UDP (17), length 160)
10.24.0.4.4500 > 90.84.46.223.1024: [no cksum] UDP-encap: ESP(spi=
13:44:42.423143 IP (tos 0x0, ttl 63, id 32615, offset 0, flags [DF], proto UDP (17), length 160)
172.24.4.8.4500 > 90.84.46.223.1024: [bad udp cksum 0x59fb -> 0x1a5f!] UDP-encap: ESP(spi=