github anton48/vk-turn-proxy srtp-build478
srtp-build478: the pace by relay, the replacement sentinel, the own TURN relay

39 minutes ago

Paired with the iOS client build 478 (v1.0-build478). Over srtp-build440:

  • The downlink pace is the client's word for its relay. Behind the group
    hello a client >= 476 declares the pace of the relay the connection rides
    (the override entry's fourth field, host:port:quota:pace, KiB/s; 0 = no
    pacer); the server paces that connection's downlink at the declared rate,
    bounded by -downlink-pace-max (0 honours the declaration as made). A client
    that declares nothing is paced at -downlink-pace as before.

  • The replacement sentinel. A client >= 478 names, behind the hello and
    behind every tick's ping, the connection its new session replaces, with the
    session's generation; the server ends the dead predecessor at once (reap
    reason "replaced") instead of keeping it until the zombie reaper. The dead
    member used to take its share of the shared downlink queue: ~26-28 s of a
    deaf tunnel after a fast failover and, while it stayed, an equal share of
    every downlink packet lost (a download at 2 Mbit/s instead of 70). The
    highest generation accepted per index wins, a late copy of an older session
    ends that session and leaves the holder alone; the counters on the stats
    line ("N replaced").

  • tools/turn-relay: the user's own TURN relay for the client's override list
    (anton48/vk-turn-proxy-ios#105), moved here from the iOS repo with its
    vendored pion/turn fork (the request's MESSAGE-INTEGRITY check removed so
    the relay accepts the credentials VK issued); built as
    turn-relay-- for every Unix row of the release. Its TCP listener
    is plain TCP (MPTCP off) and refuses TCP allocations.

  • The keepalive's clockwork is built by the caller before its goroutine
    starts (a latent data race the race detector found).

Compatibility: a client >= 221 still requires srtp-build306 or newer; a
client >= 434 names the group it leaves, reaped at once since srtp-build440;
the declaration and the sentinel are 20-byte packets of the hello's
construction — an older server forwards them to WireGuard, which drops them.

Don't miss a new vk-turn-proxy release

NewReleases is sending notifications on new releases.