-
Diese
Anmeldung beansprucht die Priorität der US-Provisional-Patentanmeldung
Nr. 60/364,599, eingereicht 18. März 2002.
-
HINTERGRUND
DER ERFINDUNG
-
Gebiet der Erfindung:
-
Die
vorliegende Erfindung betrifft ein Verfahren und eine Vorrichtung
zur Hochleistungspaketfilterung in einer Kommunikationsnetzwerkumgebung, wie
etwa Token-Ring, ATM, Ethernet, Fast Ethernet, Gigabit-Ethernet
und 10Gigabit-Ethernet oder einer anderen Netzwerk-Management-Umgebung.
Die vorliegende Erfindung betrifft insbesondere ein Paketfilter
und ein Verfahren zum Filtern eines Pakets, welche in einer Netzwerkkomponente
implementiert werden können,
die diskrete Einrichtungen umfassen oder auf einem Halbleitersubstrat,
wie etwa einem Siliziumchip, implementiert werden kann.
-
Beschreibung des relevanten
Standes der Technik:
-
Bei
Netzwerk-Management-Anwendungen tritt ein eingehendes Paket an einem
Ingress-Port einer Netzwerkkomponente ein, wie etwa einem Switch.
Die Netzwerkkomponente verarbeitet das eingehende Paket und leitet
es an einen Egress-Port weiter. Bei der Verarbeitung des eingehenden
Pakets kann die Netzwerkkomponente das eingehende Paket auf der
Ingress-Seite untersuchen und die Adressierungs- und Routing-Informationen
ermitteln, um die Netzwerkleistung zu erhöhen.
-
Die
Netzwerkkomponente kann verschieden Adressierungs- und Verarbeitungslogiken
auf das eingehende Paket anwenden, wenn das eingehende Paket auf
der Ingress-Seite derselben untersucht wird. Da der Bedarf an schnelleren
und kostengünstigen
Netzwerkkomponenten steigt, steigt auch der Bedarf an innovativen
Systemen zur Befriedigung eines solchen Bedarfs. Demgemäß ist eine
schnelle und flexible Verarbeitungslogik für eine Netzwerkkomponente wichtig,
da die Kommunikationsnetzwerkumgebung davon profitieren kann.
-
Es
ist beispielsweise ein Verfahren zur inhaltsbasierten Übermittlung/Filterung
in einer Netzwerkvermittlungsvorrichtung aus
EP 0 993 162 A2 bekannt,
wobei in der Vermittlungsvorrichtung ein Offset-Wert, ein Vergleichswert
und ein erwarteter Wert gespeichert werden. Danach werden diese
Informationen, die sich an einer Stelle in einem empfangenen Frame
befinden, durch den Offset-Wert ermittelt und die ermittelten Informationen
mit dem gespeicherten Vergleichswert verglichen, um ein Ergebnis
zu erhalten. Schließlich
wird der Frame mit dem Ergebnis verarbeitet.
-
Auch
in dem Artikel: "Nettilter
Extensions HOWTO" von
Fabrice Marie, 20.12.2001, der dem Internet zu entnehmen ist unter:
http://cvs.netfilter.org/~checkout~/netfilter/documentation/HOWTO/netfilter-exte,
ist beschrieben, wie Netzfiltererweiterungen in einem Linux-Betriebssystem
zu installieren sind, um eine inhaltsbasierte Filterung in einer Netzwerkvermittlungsvorrichtung
zu ermöglichen.
-
ZUSAMMENFASSUNG DER ERFINDUNG:
-
Ein
Beispiel der vorliegenden Erfindung kann ein Verfahren zum Verarbeiten
eines Pakets basierend auf einer schnellen, flexiblen Bereichsprüfung in einem
Kommunikationsnetzwerk umfassen. Das Verfahren kann die Schritte
des Identifizierens wenigstens eines in einer Speichereinheit gespeicherten
Bitpositionswertes und des Identifizierens wenigstens eines in einer
Speichereinheit gespeicherten Bitlängenwertes (BL) umfassen. Das
Verfahren umfasst ferner den Schritt des Extrahierens wenigstens
eines Paketfeldes aus dem Paketstrom basierend auf den Informationen,
die dem wenigstens einen identifizierten Bitpositionswert und dem
wenigstens einen identifizierten Bitlängenwert entsprechen. Danach
wird wenigstens ein extrahierter Paketfeldwert basierend auf dem
wenigstens einen extrahierten Paketfeld bestimmt und der wenigstens
eine Anfangsbereichswert temporär
in einer Speichereinheit gespeichert. Danach wird wenigstens ein
in einer Speichereinheit gespeicherter Anfangsbereichswert aus einem
Satz Bereichswerte identifiziert, um eine Untergrenze für einen
Wertebereich festzulegen, und wenigstens ein in einer Speichereinheit
gespeicherter Endbereichswert aus einem Satz Bereichswerte identifiziert,
um eine Obergrenze für
einen Wertebereich festzulegen. Dann wird der wenigstens eine extrahierte
Paketfeldwert mit wenigstens einem oder gegen wenigstens einen Satz
Bereichswerte, die durch den Anfangsbereichswert und den Endbereichswert
festgelegt sind, ver- oder abgeglichen, wobei wenigstens eine Tätigkeit
in Bezug auf den Paketstrom ausgeführt wird, wenn der wenigstens
eine extrahierte Paketfeldwert innerhalb des wenigstens einen Satzes
Bereichswerte liegt, die durch den Anfangsbereichswert und den Endbereichswert
festgelegt sind. Darüber
hinaus wird eine Bereichsprüfungstabelle
dafür konfiguriert, eine
Mehrzahl an Speichereinheiten tabellarisch zusammenzufassen, wobei
jede Speichereinheit ein separates und einzelnes Speicherfeld der
Bereichsprüfungstabelle
zum Speichern der aus dem Paket extrahierten Paketfeldwerte ist,
und wobei auf die Paketfeldwerte in den Speichereinheiten der Bereichsprüfungstabelle
innerhalb der Bereichsprüfungstabelle über einen
Bereichsindexwert zugegriffen wird und diese Paketfeldwerte identifiziert
werden.
-
Gemäß einem
anderen Beispiel kann die vorliegende Erfindung ein System zum Verarbeiten eines
Pakets basierend auf einer schnellen, flexiblen Bereichsprüfung in
einem Kommunikationsnetzwerk betreffen. Das System umfasst Mittel
zum Identifizieren wenigstens eines in einer Speichereinheit gespeicherten
Bitpositionswertes, Mittel zum Identifizieren wenigstens eines in
einer Speichereinheit gespeicherten Bitlängenwertes und Mittel zum Extrahieren
wenigstens eines Paketfeldes aus dem Paketstrom basierend auf den
Informationen, die dem wenigstens einen identifizierten Bitpositionswert
und dem wenigstens einen identifizierten Bitlängenwert entsprechen. Das System
umfasst ferner Mittel zum Bestimmen wenigstens eines extrahierten
Paketfeldwertes basierend auf dem wenigstens einen extrahierten
Paketfeld und zum temporären
Speichern des wenigstens einen extrahierten Paketfeldwerts in einer
Speichereinheit, Mittel zum Identifizieren wenigstens eines in einer
Speichereinheit gespeicherten Anfangsbereichswerts aus einem Satz
Bereichswerte, um eine Untergrenze für einen Wertebereich festzulegen,
und Mittel zum Identifizieren wenigstens eines in einer Speichereinheit
gespeicherten Endbereichswerts aus einem Satz Bereichswerte, um
eine Obergrenze für
einen Wertebereich festzulegen. Dann sind Mittel zum Ver- oder Abgleichen
des wenigstens einen extrahierten Paketfeldwertes mit wenigstens
einem oder gegen wenigstens einen Satz Bereichswerte, die durch
den Anfangsbereichswert und den Endbereichswert festgelegt sind,
und eine Tätigkeitsausführungseinheit
zum Ausführen
wenigstens einer Tätigkeit
in Bezug auf den Paketstrom vorgesehen, wenn der wenigstens eine
extrahierte Paketfeldwert innerhalb des wenigstens einen Satzes Bereichswerte
liegt, die durch den Anfangsbereichswert und den Endbereichswert
festgelegt sind. Zusätzlich
dazu sind Mittel zum Konfigurieren einer Bereichsprüfungstabelle,
um eine Mehrzahl an Speichereinheiten tabellarisch zusammenzufassen,
wobei jede Speichereinheit ein separates und einzelnes Speicherfeld
der Bereichsprüfungstabelle
zum Speichern der aus dem Paket extrahierten Paketfeldwerte ist,
und Mittel zum Zugreifen auf die und Identifizieren der Paketfeldwerte
in den Speichereinheiten der Bereichsprüfungstabelle innerhalb der
Bereichsprüfungstabelle über einen
Bereichsindexwert vorgesehen.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN:
-
Für ein richtiges
Verständnis
der Erfindung sollte auf die begleitenden Zeichnungen Bezug genommen
werden. Es zeigt:
-
1 ein
Beispiel für
eine erfindungsgemäße Konfiguration
zum Filtern eines Pakets,
-
2 ein
anderes Beispiel für
eine erfindungsgemäße Konfiguration
zum Filtern eines Pakets,
-
3 ein
Beispiel für
eine erfindungsgemäße Bereichsprüfungstabelle
zum Filtern eines Pakets,
-
4 ein
weiteres Beispiel für
eine erfindungsgemäße Konfiguration
zum Filtern eines Pakets,
-
5 ein
Flussdiagramm, das ein Beispiel eines erfindungsgemäßen Verfahrens
zum Filtern eines Pakets darstellt,
-
6 ein
weiteres Flussdiagramm, das ein anderes Beispiel eines erfindungsgemäßen Verfahrens
zum Filtern eines Pakets darstellt, und
-
7 ein
weiteres Flussdiagramm, das ein weiteres Beispiel eines erfindungsgemäßen Verfahrens
zum Filtern eines Pakets darstellt.
-
GENAUE BESCHREIBUNG DER
BEVORZUGTEN AUSFÜHRUNGSFORM(EN):
-
1 zeigt
ein Beispiel für
eine erfindungsgemäße Hardwarekonfiguration,
die basierend auf einer schnellen, flexiblen Bereichsprüfung eine
Paketfilterung durchführen
kann. Die Durchführung
der Paketfilterung kann auch als Paketklassifizierung bezeichnet
werden. Daher können
die hierin vorgesehenen Hardwarekonfigurationen und Beispiele auch eine
Paketklassifizierung durchführen.
-
Darüber hinaus
kann die Hardwarekonfiguration gemäß 1 eine integrierte,
modulare Ein-Chip-Lösung
sein und daher auf einem Halbleitersubstrat, wie etwa Silizium,
ausgeführt
werden. Alternativ kann die Hardwarekonfiguration gemäß 1 aus
einer Mehrzahl diskreter Komponenten auf einer Leiterplatte bestehen.
-
1 zeigt
ein Filter 5, das wenigstens einen Paketstrom 10 und
eine Mehrzahl an Speichereinheiten 20, 30, 40, 50 und 60 umfassen
kann. Der Paketstrom 10 kann beispielsweise 256 Bits umfassen,
wobei jedes Bit einen Bitwert darstellt. Es wird darauf hingewiesen,
dass, obgleich in 1 der Paketstrom 10 dargestellt
ist, das Filter 5 Daten in jedem beliebigen Datenformat
verarbeiten kann, einschließlich
eines Datenpakets, eines Daten-Frames oder einer Datenzelle, ohne
jedoch darauf beschränkt
zu sein.
-
Das
in 1 gezeigte Filter 5 kann wenigstens fünf Speichereinheiten 20, 30, 40, 50 und 60 umfassen,
wobei jede Speichereinheit 20, 30, 40, 50 und 60 eine
beliebige Speichereinheit sein kann, etwa ein Register. Jede Speichereinheit 20, 30, 40, 50 und 60 kann
darin programmierbare Werte oder Information speichern und eine
beliebige Breite oder Bitlänge
besitzen.
-
Die
Speichereinheit 20 gemäß 1 kann ein
Register zum Speichern eines Positionswerts in einem Bitstrom sein.
Der Positionswert im Bitstrom wird als Bitpositionswert BP bezeichnet
und kann ein programmierbarer Wert sein, der eine vordefinierte Bitposition
in einem Paketstrom 10 bezeichnen oder darstellen kann.
Daher kann der Bitpositionswert BP ein Wert sein, der die Startbitposition
eines spezifischen Paketfelds oder eines spezifischen Paketabschnitts
in einem Paketstrom 10 darstellt, das/der aus diesem extrahiert
werden soll. Der Bitpositionswert BP kann beispielsweise ein vordefinierter
programmierbarer Binärwert
sein, der dem Dezimalwert 118 entspricht, welcher die Startbitposition 118 in
den 256 Bits des Paketstroms 10 bezeichnet oder darstellt.
-
Darüber hinaus
kann die Speichereinheit 30 gemäß 1 ebenfalls
ein Register zum Speichern eines Bitlängenwerts BL sein. Der Bitlängenwert
BL kann ein programmierbarer Wert sein, der eine vordefinierte Bitlänge eines
Paketfelds in einem Paketstrom 10 bezeichnet oder darstellt.
Mit anderen Worten, der Bitlängenwert
BL stellt eine Anzahl an Bits dar, die aus einem Paketstrom 10 extrahiert
werden soll. Der Bitlängenwert
BL kann ein beliebiger Wert sein, etwa von null bis zu dem Wert,
der zum Angeben der maximalen Anzahl an Bits im Paketstrom 10 erforderlich
ist. Mit anderen Worten, der Bitlängenwert BL kann ein Wert sein,
der eine Anzahl an Bits, ausgehend von der Startbitposition eines
aus einem Paketstrom 10 zu extrahierenden Paketfeldes,
darstellt. Der Bitlängenwert
BL kann beispielsweise ein vordefinierter programmierbarer Binärwert sein,
der einem Dezimalwert von 4 entspricht. Ein Bitlängenwert BL von 4 kann eine
zu extrahierende Anzahl an Bits, ausgehend von der Startbitposition 118 in
einem Paketstrom 10, bezeichnen oder darstellen. Als solche
können
ein Bitpositionswert BP von 118 und ein Bitlängenwert
BL von 4 ein Paketfeld, bestehend aus den Bits 118, 119, 120 und 121 in
einem Paketstrom 10, extrahieren.
-
Die
Speichereinheit 40 gemäß 1 kann ein
Register zum Speichern eines temporären Wertes oder temporärer Informationen
sein, wie etwa ein extrahierter Paketteldwert PF. Der extrahierte
Paketfeldwert PF kann ein Binärwert
sein oder ein beliebiges Werteformat besitzen. Darüber hinaus
kann der extrahierte Paketfeldwert PF ein Wert sein, der den Wert
bezeichnet oder darstellt, der einem aus einem Paketstrom 10 extrahierten
Paketfeld zugeordnet ist. Die Speichereinheit 20 kann beispielsweise
einen Bitpositionswert BP speichern, der eine Startbitposition in
einem Paketstrom 10 darstellt. Außerdem kann die Speichereinheit 30 einen
Bitlängenwert
BL speichern, der bezogen auf ein aus dem Paketstrom 10 zu
extrahierendes Paketfeld eine Anzahl an Bits darstellt. Demgemäß können die
in den Speichereinheiten 20 bzw. 30 gespeicherten
BP- und BL-Werte oder -Informationen eine Startbitposition und eine Endposition
eines aus dem Paketstrom 10 zu extrahierenden Paketfeldes
identifizieren. Mit anderen Worten, die Bitposition BP bezeichnet
die Startbitposition eines Paketfelds in einem Paketstrom 10.
Daher kann die Endposition des Paketfelds die Summe des Bitpositionswertes
BP und des Bitlängenwertes BL
sein. Sobald die Startbitposition und die Endposition ermittelt
worden sind, kann das Paketfeld aus dem Paketstrom 10 extrahiert
werden. Sobald das Paketfeld extrahiert worden ist, kann ein extrahierter Paketfeldwert
PF bestimmt werden und der extrahierte Paketfeldwert PF danach in
der Speichereinheit 40 gespeichert werden.
-
Ferner
in 1 gezeigt ist eine Speichereinheit 50,
die dafür
konfiguriert ist, einen Bereichswert aus einer Mehrzahl Bereichswerte
zu speichern. Die Speichereinheit 50 kann beispielsweise
einen Startbereichswert SR aus einer Mehrzahl Bereichswerte speichern.
Die Speichereinheit 50 kann ein Register zum Speichern
eines Startbereichswerts SR sein. Der Startbereichswert SR kann
ein Binärwert
oder ein Wert mit einem beliebigen Format sein. Des Weiteren kann
der Startbereichswert SR ein programmierbarer Wert sein, der einen
vordefinierten unteren Grenzwert eines Wertebereiches bezeichnet
oder darstellt. Daher kann der Startbereichswert SR einen unteren
Grenzwert eines Wertebereichs bezeichnen oder darstellen, mit dem
der extrahierte Paketfeldwert PF verglichen oder überprüft werden
kann.
-
In ähnlicher
Weise ist in 1 eine Speichereinheit 60 dargestellt,
die dafür
konfiguriert ist, einen anderen Bereichswert aus einer Mehrzahl
Bereichswerte zu speichern. Die Speichereinheit 60 kann
beispielsweise einen Endbereichswert ER aus einer Mehrzahl Bereichswerte
speichern. Die Speichereinheit 60 kann ebenfalls ein Register
zum Speichern eines Endbereichswertes ER sein. Wie der Startbereichswert
SR kann auch der Endbereichswert ER ein Binärwert oder ein Wert mit einem
beliebigen Format sein. Des Weiteren kann der Endbereichswert ER
ein programmierbarer Wert sein, der einen vordefinierten oberen
Grenzwert eines Wertebereichs bezeichnen oder darstellen kann. Daher
kann der Endbereichswert ER einen oberen Grenzwert eines Wertebereichs
bezeichnen oder darstellen, mit dem der Paketteldwert PF verglichen
oder überprüft werden kann.
-
Demgemäß kann die
Speichereinheit 50 einen Startbereichswert SR speichern,
der den unteren Grenzwert mehrerer Bereichswerte angeben oder darstellen
kann, und die Speichereinheit 60 kann einen Endbereichswert
ER speichern, der den oberen Grenzwert mehrerer Bereichswerte angegeben
oder darstellen kann. Mit anderen Worten, der Startbereichswert
SR und der Endbereichswert ER können eine
Untergrenze und eine Obergrenze für einen spezifischen Wertebereich
identifizieren oder festlegen. Sobald die Grenzwerte des Wertebereichs
ermittelt worden sind, kann ein in der Speichereinheit 40 gespeicherter
extrahierter Paketteldwert PF mit dem Wertebereich verglichen oder überprüft werden,
der durch den Startbereichswert SR und den Endbereichswert ER festgelegt
wird.
-
Das
in 1 gezeigte Filter 5 kann außerdem eine
Speichereinheit 65 umfassen, wobei die Speichereinheit 65 eine
beliebige Speichereinheit sein kann, etwa ein Register. Die Speichereinheit 65 kann
wenigstens einen programmierbaren Wert oder Informationen darin
speichern und eine beliebige Breite oder Bitlänge besitzen. Bei einem anderen Beispiel
der vorliegenden Erfindung kann die Speichereinheit 65 einen
vorgegebenen programmierbaren Festwert FV speichern, wobei der Festwert
FV ein beliebiger Wert sein kann. Demgemäß kann bei dem vorliegenden
Beispiel auch ein in der Speichereinheit 40 gespeicherter
Paketteldwert PF extrahiert und dieser mit dem Festwert FV verglichen
oder überprüft werden,
um festzustellen, ob eine Übereinstimmung
vorliegt. Mit anderen Worten, sobald ein Paketfeldwert PF bestimmt
worden ist, kann bei dem vorliegenden Beispiel, anstatt den Paketfeldwert
PF mit einem durch den Startbereichswert SR und den Endbereichswert
ER festgelegten Wertebereich zu vergleichen oder zusätzlich dazu,
ein Festwert FV in der Speichereinheit 65 ermittelt und
der Paketfeldwert PF mit dem ermittelten Festwert FV verglichen werden.
Nach dem Vergleichen des Paketfeldwer tes PF mit dem Festwert FV
kann bei dem vorliegenden Beispiel festgestellt werden, ob der Paketfeldwert
PF dem Festwert FV entspricht oder ob zwischen dem Paketfeldwert
PF und dem Festwert FV eine Übereinstimmung
vorhanden ist. Es wird darauf hingewiesen, dass bei der vorliegenden
Erfindung separat ein Paketfeldwert PF mit einem Wertebereich oder
separat ein Paketfeldwert PF mit einem Festwert FV oder einer Kombination
daraus verglichen werden kann.
-
2 zeigt
ein anderes Beispiel für
eine erfindungsgemäße Hardwarekonfiguration,
die basierend auf einer schnellen, flexiblen Bereichsprüfung eine
Paketfilterung durchführen
kann. Die Hardwarekonfiguration gemäß 2 kann eine
integrierte, modulate Ein-Chip-Lösung
sein und daher auf einem Halbleitersubstrat, wie etwa Silizium,
ausgeführt
werden. Alternativ kann die Hardwarekonfiguration gemäß 2 aus
einer Mehrzahl diskreter Komponenten auf einer Leiterplatte bestehen.
-
2 zeigt
ein Filter 5, das wenigstens einen Paketstrom 10 und
eine Mehrzahl an Speichereinheiten 20, 30, 40, 50 und 60 umfassen
kann. Der Paketstrom 10 kann beispielsweise 256 Bits umfassen,
wobei jedes Bit einen Bitwert darstellt. Wie vorstehend erwähnt, kann
das Filter 5 gemäß 2 Daten
in jedem beliebigen Datenformat verarbeiten, einschließlich eines
Datenpakets, eines Daten-Frames
oder einer Datenzelle, ohne jedoch darauf beschränkt zu sein.
-
Das
in 2 gezeigte Filter 5 kann eine Mehrzahl
von sechs Speichereinheiten 20, 30, 40, 50, 60 und 65 umfassen,
wobei jede Speichereinheit 20, 30, 40, 50, 60 und 65 eine
beliebige Speichereinheit sein kann, etwa ein Register. Die mehreren
Speichereinheiten 20, 30, 40, 50, 60 und 65 können darin programmierbare
Werte oder Information speichern und eine beliebige Breite oder
Bitlänge
besitzen. Darüber
hinaus kann jede Speichereinheit der mehreren Speichereinheiten 20, 30, 40, 50, 60 und 65 so
konfiguriert sein, dass sie wie vorstehend in Bezug auf die Speichereinheiten 20, 30, 40, 50, 60 und 65 von 1 beschrieben
arbeitet. Mit anderen Worten, 2 kann mehrere
Speichereinheiten 20, mehrere Speichereinheiten 30,
mehrere Speichereinheiten 40, mehrere Speichereinheiten 50,
mehrere Speichereinheiten 60 und mehrere Speichereinheiten 65 umfassen.
Dementsprechend zeigt 1 einen Satz Bereichsprüfungsregister
mit einem Satz Bereichsprüfwerte
BP, BL, PF, SR, ER und FV zur Implementierung einer Bereichsprüfungsoperation
an einem Paketfeld. Alternativ dazu, zeigt 2 mehrere
Sätze Bereichsprüfungsregister
mit mehreren Sätzen Bereichsprüfwerte BP,
BL, PF, SR, ER und FV zur Implementierung mehrerer Bereichsprüfungsoperationen
an mehreren Paketfeldern. Die mehre ren Bereichsprüfungsoperationen
an mehreren Paketfeldern können
parallel erfolgen, da die mehreren Speichereinheiten 20, 30, 40, 50, 60 und 65 mehrere
Werte für
eine Bereichsprüfung
an einem eingehenden Paketstrom 10 speichern können.
-
3 zeigt
ein weiteres Beispiel für
eine erfindungsgemäße Hardwarekonfiguration,
die basierend auf einer schnellen, flexiblen Bereichsprüfung eine
Paketfilterung durchführen
kann. Die Hardwarekonfiguration gemäß 3 kann eine
integrierte, modulare Ein-Chip-Lösung
sein und daher auf einem Halbleitersubstrat, wie etwa Silizium,
ausgeführt
werden. Alternativ kann die Hardwarekonfiguration gemäß 3 aus
einer Mehrzahl diskreter Komponenten auf einer Leiterplatte bestehen.
-
3 zeigt
eine Bereichsprüfungstabelle 70, die
dafür konfiguriert
sein kann, eine Mehrzahl Speichereinheiten tabellarisch zusammenzufassen.
Bei dieser Ausführungsform
kann jede Speichereinheit in der Bereichsprüfungstabelle 70 eine
separate, einzelne Speicherstelle oder ein separates, einzelnes Feld
der Bereichsprüfungstabelle 70 zum
Speichern der Bereichsprüffelder
darstellen, wie etwa eines Bitpositionswerts BP, eines Bitlängenwerts
BL, eines Startbereichswerts SR und eines Endbereichswerts ER sowie
eines Festwerts FV. 3 zeigt ferner einen Bereichsindexwert 80 der
erzeugt werden kann, nachdem ein Paketstrom geparst (analysiert)
oder maskiert worden ist. Nach dem Erzeugen des Bereichsindexwertes 80 kann
der Bereichsindexwert 80 auf die Bereichsprüfungstabelle 70 angewandt
oder indiziert werden, um auf die darin befindlichen Bereichsprüffelder
zuzugreifen und diese zu identifizieren.
-
4 zeigt
noch ein weiteres Beispiel für eine
erfindungsgemäße Hardwarekonfiguration,
die basierend auf einer schnellen, flexiblen Bereichsprüfung eine
Paketfilterung durchführen
kann. Die Hardwarekonfiguration gemäß 4 kann eine
integrierte, modulare Ein-Chip-Lösung
sein und daher auf einem Halbleitersubstrat, wie etwa Silizium,
ausgeführt werden.
Alternativ kann die Hardwarekonfiguration gemäß 4 aus einer
Mehrzahl diskreter Komponenten auf einer Leiterplatte bestehen.
-
4 zeigt
eine Folge von Registern, die als Felder 1-n bezeichnet sind. Die
Registerfolge umfasst mehrere Exakte-Übereinstimmungs-Register zur Überprüfung mehrerer
Felder auf exakte Übereinstimmung
und mehrere Register zur Bereichsprüfung. Die mehreren Exakte-Übereinstimmungs-Register
können
Exakte-Übereinstimmungs-Felder
zur Implementierung einer Überprüfung mehrerer
Felder auf exakte Übereinstimmung
speichern. Darüber
hinaus können
die mehreren Bereichsprüfungsregister Bereichsprüffelder
zur Implementierung einer Bereichsprüfung speichern, wie hierin
besprochen. Mit anderen Worten, 4 zeigt
ein Beispiel der vorliegenden Erfindung, wobei ein Satz Bereichsprüffelder als
Satz Erweiterungsregister konfiguriert werden kann, die den Exakte-Übereinstimmungs-Registern hinzugefügt werden.
-
5 zeigt
ein Beispiel für
ein erfindungsgemäßes Verfahren
zum Filtern eingehender Pakete. Das Verfahren gemäß dem vorliegenden
Beispiel kann in Hardware, Software oder einer Kombination aus Hardware
und Software implementiert werden.
-
Ein
Ingress-Port in einer Netzwerkvorrichtung kann wenigstens einen
Paketstrom 10 empfangen. Der Paketstrom 10 kann
eine beliebige Länge haben.
Bei diesem Beispiel kann der Paketstrom 10 eine Bitlänge von
256 Bits haben und bei Bit 0 beginnen und mit Bit 255 enden, wie
in 1 gezeigt. Demgemäß wird in Schritt 100 von 5 einn
Paketstrom in einem Ingress-Port einer Netzwerkvorrichtung empfangen.
-
Wie
vorstehend erwähnt,
kann ein Filter 5 eine Mehrzahl Speichereinheiten, wie
etwa die Speichereinheiten 20, 30, 40, 50 und 60,
oder mehrere Sätze
einer Mehrzahl Speichereinheiten 20, 30, 40, 50 und 60 umfassen.
Bei diesem Beispiel können
die Speichereinheiten aus mehreren Registern bestehen und darin
Werte oder Informationen oder mehrere Sätze Werte oder Informationen
speichern. Im Hinblick auf die Speichereinheiten 20, 30, 50 und 60 kann
jede dieser Speichereinheiten darin vorprogrammierte Werte speichern.
Demgemäß können in Schritt 110 von 5 wenigstens
vier separate Werte identifiziert werden, die jeweils in wenigstens
vier separaten Speichereinheiten gespeichert sind. In Schritt 110 werden
wenigstens ein in der Speichereinheit 20 gespeicherter
Bitpositionswert BP, wenigstens ein in der Speichereinheit 30 gespeicherter
Bitlängenwert
BL, wenigstens ein in der Speichereinheit 50 gespeicherter
Startbereichswert SR und wenigstens ein in der Speichereinheit 60 gespeicherter
Endbereichswert ER identifiziert.
-
Nachdem
in Schritt 110 der wenigstens eine Bitpositionswert BP
und der wenigstens eine Bitlängenwert
BL ermittelt worden sind, kann bei dem vorliegenden Beispiel in
Schritt 120 basierend auf den dem Bitpositionswert BP und
dem Bitlängenwert
BL entsprechenden Informationen wenigstens ein Paketfeld aus dem
Paketstrom 10 extrahiert werden. Nehmen wir beispielsweise
an, dass die wenigs tens eine Speichereinheit 20 einen vorprogrammierten dezimalen
Bitpositionswert von 118 speichern kann und dass die wenigstens
eine Speichereinheit 30 einen vorprogrammierten dezimalen
Bitlängenwert
von 16 speichern kann. In Schritt 110 von 5 können daher
diese zwei Werte BP und BL identifiziert werden, wobei in Schritt 120 mit
diesen zwei Werten ein Paketfeld mit einer Länge von 16 Bits beginnend bei der
Bitposition 118 im Paketstrom 10 extrahiert werden
kann.
-
Nach
dem Extrahieren wenigstens eines Paketfeldes in Schritt 120 von 5 kann
wenigstens ein extrahierter Paketfeldwert PF basierend auf dem wenigstens
einen extrahierten Paketfeld bestimmt werden, wobei der wenigstens
eine extrahierte Paketteldwert PF in Schritt 130 temporär in der
Speichereinheit 40 gespeichert werden kann. Nehmen wir beispielsweise
an, dass bestimmt wird, dass das wenigstens eine extrahierte Paketfeld
einen extrahierten Paketfelddezimalwert von 68 hat. Dieser
Dezimalwert von 68 kann in Schritt 130 temporär in der Speichereinheit 40 gespeichert
werden.
-
Wie
vorstehend erwähnt,
kann bei dem vorliegenden Beispiel in Schritt 110 wenigstens
ein Startbereichswert SR und wenigstens ein Endbereichswert ER identifiziert
werden. Der wenigstens eine Startbereichswert SR und der wenigstens
eine Endbereichswert ER können
daher einen unteren Grenzwert und einen oberen Grenzwert eines Satzes Bereichswerte
festlegen. In Schritt 140 kann bei dem vorliegenden Beispiel
wenigstens ein extrahierter Paketfeldwert PF mit wenigstens einem
oder gegen wenigstens einen Satz Bereichswerte ver- oder abgeglichen
werden, die durch den Startbereichswert SR und den Endbereichswert
ER festgelegt sind. Nehmen wir beispielsweise an, dass wenigstens
eine Speichereinheit 50 einen vorprogrammierten dezimalen
Startbereichswert SR von 60 und wenigstens eine Speichereinheit 60 einen
vorprogrammierten dezimalen Endbereichswert ER von 80 speichern kann.
Demgemäß wird wenigstens
ein Satz Bereichswerte durch eine Untergrenze 60 und eine Obergrenze 80 festgelegt.
In Schritt 140 von 5 kann daher
ein extrahierter Paketfelddezimalwert von 68, der temporär in der
Speichereinheit 40 gespeichert wird, mit dem oder gegen
den Wertebereich zwischen 60 und 80 ver- oder
abgeglichen werden.
-
Nach
dem Ver- oder Abgleichen des wenigstens einen extrahierten Paketfeldwertes
PF mit wenigstens einem oder gegen wenigstens einen Satz Bereichswerte,
der durch einen Startbereichswert SR und einen Endbereichswert ER
festgelegt ist, kann in Schritt 140 ferner entschieden
werden, ob der wenigstens eine extrahierte Paketfeldwert PF entweder innerhalb
des wenigstens einen Satzes Bereichswerte liegt, der die Start-
und Endbereichswerte SR und ER umfasst, oder ob der wenigstens eine
extrahierte Paketwert PF außerhalb
des wenigstens einen Satzes Bereichswerte liegt. Wenn der wenigstens
eine extrahierte Paketfeldwert PF innerhalb des wenigstens einen
Satzes Bereichswerte liegt, dann bestimmt die vorliegende Erfindung,
dass eine Übereinstimmung
vorhanden ist. Wenn jedoch der wenigstens eine extrahierte Paketfeldwert
PF außerhalb
des wenigstens einen Satzes Bereichswerte liegt, dann bestimmt die
Erfindung, dass keine Übereinstimmung
vorhanden ist.
-
Wenn
der wenigstens eine extrahierte Paketfeldwert PF innerhalb des wenigstens
einen Satzes Bereichswerte liegt, der durch den Startbereichswert SR
und den Endbereichswert ER festgelegt ist, dann kann die vorliegende
Erfindung mit Schritt 150 fortfahren, in dem eine Tätigkeitsausführungs-
oder Aktionsimplementierungseinheit 90 wenigstens eine Tätigkeit
oder Aktion von mehreren möglichen
Exakte-Übereinstimmungs-Aktionen
in Bezug auf den Paketstrom 10 ausführen kann. Wenn jedoch der
wenigstens eine extrahierte Paketteldwert 45 außerhalb des
wenigstens einen Satzes Bereichswerte liegt, dann kann das vorliegende
Beispiel mit Schritt 160 fortfahren, in dem mehrere Aufgaben
oder Operationen oder wenigstens eine Aktion von mehreren möglichen
Keine-Übereinstimmungs-Aktionen
am Paketstrom 10 aus- oder
durchgeführt
werden können.
-
Daher
kann in Schritt 140, nach dem Ver- oder Abgleichen des
extrahierten Paketfeldwerts PF von 68 mit dem oder gegen
den Wertebereich von 60 bis 80, der den unteren
Grenzwert von 60 und den oberen Grenzwert von 80 umfasst,
bestimmt werden, dass der extrahierte Paketfeldwert von 68 innerhalb des
Wertebereichs zwischen 60 und 80 liegt, weshalb
bestimmt wird, dass eine Übereinstimmung
vorliegt. Da eine Übereinstimmung
vorhanden ist, kann in Schritt 150 der vorliegenden Erfindung
wenigstens eine Aktion von mehreren möglichen Exakte-Übereinstimmungs-Aktionen
in Bezug auf den Paketstrom 10 ausgeführt werden. Nehmen wir alternativ
dazu an, dass der extrahierte Paketteldwert PF 49 statt 68 beträgt. Dann
kann in Schritt 140 bestimmt werden, dass der extrahierte
Paketfeldwert PF von 49 außerhalb des Wertebereiches
von 60 bis 80 liegt, weshalb bestimmt wird, dass
keine Übereinstimmung
vorliegt ist. Nach dieser Bestimmung geht die vorliegende Erfindung
zu Schritt 160 über
und kann mehrere Aufgaben oder wenigstens eine Aktion von mehreren
möglichen
Keine-Übereinstimmungs-Aktionen
in Bezug auf den Paketstrom 10 durchführen.
-
Es
wird darauf hingewiesen, dass die hierin angegebenen spezifischen
Beispiele, Beispiele der vorliegenden Erfindung sind und den Schutzumfang derselben
in keiner Weise einschränken
sollen.
-
6 zeigt
ein weiteres Beispiel für
ein erfindungsgemäßes Verfahren
zum Filtern eingehender Pakete. Das Verfahren gemäß diesem
Beispiel kann in Hardware, Software oder einer Kombination aus Hardware
und Software implementiert werden.
-
In
Schritt 105 von 6 kann in einem Ingress-Port
in einer Netzwerkvorrichtung ein Paketstrom 10 empfangen
werden. Der Paketstrom 10 kann eine beliebige Länge haben.
Bei diesem Beispiel kann der Paketstrom 10 eine Bitlänge von
256 Bits haben und bei Bit 0 beginnen und mit Bit 255 enden, wie
in 1 gezeigt.
-
Wie
vorstehend erwähnt,
kann ein Filter 5 eine Mehrzahl Speichereinheiten, wie
etwa die Speichereinheiten 20, 30, 40 und 65,
oder mehrere Sätze einer
Mehrzahl Speichereinheiten 65 umfassen. Bei diesem Beispiel
können
die Speichereinheiten aus mehreren Registern bestehen und darin
Werte oder Informationen oder mehrere Sätze Werte oder Informationen
speichern. Im Hinblick auf die Speichereinheiten 20, 30 und 65 kann
jede dieser Speichereinheiten darin vorprogrammierte Werte speichern. Demgemäß können in
Schritt 115 von 6 wenigstens drei separate Werte
identifiziert werden, die jeweils in wenigstens drei separaten Speichereinheiten gespeichert
sind. In Schritt 115 werden wenigstens ein in der Speichereinheit 20 gespeicherter
Bitpositionswert BP, wenigstens ein in der Speichereinheit 30 gespeicherter
Bitlängenwert
BL und wenigstens ein in der Speichereinheit 60 gespeicherter
Festwert FV identifiziert.
-
Nachdem
in Schritt 115 der wenigstens eine Bitpositionswert BP
und der wenigstens eine Bitlängenwert
BL identifiziert worden sind, kann bei dem vorliegenden Beispiel
in Schritt 125 basierend auf den dem Bitpositionswert BP
und dem Bitlängenwert BL
entsprechenden Informationen wenigstens ein Paketfeld aus dem Paketstrom 10 extrahiert
werden. Nehmen wir beispielsweise an, dass die wenigstens eine Speichereinheit 20 einen
vorprogrammierten dezimalen Bitpositionswert von 118 speichern
kann und dass die wenigstens eine Speichereinheit 30 einen
vorprogrammierten dezimalen Bitlängenwert
von 16 speichern kann. In Schritt 115 von 6 können daher
diese zwei Werte BP und BL identifiziert werden, wobei in Schritt 125 mit
diesen zwei Werten ein Paketfeld mit einer Länge von 16 Bits beginnend bei der
Bitposition 118 im Paketstrom 10 extrahiert werden
kann.
-
Nach
dem Extrahieren wenigstens eines Paketfeldes in Schritt 125 von 6 kann
wenigstens ein extrahierter Paketfeldwert PF basierend auf dem wenigstens
einen extrahierten Paketfeld bestimmt werden, wobei der wenigstens
eine extrahierte Paketteldwert PF in Schritt 135 temporär in der
Speichereinheit 40 gespeichert werden kann. Nehmen wir beispielsweise
an, dass bestimmt wird, dass das wenigstens eine extrahierte Paketfeld
einen extrahierten Paketfelddezimalwert von 68 hat. Dieser
Dezimalwert von 68 kann in Schritt 135 temporär in der Speichereinheit 40 gespeichert
werden.
-
Wie
vorstehend erwähnt,
kann bei dem vorliegenden Beispiel in Schritt 115 wenigstens
ein in der Speichereinheit 65 gespeicherter Festwert FV identifiziert
werden. In Schritt 145 kann bei dem vorliegenden Beispiel
wenigstens ein extrahierter Paketfeldwert PF mit wenigstens einem
oder gegen wenigstens einen Festwert FV ver- oder abgeglichen werden.
Nehmen wir beispielsweise an, dass wenigstens ein Festwert FV einen
festen Wert von 68 hat, dann kann in Schritt 145 von 6 daher
ein extrahierter Paketfelddezimalwert PF von 68, der temporär in der
Speichereinheit 40 gespeichert wird, mit dem oder gegen
den Festwert von 68 ver- oder abgeglichen werden.
-
Nach
dem Ver- oder Abgleichen wenigstens eines extrahierten Paketfeldwertes
PF mit wenigstens einem oder gegen wenigstens einen Festwert FV,
kann in Schritt 145 ferner entschieden werden, ob der wenigstens
eine extrahierte Paketfeldwert PF entweder dem wenigstens einen
Festwert FV entspricht, wobei eine Übereinstimmung vorliegt, oder ob
der wenigstens eine extrahierte Paketwert PF nicht dem wenigstens
einen Festwert FV entspricht, wobei keine Übereinstimmung vorliegt. Wenn
der wenigstens eine extrahierte Paketteldwert PF dem wenigstens
einen Festwert FV entspricht, dann bestimmt die vorliegende Erfindung,
dass eine Übereinstimmung
vorhanden ist. Wenn jedoch der wenigstens eine extrahierte Paketfeldwert
PF nicht dem wenigstens einen Festwert FV entspricht, dann bestimmt
die Erfindung, dass keine Übereinstimmung vorhanden
ist.
-
Wenn
der wenigstens eine extrahierte Paketfeldwert PF dem wenigstens
einen Festwert FV entspricht, dann kann die vorliegende Erfindung
mit Schritt 155 fortfahren, in dem eine Aktionsimplementierungseinheit 90 wenigstens
eine Aktion von mehreren möglichen
Exakte-Übereinstimmungs-Aktionen
in Bezug auf den Paketstrom 10 ausführen kann. Wenn jedoch der
wenigstens eine extrahierte Paketfeldwert 45 nicht dem
wenigstens einen Festwert FV entspricht, dann kann das vorliegende
Beispiel mit Schritt 165 fortfahren, in dem mehrere Aufgaben
oder Operationen oder wenigstens eine Aktion von mehreren möglichen
Keine-Übereinstimmungs-Aktionen am
Paketstrom 10 aus- oder durchgeführt werden können.
-
Es
wird darauf hingewiesen, dass die in den 5 und 6 dargestellten
Beispiele erfindungsgemäß separat
voneinander oder zusammen oder in einer beliebigen Kombination daraus
implementiert werden können.
-
7 zeigt
ein weiteres Beispiel für
ein erfindungsgemäßes Verfahren
zum Filtern eingehender Pakete. Das Verfahren gemäß diesem
Beispiel kann in Hardware, Software oder einer Kombination aus Hardware
und Software implementiert werden.
-
In
Schritt 200 von 7 kann in einem Filter 5 ein
Paketstrom 10 empfangen werden, wobei der Paketstrom 10 eine
beliebige Länge
haben kann. Bei diesem Beispiel kann der Paketstrom 10 eine
Bitlänge
von 256 Bits haben und bei Bit 0 beginnen und mit Bit 255 enden.
-
Nach
dem Empfang des Paketstroms 10 kann bei dem vorliegenden
Beispiel in Schritt 210 der Paketstrom basierend auf vorprogrammierten
Instruktionen geparst werden. Danach kann in Schritt 220 ein
Bereichsindexwert 80 erzeugt werden. Der Bereichsindexwert 80 kann
ein Binärwert
sein oder ein beliebiges Werteformat haben. Sobald der Bereichsindexwert 80 erzeugt
worden ist, kann bei dem vorliegenden Beispiel in Schritt 230 der
Bereichsindexwert 80 auf eine Bereichsprüfungstabelle 70 angewandt
oder indiziert werden, wobei die Bereichsprüfungstabelle 70 mehrere
Bereichsprüffelder
umfassen kann, wie etwa einen Bitpositionswert BP, einen Bitlängenwert
BL, einen Startbereichswert SR und einen Endbereichswert ER sowie
einen Festwert FV. Nach dem Anwenden oder Indizieren des Bereichsindexwertes 80 auf
die Bereichsprüfungstabelle 70 kann
in dem Verfahrensschritt 110 von 5 wenigstens
ein Bitpositionswert BP, wenigstens ein Bitlängenwert BL, wenigstens ein
Startbereichswert SR und wenigstens ein Endbereichswert ER in der Bereichsprüfungstabelle 70 identifiziert
werden. Zusätzlich
oder alternativ dazu kann, nach dem Anlegen oder Indizieren des
Bereichsindexwertes 80 auf die Bereichsprüfungstabelle 70,
im Verfahrensschritt 115 von 6 wenigstens
ein Bitpositionswert BP, wenigstens ein Bitlängenwert BL und ein Festwert
FV in der Bereichsprüfungstabelle 70 identifiziert
werden. Danach folgt 7 den Verfahrensschritten, die
vorstehend in Bezug auf die Bereichsprüfungsschritte 120, 130, 140, 150 und 160 von 5 und/oder
die Schritte 125, 135, 145, 155 und 165 von 6 beschrieben
sind.
-
Obgleich
die Erfindung basierend auf diesen bevorzugten Ausführungsformen
und Beispielen beschrieben worden ist, wird darauf hingewiesen,
dass das Verfahren und ein Filter zum Verarbeiten eines Pakets basierend
auf einer schnellen, flexiblen Bereichsprüfung gemäß der vorliegenden Erfindung
im Hinblick auf die Art und Weise der Implementierung flexibel sein
können.
Das Verfahren und ein Filter zum Verarbeiten eines Pakets basierend
auf einer schnellen, flexiblen Bereichsprüfung können beispielsweise implementiert
werden, sobald ein Paketstrom 10 in einer Netzwerkvorrichtung
oder einem Filter ankommt, wenn ein Paketstrom 10 geparst wird,
nachdem der Paketstrom 10 geparst worden ist, oder wenn
der Paketstrom 10 nach einer gewissen Verarbeitung und
daran durchgeführten
Modifikationen zur Verfügung
gestellt wird, oder mit einer Überprüfung mehrerer
Felder auf exakte Übereinstimmung
kombiniert werden, wobei ein Satz Bereichsprüffelder als Satz Erweiterungsregister
mit einem Satz Exakte-Übereinstimmungs-Register
kombiniert werden kann.
-
Die
vorstehend offenbarten Konfigurationen der vorliegenden Erfindung
können
eine integrierte, modulare Ein-Chip-Lösung sein und auf einem Halbleitersubstrat,
wie etwa Silizium, implementiert werden. Des Weiteren können die
hierin offenbarten Verfahren zum Filtern eines Pakets in Hardware,
Software oder einer Kombination aus Hardware und Software implementiert
werden. Darüber
hinaus sollte ein Fachmann auf dem Gebiet der Halbleiterkonzipierung
und -konstruktion dazu in der Lage sein, die verschiedenen Elemente
und Verfahren der vorliegenden Erfindung basierend auf der vorstehenden
architektonischen Beschreibung auf einem einzelnen Halbleitersubstrat
zu implementieren.
-
Ein
Durchschnittsfachmann auf dem Gebiet wird leicht erkennen, dass
die vorstehend beschriebene Erfindung auch mit einer anderen Reihenfolge der
Schritte und/oder mit Hardwareelementen in Konfigurationen umgesetzt
werden kann, die sich von den offenbarten unterscheiden. Zur Bestimmung des
Maßes
und Ziels der vorliegenden Erfindung sollte daher auf die anhängigen Ansprüche Bezug
genommen werden.