Traffic Control

Grundlagen

Die grundlegenden Elemente beim Traffic Control unter Linux sind:

  • qdisc (queueing discipline, Warteschlange)
  • class (Klasse)
  • filter (Filter)

qdisc

Immer wenn ein Paket gesendet werden soll wird es in die qdisc des entsprechenden Interfaces eingereiht. Sofort nach dem Einreihen in die qdisc erwartet der Kernel Pakete von der qdisc um diese an den Netzwerkkartentreiber weiterzuleiten.

Mit qdiscs (Queueing Discipline) kann festgelegt werden, in welcher Weise Daten gesendet werden. Es gibt einige unterschiedliche qdiscs, die mehr oder weniger komplex sind.

qdiscs, die keine Klassen unterstützen (classless qdiscs):

  • pfifo_fast (Default für alle Interfaces, 3x pfifo, Beachtung des TOS-Flags)
  • pfifo (Einfache Paket-FIFO, keine Verarbeitung - nur Pufferung im Bedarf: vgl. txqueuelen)
  • bfifo (Einfache Byte-FIFO, keine Verarbeitung - nur Pufferung im Bedarf: vgl. txqueuelen)
  • red (Random Early Detection)
  • sfq (Stochastic Fairness Queueing)
  • tbf (Token Bucket Filter)

qdiscs, die Klassen unterstützen (classful qdiscs):

  • CBQ (Class Based Queueing)
  • HTB (Hierarchy Token Bucket)
  • PRIO

pfifo_fast

Manpage: tc-pfifo_fast

Die pfifo_fast qdisc ist eine sehr einfache qdisc ohne Unterstützung für Klassen und wird standardmäßig automatisch jedem Interface zugeordnet. Es gibt 3 Bänder, in die Pakete in Abhängigkeit ihres Type-of-Service (TOS) Flags gesteckt werden. Die Abbildung des TOS-Flags auf die Bänder wird entsprechend der priomap vorgenommen. Wenn noch Pakete in Band 0 warten, werden diese zuerst verarbeitet, danach alle aus Band 1 und zuletzt alle aus Band 2.

weitere Informationen
Parameter

tbf

Manpage: tc-tbf

Mit dem Token Bucket Filter kann die Übertragungsrate von ausgehenden Paketen begrenzt werden.

weitere Informationen
Parameter

class

Einige qdiscs können Klassen beinhalten. In diesen Klassen können weitere qdiscs enthalten sein, in die Pakete eingereiht werden können. Diese Klassen können z.B. verwendet werden um ausgewählte Pakte bevorzugt zu behandeln.

filter

Filter sind Teile von qdiscs und können im Zusammenhang mit Klassen verwendet werden um festzulegen welche Pakete in welche Klasse gesteckt werden.

Wichtige Befehle

Alle Operationen werden mit dem Programm tc ausgeführt. Im Folgenden einige grundlegende Kommandos.

Anzeige der aktuellen Einstellungen und Statistiken

Kommando Erklärung
tc [-s] [-d] qdisc ls [dev DEV] Zeigt die vorhandenen qdiscs an.
(Alle oder optional für ein ausgewähltes Device)
-s gibt Statistiken mit aus (wieviele Bytes und Pakete die qdisc durchlaufen haben)
-d zeigt Details mit an
tc [-s] [-d] class ls dev DEV Zeigt die vorhandenen Klassen an.
-s gibt Statistiken mit aus (wieviele Bytes und Pakete in der Klasse gelandet sind)
-d zeigt Details mit an
tc filter ls dev DEV Zeigt die vorhandenen Filter an.
(Welche Pakete werden in welche Klasse gesteckt)

Quellen

 
linux/traffic-control.txt · Zuletzt geändert: 16.05.2006 01:57:59 von da7a