-
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
Datenpakten 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.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
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: 1 0
0 0 0 0 0 1
P2: 0 0 1 0 0 0 1 0
P3: 1 1 0 0 0 0 1 1
P4:
0 0 1 0 0 1 0 0
P5: 1 1 1 0 0 1 0 1
-
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,
2200, 8300), P9(4000, 1300, 8300), P10)4000, 1400, 8400), P11(4000,
1500, 8300), P12(4000, 2000, 9500), P4(4300, 1000, 8300)}
Zielport:
{P1(4000, 1000, 8300), P9(4000, 1300, 8300), P2(4100, 2000, 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,
8300), 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: {P3(4000, 1000, 8300), P8(4000, 3200,
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(5000, 1100, 8100),
P8(4000, 1200, 8300), P9(4000, 1300, 8300), P10(4000, 1400, 8400)}
Zielport:
{P1(4000, 1004, 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 Computern 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 Mehrzweck-
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.
-
Weitere
Implementierungen liegen innerhalb des Schutzumfangs der folgenden
Ansprüche.
-
Zusammenfassung
-
Eine
Klassifizierung von Netzwerk-Datenpaketen umfaßt die Bestimmung von Mengen
von einer oder mehreren Filterkennungen, wobei jede Menge einem
entsprechenden Datenpaket-Klassifiziererfeld zugeordnet
ist. Resultat-Kompensations-Filterkennungen können auf der Grundlage einer
Schnittmenge der Mengen von Filterkennungen abgeleitet werden.