Open vincentmli opened 4 years ago
I wonder if we can introduce another configuration option to disable TX ip checksum offload only, and keep tcp/udp checksum offload enabled, I did a test with that and it works in VMware ESXi 5.5.0 Update 2 environment.
the SYN+ACK from F-Stack Nginx, no more "bad cksum 0" in the ip header, but keep tcp checksum offload enabled
# tcpdump -n -v -r /tmp/cpu0_0.pcap host 10.1.72.28 15:53:16.597155 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 60) 10.1.72.168.80 > 10.1.72.28.1025: Flags [S.], cksum 0xa4f4 (incorrect -> 0x2b07), seq 1851342229, ack 1012485, win 8192, options [mss 1460,nop,wscale 9,sackOK,TS val 824592216 ecr 2752780346], length 0
Yes, you can create a pull requeset to F-Stack.
Just file an issue to track this, while running F-Stack Nginx in VM in VMware ESXi 5.5.0 Update 2, the TX ip checksum offload is enabled by default, but the the ip checksum is not calculated in the hardware, result in ip checksum value 0
After digging through the code and found tx_csum_offoad_skip config in [dpdk], and https://github.com/F-Stack/f-stack/issues/317
disable ip checksum offload resolves the tcp connection issue, this also affect icmp ping since it is ip packet.