Skip to content

Disabling per-path keep-alive on the server-side only causes backup paths to be abandoned on the client-side #803

Description

@HeikoBornholdt

Describe the bug
In an attempt to unburden our servers, we disabled per-path keep-alive on the server-side only (default_path_keep_alive_interval unset there), so keep-alive is performed by clients only and the server just has to answer.

With this particular setting, we observed a behavior we did not expect: every path opened as PathStatus::Backup gets abandoned as PathAbandonReason::TimedOut once per idle-timeout span, even though its per-path keep-alive pings leave every 5 s, arrive, and are acknowledged, well inside the 15 s per-path idle timeout configured on it.

I'm not that deep inside QUIC multipath internals (for now), so I don't know how ACKs should be processed. But what I observed along the way: while the keep-alives leave on the backup path, the acks arrive on path 0 and appear to be counted as a sign of life of path 0.

This may share a root cause with #799 (all PATH_ACKs ride the path that transmits first). The symptom here is a different one, and as far as I can tell from #801 the proposed fix would not reach a backup path, since a backup path may not send data frames while an available path exists.

Relevant Logs
(I will try to provide a MRE soon)

Expected behavior
Clients perform the keep-alive while the server may stay passive, and healthy paths are not falsely abandoned.

noq

Version: 1.3.0 @ c1f411562

noq v1.3.0 (/Users/bornholdt/Developer/noq/noq)
├── noq feature "bloom"
│   └── noq feature "default" (command-line)
├── noq feature "default" (command-line)
├── noq feature "platform-verifier"
│   └── noq feature "default" (command-line)
├── noq feature "ring"
│   └── noq feature "default" (command-line)
├── noq feature "runtime-tokio"
│   └── noq feature "default" (command-line)
├── noq feature "rustls"
│   └── noq feature "default" (command-line)
└── noq feature "tracing-log"
    └── noq feature "default" (command-line)

Platform(s)
Desktop:

  • OS: macOS
  • Version 26.6.2

lolwut

  • This issue was created by a human that thought critically about
    the issue being reported and wrote this as concisely and clearly
    as they could. Taking full responsibility for the issue being
    accurate.
  • This issue isn't slop, and is backed up by evidence.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    • Status
      🚑 Needs Triage

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions