Dieses Kapitel enthält Referenzmaterialien mit ausführlichen Informationen zu den folgenden IPQoS-Themen:
Eine Übersicht zu IPQoS finden Sie in Kapitel 32Einführung in IPQoS (Übersicht). Informationen zur Planung von IPQoS finden Sie in Kapitel 33Planen eines IPQoS-konformen Netzwerks (Aufgaben). Verfahren zur Konfiguration von IPQoS finden Sie in Kapitel 34Erstellen der IPQoS-Konfigurationsdatei (Aufgaben).
In diesem Abschnitt werden die IPQoS-Architektur und die Einflüsse von IPQoS auf das Differentiated Services (Diffserv)-Modell beschrieben, das unter RFC 2475, An Architecture for Differentiated Services definiert ist. In IPQoS sind die folgenden Elemente des Diffserv-Modells enthalten:
Classifier (Klassierer)
Meter (Zähler)
Marker (Zeiger)
Darüber hinaus umfasst IPQoS das Flow Accounting-Modul und den dlcosmk-Marker für die Verwendung mit Geräten für virtuelle lokale Netzwerke (VLANs).
Im Diffserv-Modell ist ein Classifier für die Strukturierung der ausgewählten Verkehrswerte in Gruppen verantwortlich, an denen unterschiedliche Serviceebenen angewendet werden. Die in RFC 2475 definierten Classifier wurden ursprünglich für Grenzrouter konzipiert. Der IPQoS-Classifier ipgpc dient jedoch zur Verarbeitung von Verkehrswerten auf Hosts, die sich in einem lokalen Netzwerk befinden. Somit kann ein Netzwerk mit IPQoS-Systemen und einem Diffserv-Router mehr Differentiated Services bereitstellen. Eine technische Beschreibung des ipgpc-Classifiers finden Sie in der Manpage ipgpc(7ipp).
Der ipgpc-Classifier führt Folgendes aus:
Wählt Verkehrswerte aus, der den in der IPQoS-Konfigurationsdatei auf dem IPQoS-konformen Systemen angegebenen Kriterien entsprechen
Die QoS-Richtlinie definiert verschiedene Kriterien, die in den Paket-Headern vorhanden sein müssen. Diese Kriterien werden als Selektoren bezeichnet. Der ipgpc-Classifier vergleicht diese Selektoren mit den Paket-Headern, die vom IPQoS-System empfangen wurden. ipgpc wählt dann alle übereinstimmenden Pakete aus.
Teilt den Paketverkehr in Klassen (Netzverkehr mit den gleichen Eigenschaften) gemäß der Definition in der IPQoS-Konfigurationsdatei auf
Prüft den Wert im Differentiated Service (DS)-Feld des Pakets auf das Vorhandensein eines Differentiated Services Codepoint (DSCP)
Das Vorhandensein des DSCP gibt an, ob der eingehende Verkehr vom Sender mit einem Weiterleitungsverhalten versehen wurde.
Ermittelt, welche weitere Aktion in der IPQoS-Konfigurationsdatei für die Pakete einer bestimmten Klasse definiert wurde
Übergibt die Pakete an das nächste in der IPQoS-Konfigurationsdatei angegebene IPQoS-Modul, gibt die Pakete an den Netzwerkdatenfluss zurück
Eine Übersicht zu diesem Classifier finden Sie unter Classifier (ipgpc) – Übersicht. Informationen zum Aufrufen des Classifiers in der IPQoS-Konfigurationsdatei finden Sie unter IPQoS-Konfigurationsdatei.
Der ipgpc-Classifier unterstützt verschiedene Selektoren, die Sie in der filter-Klausel der IPQoS-Konfigurationsdatei angeben können. Wenn Sie einen Filter definieren, verwenden Sie immer die Mindestanzahl an Selektoren, die zum erfolgreichen Abrufen von Datenverkehr für eine bestimmte Klasse erforderlich ist. Die Anzahl der von Ihnen definierten Filter kann sich auf die IPQoS-Performance auswirken.
In der folgenden Tabelle sind die für ipgpc verfügbaren Selektoren aufgeführt.
Tabelle 37–1 Filter-Selektoren für den IPQoS-Classifier
Selektor |
Argument |
Ausgewählte Informationen |
---|---|---|
saddr |
IP-Adressnummer. |
Quelladresse. |
daddr |
IP-Adressnummer. |
Zieladresse. |
sport |
Entweder eine Portnummer oder ein Servicename gemäß der Definition in /etc/services. |
Ursprungsport, von dem die Verkehrsklasse stammt. |
dport |
Entweder eine Portnummer oder ein Servicename gemäß der Definition in /etc/services. |
Zielport, für den die Verkehrsklasse bestimmt ist. |
protocol |
Entweder eine Protokollnummer oder ein Protokollname gemäß der Definition in /etc/protocols. |
Protokoll, das von dieser Verkehrsklasse verwendet werden muss. |
dsfield |
DS Codepoint (DSCP) mit einem Wert zwischen 0 und 63. |
DSCP, der das Weiterleitungsverhalten für das Paket definiert. Wenn dieser Parameter angegeben ist, muss auch der Parameter dsfield_mask angegeben sein. |
dsfield_mask |
Bitmaske mit einem Wert zwischen 0 und 255. |
Wird zusammen mit dem Selektor dsfield verwendet. dsfield_mask wird an dem Selektor dsfield angewendet, um festzustellen, welche Bit übereinstimmen müssen. |
if_name |
Schnittstellenname. |
Schnittstelle, die entweder für eingehenden oder abgehenden Verkehr einer bestimmten Klasse verwendet werden muss. |
user |
Nummer der auszuwählenden UNIX-Benutzer-ID bzw. des auszuwählenden Benutzernamens. Wenn keine Benutzer-ID oder Benutzername im Paket vorhanden ist, wird der Standardwert –1 verwendet. |
Die Benutzer-ID wird an eine Anwendung übermittelt. |
projid |
Nummer der auszuwählenden Projekt-ID. |
Die Projekt-ID wird an eine Anwendung übermittelt. |
priority |
Prioritätsnummer. Die niedrigste Priorität ist 0. |
Priorität, die Pakete dieser Klasse zugewiesen wird. Die Priorität dient zum Bestimmen der Wichtigkeit von Filtern für die gleiche Klasse. |
direction |
Argumente können eines der Folgenden sein: |
Richtung des Paketflusses auf dem IPQoS-Computer. |
LOCAL_IN |
Eingehender lokaler Verkehr zum IPQoS-System. |
|
LOCAL_OUT |
Abgehender lokaler Verkehr zum IPQoS-System. |
|
FWD_IN |
Eingehender, weiterzuleitender Verkehr. |
|
FWD_OUT |
Abgehender, weiterzuleitender Verkehr. |
|
precedence |
Wert der Prioritätsstufe. Die höchste Prioritätsstufe ist 0. |
Die Prioritätsstufe dient zum Sortieren von Filtern mit der gleichen Priorität. |
ip_version |
V4 oder V6 |
Von den Paketen verwendetes Adressierungsschema, entweder IPv4 oder IPv6. |
Ein Meter verfolgt die Übertragungsrate von Datenströmen auf Paketbasis. Der Meter bestimmt, ob das Paket den konfigurierten Parametern entspricht. Das Metermodul bestimmt die nächste Aktion für ein Paket aus einer Reihe von Aktionen. Diese Aktion hängt von der Paketgröße, den konfigurierten Parametern und der Datenflussrate ab.
Der Meter besteht aus Metermodulen, tokenmt und tswtclmt, die Sie in der IPQoS-Konfigurationsdatei definieren. Sie können entweder ein Modul oder beide für eine Klasse konfigurieren.
Bei der Konfiguration eines Metermoduls können Sie zwei Parameter für die Rate definieren:
committed-rate – Definiert die akzeptable Übertragungsrate in Bit pro Sekunde für Pakete einer bestimmten Klasse
peak-rate – Definiert die maximale Übertragungsrate im Bit pro Sekunde, die für Pakete einer bestimmten Klasse zulässig ist
Eine Messaktion an einem Paket kann zu einem von drei möglichen Ergebnissen führen:
grün – Das Paket führt dazu, dass der Datenfluss innerhalb der committed rate bleibt.
gelb – Das Paket führt dazu, dass der Datenfluss die committed rate übersteigt, aber unter der peak rate bleibt.
rot – Das Paket führt dazu, dass der Datenfluss die peak rate übersteigt.
Sie können jedes Ergebnis mit anderen Aktionen in der IPQoS-Konfigurationsdatei konfigurieren. Committed rate und peak rate werden im folgenden Abschnitt erklärt.
Das tokenmt-Modul verwendet token buckets, um die Übertragungsrate eines Datenflusses zu messen. Sie können tokenmt als Single-Rate- oder Two-Rate-Meter konfigurieren. Eine tokenmt-Aktionsinstanz verwaltet zwei Token Buckets, die feststellen, ob der Verkehrswert den konfigurierten Parametern entspricht.
Wie IPQoS das Token Meter-Paradigma umsetzt wird in der Manpage tokenmt(7ipp) beschrieben. Allgemeine Informationen zu Token Buckets finden Sie in Kalevi Kilkki's Differentiated Services for the Internet und auf verschiedenen anderen Websites.
Die Konfigurationsparameter für tokenmt sind:
committed_rate – Legt die committed rate für den Datenfluss in Bit pro Sekunde fest.
committed_burst – Legt die committed burst-Größe in Bit fest. Der committed_burst-Parameter legt fest, wie viele abgehende Pakete einer bestimmten Klasse bei committed rate in das Netzwerk passieren können.
peak_rate – Legt die peak rate in Bit pro Sekunde fest.
peak_burst – Legt die peak oder excess burst-Größe in Bit fest. Der peak_burst-Parameter gewährt einer Verkehrsklasse eine peak-burst-Größe, die die committed rate übersteigt.
color_aware – Aktiviert den Erkennungsmodus für tokenmt.
color_map – Definiert ein Array mit ganzen Zahlen, das DSCP-Werte den Farben grün, gelb und rot zuordnet.
Um tokenmt als einen Single-Rate Meter zu konfigurieren, geben Sie keinen peak_rate-Parameter für tokenmt in der IPQoS-Konfigurationsdatei an. Damit eine Single-Rate tokenmt-Instanz das Ergebnis rot, grün oder gelb liefert, müssen Sie den peak_burst-Parameter angeben. Wenn Sie den peak_burst-Parameter nicht verwenden, kann tokenmt als Ergebnis nur rot oder grün liefern. Ein Beispiel für eine Single-Rate tokenmt mit zwei Ergebnissen finden Sie in Beispiel 34–3.
Wenn tokenmt als Single-Rate Meter eingesetzt wird, ist der peak_burst-Parameter tatsächlich die excess burst-Größe. committed_rate und entweder committed_burst oder peak_burst müssen positive ganze Zahlen ungleich Null sein.
Um tokenmt als einen Two-Rate Meter zu konfigurieren, geben Sie einen peak_rate-Parameter für tokenmt in der IPQoS-Konfigurationsdatei an. Eine Two-Rate tokenmt-Instanz hat immer drei mögliche Ergebnisse: rot, gelb und grün. Die Parameter committed_rate, committed_burst und peak_burst müssen positive ganze Zahlen ungleich Null sein.
Damit eine Two-Rate tokenmt-Instanz Farben erkennen kann, müssen Sie zwei Parameter für die „Farberkennung„ spezifisch hinzufügen. Im Folgenden finden Sie ein Beispiel für eine action-Anweisung, die tokenmt zur Erkennung von Farben konfiguriert.
action { module tokenmt name meter1 params { committed_rate 4000000 peak_rate 8000000 committed_burst 4000000 peak_burst 8000000 global_stats true red_action_name continue yellow_action_name continue green_action_name continue color_aware true color_map {0-20,22:GREEN;21,23-42:RED;43-63:YELLOW} } }
Sie aktivieren die Farberkennung, indem Sie den color_aware-Parameter auf true setzen. Als farbempfindliches Metermodul geht tokenmt davon aus, dass das Paket bereits in einer früheren tokenmt-Aktion mit rot, gelb oder grün markiert wurde. Ein farbbewusstes tokenmt-Modul wertet ein Paket aus, indem es den DSCP im Paket-Header zusätzlich zu den Parameter für ein Two-Rate Meter verwendet.
Der color_map-Parameter enthält ein Array, in dem der DSCP im Paket-Header zugeordnet ist. Betrachten Sie das folgende color_map-Array:
color_map {0-20,22:GREEN;21,23-42:RED;43-63:YELLOW}
Pakete mit einem DSCP zwischen 0 und 20 sowie 22 werden „grün“ zugeordnet. Pakete mit einem DSCP von 21 und zwischen 23 und 42 sind „rot“ zugeordnet. Pakete mit einem DSCP zwischen 43 und 63 sind„gelb“ zugeordnet. tokenmt unterhält eine Standard-Farbkarte. Sie können die Standardeinstellungen jedoch Ihren Anforderungen entsprechend mit den color_map-Parameter anpassen.
In den color_action_name-Parameter können Sie continue angeben, um die Verarbeitung des Pakets abzuschließen. Oder Sie fügen ein Argument hinzu, um das Paket an eine Marker-Aktion zu senden, beispielsweise an yellow_action_name mark22.
Das Metermodul tswtclmt schätzt die durchschnittliche Bandbreite einer Verkehrsklasse mithilfe eines Zeit-basierten Rate Estimator. tswtclmt wird immer als Three-Outcome Meter eingesetzt. Der Rate Estimator bietet eine Schätzung des eingehenden Datenverkehrs. Diese Rate muss etwa der laufenden durchschnittlichen Bandbreite des Datenflusses über eine bestimmte Zeit, dem Zeitfenster entsprechen. Der Rate Estimation-Algorithmus stammt aus RFC 2859, A Time Sliding Window Three Colour Marker.
Zur Konfiguration von tswtclmt verwenden Sie die folgenden Parameter:
committed_rate – Legt die Committed Rate in Bit pro Sekunde fest
peak_rate – Legt die Peak Rate in Bit pro Sekunde fest
window – Definiert das Zeitfenster in Millisekunden, über das der Verlauf der durchschnittlichen Bandbreite erfasst wird
Technische Informationen zu tswtclmt finden Sie in der Manpage tswtclmt(7ipp) Allgemeine Information zu Rate Shapern, die ähnlich zu tswtclmt sind, finden Sie unter RFC 2963, A Rate Adaptive Shaper for Differentiated Services.
IPQoS umfasst die zwei Markermodule dscpmk und dlcosmk. In diesem Abschnitt wird beschrieben, wie Sie mit den beiden Markern arbeiten. Normalerweise verwenden Sie dscpmk, da dlcosmk nur für IPQoS-Systeme mit VLAN-Geräten zur Verfügung steht.
Technische Informationen zu dscpmk finden Sie in der Manpage dscpmk(7ipp). Technische Informationen zu dlcosmk finden Sie in der Manpage dlcosmk(7ipp).
Der Marker empfängt Verkehrswerte, nachdem die Ströme von einem Classifier oder den Metermodulen verarbeitet wurden. Der Marker makiert den Datenverkehr mit einem Weiterleitungsverhalten. Dieses Weiterleitungsverhalten ist die Aktion, die an Datenströmen vorgenommen wird, nachdem die Datenströme das IPQoS-System verlassen haben. Das Weiterleitungsverhalten für eine Datenverkehrsklasse ist in dem Per-Hop-Behavior (PHB) festgelegt. Das PHB weist einer Datenverkehrsklasse eine bestimmte Priorität zu, die den Rang der Datenstöme einer Klasse gegenüber anderen Verkehrsklassen anzeigt. PHBs überwacht nur das Weiterleitungsverhalten in dem an das IPQoS-System angrenzenden Netzwerk. Weitere Informationen zu PHBs finden Sie unter Per-Hop-Behaviors.
Paketweiterleitung ist der Prozess des Sendens von Datenverkehr einer bestimmten Klasse an das nächste Ziel in einem Netzwerk. Bei einem Host wie einem IPQoS-System wird ein Paket vom Host an den lokalen Netzwerkdatenfluss weitergeleitet. Bei einem Diffserv-Router wird ein Paket von lokalen Netzwerk an den nächsten Hop des Routers weitergeleitet.
Der Marker markiert das DS-Feld im Paket-Header mit einem bekannten Weiterleitungsverhalten, das in der IPQoS-Konfigurationsdatei definiert ist. Danach leiten das IPQoS-System und nachfolgende Diffserv-konforme Systeme den Verkehr gemäß der Angabe im DS-Feld weiter, bis die Markierung geändert wird. Um ein PHB zuzuweisen, markiert das IPQoS-System einen Wert im DS-Feld des Paket-Headers. Dieser Wert wird als der Differentiated Services Codepoint (DSCP) bezeichnet. Die Diffserv-Architektur definiert zwei Arten von Weiterleitungsverhalten, EF und AF, die unterschiedliche DSCPs verwenden. Eine Einführung in DSCPs finden Sie unter DS Codepoint.
Das IPQoS-System liest den DSCP für den Verkehrswert ein und wertet die Prioritätsstufe des Datenflusses in Relation zu anderen abgehenden Verkehrswerten aus. Dann priorisiert das IPQoS-System alle gleichzeitig auftretenden Verkehrswerte und gibt jeden Strom nach seiner Priorität in das Netzwerk frei.
Der Diffserv-Router empfängt abgehende Verkehrswerte und liest das DS-Feld in den Paket-Headern ein. Anhand des DSCP kann der Router gleichzeitig auftretende Verkehrswerte priorisieren und planen. Dann leitet der Router jeden Datenfluss nach der Priorität weiter, die durch das PHB angegeben ist. Beachten Sie, dass das PHB nicht über den Grenzrouter des Netzwerk hinaus Anwendung findet, es sei denn, Diffserv-konforme Systeme in den nachfolgenden Hops erkennen das gleiche PHB.
Expedited forwarding (EF) garantiert, dass Pakete mit dem empfohlenen EF Codepoint 46 (101110) die beste Behandlung erfahren, die zur Freigabe in das Netzwerk verfügbar ist. Expedited Forwarding wird häufig mit einer Standleitung verglichen. Pakete mit dem Codepoint 46 (101110) erhalten eine garantierte bevorzugte Behandlung von allen Diffserv-Routern auf dem Weg zum Ziel der Pakete. Technische Informationen zum EF finden Sie in der RFC 2598, An Expedited Forwarding PHB.
Assured Forwarding (AF) bietet vier verschiedene Klassen für das Weiterleitungsverhalten, das Sie für den Marker angeben können. Die folgende Tabelle zeigt die Klassen, die drei drop-Prioritätsstufen, die mit jeder Klasse bereitgestellt werden, und die empfohlenen DSCPs, die jeder Prioritätsstufe zugeordnet sind. Jeder DSCP wird durch seinen AF-Wert, seinem dezimalen Wert und seinem binären Wert dargestellt.
Tabelle 37–2 Assured Forwarding Codepoints
|
Klasse 1 |
Klasse 2 |
Klasse 3 |
Klasse 4 |
---|---|---|---|---|
Low-Drop-Prioritätsstufe |
AF11 = 10 (001010) |
AF21 = 18 (010010) |
AF31 = 26 (011010) |
AF41 = 34 (100010) |
Medium-Drop- Prioritätsstufe |
AF12 = 12 (001100) |
AF22 = 20 (010100) |
AF32 = 28 (011100) |
AF42 = 36 (100100) |
High-Drop-Prioritätsstufe |
AF13 = 14 (001110) |
AF23 = 22 (010110) |
AF33 = 30 (011110) |
AF43 = 38 (100110) |
Jedes Diffserv-konforme System kann den AF Codepoint als Leitfaden zum Bereitstellen von differenzierten Weiterleitungsverhalten für verschiedene Verkehrsklassen verwenden.
Wenn diese Pakete einen Diffserv-Router erreichen, wertet der Router die Codepoints der Pakete zusammen mit den DSCPs anderen Datenverkehrs in der Warteschlange aus. Abhängig von der verfügbaren Bandbreite und den Prioritäten gemäß den Paket-DSCPs leitet der Router die Pakete dann entweder weiter oder wirft sie ab. Pakete, die mit dem EF PHB gekennzeichnet sind, erhalten eine garantierte Bandbreite im Vergleich zu Paketen, die mit den verschiedenen anderen AF PHBs gekennzeichnet sind.
Koordinieren Sie die Paketmarkierung zwischen den IPQoS-Systemen in Ihrem Netzwerk und dem Diffserv-Router, um sicherzustellen, dass die Pakete wie erwartet weitergeleitet werden. Angenommen, die IPQoS-Systeme in Ihrem Netzwerk markieren die Pakete mit den Codepoints AF21 (010010), AF13 (001110), AF43 (100110) und EF (101110). In diesem Fall müssen Sie die DSCPs AF21, AF13, AF43 und EF zur entsprechenden Datei auf dem Diffserv-Router hinzufügen.
Eine technische Erläuterung der AF-Codepoint-Tabelle finden Sie in der Norm RFC 2597. Die Router-Hersteller Cisco Systems und Juniper Networks veröffentlichen ausführliche Information zur AF PHB-Einstellung auf ihren Websites. Sie können diese Informationen sowohl zum Definieren von AF PHBs für IPQoS-Systeme als auch für Router verwenden. Darüber hinaus enthält die Dokumentation der Router-Hersteller Anweisungen zum Einrichten der DS Codepoints auf ihren Geräten.
Der DSCP ist 6 Bit lang. Das DS-Feld ist 1 Byte lang. Wenn Sie einen DSCP definieren, markiert der Marker die ersten sechs Bit des Paket-Headers mit dem DS Codepoint. Die verbleibenden zwei Bit bleiben unbenutzt.
Zum Definieren eines DSCP verwenden Sie den folgenden Parameter innerhalb einer Marker action-Anweisung:
dscp_map{0-63:DS_codepoint} |
Der dscp_map-Parameter ist ein Array mit 64 Elementen, das Sie mit dem (DSCP)-Wert füllen. dscp_map wird zum Zuordnen von eingehenden DSCPs zu abgehenden DSCPs verwendet, die vom dscpmk-Marker angewendet werden.
Sie müssen den DSCP-Wert für dscp_map im Dezimalformat angeben. Beispielsweise müssen Sie den EF Codepoint 101110 in den Dezimalwert 46 übertragen: dscp_map{0-63:46}. Bei AF Codepoints müssen Sie die verschiedenen Codepoints aus Tabelle 37–2 für die Verwendung durch dscp_map in die dezimale Notation übertragen.
Das Markermodul dlcosmk markiert ein Weiterleitungsverhalten im MAC-Header eines Datagramms. dlcosmk können Sie nur in einem IPQoS-System mit einer VLAN-Schnittstelle einsetzen.
dlcosmk fügt dem VLAN-Header vier Byte hinzu, die als VLAN-Tag bezeichnet werden. Das VLAN-Tag enthält einen 3-Bit-Wert für die Benutzerpriorität, der vom IEEE 801.D-Standard definiert wird. Diffserv-konforme Switches, die VLAN verstehen, können ein Benutzerpriorität-Feld in einem Datagramm lesen. Die 801.D-Benutzerprioritätswerte implementieren die Serviceklassen (CoS)-Markierungen, die kommerziellen Switches bekannt sind und von ihnen verstanden werden.
Sie verwenden die Benutzerprioritätswerte in der dlcosmk-Markeraktion, indem Sie die in der folgenden Tabelle aufgeführten Serviceklassenmarkierungen definieren.
Tabelle 37–3 801.D-Benutzerprioritätswerte
Serviceklasse |
Definition |
---|---|
0 |
Beste Leistung |
1 |
Hintergrund |
2 |
Spare |
3 |
Exzellente Leistung |
4 |
Kontrollierte Last |
5 |
Video weniger als 100 ms Latenz |
6 |
Video weniger als 10 ms Latenz |
7 |
Netzwerkkontrolle |
Weitere Informationen zu dlcosmk finden Sie in der Manpage dlcosmk(7ipp).
In diesem Abschnitt wird ein einfaches Netzwerkszenario vorgestellt, mit dem gezeigt wird, wie IPQoS auf Systemen mit VLAN-Geräten implementiert wird. Das Szenario umfasst zwei IPQoS-Systeme, machine1 und machine2, die über einen Switch miteinander verbunden sind. Das VLAN-Gerät in machine1 hat die IP-Adresse 10.10.8.1. Das VLAN-Gerät in machine2 hat die IP-Adresse 10.10.8.3.
Die folgende IPQoS-Konfigurationsdatei für machine1 zeigt eine einfache Lösung zum Markieren von Datenverkehr über den Switch an machine2.
fmt_version 1.0 action { module ipgpc name ipgpc.classify filter { name myfilter2 daddr 10.10.8.3 class myclass } class { name myclass next_action mark4 } } action { name mark4 module dlcosmk params { cos 4 next_action continue global_stats true } }
Bei dieser Konfiguration wird jeglicher Datenverkehr von machine1, der für das VLAN-Gerät in machine2 bestimmt ist, an den dlcosmk-Marker übergeben. Die Markeraktion mark4 weist dlcosmk an, Datagrammen der Klasse myclass mit einem CoS von 4 ein VLAN-Mark zuzuweisen. Der Benutzerprioritätswert 4 gibt an, dass der Switch zwischen beiden Rechnern Traffic-Flows vom Typ myclass kontrollierte Lastenweiterleitung von machine1 zuweisen soll.
Das IPQoS flowacct-Modul zeichnet Informationen zu den Verkehrswerten auf, ein Vorgang, der als Flow Accounting bezeichnet wird. Das Flow Accounting erzeugt Daten, die entweder zur Rechnungsstellung für Kunden oder zur Auswertung der Menge an Datenverkehr einer bestimmten Klasse verwendet werden können.
Das Flow Accounting ist optional. flowacct ist in der Regel das letzte Modul, auf das ein gemessener oder markierter Verkehrswert trifft, bevor er in den Netzwerkstrom freigegeben wird. Eine Darstellung der Position von flowacct im Diffserv-Modell finden Sie in Abbildung 32–1. Ausführliche technische Informationen zu flowacct finden Sie in der Manpage flowacct(7ipp).
Zum Aktivieren des Flow Accounting benötigen Sie die Oracle Solaris Accounting-Funktion exacct und den Befehl acctadm sowie flowacct. Allgemeine Schritte zum Einrichten des Flow Accounting finden Sie unter Einrichten des Flow Accounting (Übersicht der Schritte).
Das flowacct-Modul sammelt Informationen zu den Datenströmen in einer Flow-Tabelle mit Flow-Datensätzen. Jeder Eintrag in der Tabelle enthält einen Flow-Datensatz. Sie können eine Flow-Tabelle nicht anzeigen.
In der IPQoS-Konfigurationsdatei definieren Sie die folgenden flowacct-Parameter, um die Flow-Datensätze zu messen und in die Flow-Tabelle zu schreiben:
timer – Definiert ein Zeitintervall in Millisekunden, nach dem Datenströmen mit einer Zeitüberschreitung aus der Flow-Tabelle entfernt und in eine Datei geschrieben werden, die von acctadm erstellt wird.
timeout – Definiert ein Zeitintervall in Millisekunden, mit dem festgelegt wird, wie lange ein Paketdatenfluss inaktiv sein muss bis eine Zeitüberschreitung eintritt
Sie können timer und timeout mit unterschiedlichen Werten konfigurieren.
max_limit – Legt einen oberen Grenzwert für die Anzahl an Flow-Datensätze fest, die in der Flow-Tabelle gespeichert werden können
Ein Beispiel für die Anwendung von flowacct-Parameter in der IPQoS-Konfigurationsdatei finden Sie unter So konfigurieren Sie die Verkehrssteuerung in der IPQoS-Konfigurationsdatei.
Das flowacct-Modul verwaltet eine Flow-Tabelle, in der alle Paket-Datenströme aufgezeichnet werden, die von einer flowacct-Instanz erfasst werden. Ein Datenfluss wird durch die folgenden Parameter gekennzeichnet, die in dem flowacct 8–Tuple enthalten sind:
Quelladresse
Zieladresse
Ursprungs-Port
Ziel-Port
DSCP
Benutzer-ID
Projekt-ID
Protokollnummer
Wenn alle Parameter des 8–Tuple für einen Datenfluss gleich bleiben, enthält die Flow-Tabelle nur einen einzigen Eintrag. Der max_limit-Parameter legt die Anzahl an Einträgen fest, die eine Flow-Tabelle aufnehmen kann.
Die Flow-Tabelle wird in dem Intervall gescannt, das für den timer-Parameter in der IPQoS-Konfigurationsdatei angegeben ist. Die Standardeinstellung beträgt 15 Sekunden. Ein Datenfluss erfährt einen „Timeout“, wenn das IPQoS-System mindestens über das in der IPQoS-Konfigurationsdatei festgelegte timeout-Intervall keine Pakete dieses Datenflusses erfasst. Das standardmäßige Timeout-Intervall beträgt 60 Sekunden. Einträge, für die ein Timeout eingetreten ist, werden in die zuvor mit dem Befehl acctadm erstellte Accounting-Datei geschrieben.
Ein flowacct-Datensatz enthält die in der folgenden Tabelle beschriebenen Attribute.
Tabelle 37–4 Attribute eines flowacct-Datensatzes
Attributname |
Attributinhalt |
Typ |
---|---|---|
src-addr-Adresstyp |
Ursprungsadresse des Absenders. Adresstyp ist entweder v4 für IPv4 oder v6 für IPv6, je nach Angabe in der IPQoS-Konfigurationsdatei. |
Basic |
dest-addr-Adresstyp |
Zieladresse der Pakete. Adresstyp ist entweder v4 für IPv4 oder v6 für IPv6, je nach Angabe in der IPQoS-Konfigurationsdatei. |
Basic |
src-port |
Ursprungs-Port, von dem Verkehrsfluss stammt. |
Basic |
dest-port |
Ziel-Port, für den dieser Verkehrsfluss bestimmt ist. |
Basic |
protocol |
Protokollnummern des Verkehrsflusses. |
Basic |
total-packets |
Anzahl der Pakete im Verkehrsfluss. |
Basic |
total-bytes |
Anzahl der Byte im Verkehrsfluss. |
Basic |
Aktionsname |
Name der flowacct-Aktion, die diesen Verkehrsfluss aufgezeichnet hat. |
Basic |
creation-time |
Uhrzeit, wann das erste Paket des Verkehrsflusses von flowacct erfasst wurde. |
Nur Extended |
last-seen |
Uhrzeit, wann zuletzt ein Paket des Verkehrsflusses erfasst wurde. |
Nur Extended |
diffserv-field |
DSCP in den Headern abgehender Pakete im Verkehrsfluss. |
Nur Extended |
user |
Entweder eine UNIX-Benutzer-ID oder ein Benutzername, der von der Anwendung bezogen wird. |
Nur Extended |
projid |
Projekt-ID, die von der Anwendung bezogen wird. |
Nur Extended |
Mit dem Befehl acctadm können Sie eine Datei erstellen, in der die verschiedenen vom flowacct-Modul erzeugten Flow-Datensätze gespeichert werden. acctadm arbeitet mit der Extended Accounting-Funktion zusammen. Technische Informationen zu acctadm finden Sie in der Manpage acctadm(1M).
Das flowacct-Modul überwacht Verkehrsflüsse und füllt die Flow-Tabelle mit Flow-Datensätzen. Dann wertet flowacct seine Parameter und Attribute in dem von timer vorgegebenen Intervall aus. Wenn ein Paket über die Werte last_seen plus timeout nicht erfasst wird, tritt ein Timeout für das Paket auf. Alle Einträge mit einem Timeout werden aus der Flow-Tabelle gelöscht. Diese Einträge werden dann in dem durch den Parameter timer vorgegebenen Intervall in die Accounting-Datei geschrieben.
Zum Aufrufen von acctadm für das flowacct-Modul verwenden Sie die folgende Befehlssyntax:
acctadm -e file-type -f filename flow
Ruft acctadm mit der Option -e auf. Das -e gibt an, dass eine Ressourcenliste folgt.
Gibt die zu erfassenden Attribute an. Dateityp muss durch entweder basic oder extended ersetzt werden. Eine Liste der Attribute für jeden Dateityp finden Sie in Tabelle 37–4.
Erstellt die Datei Dateiname, in der die Flow-Datensätze gespeichert werden.
Gibt an, dass acctadm mit IPQoS ausgeführt wird.
In diesem Abschnitt finden Sie Informationen zu den einzelnen Teilen der IPQoS-Konfigurationsdatei. Die beim Booten aktivierte IPQoS-Richtlinie ist in der Datei /etc/inet/ipqosinit.conf gespeichert. Obwohl Sie diese Datei bearbeiten können, sollten Sie für ein neues IPQoS-System eine Konfigurationsdatei mit einem anderen Namen erstellen. Aufgaben zum Übernehmen und Debuggen einer IPQoS-Konfiguration finden Sie in Kapitel 34Erstellen der IPQoS-Konfigurationsdatei (Aufgaben).
Die Syntax der IPQoS-Konfigurationsdatei ist in Beispiel 37–3 gezeigt. Das Beispiel verwendet die folgenden typografischen Konventionen:
Computerstil-Typ – Syntaktische Informationen, mit denen Teile der Konfigurationsdatei beschrieben werden. Sie geben keinen Text ein, der im Computerstil-Typ angezeigt wird.
Fettdruck – Literaltext, den Sie in die IPQoS-Konfigurationsdatei eingeben müssen. Beispielsweise müssen Sie die IPQoS-Konfigurationsdatei stets mit fmt_version beginnen.
Kursivdruck – Variablentext, den Sie durch beschreibende Informationen zu Ihrer Konfiguration ersetzen. Beispielsweise müssen Sie stets action-name oder module-name durch Informationen ersetzen, die für Ihre Konfiguration gelten.
file_format_version ::= fmt_version version action_clause ::= action { name action-name module module-name params-clause | "" cf-clauses } action_name ::= string module_name ::= ipgpc | dlcosmk | dscpmk | tswtclmt | tokenmt | flowacct params_clause ::= params { parameters params-stats | "" } parameters ::= prm-name-value parameters | "" prm_name_value ::= param-name param-value params_stats ::= global-stats boolean cf_clauses ::= class-clause cf-clauses | filter-clause cf-clauses | "" class_clause ::= class { name class-name next_action next-action-name class-stats | "" } class_name ::= string next_action_name ::= string class_stats ::= enable_stats boolean boolean ::= TRUE | FALSE filter_clause ::= filter { name filter-name class class–name parameters } filter_name ::= string
Im Folgenden werden die wichtigsten Teile der IPQoS-Konfigurationsdatei beschrieben.
Mit action-Anweisungen rufen Sie die verschiedenen IPQoS-Module auf, die unter IPQoS-Architektur und das Diffserv-Modell beschrieben sind.
Achten Sie darauf, dass eine IPQoS-Konfigurationsdatei immer mit der Versionsnummer beginnen muss. Dann müssen Sie die folgende action-Anweisung hinzufügen, um den Classifier aufzurufen:
fmt_version 1.0 action { module ipgpc name ipgpc.classify } |
Nach der Classifier action-Anweisung geben Sie eine params-Klausel oder eine class-Klausel ein.
Verwenden Sie für alle action-Anweisungen die folgende Syntax:
action { name action-name module module-name params-clause | "" cf-clauses }
Weist der Aktion einen Namen zu.
Identifiziert das aufzurufende IPQoS, bei dem es sich um eines der Module in Tabelle 37–5 handeln muss.
Können Parameter für den zu verarbeitenden Classifier sein, z. B. globale Statistiken oder die nächste zu verarbeitende Aktion.
Eine Reihe von null oder mehr class- oder filter-Klauseln
Die Moduldefinition gibt an, welches Modul in den Parametern der action-Anweisung verarbeitet werden soll. Die IPQoS-Konfigurationsdatei kann die folgenden Module enthalten.
Tabelle 37–5 IPQoS-Module
Modulname |
Definition |
---|---|
ipgpc |
IP-Classifier |
dscpmk |
Zum Erstellen von DSCPs in IP-Paketen zu verwendender Marker |
dlcosmk |
Mit VLAN-Geräten zu verwendender Marker |
tokenmt |
Token Bucket-Metermodul |
tswtclmt |
Time-Sliding Window-Metermodul |
flowacct |
Flow Accounting-Modul |
Sie definieren eine class-Klausel für jede Verkehrsklasse.
Zum Definieren der verbleibenden Klassen in der IPQoS-Konfiguration verwenden Sie die folgende Syntax:
class { name class-name next_action next-action-name } |
Um die Erfassung von Statistiken einer bestimmten Klasse zu aktivieren, müssen Sie zunächst die globalen Statistiken in der ipgpc.classify action-Anweisung aktivieren. Weitere Informationen hierzu finden Sie unter action-Anweisung.
Mit der enable_stats TRUE-Anweisung können Sie Erfassung von Statistiken für eine Klasse jederzeit aktivieren. Wenn Sie keine Statistiken für eine Klasse erfassen möchten, können Sie die enable_stats FALSE-Anweisung verwenden. Alternativ löschen Sie die enable_stats-Anweisung.
Verkehr in einem IPQoS-konformen Netzwerk, den Sie nicht speziell definieren, wird der Standardklasse zugeordnet.
Filter bestehen aus Selektoren, die Verkehrswerte in Klassen gruppieren. Diese Selektoren definieren die Kriterien, die an dem Verkehr einer in der class-Klausel erstellten Klasse angewendet werden. Wenn ein Paket allen Selektoren des Filters mit der höchsten Priorität entspricht, wird es als ein Mitglied dieser Filterklasse betrachtet. Eine vollständige Liste der Selektoren, die Sie mit dem ipgpc-Classifier verwenden können, finden Sie unter Tabelle 37–1.
Die Filter in der IPQoS-Konfigurationsdatei werden mithilfe einer filter-Klausel definiert, die folgende Syntax aufweist:
filter { name filter-name class class-name parameters (selectors) }
Die params-Klausel enthält Verarbeitungsanweisungen für das in der action-Anweisung definierte Modul. Für die params-Klausel verwenden Sie die folgende Syntax:
params { parameters params-stats | "" } |
In der params-Klausel verwenden Sie Parameter, die an dem Modul angewendet werden können.
Der Wert params-Statistiken in der params muss entweder global_stats TRUE oder global_stats FALSE lauten. Die Anweisung global_stats TRUE aktiviert die Erfassung von Statistiken im UNIX-Stil für die action-Anweisung, in der die globalen Statistiken aufgerufen werden. Statistiken können Sie mithilfe des Befehls kstat anzeigen. Sie müssen die action-Anweisung aktivieren, bevor Sie die Erfassung von Statistiken pro Klasse aktivieren können.
Mit dem Serviceprogramm ipqosconf können Sie die IPQoS-Konfigurationsdatei einlesen und die IPQoS-Module im UNIX-Kernel konfigurieren. ipqosconf führt die folgenden Aktionen aus:
Übernimmt die Konfigurationsdatei für die IPQoS-Kernelmodule (ipqosconf -a Dateiname)
Listet die IPQoS-Konfigurationsdatei auf, die derzeit im Kernel enthalten ist (ipqosconf -l)
Stellt sicher, dass die aktuelle IPQoS-Konfiguration eingelesen und bei jedem Neustart des Computers angewendet wird (ipqosconf -c)
Leert die aktuellen IPQoS-Kernelmodule (ipqosconf -f)
Technische Informationen finden Sie in der Manpage ipqosconf(1M).