DE602004010976T2 - Datenstruktur für bereichspezifizierte Algorithmen - Google Patents

Datenstruktur für bereichspezifizierte Algorithmen Download PDF

Info

Publication number
DE602004010976T2
DE602004010976T2 DE602004010976T DE602004010976T DE602004010976T2 DE 602004010976 T2 DE602004010976 T2 DE 602004010976T2 DE 602004010976 T DE602004010976 T DE 602004010976T DE 602004010976 T DE602004010976 T DE 602004010976T DE 602004010976 T2 DE602004010976 T2 DE 602004010976T2
Authority
DE
Germany
Prior art keywords
intervals
interval
tree
disjoint
node
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 - Fee Related
Application number
DE602004010976T
Other languages
English (en)
Other versions
DE602004010976D1 (de
Inventor
Gerard K2A 1Z1 DAMM
Bashar K1S 2M3 Bou-Diab
Yuke 75074 Wang
Yiyan 75080 Tang
Anand 75080 Krishnamurthy
Lie 75080 Qian
Yun 75080 Zhang
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.)
Alcatel Lucent SAS
Original Assignee
Alcatel Lucent SAS
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 Alcatel Lucent SAS filed Critical Alcatel Lucent SAS
Publication of DE602004010976D1 publication Critical patent/DE602004010976D1/de
Application granted granted Critical
Publication of DE602004010976T2 publication Critical patent/DE602004010976T2/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/48Routing tree calculation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/302Route determination based on requested QoS
    • H04L45/308Route determination based on user's profile, e.g. premium users
    • 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
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0263Rule management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Peptides Or Proteins (AREA)
  • Medicines That Contain Protein Lipid Enzymes And Other Medicines (AREA)
  • Mobile Radio Communication Systems (AREA)

Description

  • Gebiet der Erfindung
  • Diese Erfindung betrifft computerbasierte Kommunikationssysteme und speziell Datenstrukturen, die Mengen von Intervallen zur Verwendung in bereichsspezifizierten Berechnungen für solche Systeme darstellen.
  • ALLGEMEINER STAND DER TECHNIK
  • Auf dem allgemeinen Gebiet computerbasierter Systeme, die mehrfache und unterschiedliche Workstations einschließen, die sich an mehrfachen und verschiedenen Standorten befinden, die Dienste unterschiedlicher Klassifizierung bereitstellen, ist bekannt, daß die Verfahren zur Steuerung des Datenflusses äußerst komplex sind.
  • In der Regel wird der Datenfluß durch Regelmengen geregelt, die unter anderem die Dienstgüte, die Sicherheit und das Zählverfahren vorschreiben. Die Daten werden in der Regel in Form von Paketen mit einem Header verwendet, der spezielle Informationen wie zum Beispiel die Quelle, das Ziel und den Dienst betreffende Kriterien aufweist. Die Art und Weise, auf welche die Daten im System verarbeitet werden, schließt das Prüfen des Headers hinsichtlich dieser Regelmengen ein. In solch einer Umgebung werden bereichsspezifizierte Regeln zur am meisten durchführbaren Option, um ein akzeptables Niveau der Steuerung bereitzustellen. Das ist größtenteils aufgrund der Tatsache, daß es praktisch unmöglich sein würde, alle Daten mit den Regelmengen in einem Hochgeschwindigkeitssystem zu vergleichen. Bereichsspezifizierte Regeln gemäß der folgenden Beschreibung können allgemein als eine Menge von Regeln beschrieben werden, die unter Verwendung von Intervallen (oder Bereichen) für jedes Feld definiert sind. Die Felder können je nach den Anwendungen beliebig definiert sein. Ein typisches Beispiel für die Felder ist das 5-Tupel (IP-Quelladresse, IP-Zieladresse, TCP-Protokoll, Quellport, Zielport), aber jede Anordnung einer beliebigen Anzahl von Feldern ist möglich, solange die entsprechenden Daten in den Paketen (Header und Nutzinformation) vorhanden sind, die verglichen werden sollen. Die Bereiche können als ganzzahlige Intervalle gedacht sein, aber die Erfindung ist auf jede Menge von geordneten Werten anwendbar, worauf das Konzept des Intervalls definiert werden kann. Ein Paket entspricht einer Regel, wenn jedes seiner Felder (wie aus dem Paket extrahiert oder analysiert) innerhalb der entsprechenden Bereiche der Regel beinhaltet ist. Wenn die Regelmenge von oben nach unten geordnet wird, dann ist die beste Matchingregel für ein Paket die Matchingregel, die dem Anfang am nächsten ist.
  • Ein Beispiel der durch die vorliegende Erfindung betrachteten Umgebung ist ein IP-Router, der eine große Anzahl von Paketen verarbeitet, die von einer großen Anzahl von Anwenderstandorten kommen und für diese bestimmt sind. Um den Dienst an Endbenutzer besser das als "best effort" bereitzustellen, muß das System die Regelmengen streng befolgen, die vorschreiben, wie Datenpakete verarbeitet werden. Offensichtlich würde es unter Berücksichtigung des riesigen Volumens des Verkehrs in Kommunikationssystemen wie zum Beispiel dem Internet schwierig sein, jedes Paket mit einer Regel zu vergleichen und zu bestimmen, ob es die aufgestellten Kriterien erfüllt. Folglich kann der oben erwähnte bereichsbasierte Algorithmus angewendet werden.
  • Der folgenden Beschreibung halber wird auf die Verfahren des Implementierens der Algorithmen für Mehrfeld-Paketklassifizierung durch bereichsspezifizierte Regeln verwiesen, die in IP-Routern verwendet werden. Die Klassifizierung ist eine sehr wichtige Funktion, die ein Teil der Anwendungen wie zum Beispiel Firewall, IPsec und Dienstgüte (Quality of Service) ist. Die Firewall muß die Pakete auf der Basis vordefinierter Regelmengen klassifizieren, so daß sie gewisse Pakete des Flusses vom Eintreten in das Netzwerk filtern/blockieren kann. IPsec muß Pakete auf der Basis der Regeln klassifizieren, so daß spezielle Pakete des Flusses mit entsprechenden Sicherheitsrichtlinien und -zuordnungen verglichen werden können, die die Sicherheitsalgorithmen angeben, und sichere Schlüssel auf die Pakete des Flusses angewendet werden können. Die Dienstgüte muß die Klassifizierungsfunktion an Paketen durchführen, so daß die Attribute der Dienstgüte wie Verzögerungsbeschränkungen, Paketverlustbeschränkungen und Bandbreite mit den Paketen des Flusses verbunden werden können. In VPN-Umgebungen können alle drei Anwendungen Firewall, IPsec und Dienstgüte auf das Edge-Router-Gerät angewendet werden müssen. Deshalb wird die effiziente Implementierung der Klassifizierungsfunktion sogar in solchen Umgebungen notwendiger. Verbesserte Klassifizierungsalgorithmen können Hochleistung mit reduzierten Ressourcenanforderungen zur Implementierung garantieren. Die Kapazität der existierenden Anwendung der Paketklassifizierungsalgorithmen kann bezüglich der Rechenressourcen ständig vergrößert werden. Für den Fachmann wird jedoch offensichtlich, daß die Algorithmen ebenfalls auf andere Berechnungen angewendet werden können, wo eine bereichsbasierte oder spezifizierte Teilmenge von Regeln verwendet wird.
  • Wie in dieser Patentanmeldung verwendet, ist die Paketklassifizierung der Prozeß des Kategorisierens der Pakete in "Flüsse" in einem Internet-Router auf der Basis eines oder mehr Felder im Paketheader. Alle Pakete, die zum gleichen Fluß gehören, befolgen eine vordefinierte Regel und werden auf eine ähnliche Art und Weise durch den Router verarbeitet. Dieser Klassifizierungsprozeß wind in ACLs (Access Control lists/Zugriffskontrolllisten) für Sicherheit, QoS oder für Zählverfahren zum Beispiel verwendet.
  • Ein Algorithmus für Mehrfeld-Paketklassifizierung durch Bereichsspezifizierung benutzt eine Regelmenge und ein Paket als Eingaben, findet die beste Matchingregel für das Paket in der Regelmenge auf der Basis der Werte der Mehrfachfelder im Paketheader. Eine Regelmenge setzt sich aus einer endlichen Anzahl von Regeln zusammen. Jede Regel in der Regelmenge beinhaltet Mehrfachfelder, die durch Bereiche spezifiziert sind, wo ein Bereich ein ganzzahliges Intervall mit einer unteren Grenze und einer oberen Grenze ist. Jede Regel hat ebenfalls eine Regelnummer.
  • Ein einzelnes Feld einer gegebenen Regelmenge ist eine Menge von ganzzahligen Intervallen. Vorgegeben eine Menge von ganzzahligen Intervallen, können eine Menge von elementaren Intervallen und eine Menge von disjunkten Intervallen erhalten werden. Die elementaren Intervalle teilen die Menge der ganzzahligen Intervallen in kleinere, aber notwendige Elemente, die nichtüberlappend sind, während die disjunkten Intervallen die überlappenden ganzzahligen Intervalle zur Menge der ganzzahligen Intervalle vereinigen, um größere ganzzahlige Intervalle zu bilden, die einander disjunkt sind.
  • Eine Matchingregel für ein gegebenes Paket erfüllt das Prinzip, daß der Wert jedes Feldes des Pakets in den Wertebereich des entsprechenden Feldes der Regel fällt. Die beste Matchingregel ist die Matchingregel mit der kleinsten Regelnummer unter allen Matchingregeln in der Regelmenge, vorausgesetzt die Konvention, daß die Regeln von der höchsten Priorität zur niedrigsten Priorität nummeriert sind.
  • Das elementare Intervall unterstützt zusätzlich zu seiner Anwendung für Paketklassifizierung, wie oben beschrieben ist, ebenfalls die scharfe Abfrage. Die scharfe Abfrage (stabbing query) ist der Typ der Abfrage, wo Punktdaten gegen eine Menge von Intervallen abgefragt werden, um zu bestimmen, welches dieser Intervalle den Punkt beinhaltet. Die scharfe Abfrage kann für bestimmte Anwendungen wie zum Beispiel IP-Routing verwendet werden. Datenstrukturen für scharfe Abfragen können ebenfalls auf Multidimension ausgedehnt werden, um zur Paketklassifizierung in IP-Routern zu dienen. Wie vorher beschrieben ist, führt ein Paketklassifizierungsalgorithmus die mehrdimensionale Punktabfrage gegen eine Menge von Regeln durch, wo der Punkt mehrdimensional ist und jede Regel aus mehrfachen Intervallen (Bereichen) zusammengesetzt ist.
  • Vorgegeben eine Menge von Intervallen und einen Punkt der scharfen Abfrage, wird der Elementar-Intervall-Baum (Elementarg Interval Tree) verwendet, um die Menge der Intervalle gemäß einem Gesichtspunkt der Erfindung darzustellen. Ebenfalls wird hier der Elementarg Interval Tree Construction-Algorithmus erörtert, der verwendet wird, um die Datenstruktur aufzubauen, und der Elementarg Interval Tree Query-Algorithmus, um die scharfe Abfrage auf der Datenstruktur durchzuführen.
  • Gemäß diesem Gesichtspunkt, gegeben ein Intervall [l, u] mit zwei Endpunkten: dem unteren Endpunkt l und dem oberen Endpunkt u, beinhaltet das Intervall einen Punkt p, wenn l ≤ p ≤ u. Eine Menge von Intervallen beinhaltet eine endliche Anzahl von Intervallen, wo jedes Intervall eine Kennung hat. Vorgegeben eine Menge von Intervallen durch Projizieren der Endpunkte jedes Intervalls auf eine Linie, teilen die Endpunkte die Linie in kleine Bereiche, bezeichnet als elementare Intervalle. Die elementaren Intervalle teilen die Menge der Intervalle in kleinere, aber notwendige Elemente, die nicht überlappend sind. Der in der Erfindung vorgeschlagene Elementarintervallbaum (elementarg interval tree) ist ein vergrößerter binärer Suchbaum, der jedes elementare Intervall in einem Knoten speichert, um eine Menge von Intervallen darzustellen.
  • Ebenfalls durch die vorliegende Erfindung wird das Design einer Datenstruktur betrachtet, die eine Menge von Intervallen darstellt, um maximale disjunkte Intervalle für die Menge von Intervallen zu finden. Wiederum findet diese Datenstruktur die Anwendung für Paketklassifizierung in IP-Routern.
  • In dieser Hinsicht hat ein Intervall [l, u] zwei Endpunkte: den unteren Endpunkt l und den oberen Endpunkt u. Zwei Intervalle [l1, u1] und [l2, u2] überlappen, wenn [l1, u1] ∩ [l2, u2] ≠ Ø. Eine Menge von Intervallen beinhaltet eine endliche Anzahl von Intervallen, wo jedes Intervall ebenfalls eine Kennung hat. Vorgegeben eine Menge von Intervallen I = {I1, I2, ..., In}, ist die Menge der disjunkten Intervalle von I definiert als {I ^1, I ^2, ... I ^L},
    • 1. I1 ∪ I2 ∪ ... ∪ In = I ^1 ∪ I ^2 ∪ ... ∪ I ^L;
    • 2. ∀ I ^a, I ^b, a ≠ b, I ^a ∩ I ^b = Ø;
    • 3. ∀ I ^1, I ^1 = I1 ∪ ... ∪ IK, Ik ∈ {I1, I2, ..., In}, 1 ≤ k ≤ K;
    • 4. ∀ Ii, ∃ I ^a, Ii ⊆ I ^a, ∀ I ^b, I ^b ≠ I ^a, Ii ⊄ I ^b.
  • Die disjunkten Intervalle vereinigen die überlappenden Intervalle in der Menge von Intervallen, um größere Intervalle zu bilden, die einander disjunkt sind.
  • Diese Datenstruktur könnte verwendet werden, um die Schnittmengenabfrage sowie die scharfe Abfrage zu erleichtern. Vorgegeben eine Menge von Intervallen, soll die Schnittmengenabfrage bestimmen, welche Intervalle ein gegebenes Intervall überlappen, während die scharfe Abfrage bestimmen soll, welche dieser Intervalle einen gegebenen Punkt überlappen.
  • Die Schnittmengenabfrage und die scharfe Abfrage sind für bestimmte Anwendungen wie zum Beispiel IP-Routing wichtig. Die hier vorgeschlagene Datenstruktur könnte ebenfalls verwendet werden, um das Problem der mehrdimensionalen Domänen zu erleichtern wie zum Beispiel die Paketklassifizierung, die in IP-Routern verwendet wird. Der Paketklassifizierungsalgorithmus führt die Punktabfrage gegen eine Menge von Regeln durch, wo der Punkt mehrdimensional ist und jede Regel aus mehrfachen Intervallen (Bereichen) zusammengesetzt ist. Die Schnittmengenabfrage und die scharfe Abfrage sind ebenfalls für Computergraphik, große Expertensysteme und einige rechengeometrische Probleme nützlich.
  • In dieser Hinsicht, gegeben eine Menge von Intervallen, stellt der disjunkte Intervallbaum (Disjoint Interval Tree) die Menge von Intervallen dar, um die Schnittmengenabfrage, scharfe Abfrage und Paketklassifizierung zu erleichtern. Ebenfalls wird der Disjoint Interval Tree Construction-Algorithmus verwendet, um einen disjunkten Intervallbaum aufzubauen, und wird der Disjoint Interval Tree Point Query-Algorithmus verwendet, um die scharfe Abfrage durchzuführen und wird der Disjoint Interval Tree Point Query-Algorithmus verwendet, um die Schnittmengenabfrage durchzuführen.
  • Lösungen des Standes der Technik zum Indexieren von Intervallen, um die Schnittmengenabfrage und scharfe Abfrage zu unterstützen, schließen Segmentbaum, Intervallbaum, Prioritätssuchbaum, binären Intervallsuchbaum, Punktbereichsbaum usw. ein. Jedoch keine Lösung ist jemals vorgeschlagen worden, um die disjunkten Intervalle für eine gegebene Menge von Intervallen zu finden.
  • Stand der Technik
  • Die Lösungen des Standes der Technik hinsichtlich des Aspekts des disjunkten Graphen schließen den FIS(Fat Inverted Segment)-baumbasierten Klassifizierungsalgorithmus, die Ternary Content Addressable Memory(TCAM)-Implementierung und die klassischen präfixbasierten Klassifizierungsalgorithmen ein.
  • Der FIS-baumbasierte Klassifizierungsalgorithmus für bereichsspezifizierte Regeln ist eine Lösung des Standes der Technik. Die FIS-Bäume für Mehrfachfelder einer gegebenen Regelmenge sind rekursiv auf der Basis des FIS-Baums für ein Einzelfeld einer gegebenen Regelmenge aufgebaut.
  • Der FIS-Baum ist eine baumähnliche Datenstruktur, um eine Menge von ganzzahligen Intervallen darzustellen. Die Astknoten des FIS-Baums speichern die elementaren Intervalle der Menge der ganzzahligen Intervalle und alle anderen Knoten außerhalb der Astknoten speichern das ganzzahlige Intervall mit der kleinsten unteren Grenze und der maximalen oberen Grenze von allen ganzzahligen Intervallen, die in ihren Unterverzeichnissen gespeichert sind. Im Gegensatz zum Binärbaum zeigen die Ränder im FIS-Baum von den abgeleiteten Knoten auf die Stammknoten.
  • Vorgegeben eine Regelmenge auf der Basis von D Feldern, sind die Gesamt-FIS-Bäume ein Baum, der D Schichten der Fj-FIS-Bäume mit einem Fl-FIS-Baum in der ersten Schicht und eine Menge von Fj-FIS-Bäumen in der j-ten Schicht beinhaltet, wo der Fj-FIS-Baum ein modifizierter FIS-Baum ist, um die Menge der ganzzahligen Intervalle darzustellen, die zum j-ten Feld einer Regelmenge gehören, so daß jeder Knoten im Fj-FIS-Baum eine zugeordnete Regelmenge hat. Die gesamten FIS-Bäume der D-Schichten werden rekursiv durch Aufbauen der FIS-Bäume der D-Schicht aufgebaut. Die zugeordnete Regelmenge eines Knotens beinhaltet Regeln, deren j-tes Feld das ganzzahlige Intervall beinhaltet, das im Knoten gespeichert ist, aber beinhaltet nicht das ganzzahlige Intervall, das im Stammknoten gespeichert ist. Bis auf die erste Schicht stellen die Fj-FIS-Bäume die ganzzahligen Intervalle im j-ten Feld der zugeordneten Regelmengen der Knoten in den Fj-1-FIS-Bäumen dar. Um die beste Matchingregel für ein Paket in den gesamten FIS-Bäumen zu finden, sind mehrfache Durchquerungen zu allen möglichen Knoten erforderlich.
  • Eine andere Lösung des Standes der Technik ist die von TCAM (Ternary Content-Addressable Memory). TCAM ist eine spezialisierte Hardware, die parallelen Mustervergleich ermöglicht. Die TCAM-Speicherfelder speichern die Regeln in abnehmender Reihenfolge der Prioritäten und vergleichen den Eingabeschlüssel (Paketfeld) mit jedem Element im Speicherfeld parallel. Die Regel der höchsten Priorität, die dem Schlüssel entspricht, wird zurückgegeben. Die TCAMs sind schneller als Software-Algorithmen, aber aufgrund der parallelen Hardware ist der Wert der Leistungsaufnahme des TCAM mehrfach höher als bei der vergleichbaren SRAM-basierten Softwarelösung. Im Vergleich sind die graphenbasierten Klassifizierungsverfahren Softwarelösungen und stützen sich auf Graph-Durchquerungen, um die Übereinstimmung mit dem Eingabeschlüssel zu finden. Jedoch untersuchen einige Verfahren den Mittelweg, z. B. beinhaltet die Durchführung der Arbeit, daß kleinere Hardware (als TCAM) vorhanden ist, um die parallele Regelauswertung durchzuführen. Diese Verfahren nutzen heuristische Algorithmen, die die Regelmengen auf die Hardware-Einheiten aufteilen.
  • Die Verwendung klassischer präfixbasierter Klassifizierungsalgorithmen ist eine andere Lösung des Standes der Technik. Durch Erweiterung der Bereiche, um sie durch Präfixe zu ersetzen, könnten klassische präfixbasierte Lösungen wie zum Beispiel auf hierarchischen Versuchen basierter Klassifizierungsalgorithmus, auf mengenbegrenzenden Versuchen basierter Klassifizierungsalgorithmus ebenfalls verwendet werden, um das bereichsbasierte Klassifizierungsproblem zu lösen.
  • Vorgegeben eine Regelmenge und ein Paket als Eingaben, transformiert der FIS-baumbasierte Klassifizierungsalgorithmus die Regelmenge in einen Gesamt-FIS-Baum und sucht die beste Matchingregel für das Paket auf den Gesamt-FIS-Bäumen (2). Das Problem im FIS-baumbasierten Klassifizierungsalgorithmus ist, daß mehrfache Durchquerungen auf den Gesamt-FIS-Bäumen zu allen potentiellen Knoten, die die beste Matchingregel beinhalten, während der Suche erforderlich sind. Mehrfache Durchquerungen sind erforderlich, weil, abgesehen von den Astknoten, ein Knoten in den Gesamt-FIS-Bäumen die ganzzahligen Intervalle von allen seinen Unterverzeichnissen beinhaltet, demzufolge, wenn ein Paket in das ganzzahlige Intervall fällt, das in einem Knoten gespeichert ist, die Suche auf seinen Stammknoten, seinen Stammknoten der Stammknoten und so weiter durchgeführt werden muß. Ein Knoten kann nur einen Stammknoten in seinem Fj-FIS haben, aber er kann einen anderen Stammknoten in der nächsten Schicht Fj-FIS (d. h. Fj+1-FIS) haben. Mehrfache Stammknoten verursachen mehrfache Wege, die zu untersuchen sind.
  • Um diesen Nachteil zu überwinden, wird der disjunkte graph-basierte Klassifizierungsalgorithmus für bereichsspezifizierte Regeln gemäß der vorliegenden Erfindung implementiert, um zu ermöglichen, daß nur ein einzelner Weg zu durchqueren ist, wenn die Klassifizierung für ein Paket durchgeführt wird. Der disjunkte graph-basierte Klassifizierungsalgorithmus verringert nicht nur die Suchzeit, die durch den FIS-bäumebasierten Algorithmus erforderlich ist, sondern erfordert auch weniger Speicher und Datenstruktur-Vorbereitungszeit als der FIS-bäumebasierte Algorithmus.
  • Der naheste Stand der Technik bezüglich des oben erwähnten Elementar-Intervall-Baums ist der Punktbereichsbaum (Point-Range Tree).
  • Der Punktbereichsbaum (PR-Baum) ist ein vergrößerter binärer Suchbaum, um eine Menge von Intervallen darzustellen. Der PR-Baum (6) beinhaltet zwei Typen von Knoten: Punktknoten und Bereichsknoten. Alle Punktknoten sind innere Knoten und jeder Punktknoten hat Felder für Value (Wert), Left (Links), Right (Rechts), Equal (Gleich) und Ownedby (Im Eigentum von). Value (Wert) ist ein Endpunkt eines Intervalls, Left (Right) (Links (Rechts)) ist ein anderer Zeiger auf den linken (rechten) Zweig, der Werte kleiner als (größer als) Value (Wert) hält, Equal (Gleich) beinhaltet eine Liste von Kennungen von Intervallen, die Value (Wert) beinhalten, und Ownedby (im Eigentum von) beinhaltet eine Liste von Kennungen von Intervallen, die Value (Wert) als einen Endpunkt haben. Alle Bereichsknoten sind Astknoten und jeder Bereichsknoten hat Felder für Value1, Value2 und Equal. Value1 und Value2 sind beide ein Endpunkt eines Intervalls und Equal beinhaltet eine Liste von Kennungen von Intervallen, die das offene Intervall (Value1, Value2) beinhalten.
  • Der PR-Baum ermöglicht dynamische Einfügungen und Löschungen und könnte sich selbst ausgeglichen durch ein ausgeglichenes Binärbaumschema aufrechterhalten. Ein ausgeglichener PR-Baum nimmt O(log n)-Zeit für die Suche. Einfügungs-, Löschungs- und Speicherplatz haben Worst-Case-Anforderungen von O(nlogn + m), O(nlog2n + m) beziehungsweise O(nlog n), wo n die Gesamtanzahl der Intervalle im Baum ist und m die Anzahl der während der Einfügung und Löschung besuchten Knoten ist.
  • Mehrwege-Bereichssuche ist eine andere Lösung, die den B-Baum verwendet, um eine Menge von Intervallen darzustellen, wo jeder Knoten im B-Baum anders als die Wurzel (root) k-Schlüssel und k + 1-Zweige hat und die Endpunkte der Menge von Intervallen als Schlüssel in den Knoten des B-Baums gespeichert werden. Die Datenstruktur des B-Baums erfordert eine lineare Suche innerhalb jedes Knotens, um den entsprechenden Zweig zu finden.
  • Vor PR-Baum wurden Datenstrukturen wie zum Beispiel Segmentbaum, binärer Intervallsuchbaum ebenfalls vorgeschlagen, um die scharfe Abfrage zu unterstützen.
  • Vorgegeben eine Menge von Intervallen und einen Punkt, transformiert der PR-Baum-basierte Algorithmus die Menge von Intervallen in einen PR-Baum und sucht alle Intervalle, die den Punkt auf dem PR-Baum beinhalten. Das Problem im PR-Baum ist, daß der PR-Baum die gedoppelten Informationen, die jedes elementare Intervall gespeichert hat, zweimal speichert: jeder Endpunkt wird in einem Punktknoten gespeichert und jedes elementare Intervall wird als ein offenes Intervall in einem Bereichsknoten gespeichert. Sowohl der Punktknoten als auch der Bereichsknoten haben eine Liste von Kennungen von Intervallen, die den Knoten zugeordnet sind.
  • Mehrwege-Bereichssuche verwendet B-Baum, um eine Menge von Intervallen darzustellen. Die Datenstruktur des B-Baums erfordert eine lineare Suche innerhalb jedes Knotens, um den entsprechenden Zweig zu finden.
  • Der Elementar-Intervall-Baum der vorliegenden Erfindung verringert den durch PR-Baum erforderlichen Speicher, indem jedes elementare Intervall nur einmal gespeichert wird, was ebenfalls die Einfügungs- und Löschungszeit entsprechend im Vergleich zur Mehrwege-Bereichssuche verringert.
  • Die naheste frühere Lösung für Schnittmengenabfrage ist der Intervallbaum. Ein Intervallbaum ist ein vergrößerter Rot-Schwarz-Baum, der jedes Intervall in einem Knoten speichert, um eine Menge von Intervallen darzustellen. Jeder Knoten speichert ebenfalls den maximalen Wert jedes Intervall-Endpunktes, der im Zweig gespeichert ist, der seine Wurzel am Knoten hat.
  • Der Intervallbaum ermöglicht dynamische Einfügung und Löschung. Sowohl die Einfügung als auch die Löschung können in O(log n)-Zeit auf einem Intervallbaum von n Knoten durchgeführt werden. Der Speicherplatz ist O(n), da der Intervallbaum jedes Intervall genau einmal in diesem Baum speichert. Die Suchzeit ist O(log n), um ein Intervall zu finden, das ein gegebenes Intervall überlappt. Aber mehrfache Durchquerungen sind erforderlich, um alle Intervalle zu finden, die ein gegebenes Intervall überlappen.
  • Die naheste Lösung des Standes der Technik für das mehrdimensionale Domänenproblem ist das in "Method and system for performing interval-based testing of filter rules", erschienen am 25. März 2003, US-Patentschrift Nr. 6,539,394 , vorgeschlagene Verfahren. Das offenbarte Verfahren transformiert eine Menge von Intervallen in eine Menge von Präfixen und baut dann einen Entscheidungsbaum auf der Basis der Menge der Präfixe auf.
  • Gemäß der Patentschrift 6,539,394 , vorgegeben eine Menge von Intervallen und ein Intervall der Schnittmengenabfrage, transformiert der Intervallbaum-basierte Algorithmus die Menge von Intervallen in einen Intervallbaum und findet ein Intervall, das das gegebene Intervall überlappt. Das Problem der Intervallbaumlösung ist, daß mehrfache Durchquerungen durch den Intervallbaum erforderlich sind, um alle Intervalle zu finden, die das gegebene Intervall überlappen. Der Intervallbaum kann nicht auf mehrdimensionale Domänen erweitert werden, um Paketklassifizierung zu unterstützen.
  • Vorgegeben eine Menge von Intervallen und einen Punkt, transformiert der PR-Baum-basierte Algorithmus die Menge von Intervallen in einen PR-Baum und findet alle Intervalle, die den gegebenen Punkt beinhalten. Das Problem im PR-Baum ist, daß der PR-Baum gedoppelte Informationen speichert, daß jedes offene Intervall, das im Bereichsknoten gespeichert ist, jeden seiner Endpunkte in einem Punktknoten gespeichert hat. Der PR-Baum könnte erweitert werden, um mehrdimensionale Probleme zu unterstützen, muß aber zuviel Speicher verbrauchen.
  • Das in der US-Patentschrift Nr. 6,539,394 vorgeschlagene Verfahren ist ein statischer Algorithmus, der den Entscheidungsbaum wiederaufbauen muß, wenn Einfügungen oder Löschungen eines Intervalls an der Intervallmenge durchgeführt werden. Er benötigt auch große Vorverarbeitungszeit, um den Entscheidungsbaum aufzubauen.
  • Der disjunkte Intervallbaum der vorliegenden Erfindung kann verwendet werden, um eine Datenstruktur aufzubauen, die nur eine einzelne Pfaddurchquerung erfordert, um alle Intervalle zu finden, die ein gegebenes Intervall überlappen, und erfordert nur den halben Speicherplatz im Vergleich zum PR-Baum.
  • Kurzdarstellung der Erfindung
  • Gemäß einem Gesichtspunkt der Erfindung wird eine neue baumähnliche Struktur erstellt. Die baumähnliche Struktur, bekannt als ein disjunkter Graph, gibt die Paketklassifizierung in nur einem Durchgang des Baums frei.
  • Der disjunkte Graph besteht aus zwei neuen Typen von Datenstrukturen: einem Elementar-Intervall-Baum (EIT/elementarg interval tree) und einem disjunkten Intervallbaum (DIT/disjoint interval tree). Der disjunkte Graph ist auf der Basis einer bereichsspezifizierten Regelmenge zur Klassifizierung von Paketen aufgebaut. Jede Regel in der Regelmenge weist eine gleiche Anzahl von Felder D auf und jedes Feld spezifiziert einen Bereich, der als ein ganzzahliges Intervall bezeichnet ist, das eine untere und eine obere Grenze hat. Der disjunkte Graph hat die gleiche Anzahl von Schichten D wie Felder in jeder Regel vorhanden sind. Die Schichten bestehen aus Knoten und jeder Knoten hat eine zugeordnete Regelmenge, die aus der ursprünglichen (bereichsspezifizierten) Regelmenge ausgewählt ist.
  • Die erste Schicht des disjunkten Graphen ist ein EIT. Die restlichen Schichten umfassen eine Menge von DITs und eine Menge von EITs. Die Menge der DITs auf einer gegebenen Schicht wird für die ganzzahligen Intervalle aufgebaut, die in jedem Knoten der EITs in der vorhergehenden Schicht gespeichert sind. Die Menge der EITs auf einer gegebenen Schicht wird für die ganzzahligen Intervalle aufgebaut, die in jedem Knoten der DITs dieser Schicht gespeichert sind. Die zugeordnete Regelmenge eines Knotens eines EIT in einer j-ten Schicht beinhaltet Regeln, deren j-tes Feld das elementare Intervall beinhaltet, das im Knoten gespeichert ist. Die zugeordnete Regelmenge eines Knotens eines DIT in einer j-ten Schicht beinhaltet Regeln, deren j-tes Feld durch das disjunkte Intervall beinhaltet ist, das im Knoten gespeichert ist.
  • Elementare Intervalle sind nicht überlappende ganzzahlige Intervalle. Disjunkte Intervalle sind Intervalle, die aus überlappenden ganzzahligen Intervallen durch ihre Vereinigung gebildet sind, um ganzzahlige Intervalle zu bilden, die disjunkt voneinander sind.
  • Gemäß einem ersten Gesichtspunkt der vorliegenden Erfindung wird ein Verfahren der Klassifizierung nach Anspruch 1 bereitgestellt.
  • Lösungen des Standes der Technik zum Indexieren von Intervallen, um die Schnittmengenabfrage und scharfe Abfrage zu unterstützen, schließen Segmentbaum, Intervallbaum, Prioritätssuchbaum, binären Intervallsuchbaum, Punktbereichsbaum usw. ein. Jedoch keine Lösung ist jemals vorgeschlagen worden, um die disjunkten Intervalle für eine gegebene Menge von Intervallen zu finden.
  • Kurzbeschreibung der Zeichnungen
  • Die Erfindung wird nun detaillierter mit Verweis auf die beigefügten Zeichnungen beschrieben, in welchen:
  • 1 eine Grundregelmenge mit fünf Regeln darstellt, wobei jede Regel drei Felder aufweist;
  • 2 einen FIS-Baum zeigt, der für die Regelmenge von 1 aufgebaut ist;
  • 3 den Aufbau der DITs und EITs zeigt;
  • 4 einen disjunkten Graph zeigt, der für die Regelmenge von 1 aufgebaut ist;
  • 5 eine Intervallmenge S mit drei Intervallen zeigt;
  • 6 einen PR-Baum zeigt, der für die Menge von 5 aufgebaut ist;
  • 7 den EIT darstellt, der für die Menge von 5 aufgebaut ist;
  • 8 eine Intervallmenge S mit fünf Intervallen darstellt;
  • 9 einen Intervallbaum zeigt, der für die Menge von 8 aufgebaut ist;
  • 10 ein PR-Baum ist, der für die Menge von 8 aufgebaut ist;
  • 11 ein Entscheidungsbaum ist, der für die Menge von 8 aufgebaut ist;
  • 12a ein DIT für die Menge von 8 ist; und
  • 12b ein EIT für die Menge von 8 ist.
  • DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
  • Gemäß der vorliegende Erfindung, vorgegeben eine Regelmenge und ein Paket, wird ein disjunkter graph-basierter Klassifizierungsalgorithmus dargestellt. Der Algorithmus schließt den disjunkten Graphen, um die Regelmenge darzustellen, um Paketklassifizierung zu unterstützen, den Disjoint Graph Construction-Algorithmus, um die Regelmenge in einen disjunkten Graphen zu transformieren und den Disjoint Graph Search-Algorithmus, um die beste Matchingregel für das Paket auf dem disjunkten Graphen zu finden, ein.
  • Die Datenstruktur des disjunkten Graphen für eine gegebene Regelmenge mit D Feldern in jeder Regel weist D Schichten auf. Jeder Knoten im disjunkten Graphen weist eine zugeordnete Regelmenge auf. Die erste Schicht des disjunkten Graphen ist ein Elementar-Intervall-Baum (EIT), der für die Menge von ganzzahligen Intervallen aufgebaut ist, die zum ersten Feld der Regeln in der Regelmenge gehören. Außer der ersten Schicht setzt sich die j-te Schicht des disjunkten Graphen aus einer Menge von disjunkten Intervallbäumen (Fj-DITs) und einer Menge von Elementar-Intervall-Bäumen (Fj-EITs) zusammen. Die Menge der Fj-DITs wird für die ganzzahligen Intervalle aufgebaut, die in jedem Knoten der Fj-1-EITs in der (j – 1)-ten Schicht gespeichert sind. Die Menge der Fj-EITs wird für die ganzzahligen Intervalle aufgebaut, die in jedem Knoten der Fj-DITs in der j-ten Schicht gespeichert sind.
  • Der disjunkte Graph ist auf der Basis von zwei Strukturen aufgebaut: Elementar-Intervall-Baum (EIT) und disjunkter Intervallbaum (DIT). Vorgegeben eine Menge von ganzzahligen Intervallen, können ihre elementaren Intervalle und disjunkten Intervallen durch Bäume dargestellt werden, die als Elementar-Intervall-Baum und disjunkter Intervallbaum bezeichnet sind. Jeder Knoten im EIT (DIT) speichert ein elementares (disjunktes) Intervall der Menge der ganzzahligen Intervalle. Die Komponenten des disjunkten Graphen Fj-EIT und Fj-DIT verbessern den EIT und DIT durch Einstellung einer zugeordneten Regelmenge (ARS) zu jedem Knoten des EIT und DIT. Die zugeordnete Regelmenge eines Knotens in Fj-EIT beinhaltet Regeln, deren j-tes Feld das elementare Intervall beinhaltet, das im Knoten gespeichert ist, während die zugeordnete Regelmenge eines Knotens in Fj-DIT Regeln beinhaltet, deren j- tes Feld durch das disjunkte Intervall beinhaltet ist, das im Knoten gespeichert ist.
  • Die EIT-Komponente allein würde ausreichen, eine Datenstruktur aufzubauen, die die Anforderung eines einzelnen zu durchquerenden Weges erfüllt, um die beste Matchingregel für ein Paket durch Aufbauen der EITs für die zugeordnete Regelmenge der Knoten des aufgebauten EIT zu finden, bis kein EIT mehr aufgebaut werden kann. Jedoch werden gedoppelte Sub-EITs in solch einer Datenstruktur aufgebaut, wenn sich die zugeordneten Regelmengen der Knoten in einem EIT miteinander überlappen. Diese gedoppelten Sub-EITs sind redundant und sollten gemeinsam genutzt werden, um Speicherplatz für die Datenstruktur zu sparen. Leider können gedoppelte Sub-EITs nicht durch zwei EITs gemeinsam genutzt werden, wenn der Sub-EIT in der "Mitte" eines EIT ist. Folglich werden DITs aufgebaut, um die gemeinsame Nutzung der gedoppelten Sub-EITs zu ermöglichen.
  • Zum Beispiel ist 3 das Beispiel des DIT- und EIT-Aufbaus. 3c zeigt, daß zwei EITs einen gedoppelten Sub-EIT aufweisen, aber sie können die gedoppelten Sub-EITs nicht gemeinsam nutzen, da der Sub-EIT in der "Mitte" von beiden ElTs ist. Aber wenn man einen DIT für jeden EIT erstellt, können die DITs genutzt werden, um die ursprünglichen EITs zu ersetzen und den zwei DITs gemeinsam einen einzelnen Sub-EIT nutzen zu lassen.
  • 4 ist der disjunkte Graph G, der für die Menge der Regeln S mit 3 Feldern aufgebaut ist, die in 1 gegeben ist. G weist 3 Schichten auf: 1) Schicht 1 beinhaltet einen F1-EIT, der für die Regelmenge S aufgebaut ist; 2) Schicht 2 beinhaltet sechs F2-DITs für zugeordnete Regelmengen der Knoten in dem F1-EIT und zwei F2-EIT, die für zugeordnete Regelmengen (ARSs/associated rule sets) der Knoten in den sechs F2-DITs aufbaut sind, weil sechs verschiedene ARSs vorhanden sind, deren Größen größer als 1 in dem F1-EIT sind und zwei verschiedene ARSs, deren Größen größer als 1 in den sechs F2-DITs sind; 3) Schicht 3 beinhaltet zwei F3-DITs, die für ARSs der Knoten in den zwei F2-EITs aufgebaut sind, und einen F3-EIT, der für ARSs der Knoten in den zwei F3-DITs aufgebaut ist, weil zwei verschiedene ARSs vorhanden sind, deren Größen größer als 1 in den zwei F2-EIT sind, und zwei verschiedene ARSs, deren Größen größer als 1 in den zwei F3-DITs sind.
  • Der Disjoint Graph Construction-Algorithmus nimmt eine Regelmenge S mit N Regeln und D Feldern als Eingabe und gibt einen disjunkten Graphen G als Ausgabe zurück.
    • Eingabe: Regelmenge S = {R1, ..., RN} , wo Ri = {Fi1, Fi2, ..., FiD}, i ∈ [1, N]
    • Ausgabe: disjunkter Graph G.
  • Disjoint Graph Construction-Algorithmus (S)
    • Schritt 1. Aufbauen der ersten Schicht des disjunkten Graphen G. Aufbauen eines F1-EIT für das ganzzahlige Intervall F1(S) unter Verwendung des EITC-Algorithmus
    • Schritt 2. Aufbauen der k-ten Schicht des disjunkten Graphen G, k ∈ [2, D]
    • 1. Aufbauen eines Fk-DIT in der k-ten Schicht für jeden Knoten des Fk-1-EIT in der (k – 1)-ten Schicht und Verbinden des Knotens mit der Wurzel des neu aufgebauten Fk-DIT
    • a. Vorgegeben einen Knoten v mit einer zugeordneten Regelmenge Sv eines Fk-1-EIT in der (k – 1)-ten Schicht, Aufbauen eines Fk-DITv für die Menge von ganzzahligen Intervallen Fk(Sv) unter Verwendung des DITC-Algorithmus, Verbinden von v mit der Wurzel des Fk-DITv. Wenn Sv nur eine Regel hat, die Regel direkt mit v verbinden;
    • b. Wenn die zugeordnete Regelmengen Sv eines anderen Knotens v' die gleiche wie Sv ist, dann wird Fk-DITv gemeinsam durch v und v' genutzt, und der Knoten v' wird ebenfalls mit der Wurzel des Fk-DITv verbunden;
    • c. Wiederholung a bis c, um Fk-DITs für alle Knoten in den Fk-1-EITB aufzubauen.
    • 2. Aufbauen eines Fk-EIT in der k-ten Schicht für jeden Knoten in den Fk-DITs in der k-ten Schicht und Verbinden des Knotens mit der Wurzel des neu aufgebauten Fk-EIT
    • a. Vorgegeben einen Knoten v mit einer zugeordneten Regelmenge Sv eines Fk-DIT in der k-ten Schicht, Aufbauen eines Fk-EITv für die Menge von ganzzahligen Intervallen Fk(Sv) unter Verwendung des EITC-Algorithmus, Verbinden von v mit der Wurzel des Fk-EITv. Wenn Sv nur eine Regel hat, die Regel direkt mit v verbinden;
    • b. Wenn die zugeordnete Regelmenge Sv eines anderen Knotens v' die gleiche wie Sv ist, dann wird Fk-EITv gemeinsam durch v und v' genutzt und der Knoten v' wird ebenfalls mit der Wurzel des Fk-EITv verbunden;
    • c. Wiederholung a bis c, um Fk-EITs für alle Knoten in den Fk-DITs aufzubauen. Wiederholung von Schritt 2 bis die D-te Schicht des disjunkten Graphen G aufgebaut ist.
  • Der Disjoint Graph Search-Algorithmus nimmt einen disjunkten Graphen G, der durch den Disjoint Graph Construction-Algorithmus aufgebaut ist und ein Paket P als Eingaben und gibt die beste Matchingregel von P als Ausgabe zurück.
  • Disjoint Graph Search-Algorithmus (G, P)
  • Die Suche beginnt von der Wurzel des F1-EIT-Baums in der ersten Schicht von G.
    • Schritt 1. Suchen der Fk-EITs in der k-ten Schicht von G, k ∈ [1, D] Die Suche, die auf dem Knoten v des Fk-EIT mit der zugeordneten Regelmenge Sv und ganzzahligem Intervall I ~v = [l ~v, u ~v] durchgeführt wird, kann in drei Fälle unterteilt werden:
    • Fall 1: fk < l ~v Durchführen der Suche auf dem linken Unterverzeichnis von v, wenn das linke Unterverzeichnis existiert. Wenn das linke Unterverzeichnis nicht existiert, ist keine Matchingregel für P in G vorhanden.
    • Fall 2: fk > u ~v Durchführen der Suche auf dem rechten Unterverzeichnis von v, wenn das rechte Unterverzeichnis existiert. Wenn das rechte Unterverzeichnis nicht existiert, ist keine Matchingregel für P in G vorhanden.
    • Fall 3: l ~v ≤ fk ≤ u ~v Durchführen der Suche auf Fk+1-DITv in der (k + 1)-ten Schicht, wenn der Fk+1-DITv existiert. Wenn Fk+1-DITv nicht existiert, dann ist die beste Matchingregel von P die Regel, die die kleinste Regelnummer in Sv aufweist.
    • Schritt 2. Suchen des Fk+1-DITv in der (k + 1)-ten Schicht von G, k ∈ [1, D – 1] Die Suche, die auf dem Knoten v des Fk+1-DITv mit der zugeordneten Regelmenge Sv und ganzzahligem Intervall I ~v = [l ~v, u ~v] durchgeführt wird, kann in drei Fälle unterteilt werden:
    • Fall 1: fk +1 < I ^v Durchführen der Suche auf dem linken Unterverzeichnis von v, wenn das linke Unterverzeichnis existiert. Wenn das linke Unterverzeichnis nicht existiert, ist keine Matchingregel für P in G vorhanden.
    • Fall 2: fk+1 > u ^v Durchführen der Suche auf dem rechten Unterverzeichnis of v, wenn das rechte Unterverzeichnis existiert. Wenn das rechte Unterverzeichnis nicht existiert, ist keine Matchingregel für P in G vorhanden.
    • Fall 3: l ^v ≤ fk+1 ≤ u ^v Durchführen der Suche auf Fk+1-EITv in der (k + 1)-ten Schicht, wenn der Fk +1-EITv existiert. Wenn Fk+1-EITv, nicht existiert, dann ist die beste Matchingregel von P die Regel, die die kleinste Regelnummer in Sv, aufweist.
  • Der Disjunkte Graph-basierte Klassifizierungsalgorithmus erfordert nur einen einzelnen zu durchquerenden Weg beim Durchführen der Klassifizierung für ein Paket, folglich verringert sich die durch den FIS-Bäume-basierten Klassifizierungs-algorithmus erforderliche Suchzeit. Außerdem, da identische EITs (DITs) nur einmal aufgebaut werden, werden Aufbauzeit und Speicherplatz eingespart.
  • Ebenfalls gemäß der Erfindung, vorgegeben eine Menge von Intervallen und einen Punkt, wird der Elementar-Intervall-Baum dargestellt, um die Menge von Intervallen darzustellen, um scharfe Abfrage zu unterstützen, der Elementarg Interval Tree Construction-Algorithmus, um die Menge von Intervallen an einen Elementar-Intervall-Baum aufzubauen, und der Elementarg Interval Tree Query-Algorithmus, um scharfe Abfrage auf dem Elementar-Intervall-Baum durchzuführen, um alle Intervalle zu finden, die einen gegebenen Punkt beinhalten.
  • Vorgegeben eine Menge von Intervallen I = {I1, I2, ..., In} = {[l1, u1], [l2, u2], ..., [ln, un]}, ist die Menge der elementaren Intervalle von I definiert als {I ~1, I ~2, ..., I ~K}:
    • 1. Ablegen aller unteren Grenzen und oberen Grenzen von I in ein Feld E, E = {l1, u1, ..., ln, un};
    • 2. Sortieren von E in aufsteigender Reihenfolge, Löschen gedoppelter Elemente, Bezeichnen von E als E = {e1 , ..., ek}, e1 < e2 < ... < eK, 1 ≤ K ≤ 2n;
    • 3. I ~k
      Figure 00240001
      ek, ek+1
      Figure 00240002
      Ii, 1 ≤ k ≤ K – 1, wenn ek
      Figure 00240003
      U oder ek+1
      Figure 00240004
      ), 1 ≤ i ≤ n (zwei aufeinanderfolgende elementare Grenzen ek und ek+1 definieren ein elementares Intervall, es sei denn, die erste Grenze ek ist eine obere Grenze und die zweite Grenze ek+1 ist eine untere Grenze)
    • 4. I1 ⋃ I2 ⋃ ... ⋃ In = I ~1 ⋃ I ~2 ⋃ ... ⋃ I ~K-1;
    • 5. ∀ I ~a, I ~b, a ≠ b, I ~a ∩ I ~b = Ø.
  • Zum Beispiel, vorgegeben eine Menge von Intervallen (5) {[10, 30], [5, 35], [4, 8]}, sind die elementaren Intervalle {[4, 4], [5, 8], [9, 9], [10, 30], [31, 35]}.
  • Der Elementar-Intervall-Baum ist ein vergrößerter binärer Suchbaum, der jedes elementare Intervall in einem Knoten speichert, um eine Menge von Intervallen darzustellen. Jeder Knoten im Elementar-Intervall-Baum hat Felder für LB, UB, Left (Links), Right (Rechts) und AIS, wo LB und UB der untere beziehungsweise obere Endpunkt eines elementaren Intervalls sind, Left (Links) und Right (Rechts) die Zeiger auf den linken beziehungsweise rechten Zweig sind, und AIS (Associated Interval Set) eine Liste der Kennungen der Intervalle ist, die das im Knoten gespeicherte elementare Intervall beinhaltet.
  • Der Elementarg Interval Tree Construction(EITC)-Algorithmus nimmt eine Menge von Intervallen I = {I1, I2, ..., In} als Eingabe und gibt einen elementaren Baum EIT als Ausgabe zurück.
  • Elementarg Interval Tree Construction-Algorithmus (I)
    • Schritt 1: Erstellen des Stammknotens V für EIT
    • 1. Speichern des ganzzahligen Intervalls Iv = [lv, uv] = [l1, u1] in V;
    • 2. Speichern der Liste der Kennungen der Intervalle AISv = {II} in V;
    • 3. Entfernen von I1 aus I, I = I – I1.
    • Schritt 2: Einfügen von Ii = [li, ui], i ∈ [2, n] in den EIT
    • 1. Vergleichen von Ii mit Iv
    • Fall 1: ui < lv Wenn der linke abgeleitete Knoten von V nicht existiert, vL = Ø, vL erstellen, Ii in vL speichern und Ii zum AIS von vL hinzufügen. Wenn vL ≠ Ø rekursiv ist, Ii in den linken Sub-EIT mit der Wurzel vL einfügen.
    • Fall 2: li > uv Wenn der rechte abgeleitete Knoten von V nicht existiert, vR = Ø, vR erstellen, Ii in vR speichern und Ii zum AIS von vR hinzufügen. Wenn vR ≠ Ø rekursiv ist, Ii zum rechten Sub-EIT mit der Wurzel vR hinzufügen.
    • Fall 3: Ii ∩ Iv ≠ Ø IL = [min(li, lv), max(li, lv) – 1] IR = [min(ui, uv) + 1, max(ui, uv)] Iv = [lv, uv] = [max(li, lv), min(ui, uv)] Einfügen der ganzzahligen Intervalle IL und IR in EIT Wenn IL ≠ Ø Wenn vL = Ø, vL erstellen, IL in vL speichern; Wenn vL ≠ Ø rekursiv ist, IL in den linken Sub-EIT mit der Wurzel vL einfügen. Wenn IR ≠ Ø Wenn vR = Ø, vR erstellen, IR in vR speichern; Wenn vR ≠ Ø rekursiv ist, IR in den rechten Sub-EIT mit der Wurzel vR einfügen.
    • 2. Ii aus I, I = I – I1 entfernen, Wiederholung von Schritt 2 bis I = Ø
  • Der Elementarg Interval Tree Query(EITQ)-Algorithmus nimmt den Elementar-Intervall-Baum EIT, der für eine Menge von Intervallen durch den EITC-Algorithmus aufgebaut ist, und einen Punkt P als Eingaben und gibt eine Liste der Kennungen der Intervalle aus, die P als Ausgabe beinhalten.
  • Elementarg Interval Tree Query-Algorithmus (EIT, P) Starten von dem Stammknoten V von EIT
    • Fall 1. Wenn lv ≤ P ≤ uv, AISv zurückgeben;
    • Fall 2. Wenn P < lv rekursiv ist, den linken Sub-EIT suchen, der seine Wurzel am linken abgeleiteten Knoten von V, vL hat;
    • Fall 3. Wenn P > uv, rekursiv ist, den rechten Sub-EIT suchen, der seine Wurzel am rechten abgeleiteten Knoten von V, vR hat;
    • Fall 4. Wenn der EIT leer ist, NULL zurückgeben.
  • Der Elementar-Intervall-Baum beinhaltet nur die Bereichsknoten im PR-Baum, folglich verbraucht er nur den halben Speicher, der durch den PR-Baum erforderlich ist. Der Elementar-Intervall-Baum ermöglicht die dynamische Einfügung (Schritt 2 des EITC-Algorithmus) und die Löschung, während der Baum sowie der PR-Baum ausgeglichen gehalten werden. Ein ausgeglichenes Binärbaumschema könnte verwendet werden, um die Baumausgleichsoperation am Elementar-Intervall-Baum durchzuführen. Der ausgeglichene Elementar-Intervall-Baum hält die Suchzeit wie O(log n) und verringert die Worst-Case-Einfügungszeit auf O(nlog n), wo n die Gesamtanzahl der Intervalle ist.
  • Die Vorteile des Elementar-Intervall-Baums sind: 1) Verringerung des durch den PR-Baum erforderlichen Speichers auf die Hälfte, 2) Verringerung der Einfügungs- und Löschungszeit im Vergleich zum PR-Baum.
  • Vorgegeben eine Menge von Intervallen S, die in 5 gezeigt ist, ist 6 der PR-Baum, der für S aufgebaut ist, und ist 7 der für S aufgebaute Elementar-Intervall-Baum.
  • Der kommerzielle Wert des Elementar-Intervall-Baums liegt in der Rolle als Lösung für scharfe Abfragen, was ein notwendiges Element in Anwendungen wie zum Beispiel IP-Routern ist. Außerdem stellt die Erweiterung des Elementar-Intervall-Baums auf mehrdimensionale Domänen eine Lösung für Paketklassifizierung in IP-Routern bereit. Die Klassifizierung ist eine sehr wichtige Funktion, die ein Teil der Anwendungen wie zum Beispiel Firewall, IPsec, Dienstgüte (Quality of Service) ist. Die Firewall muß die Pakete auf der Basis vordefinierter Regelmengen klassifizieren, so daß sie gewisse Pakete des Flusses vom Eintreten in das Netzwerk filtern/blockieren kann. IPsec muß Pakete auf der Basis der Regeln klassifizieren, so daß spezielle Pakete des Flusses mit entsprechenden Sicherheitsrichtlinien und -zuordnungen verglichen werden können, die Sicherheitsalgorithmen, sichere Schlüssel angeben, die auf die Pakete des Flusses anzuwenden sind. Die Dienstgüte muß die Klassifizierungsfunktion auf Paketen durchführen, so daß Attribute der Dienstgüte wie Verzögerungsbeschränkungen, Paketverlustbeschränkungen, Bandbreite mit den Paketen des Flusses verbunden werden können. In VPN-Umgebungen können alle drei Anwendungen von Firewall, IPsec und Dienstgüte auf das Edge-Router-Gerät angewendet werden müssen. Deshalb wird die effiziente Implementierung der Klassifizierungsfunktion sogar in solchen Umgebungen notwendiger.
  • Vorgegeben eine Menge von Intervallen stellt der disjunkte Intervallbaum eine Menge von Intervallen dar, um die Abfragen wie zum Beispiel scharfe Abfrage und Schnittmengenabfrage zu erleichtern, transformiert der Disjoint Interval Tree Construction-Algorithmus eine Menge von Intervallen in einen disjunkten Intervallbaum und folglich, um die disjunkten Intervalle für die Menge von Intervallen zu finden, führt der Disjoint Interval Tree Point Query-Algorithmus die scharfe Abfrage auf dem disjunkten Intervallbaum durch und führt der Disjoint Interval Tree Point Query-Algorithmus die Schnittmengenabfrage auf dem disjunkten Intervallbaum durch.
  • Vorgegeben eine Menge von Intervallen I = {I1, I2, ..., In}, ist die Menge der disjunkten Intervalle von I definiert als {I ^1, I ^2, ... I ^L},
    • 1. I1 ∪ I2 ∪ ... ∪ In = I ^1 ∪ I ^2 ∪ ... ∪ I ^L;
    • 2. ∪ I ^a, I ^b, a ≠ b, I ^a ∩ I ^b = Ø;
    • 3. ∀ I ^1, I ^1 = I1 ∪ ... ∪ IK, Ik ∈ {I1, I2, ..., In}, 1 ≤ k ≤ K;
    • 4. ∀ Ii, ∃ I ^a, Ii ⊆ I ^a, ∀ I ^b, I ^b ≠ I ^a, Ii ⊄ I ^b.
  • Die disjunkten Intervalle vereinigen die überlappenden Intervalle in der Menge von Intervallen, um größere Intervalle zu bilden, die einander disjunkt sind. Zum Beispiel, vorgegeben eine Menge von Intervallen {[10, 30], [5, 35], [0, 3], [4, 8], [49, 50]) (8), sind die disjunkten Intervalle {[0, 3], [4, 35], [49, 50]}.
  • Der disjunkte Intervallbaum ist ein binärer Suchbaum, der jedes disjunkte Intervall in einem Knoten speichert, um eine Menge von Intervallen darzustellen. Jeder Knoten im disjunkten Intervallbaum hat Felder für LB, UB, Left (Links), Right (Rechts) und AIS, wo LB und UB der untere beziehungsweise obere Endpunkt eines disjunkten Intervalls sind, Left (Links) und Right (Rechts) die Zeiger auf den linken beziehungsweise rechten Zweig sind und AIS (Associated Interval Set) eine Liste der Kennungen der Intervalle ist, die durch das im Knoten gespeicherte disjunkte Intervall enthalten ist.
  • Der Disjoint Interval Tree Construction(DITC)-Algorithmus nimmt eine Menge von Intervallen I = {I1, I2, ..., In} als Eingabe und gibt einen disjunkten Intervallbaum DIT als Ausgabe zurück.
  • Disjoint Interval Tree Construction-Algorithmus (I)
    • Schritt 1: Erstellen des Stammknotens V für DIT
    • 1. Speichern des ganzzahligen Intervalls I1 = [l1, u1] in V, Iv = [lv, uv] = [l1, u1]
    • 2. Speichern der Liste der Kennungen der Intervalle AISv = {I1} in V;
    • 3. Entfernen I1 aus I, I = I – I1
    • Schritt 2: Einfügen von Ii = [li, ui], i ∈ [2, n] in den DIT
    • 1. Vergleichen von Ii und Iv
    • Fall 1: ui < lv. Wenn der linke abgeleitete Knoten von V nicht existiert, vL = Ø, vL erstellen, Ii in vL speichern und Ii zum AIS von vL hinzufügen. Wenn vL ≠ Ø rekursiv ist, Ii in den linken Sub-DIT mit der Wurzel vL hinzufügen.
    • Fall 2: li > uv. Wenn der rechte abgeleitete Knote von V nicht existiert, vR = Ø, vR erstellen, Ii in vR speichern und Ii zum AIS von vR hinzufügen. Wenn vR ≠ Ø rekursiv ist, Ii zum rechten Sub-DIT mit der Wurzel vR hinzufügen.
    • Fall 3: Ii ∩ Iv ≠ Ø. Wenn li < lv und Unterverzeichnisse lcv links von v existieren, die die Bedingung ulcv ≥ li bestätigen, und leftmostcv eines dieser Unterverzeichnisse ist, das am weitesten links ist; dann 1) diese Unterverzeichnisse verwerfen; 2) lv = lleftmostlcv einstellen; 3) Iv mit dem Rest des DIT-Zweigs links verbinden Wenn li < lv und keine Unterverzeichnisse lcv links von v vorhanden sind, die die Bedingung ulcv ≥ li bestätigen, dann lv = li einstellen Wenn ui > uv und Unterverzeichnisse rcv rechts von v existieren, die die Bedingung lrcv ≤ ui bestätigen und rightmostcv eines von diesen Unterverzeichnisse ist, das am weitesten rechts ist; dann 1) diese Unterverzeichnisse verwerfen; 2) uv = urightmostcv einstellen; 3) Iv mit dem Rest des DIT-Zweigs rechts verbinden Wenn ui > uv und keine Unterverzeichnisse rcv rechts von v vorhanden sind, die die Bedingungen lrcv ≤ ui bestätigen, dann uv = ui einstellen. Iv = [lv, uv]
    • 2. Ii von I, I = I – Ii, entfernen.
    • Schritt 2 bis I = Ø wiederholen
  • Der Disjoint Interval Tree Point Query(DITPQ)-Algorithmus nimmt den disjunkten Intervallbaum DIT, der für eine Menge von Intervallen durch den DITC-Algorithmus aufgebaut ist, und einen Punkt P als Eingaben, und gibt eine Liste der Kennungen der Intervalle zurück, die P als Ausgabe beinhalten könnten.
  • Disjoint Interval Tree Point Query-Algorithmus (DIT, P) Starten von dem Stammknoten V von DIT
    • Fall 1. Wenn lv ≤ P ≤ uv, AISv zurückgeben;
    • Fall 2. Wenn P < lv, rekursiv ist, den linken Sub-DIT suchen, der seine Wurzel am linken abgeleiteten Knoten von V, vL hat;
    • Fall 3. Wenn P > uv rekursiv ist, den rechten Sub-DIT suchen, der seine Wurzel am rechten abgeleiteten Knoten von V, vR hat;
    • Fall 4. Wenn der DIT leer ist, NULL zurückgeben.
  • Der Disjoint Interval Tree Interval Query(DITIQ)-Algorithmus nimmt den disjunkten Intervallbaum DIT, der für eine Menge von Intervallen durch den DITC-Algorithmus aufgebaut ist und ein Intervall [l, u] als Eingaben und gibt eine Liste der Kennungen der Intervalle, die [1, u] überlappen könnten, als Ausgabe zurück.
  • Disjoint Interval Tree Point Query-Algorithmus (DIT, l, u) Starten vom Stammknoten V von DIT
    • Fall 1. Wenn [l, u] ∩ [lv, uv] ≠ Ø, AISv zurückgeben;
    • Fall 2. Wenn u < lv rekursiv ist, den linken Sub-DIT suchen, der seine Wurzel am linken abgeleiteten Knoten von V, vL hat;
    • Fall 3. Wenn l < uv rekursiv ist, den rechten Sub-DIT suchen, der seine Wurzel am rechten abgeleiteten Knoten von V, vR hat;
    • Fall 4. Wenn der DIT leer ist, NULL zurückgeben.
  • Der disjunkte Intervallbaum ermöglicht dynamische Einfügung, während die naheste Lösung des Standes der Technik, die in der US-Patentschrift Nr. 6,539,394 vorgeschlagen ist, die dynamische Einfügung nicht unterstützt, wie im nächsten Abschnitt dargestellt ist. Und der disjunkte Intervallbaum ist fähig, die Ausgewogenheit durch ein ausgeglichenes Binärbaumschema aufrechtzuerhalten.
  • Der disjunkte Intervallbaum kann mit anderen Datenstrukturen wie zum Beispiel Elementar-Intervall-Baum verwendet werden, um eine Datenstruktur zu bilden, um Schnittmengenabfrage, scharfe Abfrage, Paketklassifizierung usw. zu unterstützen. Zum Beispiel ist es nach dem Aufbauen des disjunkten Intervallbaums möglich, einen Elementar-Intervall-Baum für jede zugeordnete Regelmenge im disjunkten Intervallbaum aufzubauen. Die Datenstruktur, die durch den ausgeglichenen disjunkten Intervallbaum und ausgeglichene Elementar-Intervall-Bäume gebildet ist, nimmt die O(log n)-Zeit für Schnittmengenabfrage oder scharfe Abfrage. Um alle Intervalle zu finden, die ein gegebenes Intervall überlappen, könnte der DITIQ-Algorithmus verwendet werden, um die Menge von Intervallen zu finden, die möglich sind, das gegebene Intervall zu überlappen, und die Menge von Intervallen, die das gegebene Intervall überlappen, kann schnell in der kleinen Intervallmenge gefunden werden. Entsprechend, um alle Intervalle zu finden, die einen gegebenen Punkt beinhalten, könnte der DITPQ-Algorithmus verwendet werden, um die Menge von Intervallen zu finden, die möglich sind, den gegebenen Punkt zu beinhalten.
  • Hier sind die Unterschiede des DIT beim Vergleich mit dem in der US-Patentschrift Nr. 6,539,394 vorgeschlagenen Verfahren offensichtlich. Das Verfahren ist ein statischer Algorithmus, der den Entscheidungsbaum aufbauen muß, wenn ein Intervall aus der Intervallmenge eingefügt oder gelöscht wird.
  • Vorgegeben eine Menge von Intervallen I = {I1, I2, ..., In} = {[l1, u1], [l2, u2], ..., [ln, un]}, führt das Verfahren die folgenden Operationen durch:
    • 1) Legt alle unteren Endpunkte {l1, l2, ..., ln} in ein Feld, sortiert sie in aufsteigender Reihenfolge und löscht gedoppelte Elemente, um eine Menge von Endpunkten {le1, le2, ..., lei}, i ≤ n zu erhalten, und verwendet diese Menge der Endpunkte, um eine Menge von Intervallen LE = {[0, le1), [le1, le2), [le2, le3), ... [lei, max)} zu bilden, wo |LE| = i + 1 und max das mögliche Maximum sind. Zum Beispiel, vorgegeben eine Menge von Intervallen {[1, 3], [4, 5], [2, 8]}, erhält man die Intervallmenge LE = {[0, 1), [1, 2), [2, 4), [4, max)};
    • 2) Führt die gleiche Operation auf den oberen Endpunkten {u1, u2, ..., un} durch, um eine Menge von Intervallen UE = {(0, 0], [0, ue1], (ue1, ue2], ... (uej, max]} zu erhalten, wo j ≤ n und |UE| = j + 2;
    • 3) Für die Intervallmenge LE werden w1 = ⎡log|LE|⎤ Bits verwendet, um jedes Intervall der Intervallmenge zu markieren, beginnend von allen Nullen für das erste Intervall. Zum Beispiel werden die Intervalle in {[0, 1), [1, 2), [2, 4), [4, max)} als 00 für [0, 1), 01 für [1, 2), 10 für [2, 4) und 11 für [4, max) markiert;
    • 4) Markiert jedes Intervall in der Intervallmenge UE unter Verwendung von w2 = ⎡log|UE|⎤ Bits;
    • 5) Baut eine n × (w1 + w2) Matrix M für die Menge der Intervalle I auf, eine Reihe für jedes Intervall und (w1 + w2) Elemente for jede Reihe: 1) erhält die Bitmarken von allen Intervallen in LE, die durch das Intervall beinhaltet sind, hält die gemeinsamen Bits dieser Intervalle und setzt andere Bits auf Platzhalter *, um ein Präfix der w1 zu erhalten, und 2) erhält ein Präfix der w2 Bits für das Intervall entsprechend auf der Basis der Intervallmenge UE. Zum Beispiel beinhaltet das Intervall [2, 8] die Intervalle [2, 4], [4, max] in LE, die als 10 beziehungsweise 11 markiert sind, was zu 1* führt;
    • 6) Baut einen Entscheidungsbaum auf der Basis der Matrix M auf:
    • a) Auswählen der Spalte, die eine minimale Anzahl von Platzhaltern aufweist, und bei mehr als einer solchen Spalte, Auswählen der niedrigsten Indexspalte, die die naheste gleiche Anzahl von Einsen und Nullen aufweist, und diese Spalte wird der erste Knoten des Entscheidungsbaums sein;
    • b) Leitet zwei Matrizen von M durch Eliminieren der Reihen her, die Einsen beziehungsweise Nullen in der ausgewählten Spalte aufweisen, und durch Eliminieren der ausgewählten Spalte aus den neuen Matrizen;
    • c) Wählt rekursiv die Spalten aus den Matrizen aus und erstellt Knoten bis der Entscheidungsbaum aufgebaut ist, daß die gegebenen Intervalle voneinander unterschieden werden.
  • Ein Beispiel des Entscheidungsbaums, der für die Menge von Intervallen in 8 aufgebaut ist, ist in 11 gegeben.
  • Obwohl spezielle Ausführungsformen der Erfindung beschrieben und dargestellt worden sind, wird es für den Fachmann offensichtlich sein, daß zahlreiche Änderungen gemacht werden können, ohne von den Grundprinzipien abzuweichen. Zum Beispiel können baumförmige Datenstrukturen zum Erstellen des disjunkten Graphen sowie des EIT und DIT auf einem computerlesbaren Medium für Paketklassifizierung gespeichert sein. Es ist jedoch zu verstehen, daß solche Änderungen innerhalb des vollen Anwendungsbereiches der Erfindung fallen werden, wie in den beigefügten Patentansprüchen definiert ist.

