Admission Control, Flow Control and QoS lab¶
Operate a request from identity validation through quota admission, bounded execution and resource return. Follow the chapters in order for a synthetic, single-node lab with independent backend receipts.
Before you start¶
Choose this lab for identity, quota and capacity controls on one synthetic service.
Focus of this page: Follow the request from authentication through permit return.
Topology and execution locations¶
flowchart TD
C["Client namespace l3h1<br/>192.0.2.1"] --> G["Gateway llb1<br/>VIP 192.0.2.254"]
G --> L["Llama echo l3ep1<br/>198.51.100.1"]
G --> M["Mistral echo l3ep2<br/>203.0.113.1"]
K["Keycloak kc-aigw<br/>Docker bridge"] -.->|"JWT issuer / JWKS"| G
G -.-> P["Policy store pg-jwtauth<br/>Docker bridge"]
O["Operator on Linux host"] -.->|"REST via l3h1 / port 11111"| G
O -.->|"independent fixture observations"| L
style G fill:#e1f5fe,stroke:#0288d1,color:#1f2937
style L fill:#e8f5e9,stroke:#43a047,color:#1f2937
style M fill:#e8f5e9,stroke:#43a047,color:#1f2937
These are Linux containers/namespaces on one disposable host. The model names identify synthetic echoes, not loaded GPU models. The baseline listener is VIP 192.0.2.254:2040; TLS, capacity and failure exercises add the explicit listener ports shown in their steps. Keycloak/JWKS and PostgreSQL use inspected Docker-bridge addresses.
| Where | What happens here |
|---|---|
| Host operator | Prepare private LAB files, issue credentials and run namespace commands. |
| l3h1 | Send management calls and client traffic into llb1. |
| llb1 | Enforce identity, quota and capacity before choosing a backend. |
| l3ep1 / l3ep2 | Observe independent Llama/Mistral receipt and hold/release fixtures. |
| kc-aigw / pg-jwtauth | Supply identity and policy state; they are not on the inference response path. |
Reading path and reference¶
Choose the operator task¶
| Task | Guide | Prerequisite |
|---|---|---|
| Build the isolated lab and issue credentials | Preparation | Dedicated Linux host and selected image |
| Download the public JSON and TLS helper | Lab inputs | Docs checkout or individual downloads |
| Understand fields, units, readback and rollback | Common API conventions | Preparation |
| Authorize tenants and models | JWT and model permissions | Keycloak and base echo |
| Encrypt either leg and authenticate both clients | TLS and mTLS | Fresh local PKI |
| Control user/tenant/model RPS and TPM | Quotas and reservations | Per-user credentials |
| Share defaults and a service token budget | Defaults and VIP budgets | Scope backups |
| Forward identity and test dependency failure | Policy faults and recovery | Disposable dependencies |
| Bound capacity, queues, SSE and maintenance | Capacity and drain | Hold/release fixture |
| Verify complete errors and resource return | TLS failure qualification | TLS chapter and extended fixture |
| Restore only the lab's resources | Cleanup and diagnosis | Resource ownership record |
This is one integrated admission campaign. Chapters are grouped by operator purpose; their local numbered examples are not a numbering scheme for other routing, audit or model-engine campaigns. GAIE/llm-d request Priority is outside this lab. Endpoint selection weights, token budgets and capacity limits do not by themselves establish request execution priority.
Request lifecycle¶
flowchart TD
C["Client 192.0.2.1"] --> T["TLS or frontend mTLS"]
T --> J["JWT and model access"]
J --> Q["RPS and TPM reservation"]
Q --> A["Capacity or bounded wait"]
A --> B["Backend TLS and receipt"]
B --> R["Response and byte backpressure"]
R --> S["Usage settlement and permit return"]
style J stroke:#0288d1,stroke-width:2px
style Q stroke:#0288d1,stroke-width:2px
style A stroke:#fb8c00,stroke-width:2px
style S stroke:#43a047,stroke-width:2px
A JWT identifies tenant/user/model access; a quota controls request or token admission; a capacity permit limits running requests; byte backpressure paces forwarding. Each needs its own readback and traffic evidence. The normal inference path above does not imply parity for every HTTP framing, HTTP/2, P/D or non-inference path.
Relationship to existing reference guides¶
Use this lab for complete operational sequences. The existing traffic governance overview, admission reference, JWT reference, backend TLS reference, SSE accounting and byte QoS guide remain the feature-level references. This lab concentrates shared options in the common page rather than reproducing the whole API dictionary in every chapter.
Verification and evidence limits¶
This guide uses a single-node Ubuntu 24.04 lab with synthetic backends. Each exercise covers configuration, effective-state readback, allowed and denied traffic, independent backend receipts, and cleanup or rollback. TLS exercises also inspect response termination and resource accounting.
Match the examples to your deployed API, image and effective reservation/burst settings. TPM uses continuous token-bucket refill; a minute boundary is not a quota reset. Tiny-budget examples depend on prompt estimates and reservation settings, so their expected admission sequence must be checked against the deployed policy.
Documentation builds, schema checks and fixture compilation do not establish Gateway handshake success, backend delivery or resource return. Verify those behaviors with the traffic, receipt and accounting checks in each chapter. This synthetic lab does not establish production GPU performance, UI behavior, high availability or release qualification. An example inventory classification is not runtime evidence.
For deployment validation, record the immutable Gateway/eBPF/image/binary versions and run the positive, negative, recovery and scoped-cleanup checks. Record failed, skipped and unexecuted cases separately from successful results.
Contract and source references¶
The API schema reference describes the site's frozen contract. Check it against your deployed Swagger. The implementation references are JWT verification, policy ladder and model-limit persistence, token buckets and reservations, admission and accounting integration, capacity fixtures and TLS fixtures. These moving links locate code; they do not identify the immutable binary used by a runtime result.
Contributors can run the dedicated public package checks with python3 -m unittest discover -s tests -p test_admission_examples.py -v. They check every JSON asset, shell syntax, private-address hygiene, local links, management routes and file-backed request bodies (including the literal jq transformations). A negative schema mutation checks that invalid queue input is rejected by the validator. These tests do not execute management mutations.
Check your result¶
Use the same lab across chapters; each control needs its own traffic and backend observation.
Compare API readback with the normal request, the deliberate denial, and an independent backend observation. Check the chapter's exact HTTP code and error body; HTTP 200 alone does not prove quota, identity, queue order, or resource return.
Next steps and cleanup¶
Restore the chapter's temporary policy before continuing in the same lab. Keep the original configuration and private evidence; use the final cleanup chapter when the entire lab is finished. Read the lab starting point if required values are missing. Use cleanup and recovery when ending the run.