Skip to content

mqvpn v0.18.0

Latest

Choose a tag to compare

@github-actions github-actions released this 19 Oct 13:52
· 49 commits to main since this release
v0.18.0
14e9898

Features/Bugfix

  • feat: redundant mode ([Multipath] Redundant = on, Android "Redundant Mode"): send copies of live UDP streams such as SRT over more than one connection, which usually keeps them going when a connection drops for a few seconds (#388)
  • breaking: the dgram reinjection mode is removed; a config file that still sets Reinjection = dgram warns and falls back to off, and the library's JSON API rejects it (use redundant mode instead) (#388)
  • feat: Android: with Redundant Mode on, the app sends with CC = bbr, which keeps its speed on connections that lose a few packets (#408)
  • feat: a client can ask the server for its own scheduler (RequestServerScheduler), which the server applies when AllowClientScheduler is on, and get_status reports each client's scheduler; Android gets a "Scheduler" setting (#387, #389)
  • feat: PathMTU sizes QUIC packets for the underlying path, so a clean 1500-byte path gets a 1402-byte tunnel MTU (#391 by @w453y)
  • feat: Linux: TSO/USO reads and TCP GRO writes on the TUN device, controlled by TunOffload and TunGro (#392 by @pylaterreur, #396)
  • fix: fewer lost packets while a connection slows down, from congestion control and WLB fixes in the xquic fork (mp0rta/xquic#85, mp0rta/xquic#87), plus no retransmission of a DATAGRAM packet that carries an ACK_MP (mp0rta/xquic#88) (#406)
  • fix: CC = bbr no longer slows down on a connection whose delay varies widely (mp0rta/xquic#91) (#407)
  • fix: the reorder buffer now waits the full MaxWaitMs for a missing packet (#385)
  • fix: the reorder header is taken out of the tunnel MTU only when the server negotiated reorder (#381 by @pylaterreur)
  • fix: the server counts only sent bytes in a client's bytes_tx (#401 by @pylaterreur)
  • note: redundant mode can lose more packets than Redundant = off when the stream comes close to a connection's capacity; use it where every connection carries the stream with room to spare, and set CC = bbr on the client (#406, #408)