Skip to content

docs(masque): Run MASQUE acceptance on the containerlab lab - #1224

Merged
privateip merged 3 commits into
mainfrom
docs/masque-lab-acceptance
Oct 29, 2026
Merged

privateip merged 3 commits into
mainfrom
docs/masque-lab-acceptance

Conversation

@privateip

Copy link
Copy Markdown
Collaborator

Summary

MASQUE acceptance asked for physical edge nodes, a staging edge node, the Talos target platform, a separate 10 Gbit/s load host and a node reboot, none of which the project will provide.

Acceptance now runs on the containerlab gvpc lab and loopback harnesses, with a Kind node container restart standing in for a node reboot and no dependency on the closed target-platform work in #1002.

The benchmark gates on admission limits, overload rejection, recovery, expiry under load, isolation and RSS, and reports throughput, added latency, loss and CPU without gating them, because they depend on the lab hardware.

Test plan

Related to #970, #976, #984, #985

MASQUE acceptance no longer needs physical edge nodes, a staging edge node, the Talos target platform, a separate 10 Gbit/s load host or a kernel reboot. Every check runs on the containerlab gvpc lab, which runs Kind clusters with Cilium over a containerlab SRv6 transit, or on loopback harnesses. Target-platform qualification (#1002) closed as not planned, so no row depends on it.

The benchmark contract now places the provider on one dfw edge node and the load client on the other, with real gVPC workloads behind the TUN device, tc netem for loss and delay, and an untunneled baseline over the same path. It gates on admission limits, overload rejection, recovery, expiry under load, tenant isolation and RSS. Throughput, p99 added RTT, loss and CPU are reported as measured on the lab host and are not gated, because they depend on the host hardware.

The acceptance matrix accepts a Kind node container restart where a row needs a node reboot, moves the provider integration and independent-provider rows to the lab, and stops reusing #1002 target evidence. The capacity page describes what the lab qualification run covers beyond the loopback harness.
@privateip privateip self-assigned this Oct 29, 2026
The benchmark keeps the existing gate that unrelated sessions hold at least 80% of their baseline goodput under admission floods. The capacity page says the containerlab capacity run is being added under #984 instead of describing it as existing, and the edge docs index matches the page. The acceptance matrix states that a Kind node container restart keeps the host kernel's boot ID, so it covers process and container state loss, not a new boot.
The clock assumption names the no-pause condition for the lab host instead of physical nodes, and the capacity page marks the loopback goodput rows as reported on the lab rather than unproven on edge nodes.
@privateip
privateip marked this pull request as ready for review October 29, 2026 02:52
@privateip
privateip requested a review from a team as a code owner October 29, 2026 02:52
@privateip
privateip enabled auto-merge October 29, 2026 02:53
@privateip

Copy link
Copy Markdown
Collaborator Author

Both reviewers agreed on the second pass over the fix commit, and a later text-only commit settled the last wording points.

pr-rereviewer: merge. It confirmed all four first-pass findings fixed: the capacity doc that presented a not-yet-existing task as existing, the stale edge docs index line, the restored 80% unrelated-session goodput gate, and the documented Kind node container restart limit. Its remaining notes were a boot-ID coverage warning for row 23, settled by the maintainer's decision that a Kind node container restart satisfies a node reboot, and a capacity status-cell nit.

pr-conventions-reviewer: merge. Its one warning was that the contract clock assumption still said "physical-node".

Commit 329c1e7 addressed the clock wording and the capacity status-cell nit, text only. The first-pass title nit was not applied, and the provider-contract Target legend is left as foundation history, out of scope here.

The change is documentation only, so no e2e run applies beyond CI. All 24 CI checks passed on the head, with 2 skipped.

Auto-merge is enabled with the merge method, which is the only method the base branch ruleset allows. The ruleset requires one approving review and code owner review, and dismisses stale approvals on push, so the PR waits for a human approval before it merges.

@polylane

polylane Bot commented Oct 29, 2026

Copy link
Copy Markdown
Contributor

Note

This change is unlikely to harm production.

Documentation, test, or CI-only change; nothing that runs in production is affected.

View in Polylane Pause assessments

Polylane analysed 329c1e7 for production impact. You can ask follow-ups by mentioning @polylane in a comment.

Did this help? React 👍 or 👎 so the next review is sharper.

@ecv ecv left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approve.

Docs only: MASQUE acceptance and the capacity benchmark move from physical edge nodes to the containerlab gvpc lab, and throughput, added RTT, loss and CPU become reported rather than gated. The docs are consistent with #1002 closing as not planned, and every row still gates on limits, overload rejection, recovery, expiry, isolation and RSS.

  • A "node reboot" row is now a Kind node container restart. The contract says plainly that it keeps the kernel boot ID and kernel-held state, so no row claims to cover a real boot.
  • The clock assumption now rests on the lab host not being paused or migrated, which matches a lab run.

Follow-ups:

  • Nothing in the acceptance matrix now measures MASQUE on real edge hardware, NICs or Talos. Someone should own a throughput and RTT check on a real edge cell before production traffic depends on these numbers.
  • Real-boot behavior (new boot ID, kernel state lost) is no longer covered by any row. Name where that evidence comes from, or state that it is accepted as untested.

@privateip
privateip merged commit 495ee9d into main Oct 29, 2026
27 checks passed
@privateip
privateip deleted the docs/masque-lab-acceptance branch October 29, 2026 02:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants