cloudflare / cloudflare/boringtun

Persistent keepalive waits a full interval before the initial send

Open
#493 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
7.2k
Forks
532
PR merge metrics
No merged PRs in 30d

Description

A peer configured with persistent keepalive waits one full interval before its first send. An idle peer therefore does not initiate a handshake until, for example, 25 seconds after startup (if set to 25sec).

Official implementations send immediately: [wireguard-go sends a keepalive when the interface comes up](https://git.zx2c4.com/wireguard-go/tree/device/device.go#n712), and [Linux sends one when persistent keepalive is enabled](https://git.zx2c4.com/wireguard-linux/tree/drivers/net/wireguard/netlink.c#n1028).

Contributor guide

Open the contributing guide

Research direction

Start by tracing how persistent keepalive is scheduled when the interface or peer is initialized, then compare the behavior with the wireguard-go entry point in device/device.go and the Linux netlink.c reference linked in the issue. Reproduce the startup delay and confirm that an idle peer sends its initial keepalive immediately rather than waiting for the configured interval.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
networking
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.