exsi vm [bad udp checksum] ethtool change/fix
Prerequisites
-
[X] I have checked the Wiki and Discussions and found no answer
-
[X] I have searched other issues and found no duplicates
-
[X] I want to report a bug and not ask a question or ask for help
-
[X] I have set up AdGuard Home correctly and configured clients to use it. (Use the Discussions for help with installing and configuring clients.)
Platform (OS and CPU architecture)
Linux, AMD64 (aka x86_64)
Installation
GitHub releases or script from README
Setup
On one machine
AdGuard Home version
v0.107.43
Action
[/accounts.google.com/]tls://8.8.8.8 [/accounts.youtube.com/]tls://8.8.8.8 [/accounts.google.com/]h3://8.8.8.8/dns-query [/accounts.youtube.com/]h3://8.8.8.8/dns-query
tls is port 853 h3/https is 443
I was trying to figure out if 8.8.8.8 did h3 as quic does not work:
2024/02/05 12:45:10.999399 [error] dnsproxy: upstream quic://8.8.8.8:853 failed to exchange ;play.google.com. IN A in 23.991266822s: opening quic connection to quic://8.8.8.8:853: timeout: no recent network activity
2024/02/05 12:45:16.000402 [error] dnsproxy: upstream quic://8.8.8.8:853 failed to exchange ;play.google.com. IN A in 28.283030018s: opening quic connection to quic://8.8.8.8:853: timeout: no recent network activity
tcpdump shows udp errors when going to h3 but still seemed to work:
12:51:08.337629 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 225)
10.20.0.15.63821 > 8.8.8.8.443: [bad udp cksum 0x1b11 -> 0xec0c!] UDP, length 197
12:51:08.351799 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 62)
10.20.0.15.63821 > 8.8.8.8.443: [bad udp cksum 0x1a6e -> 0x10a9!] UDP, length 34
12:51:08.375403 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 224)
10.20.0.15.63821 > 8.8.8.8.443: [bad udp cksum 0x1b10 -> 0x384f!] UDP, length 196
12:51:08.391777 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 62)
10.20.0.15.63821 > 8.8.8.8.443: [bad udp cksum 0x1a6e -> 0xcc1a!] UDP, length 34
12:51:08.429259 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 224)
10.20.0.15.63821 > 8.8.8.8.443: [bad udp cksum 0x1b10 -> 0x6a65!] UDP, length 196
by default off of these were on:
ethtool -k eno16780032 | grep -v fixed
Features for eno16780032:
rx-checksumming: off
tx-checksumming: off
tx-checksum-ip-generic: off
scatter-gather: off
tx-scatter-gather: off
tcp-segmentation-offload: off
tx-tcp-segmentation: off
tx-tcp-mangleid-segmentation: off
tx-tcp6-segmentation: off
generic-segmentation-offload: off
generic-receive-offload: off
large-receive-offload: off
rx-vlan-offload: off
tx-vlan-offload: off
receive-hashing: off
highdma: on
tx-nocache-copy: off
rx-gro-list: off
rx-udp-gro-forwarding: off
changed them all to off:
/sbin/ethtool -K eno16780032 rx off tx off tso off gso off sg off gro off rxvlan off txvlan off rxhash off tx-checksum-ipv6 off tx-checksum-ipv4 off
no more udp errors:
12:53:45.006803 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 61)
10.20.0.15.63821 > 8.8.8.8.443: [udp sum ok] UDP, length 33
12:53:45.075401 IP (tos 0x2,ECT(0), ttl 64, id 0, offset 0, flags [DF], proto UDP (17), length 225)
10.20.0.15.63821 > 8.8.8.8.443: [udp sum ok] UDP, length 197
exsi fwiw..
[82150.544859] vmxnet3 0000:0b:00.0 eno16780032: entered promiscuous mode
[82150.552304] vmxnet3 0000:0b:00.0 eno16780032: left promiscuous mode
[82156.385936] vmxnet3 0000:0b:00.0 eno16780032: entered promiscuous mode
[82175.970975] vmxnet3 0000:0b:00.0 eno16780032: left promiscuous mode
Expected result
I thought there would have been some sort of noticeable error if h3 did not work correctly..
Actual result
it seems as if it was working but there were settings that could have helped; ethtool.. those seem to be undocumented..
Additional information and/or screenshots
No response
@bcookatpcsd, I assume this is only happening with QUIC and/or HTTP/3? If so, does setting the environment variable QUIC_GO_DISABLE_ECN to true fix this or change the behavior?