Weirdness on timing of HS request packets when keepalive==5
M Rubon
rubonmtz at gmail.com
Mon Feb 16 18:20:27 UTC 2026
I am looking at the timing interval between HS request packets during
the 90s attempt period. I see different interval timing depending on
the (basically unrelated) persistent-keepalive value. I suspect the
timer for persistent-keepalive==5 is interfering with the timer for
"try HS request again".
It is not a massive difference, but it does not match the expected
5+jitter seconds suggested in the documentation, and has interesting
consequences. In one case, two of my peers were each sending HS
attempts to the other at the same time (almost no randomness), and
those HS requests were crossing in the night and being repeatedly
ignored because the peer had also sent a HS request (tcpdump available
on request). It took a while before they finally completed a full HS.
I have a useful workaround to avoid issues for my use case, but wanted
to highlight the possibility of keepalive timers at 5s lightly
interfering with the "try HS again" timers.
M.
Environment: OpenWRT v25.12 kernel 6.12 (same issue on kernel 5.4)
Trying to connect to a (non-existent) peer over loopback port 5656
Monitoring: tcpdump -nnttt -i lo udp port 5656
When keepalive is 13, the interval between HS packets is 5.x seconds
and jitter is decently random
00:00:05.119975 IP6 ::1.50737 > ::1.5656: UDP, length 148
00:00:05.759944 IP6 ::1.50737 > ::1.5656: UDP, length 148
00:00:05.760015 IP6 ::1.50737 > ::1.5656: UDP, length 148
00:00:05.760014 IP6 ::1.50737 > ::1.5656: UDP, length 148
00:00:05.120015 IP6 ::1.50737 > ::1.5656: UDP, length 148
00:00:05.759989 IP6 ::1.50737 > ::1.5656: UDP, length 148
00:00:05.760028 IP6 ::1.50737 > ::1.5656: UDP, length 148
00:00:05.760008 IP6 ::1.50737 > ::1.5656: UDP, length 148
00:00:05.119940 IP6 ::1.50737 > ::1.5656: UDP, length 148
00:00:05.120033 IP6 ::1.50737 > ::1.5656: UDP, length 148
00:00:05.039978 IP6 ::1.50737 > ::1.5656: UDP, length 148
00:00:05.200242 IP6 ::1.50737 > ::1.5656: UDP, length 148
00:00:05.759820 IP6 ::1.50737 > ::1.5656: UDP, length 148
When keepalive is 5, the interval between HS packets is 5.0x seconds
and jitter is clamped to under 10ms
00:00:05.039878 IP6 ::1.50737 > ::1.5656: UDP, length 148
00:00:05.040018 IP6 ::1.50737 > ::1.5656: UDP, length 148
00:00:05.039979 IP6 ::1.50737 > ::1.5656: UDP, length 148
00:00:05.040000 IP6 ::1.50737 > ::1.5656: UDP, length 148
00:00:05.040104 IP6 ::1.50737 > ::1.5656: UDP, length 148
00:00:05.039900 IP6 ::1.50737 > ::1.5656: UDP, length 148
00:00:05.040112 IP6 ::1.50737 > ::1.5656: UDP, length 148
00:00:05.039838 IP6 ::1.50737 > ::1.5656: UDP, length 148
More information about the WireGuard
mailing list