Claims (7)

  1. Ein Verfahren der Klassifizierung eines Datenpakets in einem Hochgeschwindigkeitssystem, das zum mehrdimensionalen Datenverkehr gehört, unter Verwendung von Regeln, die auf Daten in spezifizierten Felder der Header der Datenpakete angewendet sind, einer Regel, die unter Verwendung einer Menge von Intervallen für Werte entworfen ist, die in Daten angenommen sind, die zu verschiedenen Feldern der Header gehören, wobei jede Regel in der Regelmenge eine gleiche Anzahl D von Feldern aufweist, das Verfahren umfaßt: Transformieren der Menge von Intervallen in einen baumähnlichen disjunkten Graphen DG mit D Schichten, wobei jeder Knoten im DG eine zugeordnete Regelmenge aufweist, wo die erste Schicht des DG in einem Elementar-Intervall-Baum EIT, der für die Menge von Intervallen aufgebaut ist, die zum ersten Feld der Regeln in der Regelmenge gehören, und außer der ersten Schicht die j-te Schicht des DG aus einer Menge von disjunkten Intervallbäumen DIT (Fj-DITs) und einer Menge von EITs (Fj-EITs) zusammengesetzt ist, die Menge der Fj-DITs für die Intervalle aufgebaut wird, die in jedem Knoten der Fj-1-EITs in der (j – 1)-ten Schicht gespeichert sind, und die Menge der Fj-EITs für die Intervalle aufgebaut wird, die in jedem Knoten der Fj-DITs in der j-ten Schicht gespeichert sind, in welchem ein DIT eine Darstellung einer Menge von disjunkten Intervallen {I ^1, I ^2, ... I ^L} als ein vergrößerter binärer Suchbaum ist, der jedes disjunkte Intervall {I ^1, I ^2, ... I ^L} in einem Knoten speichert; in welchem eine Menge von disjunkten Intervallen {I ^1, I ^2, ... I ^L} aus einer gegebenen Menge von Intervallen I = {I1, I2, ..., In} gebildet wird, so daß: – die Kombination aller disjunkten Intervalle {I ^1, I ^2, ... I ^L} der Kombination aller überlappenden Intervalle I = {I1, I2, ..., In} entspricht: I1 ∪ I2 ∪ ... ∪ In = I ^1 ∪ I ^2 ∪ ... ∪ I ^L.– jede zwei disjunkte Intervalle disjunkt voneinander sind: ∀ I ^a, I ^b, a ≠ b, I ^a ∩ I ^b = Ø – jedes disjunkte Intervall die Kombination einiger überlappender Intervalle ist: ∀ I ^1, I ^1 = I1 ∪ ... ∪ IK, Ik ∈ {I1, I2, ..., In}, 1 ≤ k ≤ K; – jedes überlappende Intervall in nur einem der disjunkten Intervalle eingeschlossen ist: ∀ Ii, ∃ I ^a, Ii ⊆ I ^a, ∀ I ^b, I ^b ≠ I ^a, Ii ⊄ I ^b; in welchem ein EIT eine Darstellung einer Menge von elementaren Intervallen als ein vergrößerter binärer Suchbaum ist, der jedes elementare Intervall in einem Knoten speichert; in welchem eine Menge von elementaren Intervallen aus einer gegebenen Menge von Intervallen {I1, I2, ..., In} durch Teilen der Menge der Intervalle in kleinere nichtüberlappende Intervalle gebildet wird; und Durchführen einer Punktabfrage des DG, um herauszufinden, zu welcher Menge von Intervallen das Paket gehört.
  2. Das Verfahren nach Anspruch 1, in welchem das Erstellen eines EIT aus einer Menge von Intervallen umfaßt: Projizieren der Endpunkte jedes Intervalls der Menge von Intervallen auf eine Linie, wobei der Endpunkt die Linie in nichtüberlappende elementare Intervalle teilt; Bilden des EIT, so daß jeder Knoten des Baums ein einzelnes elementares Intervall beinhaltet, eine Anzeige der ursprünglichen Intervalle, die mit den elementaren Intervallen und Zeigern auf alle angrenzenden Knoten im Baum verbunden sind.
  3. Das Verfahren nach Anspruch 1, in welchem die Punktabfrage unter Verwendung einer Schnittmengenabfrage durchgeführt wird.
  4. Das Verfahren nach Anspruch 2, in welchem die Schnittmengenabfrage durch einen Disjoint Interval Tree Point Query-Algorithmus implementiert wird.
  5. Das Verfahren nach jedem der Ansprüche 1 bis 3, in welchem die Punktabfrage unter Verwendung einer scharfen Abfrage durchgeführt wird.
  6. Das Verfahren nach Anspruch 4, in welchem die scharfe Abfrage durch einen Disjoint Interval Tree Point Query-Algorithmus implementiert wird.
  7. Das Verfahren nach Anspruch 1 zur Verwendung in einem IP-Router.
DE602004010976T 2003-08-27 2004-08-24 Datenstruktur für bereichspezifizierte Algorithmen Expired - Fee Related DE602004010976T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US648791 1996-05-16
US10/648,791 US20050050060A1 (en) 2003-08-27 2003-08-27 Data structure for range-specified algorithms

Publications (2)

Publication Number Publication Date
DE602004010976D1 DE602004010976D1 (de) 2008-02-14
DE602004010976T2 true DE602004010976T2 (de) 2009-01-08

Family

ID=34136619

Family Applications (1)

Application Number Title Priority Date Filing Date
DE602004010976T Expired - Fee Related DE602004010976T2 (de) 2003-08-27 2004-08-24 Datenstruktur für bereichspezifizierte Algorithmen

Country Status (4)

Country Link
US (1) US20050050060A1 (de)
EP (1) EP1515501B1 (de)
AT (1) ATE383016T1 (de)
DE (1) DE602004010976T2 (de)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030154189A1 (en) * 1999-12-30 2003-08-14 Decode Genetics, Ehf. Indexing, rewriting and efficient querying of relations referencing spatial objects
US8693043B2 (en) * 2003-12-19 2014-04-08 Kofax, Inc. Automatic document separation
JP4017161B2 (ja) * 2004-01-22 2007-12-05 日本アイ・ビー・エム株式会社 区間特定システム、配電系統モニタリングシステム、その方法及びプログラム
US7761474B2 (en) * 2004-06-30 2010-07-20 Sap Ag Indexing stored data
US7512617B2 (en) * 2004-12-29 2009-03-31 Sap Aktiengesellschaft Interval tree for identifying intervals that intersect with a query interval
US9769354B2 (en) 2005-03-24 2017-09-19 Kofax, Inc. Systems and methods of processing scanned data
US9137417B2 (en) 2005-03-24 2015-09-15 Kofax, Inc. Systems and methods for processing video data
US7716250B1 (en) * 2005-05-27 2010-05-11 Microsoft Corporation Erasure coding and group computations using rooted binary and ternary trees
GB2440359A (en) * 2006-07-19 2008-01-30 Chronicle Solutions Rules for data traffic assembled in single data structure
WO2008085989A1 (en) 2007-01-10 2008-07-17 Richard Garfinkle A software method for data storage and retrieval
US7890494B2 (en) * 2007-10-31 2011-02-15 Yahoo! Inc. System and/or method for processing events
US20090150355A1 (en) * 2007-11-28 2009-06-11 Norton Garfinkle Software method for data storage and retrieval
US8688723B2 (en) * 2007-12-21 2014-04-01 Hewlett-Packard Development Company, L.P. Methods and apparatus using range queries for multi-dimensional data in a database
WO2013081650A1 (en) * 2011-11-28 2013-06-06 Hewlett-Packard Development Company, L. P. Clustering event data by multiple time dimensions
US8341183B2 (en) * 2008-10-10 2012-12-25 International Business Machines Corporation Representing the allocation of integers
US7872993B2 (en) * 2008-10-30 2011-01-18 Alcatel Lucent Method and system for classifying data packets
US8171539B2 (en) * 2009-01-07 2012-05-01 Symbol Technologies, Inc. Methods and apparatus for implementing a search tree
US9767354B2 (en) 2009-02-10 2017-09-19 Kofax, Inc. Global geographic information retrieval, validation, and normalization
US9576272B2 (en) 2009-02-10 2017-02-21 Kofax, Inc. Systems, methods and computer program products for determining document validity
US8774516B2 (en) 2009-02-10 2014-07-08 Kofax, Inc. Systems, methods and computer program products for determining document validity
US9349046B2 (en) 2009-02-10 2016-05-24 Kofax, Inc. Smart optical input/output (I/O) extension for context-dependent workflows
US8958605B2 (en) 2009-02-10 2015-02-17 Kofax, Inc. Systems, methods and computer program products for determining document validity
US8503428B2 (en) * 2010-03-18 2013-08-06 Juniper Networks, Inc. Customized classification of host bound traffic
US8521785B2 (en) * 2012-01-03 2013-08-27 Oracle International Corporation System and method for efficient representation of dynamic ranges of numeric values
US9058515B1 (en) 2012-01-12 2015-06-16 Kofax, Inc. Systems and methods for identification document processing and business workflow integration
US9483794B2 (en) 2012-01-12 2016-11-01 Kofax, Inc. Systems and methods for identification document processing and business workflow integration
US10146795B2 (en) 2012-01-12 2018-12-04 Kofax, Inc. Systems and methods for mobile image capture and processing
US9165188B2 (en) 2012-01-12 2015-10-20 Kofax, Inc. Systems and methods for mobile image capture and processing
US9058580B1 (en) 2012-01-12 2015-06-16 Kofax, Inc. Systems and methods for identification document processing and business workflow integration
CN102833271B (zh) * 2012-09-20 2014-11-26 桂林电子科技大学 虚拟专用网络中安全隐患的解决方法
US9208536B2 (en) 2013-09-27 2015-12-08 Kofax, Inc. Systems and methods for three dimensional geometric reconstruction of captured image data
JP2016517587A (ja) 2013-03-13 2016-06-16 コファックス, インコーポレイテッド モバイル装置を用いて取込まれたデジタル画像におけるオブジェクトの分類
US9355312B2 (en) 2013-03-13 2016-05-31 Kofax, Inc. Systems and methods for classifying objects in digital images captured using mobile devices
US10642918B2 (en) * 2013-03-15 2020-05-05 University Of Florida Research Foundation, Incorporated Efficient publish/subscribe systems
US20140316841A1 (en) 2013-04-23 2014-10-23 Kofax, Inc. Location-based workflows and services
DE202014011407U1 (de) 2013-05-03 2020-04-20 Kofax, Inc. Systeme zum Erkennen und Klassifizieren von Objekten in durch Mobilgeräte aufgenommenen Videos
JP2016538783A (ja) 2013-11-15 2016-12-08 コファックス, インコーポレイテッド モバイル映像データを用いて長尺文書の合成画像を生成するためのシステムおよび方法
US9760788B2 (en) 2014-10-30 2017-09-12 Kofax, Inc. Mobile document detection and orientation based on reference object characteristics
US10432511B2 (en) * 2015-03-12 2019-10-01 Nec Corporation Method for forwarding data in a network, forwarding element for forwarding data, and a network for forwarding data
US10242285B2 (en) 2015-07-20 2019-03-26 Kofax, Inc. Iterative recognition-guided thresholding and data extraction
CN105868226A (zh) * 2015-11-20 2016-08-17 乐视移动智能信息技术(北京)有限公司 应用软件智能归类方法、终端及服务器
US9779296B1 (en) 2016-04-01 2017-10-03 Kofax, Inc. Content-based detection and three dimensional geometric reconstruction of objects in image and video data
US10387495B2 (en) * 2016-06-10 2019-08-20 Palo Alto Research Center Incorporated System and method for efficient interval search using locality-preserving hashing
US11062176B2 (en) 2017-11-30 2021-07-13 Kofax, Inc. Object detection and image cropping using a multi-detector approach
CN110474929B (zh) * 2019-09-27 2021-06-22 新华三信息安全技术有限公司 一种冗余规则检测方法及装置
CN113839848A (zh) * 2020-06-08 2021-12-24 深圳市中兴微电子技术有限公司 Vpn规则的匹配方法、装置、设备及存储介质
CN112508440B (zh) * 2020-12-18 2024-06-07 深圳市赛为智能股份有限公司 数据质量评估方法、装置、计算机设备及存储介质

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5832492A (en) * 1995-09-05 1998-11-03 Compaq Computer Corporation Method of scheduling interrupts to the linked lists of transfer descriptors scheduled at intervals on a serial bus
US6154775A (en) * 1997-09-12 2000-11-28 Lucent Technologies Inc. Methods and apparatus for a computer network firewall with dynamic rule processing with the ability to dynamically alter the operations of rules
US6341130B1 (en) * 1998-02-09 2002-01-22 Lucent Technologies, Inc. Packet classification method and apparatus employing two fields
US6763467B1 (en) * 1999-02-03 2004-07-13 Cybersoft, Inc. Network traffic intercepting method and system
US6633860B1 (en) * 1999-04-22 2003-10-14 Ramot At Tel Aviv University Ltd. Method for fast multi-dimensional packet classification
US6697814B1 (en) * 1999-12-04 2004-02-24 Worldcom, Inc. System for processing records in a communications network
US6539394B1 (en) * 2000-01-04 2003-03-25 International Business Machines Corporation Method and system for performing interval-based testing of filter rules
US6700883B1 (en) * 2000-04-05 2004-03-02 International Business Machines Corporation Algorithm to bypass L4 processing in an internet protocol forwarding processor
US6697875B1 (en) * 2000-06-27 2004-02-24 Sun Microsystems, Inc. Methods for building and using a network device database
US6785688B2 (en) * 2000-11-21 2004-08-31 America Online, Inc. Internet streaming media workflow architecture
US7193997B2 (en) * 2001-03-19 2007-03-20 International Business Machines Corporation Packet classification
US6687690B2 (en) * 2001-06-14 2004-02-03 International Business Machines Corporation Employing a combined function for exception exploration in multidimensional data
US8200818B2 (en) * 2001-07-06 2012-06-12 Check Point Software Technologies, Inc. System providing internet access management with router-based policy enforcement
US7266839B2 (en) * 2001-07-12 2007-09-04 J P Morgan Chase Bank System and method for providing discriminated content to network users
FI20012338A0 (fi) * 2001-11-29 2001-11-29 Stonesoft Corp Palomuuri tunneloitujen datapakettien suodattamiseksi
US20040133590A1 (en) * 2002-08-08 2004-07-08 Henderson Alex E. Tree data structure with range-specifying keys and associated methods and apparatuses
WO2004019574A2 (en) * 2002-08-26 2004-03-04 Kevin Orton System for prevention of undesirable internet content
US8516536B2 (en) * 2003-05-28 2013-08-20 Alcatel Lucent Method and system for internet censorship
US7545809B2 (en) * 2003-05-28 2009-06-09 International Business Machines Corporation Packet classification

Also Published As

Publication number Publication date
ATE383016T1 (de) 2008-01-15
EP1515501A1 (de) 2005-03-16
DE602004010976D1 (de) 2008-02-14
US20050050060A1 (en) 2005-03-03
EP1515501B1 (de) 2008-01-02

Similar Documents

Publication Publication Date Title
DE602004010976T2 (de) Datenstruktur für bereichspezifizierte Algorithmen
DE60026229T2 (de) Verfahren und Vorrichtung für Klassifizierung von Datenpaketen
DE10393053B4 (de) Bereichsbasierte Mehrfeldkorrelation - Paketklassifizierung mit logorithmischem Zeitverhalten
DE60313371T2 (de) Verwendung von baumartigen &#34;Bitmap&#34; Datenstrukturen
DE602004011721T2 (de) Zugriffssteurungsmechanismus für Router
DE69207822T2 (de) Weglenkung in Kommunikationsnetzwerken
DE60116401T2 (de) Netzwerkvermittlung mit der Möglichkeit Anschlüsse zu blockieren
DE69636761T2 (de) Speichern und wiederauffinden von geordneten schlüsselmengen in einem kompakten 0-kompletten baum
DE60214670T2 (de) Verfahren und vorrichtung zur leitweglenkungstabellenverwaltung
DE602004005785T2 (de) Dynamische Leitweglenkung in einem inhaltbasierten verteilten Netzwerk
DE60125954T2 (de) Adressierung und routen von datenpaketen in einem computer-netzwerk mit hilfe von inhaltsbeschreibenden labeln
DE60120790T2 (de) Methode und gerät zum durchsuchen von tabellen in hoher geschwindigkeit
DE60307241T2 (de) Vlan tabellenverwaltungssystem in hardwarebasierten paketvermittlungsstellen für speichereffizientes auslesen und einschreiben
US7408932B2 (en) Method and apparatus for two-stage packet classification using most specific filter matching and transport level sharing
DE60131596T2 (de) Stapelbare Sucheinrichtung
DE102007011143A1 (de) Ein Verfahren zum Optimieren des Leitens von Anforderungen in einem Netz
DE102013208213B4 (de) System zur Verringerung von Hash-Kollisionen
DE3855212T2 (de) Verfahren zur Berechnung eines transitiven Abschlusses
DE10058443A1 (de) Verfahren zum Klassifizieren von Datenpaketen
DE10085387T5 (de) Verfahren und Vorrichtung zur Adresssuche längster Übereinstimmung
DE60032674T2 (de) Verfahren zum Suchen von Adressen
EP2269347A2 (de) Verfahren und filteranordnung zum filtern von über einen seriellen datenbus eines kommunikationsnetzwerks in einem teilnehmer des netzwerks eingehenden nachrichten
Daly et al. Bytecuts: Fast packet classification by interior bit extraction
DE112012006928T5 (de) Kommunikation von Tupeln in einer Nachricht
DE60309611T2 (de) Verfahren und Vorrichtung zur Verarbeitung von Datenpaketen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee