DE60303622T2 - Verfahren zur Netzpaket-Filterung basierend auf einer konditionellen Ausdruckstabelle - Google Patents

Verfahren zur Netzpaket-Filterung basierend auf einer konditionellen Ausdruckstabelle Download PDF

Info

Publication number
DE60303622T2
DE60303622T2 DE60303622T DE60303622T DE60303622T2 DE 60303622 T2 DE60303622 T2 DE 60303622T2 DE 60303622 T DE60303622 T DE 60303622T DE 60303622 T DE60303622 T DE 60303622T DE 60303622 T2 DE60303622 T2 DE 60303622T2
Authority
DE
Germany
Prior art keywords
match
conditional expression
bitmap
action
mask
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60303622T
Other languages
English (en)
Other versions
DE60303622D1 (de
Inventor
Sandeep Relan
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Broadcom Corp
Original Assignee
Broadcom Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Broadcom Corp filed Critical Broadcom Corp
Application granted granted Critical
Publication of DE60303622D1 publication Critical patent/DE60303622D1/de
Publication of DE60303622T2 publication Critical patent/DE60303622T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/742Route cache; Operation thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Description

  • HINTERGRUND DER ERFINDUNG:
  • Gebiet der Erfindung:
  • Die vorliegende Erfindung betrifft ein Verfahren und eine Vorrichtung zur Hochleistungs-Paketfilterung in einer Kommunikationsnetzwerkumgebung wie zum Beispiel einer Token Ring-, ATM-, Ethernet-, Fast-Ethernet- und Gigabit-Ethernet-Umgebung. Darüber hinaus kann die vorliegende Erfindung bei jeder auf Paketen basierenden Medienumgebung verwendet werden. Insbesondere betrifft die vorliegende Erfindung ein Paketfilter und ein Verfahren zur Filterung eines Pakets, die auf einem Halbleitersubstrat wie z.B. einem Silizium-Chip implementiert werden können.
  • Beschreibung des Standes der Technik:
  • Bei Netzwerkanwendungen betritt ein ankommendes Paket einen Eingangsport einer Netzwerkkomponente, wie etwa ein Schaltelement (Switch), wobei die Netzwerkkomponente das ankommende Paket verarbeitet und dieses zu einem Ausgangsport leitet. Bei der Verarbeitung des ankommenden Pakets kann die Netzwerkkomponente das ankommende Paket auf der Eingangsseite der Netzwerkkomponente untersuchen und kann Adressierungs- und Routing-Informationen feststellen, um die Netzwerkperformanz zu verbessern.
  • Die Netzwerkkomponente kann eine Adressierungs- und Verarbeitungslogik an das ankommende Paket anlegen. Die WO 00/56024 und die WO 01/37115 offenbaren ein Netzwerk-Schaltelement auf der Basis einer Filtereinheit zur Konstruktion und zum Anlegen eines Filters an ausgewählte Felder des ankommenden Pakets, das sich auf vollständige und teilweise Übereinstimmungs-Suchvorgänge stützt.
  • ZUSAMMENFASSUNG DER ERFINDUNG:
  • Die vorliegende Erfindung wird durch ein Verfahren gemäß Anspruch 1 definiert, während vorteilhafte Ausführungsbeispiele der Erfindung durch die Unteransprüche definiert werden.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN:
  • Zum richtigen Verständnis der Erfindung sollte Bezug auf die beigefügten Zeichnungen genommen werden, in denen:
  • 1 ein Beispiel einer Konfiguration zur Filterung eines Pakets gemäß der vorliegenden Erfindung veranschaulicht;
  • 2 ein Ablaufdiagramm veranschaulicht, das ein Beispiel eines Verfahrens zur Filterung eines Pakets gemäß der vorliegenden Erfindung veranschaulicht;
  • 3 ein anderes Beispiel der vorliegenden Erfindung veranschaulicht;
  • 4 ein Beispiel einer Regeltabelle veranschaulicht;
  • 5 ein Beispiel einer bedingten Ausdruckstabelle veranschaulicht, die darin Aktions-Bitmaps enthalten kann;
  • 6 ein Beispiel einer bedingten Ausdruckstabelle veranschaulicht, die darin Zeiger enthalten kann;
  • 7 ein Beispiel einer Aktions-Tabelle veranschaulicht;
  • 8 ein Beispiel einer Konfiguration zur Filterung eines Pakets veranschaulicht, das wenigstens eine Untermengen-Maske enthalten kann; und
  • 9 ein Ablaufdiagramm veranschaulicht, das ein Beispiel eines Verfahrens zur Filterung eines Pakets veranschaulicht, das wenigstens eine Untermengen-Maske verwenden kann.
  • GENAUE BESCHREIBUNG DES/DER BEVORZUGTEN AUSFÜHRUNGSBEISPIEL(E):
  • 1 veranschaulicht ein Beispiel einer Hardware-Konfiguration gemäß der vorliegenden Erfindung, die eine Paketfilterung durchführen kann. Die Durchführung der Paketfilterung kann auch als Paketklassifikation bezeichnet werden. Deshalb können die hier bereitgestellten Hardware-Konfigurationen und Beispiele auch eine Paketklassifikation durchführen.
  • Wie in 1 gezeigt ist, kann die Konfiguration eine Maskentabelle 10, eine Speicherungs- oder Speichereinheit (storage or memory unit), die so konfiguriert ist, dass sie eine Übereinstimmungs-Bitmap (match bitmap) 20 speichern kann, und eine bedingte Ausdruckstabelle (conditional expression table) 30 enthalten. Die Maskentabelle 10, die Speicherungs- oder Speichereinheit und die bedingte Ausdruckstabelle von 1 können zum Beispiel auf einem Halbleitersubstrat wie etwa Silizium verwirklicht werden.
  • Die Maskentabelle 10 kann eine Vielzahl von Maskeneinträgen aufweisen. Jeder Maskeneintrag kann eine Filtermaske für das Maskieren eines ankommenden Pakets auf der Grundlage wenigstens einer programmierbaren Bedingung repräsentieren. Deshalb kann jeder Maskeneintrag mit einer Filterungsbedingung oder einer Vielzahl von Filterungsbedingungen, einschließlich, aber nicht beschränkt auf eine Bedingung einer exakten Übereinstimmung oder einer Teilbit-Übereinstimmung, vorprogrammiert werden. Demgemäß kann die Maskentabelle 10 ein ankommendes Paket auf der Basis von vorprogrammierten Bedingungen durch jeden einzelnen Maskeneintrag darin maskieren.
  • Die Übereinstimmungs-Bitmap 20 kann eine Bitmap sein, die eine Bitlänge aufweist, die gleich der Anzahl an Maskeneinträgen in der Maskentabelle 10 ist. Alternativ dazu kann die Übereinstimmungs-Bitmap 20 eine Bitmap sein, die eine Bitlänge aufweist, die kleiner als die Anzahl von Maskeneinträgen in der Maskentabelle 10 ist, was durch Komprimierungstechniken bewerkstelligt werden kann. Zum Beispiel kann die Übereinstimmungs-Bitmap 20 auf eine Bitlänge komprimiert werden, die kleiner als die Anzahl an Maskeneinträgen ist, indem eine Operation wie etwa eine UND-, ODER- oder eine exklusive ODER-Operation der mehrfachen Maskeneinträge implementiert wird, um eine Bitmap mit einer Einbitlänge zu erzielen. Zum Beispiel kann eine Maskentabelle mit sechzehn Maskeneinträgen eine endgültige Übereinstimmungs-Bitmap von 8 Bits in der Länge aufweisen, indem eine UND-Operation der Übereinstimmungs-Bitmaps von zwei benachbarten Maskeneinträgen implementiert wird.
  • Jede Bitposition der Übereinstimmungs-Bitmap 20 kann eine Länge von einem Bit aufweisen und kann einem bestimmten Maskeneintrag in der Maskentabelle 10 entsprechen. Außerdem kann jede Bitposition der Übereinstimmungs-Bitmap 20 als ein bedingtes Flag gesetzt werden. In einem Beispiel kann jede Bitposition mit einem bedingten Flag von entweder 1 oder 0 gesetzt werden. Außerdem kann jede Bitposition mit einem bedingten Flag 1 gesetzt werden, wenn eine Übereinstimmung des maskierten Pakets in dem entsprechenden Maskeneintrag vorliegt. Im Gegensatz dazu kann jede Bitposition mit einem bedingten Flag 0 gesetzt werden, wenn eine Null-Übereinstimmung des maskierten Pakets in dem entsprechenden Maskeneintrag vorliegt. Deshalb kann die Übereinstimmungs-Bitmap 20 zu einer Bitmap führen, die in jeder Bitposition der Übereinstimmungs-Bitmap 20 ein Bit 1 oder 0 aufweist, wobei das Setzen des bedingten Flag abhängig davon sein kann, ob in dem entsprechenden Maskeneintrag jeweils eine Übereinstimmung oder eine Null-Übereinstimmung vorliegt. Als eine Folge davon kann die Übereinstimmungs-Bitmap 20 eine Bitlänge von Einsen und/oder Nullen aufweisen, die gleich der Anzahl der Maskeneinträge in der Maskentabelle 10 ist. Diese Übereinstimmungs-Bitmap 20 kann ein Vektor sein, der danach an die bedingte Ausdruckstabelle 30 angelegt und in diese indexiert werden kann. Außerdem kann die Übereinstimmungs-Bitmap 20 zu jedem binären Verschlüsselungssystem, wie etwa dem BCD- oder dem Grey-Verschlüsselungssystem, gehören.
  • Die bedingte Ausdruckstabelle 30, wie sie in 1 gezeigt ist, kann so konfiguriert sein, dass sie eine Vielzahl von bedingten Ausdruckseinträgen umfasst, die darin vorprogrammiert sein können. Es kann sein, dass die Anzahl der bedingten Ausdruckseinträge keine abhängige Beziehung zu der Anzahl an Maskeneinträgen in der Maskentabelle 10 aufweist. In einem Beispiel kann jeder bedingte Ausdruckseintrag einen vorprogrammierten bedingten Ausdruck enthalten, der darin Bit-Nullen und/oder Bit-Einsen aufweist. In einem anderen Beispiel kann jeder bedingte Ausdruckseintrag einen vorprogrammierten Wert enthalten. Die Bitlänge jedes bedingten Ausdruckeintrags kann gleich der Bitlänge der Übereinstimmungs-Bitmap 20 sein.
  • Außerdem kann die bedingte Ausdruckstabelle 30 so konfiguriert sein, dass sie eine Vielzahl von Aktionen umfasst, die bei dem ankommenden Paket ergriffen oder implementiert werden sollen. Jede Aktion kann in ähnlicher Weise in der bedingten Ausdruckstabelle 30 vorprogrammiert sein und kann in der Form eines Opcodes oder von Operationsanweisungen vorliegen. In einem Beispiel der vorliegen den Erfindung kann/können eine oder mehrere Aktionen mit einem jeweiligen bedingten Ausdruckseintrag assoziiert sein oder diesem entsprechen. Mit anderen Worten, jeder einzelne der bedingten Ausdruckseinträge kann mit einer oder mehreren vorprogrammierten Aktionen in der bedingten Ausdruckstabelle 30 assoziiert sein oder dieser/diesen entsprechen. Somit kann jedes Aktionsfeld in der bedingten Ausdruckstabelle 30 eine oder mehrere Aktionen darin enthalten.
  • Des Weiteren kann die bedingte Ausdruckstabelle 30 so konfiguriert sein, dass sie wenigstens einen Null-Übereinstimmungs-Standard-Ausdruckseintrag umfasst, der auch in die bedingte Ausdruckstabelle 30 vorprogrammiert sein kann. Der Null-Übereinstimmungs-Standard-Ausdruckseintrag kann zum Beispiel entweder ein Standardausdruck sein, der bei allen Bits Nullen enthält, kann ein vorprogrammierter Wert sein oder kann irgendeine Einrichtung zur Identifizierung eines Null-Übereinstimmungs-Standardausdrucks sein. Wie oben erwähnt worden ist, kann die bedingte Ausdruckstabelle 30 eine Vielzahl von vorprogrammierten Aktionen umfassen, die bei dem ankommenden Paket ergriffen oder implementiert werden sollen. Demgemäß kann der Null-Übereinstimmungs-Standard-Ausdruckseintrag mit einer oder mehreren vorprogrammierten Standardaktion(en) in der bedingten Ausdruckstabelle 30 assoziiert sein oder dieser/diesen entsprechen.
  • Es sei angemerkt, dass die bedingte Ausdruckstabelle 30 auch so konfiguriert sein kann, dass sie keine Null-Übereinstimmungs-Standard-Ausdruckseinträge aufweist. In einem Beispiel, bei dem die bedingte Ausdruckstabelle 30 keine Null-Übereinstimmungs-Standard-Ausdruckseinträge enthält, kann die vorliegende Erfindung eine oder mehrere feste vorprogrammierbare Standard-Null-Übereinstimmungs-Aktion(en), die bei einem Paket implementiert werden soll(en), in der Filterungslogik der Filtervorrichtung bereitstellen. Alternativ dazu kann die vorliegende Erfindung dann keine Standard-Null-Übereinstimmungs-Aktion bereitstellen, wenn in der Filtervorrichtung eine Null-Übereinstimmungs-Bedingung vorliegt.
  • 2 veranschaulicht ein Beispiel eines Verfahrens zur Filterung ankommender Pakete gemäß der vorliegenden Erfindung. Das Verfahren des vorliegenden Beispiels kann in Hardware oder Software oder in einer Kombination von sowohl Hardware als auch Software implementiert werden.
  • Ein ankommendes Paket kann durch jeden Maskeneintrag in der Maskentabelle 10 maskiert werden. Jeder Maskeneintrag kann vorprogrammiert werden, um irgendeine Bedingung, die mit dem maskierten ankommenden Paket abgeglichen werden soll, festzulegen. Somit kann das ankommende Paket durch jeden einzelnen vorprogrammierten Maskeneintrag in der Maskentabelle 10 maskiert werden, um festzustellen, ob eine Übereinstimmung oder eine Null-Übereinstimmung der in den Maskeneinträgen vorprogrammierten Bedingungen vorliegt.
  • Ferner ist in 2 gezeigt, dass eine Übereinstimmungs-Bitmap 20 als ein Resultat des Maskierens und des Abgleichens der ankommenden Pakete in jedem der Maskeneinträge in der Speicherungs- oder Speichereinheit festgelegt und/oder generiert werden kann. Die Übereinstimmungs-Bitmap 20 kann eine Bitlänge aufweisen, die gleich der Anzahl der Maskeneinträge in der Maskentabelle 10 ist. Eine Übereinstimmung in irgendeinem der vorprogrammierten Maskeneinträge darin kann die entsprechende Bitposition der Übereinstimmungs-Bitmap 20 mit einem ersten bedingten Flag wie etwa einem Bit 1 setzen. Andererseits kann eine Null-Übereinstimmung in irgendeinem der Maskeneinträge darin die entsprechende Bitposition der Übereinstimmungs-Bitmap 20 mit einem zweiten bedingten Flag wie etwa einem Bit 0 setzen. Deshalb kann sich daraus ergeben, dass jede Bitposition entweder eine 1 oder eine 0 in Abhängigkeit davon aufweist, ob in dem entsprechenden Maskeneintrag jeweils eine Übereinstimmung oder eine Null-Übereinstimmung vorliegt. Entsprechend kann die Übereinstimmungs-Bitmap 20 in der Speicherungs- oder Speichereinheit entweder eine Bitmap von Einsen und/oder Nullen sein, wobei jede Bitposition einem jeweiligen Maskeneintrag entspricht, der anzeigt, ob in der jeweiligen Maske eine Übereinstimmung oder eine Null-Übereinstimmung vorliegt.
  • Alternativ dazu kann die Übereinstimmungs-Bitmap 20 eine Bitlänge aufweisen, die kleiner als die Anzahl von Maskeneinträgen in der Maskentabelle 10 ist. Zum Beispiel kann die Übereinstimmungs-Bitmap 20 auf eine Bitlänge komprimiert werden, die kleiner als die Anzahl von Maskeneinträgen ist, indem eine Operation wie zum Beispiel eine UND-, ODER- oder eine exklusive ODER-Operation der mehrfachen Maskeneinträge implementiert wird, um eine Bitmap mit einer Einbitlänge zu erzielen. Zum Beispiel kann eine Maskentabelle mit sechzehn Maskeneinträgen eine endgültige Übereinstimmungs-Bitmap von 8 Bits in der Länge aufweisen, indem eine UND-Operation bei den Übereinstimmungs-Bitmaps von zwei benachbarten Maskeneinträgen implementiert wird.
  • 2 zeigt auch das Verfahren, bei dem die Übereinstimmungs-Bitmap 20 an eine bedingte Ausdruckstabelle 30 angelegt und in diese indexiert werden kann. Wie oben erwähnt worden ist, kann die bedingte Ausdruckstabelle 30 eine Vielzahl von vorprogrammierten bedingten Ausdruckseinträgen, einen Null-Übereinstimmungs-Standard-Ausdruckseintrag oder sogar eine Vielzahl von Null-Übereinstimmungs-Standard-Ausdruckseinträgen und eine Vielzahl von Aktionen darin umfassen. Wie oben ebenfalls angemerkt worden ist, kann die bedingte Ausdruckstabelle 30 auch so konfiguriert sein, dass sie überhaupt keine Null-Übereinstimmungs-Standard-Ausdruckseinträge aufweist. In einem Beispiel, bei dem die bedingte Ausdruckstabelle 30 keine Null-Übereinstimmungs-Standard-Ausdruckseinträge enthält, kann die vorliegende Erfindung eine oder mehrere feste vorprogrammierbare Standard-Null-Übereinstimmungs-Aktion(en), die bei einem Paket implementiert werden soll(en), innerhalb der Filterungslogik der Filtervorrichtung bereitstellen. Alternativ dazu kann es sein, dass die vorliegende Erfindung keine Standard-Null-Übereinstimmungs-Aktion, egal welcher Art, bereitstellt, wenn eine Null-Übereinstimmungs-Bedingung in der Filtervorrichtung vorliegt.
  • Da jeder bedingte Ausdruck zum Beispiel eine Zeichenkette von Nullen und/oder Einsen mit einer Bitlänge sein kann, die gleich der Bitlänge der Übereinstimmungs-Bitmap 20 ist, kann die Übereinstimmungs-Bitmap 20 an die bedingte Ausdruckstabelle 30 angelegt und in diese indexiert werden, um festzustellen, ob eine Übereinstimmung oder eine Null-Übereinstimmung zwischen der Übereinstimmungs-Bitmap 20 und irgendeinem der vorprogrammierten bedingten Ausdrücke vorliegt. Deshalb kann bei der Festlegung und/oder Generierung einer Übereinstimmungs-Bitmap 20 auf der Grundlage des Maskierens des ankommenden Pakets in der Maskentabelle 10 die generierte Übereinstimmungs-Bitmap 20 an die bedingte Ausdruckstabelle 30 angelegt und in diese indexiert werden. Mit anderen Worten, die generierte Übereinstimmungs-Bitmap 20 kann mit jedem bedingten Ausdruckseintrag verglichen werden, um festzustellen, ob aus dem Vergleich eine Übereinstimmung oder eine Null-Übereinstimmung vorliegt.
  • Wenn festgestellt wird, dass eine Übereinstimmung vorliegt, wenn die Übereinstimmungs-Bitmap 20 an die bedingte Ausdruckstabelle 30 angelegt und in diese indexiert wird, dann kann wenigstens eine Aktion, die dem übereinstimmenden bedingten Ausdruckseintrag entspricht, bei dem ankommenden Paket ausgeführt und/ oder implementiert werden. Aber wenn beim Anlegen und Indexieren der Übereinstimmungs-Bitmap 20 in die bedingte Ausdruckstabelle 30 festgestellt wird, dass eine Null-Übereinstimmung vorliegt, dann kann der Null-Übereinstimmungs-Standardausdruck zusammen mit wenigstens einer entsprechenden Standardaktion identifiziert oder/und in der bedingten Ausdruckstabelle 30 festgestellt werden, falls er darin vorhanden ist, wodurch die jeweilige(n) Standard-Aktion(en) nachfolgend bei dem ankommenden Paket implementiert werden kann/können. Aber wenn der Null-Übereinstimmungs-Standardausdruck zusammen mit wenigstens einer jeweiligen Standard-Aktion nicht in der bedingten Ausdruckstabelle 30 programmiert ist, dann kann ein Beispiel der vorliegenden Erfindung eine oder mehrere feste vorprogrammierbare Standard-Null-Übereinstimmungs-Aktion(en) in der Filterungslogik der Filtervorrichtung bei einem Paket implementieren. Alternativ dazu kann die vorliegende Erfindung keine Standard-Null-Übereinstimmungs-Aktion, egal welcher Art, implementieren, wenn in der Filtervorrichtung eine Null-Übereinstimmungs-Bedingung vorliegt.
  • 3 veranschaulicht ein weiteres Beispiel der vorliegenden Erfindung und wird nicht bereitgestellt, um ihren Schutzbereich und ihr Wesen auf irgendeine Art oder Weise einzuschränken. 3 ist eine Hardware-Konfiguration der Erfindung und kann in einer integrierten, modularen und Einzelchip-Lösung vorliegen und kann auf einem Halbleitersubstrat wie etwa Silizium verwirklicht werden.
  • 3 zeigt eine IMASK-Tabelle 40, eine Speicherungs- oder Speichereinheit, die so konfiguriert ist, dass sie eine Übereinstimmungs-Bitmap 50 speichern kann, und eine bedingte Ausdruckstabelle 60. Die IMASK-Tabelle 40 weist 16 IMASK-Einträge auf, die von IMASK 0 bis IMASK 15 reichen. Jeder IMASK-Eintrag ist mit einer oder mehreren Filterungs- und Maskierbedingung(en) vorprogrammiert. Wenn man die Parameter voraussetzt, die in der IMASK-Tabelle 40 bereitgestellt sind, dann ist die Übereinstimmungs-Bitmap 50, die in der Speicherungs- oder Speichereinheit gespeichert ist, eine Map mit einer Länge von 16 Bit.
  • Die bedingte Ausdruckstabelle 60, wie sie in 3 gezeigt ist, weist acht (8) vorprogrammierte bedingte Ausdruckseinträge mit entsprechenden Aktionseinträgen auf. Da die Anzahl an bedingten Ausdruckseinträgen in der bedingten Ausdruckstabelle 60 keine abhängige Beziehung zu der Anzahl an IMASK-Einträgen in der IMASK-Tabelle 40 aufweist, sind acht (8) bedingte Ausdruckseinträge in der bedingten Ausdruckstabelle 60 mit wenigstens einer Aktion vorprogrammiert, die jedem bedingten Ausdruckseintrag entspricht.
  • Des Weiteren umfasst die bedingte Ausdruckstabelle 60 einen vorprogrammierten Null-Übereinstimmungs-Standard-Ausdruckseintrag. Der Null-Übereinstimmungs-Standard-Ausdruckseintrag, wie er in 3 gezeigt ist, zeigt einen Null-Übereinstimmungs-Standardausdruck zusammen mit einer Vielzahl von vorprogrammierten Standardaktionen an, die bei dem ankommenden Paket ergriffen oder implementiert werden sollen, wenn festgestellt wird, dass eine Null-Übereinstimmung zwischen der Übereinstimmungs-Bitmap 50 und irgendeinem der bedingten Ausdrücke in der bedingten Ausdruckstabelle 60 vorliegt.
  • Deshalb basiert bei diesem Beispiel ein Verfahren zur Filterung eines ankommenden Pakets auf den folgenden Bedingungen:
    Wenn (x && y && Z, dann{Aktion(en) ausführen};
    Sonst, wenn (x && v), dann {Aktion(en) ausführen};
    Sonst, wenn (x && w), dann {Aktion(en) ausführen};
    Sonst {Null-Übereinstimmungs-Standard Aktion(en)}.
  • x, y, v, w und z repräsentieren unterschiedliche Paketbedingungen wie folgt:
    Bedingung x = Paket mit Quell-MAC-Adresse von 20.46.72.00.00.88;
    Bedingung y = Ipv4-Paket mit IGMP-Nutzlast;
    Bedingung z = IGMP-Typ ist DVMRP;
    Bedingung v = UDP-Nutzlast und UDP-Port Nr. 0 × 4000; und
    Bedingung w = TCP-Nutzlast und TCP-Port Nr. 0 × 8080.
  • Außerdem ist IMASK 0 mit der Bedingung x vorprogrammiert, IMASK 1 ist mit der Bedingung y vorprogrammiert, IMASK 2 ist mit der Bedingung z vorprogrammiert, IMASK 3 ist mit der Bedingung v vorprogrammiert, und IMASK 4 ist mit der Bedingung w vorprogrammiert. Es sei angemerkt, dass, obwohl bei diesem Beispiel jede IMASK mit nur einer Bedingung vorprogrammiert ist, gemäß der vorliegenden Erfindung jede IMASK auch mit einer Vielzahl von Bedingungen darin vorprogrammiert sein kann.
  • Folglich wird ein ankommendes Paket durch jeden einzelnen IMASK-Eintrag (IMASK 0–IMASK 15) in der IMASK-Tabelle 40 maskiert. Bei der Maskierung des ankommenden Pakets stellt das vorliegende Beispiel fest, welcher IMASK-Eintrag eine exakte Übereinstimmung der Filterungsbedingung(en) in Bezug auf das ankommende Paket aufweist. (Die IMASK-Einträge können so vorprogrammiert sein, dass sie eine Teilbit-Übereinstimmung durchführen). Es wird in diesem Beispiel ermittelt, dass das Vorliegen einer vollständigen oder exakten Übereinstimmung des ankommenden Pakets in IMASK 0, IMASK 1 und IMASK 2 identifiziert wird oder/und festgestellt wird. Deshalb wird die Übereinstimmungs-Bitmap 50 wie folgt festgelegt und generiert:
    Übereinstimmungs-Bitmap = 0000000000000111 = 0 × 0007.
  • Diese Übereinstimmungs-Bitmap von 0 × 0007 wird danach an die bedingte Ausdruckstabelle 60 angelegt und in diese indexiert. Das vorliegende Beispiel stellt fest, dass eine Übereinstimmung in dem ersten bedingten Ausdruckseintrag besteht, der auch den bedingten Ausdruck von 0 × 0007 aufweist (wenn IMASK 0 && IMASK 1 && IMASK 2). Da bei der Indexierung der Übereinstimmungs-Bitmap 50 festgestellt wurde, dass eine Übereinstimmung in dem ersten bedingten Ausdruckseintrag besteht, wird/werden die entsprechende(n) Aktion(en) bei dem ankommenden Paket implementiert.
  • Es sei bei dem Beispiel, das in 3 gezeigt ist, angenommen, dass der erste bedingte Ausdruck so konfiguriert ist, dass er eher 0 × 0006 als 0 × 0007 ist. Wenn man dann den gleichen Parametern folgt, die in dem in 3 gezeigten Beispiel bereitgestellt werden, dann wird die Übereinstimmungs-Bitmap von 0 × 0007 an die bedingte Ausdruckstabelle 60 angelegt und in diese indexiert, wodurch festgestellt wird, dass eine Null-Übereinstimmung für die Übereinstimmungs-Bitmap von 0 × 0007 in irgendeinem der bedingten Ausdruckseinträge vorliegt. Entsprechend wird der Null-Übereinstimmungs-Standard-Ausdruck identifiziert oder festgestellt, und die entsprechende(n) Standard-Aktion(en) wird/werden bei dem ankommenden Paket implementiert.
  • Gemäß der vorliegenden Erfindung kann das Verfahren zur und die Vorrichtung zur Filterung eines Pakets eine Aktion/Aktionen bei dem ankommenden Paket in einer Anzahl von Arten und Weisen implementieren.
  • 4 veranschaulicht ein Beispiel einer Regeltabelle 70, die so konfiguriert sein kann, dass sie eine Vielzahl von Regelwerten und eine Vielzahl von Aktionen (einschließlich Standard-Aktion(en)) zum Implementieren bei einem ankommenden Paket speichern kann. Jeder Regelwert kann wenigstens einer Aktion entsprechen. Die Regeltabelle 70 der 4 ist ein Beispiel einer Hardware-Konfiguration, die auf einem Halbleitersubstrat wie etwa Silizium verwirklicht werden kann. Wie in 1 veranschaulicht ist, kann die bedingte Ausdruckstabelle 30 eine Vielzahl von bedingten Ausdruckseinträgen, einen Null-Übereinstimmungs-Standard-Ausdruckseintrag zusammen mit einer Vielzahl von entsprechenden Aktion(en) (einschließlich Standardaktion(en)) enthalten. Anstatt die Vielzahl der entsprechenden Aktionen in der bedingten Ausdruckstabelle 30 zu speichern, kann auf die Regeltabelle 70, wie sie in 4 gezeigt ist, zugegriffen werden, um wenigstens eine Aktion bei dem ankommenden Paket durchzuführen oder zu implementieren, wobei eine oder mehrere dieser Aktion(en) in der Regeltabelle 70 gespeichert ist/sind.
  • In einem Beispiel kann die Regeltabelle 70 identifiziert werden und kann auf diese zugegriffen werden, um eine Vielzahl von vorprogrammierten Aktionen zu implementieren, die darin gespeichert sind, wenn eine Übereinstimmung zwischen der Übereinstimmungs-Bitmap und irgendeinem der bedingten Ausdruckseinträge vorliegt. Mit anderen Worten, ein ankommendes Paket kann durch jeden Maskeneintrag in der Maskentabelle 10 von 1 maskiert werden. Jeder Maskeneintrag kann vorprogrammiert werden, um jede Bedingung festzulegen, die mit dem maskierten ankommenden Paket abgeglichen werden soll. Somit kann das ankommende Paket durch jeden einzelnen vorprogrammierten Maskeneintrag in der Maskentabelle 10 maskiert werden, um festzustellen, ob eine Übereinstimmung oder eine Null-Übereinstimmung der in den Maskeneinträgen vorprogrammierten Bedingungen vorliegt.
  • Danach kann eine Übereinstimmungs-Bitmap 20, wie sie in 1 gezeigt ist, als eine Folge des Maskierens und Abgleichens der ankommenden Pakete in jedem der Maskeneinträge in der Speicherungs- oder Speichereinheit festgelegt und/oder generiert werden. Die Übereinstimmungs-Bitmap 20 in der Speicherungs- oder Speichereinheit kann entweder eine Bitmap von Einsen und/oder Nullen sein, wobei jede Bitposition einem jeweiligen Maskeneintrag entspricht und diese anzeigt, ob in der jeweiligen Maske eine Übereinstimmung oder eine Null-Übereinstimmung vorliegt.
  • Die Übereinstimmungs-Bitmap 20 kann an eine bedingte Ausdruckstabelle 30 angelegt und in diese indexiert werden. Wie oben erwähnt worden ist, kann die bedingte Ausdruckstabelle 30 eine Vielzahl von vorprogrammierten bedingten Ausdruckseinträgen umfassen. Des Weiteren kann die bedingte Ausdruckstabelle 30 eine Vielzahl von Regelzeigern 95 umfassen, wie sie in 6 gezeigt sind. Mit anderen Worten, anstatt eine Vielzahl von Aktionsfeldern in der bedingten Ausdruckstabelle 30 zu haben, werden die Aktionen in der Regeltabelle 70 spezifiziert, und die Regelzeiger 95 in der bedingten Ausdruckstabelle 30 zeigen auf den gewünschten Regeleintrag in der Regeltabelle 70.
  • Deshalb kann in einem Beispiel der Integration der Regeltabelle 70 die Übereinstimmungs-Bitmap identifiziert oder festgestellt und in die bedingte Ausdruckstabelle indexiert werden. Beim Anlegen und Indexieren der Übereinstimmungs-Bitmap an bzw. in die bedingte Ausdruckstabelle kann dann, wenn festgestellt wird, dass eine Übereinstimmung zwischen der Übereinstimmungs-Bitmap und irgendeinem der bedingten Ausdruckseinträge in der bedingten Ausdruckstabelle vorliegt, der entsprechende Regelzeiger 95 identifiziert werden. Der Regelzeiger 95 zeigt dann auf einen entsprechenden Regeltabelleneintrag, wobei wenigstens eine entsprechende Aktion in der Regeltabelle 70 identifiziert oder festgestellt werden kann. Danach kann/können die identifizierte(n) oder festgestellte(n) Aktion(en) in der Regeltabelle 70 bei dem ankommenden Paket ausgeführt und/oder implementiert werden.
  • In einem anderen Beispiel kann die Regeltabelle 70 identifiziert werden und es kann auf diese zugegriffen werden, um wenigstens eine vorprogrammierte Standardaktion zu implementieren, die darin gespeichert ist, wenn eine Null-Übereinstimmung zwischen der Übereinstimmungs-Bitmap und irgendeinem der entsprechenden Ausdruckseinträge vorliegt. Mit anderen Worten, anstatt die Standardaktionen in der bedingten Ausdruckstabelle 30 zu speichern, können die Standardaktionen in der Regeltabelle 70 gespeichert werden. Deshalb kann in einem anderen Beispiel der Integration der Regeltabelle 70 die Übereinstimmungs-Bitmap generiert werden und an die bedingte Ausdruckstabelle angelegt und in diese indexiert werden. Wenn festgestellt wird, dass eine Null-Übereinstimmung zwischen der Übereinstimmungs-Bitmap und irgendeinem der bedingten Ausdruckseinträge in der bedingten Aus druckstabelle vorliegt, dann kann der entsprechende Regelzeiger 95 in Bezug auf den Null-Übereinstimmungs-Standardausdruck identifiziert werden. Der Regelzeiger 95 zeigt dann auf einen entsprechenden Regeltabelleneintrag, wobei wenigstens eine entsprechende Aktion in der Regeltabelle 70 identifiziert oder festgestellt werden kann.
  • In einem anderen Beispiel kann die vorliegende Erfindung die Regeltabelle 70 identifizieren und kann auf diese zugreifen, indem sie wenigstens ein Standardaktionsbit in dem Standardaktionsfeld der bedingten Ausdruckstabelle 30 aufweist. Das Standardaktionsbit kann eine Aktion spezifizieren, um die Regeltabelle 70 abzurufen, und kann die Standardaktion(en) spezifizieren, die implementiert werden soll(en). Danach kann/können die festgelegte(n) Standardaktion(en) in der Regeltabelle 70 bei dem ankommenden Paket ausgeführt und/oder implementiert werden.
  • Wie oben erwähnt worden ist, kann die Regeltabelle 70 von 4 eine Vielzahl von Aktionen umfassen, die die entsprechenden bedingten Ausdrucksaktionen und/oder Standardaktionen umfassen können. Auf die Regeltabelle 70 der vorliegenden Erfindung kann daher nur zugegriffen werden, um die bedingten Ausdrucksaktionen zu implementieren, oder nur um die Standardaktionen zu implementieren, oder es kann darauf mit einer Kombination aus beiden zugegriffen werden. Außerdem kann das Verfahren zur Filterung eines Pakets, das die Regeltabelle 70 verwendet, in Hardware oder Software oder in einer Kombination von sowohl Hardware als auch Software implementiert werden.
  • 5 veranschaulicht ein weiteres Ausführungsbeispiel der vorliegenden Erfindung. 5 zeigt eine Hardware-Konfiguration einer bedingten Ausdruckstabelle 80, die so konfiguriert sein kann, dass sie eine Vielzahl von bedingten Ausdruckseinträgen 83 und eine Vielzahl von Aktions-Bitmaps 85 darin umfassen kann, wobei die Aktions-Bitmaps 85 eine oder mehrere gewünschte Aktion(en) identifizieren oder zuordnen können. Die bedingten Ausdruckseinträge 83 können in einem Halbleitersubstrat implementiert werden und können einen vorprogrammierten Standardausdruck sowie auch andere vorprogrammierte bedingte Ausdrücke darin umfassen.
  • Jede Aktions-Bitmap 85 kann von jeder beliebigen Bitlänge sein. Jedes Bit in der Aktions-Bitmap 85 kann eine vorbestimmte Aktion repräsentieren, die bei dem ankommenden Paket implementiert werden soll. Zum Beispiel kann eine Bitposition Null einer Aktions-Bitmap 85 spezifizieren, ob ein Paket zu der CPU (Zentraleinheit) gesendet werden kann. Deshalb kann dann, wenn die Bitposition Null der Aktions-Bitmap 85 auf einen binären Wert von "1" gesetzt wird, das Paket zu der CPU gesendet werden. Alternativ dazu kann dann, wenn die Bitposition Null der Aktions-Bitmap 85 auf einen binären Wert von "0" gesetzt wird, das Paket nicht zu der CPU gesendet werden. In ähnlicher Weise kann die Bitposition Eins einer Aktions-Bitmap 85 spezifizieren, ob ein Paket fallengelassen werden kann. So kann dann, wenn die Bitposition Eins der Aktions-Bitmap 85 auf einen binären Wert von "1" gesetzt wird, das Paket fallengelassen werden; und wenn die Bitposition Eins auf einen binären Wert von "0" gesetzt wird, dann kann das Paket nicht fallengelassen werden. Darüber hinaus kann eine Bitposition Zwei einer Aktions-Bitmap 85 spezifizieren, ob ein Paket auf eine höhere Dienstklassenwarteschlangen-Priorität (COSQ priority) in einer Netzwerkvorrichtung gesetzt werden kann. Wenn die Bitposition Zwei der Aktions-Bitmap 85 auf einen binären Wert von "1" gesetzt wird, dann kann das Paket auf eine höhere Dienstklassenwarteschlangen-Priorität in der Netzwerkvorrichtung gesetzt werden, anderenfalls kann die Original-Dienstklassenwarteschlangen-Priorität des Pakets gleich bleiben. Es sei angemerkt, dass die spezifizierten Aktionen, die den Bitpositionen der Aktions-Bitmap 85 entsprechen, einander widersprechen können, wodurch eine "Kollision" von widersprüchlichen Aktionen vorgesehen wird. Aber die vorliegende Erfindung kann ein System zum Organisieren der Aktionen in Bezug auf ihre Priorität bereitstellen, wobei bestimmte Aktion(en) während eines Konflikts Vorrang vor anderen Aktion(en) haben können. Wenn zum Beispiel die Bitposition Null und die Bitposition Eins beide auf "1" gesetzt sind, dann kann die Aktion, die der Bitposition Eins entspricht, so vorprogrammiert werden, dass sie sich über die Aktion, die der Bitposition Null entspricht, hinwegsetzt oder dieser gegenüber Vorrang hat, und deshalb wird das Paket gegenüber dem Paket, das wie bei dem obigen Beispiel zu der CPU gesendet wird, fallengelassen.
  • In einem anderen Ausführungsbeispiel zeigt 5 eine Hardware-Konfiguration einer bedingten Ausdruckstabelle 80, die so konfiguriert sein kann, dass sie eine Vielzahl von bedingten Ausdruckseinträgen 83 und eine Vielzahl von Aktions-Bitmaps 85 darin umfasst, wobei jede Aktions-Bitmap 85 einen Aktionsausführungs-Opcode enthalten kann. Zum Beispiel kann die Aktions-Bitmap 85 eine Map mit einer "y"-Bit-Länge sein, wobei "y" jeden beliebigen Wert repräsentieren kann. Demgemäß kann jede Aktions-Bitmap 85 2y Möglichkeiten von Opcodes aufweisen, und deshalb kann sie eine maximale Flexibilität im Hinblick auf die Implementierung der Aktion(en) bei dem ankommenden Paket bereitstellen.
  • Zum Beispiel kann eine Übereinstimmungs-Bitmap 20 generiert und anschließend an die bedingte Ausdruckstabelle 80 angelegt oder in diese indexiert werden. Die Übereinstimmungs-Bitmap 20 kann mit jedem einzelnen bedingten Ausdruckseintrag, der in der bedingten Ausdruckstabelle 80 gespeichert ist, verglichen werden, um festzustellen, ob eine Übereinstimmung oder eine Null-Übereinstimmung vorliegt. Wenn eine Übereinstimmung zwischen der Übereinstimmungs-Bitmap 20 und irgendeinem der bedingten Ausdruckseinträge 83 vorliegt, dann kann eine entsprechende Aktions-Bitmap 85 festgelegt oder identifiziert werden. Danach kann die festgelegte oder identifizierte Aktions-Bitmap 85 eine Aktion oder mehrere gewünschte Aktionen bei dem Paket spezifizieren oder identifizieren. Es sei angemerkt, dass das Verfahren zur Filterung eines Pakets, das die Aktions-Bitmap 85 verwendet, in Hardware oder Software oder in einer Kombination aus sowohl Hardware als auch Software implementiert werden kann.
  • 6 veranschaulicht ein weiteres Beispiel der vorliegenden Erfindung. 6 zeigt eine Hardware-Konfiguration einer bedingten Ausdruckstabelle 90, die so konfiguriert sein kann, dass sie eine Vielzahl von bedingten Ausdruckseinträgen 93 und eine Vielzahl von Zeigern 95 umfassen kann. Die bedingte Ausdruckstabelle 90 kann auf einem Halbleitersubstrat wie etwa Silizium verwirklicht werden. Die bedingte Ausdruckstabelle 93 kann einen vorprogrammierten Standardausdruck sowie auch andere vorprogrammierte bedingte Ausdrücke darin enthalten. Die Zeiger 95 können Adresszeiger sein, die wenigstens eine Aktion (es können auch mehr als eine Aktion sein) in einer Aktionstabelle identifizieren oder auf diese zeigen können.
  • 7 veranschaulicht eine Hardware-Konfiguration einer Aktionstabelle 100 gemäß einem anderen Ausführungsbeispiel der vorliegenden Erfindung. Die Aktionstabelle 100 kann so konfiguriert sein, dass sie eine Vielzahl von Aktionen, einschließlich Standardaktion(en), zur Implementierung bei einem ankommenden Paket speichert. Die Aktionstabelle 100 kann in einer integrierten, modularen oder Einzelchip-Lösung implementiert werden. Mit anderen Worten, anstatt die vorprogrammierten Aktionen in der bedingten Ausdruckstabelle zu speichern, stellen die 6 und 7 ein Beispiel einer bedingten Ausdruckstabelle 90 bereit, die so konfiguriert ist, dass sie eine Vielzahl von Zeigern 95 darin speichert, wobei die Zeiger 95 auf wenigstens eine gewünschte Aktion, die in einer Aktionstabelle 100 gespeichert ist, zur Implementierung bei einem ankommenden Paket zeigen oder diese identifizieren können.
  • So kann zum Beispiel eine Übereinstimmungs-Bitmap 20 generiert werden und anschließend an die bedingte Ausdruckstabelle 80 angelegt oder in diese indexiert werden. Die Übereinstimmungs-Bitmap 20 kann mit jedem einzelnen bedingten Ausdruckseintrag verglichen werden, der in der bedingten Ausdruckstabelle 90 gespeichert ist, um festzustellen, ob eine Übereinstimmung oder eine Null-Übereinstimmung vorliegt. Wenn eine Übereinstimmung zwischen der Übereinstimmungs-Bitmap 20 und irgendeinem der bedingten Ausdruckseinträge 93 vorliegt, dann kann ein entsprechender Zeiger 95 bestimmt oder identifiziert werden. Danach kann der festgestellte Zeiger 95 auf wenigstens eine gewünschte Aktion, die bei dem ankommenden Paket implementiert werden soll, in der Aktionstabelle 100 zeigen oder diese identifizieren. Es sei angemerkt, dass das Verfahren zur Filterung eines Pakets, das Zeiger 95 verwendet, in Hardware oder Software oder in einer Kombination aus sowohl Hardware als auch Software implementiert werden kann.
  • Wie oben erwähnt worden ist, kann die Aktionstabelle 100 von 7 so konfiguriert sein, dass sie eine Vielzahl von Aktionen umfasst, die entsprechende bedingte Ausdrucksaktionen und/oder Standardaktionen umfassen können. Auf die Aktionstabelle 100 kann deshalb einzig und allein zur Implementierung der bedingten Ausdrucksaktionen oder einzig und allein zur Implementierung der Standardaktionen zugegriffen werden, oder es kann auf diese mit einer Kombination aus beiden zugegriffen werden. In ähnlicher Weise wie bei den anderen hier diskutierten Verfahren kann das Verfahren zur Filterung eines Pakets unter Verwendung der Aktionstabelle 100 in Hardware oder Software oder in einer Kombination aus sowohl Hardware als auch Software implementiert werden.
  • Zusätzlich zu dem Verfahren zur und der Vorrichtung zur Filterung eines Pakets auf der Grundlage einer Bedingung einer exakten Übereinstimmung oder einer Teilbit-Übereinstimmung kann die vorliegende Erfindung auch einen Untermengen-Abgleich durchführen.
  • 8 veranschaulicht ein Beispiel einer anderen Hardware-Konfiguration, die die Paketfilterung mit Untermengen-Abgleich-Funktionen durchführen kann. Die Konfiguration in 8 zeigt eine Maskentabelle 110 und eine Speicherungs- oder Speichereinheit, die so konfiguriert ist, dass sie eine Übereinstimmungs-Bitmap 120 speichert, die der Maskentabelle 10 und der Übereinstimmungs-Bitmap 20 ähnlich sein können, die oben in Bezug auf 1 beschrieben worden sind. 8 umfasst auch eine bedingte Ausdruckstabelle 130, die neben anderen Einträgen, die in Bezug auf 1 diskutiert worden sind, wenigstens einen Untermengen-Maskeneintrag 133 mit entsprechenden Untermengen-Aktionen darin enthalten kann. Die Maskentabelle 110, die Speicherungseinheit und die bedingte Ausdruckstabelle 130, die den Untermengen-Maskeneintrag 133 aufweist, können auf einem Halbleitersubstrat wie etwa Silizium verwirklicht werden.
  • Es sei angemerkt, dass die bedingte Ausdruckstabelle 130 auch so konfiguriert sein kann, dass sie keine Null-Übereinstimmungs-Ausdruckseinträge aufweist. In einem Beispiel, bei dem die bedingte Ausdruckstabelle 130 keine Null-Übereinstimmungs-Ausdruckseinträge enthält, kann die vorliegende Erfindung einen oder mehrere feste vorprogrammierte Standard-Null-Übereinstimmungs-Aktion(en), die bei einem Paket implementiert werden soll(en), in der Filterungslogik der Filtervorrichtung bereitstellen. Alternativ dazu kann die vorliegende Erfindung keine Standard-Null-Übereinstimmungsaktion bereitstellen, wenn in der Filtervorrichtung eine Null-Übereinstimmungs-Bedingung vorliegt.
  • Der Untermengen-Maskeneintrag 133 kann so konfiguriert sein, dass er eine Filtermaske zur Maskierung der Übereinstimmungs-Bitmap 120 auf der Grundlage von programmierbaren Bedingungen sein kann. Deshalb kann der Untermengen-Maskeneintrag 133 mit Bedingungen zur Filterung oder Maskierung der Übereinstimmungs-Bitmap 120 vorprogrammiert werden.
  • 9 veranschaulicht ein anderes Beispiel eines Verfahrens zur Filterung ankommender Pakete gemäß der vorliegenden Erfindung. Es sei angemerkt, dass das Verfahren dieses Beispiels in Hardware oder Software oder in einer Kombination aus sowohl Hardware als auch Software implementiert werden kann. Ein ankommendes Paket kann durch die Maskentabelle 110 maskiert werden, und eine Übereinstimmungs-Bitmap 120 kann als eine Folge des Maskierens und des Abgleichens der ankommenden Pakete in jedem der Maskeneinträge in ähnlicher Weise wie bei der Diskussion oben in Bezug auf 2 generiert werden. Die Übereinstimmungs-Bitmap 120 kann an die bedingte Ausdruckstabelle 130 angelegt oder in diese indexiert werden. (Siehe 2). In einem Beispiel kann die Übereinstimmungs-Bitmap 120 indexiert werden und zuerst mit den bedingten Ausdruckseinträgen 131 verglichen werden, um festzustellen, ob eine Übereinstimmung oder eine Null-Übereinstimmung zwischen der Übereinstimmungs-Bitmap 120 und irgendeinem der bedingten Ausdruckseinträge 131 vorliegt. Wenn festgestellt wird, dass eine Übereinstimmung vorliegt, dann kann die vorliegende Erfindung die spezifizierten entsprechenden Aktion(en) auf die Arten und Weisen implementieren, die oben besprochen worden sind. Aber wenn festgestellt wird, dass eine Null-Übereinstimmung zwischen der Übereinstimmungs-Bitmap 120 und irgendeinem der bedingten Ausdruckseinträge 131 vorliegt, dann kann die Übereinstimmungs-Bitmap 120 durch wenigstens eine der Untermengen-Masken 133 maskiert werden, um weiter zu bestimmen, ob eine Untermengen-Übereinstimmung oder Untermengen-Null-Übereinstimmung der maskierten Übereinstimmungs-Bitmap in der Untermengen-Maske 133 vorliegt. Wenn festgestellt wird, dass eine Übereinstimmung vorliegt, dann kann wenigstens eine Aktion, die der übereinstimmenden Untermengen-Maske 133 entspricht, bei dem ankommenden Paket ausgeführt und/oder implementiert werden.
  • Andererseits kann dann, wenn festgestellt wird, dass eine Null-Übereinstimmung der maskierten Übereinstimmungs-Bitmap in der Untermengen-Maske 133 vorliegt, der Null-Übereinstimmungs-Standardausdruck zusammen mit wenigstens einer Aktion, die dem Null-Übereinstimmungs-Standardausdruck entspricht, in der bedingten Ausdruckstabelle 130, falls darin vorhanden, festgelegt oder identifiziert werden. Danach kann wenigstens eine Standardaktion bei dem ankommenden Paket implementiert werden, wenn eine Null-Übereinstimmung zwischen der Übereinstimmungs-Bitmap 120 und irgendeinem der bedingten Ausdruckseinträge in den bedingten Ausdruckstabelleneinträgen 131 vorliegt und wenn eine Null-Übereinstimmung der maskierten Übereinstimmungs-Bitmap in der Untermengen-Maske 133 vorliegt. Aber wenn der Null-Übereinstimmungs-Standardausdruck zusammen mit wenigstens einer entsprechenden Standardaktion nicht in der bedingten Ausdruckstabelle 130 programmiert ist, dann kann ein Beispiel der vorliegenden Erfindung bei einem Paket eine oder mehrere feste vorprogrammierbare Standard-Null-Übereinstimmungs-Aktion(en) in der Filterungslogik der Filtervorrichtung implementieren. Alternativ dazu kann die vorliegende Erfindung keine Standard-Null-Übereinstimmungs-Aktion implementieren, egal welcher Art, wenn eine Null-Übereinstimmungs-Bedingung in der Filtervorrichtung vorliegt.
  • Obwohl 8 unter anderem die bedingte Ausdruckstabelle 130 umfassen kann, wie sie in der Figur dargelegt ist, kann das vorliegende Ausführungsbeispiel auch andere Ausführungsbeispiele zur Implementierung von bedingten Ausdrucksaktion(en) und Null-Übereinstimmungs-Standardaktion(en) bei den ankommenden Paketen aufnehmen und integrieren, wie dies hier diskutiert worden ist.
  • Die oben offenbarten Konfigurationen der vorliegenden Erfindung können in einer integrierten, modularen und Einzelchip-Lösung vorliegen und können auf einem Halbleitersubstrat wie etwa Silizium verwirklicht werden. Außerdem können die Verfahren zur Filterung eines Pakets, wie sie hier offenbart worden sind, in Hardware oder Software oder in einer Kombination aus sowohl Hardware als auch Software implementiert werden. Des weiteren wäre ein Fachmann auf dem Gebiet in Bezug auf Halbleiterdesign und Halbleiterherstellung in der Lage, die verschiedenen Elemente und Verfahren der vorliegenden Erfindung auf der Grundlage der oben diskutierten architektonischen Beschreibung auf einem einzigen Halbleitersubstrat zu implementieren.
  • Einem Durchschnittsfachmann auf diesem Gebiet wird es klar sein, dass die Erfindung, wie sie oben diskutiert worden ist, mit Schritten in einer anderen Reihenfolge und/oder mit Hardware-Elementen in Konfigurationen praktisch umgesetzt werden kann, die sich von denen, die offenbart wurden, unterscheiden. Deshalb wäre es den Fachleuten auf diesem Gebiet, obwohl die Erfindung auf der Grundlage dieser bevorzugten Ausführungsbeispiele beschrieben worden ist, ohne weiteres erkennbar, dass verschiedene Modifikationen, Variationen und alternative Konstruktionen offensichtlich wären und trotzdem innerhalb des Schutzbereichs der Erfindung bleiben würden. Um die Grenzen der Erfindung zu bestimmen, wird hier deshalb Bezug auf die angehängten Ansprüche genommen.

Claims (5)

  1. Verfahren zur Paketvermittlung von Telekommunikationsdatenpaketen, wobei das Verfahren die folgenden Schritte aufweist: a) Anlegen des Pakets durch eine Vielzahl von ersten Masken (110), b) Generieren einer Übereinstimmungs-Bitmap (120), die der Vielzahl der ersten Masken (110) entspricht, c) Anlegen der Übereinstimmungs-Bitmap (120) an eine bedingte Ausdruckstabelle (130), die eine Vielzahl von bedingten Ausdruckseinträgen (131) besitzt, d) Implementieren wenigstens einer Aktion bei dem Paket, dadurch gekennzeichnet, dass der Generierungsschritt den folgenden Schritt aufweist: e) Generieren der Übereinstimmungs-Bitmap (120) mit einer Bitlänge, die gleich der oder kleiner als die Anzahl der Vielzahl von ersten Masken (110) ist, und dass der Schritt des Implementierens wenigstens einer Aktion bei dem Paket die folgenden Schritte aufweist: f) Feststellen, ob eine vollständige Übereinstimmung der Übereinstimmungs-Bitmap (120) mit wenigstens einem der bedingten Ausdruckseinträge (131) existiert; f1) wenn eine vollständige Übereinstimmung vorliegt, Implementieren einer Aktion gemäß dem übereinstimmenden bedingten Ausdruckseintrag (131); f2) wenn keine vollständige Übereinstimmung vorliegt, Anlegen der Übereinstimmungs-Bitmap (120) durch eine Vielzahl von zweiten Masken (133), g) Feststellen, ob eine vollständige Übereinstimmung zwischen der Übereinstimmungs-Bitmap (120) und der Vielzahl von zweiten Masken (133) existiert, h1) wenn eine vollständige Übereinstimmung vorliegt, Implementieren einer Aktion gemäß der übereinstimmenden zweiten Maske der Vielzahl von zweiten Masken (133), h2) wenn keine vollständige Übereinstimmung vorliegt, Implementieren einer vorbestimmten Null-Übereinstimmungs-Aktion oder einer Standard-Null-Übereinstimmungs-Aktion oder einer individuellen Null-Übereinstimmungs-Aktion.
  2. Verfahren nach Anspruch 1, wobei der Generierungsschritt des Weiteren den folgenden Schritt aufweist: Generieren der Übereinstimmungs-Bitmap (120), wobei jede Bitposition der Übereinstimmungs-Bitmap (120) einer jeweiligen Maske der Vielzahl der ersten Masken (110) entspricht.
  3. Verfahren nach Anspruch 2, wobei der Generierungsschritt den folgenden Schritt aufweist: Setzen jeder Bitposition mit einem bedingten Flag.
  4. Verfahren nach Anspruch 3, wobei der Setzschritt den folgenden Schritt aufweist: Setzen jeder Bitposition der Übereinstimmungs-Bitmap (120) mit einem ersten bedingten Flag, wenn eine vollständige Übereinstimmung in der jeweiligen ersten Maske vorliegt; und Setzen jeder Bitposition der Übereinstimmungs-Bitmap (120) mit einem zweiten bedingten Flag, wenn keine vollständige Übereinstimmung in der jeweiligen ersten Maske vorliegt.
  5. Verfahren nach Anspruch 4, wobei der Schritt des Anlegens der Übereinstimmungs-Bitmap (120) den folgenden Schritt aufweist: Anlegen der Übereinstimmungs-Bitmap (120) an die bedingte Ausdruckstabelle (130), wobei die bedingten Ausdruckseinträge (131) von Bit-Zeichenketten repräsentiert sind.
