Queueing-Modelle sind im Provider-Kontext der Punkt, an dem QoS „wirklich“ passiert. Markings wie DSCP oder MPLS-TC sind nur Signale – erst in den Warteschlangen (Queues) entscheidet sich, ob Voice stabil bleibt, ob Video unter Last ruckelt, ob Business-Anwendungen planbare RTT-Perzentile bekommen oder ob Best Effort durch Bufferbloat zäh wird. Im Carrier-Betrieb ist Queueing dabei mehr als eine Router-Konfiguration: Es ist ein Betriebsmodell, das über Tausende Interfaces, unterschiedliche Linktypen (Access, Metro, Core, Interconnect), mehrere Vendoren und viele Services hinweg konsistent funktionieren muss. Genau deshalb ist es gefährlich, Queueing-Modelle nur aus Enterprise-Sicht zu betrachten. Im Provider-Netz sind Engpässe oft geteilt (Multi-Tenant), Traffic ist stark aggregiert, Mikrobursts sind normal, und Fehlmarking kann Premium-Queues fluten. Ein professionelles Design nutzt LLQ (Low Latency Queue) nur dort, wo es zwingend nötig ist, kombiniert sie mit strikten Limits, setzt CBWFQ (Class-Based Weighted Fair Queuing) für planbare Mindestanteile ein und nutzt WRR/WFQ-Mechanismen, um Fairness und Stabilität zu erreichen. Gleichzeitig müssen Queue-Limits, Shaping und AQM/ECN so abgestimmt werden, dass Latenz sinkt, ohne Throughput zu zerstören. Dieser Artikel erklärt LLQ, CBWFQ, WRR/WFQ im Provider-Kontext, zeigt typische Failure Patterns und gibt praxiserprobte Designmuster für Carrier-Grade QoS.
Warum Queueing im Provider-Netz kritischer ist als „nur Prioritäten setzen“
In Provider-Netzen ist Congestion kein Ausnahmezustand. Sie entsteht an Access-Uplinks, Metro-Ringen, Aggregationsknoten, Interconnects, Cloud-Edges und in Failover-Szenarien. Dazu kommt: Viele Kunden teilen sich dieselben Ressourcen. Ohne sauberes Queueing führt das zu Noisy-Neighbor-Effekten, in denen einzelne Flows oder Kunden andere verdrängen. Deshalb ist Queueing im Provider-Kontext immer ein Zusammenspiel aus drei Faktoren: (1) Klassifizierung/Marking, (2) Scheduling (wie die Queues bedient werden) und (3) Kontrolle der Queue-Lage durch Shaping/Policing. Wer nur Scheduling konfiguriert, aber die entscheidende Queue beim Provider-Partner oder im Access-Black-Box belässt, bekommt instabile Qualität und schlechte Messbarkeit.
- Multi-Tenant Realität: Premium-Queues müssen vor Missmarking geschützt werden.
- Mikrobursts: kurze Peaks dominieren QoE, nicht der Tagesmittelwert.
- Failover: Backup-Pfade sind oft enger; Queueing muss auch dort tragfähig sein.
- Messbarkeit: Queue-Delay und Drops pro Klasse sind die wichtigsten Betriebssignale.
Grundlagen: Was ein Queueing-Modell im Kern leisten muss
Unabhängig vom konkreten Algorithmus hat jedes Queueing-Modell im Provider-Betrieb vier Aufgaben. Erstens: Latenz- und Jitter-sensitive Klassen (Voice, Steuerverkehr) müssen in Congestion-Situationen minimalen Queueing-Delay haben. Zweitens: Bandbreitenhungrige, aber wichtige Klassen (Video, Business Apps) brauchen planbare Mindestanteile, ohne dass sie alles dominieren. Drittens: Best Effort muss effizient sein, darf aber keine unbounded Queue-Latenzen erzeugen (Bufferbloat). Viertens: Bulk/Scavenger muss Traffic-Spitzen absorbieren, ohne Echtzeit zu gefährden. Daraus folgt: Ein gutes Modell kombiniert Priorität, Gewichtung, Queue-Limits und Drop-Strategien – nicht nur „eine Queue für alles“.
- Realtime schützen: minimale Verzögerung, geringe Jitterspitzen, keine Burst-Drops.
- Fairness sichern: keine Starvation wichtiger Datenklassen.
- Bufferbloat vermeiden: kurze, kontrollierte Queues, AQM/ECN wo sinnvoll.
- Budgets erzwingen: Premiumklassen müssen limitiert sein, sonst destabilisieren sie das System.
LLQ: Low Latency Queue – mächtig, aber gefährlich ohne Grenzen
LLQ ist das Arbeitspferd für Echtzeitverkehr, weil sie strikte Priorität bietet: Pakete in der LLQ werden vor anderen Queues gesendet, was Queueing-Delay und Jitter drastisch reduziert. Im Provider-Kontext ist LLQ jedoch immer eine „scharfe Klinge“. Wenn LLQ unlimitiert ist oder wenn Missmarking/Fehlklassifizierung Traffic in die LLQ bringt, kann sie andere Klassen aushungern (Starvation). Das führt zu massiven RTT-Spitzen, Paketverlust in Datenklassen und im schlimmsten Fall zu Instabilität von Control Traffic. Deshalb ist das wichtigste LLQ-Prinzip im Carrier-Betrieb: LLQ immer strikt begrenzen und die Quelle der LLQ-Zugehörigkeit streng kontrollieren (Trust Boundaries, Allowlists, Remarking).
- Typische LLQ-Nutzung: Voice Media (RTP/SRTP), in manchen Designs kritische Timing/Control-Flows.
- LLQ-Limitierung: Obergrenze in kbit/s oder Prozent, basierend auf Busy-Hour-Modell plus Headroom.
- Kleine Queue-Limits: Echtzeit braucht kurze Queues, sonst steigt Jitter trotz Priorität.
- Schutz vor Missmarking: Allowlist und Budget-Enforcement am Edge sind Pflicht.
LLQ-Failure Patterns im Provider-Betrieb
- LLQ wird „zu groß“: Best Effort landet durch Fehlmarking in Realtime → andere Klassen verhungern.
- Policer-Drops in LLQ: LLQ-Budget zu knapp oder Overhead nicht eingerechnet → hörbare Aussetzer.
- „Keine Drops, aber schlechte Qualität“: Queue-Limits zu groß → Bufferbloat in der LLQ, Jitter steigt.
CBWFQ: Class-Based Weighted Fair Queuing – planbare Mindestanteile für Serviceklassen
CBWFQ teilt Bandbreite auf Klassen auf Basis von Gewichten/Reservierungen. Das ist im Provider-Kontext entscheidend, weil viele Dienste nicht strikt priorisiert werden sollen, aber dennoch verlässlich funktionieren müssen: interaktives Video, Business Critical Data, Signaling oder bestimmte Service-Profile. CBWFQ verhindert, dass Best Effort alles dominiert, und sorgt dafür, dass wichtige Klassen auch bei Congestion einen Mindestanteil bekommen. Gleichzeitig bleibt es fair: Keine Klasse erhält unbounded Priorität (außer Sie kombinieren CBWFQ mit LLQ für eine Realtime-Klasse). In der Praxis ist CBWFQ das Rückgrat eines schlanken Klassenmodells im Core und in Aggregation – besonders dort, wo viele Flows zusammenlaufen und strikt priorisierte Queues nur für sehr kleine Echtzeitprofile sinnvoll sind.
- Mindestbandbreite: Klassen erhalten garantierte Anteile, solange Congestion besteht.
- Predictability: bessere SLA-Fähigkeit, weil Ressourcen pro Klasse modellierbar werden.
- Kombination mit LLQ: häufiges Muster: Voice in LLQ, Video/Business in CBWFQ-Klassen.
- Queue-Limits und Drop-Policy: müssen pro Klasse bewusst gesetzt werden, sonst entsteht Bufferbloat.
WRR und WFQ: Fairness-Algorithmen und ihre Rolle im Carrier-Kontext
WRR (Weighted Round Robin) und WFQ (Weighted Fair Queuing) stehen für Mechanismen, die Fairness zwischen Flows oder Klassen herstellen. Im Provider-Kontext begegnen Sie oft Varianten: klassisches WFQ (flow-basiert), Class-Based WFQ oder hardware-nahe WRR/DRR-Varianten, die pro Queue in Runden bedienen. Der entscheidende Unterschied ist die Granularität: Flow-basiertes WFQ kann „Elephant Flows“ besser zähmen und Fairness zwischen vielen Sessions verbessern, ist aber in sehr großen Durchsatzdomänen nicht immer 1:1 verfügbar oder wird durch Hardware-Implementierungen abstrahiert. WRR ist oft einfacher und in ASICs effizient, benötigt aber eine saubere Klassendefinition, weil es nicht automatisch flow-basiert „glättet“. In der Praxis ist die Frage selten „WRR oder WFQ“, sondern: Welche Fairness-Eigenschaft brauchen Sie an diesem Engpasslink, und was unterstützt die Plattform zuverlässig?
- WRR: bedient Queues in gewichteten Runden; gut für Klassen-Fairness, robust und hardwarefreundlich.
- WFQ: kann Flows fairer behandeln; hilfreich, wenn viele Sessions um Ressourcen konkurrieren.
- Provider-Praxis: häufig klassenbasiert (CBWFQ/WRR) plus AQM/ECN in Best Effort.
- Wichtig: Fairness ersetzt keine Limits für Realtime und keine Trust Boundaries.
Queue-Limits: Warum „mehr Buffer“ selten die richtige Antwort ist
Queue-Limits bestimmen, wie viele Pakete/Bytes in einer Queue gehalten werden, bevor gedroppt wird. Große Buffers reduzieren Drops, erhöhen aber Latenz und Jitter – und damit oft genau das, was Sie für Echtzeit vermeiden wollen. In Provider-Netzen ist Bufferbloat besonders gefährlich, weil er sich über mehrere Hops addieren kann und weil er in Durchschnittsmetriken unsichtbar bleibt. Ein gutes Design setzt daher bewusst kurze Queue-Limits für Echtzeitklassen und nutzt für Best Effort AQM/ECN oder geeignete Drop-Mechanismen, um Queues kurz zu halten. Der Grundsatz lautet: Lieber kontrollierte, frühe Signalisierung von Congestion als späte, massive Tail-Drops.
- Realtime: kurze Queue-Limits, damit Jitter niedrig bleibt.
- Video: moderate Limits, weil Video etwas mehr Buffer toleriert, aber nicht unendlich.
- Best Effort: AQM/ECN oder WRED-ähnliche Mechanik, um Bufferbloat zu reduzieren.
- Bulk: kann größere Buffers tragen, ist aber bewusst nachrangig.
Shaping und die Lage der Queue: Scheduling wirkt nur am richtigen Ort
Ein Scheduling-Algorithmus wirkt nur auf der Queue, die er kontrolliert. Wenn Congestion bei einem Provider-Partner, einem Access-Modem oder einem nicht transparenteren Aggregationsgerät entsteht, sind Ihre schönen LLQ/CBWFQ-Profile wirkungslos oder nur teilweise wirksam. Deshalb ist Shaping ein Kernbaustein im Provider-Kontext: Egress Shaping verlagert Congestion in Ihr Gerät und macht Queue-Delay und Drops messbar. Besonders an Interconnects, Metro-Ringen, WAN-Edges und bei Access-Übergängen ist das entscheidend. Für Multi-Service-Interfaces wird Shaping häufig hierarchisch umgesetzt (HQoS): Parent-Shaper kontrolliert die Gesamtrate, Child-Queues bedienen Klassen mit LLQ/CBWFQ/WRR.
- Egress Shaping: Congestion lokal halten, Mikrobursts glätten, Reproduzierbarkeit erhöhen.
- HQoS: per Service/Customer budgetieren und innerhalb priorisieren, um Noisy Neighbors zu vermeiden.
- Failover-Headroom: Shaper-Profile müssen Schutzpfade berücksichtigen, sonst bricht QoS im Failover.
Designmuster im Provider-Kontext: Ein praxistaugliches Klassen- und Queueing-Setup
Provider-Designs profitieren von Standardmustern. Ein sehr häufiges Muster ist: Network Control schützen, Voice in limitierte LLQ, Video in gewichtete Klasse, Business in gewichtete Klasse, Best Effort mit AQM/ECN, Bulk/Scavenger nachrangig. Dieses Muster ist bewusst „langweilig“ – und genau deshalb erfolgreich. Es lässt sich über Plattformen hinweg standardisieren, ist auditierbar und skaliert. Die Kunst liegt im Sizing: LLQ-Budgets realistisch dimensionieren, Gewichte für Video/Business an Trafficprofilen ausrichten, Queue-Limits gegen Bufferbloat setzen und Shaping an den echten Engpässen platzieren.
- Network Control: kleine, geschützte Queue, hohe Zuverlässigkeit.
- Voice (LLQ): strikt priorisiert, strikt limitiert, kurze Queue-Limits.
- Video (CBWFQ/WRR): Mindestbandbreite, stabile Bedienung, moderate Queue-Limits.
- Business (CBWFQ/WRR): bevorzugt, planbare RTT-Perzentile.
- Best Effort: AQM/ECN, um Latenzspitzen zu reduzieren.
- Bulk: nachrangig, um Peaks zu absorbieren, ohne Premiumklassen zu gefährden.
Wie man LLQ, CBWFQ und WRR/WFQ sinnvoll kombiniert
Die Kombination ist in der Praxis wichtiger als der einzelne Algorithmus. LLQ liefert Echtzeitqualität, wenn sie klein und kontrolliert bleibt. CBWFQ/WRR liefert planbare Mindestanteile für wichtige, aber nicht strikt priorisierte Klassen. WFQ (oder flow-nahe Fairnessmechanismen) kann innerhalb von Best Effort helfen, wenn viele Flows konkurrieren, ersetzt aber nicht die Klassenlogik. Entscheidend ist, dass jede Klasse eine klare Rolle hat und dass die Summe der Budgets in realistischen Engpass-Szenarien funktioniert.
- LLQ nur für echte Echtzeit: nicht für Signaling-„zur Sicherheit“ oder für beliebige „High Priority“-Daten.
- CBWFQ/WRR für alles, was planbar sein soll: Video, Business, Signaling, wichtige Datenflüsse.
- AQM/ECN für Best Effort: verhindert, dass Best Effort die Latenzdomäne „aufbläht“.
- Budgets testen: unter Mischlast und Failover, nicht nur im Normalbetrieb.
Operative Grenzen: Plattform-Queues, ASIC-Realität und Vendor-Drift
Im Provider-Kontext wird Queueing durch Hardware realisiert. Nicht jede Plattform hat die gleiche Anzahl an Queues, die gleiche Unterstützung für AQM/ECN oder die gleiche Semantik bei Queue-Limits. Deshalb ist Standardisierung über Templates und Rollenprofile entscheidend: „Core-Link-Profil“, „Metro-Ring-Profil“, „Access-Uplink-Profil“, „Interconnect-Profil“. So verhindern Sie, dass die gleiche DSCP-Klasse auf Gerät A in einer anderen Queue landet als auf Gerät B. Wo Feature-Parität fehlt, ist es besser, das Klassenmodell zu vereinfachen als Komplexität zu erzwingen.
- Queue-Anzahl: Klassenmodell an Hardware-Realität anpassen.
- Feature-Gaps: AQM/ECN und Telemetrie unterscheiden sich; Betrieb muss das einkalkulieren.
- Template-Governance: Drift ist der häufigste QoS-Killer über Zeit.
Messbarkeit: Queue-Delay und Drops sind die Wahrheit
In Provider-Netzen sind Durchschnittsauslastungen als QoS-Indikator zu grob. Entscheidend sind queuebezogene KPIs pro Klasse: Queue-Delay (p95/p99), Queue-Drops und – bei AQM/ECN – Mark-Raten. Diese Werte müssen an den realen Congestion Points gemessen werden: Uplinks, Ringsegmente, Interconnect-Ports, DC-Edges. Zusätzlich ist Marking-Integrität wichtig: DSCP/TC-Verteilungen und Remarking-/Policer-Zähler zeigen, ob Klassen korrekt genutzt werden oder ob Missmarking Premiumqueues flutet. Wer diese Telemetrie hat, kann LLQ/CBWFQ/WRR nicht nur konfigurieren, sondern wirkungsorientiert betreiben.
- Queue-Delay p95/p99: Frühindikator für Jitterprobleme und bevorstehende Drops.
- Class Drops: Drops in Voice/Control sind kritisch; Best Effort Drops differenziert bewerten.
- Marking Distribution: zeigt Missmarking und Klassendrift frühzeitig.
- Event-Korrelation: Failover/Maintenance mit Queue-KPIs verknüpfen.
Typische Failure Patterns bei Queueing-Modellen im Provider-Kontext
Viele QoS-Probleme lassen sich auf wiederkehrende Muster zurückführen. Wenn Sie diese Muster kennen, können Sie gezielt nachjustieren, statt „mehr Priorität“ zu vergeben. Besonders häufig sind unlimitierte LLQ, zu große Queue-Limits (Bufferbloat), fehlendes Shaping und inkonsistente Klassenzuordnung über Domänen.
- Starvation: LLQ unlimitiert oder zu groß; andere Klassen bekommen zu wenig Sendezeit.
- Bufferbloat: große Buffers, hohe RTT/Jitter ohne Drops; AQM/ECN oder Limits fehlen.
- Microburst Drops: kurze Peaks füllen Queues; Shaping und kurze Telemetrieintervalle fehlen.
- Drift: gleiche DSCP/TC landet in verschiedenen Queues; Templates/Governance fehlen.
- QoS am falschen Ort: Congestion liegt beim Partner/Access; eigene Scheduling-Profile greifen kaum.
Blueprint: Queueing-Modelle als Carrier-Grade Standard ausrollen
Ein belastbarer Ansatz beginnt mit einem schlanken Klassenmodell und klaren PHBs pro Klasse. Danach definieren Sie pro Linkrolle (Access, Metro, Core, Interconnect) ein Queueing-Profil, das LLQ/CBWFQ/WRR konsistent kombiniert: Voice in limitierte LLQ, Video/Business in gewichtete Klassen, Best Effort mit AQM/ECN, Bulk nachrangig, Network Control geschützt. Shaping wird an den realen Engpässen platziert, damit Congestion kontrollierbar und messbar bleibt. Anschließend wird Telemetrie etabliert: Queue-Delay/Drops pro Klasse, Marking-Verteilungen, Remarking-/Policer-Zähler, Korrelation mit Events. Schließlich folgt Governance: Templates, Rezertifizierung und Exception-Management, damit das Modell über Zeit stabil bleibt. So werden LLQ, CBWFQ und WRR/WFQ im Provider-Kontext nicht zu „Routerfeatures“, sondern zu einem operativen System, das unter Last, Mikrobursts und Failover reproduzierbar Servicequalität liefert.

