aboutsummaryrefslogtreecommitdiff
path: root/device/timers.go
diff options
context:
space:
mode:
authorJordan Whited <jordan@tailscale.com>2023-10-31 19:53:35 -0700
committerJason A. Donenfeld <Jason@zx2c4.com>2023-12-11 16:27:22 +0100
commitd0bc03c707974a84a672716c718f99fab49e7eb8 (patch)
tree2d11dff4d00bdee8b22a570b1db665f523f38a73 /device/timers.go
parent1cf89f5339b549236f38ce5fbc40f7bf993d9626 (diff)
downloadwireguard-go-d0bc03c707974a84a672716c718f99fab49e7eb8.tar.gz
wireguard-go-d0bc03c707974a84a672716c718f99fab49e7eb8.zip
tun: implement UDP GSO/GRO for Linux
Implement UDP GSO and GRO for the Linux tun.Device, which is made possible by virtio extensions in the kernel's TUN driver starting in v6.2. secnetperf, a QUIC benchmark utility from microsoft/msquic@8e1eb1a, is used to demonstrate the effect of this commit between two Linux computers with i5-12400 CPUs. There is roughly ~13us of round trip latency between them. secnetperf was invoked with the following command line options: -stats:1 -exec:maxtput -test:tput -download:10000 -timed:1 -encrypt:0 The first result is from commit 2e0774f without UDP GSO/GRO on the TUN. [conn][0x55739a144980] STATS: EcnCapable=0 RTT=3973 us SendTotalPackets=55859 SendSuspectedLostPackets=61 SendSpuriousLostPackets=59 SendCongestionCount=27 SendEcnCongestionCount=0 RecvTotalPackets=2779122 RecvReorderedPackets=0 RecvDroppedPackets=0 RecvDuplicatePackets=0 RecvDecryptionFailures=0 Result: 3654977571 bytes @ 2922821 kbps (10003.972 ms). The second result is with UDP GSO/GRO on the TUN. [conn][0x56493dfd09a0] STATS: EcnCapable=0 RTT=1216 us SendTotalPackets=165033 SendSuspectedLostPackets=64 SendSpuriousLostPackets=61 SendCongestionCount=53 SendEcnCongestionCount=0 RecvTotalPackets=11845268 RecvReorderedPackets=25267 RecvDroppedPackets=0 RecvDuplicatePackets=0 RecvDecryptionFailures=0 Result: 15574671184 bytes @ 12458214 kbps (10001.222 ms). Signed-off-by: Jordan Whited <jordan@tailscale.com> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'device/timers.go')
0 files changed, 0 insertions, 0 deletions