Windows Client - high packet loss after fragmented packet
peter at steel-hub.co.uk
peter at steel-hub.co.uk
Thu Feb 24 00:59:46 UTC 2022
Hello,
I am using the wireguard windows client (v0.5.3) and driver (v0.10.1).
Whenever I send data that is larger than the mtu, packet loss goes
through the roof. Some packets get through, but almost all of them
(about 98%) are lost. This will continue until I deactivate and then
reactivate the tunnel in the windows client.
This does not seem to happen when receiving large packets. However, I
haven't spent much time testing that.
I tested using an android wireguard client connected to the same server.
It had no problems.
I used large ping requests to replicate the issue while capturing the
traffic on the wg and eth interfaces for both the client and server.
When I send a large packet (e.g. 1700 bytes), the client wg interface
shows two frames: the first frame length equals the mtu (1420 bytes) and
the second makes up the difference + overhead (328 bytes). However, the
eth interface on the client only shows the first frame. This is
confirmed on the server which only receives the first frame. After a
significant delay, the second frame seems to be sent and a response
received, but the request has already timed out by then.
After that, packets still come and go but there is some kind of delay
between packets being received on one interface and appearing on the
other. By the time the response comes in, the packet is already
considered lost. For example, normal-sized ping requests mostly showed
as timed out on the command line but I could see that a response was
eventually received on the wg interface.
The more large packets I send through the tunnel, the worse it gets. If
I just send one large packet, there is a delay and most requests
time-out. After more large packets are sent, I stop receiving responses
at all on the wg interface. At this point the wireguard client will
start reporting handshake failures.
As before, deactivating and reactivating the tunnel restores normal
operation.
Here are some logs that demonstrate the problem:
https://we.tl/t-qb1ChyWDIC
There are three systems to note:
10.106.15.10 = windows client (win-client)
10.106.0.2 / 10.106.15.1 = wireguard server, debian 11 (server)
10.106.0.3 = test system accessible on lan attached to server, debian 11
(host)
Thanks,
Peter.
More information about the WireGuard
mailing list