DE60303622T 2002-03-15 2003-03-12 Verfahren zur Netzpaket-Filterung basierend auf einer konditionellen Ausdruckstabelle Expired - Lifetime DE60303622T2 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US36405302P 2002-03-15 2002-03-15
US364053P 2002-03-15
US10/179,264 US7280541B2 (en) 2002-03-15 2002-06-26 Packet filtering based on conditional expression table
US179264 2002-06-26

Publications (2)

Publication Number Publication Date
DE60303622D1 DE60303622D1 (de) 2006-04-27
DE60303622T2 true DE60303622T2 (de) 2006-12-14

Family

ID=28044408

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60303622T Expired - Lifetime DE60303622T2 (de) 2002-03-15 2003-03-12 Verfahren zur Netzpaket-Filterung basierend auf einer konditionellen Ausdruckstabelle

Country Status (3)

Country Link
US (1) US7280541B2 (de)
EP (1) EP1351468B1 (de)
DE (1) DE60303622T2 (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7245620B2 (en) * 2002-03-15 2007-07-17 Broadcom Corporation Method and apparatus for filtering packet data in a network device
US7697526B2 (en) * 2002-08-06 2010-04-13 Broadcom Corporation Packet filtering based on port bit map
US7304992B2 (en) * 2002-11-22 2007-12-04 Broadcom Corporation Fast flexible filter processor based on range checking and a method of processing based thereon
US20050100019A1 (en) * 2003-11-10 2005-05-12 Sahita Ravi L. Rule based packet processing engine
DE60314153T2 (de) * 2003-11-22 2008-01-31 Broadcom Corp., Irvine Schneller, flexibler Filterprozessor basierend auf Bereichsprüfung sowie darauf basierendes Verarbeitungsverfahren
US7653727B2 (en) * 2004-03-24 2010-01-26 Intel Corporation Cooperative embedded agents
US7594269B2 (en) * 2004-10-29 2009-09-22 Intel Corporation Platform-based identification of host software circumvention
EP1694023A1 (de) * 2005-02-18 2006-08-23 Deutsche Thomson-Brandt Gmbh Verfahren und Vorrichtung zur Ausführung von Datentransport über einen seriellen Bus mittels Internetprotokoll
US8700593B1 (en) 2010-07-16 2014-04-15 Netlogic Microsystems, Inc. Content search system having pipelined engines and a token stitcher
US8589405B1 (en) 2010-07-16 2013-11-19 Netlogic Microsystems, Inc. Token stitcher for a content search system having pipelined engines
US8572106B1 (en) * 2010-07-16 2013-10-29 Netlogic Microsystems, Inc. Memory management in a token stitcher for a content search system having pipelined engines
US10644998B2 (en) * 2013-12-15 2020-05-05 Cavium, Llc Virtualized network interface for lockdown and overlay of data in transmitted packets
US9596215B1 (en) * 2015-04-27 2017-03-14 Juniper Networks, Inc. Partitioning a filter to facilitate filtration of packets
US10095720B2 (en) * 2016-02-05 2018-10-09 Amadeus S.A.S. Database table index

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5473607A (en) 1993-08-09 1995-12-05 Grand Junction Networks, Inc. Packet filtering for data networks
US5761424A (en) 1995-12-29 1998-06-02 Symbios, Inc. Method and apparatus for programmable filtration and generation of information in packetized communication systems
US6016310A (en) 1997-06-30 2000-01-18 Sun Microsystems, Inc. Trunking support in a high performance network device
US6088356A (en) 1997-06-30 2000-07-11 Sun Microsystems, Inc. System and method for a multi-layer network element
US5951651A (en) 1997-07-23 1999-09-14 Lucent Technologies Inc. Packet filter system using BITMAP vector of filter rules for routing packet through network
US6259699B1 (en) 1997-12-30 2001-07-10 Nexabit Networks, Llc System architecture for and method of processing packets and/or cells in a common switch
US6289013B1 (en) 1998-02-09 2001-09-11 Lucent Technologies, Inc. Packet filter method and apparatus employing reduced memory
US6173384B1 (en) 1998-02-11 2001-01-09 Nortel Networks Limited Method of searching for a data element in a data structure
US6658002B1 (en) * 1998-06-30 2003-12-02 Cisco Technology, Inc. Logical operation unit for packet processing
US6104696A (en) * 1998-07-08 2000-08-15 Broadcom Corporation Method for sending packets between trunk ports of network switches
US6876653B2 (en) * 1998-07-08 2005-04-05 Broadcom Corporation Fast flexible filter processor based architecture for a network device
US6850521B1 (en) * 1999-03-17 2005-02-01 Broadcom Corporation Network switch
US6732254B1 (en) 1999-09-15 2004-05-04 Koninklijke Philips Electronics N.V. Can device featuring advanced can filtering and message acceptance
US6570884B1 (en) * 1999-11-05 2003-05-27 3Com Corporation Receive filtering for communication interface
AU1580401A (en) 1999-11-16 2001-05-30 Broadcom Corporation High speed flow control methodology
TW498650B (en) * 2000-03-22 2002-08-11 Ind Tech Res Inst Flexible and highly efficient packet classification method
US6718326B2 (en) * 2000-08-17 2004-04-06 Nippon Telegraph And Telephone Corporation Packet classification search device and method
US7719980B2 (en) * 2002-02-19 2010-05-18 Broadcom Corporation Method and apparatus for flexible frame processing and classification engine
US7245620B2 (en) * 2002-03-15 2007-07-17 Broadcom Corporation Method and apparatus for filtering packet data in a network device

Also Published As

Publication number Publication date
DE60303622D1 (de) 2006-04-27
EP1351468B1 (de) 2006-02-22
EP1351468A1 (de) 2003-10-08
US20030174703A1 (en) 2003-09-18
US7280541B2 (en) 2007-10-09

Similar Documents

Publication Publication Date Title
DE60303622T2 (de) Verfahren zur Netzpaket-Filterung basierend auf einer konditionellen Ausdruckstabelle
DE60300333T2 (de) Verfahren und Vorrichtung für ein flexibles Rahmenverarbeitungs und Klassifikationssystem
DE602004011721T2 (de) Zugriffssteurungsmechanismus für Router
DE60026229T2 (de) Verfahren und Vorrichtung für Klassifizierung von Datenpaketen
DE112010004940B4 (de) Automatisches Erkennen von Adressbereichen für IP-Netzwerke
DE102018209407A1 (de) Verfahren und Vorrichtung zur Behandlung einer Anomalie in einem Kommunikationsnetzwerk
EP2882144A2 (de) Verfahren und Filteranordnung zum Filtern von über einen seriellen Datenbus eines Kommunikationsnetzwerks in einem Teilnehmer des Netzwerks eingehenden Nachrichten
DE60309611T2 (de) Verfahren und Vorrichtung zur Verarbeitung von Datenpaketen
EP1494401A2 (de) Router and Verfahren zur Aktivierung eines deaktivierten Computers
DE60305774T2 (de) Schnelle und flexible Bereichsüberprüfung
DE112016001193T5 (de) Protokollunabhängiger, programmierbarer Schalter für durch Software definierte Datenzentrumsnetzwerke
EP1774434B1 (de) Architektur eines netzwerkprozessors
DE60211466T2 (de) Prozessor mit reduzierten Speicheranforderungen für Hochgeschwindigkeitsrouting und Vermittlung von Paketen
DE102014207479A1 (de) Verfahren zum Klassifizieren eines Datensegments bezüglich dessen Weiterverarbeitung
DE102022202878A1 (de) Verwendung einer datenverarbeitungseinheit als vorprozessor für maschinelles lernen auf der basis einer grafikverarbeitungseinheit
DE60129031T2 (de) Verfahren zur Weglenkungsinformations- Verteilung und Netzelement
EP1180888B1 (de) Verfahren zum Aufbauen einer Datenverbindung zwischen einer ersten und einer zweiten Recheneinheit und Vorrichtung zum Austauschen von Daten
DE69925599T2 (de) Kommunikationsnetz oder ip-netz mit einem paketklassifizierer
DE10297815B4 (de) Verarbeitung von Datenpaketen innerhalb eines Datenschalters
DE60314153T2 (de) Schneller, flexibler Filterprozessor basierend auf Bereichsprüfung sowie darauf basierendes Verarbeitungsverfahren
DE60131277T2 (de) Kommunikationspaketprozessor mit einer look-up-engine zum abrufen von kontextinformationen für einen kernprozessor
EP0748467B1 (de) Selbstprogrammierende schaltungsanordnung
DE60307172T2 (de) Ein Verfahren und Netzwerkvorrichtung bestehend aus einem flexiblem EEPROM um Konfigurationseinstellungen einzustellen
DE10105935B4 (de) Multimode-Scheduler, Vorrichtung mit einem Multimode-Scheduler und Multimode-Abwicklungsverfahren
DE102016211768A1 (de) Speicherdirektzugriffssteuereinrichtung und Betriebsverfahren hierfür

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: BOSCH JEHLE PATENTANWALTSGESELLSCHAFT MBH, 80639 M