-
TECHNISCHES GEBIET
-
Die
vorliegende Offenbarung betrifft die Netzwerkpaketklassifizierung
durch einen bereichsbasierten Mehrfeld-Korrelations-Paketklassifizierer
mit logorithmischem Zeitverhalten.
-
ALLGEMEINER STAND DER TECHNIK
-
Mit
Netzwerkeinrichtungen können
an durch diese fließenden
Datenpaketen Aktionen durchgeführt werden.
Die durchgeführten
Aktionen können
mit der Art von durch die Einrichtung fließendem Datenverkehr und den
in der Einrichtung eingerichteten Richtlinien variieren. Zum Beispiel
kann die Einrichtung eine Richtlinie aufweisen, allen Verkehr aus
einem bestimmten Subnetz mit hoher Priorität zu markieren, spezifische
Ströme
durch einen bestimmten MPLS-Tunnel (Multi-protocol Label Switch)
oder ein VPN (Virtual Private Network) zu senden oder für jeden
Strom Statistiken für
Buchhaltungs-/Gebührenberechnungszwecke
zu sammeln.
-
Paketklassifizierer
dienen zur Bestimmung der von der Netzwerkeinrichtung angewandten
Richtlinie. Die auf das Paket angewandten Richtlinien können zum
Beispiel aus einer Durchsuchung der Felder in dem Paketkopfteil
bestimmt werden. Die (auch als „Filter" bekannten) Paketklassifizierer für die Richtlinien
können jedesmal,
wenn ein Paket an der Einrichtung ankommt, nach Übereinstimmungen mit dem Paketkopfteilfeld durchsucht
werden.
-
DE 100 58 443 A1 offenbart
eine Umwandlung einer Original-Regel-Datenbank zum Speichern in
das Format einer Regel-Abbildungstabelle. Die Regel-Abbildungstabelle
wird dadurch gebildet, daß ein
Eingangsschlüssel
in eine Mehrzahl von Unterschlüssel
aufgeteilt wird und dann nacheinander der Inhalt jedes Unterschlüssels mit
dem Unterschlüsselfeld
jeder Regel verglichen wird.
-
Aus
der Druckschrift
WO
02/15488 A1 ist bekannt, zur Paket-Klassifikation mehrere
Regeln auf unterschiedliche Blöcke
anzuwenden und die Ergebnisse mit einer AND-Verknüpfung auszuwerten.
-
US 6,289,013 B1 beschreibt
einen Paket-Filter, der die Ergebnisse mehrerer Paketfeldüberprüfungen mit
AND verknüpft.
-
EP 1 227 630 A2 offenbart
ein Verfahren zum Kreieren einer dynamisch aktualisierbaren und
suchbaren Datenbank für
Paket-Klassifizierung, wobei Iterationen sowie hierarchische Regelunterteilungen
verwendet werden.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Es
ist daher Aufgabe der Erfindung, ein effizienteres und schnelleres
Suchverfahren im Gebiet der Netzwerkpaket-Klassifizierung bereitzustellen.
-
Die
Aufgabe wird erfindungsgemäß durch
ein Verfahren nach Patentanspruch 1, einen Artikel nach Anspruch
9, eine Vorrichtung nach Anspruch 15 und ein System nach Anspruch
21 gelöst.
Weiterbildungen sind in den abhängigen
Patentansprüchen
angegeben.
-
1 ist
ein Beispiel für
ein Netzwerk zum Senden und Empfangen von Datenpaketen.
-
2 ist
eine beispielhafte Tabelle von Richtlinien und assoziierten Datenpaket-Kopfteilfeldfiltern
-
3 ist
ein Quellenadressen-Filterbaumdiagramm für die Tabelle von 2.
-
4 ist
ein Zieladressen-Filterbaumdiagramm für die Tabelle von 2.
-
5 ist
ein Quellenport-Filterbaumdiagramm für die Tabelle von 2.
-
6 ist
ein Flußdiagramm
für einen
Prozeß zur
Bestimmung der mit einem Paketkopfteilfeld assoziierten Richtlinien.
-
7 ist
ein Flußdiagramm
eines Prozesses zur Bestimmung der Datenpaketklassifikation.
-
8 ist
eine Tabelle, die Filterkennungen darstellt.
-
9 zeigt
die Tabelle von 8 nach Filter-ID sortiert.
-
10 zeigt
die Tabelle von 8 nach Datenpaketklassifizierer-Feldeinträgen sortiert.
-
11 zeigt
die Tabelle von 10 nach Filter-ID sortiert.
-
12 ist
ein Flußdiagramm
eines Prozesses zum Assoziieren zweier Richtlinien-ID-Mengen mit jedem
Knoten eines Filterbaums.
-
13 ist
ein Quellenport-Filterbaumdiagramm für die Tabelle von 2 mit
zwei mit jedem Baumknoten assoziierten Richtlinien-ID-Mengen.
-
AUSFÜHRLICHE BESCHREIBUNG
-
1 zeigt
ein Netzwerk 10, mit dem Informationspakete zwischen den
Knoten 12, 14 und 16 weitergeleitet werden
können.
Obwohl nur drei Knoten gezeigt sind, kann das Netzwerk 10 viele
Knoten koppeln. Die Knoten 12, 14 und 16 enthalten
die Netzwerkeinrichtungen 18, 20 bzw. 22.
Der Knoten 16 zeigt beispielsweise, daß ein Knoten auch einen Prozessor 24 und
Speicher 26 enthalten kann. Die Netzwerkeinrichtung 22 kann in
Verbindung mit dem Prozessor 24 und Speicher 26 zur
Bereitstellung von Netzwerkdiensten an den an dem Knoten 16 empfangenen
Informationspaketen verwendet werden. Datenpakete können zwischen
Knoten in dem Netzwerk transferiert werden.
-
Ein
von einem Knoten empfangenes Datenpaket kann ein Datenpaketkopfteilfeld
enthalten, um eine oder mehrere Eigenschaften der Daten anzuzeigen.
Zum Beispiel kann der Kopfteil eine Adresse angeben, von der das
Datenpaket gesendet wurde, eine Adresse, an die das Datenpaket gesendet
werden soll, eine an allen Daten oder einem Teil der Daten durchzuführende Operation
usw.
-
Mit
Netzwerkknoten sind Richtlinien assoziiert. Die auf Richtlinien
basierende Vernetzung ist die Verwaltung eines Netzwerks dergestalt,
daß verschiedene
Arten von Verkehr (z. B. Daten, Sprache und Video) die Priorität der Verfügbarkeit
und Bandbreite erhalten, die notwendig ist, um die Benutzer des
Netzwerks effektiv zu versorgen.
-
Die
Richtlinien können
in einem Richtlinienrepositorium, wie zum Beispiel einem Speicher 26,
gespeichert werden. Die Netzwerkeinrichtung kann die Datenpaket-Kopfteilfeldeinträge zu einem
Prozessor 24 übermitteln.
Der Prozessor 24 operiert an den Einträgen, um das Datenpaket im Hinblick
auf die für
das Datenpaket geltenden Richtlinien zu klassifizieren. Die geltenden
Richtlinien können
aus dem Richtlinienrepositorium in dem Speicher 26 von
dem Prozessor abgerufen werden.
-
Die
Richtlinien, die für
ein bestimmtes Datenpaket gelten, können aus den Einträgen in den
Datenpaket-Kopfteilfeldern bestimmt werden. Eine Richtlinie kann
in einem konkreten Beispiel für
alle Datenpakete gelten, die von einer bestimmten Quellenadresse
stammen. Andere Richtlinien können
auf Bereichen basieren. „Auf
Bereichen basierende" Richtlinien
sind Richtlinien, die für
Datenpakete gelten, die Kopfteilfeldeinträge aufweisen, die in einen
Bereich von Werten fallen. Zum Beispiel kann eine Richtlinie für alle Datenpakete
gelten, die aus einer Quelle mit einer Adresse innerhalb eines Bereichs
von Adressen stammen. Die Richtlinien weisen in dem konkreten Beispiel
eine Quellenadresse oder einen Bereich von Adressen auf, um die
Datenpakete zu filtern und zu bestimmen, für welche Pakete eine Richtlinie
gilt.
-
Eine
Implementierung der Paketklassifizierung verwendet einen Rot-Schwarz-Ausgleichsbinärbaum, der
für jeden
Filterelementtyp erzeugt wird, der einem bestimmten Datenpaket-Kopfteilfeld
entspricht. 2 zeigt eine konkrete Implementierung
mit einer Menge von Richtlinien, einer Richtlinien-ID (Richtlinien-Kennung) 202,
assoziiert mit einer 3-Tupel-Paketklassifizierung
aus Quellenadresse 204, Zieladresse 206 und Quellenport 208. 3, 4 und 5 zeigen
in Baumform die Quellenadresse, Zieladresse bzw. Quellenportfilter
der in 2 dargestellten Richtlinien. Die Anzahl der in
der Klassifizierung verwendeten Paket-Kopfteilfelder ist nicht auf die spezifischen
dargestellten Felder beschränkt.
-
Als
ein Beispiel für
die Baumkonstruktion zeigt 3 einen
Quellenadressenbaum 300 der Quellenadressen 204,
die mit den Richtlinien-IDs 202 von 2 assoziiert
sind. Jeder der Filterknoten 310–320 ist eine Adresse
aus den Quellenadressen 204 von 2. Die Filterknoten 310–320 sind
in der Reihenfolge ihres Werts angeordnet. In dem dargestellten
Baum werden die Filterknoten in aufsteigender Reihenfolge ihres Adressenwerts
von links nach rechts angeordnet. Die Filterknoten können jedoch
in anderen hierarchischen Reihenfolgen angeordnet werden. Die mit
jedem der Filterknoten 310–320 assoziierten
Richtlinien sind in Referenzrichtlinienkästen 322–332 dargestellt.
-
Jeder
der Referenzrichtlinienkästen 322–332 hält einen
Verweis auf die Liste von Richtlinien, die mit dem Filterknoten übereinstimmen.
Mit Bezug auf 2 fällt zum Beispiel eine Paketkopfteil-Quellenadresse von
7.8.9.10 in den Bereich von Quellenadressen, der die durch die Richtlinien-IDs
P1, P2, P3 und P5 identifizierten Richtlinien impliziert. Diese
Richtlinien-IDs
sind in 3, Referenzrichtlinienkasten 326,
dargestellt. Die übrigen
Referenzrichtlinienkästen 322, 324 und 328–332 werden ähnlich bestimmt.
Die Referenzrichtlinienkästen 410–420 für den Zieladressenbaum 400 von 4 und
die Referenzrichtlinienkästen 510–516 für den Quellenportbaum 500 von 5 können auf
analoge Weise bestimmt werden.
-
Die
Richtlinie mit der Richtlinien-ID von P3 in 2 wird auf
Pakete angewandt, die die folgenden Einträge in den Kopfteilfeldern aufweisen:
(1) eine Quellenadresse im Bereich von Adressen von 1.2.3.4 bis 10.10.10.10,
(2) eine Zieladresse im Bereich von Adressen von 11.12.13.10 bis
11.12.13.50 und (3) einen Quellenport von 3000.
-
6 zeigt
einen Prozeß zur
Bestimmung der mit einem Paketkopfteil assoziierten Richtlinien.
Der Prozeß kann
als ein Programm implementiert werden, das durch einen Prozessor
oder unter Verwendung anderer Schaltungen ausführbar ist. In 602 wird
ein Baum ausgewählt.
In 604 wird der gewählte
Baum nach dem mit dem Wert in dem Paketkopfteil übereinstimmenden Wert durchsucht.
Wenn ein Filterknoten mit einem mit dem Wert in dem Paketkopfteil übereinstimmenden
Wert gefunden wird (606), werden die mit dem gefundenen Filterknoten
assoziierten Referenzrichtlinien bestimmt (608) und das
Programm schreitet zu 614 voran.
-
Wenn
in 606 keine Übereinstimmung
für den
Paketkopfteilwert gefunden wird, werden sowohl der Filterknoten
mit einem nächstniedrigeren
Wert und der Filterknoten mit einem nächsthöheren Wert als der Paketkopfteilwert
ausgewählt
(610). Ein nicht existierender Knoten für höher oder niedriger wird als
eine Nullmenge betrachtet. Die Liste von Übereinstimmungen für diesen
Paketkopfteilwert ist die Schnittmenge der mit diesen Filterknoten
assoziierten Richtlinien und wird in 612 bestimmt.
-
Die
Blöcke 602–612 werden
wiederholt, bis die Richtlinienlisten aus jedem Baum erhalten sind
(614). Eine Schnittmenge aller erhaltenen Listen liefert
die Menge von Richtlinien, die mit den Datenpaketen übereinstimmen
(616).
-
In
einem veranschaulichenden Beispiel kann man mit den Bäumen von 3–5 die
Menge von Richtlinien bestimmen, die mit einem Paket mit einer Quellenadresse
5.6.7.8, einer Zieladresse 11.12.13.40 und einem Quellenport 3000 übereinstimmen.
-
Mit
Bezug auf 3 besitzt der Quellenadressenbaum
einen Filterknoten 312, der eine Übereinstimmung für die Paketkopfteil-Quellenadresse
5.6.7.8 darstellt. Die erhaltene Menge von Richtlinien ist {P1,
P3, P5}, wie in dem Referenzrichtlinienkasten 324 dargestellt.
-
Mit
Bezug auf 4 besitzt der Zieladressenbaum
keinen Filterknoten, der eine Übereinstimmung
für die
Paketkopfteil-Zieladresse 11.12.13.40 darstellt. Der Filterknoten
mit einem Wert gerade unterhalb dieser Adresse ist der Filterknoten 406,
der den Wert 11.12.13.10 aufweist. Die Menge von für den Filterknoten 406 erhaltenen
Richtlinien ist {P1, P3}, wie in dem Referenzrichtlinienkasten 414 dargestellt.
Der Filterknoten mit einem Wert gerade oberhalb der Paketkopfteil-Zieladresse
ist der Filterknoten 408, der den Wert 11.12.13.50 aufweist.
Die Menge der für
den Filterknoten 408 erhaltenen Richtlinien ist {P3}, wie
in dem Referenzrichtlinienkasten 416 dargestellt. Die Schnittmenge
der beiden erhaltenen Richtlinienmengen ist
{P1, P3} ∩ {P3} = {P3}
-
Dies
ist die Menge der mit der Zieladresse 11.12.13.40 dieses Beispiels
assoziierten Richtlinien.
-
Mit
Bezug auf 5 besitzt der Quellenportbaum
einen Filterknoten 508, der eine Übereinstimmung für die Paketkopfteil-Quellenportadresse
3000 darstellt. Die erhaltene Menge von Richtlinien ist {P3, P4,
P5}, wie in dem Referenzrichtlinienkasten 514 dargestellt.
-
Die
Schnittmenge von Richtlinien, die aus allen Bäumen erhalten wird, ist
{P1,
P3, P5} ∩ {P3} ∩ {P3, P4,
P5} = {P3}
-
Das
Ergebnis ist {P3} wie die Richtlinien-ID-Übereinstimmung für dieses
Paket.
-
Bei
einer anderen Implementierung zeigt 12 einen
Prozeß 800 zum
Erzeugen eines Baums, wobei die Schnittmengen für die Bäume berechnet werden können, wenn
die Richtlinien in dem Baum installiert werden, statt in der Ausführungszeit,
wenn das Paket ankommt. Bei dieser Implementierung können mit
jedem Knotenwert eines Baums wie nachfolgend beschrieben zwei Mengen
von Richtlinien-IDs assoziiert werden. Es wird eine Tabelle von
mit einem Paketkopfteil-Klassifiziererfeld assoziierten Richtlinien
ausgewählt
(802). Für jeden
Filterknoten wird ein Filterknoten in den Baum eingegeben (804).
Mit jedem Knoten wird eine erste Menge von Richtlinien-IDs assoziiert
(806). Die erste Menge ist eine Menge von Richtlinien-IDs
aus der Tabelle, die für
Pakete gelten können,
die Paketkopfteil-Klassifiziererfeldwerte
aufweisen, die genau mit dem Knotenwert übereinstimmen. Die erste Menge
kann als die Menge der genauen Übereinstimmung
bezeichnet werden. Eine zweite Menge von Richtlinien-IDs wird mit
jedem Knoten assoziiert (808). Die zweite Menge enthält die Richtlinien-IDs
aus der Tabelle, die auf Pakete angewandt werden können, die
Paketkopfteil-Klassifiziererfeldwerte zwischen dem Knotenwert und
dem nächst
höheren
Knotenwert in dem Baum aufweisen. Die zweite Menge kann als die
auf Bereichen basierende Menge bezeichnet werden. Diese Assoziation
zweier Mengen von Richtlinien-IDs kann für jedes Paketkopfteil-Klassifiziererfeld
erreicht werden.
-
13 zeigt
einen Quellenportfilterknotenbaum 900 der Richtlinientabelle
von 2 mit einer ID-Menge für Richtlinien mit genauer Übereinstimmung
und einer ID-Menge für
auf Bereichen basierenden Richtlinien, die in jedem Filterknoten
zugeordnet sind. Jeder der Filterknoten 902–908 ist
eine Adresse aus dem Quellenport von 2. Die Filterknoten 902–908 sind
in der Reihenfolge ihres Werts angeordnet. In dem dargestellten
Baum sind die Filterknoten in ansteigender Reihenfolge ihres Werts
von links nach rechts angeordnet. Die Filterknoten können jedoch
in anderen hierarchischen Reihenfolgen angeordnet werden. Die mit jedem
der Filterknoten 902–908 assoziierten
Richtlinien sind in Referenzrichtlinienkästen 910–916 dargestellt.
-
Jeder
Knoten ist mit zwei Richtlinien-ID-Mengen assoziiert: Einer ID-Menge 910–916 von
Richtlinien mit genauer Übereinstimmung
und einer ID-Menge 918–924 von
auf Bereichen basierenden Richtlinien. Die ID-Menge von Richtlinien
mit genauer Übereinstimmung
ist eine Menge von Richtlinien, die mit dem Filterknoten übereinstimmen.
Zum Beispiel fällt
mit Bezug auf 2 ein Paketkopfteil-Quellenport
von 1000 in den Bereich von Quellenadressen, die die durch die Richtlinien-IDs
P1, P2 und P5 identifizierten Richtlinien implizieren. Diese Richtlinien-IDs
sind in 13 dargestellt (Menge 910 der
genauen Übereinstimmungen).
Die übrigen
Mengen 912, 914 und 916 der genauen Übereinstimmungen
werden ähnlich
bestimmt.
-
Die
mit einem Knoten assoziierte Menge der genauen Übereinstimmungen wird auf ein
Paket mit einem Paketkopfteil-Quellenportwert angewandt, der genau
mit dem Knotenwert übereinstimmt.
-
Die
ID-Menge für
auf Bereichen basierende Richtlinien ist eine Menge von Richtlinien,
die auf ein Paket angewandt werden kann, das einen Paketkopfteil-Klassifiziererfeldwert
aufweist, der keine genaue Übereinstimmung
für einen
Knotenwert darstellt. Die auf Bereichen basierende Menge ist die
Schnittmenge zwischen einem Knoten und dem nächst höherwertigen Knoten. Zum Beispiel
ist die auf Bereichen basierende Menge 918 dem Knoten 902 mit
der Menge der genauen Übereinstimmungen 910 =
{P1, P2, P5} zugeordnet. Der nächsthöhe re Knoten
ist 904 mit der Menge der genauen Übereinstimmungen 912 =
{P2, P4, P5}. Die Schnittmenge der beiden erhaltenen Richtlinienmengen
ist
{P1, P2, P5} ∩ {P2,
P4, P5} = {P2, P5}
-
Die
Menge {P2, P5} ist die auf Bereichen basierende Menge 918,
die dem Knoten 902 zugeordnet ist.
-
Eine
Menge der genauen Übereinstimmungen
eines nichtexistierenden Knotens wird als die Nullmenge definiert.
Der Knoten 908 besitzt eine Menge der genauen Übereinstimmungen
{P5}. Da nach dem Knoten 908 kein nächsthöherer Knoten kommt, ist die
Menge der genauen Übereinstimmung
des nächsthöheren Knotens
die Nullmenge. Die Schnittmenge ist
{P5} ∩ {null} = {null}
-
Die
Nullmenge {null} ist die dem Knoten 908 zugeordnete auf
Bereichen basierende Menge 924.
-
Auf
Bereichen basierende Knoten 920, 922, die mit
dem Knoten 904 bzw. 906 assoziiert sind, können auf ähnliche
Weise wie oben beschrieben bestimmt werden.
-
Bestimmte
Implementierungen, die die auf Bereichen basierende Menge vor der
Ausführungszeit
berechnen, haben den Vorteil, die Leistungsfähigkeit des Suchverfahrens
in der Ausführungszeit
zu verbessern, weil die Schnittmengen bereits berechnet wurden.
Ein weiterer Vorteil bestimmter Implementierungen besteht darin,
daß die
Schnittmenge für
sukzessive Ankünfte
von Paketen mit Paketkopfteil-Klassifiziererfeldern, die Werte aufweisen,
die keine genauen Übereinstimmungen
für einen
Knotenwert in einem Baum darstellen, nicht neu berechnet werden
müssen.
-
Als
Beispiel nehme man an, daß ein
Paket ein Paketkopfteil-Quellenfeld von 2000 aufweist. Mit Bezug auf 13 weist
der Quellenportwert eine genaue Übereinstimmung
mit dem mit dem Knoten 902 assoziierten Wert auf. Die Menge
der genauen Übereinstimmung
der Richtlinien-IDs 912 ist {P2, P4, P5}. Wenn der Quellenportwert 2500 ist,
gibt es keinen Knoten in dem Baum mit einer genauen Übereinstimmung
für diesen
Wert. Die auf Bereichen basierenden Richtlinien-IDs der mit dem
Knotenwert gerade unterhalb des Paketwerts assoziierten Menge gelten
für das
Paket. Bei diesem Beispiel ist der Knoten 904 mit einem
Wert von 2000 der Knoten gerade unterhalb des Paketkopfteil-Quellenportwerts
von 2500. Die für
dieses beispielhafte Paket relevanten Richtlinien bilden die auf
Bereichen basierende Menge {P4, P5}.
-
Auf ähnliche
Weise können
die für
andere Paketkopfteil-Klassifiziererfelder des Pakets relevanten Richtlinien
aus Bäumen
mit einer ID-Menge für
Richtlinien mit genauer Übereinstimmung
und einer ID-Menge für
auf Bereichen basierenden Richtlinien bestimmt werden, die jedem
Knoten zugeordnet sind.
-
Das
Verfahren assoziiert Filter-IDs mit Richtlinien. Die Filter-IDs
können
eine Möglichkeit
geben, die Richtlinien auf logische Weise zu gruppieren. Das Verfahren
kann die für
ein Paket geltenden Richtlinien identifizieren, indem die Filter-IDs
zu elementfremden Mengen gruppiert und die Mengen für jedes
Filterelement durch Verwendung eines weiteren Ausgleichsbinärbaums (balanced
binary tree) geordnet werden. Mit diesem Verfahren ist es möglich, die
Zeit zur Bestimmung der Schnittmenge so weit zu verkürzen, daß sie sich
O (log n) für
jeden durchsuchten Filterelementtyp nähert. Dies kann zu einer Suchzeit
von ungefähr
[O(log n) Nachschlagvorgänge
pro übereinstimmender
Filter-ID]·[Anzahl
durchsuchter Filterelementtypen] führen.
-
Die
Filter-IDs werden logisch unterteilt, um die Zufälligkeit zu entfernen, die
die ungünstigste
Effektivität
von O((log n)·n)
verursachen würde.
Logisch nicht geltende Filter-IDs können durch Verwendung der in
Verbindung mit 8 und 9 beschriebenen
Technik übersprungen
werden.
-
Bei
einer Implementierung kann der Filter-ID ein Bitmaskendeskriptor
vorausgehen. Jedes Bit in der Bitmaske repräsentiert ein bestimmtes Filtertypelement.
Wenn das Bit gesetzt ist, repräsentiert
dieses bestimmte Filtertypelement einen Bereich. Wenn das Bit nicht
gesetzt ist, ist das Filterelement ein exakter Wert (nicht ein Bereich
mehrerer Werte).
-
Mit
Bezug auf 2 nehme man an, daß die Filter-ID
acht Bit aufweist, wobei die drei höchstwertigen Bit die Bitmaske
für die
drei Filterelemente (Quellenadresse, Zieladresse und Quellenport
in dieser Reihenfolge) repräsentieren.
Dann kann man die Filter-IDs für
die Richtlinien P1 bis P5 folgendermaßen bestimmen:
P1: 10000001
P2:
00100010
P3: 11000011
P4: 00100100
P5: 11100101
-
Für die Richtlinie
P1 identifizierten bei dem dargestellten Fall die unteren 5 Bit
P1 als 00001. In diesem Fall wurden 5 Bit für eine Richtliniennummer zugeteilt,
obwohl dies keine Einschränkung
der Offenbarung ist. Die höchstwertigen
3 Bit sind die Bitmaske. Das höchstwer tige
Bit wird auf 1 gesetzt, um anzuzeigen, daß das Quellenadressenfilter
für P1
auf Bereichen basiert. Die nächsten
beiden Bit werden auf 0 gesetzt, um anzuzeigen, daß das Zieladressen- und Quellenportfilter
exakte Werte sind. Die Kombination der binären Bitmaske 100 und der P1-Kennung
von 00001 führt
zu einer Filter-ID von dezimal 129. Die Richtlinien P2–P5 werden
für dieses
Beispiel auf ähnliche
Weise bestimmt. Die Tabelle kann nach Filter-ID sortiert werden,
wodurch die Filter-IDs auf der Basis der Bitmaske logisch gruppiert
werden.
-
7 zeigt
ein Verfahren zum Berechnen der Schnittmenge aus den für jedes
Datenpaket-Kopfteilfeld erhaltenen
Mengen. In 710 kann mit jeder Richtlinien-ID in einer Richtlinien-ID-Tabelle für jedes
Paketkopfteilfeld wie oben beschrieben eine Filter-ID assoziiert
werden. Die Richtlinientabellen können dann nach Filter-ID sortiert
werden (712).
-
Eine
für jedes
Datenpaket-Kopfteilfeld geltende Menge von Filter-IDs kann unter
Aufrechterhaltung der sortierten Reihenfolge erhalten werden (714).
In 718 wird die niedrigste Filter-ID als Such-ID aus einer
Menge von Filter-IDs ausgewählt,
die aus der größten Filter-ID
aus jeder Datenpaket-Kopfteilmenge besteht. Die übrigen Datenpaketmengen werden
nach einer Übereinstimmung
für die
Such-ID durchsucht (720).
-
Wenn
in 722 eine Übereinstimmung
für die
Such-ID gefunden wird, wird die der Such-ID entsprechende Filter-ID
zu der Ergebnis-Schnittmenge hinzugefügt (724). Es wird
ein Test 722 auf eine Übereinstimmung der
Such-ID durchgeführt.
Wenn in 722 die Such-ID nicht gefunden wird, wird ein Test 726 durchgeführt, um zu
bestimmen, ob das Ende irgendeiner Datenpaketmenge erreicht wurde.
Wenn in 726 kein Ende einer Datenpaketmenge bestimmt wird,
wird als eine neue Such-ID die nächstgrößte Filter-ID
ausgewählt,
die die Such-ID nicht übersteigt
(730). Der Prozessor kehrt dann in einer Schleife zu 720 zurück, wo die
anderen Datenpaketmengen wiederum nach einer Übereinstimmung durchsucht werden.
Die Blöcke 720–730 werden
wiederholt, bis das Ende einer Datenpaketmenge bestimmt wird (726)
und der Prozeß anhält (728).
-
Als
ein veranschaulichendes Beispiel ist 8 eine Richtlinientabelle
mit zwei Filterelementen (Zielport und Quellenport) und zwölf Richtlinieneinträgen. Eine
Bitmaske kann wie oben beschrieben einer Richtliniennummer vorangestellt
werden, um eine Bitrepräsentation
und resultierende Filter-ID für
jede Richtlinie in der Tabelle zu ergeben. Die Tabelle kann dann
nach Filter-ID sortiert werden, um die Tabelle von 9 zu
ergeben.
-
Bei
einem weiteren veranschaulichenden Beispiel wird angenommen, daß ein Paket
mit einem Quellenporteintrag von 4300, einem Zielporteintrag von
1300 und einer Quellenadresse von 8300 an der Netzwerkeinrichtung
ankommt. Mit Bezug auf
9 lautet die Menge von Richtlinien-IDs
und assoziierten Filter-IDs, die für jede Paketkopfteil-Feldadressen
erhalten werden, wie folgt:
Quellenport: | {P7,
P8, P9, P10, P11, P12, P4} = {71, 72, 73, 74, 75, 76, 132} |
Zielport: | {P9,
P1, P2, P3, P4, P5, P6} = {73, 129, 130, 131, 132, 133, 134} |
Quellenadresse: | {P8,
P9, P11, P1, P4, P6} {72, 73, 75, 129, 132, 134} |
-
Die
aus jeder Menge erhaltene Menge größter Filter-IDs lautet {Quellenport,
Zielport, Quellenadresse} = {132, 134, 134}. Die niedrigste dieser
Filter-IDs (132) wird als die Such-ID ausgewählt.
-
Die übrigen Mengen
werden nach einer Filter-ID durchsucht, die mit der Such-ID übereinstimmt.
Bei dem dargestellten Beispiel werden die Zielport- und Quellenadressenmengen
von der höchsten
in Richtung der niedrigsten Filter-ID durchsucht. Die Such-ID 132
findet sich in allen übrigen
Mengen und wird zu der Ergebnis-Schnittmenge hinzugefügt.
-
Da
das Verfahren die Filter-IDs in keiner Menge erschöpft hat
wird die nächstgrößte Filter-ID, die die Such-ID
nicht übersteigt,
aus den Mengen ausgewählt.
Diese Filter-ID wird als die neue Such-ID benutzt. Bei dem dargestellten
Beispiel sind die Filter-IDs, die nicht in den Mengen durchsucht
wurden, Quellenport = {71, 72, 73, 74, 75, 76}, Zielport = {73,
129, 130, 131} und Quellenadresse = {72, 73, 75, 129}. Die Menge
größter Filter-IDs
ist {76, 131, 129}. Die niedrigste dieser (Filter-ID = 76) wird
als die neue Such-ID ausgewählt.
-
Die übrigen Mengen
werden nach einer Filter-ID durchsucht, die mit der neuen Such-ID übereinstimmt.
Die Zielport- und Quellenadressenmengen von Filter-IDs unterhalb
der vorherigen Such-ID werden in Richtung der niedrigsten Filter-ID
auf eine Übereinstimmung
mit der neuen Such-ID durchsucht. In diesem Beispiel findet sich
die Such-ID 76 nicht in allen übrigen
Mengen und wird nicht zu der Ergebnis-Schnittmenge hinzugefügt.
-
Da
das Verfahren immer noch in keiner Menge die Filter-IDs erschöpft hat,
wird die nächst
größte Filter-ID,
die die Such-ID nicht übersteigt,
aus den Mengen ausgewählt.
Diese Filter-ID
wird als die neue Such-ID verwendet. Bei dem dargestellten Beispiel
sind die Filter-IDs, die nicht in den Mengen durchsucht wurden, Quellenport
= {71, 72, 73, 74, 75}, Zielport = {73} und Quellenadresse = {72,
73}. Die Menge größter Filter-IDs ist
{75, 73, 73}. Die niedrigste dieser (Filter-ID = 73) wird als die
neue Such-ID ausgewählt.
-
Die übrigen Mengen
werden nach einer Filter-ID durchsucht, die mit der Such-ID übereinstimmt.
Bei dem dargestellten Beispiel werden die Zielport- und Quellenportmengen
von der höchsten
in Richtung der niedrigsten Filter-ID durchsucht. Bei diesem Beispiel
findet sich die Such-ID 73 in allen übrigen Mengen und wird zu der
Ergebnis-Schnittmenge hinzugefügt.
-
Das
Verfahren hat die niedrigstwertige Filter-ID der Quellenportmenge
erreicht und das Verfahren ist abgeschlossen. Die Ergebnis-Schnittmenge
ist {P4/132), P9 (73)}.
-
Bei
einer anderen Implementierung kann eine hierarchische Reihenfolge
der Datenpaket-Klassifiziererfelder
als eine Filter-ID zum Ordnen der Filter verwendet werden. Zum Beispiel
könnte
ein Filter, das einen Quellenportfeldeintrag von 10, einen Zielportfeldeintrag
von 20 und eine Quellenadresse von 30 aufweist, eine Filter-ID von
(10, 20, 30) aufweisen. Bei diesem Beispiel ist die Reihenfolge
der Signifikanz für
Sortierzwecke der Quellenport-Feldeintrag,
der Zielport-Feldeintrag und dann der Quellenadressen-Feldeintrag.
Die Filter-ID kann ebenfalls aus den Paketfeldeinträgen abgeleitet
werden. Als ein Beispiel kann es sich bei der Filter-ID um einen
oder mehrere der Klassifiziererfeldwerte handeln, die durch eine
Konstante dividiert, oder auf eine beliebige Weise, die eine logische
Sequenzierung der Filter-IDs erzeugt, bearbeitet werden. Die Sortiereigenschaften
der Filterpaketfelder sind nicht auf die Anzahl, Art und hierarchische
Reihenfolge der Filter-IDs beschränkt.
-
10 zeigt
die Filter-IDs, die aus der Filtertabelle von 8 unter
Verwendung von Quellenport-Feldeintrag, Zielport-Feldeintrag und
Quellenadressen-Feldeintrag wie oben beschrieben als Filter-ID abgeleitet
werden.
-
11 ist
die Richtlinientabelle von 10 sortiert
nach Filter-ID von niedrigster zu höchster. Die Reihenfolge der
Richtlinien wird durch Vergleichen des Quellenportfeldes, dann des
Zielportfeldes und dann des Quellenadressenfeldes mit der Filter-ID
bestimmt, um die hierarchische Reihenfolge der Filter-IDs zu bestimmen.
-
Weiter
in Bezug auf das dargestellte Beispiel wird angenommen, daß ein Paket
mit einem Quellenporteintrag von 4300, einem Zielporteintrag von
1300 und einem Quellenadresseneintrag von 8300 an der Netzwerkeinrichtung
ankommt. Mit Bezug auf 11 lautet die Menge, die aus
Richtlinien-IDs und assoziierten Filter-IDs für alle Paketkopfteilfeldadressen
erhalten wird:
- Quellenport: {P7(4000, 1100, 8100), P8(4000,
1200, 8300), P9(4000, 1300, 8300), P10(4000, 4400, 8400), P11(4000,
1500, 8300), P12 (4000, 2000, 9500), P4(4300, 1000, 8300)}
- Zielport: {P1(4000, 1000, 8300), P9(4000, 1300, 8300), P2(4100,
1000, 8100), P3(4200, 1000, 8200), P4(4300, 1000, 8300), P5(4400,
1000, 8400), P6(4500, 1000, 8300)}
- Quellenadresse: {P1(4000, 1000, 8300, P8(4000, 1200, 2300),
P9(4000, 1300, 8300), P11(4000, 1500, 8300), P4(4300, 1000, 8300),
P6(4500, 1000, 8300)}
- Die erhaltene Menge größter Filter-IDs
aus jeder Menge lautet {P4(4300, 1000, 8300), P6 (4500, 1000, 8300), P6(4500,
1000, 8300). Die niedrigste dieser Filter-IDs P4(4300, 1000, 8300),
wird als die Such-ID ausgewählt.
-
Die übrigen Mengen
werden nach einer Filter-ID durchsucht, die mit der Such-ID übereinstimmt.
Bei dem dargestellten Beispiel werden die Zielport- und Quellenadressenmengen
von der höchsten
in Richtung der niedrigsten Filter-ID durchsucht. Die Such-ID (4300,
1000, 8300) findet sich in allen übrigen Mengen und wird zu der
Ergebnis-Schnittmenge hinzugefügt.
-
Weil
das Verfahren noch in keiner Menge die Filter-IDs erschöpft hat,
wird die nächstgrößte Filter-ID, die
die Such-ID nicht übersteigt,
aus den Mengen ausgewählt.
Diese Filter-ID wird als die neue Such-ID verwendet. Bei dem dargestellten
Beispiel sind die Filter-IDs, die noch nicht in Mengen durchsucht
wurden, die folgenden:
- Quellenport: = {P7(4000, 1100, 8100),
P8(4000, 1200, 8300), P9(4000, 1300, 8300), P10(4000, 1400, 8400), P11(4000,
1500, 8300), P12(4000, 2000, 9500)}
- Zielport: {P1(4000, 1000, 8300), P9(4000, 1300, 8300), P2(4100,
1000, 8100), P3(4200, 1000, 8200)}
- Quellenadresse: {P1(4000, 1000, 8300), P8(4000, 1200, 8300),
P9(4000, 1300, 8300), P11(4000, 1500, 8300)}
-
Die
Menge größter Filter-IDs
lautet {P12(4000, 2000, 9500), P3(4200, 1000, 8200), P11 (4000,
1500, 8300). Die niedrigste dieser Filter-IDs P11(4000, 1500, 8300),
wird als die Such-ID ausgewählt.
-
Die übrigen Mengen
werden nach einer Filter-ID durchsucht, die mit der neuen Such-ID übereinstimmt.
Die Quellenportmenge von Filter-IDs unterhalb der vorherigen Such-ID
wird in Richtung der niedrigsten Filter-ID auf eine Übereinstimmung
mit der neuen Such-ID durchsucht. In diesem Fall findet sich die
Such-ID P11(4000, 1500, 8300) nicht in allen übrigen Mengen und wird nicht
zu der Ergebnis-Schnittmenge hinzugefügt.
-
Da
das Verfahren noch in keiner Menge die Filter-IDs erschöpft hat,
wird die nächstgrößte Filter-ID, die
die Such-ID nicht übersteigt,
aus den Mengen ausgewählt.
Diese Filter-ID wird als die neue Such-ID verwendet. Bei dem dargestellten
Beispiel sind die Filter-IDs, die noch nicht in den Mengen durchsucht
wurden, die folgenden:
- Quellenport: = {P7(4000, 1100, 8100),
P8(4000, 1200, 8300), P9(4000, 1300, 8300), P10(4000, 1400, 8400)}
- Zielport: {P1(4000, 1000, 8300), P9(4000, 1300, 8300)}
- Quellenadresse: {P1(4000, 1000, 8300), P8(4000, 1200, 8300),
P9(4000, 1300, 8300))
-
Die
Menge größter Filter-IDs
lautet {P10(4000, 1400, 8400), P9(4000, 1300, 8300), P9 (4000, 1300, 8300)}.
Die niedrigste dieser Filter-IDs = P9(4000, 1300, 8300), wird als
die neue Such-ID ausgewählt.
-
Die übrigen Mengen
werden nach einer Filter-ID durchsucht, die mit der Such-ID übereinstimmt.
Bei dem dargestellten Beispiel werden die Zielport- und die Quellenadressenmengen
von der höchsten
in Richtung der niedrigsten Filter-ID durchsucht. Die Such-ID P9
(4000, 1300, 8300) findet sich in allen übrigen Mengen und wird zu der
Ergebnis-Schnittmenge hinzugefügt.
-
Weil
das Verfahren noch in keiner Menge die Filter-IDs erschöpft hat,
wird die nächstgrößte Filter-ID, die
die Such-ID nicht übersteigt,
aus den Mengen ausgewählt.
Diese Filter-ID wird als die neue Such-ID verwendet. Bei dem dargestellten
Beispiel sind die Filter-IDs, die noch nicht in den Mengen durchsucht
wurden, die folgenden:
- Quellenport: = {P7(4000, 1100, 8100),
P8(4000, 1200, 8300)}
- Zielport: {P1(4000, 1000, 8300)}
- Quellenadresse: {P1(4000, 1000, 8300), P8(4000, 1200, 8300)}
-
Die
Menge größter Filter-IDs
lautet {P8(4000, 1200, 8300), P1(4000, 1000, 8300), P8 (4000, 1200, 8300)}.
Die niedrigste dieser Filter-IDs = P1(4000, 1000, 8300), wird als
die neue Such-ID ausgewählt.
-
Die übrigen Mengen
werden nach einer Filter-ID durchsucht, die mit der Such-ID übereinstimmt.
Die Quellenportmenge von Filter-IDs unterhalb der vorherigen Such-ID
wird in Richtung der niedrigsten Filter-ID nach einer Übereinstimmung
mit der neuen Such-ID durch sucht. Die Such-ID P1(4000, 1000, 8300)
findet sich nicht in allen übrigen
Mengen und wird nicht zu der Ergebnis-Schnittmenge hinzugefügt.
-
Das
Verfahren in dem obigen Beispiel hat die niedrigstwertige Filter-ID
der Quellenportmenge erreicht und das Verfahren ist abgeschlossen.
Die Ergebnis-Schnittmenge ist {P4(4300, 1000, 8300), P9(4000, 1300, 8300)}.
-
Verschiedene
Merkmale des Systems können
in Hardware, Software oder in einer Kombination von Hardware und
Software implementiert werden. Zum Beispiel können bestimmte Aspekte des
Systems in auf programmierbaren Computer ausgeführten Computerprogrammen implementiert
werden. Jedes Programm kann in einer prozeduralen oder objektorientierten
höheren
Programmiersprache implementiert werden, um mit einem Computersystem
zu kommunizieren.
-
Ferner
kann jedes solches Computerprogramm auf einem Speichermedium gespeichert
werden, wie zum Beispiel Nurlesespeicher (ROM), das von einem Meterzweck-
oder speziellen programmierbaren Computer lesbar ist, um den Computer
zu konfigurieren und zu betreiben, wenn das Speichermedium durch
den Computer gelesen wird, um die oben beschriebenen Funktionen
durchzuführen.