DE102014001498A1 - Heuristiken inkrementeller Aktualisierung - Google Patents
Heuristiken inkrementeller Aktualisierung Download PDFInfo
- Publication number
- DE102014001498A1 DE102014001498A1 DE201410001498 DE102014001498A DE102014001498A1 DE 102014001498 A1 DE102014001498 A1 DE 102014001498A1 DE 201410001498 DE201410001498 DE 201410001498 DE 102014001498 A DE102014001498 A DE 102014001498A DE 102014001498 A1 DE102014001498 A1 DE 102014001498A1
- Authority
- DE
- Germany
- Prior art keywords
- node
- rule
- rcds
- rules
- bucket
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2441—Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
Abstract
Description
- HINTERGRUND DER ERFINDUNG
- Das OSI(Open Systems Interconnection)-Referenzmodell definiert sieben Netzwerkprotokollschichten (L1–L7), die zur Kommunikation über ein Übertragungsmedium verwendet werden. Die oberen Schichten (L4–L7) repräsentieren Ende-zu-Ende-Kommunikationen und die unteren Schichten (L1–L3) repräsentieren lokale Kommunikationen.
- Systeme mit Kenntnis bzw. Beachtung von Netzwerkanwendungen müssen eine Vielzahl von L3- bis L7-Netzwerkprotokollschichten verarbeiten, filtern und schalten bzw. vermitteln, zum Beispiel L7-Netzwerkprotokollschichten, wie HTTP (HyperText Transfer Protocol) und SMTP (Simple Mail Transfer Protocol), und L4-Netzwerkprotokollschichten, wie TCP (Transmission Control Protocol). Zusätzlich zu einer Verarbeitung der Netzwerkprotokollschichten müssen die Systeme mit Kenntnis von Netzwerkanwendungen gleichzeitig diese Protokolle mit einer Zugriffs- und Inhalt-basierten Sicherheit über L4–L7-Netzwerkprotokollschichten sichern, einschließlich Firewall, VPN (Virtual Private Network), SSL (Secure Sockets Layer), IDS (Intrusion Detection System), IPSec (Internet Protocol Security), Anti-Virus (AV) und Anti-Spam-Funktionalität bei Leitungsgeschwindigkeit.
- Die Verbesserung der Effizienz und Sicherheit eines Netzwerkbetriebs in der heutigen Internet-Welt bleibt ein ultimatives Ziel für Internet-Nutzer. Zugangssteuerung, Verkehrstechnik bzw. -steuerung, Erfassen eines Eindringen, und viele andere Netzwerkdienste erfordern die Diskriminierung von Paketen basierend auf mehreren Feldern von Paket-Headern, was als Paketklassifizierung bezeichnet wird.
- Internet-Router klassifizieren Pakete, um eine Anzahl von erweiterten Internetdiensten zu implementieren, wie Routing, Ratenbegrenzung, Zugangssteuerung in Firewalls, virtuelle Bandbreitenzuteilung, Richtlinien-basiertes Routing, Dienst-Differenzierung, Lastausgleich, Verkehrsformung und Abrechnung des Verkehrs. Diese Dienste erfordern, dass der Router ankommende Pakete in verschiedene Flüsse klassifiziert und dann geeignete Maßnahmen abhängig von dieser Klassifizierung durchführt.
- Ein Paketklassifizierer spezifiziert unter Verwendung eines Satzes von Filtern und Regeln die Ströme bzw. Flüsse oder Klassen. Zum Beispiel kann jede Regel in einer Firewall einen Satz von Quelle- und Ziel-Adressen spezifizieren und eine entsprechende Verweigern- oder Zulassen-Aktion damit assoziieren. Alternativ können die Regeln auf mehreren Feldern eines Paket-Headers basieren, einschließlich der Schichten 2, 3, 4 und 5 des OSI-Modells, die Adressierungs- und Protokollinformation enthalten.
- Bei einigen Typen von proprietärer Hardware bezieht sich eine Zugriffssteuerungsliste (ACL – Access Control List) auf Regeln, die auf Anschlussnummern angewendet werden, oder Netzwerk-Daemon- bzw. Domäne-Namen, die auf einer Host- oder Schicht-3-Vorrichtung verfügbar sind, jeweils mit einer Liste von Hosts und/oder Netzwerken, denen erlaubt ist, einen Dienst zu benutzen. Sowohl einzelne Server sowie Router können Netzwerk-ACLs haben. ACLs können konfiguriert sein, sowohl eingehenden als auch ausgehenden Verkehr zu steuern.
- ZUSAMMENFASSUNG DER ERFINDUNG
- Gemäß einem Ausführungsbeispiel kann eine Vorrichtung einen Speicher aufweisen, der konfiguriert ist zum Speichern einer Regel-kompilierten Datenstruktur (RCDS – Rule Compiled Data Structure). Die Regel-kompilierte Datenstruktur (RCDS) kann einen Satz von Regeln zur Paketklassifizierung repräsentieren. Die Vorrichtung kann weiter einen Prozessor aufweisen, der mit dem Speicher verbunden ist. Der Prozessor kann konfiguriert sein, eine inkrementelle Aktualisierung für die RCDS zu empfangen, eine aktive Suche der Regelkompilierten Datenstruktur (RCDS) durchzuführen, um empfangene Pakete zu klassifizieren, und die Regel-kompilierte Datenstruktur (RCDS) atomar zu aktualisieren aus der Perspektive der durchgeführten aktiven Suche. Die Vorrichtung kann weiter eine Schnittstelle aufweisen. Die Schnittstelle kann konfiguriert sein, eine Änderungsliste zu empfangen; die Änderungsliste kann die inkrementelle Aktualisierung umfassen. Der Prozessor kann ein Suchprozessor sein. Die Regelkompilierte Datenstruktur (RCDS) kann einen kompilierten Satz von Regeln umfassen und eine aktualisierte Regel-kompilierte Datenstruktur (RCDS) kann den kompilierten Satz von Regeln und eine oder mehrere angewandte inkrementelle Aktualisierung(en) umfassen. Die aktualisierte Regel-kompilierte Datenstruktur (RCDS) erreicht dieselbe Leistung wie eine vorkompilierte Version der aktualisierten RCDS.
- Gemäß einem Ausführungsbeispiel kann eine Vorrichtung einen Speicher und einen Prozessor aufweisen, der mit dem Speicher gekoppelt ist. Der Prozessor kann konfiguriert sein, ein „inkrementelle Aktualisierung”-Modul zu umfassen. Das „inkrementelle Aktualisierung”-Modul kann konfiguriert sein, eine Regel-Hinzufügen-, -Löschen- oder -Modifizieren-Operation zu empfangen und eine Änderungsliste in dem Speicher zu erzeugen. Die Änderungsliste kann erstellt werden, um eine Regel-kompilierte Datenstruktur (RCDS) atomar zu aktualisieren aus der Perspektive eines aktiven Suchprozesses unter Verwendung der RCDS. Die Vorrichtung kann weiter eine Schnittstelle aufweisen und das „inkrementelle Aktualisierung”-Modul kann weiter konfiguriert sein, die Änderungsliste über die Schnittstelle zu kommunizieren. Die Vorrichtung kann weiter ein Kompilierer-Modul aufweisen, das mit dem Speicher gekoppelt ist. Das Kompilierer-Modul kann konfiguriert sein, einen Satz von Regeln zu empfangen und den Satz von Regeln in ein binäres Format eines Entscheidungsbaums zu kompilieren. Das Kompilierer-Modul kann weiter konfiguriert sein, das binäre Format eines Entscheidungsbaums in dem Speicher zu speichern und das binäre Format eines Entscheidungsbaums über die Schnittstelle zu kommunizieren.
- Gemäß einem Ausführungsbeispiel hat ein nicht-transientes computerlesbares Medium darauf eine Sequenz von Anweisungen codiert, die bei Ausführung durch einen Prozessor den Prozessor veranlassen zum Empfangen einer inkrementellen Aktualisierung für eine Regel-kompilierte Datenstruktur (RCDS). Die Regel-kompilierte Datenstruktur (RCDS) kann einen Satz von Regeln zur Paketklassifizierung repräsentieren. Die Regel-kompilierte Datenstruktur (RCDS) kann zur Paketklassifizierung durch einen aktiven Suchprozess verwendet werden. Der Prozessor kann die Regel-kompilierte Datenstruktur (RCDS) basierend auf der empfangenen inkrementellen Aktualisierung atomar aktualisieren. Die Regel-kompilierte Datenstruktur (RCDS) kann atomar aktualisiert werden aus der Perspektive des aktiven Suchprozesses unter Verwendung der Regel-kompilierten Datenstruktur (RCDS).
- Gemäß einem Ausführungsbeispiel kann ein Verfahren eine inkrementelle Aktualisierung für eine Regel-kompilierte Datenstruktur (RCDS) empfangen. Die Regel-kompilierte Datenstruktur (RCDS) kann einen Satz von Regeln zur Paketklassifizierung repräsentieren. Die Regel-kompilierte Datenstruktur (RCDS) kann zur Paketklassifizierung durch einen aktiven Suchprozess verwendet werden und atomar aktualisiert werden basierend auf der empfangenen inkrementellen Aktualisierung aus der Perspektive des aktiven Suchprozesses unter Verwendung der RCDS.
- Das Verfahren kann einen Zustand der Regel-kompilierten Datenstruktur (RCDS) auf einen vorher-Zustand und einen nachher-Zustand beschränken. Der vorher-Zustand kann ein Zustand der Regel-kompilierten Datenstruktur (RCDS) vor einem Empfangen der inkrementellen Aktualisierung für die RCDS sein, der nachher-Zustand kann ein Zustand der Regel-kompilierten Datenstruktur (RCDS) sein, nachdem eine Serie von einer oder mehreren Modifikation(en) der Regel-kompilierten Datenstruktur (RCDS) abgeschlossen ist. Die Serie von einer oder mehreren Modifikation(en) kann abgeschlossen sein basierend auf der empfangenen inkrementellen Aktualisierung. Die Serie von einer oder mehreren Modifikation(en) kann für den aktiven Suchprozess sichtbar sein basierend auf einem Durchführen einer Aktualisierung der Regel-kompilierten Datenstruktur (RCDS), die durchsucht wird.
- Das Verfahren kann weiter umfassen ein atomares Hinzufügen einer neuen Regel zu der Regel-kompilierten Datenstruktur (RCDS) basierend darauf, dass die inkrementelle Aktualisierung eine Regel-Hinzufügen-Operation ist, ein atomares Löschen einer Regel aus der Regel-kompilierten Datenstruktur (RCDS) basierend darauf, dass die inkrementelle Aktualisierung eine Regel-Löschen-Operation ist, und ein atomares Modifizieren einer Regel in der Regelkompilierten Datenstruktur (RCDS) basierend darauf, dass die inkrementelle Aktualisierung ein Regel-Modifizieren-Operation ist. Ein Modifizieren der Regel umfasst zumindest eines aus: Modifizieren einer Priorität der Regel oder Modifizieren zumindest eines Felds der Regel.
- Das Verfahren kann weiter umfassen ein Identifizieren eines Priorität-Übereinstimmung-Konflikts basierend darauf, dass eine Änderung der Priorität der Regel inkonsistent ist mit einer aktuellen Prioritätsreihenfolge der Regel und einer oder mehrerer anderer Regel(n). Das Verfahren kann die Priorität der Regel basierend darauf atomar modifizieren, dass der Priorität-Übereinstimmung-Konflikt nicht identifiziert wird, und die Priorität der Regel und die Priorität einer anderen Regel basierend darauf atomar modifizieren, dass der Konflikt identifiziert wird.
- Das Verfahren kann weiter ein Bestimmen, ob eine oder mehrere Regel(n) hinzugefügt oder gelöscht werden müssen, und ein Hinzufügen oder Löschen der einen oder mehreren Regel(n) umfassen. Ein Hinzufügen oder Löschen der einen oder mehreren Regel(n) ist atomar.
- Das Verfahren kann weiter umfassen ein atomares für-ungültig-Erklären einer spezifizierten Regel in der Regel-kompilierten Datenstruktur (RCDS) basierend darauf, dass die inkrementelle Aktualisierung eine Löschen-Operation ist, die die Regel spezifiziert. Der aktive Suchprozess überspringt die für ungültig erklärte, spezifizierte Regel.
- Das Verfahren kann weiter ein Repräsentieren der Regel-kompilierten Datenstruktur (RCDS) als einen Baum des Satzes von Regeln umfassen. Der Baum kann eine binäre Datenstruktur sein, mit einem oder mehreren Knoten und einem Blatt oder mehreren Blättern. Das Verfahren kann ein Repräsentieren zumindest eines des einen oder der mehreren Knoten als einen übergeordneten bzw. Elternknoten und Verknüpfen des Elternknotens mit einem oder mehreren Kind(ern) umfassen. Das eine Kind oder die mehreren Kinder kann/können ein Knoten oder ein Blatt sein. Die Verknüpfung des Elternknotens mit dem einen oder mehreren Kind(ern) kann ein Zeigen bzw. Verweisen des Elternknotens zu einer Geschwisterliste umfassen. Die Geschwisterliste kann das eine oder mehrere Kind(er) umfassen. Das Verfahren kann Knoten des Baums mit einem oder mehreren Knoten und einem Blatt oder mehreren Blättern des Baums verknüpfen. Das Verfahren kann Blätter des Baums mit einem oder mehreren Behältnis(sen) bzw. Eimer(n) (buckets) verknüpfen. Jeder Eimer kann einen Teilsatz des Satzes von Regeln repräsentieren. Jeder Eimer kann einen oder mehrere Eimereinträge umfassen, der/die dem Teilsatz des Satzes von Regeln entspricht/entsprechen. Die Eimereinträge können gemäß einer ansteigenden oder abnehmenden Regel-Priorität geordnet sein. Das Verfahren kann weiter ein Speichern des Satzes von Regeln in einer Regeltabelle aufweisen. Die Regeln in der Regeltabelle können geordnet oder ungeordnet sein.
- Die Regel-kompilierte Datenstruktur (RCDS) kann ein Leistungsbaum sein. Das Verfahren kann weiter ein Führen eines housekeeping bzw. Haushaltsführungsbaums umfassen. Der Haushaltsführungsbaum kann eine erweiterte Darstellung des Leistungsbaums sein. Der Haushaltsführungsbaum kann Feldbereiche der Regeln und Listen der Regeln an jedem Knoten in dem Baum umfassen. Ein atomares Aktualisieren des Leistungsbaums kann ein Verwenden des Haushaltsführungsbaums derart umfassen, dass eine Serie von einer oder mehreren Modifikation(en) des Leistungsbaums für den aktiven Suchprozess sichtbar gemacht wird, basierend auf einer Aktualisierung des durchsuchten Leistungsbaums.
- Das Verfahren kann weiter ein Erstellen einer Änderungsliste umfassen, die die eine oder mehrere Modifikation(en) des Leistungsbaums spezifiziert.
- Die inkrementelle Aktualisierung kann eine Hinzufügen-, Löschen- oder Modifizieren-Operation sein und das Verfahren kann weiter umfassen ein Aufnehmen einer Abdeckungsliste von Regeln für jede Regel in dem Haushaltsführungsbaum. Eine Änderungsliste kann erstellt werden, die eine oder mehrere Regel(n) zum Hinzufügen, Löschen oder Modifizieren basierend auf der Abdeckungsliste spezifiziert. Das Verfahren kann ein Aktualisieren der Abdeckungsliste basierend auf der bestimmten Änderungsliste umfassen.
- Das Verfahren kann weiter ein Führen, in jedem Blatt, eines Zeigers zu einem Eimer aus dem einen oder mehreren Eimer(n) und eines Eimer-Regel-Zählers umfassen. Der Eimer-Regel-Zähler kann eine Anzahl von Regeln verfolgen, die in dem Eimer enthalten sind. Der Eimer-Regel-Zähler kann basierend darauf inkrementiert werden, dass eine Regel zu dem Eimer hinzugefügt wird. Der Eimer-Regel-Zähler kann basierend darauf dekrementiert werden, dass eine Regel aus dem Eimer gelöscht wird.
- Das Verfahren kann ein Verfolgen einer Gesamtanzahl von inkrementellen Aktualisierungen an jedem Knoten umfassen. Das Verfahren kann an einem gegebenen Knoten ein Verhältnis der Gesamtanzahl von verfolgten inkrementellen Aktualisierungen für den gegebenen Knoten zu einer Anzahl von Regeln bestimmen, die durch den gegebenen Knoten repräsentiert werden. Das Verfahren kann den Leistungsbaum durch Neukompilieren eines Teilbaums adaptiv anpassen basierend darauf, dass das Verhältnis größer ist als ein gegebener Schwellenwert.
- Das Verfahren kann ein atomares Hinzufügen einer neuen Regel zu dem Baum umfassen. Das Verfahren kann ein Blatt des Baums in einen oder mehrere neue Knoten teilen und die Regel zu einem Eimer hinzufügen, der mit einem Blatt oder mehreren Blättern des einen oder mehrerer neuer Knoten assoziiert ist.
- Jeder Eimer kann eine Datenstruktur sein und der eine oder mehrere Eimereinträge kann/können eine Regel, ein Index zu einer Regel, ein Zeiger zu einer Regel, ein Zeiger zu einem Satz von Regeln oder ein Zeiger zu einem anderen Eimer sein.
- Das Verfahren kann weiter ein atomares Hinzufügen einer neuen Regel zu dem Baum und ein Identifizieren eines Zieleimers aus dem einen oder mehreren Eimer(n) umfassen, um die neue Regel aufzunehmen. Das Verfahren kann die neue Regel an das Ende des Zieleimers anfügen basierend auf einem Bestimmen einer Platz-Übereinstimmung und einer Priorität-Übereinstimmung der neuen Regel in dem Zieleimer. Ein Anfügen der neuen Regel an das Ende des Zieleimers nimmt eine Aktualisierung in Anspruch.
- Eine Platz-Übereinstimmung kann darauf basieren, dass eine aktuelle Anzahl von Regeln in dem Zieleimer geringer ist als eine maximale Anzahl von Regeln für den Zieleimer.
- Eine Priorität-Übereinstimmung kann darauf basieren, dass die Priorität, die mit der neuen Regel assoziiert ist, konsistent ist mit einer Prioritätsreihenfolge von aktuellen Regeln in dem Zieleimer.
- Das Verfahren kann weiter umfassen ein atomares Hinzufügen einer neuen Regel zu dem Baum, Identifizieren eines Zieleimers aus dem einen oder mehreren Eimer(n), um die neue Regel aufzunehmen, und Erzeugen eines neuen Eimers basierend auf dem Bestimmen, dass die Priorität, die mit der neuen Regel assoziiert ist, zu einer Prioritätsreihenfolge von Regeln in dem Zieleimer inkonsistent ist. Der aktive Suchprozess wird durch den erzeugten neuen Eimer nicht beeinflusst. Das Verfahren kann weiter umfassen ein Aufnehmen des Satzes von Regeln des Zieleimer in den neuen Eimer, Aufnehmen der neuen Regel in den neuen Eimer, und Anpassen einer Reihenfolge des Satzes von Regeln und der neuen Regel basierend auf einer zunehmenden oder abnehmenden Prioritätsreihenfolge. Das Verfahren kann eine Verknüpfung eines Blatts in dem Baum aktualisieren. Das Blatt kann eine Verknüpfung zu einem Zieleimer aus dem einen oder mehreren Eimer(n) haben. Die Verknüpfungsaktualisierung kann ein Zeigen des Blatts zu dem neuen Eimer umfassen. Die Verknüpfungsaktualisierung nimmt eine Aktualisierung in Anspruch.
- Das Verfahren kann weiter umfassen ein atomares Hinzufügen einer neuen Regel zu dem Baum durch Identifizieren eines Zieleimers aus dem einen oder mehreren Eimer(n), um die neue Regel aufzunehmen, Erzeugen eines neuen Eimers, wobei der aktive Suchprozess durch den erzeugten neuen Eimer nicht beeinflusst wird, Aufnehmen der neuen Regel in dem neuen Eimer, und Aktualisieren eines Eimereintrags des Zieleimers, um zu dem neuen Eimer zu zeigen. Die Aktualisierung des Eimereintrags nimmt eine Aktualisierung in Anspruch.
- Das Verfahren kann weiter umfassen ein atomares Hinzufügen einer neuen Regel zu dem Baum durch Identifizieren eines Zieleimers aus dem einen oder mehreren Eimer(n), um die neue Regel aufzunehmen, und Erzeugen eines Teilbaums basierend auf einem Bestimmen eines Platzmangels in dem Zieleimer für die neue Regel. Der Platzmangel in dem Zieleimer kann basierend auf einer maximalen Anzahl von Regeln bestimmt werden, die für den Zieleimer gesetzt ist. Der Teilbaum kann ein oder mehrere neue Blätter oder neue Knoten umfassen. Der aktive Suchprozess wird durch den erzeugten Teilbaum nicht beeinflusst. Das Verfahren kann weiter umfassen ein Hinzufügen der neuen Regel zu einem oder mehreren Eimer(n) des Teilbaums, Hinzufügen einer oder mehrerer Regel(n) des Zieleimers zu einem oder mehreren Eimer(n) des Teilbaums, und Verknüpfen des Teilbaums mit dem Baum durch Aktualisieren einer Verknüpfung eines Blatts in dem Baum. Das Blatt kann eine Verknüpfung zu dem Zieleimer aus dem einen oder mehreren Eimer(n) haben. Die Verknüpfungsaktualisierung kann ein Zeigen des Blatts zu dem Teilbaum, ein Umwandeln des Blatts zu einem Knoten umfassen. Die Verknüpfungsaktualisierung nimmt eine Aktualisierung in Anspruch.
- Das Verfahren kann weiter ein atomares Hinzufügen eines neuen Blatts oder eines neuen Knotens zu einem Elternknoten in dem Baum umfassen, wobei der Elternknoten in dem Baum mit einer aktuellen Geschwisterliste verknüpft ist. Die aktuelle Geschwisterliste kann ein Blatt oder mehrere Blätter oder einen oder mehrere Knoten umfassen. Das Verfahren kann weiter ein Erzeugen einer neuen Geschwisterliste umfassen. Der aktive Suchprozess wird durch die erzeugte neue Geschwisterliste nicht beeinflusst. Das Verfahren kann weiter umfassen ein Hinzufügen des neuen Blatts oder des neuen Knotens zu der neuen Geschwisterliste. Die neue Geschwisterliste kann die aktuelle Geschwisterliste umfassen. Das Verfahren kann weiter umfassen ein Aufnehmen der neuen Geschwisterliste in den Baum durch Aktualisieren einer Verknüpfung der Eltern, damit der Elternknoten zu der neuen Geschwisterliste zeigt. Die Verknüpfungsaktualisierung nimmt eine Aktualisierung in Anspruch.
- Das Verfahren kann weiter ein Reservieren eines Defragmentierungsteils des Speicherplatzes umfassen. Der Defragmentierungsteil des Speicherplatzes kann ein bestimmter bzw. zugewiesener Defragmentierungsbereich sein. Der Defragmentierungsbereich kann ein zusammenhängender Teil des Speicherplatzes sein, der in einem bestimmten Bereich des Speicherplatzes reserviert ist. Das Verfahren kann weiter ein Identifizieren eines toten Bereichs der RCDS umfassen. Der tote Bereich kann ein Teil des Speicherplatzes sein, der von zumindest einem nicht-referenzierten Blatt, Knoten, Eimer oder Geschwisterliste belegt ist. Das Verfahren kann weiter ein Defragmentieren der Regel-kompilierten Datenstruktur (RCDS) durch Zurückgewinnen des toten Bereichs umfassen. Der aktive Suchprozess wird durch den zurückgewonnenen toten Bereich nicht beeinflusst, die Regel-kompilierte Datenstruktur (RCDS) wird atomar defragmentiert. Das Verfahren kann weiter ein Zurückgewinnen des toten Bereichs umfassen, einschließlich eines Verlagerns eines verwendeten Teils des Speichers. Der verwendete Teil kann einen oder mehrere Knoten oder Blätter umfassen, der/die sich angrenzend zu dem toten Bereich befindet/befinden, der für den bestimmten Defragmentierungsbereich identifiziert ist. Das Verfahren kann weiter ein Verschieben einer neuen Geschwisterliste zu einem zurückgewonnenen Speicherplatz umfassen. Der zurückgewonnene Speicherplatz kann den identifizierten toten Bereich und den verlagerten verwendeten Teil des Speichers umfassen. Das Verfahren kann weiter umfassen ein Verschieben des verwendeten Teils des Speichers, der in den Defragmentierungsbereich versetzt wurde, aus dem Defragmentierungsbereich heraus zu einem Endteil der Speicherplatzes, der für die RCDS reserviert ist.
- Das Verfahren kann weiter ein atomares Löschen einer spezifizierten Regel aus dem Baum umfassen, wobei ein Eimereintrag eines Eimers die spezifizierte Regel umfasst. Das Verfahren kann ein Verknüpfen des Eimers mit einem Blatt durch einen Blatt-Eimer-Zeiger und ein für-ungültig-Erklären der spezifizierten Regel in dem Eimereintrag umfassen. Das Verfahren kann weiter ein Aktualisieren der Verknüpfung durch Setzen des Blatt-Eimer-Zeigers auf null umfassen, wenn alle Eimereinträge in dem Eimer für ungültig erklärt sind. Ein für-ungültig-Erklären der spezifizierten Regel und Aktualisieren des Blatt-Eimer-Zeigers auf null nimmt eine Aktualisierung in Anspruch. Der aktive Suchprozess überspringt einen Eimer, wenn der Blatt-Eimer-Zeiger null ist.
- Das Verfahren kann weiter ein atomares Löschen einer spezifizierten Regel aus dem Baum umfassen, wobei ein Eimereintrag eines Eimers einen Regel-Zeiger umfasst, der zu der spezifizierten Regel zeigt. Das Verfahren kann ein Verknüpfen des Eimers mit einem Blatt durch einen Blatt-Eimer-Zeiger umfassen. Das Verfahren kann weiter ein Setzen des Regel-Zeigers auf null und Aktualisieren der Verknüpfung durch Setzen des Blatt-Eimer-Zeigers auf null umfassen, wenn alle Regel-Zeiger in dem Eimer null sind. Ein Setzen des Regel-Zeigers auf null und Setzen des Blatt-Eimer-Zeigers auf null nimmt eine Aktualisierung in Anspruch. Der aktive Suchprozess überspringt null-Blatt-Eimer-Zeiger und überspringt null-Regel-Zeiger.
- Das Verfahren kann weiter ein atomares Löschen einer spezifizierten Regel aus dem Baum umfassen, wobei ein Eimereintrag eines Eimers einen Regel-Block-Zeiger umfasst, der zu einem Satz von einer oder mehreren Regel(n) zeigt, einschließlich der spezifizierten Regel. Das Verfahren kann umfassen ein Verknüpfen des Eimers mit einem Blatt durch einen Blatt-Eimer-Zeiger, für-ungültig-Erklären der spezifizierten Regel und Setzen des Regel-Block-Zeigers auf null, wenn alle Regeln in dem Satz von einer oder mehreren Regel(n) für ungültig erklärt sind. Das Verfahren kann weiter umfassen ein Aktualisieren der Verknüpfung durch Setzen des Blatt-Eimer-Zeigers auf null, wenn alle Eimereinträge in dem Eimer für ungültig erklärt sind. Ein für-ungültig-Erklären der spezifizierten Regel, Setzen des Regel-Block-Zeigers auf null und Setzen des Blatt-Eimer-Zeigers auf null nimmt eine Aktualisierung in Anspruch. Der aktive Suchprozess überspringt null-Blatt-Eimer-Zeiger, null-Regel-Block-Zeiger und für ungültig erklärte Regeln.
- Das Verfahren kann weiter ein atomares Hinzufügen einer oder mehrerer Regel(n) basierend auf einem Löschen einer spezifizierten Regel aus dem Baum umfassen. Das Verfahren kann ein Identifizieren eines Zieleimers aus dem einen oder mehreren Eimer(n) umfassen, um die neue Regel aufzunehmen. Das Verfahren kann weiter umfassen ein Erzeugen eines Teilbaums basierend auf einem Bestimmen eines Platzmangels in dem Zieleimer für die neue Regel. Ein Platzmangel in dem Zieleimer kann basierend auf einer maximalen Anzahl von Regeln bestimmt werden, die für den Zieleimer gesetzt ist. Der Teilbaum kann ein(en) oder mehrere neue Blätter oder neue Knoten umfassen. Der aktive Suchprozess wird durch den erzeugten Teilbaum nicht beeinflusst. Das Verfahren kann weiter umfassen ein Hinzufügen der neuen Regel zu einem oder mehreren Eimer(n) des Teilbaums, Hinzufügen einer oder mehrerer Regel(n) des Zieleimers zu einem oder mehreren Eimer(n) des Teilbaums, und Verknüpfen des Teilbaum mit dem Baum durch Aktualisieren einer Verknüpfung eines Blatts in dem Baum. Das Blatt kann eine Verknüpfung zu dem Zieleimer aus dem einen oder mehreren Eimer(n) haben. Die Verknüpfungsaktualisierung umfasst ein Zeigen bzw. Verweisen des Blatts zu dem Teilbaum, Umwandeln des Blatt zu einem Knoten. Die Verknüpfungsaktualisierung nimmt eine Aktualisierung in Anspruch.
- Das Verfahren kann weiter ein atomares Hinzufügen einer oder mehrerer Regel(n) basierend auf einem Löschen einer spezifizierten Regel aus dem Baum umfassen. Das Verfahren kann umfassen ein Identifizieren eines Zieleimers aus dem einen oder mehreren Eimer(n), um die neue Regel aufzunehmen, und Anfügen der neuen Regel an das Ende des Zieleimers basierend auf einem Bestimmen einer Platz-Übereinstimmung und einer Priorität-Übereinstimmung der neuen Regel in dem Zieleimer. Ein Anfügen der neuen Regel an das Ende des Zieleimers nimmt eine Aktualisierung in Anspruch.
- Gemäß einem Ausführungsbeispiel ist die inkrementelle Aktualisierung eine Regel-Hinzufügen-Operation, eine Regel-Löschen-Operation oder eine Regel-Modifizieren-Operation. Ein Aktualisieren der Regel-kompilierten Datenstruktur (RCDS) basierend auf der empfangenen inkrementellen Aktualisierung kann weiter umfassen ein atomares Hinzufügen, Löschen, Modifizieren, oder eine Kombination daraus, einer oder mehrerer Regel(n) zu der/aus der RCDS.
- Gemäß einem anderen Ausführungsbeispiel kann ein Verfahren aufweisen ein Empfangen einer oder mehrerer inkrementeller Aktualisierung(en) für eine Regel-kompilierte Datenstruktur (RCDS), die eine Vielzahl von Regeln repräsentiert. Die Vielzahl von Regeln kann zumindest ein Feld haben. Die RCDS kann die Vielzahl von Regeln als einen Entscheidungsbaum für eine Paketklassifizierung repräsentieren. Das Verfahren kann eine oder mehrere Aktualisierung(en) für die RCDS basierend auf der einen oder mehreren empfangenen inkrementellen Aktualisierung(en) bestimmen. Das Verfahren kann zumindest eine Heuristik zur Beibehaltung einer Qualität der RCDS einsetzen. Bei einer gegebenen der einen oder mehreren empfangenen inkrementellen Aktualisierung(en) kann das Verfahren einen Abschnitt der RCDS identifizieren und eine Neukompilierung des identifizierten Abschnitts basierend auf der einen oder den mehreren bestimmten Aktualisierung(en) auslösen, die Form oder Tiefe der RCDS auf eine Weise verändernd, die durch die zumindest eine eingesetzte Heuristik erfasst wird.
- Ein Beibehalten einer Qualität kann umfassen ein Ermöglichen einer ausgewogenen Form der RCDS, Erhöhen einer Anzahl von Entscheidungsbaumpfaden in der RCDS oder Steuern einer Anzahl von Entscheidungsbaumebenen in der RCDS durch Neukompilieren des identifizierten Abschnitts.
- Die RCDS kann eine Vielzahl von Knoten umfassen, wobei jeder Knoten einen Teilsatz der Vielzahl von Regeln repräsentieren kann. Die durch die zumindest eine eingesetzte Heuristik erfasste Weise kann ein Identifizieren eines Knotens der Vielzahl von Knoten umfassen, der eine Anzahl von Kinder unter einem gegebenen Kindschwellenwert hat, als ein Ergebnis einer Aktualisierung des identifizierten Knotens für die gegebene eine der einen oder mehreren empfangenen inkrementellen Aktualisierung(en), wobei der identifizierte Abschnitt der identifizierte Knoten ist. Das Verfahren kann den identifizierten Knoten neu kompilieren, um die Anzahl von Kinder des identifizierten Knotens zu erhöhen, wodurch eine höhere Anzahl von Entscheidungsbaumpfaden in der RCDS vorgesehen wird.
- Die RCDS kann eine Vielzahl von Knoten umfassen, wobei jeder Knoten einen Teilsatz der Vielzahl von Regeln repräsentieren kann. Die durch die zumindest eine eingesetzte Heuristik erfasste Weise kann an jedem Knoten ein Verfolgen einer Gesamtanzahl von Knotenaktualisierungen seit einer letzten Neukompilierung des Knotens umfassen. Das Verfahren kann ein Verhältnis der Gesamtanzahl von inkrementellen Aktualisierungen, die für den Knoten verfolgt werden, zu einer Anzahl von Regeln berechnen, die durch den Knoten repräsentiert werden bei einer letzten Neukompilierung des Knotens. Das Verfahren kann den Knoten neu kompilieren, wenn das Verhältnis größer ist als ein gegebener Aktualisierungsschwellenwert als Ergebnis einer Aktualisierung des Knotens, die durch die gegebene eine der einen oder mehreren empfangenen inkrementellen Aktualisierung(en) veranlasst wird, wobei der identifizierte Abschnitt der Knoten ist.
- Ein Verfolgen der Gesamtanzahl von Knotenaktualisierungen kann umfassen ein Führen eines Zählers, Inkrementieren des geführten Zählers jedes Mal, wenn eine neue Regel zu dem Knoten hinzugefügt wird, Inkrementieren des geführten Zählers jedes Mal, wenn eine existierende Regel modifiziert oder aus dem Knoten gelöscht wird, und Zurücksetzen des geführten Zählers, wenn der Knoten neu kompiliert wird.
- Jeder Knoten kann in eine Anzahl von Kind-Knoten auf ein oder mehrere ausgewählte Feld(er) des zumindest einen Felds und ein oder mehrere ausgewählte Bit(s) des ausgewählten einen Felds oder mehrerer Felder aufgeteilt werden. Der Knoten kann einen Schrittwert umfassen, wobei der Schrittwert einen Satz von einem oder mehreren Bit(s) angeben kann, der zum „Schneiden” bzw. Aufteilen des Knotens verwendet wird. Der gegebene Aktualisierungsschwellenwert kann eine Funktion einer Anzahl des einen oder mehrerer Bits in dem Satz sein.
- Der gegebene Aktualisierungsschwellenwert kann eine Funktion der Tiefe des Knotens sein, wobei die Tiefe des Knotens auf einer Anzahl von Knoten basiert, die in einem direkten Pfad zwischen dem Knoten und einem Wurzelknoten der RCDS enthalten sind, wobei der Wurzelknoten die Vielzahl von Regeln repräsentiert.
- Die RCDS kann eine Vielzahl von Knoten umfassen, wobei jeder Knoten einen Teilsatz der Vielzahl von Regeln repräsentieren kann, und der identifizierte Abschnitt kann ein Knoten der Vielzahl von Knoten sein.
- Der identifizierte Abschnitt kann die gesamte RCDS sein.
- Die RCDS kann eine Vielzahl von Knoten umfassen, wobei jeder Knoten einen Teilsatz der Vielzahl von Regeln repräsentieren kann, und der identifizierte Abschnitt kann ein Knoten der Vielzahl von Knoten sein, der in eine Anzahl von anderen Knoten, Blättern oder eine Kombination daraus aufgeteilt wurde. Ein Neukompilieren kann umfassen ein Auswählen eines Felds oder mehrerer Felder des zumindest einen Felds und erneutes Aufteilen des Knotens in eine neue Anzahl von neuen anderen Knoten, neuen anderen Blättern, oder einer neuen Kombination daraus.
- Das Verfahren kann weiter ein Aktualisieren der RCDS auf eine Weise aufweisen, die der RCDS ermöglicht, die eine oder mehreren bestimmten inkrementellen Aktualisierung(en) und den neu kompilierten identifizierten Abschnitt aus der Perspektive eines aktiven Suchprozesses unter Verwendung der RCDS für eine Paketklassifizierung atomar zu integrieren.
- Ein anderes hier offenbartes, beispielhaftes Ausführungsbeispiel umfasst eine Vorrichtung entsprechend Operationen, die mit den oben beschriebenen Verfahrens-Ausführungsbeispielen konsistent sind.
- Ferner kann ein weiteres beispielhaftes Ausführungsbeispiel ein nicht-transitorisches computerlesbares Medium mit einer darauf gespeicherten Sequenz von Anweisungen umfassen, die bei einem Laden und Ausführen durch einen Prozessor, den Prozessor veranlassen zum Durchführen von Verfahren konsistent mit den oben beschriebenen Verfahrens-Ausführungsbeispielen.
- KURZE BESCHREIBUNG DER ZEICHNUNGEN
- Obiges wird ersichtlich aus der folgenden genaueren Beschreibung von beispielhaften Ausführungsbeispielen der Erfindung, wie in den beigefügten Zeichnungen dargestellt, in denen gleiche Bezugszeichen dieselben Teile in den verschiedenen Ansichten bezeichnen. Die Zeichnungen sind nicht unbedingt maßstabsgerecht, stattdessen wird auf eine Veranschaulichung von Ausführungsbeispielen der vorliegenden Erfindung Wert gelegt.
-
1 ist ein Blockdiagramm einer typischen Netzwerktopologie, die Netzwerkelemente umfasst, die hier offenbarte Techniken einsetzen können. -
2A zeigt ein Ausführungsbeispiel eines Systems mit einer Steuerebene-Vorrichtung und einer Datenebene-Vorrichtung, das eine Regelkompilierte Datenstruktur (RCDS) atomar aktualisiert. -
2B ist ein Blockdiagramm, das ein beispielhaftes Ausführungsbeispiel des Kompilierer-Moduls zum Laden von Regeln in eine Speicherstruktur darstellt. -
3 zeigt die Architektur eines Ausführungsbeispiels eines Suchprozessors. -
4 ist ein Blockdiagramm, das ein beispielhaftes Ausführungsbeispiel eines Suchblocks oder einer Suchgruppe bzw. Such-Clusters darstellt. -
5A ist ein Ablaufdiagramm eines Ausführungsbeispiels eines Verfahrens für eine inkrementelle Aktualisierung für eine Regel-kompilierte Datenstruktur (RCDS) gemäß einem Ausführungsbeispiel. -
5B ist ein Ablaufdiagramm eines Ausführungsbeispiels eines Verfahrens zum Repräsentieren einer Regel-kompilierten Datenstruktur (RCDS). -
6A zeigt ein Ablaufdiagramm eines Verfahrens für eine atomare Aktualisierung einer Regel-kompilierten Datenstruktur (RCDS) gemäß einem Ausführungsbeispiel. -
6B zeigt eine Regel, die durch einen Graph repräsentiert wird. -
6C zeigt ein Ausführungsbeispiel eines Baums, resultierend aus einem Aufteilen von Regelplatz. -
6D zeigt ein Ausführungsbeispiel einer Regel-Feld-Änderung. -
6E zeigt ein Ausführungsbeispiel eines Baums, resultierend aus einem Aufteilen von Regelplatz. -
6F zeigt ein Ausführungsbeispiel einer Regel-Feld-Änderung. -
6G zeigt ein Ausführungsbeispiel eines Baums, resultierend aus einem Aufteilen von Regelplatz. -
6H zeigt ein Ablaufdiagramm eines Verfahrens zum Modifizieren einer Regel gemäß einem Ausführungsbeispiel. -
7 ist ein Ablaufdiagramm zum Hinzufügen einer Regel, die in einen Eimer passen kann, gemäß einem Ausführungsbeispiel. -
8A ist ein Ablaufdiagramm der Serie von einer oder mehreren Modifikation(en) gemäß einem Ausführungsbeispiel. -
8B zeigt einen Baum mit einem Blatt zu einem Eimer zeigend gemäß einem Ausführungsbeispiel. -
8C zeigt, gemäß einem Ausführungsbeispiel, dass zum Hinzufügen einer Regel, die eine höhere Priorität als eine andere Regel hat, ein neuer Eimer erzeugt werden kann. -
9A ist ein Ablaufdiagramm eines Ausführungsbeispiels eines Verfahrens, das einen Teilbaum erzeugt. -
9B zeigt ein Ausführungsbeispiel von Knoten und Blättern eines Baums. -
9C zeigt ein Erzeugen eines neuen Teilbaums gemäß einem Ausführungsbeispiel. -
10A ist ein Ablaufdiagramm eines Ausführungsbeispiels eines Verfahrens zum atomaren Hinzufügen eines neuen Blatts oder eines neuen Knotens zu einem Elternknoten in dem Baum. -
10B zeigt einen Elternknoten und seine Kinder gemäß einem Ausführungsbeispiel. -
10C zeigt, dass zum Hinzufügen eines Blatts/Knotens zu dem Baum eine neue Geschwisterliste mit dem hinzugefügten Blatt/Knoten erzeugt wird gemäß einem Ausführungsbeispiel. -
11A ist ein Ablaufdiagramm eines Defragmentierungsprozesses gemäß einem Ausführungsbeispiel. -
11B zeigt ein Ausführungsbeispiel eines Baums mit drei Ebenen. -
11C zeigt ein Hinzufügen einer Regel gemäß einem Ausführungsbeispiel. -
12A ist ein Ablaufdiagramm, das ein Löschen einer Regel gemäß einem Ausführungsbeispiel darstellt. -
12B zeigt eine Regeltabelle mit Regeln gemäß einem Ausführungsbeispiel. -
13 zeigt ein zu einem Eimer zeigendes Blatt und einen Regel-Zähler gemäß einem Ausführungsbeispiel. -
14A zeigt ein Ausführungsbeispiel zum Löschen einer Regel. -
14B zeigt, dass ein Zusammenführen von zwei Eimern, gemäß einem Ausführungsbeispiel, ein Erzeugen eines Eimers umfasst. -
15 ist ein Ablaufdiagramm, das ein Verfahren zum atomaren Löschen einer spezifizierten Regel aus dem Baum gemäß einem Ausführungsbeispiel darstellt. -
16 ist ein Ablaufdiagramm gemäß einem weiteren Ausführungsbeispiel eines Verfahrens zum atomaren Löschen einer spezifizierten Regel aus dem Baum. -
17 ist ein Ablaufdiagramm gemäß einem weiteren Ausführungsbeispiel eines Verfahren zum atomaren Löschen einer spezifizierten Regel aus dem Baum. -
18 ist ein Ablaufdiagramm eines Verfahrens zur adaptiven Anpassung des Baums gemäß einem Ausführungsbeispiel. -
19A zeigt eine inkrementelle Aktualisierung gemäß einem weiteren Ausführungsbeispiel zum Hinzufügen einer Regel. -
19B zeigt eine inkrementelle Aktualisierung gemäß einem weiteren Ausführungsbeispiel zum Aufteilen eines Blatts in einen Knoten und Blätter. -
19C zeigt eine inkrementelle Aktualisierung gemäß einem anderen Ausführungsbeispiel zum Hinzufügen eines Eimers zu einem Knoten. -
19D zeigt eine inkrementelle Aktualisierung gemäß einem weiteren Ausführungsbeispiel zum Neukompilieren eines Teilbaums. -
19E zeigt eine inkrementelle Aktualisierung gemäß einem weiteren Ausführungsbeispiel zum Löschen einer Regel. -
19F zeigt eine inkrementelle Aktualisierung gemäß einem weiteren Ausführungsbeispiel zum Modifizieren einer Regel. -
19G zeigt eine inkrementelle Aktualisierung gemäß einem weiteren Ausführungsbeispiel zur Defragmentierung. -
19H ist ein beispielhaftes Diagramm eines ausgewogenen und eines nicht-ausgewogenen Baums. -
19I zeigt einen Knoten, der in mehrere Kinder aufgeteilt wird. -
19J ist ein Ablaufdiagramm eines beispielhaften Ausführungsbeispiels eines Verfahrens zum Verwenden zumindest einer Heuristik zur Beibehaltung einer Qualität eines Baums. -
19K ist ein Ablaufdiagramm eines beispielhaften Ausführungsbeispiels eines weiteren Verfahrens zur Verwendung zumindest einer Heuristik zur Beibehaltung einer Qualität eines Baums. -
19L ist ein Ablaufdiagramm eines beispielhaften Ausführungsbeispiels eines weiteren Verfahrens zur Verwendung zumindest einer Heuristik zur Beibehaltung einer Qualität eines Baums. -
19M ist ein Ablaufdiagramm eines beispielhaften Ausführungsbeispiels eines Verfahrens zum Verfolgen von Knotenaktualisierungen. -
20 ist ein Blockdiagramm eines Computers, in dem verschiedene hier offenbarte Ausführungsbeispiele implementiert werden können. - DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
- Eine Beschreibung von beispielhaften Ausführungsbeispielen der Erfindung folgt.
- Die Lehren aller Patente, veröffentlichter Anmeldungen und hier zitierter Referenzen sind durch Bezugnahme in ihrer Gesamtheit aufgenommen.
- Eine Komplexität von Netzwerkanwendungen nimmt aufgrund der zunehmenden Anzahl von Netzwerkanwendungen zu, die in Netzwerkvorrichtungen implementiert werden. Eine Paketklassifizierung wird weithin für verschiedene Arten von Anwendungen verwendet, wie ein Routing mit Kenntnis bzw. Beachtung von Diensten, Angriffsverhinderung bzw. Intrusion Prevention und Verkehrsformung bzw. Traffic Shaping. Paketklassifizierungs-Lösungen sind erforderlich, um den exponentiell zunehmenden Verkehr auf Kanten-, Zugangs- und Kern-Vorrichtungen zu handhaben.
- Ausführungsbeispiele eines Systems, einer Vorrichtung und eines Verfahrens werden hier offenbart zum Hinzufügen, Löschen und Modifizieren von Regeln in einer Aktualisierung aus der Perspektive eines aktiven Suchprozesses unter Verwendung der Regeln für eine Paketklassifizierung. Um eine Paketklassifizierung durchzuführen, kann ein Suchprozessor nach einer oder mehreren Regel(n) suchen, die mit Schlüsseln übereinstimmt/übereinstimmen, die aus empfangenen Paketen erzeugt werden. Während eine aktive Suche ausgeführt wird, kann es eine Notwendigkeit zum Hinzufügen, Löschen und Modifizieren von Regeln geben. Hier offenbarte Ausführungsbeispiele ermöglichen ein Hinzufügen, Löschen und Modifizieren von Regeln in einer Aktualisierung aus der Perspektive eines aktiven Suchprozesses unter Verwendung der Regeln für eine Paketklassifizierung.
- Die Regeln können durch eine Regel-kompilierte Datenstruktur (RCDS – Rule Compiled Data Structure) präsentiert werden, die als Entscheidungsbaum implementiert werden kann. Die RCDS kann hier auch als „Baum” oder „Entscheidungsbaum” bezeichnet werden. Wenn inkrementelle Aktualisierungen empfangen werden, wie inkrementelle Aktualisierungen zum Hinzufügen, Löschen und Modifizieren von Regeln, kann der Baum basierend auf den empfangenen inkrementellen Aktualisierungen modifiziert werden und als ein Ergebnis kann eine Form oder Tiefe des Baums unausgewogen werden. Gemäß hier offenbarten Ausführungsbeispielen können Heuristiken verwendet werden, um zu bestimmen, wann der Baum neu zu kompilieren ist, und einen Abschnitt des Baums zum Neukompilieren zu identifizieren, wodurch die Qualität des Baums beibehalten werden kann. Gemäß hier offenbarten Ausführungsbeispielen kann eine ausgewogenere Verteilung von Knoten und Blättern des Baums durch eine Neukompilierung eines Abschnitts des Baums oder sogar des gesamten Baums selbst erreicht werden.
-
1 ist ein Blockdiagramm100 einer typischen Netzwerktopologie mit Netzwerkelementen, die hier offenbarte Techniken einsetzen können. Die Netzwerktopologie umfasst einen Internet-Kern102 mit einer Vielzahl von Kern-Routern104a –h. Jeder der Vielzahl von Kern-Routern104a –h ist mit zumindest einem anderen der Vielzahl von Kern-Routern104a –h verbunden. Kern-Router104a –h, die an der Kante bzw. dem Rand des Internet-Kerns102 sind (zum Beispiel die Kern-Router104b –e und104h ) sind mit zumindest einem Kanten-Router106a –f gekoppelt. Jeder Kanten-Router106a –f ist mit zumindest einem Zugangs-Router108a –d gekoppelt. - Die Kern-Router
104a –h können konfiguriert sein, in dem Internet-Kern102 oder Internet-Backbone zu arbeiten. Die Kern-Router104a –h können konfiguriert sein, mehrere Telekommunikationsschnittstellen des Internet-Kerns102 zu unterstützen, und können weiter konfiguriert sein, Pakete mit voller Geschwindigkeit von jedem der mehreren Telekommunikationsprotokolle weiterzuleiten. - Die Kanten-Router
106a –f können an der Kante des Internet-Kerns102 angeordnet sein. Kanten-Router106a –f können Zugangs-Router108a –e außerhalb der Internet-Kerns102 und Kern-Router104a –h in dem Internet-Kern102 überbrücken. Kanten-Router106a –f können konfiguriert sein, ein Bridging-Protokoll zu verwenden, um Pakete von Zugangs-Routern108a –e zu Kern-Routern104a –h und umgekehrt weiterzuleiten. - Die Zugangs-Router
108a –e können Router sein, die von einem Endbenutzer verwendet werden, wie ein Benutzer zu Hause oder ein Büro, um mit einem der Kanten-Router106a –f verbunden zu werden, der wiederum mit dem Internet-Kern102 verbunden sein kann durch Verbinden mit einem der Kern-Router104a –h. Auf diese Weise können die Kanten-Router106a –f mit einem anderen Kanten-Router106a –f über die Kanten-Router106a –f und die dazwischen verbundenen Kern-Router104a –h verbunden werden. - Die hier beschriebenen Prozessoren können sich in einem der Kern-Router
104a –h, Kanten-Router106a –f und Zugangs-Router108a –e befinden. Der hier beschriebene Suchprozessor, innerhalb jedes dieser Router, kann konfiguriert sein zum Analysieren (zum Beispiel Klassifizieren) von Internetprotokoll(IP – Internet Protocol)-Paketen basierend auf einem Satz von Regeln und Weiterleiten der IP-Pakete entlang eines geeigneten Netzwerkpfads. Eine Paketklassifizierung muss intelligent sein, um diverse Typen von Regelsätzen ohne signifikanten Verlust an Leistung zu handhaben. Darüber hinaus bieten neue Technologien, wie Mehrkernprozessoren, beispiellose Rechenleistung sowie hoch integrierte Ressourcen. So müssen Paketklassifizierungslösungen für hochentwickelte Hardware- und Software-Technologien gut angepasst sein. - Bestehende Paketklassifizierungsverfahren wägen Speicher gegenüber Zeit ab. Obwohl die Kompromisse ständig besser werden, ist die erforderliche Zeit für eine vernünftige Menge an Speicher im Allgemeinen weiter schlecht. Aufgrund von Problemen mit bestehenden Verfahren verwenden Anbieter TCAM (Ternary Content-Addressable Memory), der eine Brute-Force-parallel-Hardware verwendet, um Pakete hinsichtlich aller Regeln gleichzeitig zu überprüfen. Die wichtigsten Vorteile von TCAMs gegenüber existierenden Verfahren sind Geschwindigkeit und Determinismus (TCAMs sind für alle Datenbanken geeignet).
- Ein TCAM ist ein Hardware-Vorrichtung, die als ein vollständig assoziativer Speicher funktioniert. Eine TCAM-Zelle speichert drei Werte: 0, 1 oder „X”, das ein Don't-Care-Bit repräsentiert und als eine pro-Zelle-Maske arbeitet, um dem TCAM zu ermöglichen, Regeln mit Platzhaltern, wie ein Kleene-Stern „*”, zu vergleichen. In Betrieb kann ein ganzer Paket-Header einem TCAM präsentiert werden, um zu bestimmen, mit welchem Eintrag (Regel) dieser übereinstimmt. Jedoch hat die Komplexität von TCAMs nur kleine, unflexible und relativ langsame Implementierungen ermöglicht, die viel Energie verbrauchen. Daher besteht weiter eine Notwendigkeit für effiziente Verfahren, die auf spezialisierten Datenstrukturen arbeiten.
- Aktuelle Verfahren bleiben in den Stufen einer mathematischen Analyse und/oder Software-Simulation (Beobachtungs-basierte Lösungen). Vorgeschlagene mathematische Lösungen sollen eine herausragende Zeit/Spezial-Komplexität haben. Jedoch fehlt Verfahren dieser Art eine Implementierung in realen Netzwerkvorrichtungen, da mathematische Lösungen häufig spezielle Bedingungen hinzufügen, um ein Problem zu vereinfachen, und/oder große konstante Faktoren weglassen, die eine explizite Worst-Case-Grenze verbergen könnten. Vorgeschlagene Beobachtungs-basierte Lösungen verwenden statistische Charakteristiken, die in Regeln beobachtet werden, um eine effiziente Lösung für reale Anwendungen zu erreichen. Jedoch funktionieren diese Verfahren im Allgemeinen nur mit einem spezifischen Typ von Regelsätzen. Da Paketklassifizierungsregeln für unterschiedliche Anwendungen verschiedene Merkmale haben, sind nur wenige Beobachtungs-basierte Verfahren in der Lage, eine Redundanz in verschiedenen Typen von Regelsätzen voll auszuschöpfen, um eine stabile Leistung bei verschiedenen Bedingungen zu erreichen.
- Eine Paketklassifizierung kann unter Verwendung eines Paketklassifizierers durchgeführt werden, auch bezeichnet als Richtlinien-Datenbank, Fluss-Klassifizierer oder einfach Klassifizierer. Ein Klassifizierer ist eine Sammlung von Regeln oder Richtlinien. Empfangene Pakete werden mit Regeln verglichen, die Aktionen bestimmen, die mit einem passenden Paket durchzuführen sind. Eine generische Paketklassifizierung erfordert, dass ein Router ein Paket basierend auf mehreren Feldern in einem Header des Pakets klassifiziert. Jede Regel des Klassifizierers spezifiziert eine Klasse, zu der ein Paket gehören kann gemäß Kriterien auf „F” Feldern des Paket-Headers, und assoziiert einen Identifizierer (zum Beispiel Klasse-ID) mit jeder Klasse. Zum Beispiel ist jede Regel in einem Fluss-Klassifizierer eine Fluss-Spezifikation, wobei jeder Fluss in einer getrennten Klasse ist. Der Identifizierer spezifiziert eindeutig eine Aktion, die mit jeder Regel assoziiert ist. Jede Regel hat „F” Felder. Ein i-tes Feld einer Regel R, bezeichnet als R[i], ist ein regulärer Ausdruck auf dem i-ten Feld des Paket-Headers. Ein Paket P entspricht einer bestimmten Regel R, wenn für jedes i das i-te Feld des Headers von P den regulären Ausdruck R[i] erfüllt.
- Klassen, die durch die Regeln spezifiziert werden, können sich überlappen. Zum Beispiel kann ein Paket mehreren Regeln entsprechen. In diesem Fall, wenn mehrere Regeln überlappen, bestimmt eine Reihenfolge, in der die Regeln in dem Klassifizierer erscheinen, die relative Priorität der Regeln. In anderen Worten, ein Paket, das mehreren Regeln entspricht, gehört zu der Klasse, die von dem Identifizierer (Klasse-ID) der Regel unter diesen identifiziert wird, die in dem Klassifizierer als erstes erscheint.
- Hier offenbarte Techniken können einen Entscheidungsbaum einsetzen, der verwendet wird, um empfangene Pakete mit Regeln zu vergleichen. Ein Entscheidungsbaum ist ein Entscheidungsunterstützungsinstrument, das eine Baum-ähnliche Graphik oder Modell von Entscheidungen und deren mögliche Konsequenzen verwendet, einschließlich Zufallsereignisergebnisse, Ressourcenkosten und Nutzen. Entscheidungsbäume werden im Allgemeinen bei einer Betriebsforschung bzw. Operations Research verwendet, insbesondere bei einer Entscheidungsanalyse, um eine Identifizierung einer Strategie zu unterstützen, die am wahrscheinlichsten ein Ziel erreicht. Eine weitere Verwendung von Entscheidungsbäumen ist als beschreibendes Mittel zur Berechnung von bedingten Wahrscheinlichkeiten.
- Wie hier beschrieben kann ein Prozessor, wie ein Suchprozessor, einen Entscheidungsbaum verwenden, um auszuwählen, ein empfangenes Paket mit einer Regel in einer Klassifizierer-Tabelle zu vergleichen, um zu bestimmen, wie empfangene Pakete zu verarbeiten sind. Vor einer Laufzeit können Regeln offline kompiliert und in einen Suchprozessor heruntergeladen werden. Während der Laufzeit fließen Pakete durch den Suchprozessor. Der Suchprozessor kann Schlüssel aus den Paketen erzeugen, nach einer oder mehreren, für die Schlüssel passenden Regel(n) suchen, und Ergebnisse einer gefundenen oder nicht gefundenen Übereinstimmung zurückgeben. Während der Suchprozessor nach einer oder mehreren Regel(n) sucht, die zu Schlüsseln passt/passen (zum Beispiel führt der Suchprozessor einen aktiven Suchprozess durch), kann es notwendig sein, Regeln hinzuzufügen, zu löschen oder zu modifizieren – eine inkrementelle Aktualisierung. Gemäß hier offenbarten Techniken kann der Suchprozessor Regeln hinzufügen, löschen oder modifizieren, ohne die Fähigkeit des Suchprozessors zu beeinflussen, nach einer oder mehreren Regel(n) zu suchen, die zu Schlüsseln passt/passen, hinsichtlich sowohl Leistung (zum Beispiel, wie viele Pakete pro einer Zeiteinheit gesucht werden) als auch Funktionalität.
-
2A zeigt ein System200 , das eine Steuerebene-Vorrichtung224 und eine Datenebene-Vorrichtung226 umfasst, das eine Regel-kompilierte Datenstruktur (RCDS)214 aus der Perspektive eines aktiven Suchprozesses212 unter Verwendung (228 ) der Regel-kompilierten Datenstruktur (RCDS)214 atomar aktualisiert. - Die Steuerebene-Vorrichtung
224 kann einen Steuerebene-Prozessor202 umfassen, der ein Kompilierer-Modul216 , ein „inkrementelle Aktualisierung”-Modul210 umfassen kann und mit einem Steuerebene-Speicher208 gekoppelt sein kann. Der Steuerebene-Speicher208 kann ein binäres Format eines Entscheidungsbaums218 , eines Haushaltsführungsbaums220 und einer Änderungsliste222 umfassen. Das Kompilierer-Modul216 kann konfiguriert sein zum Empfangen einer Regel-Datei230 und Kompilieren der empfangenen Regel-Datei in einen Entscheidungsbaum, wie ein binäres Format eines Entscheidungsbaums218 (zum Beispiel eine binäre Datenstruktur). -
2B ist ein Blockdiagramm, das ein beispielhaftes Ausführungsbeispiel des Kompilierer-Moduls216 zum Laden von Regeln in eine Speicherstruktur darstellt. Das Kompilierer-Modul216 empfängt einen Regel-Satz230 . Das Kompilierer-Modul216 erzeugt ein binäres Format von kompilierten Regeln (218 ). Das binäre Format der kompilierten Regeln (218 ) umfasst einen Baum282 , Eimer284 und Regeln286 . Der Baum282 umfasst Knoten288a –d, Blattknoten290a –b und einen Wurzelknoten292 . Jeder Blattknoten290a –b des Baums282 zeigt zu einem eines Satzes von Eimern284 . Ein Blattknoten kann hier auch als ein Blatt bezeichnet werden und Blattknoten können hier auch als Blätter bezeichnet werden. - Jeder Eimer ist eine Datenstruktur, die einen Eimereintrag oder mehrere Eimereinträge umfassen kann. Ein Eimereintrag kann eine Regel, ein Index zu einer Regel, ein Zeiger zu einer Regel, ein Zeiger zu einem Satz von Regeln oder ein Zeiger zu einem anderen Eimer sein. Ein Eimer kann Einträge umfassen, einschließlich jeder Kombination daraus. Zum Beispiel kann ein Eimer einen Eintrag haben, der ein Zeiger zu einer Regel ist, und einen Eintrag, der ein Zeiger zu einem Satz von Regeln ist, etc.
- Jeder Eimer kann Eimereinträge umfassen, die Regel- oder Block-Zeiger
296 enthalten können. Die Regeln286 können Blöcke von Regeln294 umfassen. Ein Block294 (von Regeln) kann eine sequentielle Gruppe von Regeln oder eine Gruppe von Regeln sein, die in dem Speicher verteilt sind, entweder durch eine Vielzahl von Zeigern organisiert oder durch Wiedersammeln des verteilten Blocks294 (zum Beispiel unter Verwendung einer Hash-Funktion). - Das binäre Format eines Entscheidungsbaums
218 kann auf die Datenebene-Vorrichtung206 über eine Schnittstelle232 heruntergeladen werden. Die Schnittstelle232 kann eine PCIe(Peripheral Component Interconnect Express)-Schnittstelle, eine I2C(Intelligent Interface Controller)-Schnittstelle oder eine andere geeignete Schnittstelle sein, die für Fachleute bekannt sein kann. - Die Datenebene-Vorrichtung kann ein Paketverarbeitungsmodul
234 umfassen, das einen Datenebene-Prozessor204 umfasst, der mit einem Datenebene-Speicher236 gekoppelt ist. Das Paketverarbeitungsmodul234 kann mit einem Klassifizierermodul206 gekoppelt sein, das ebenfalls in der Datenebene-Vorrichtung226 enthalten sein kann. Das Klassifizierermodul206 kann einen Suchprozessor238 umfassen, der mit einem Suchprozessorspeicher240 gekoppelt sein kann. Der Datenebene-Prozessor204 kann mit dem Suchprozessor238 über eine Schnittstelle gekoppelt sein, wie eine Interlaken-Look-Aside-Schnittstelle, oder jede andere geeignete Schnittstelle, die für Fachleute bekannt sein kann. - Das binäre Format eines Entscheidungsbaums
218 kann auf das Klassifizierermodul206 über die Schnittstelle242 heruntergeladen werden und als die Regel-kompilierte Datenstruktur (RCDS)214 gespeichert werden, die in dem Suchprozessorspeicher214 enthalten sein kann. Alternativ kann das binäre Format einer Entscheidungsbaums218 über die Schnittstelle244 auf den Suchprozessor238 heruntergeladen werden und als die Regel-kompilierte Datenstruktur (RCDS)214 gespeichert werden. Die Schnittstelle244 kann eine I2C(Intelligent Interface Controller)-Schnittstelle oder jede andere geeignete Schnittstelle sein, die für Fachleute bekannt sein kann. - Das „inkrementelle Aktualisierung”-Modul
210 kann eine Regel oder eine Regel-Operation zum Hinzufügen, Löschen oder Modifizieren von Regeln für die Regel-kompilierte Datenstruktur (RCDS) empfangen. Das „inkrementelle Aktualisierung”-Modul210 kann das binäre Format eines Entscheidungsbaums218 und eines Haushaltsführungsbaums220 verwenden, um eine Änderungsliste222 zum atomaren Aktualisieren der Regel-kompilierten Datenstruktur214 erstellen. Der Haushaltsführungsbaum220 kann eine erweiterte Repräsentation der Regel-kompilierten Datenstruktur (RCDS)214 sein, mit zusätzlicher Information des Baums, um eine oder mehrere Aktualisierung(en) für den Baum zu bestimmen. - Der Haushaltsführungsbaum
220 kann Information für jede Regel in dem Baum umfassen und führen, wie eine Abdeckungsliste. Eine Abdeckungsliste kann einen Satz von Regeln umfassen, die von der Regel abgedeckt sind oder aufgrund einer Regel höherer Priorität nicht zu dem Baum hinzugefügt werden. Abgedeckte Regeln sind „nutzlose” Regeln, da sie nicht passen. Durch Führen einer Abdeckungsliste an einem Knoten für jede Regel, die eine oder oder mehrere andere Regel(n) des Knotens abdeckt, kann das „inkrementelle Aktualisierung”-Modul210 bestimmen, wann Regeln hinzuzufügen und zu löschen sind. Wenn zum Beispiel eine Regel zu löschen ist, kann das „inkrementelle Aktualisierung”-Modul210 bestimmen, eine oder mehrere Regel(n) hinzuzufügen, die zuvor nicht hinzugefügt wurde(n), da sie von der Regel abgedeckt war(en), die nun gelöscht wird. Wenn die abdeckende Regel gelöscht wird, können die zuvor „nutzlosen” Regeln nun nützlich sein, da es eine Möglichkeit gibt, dass sie passen können. Abdeckungslisten sind ein Beispiel für Regelinformation, die in dem Haushaltsführungsbaum enthalten und geführt werden kann, andere Regelinformation kann ebenfalls enthalten sein, um die inkrementelle Aktualisierung bei einem Bestimmen von Baum-Aktualisierungen zu unterstützen. - Die Änderungsliste kann einen oder mehrere Befehl(e) zum atomaren Aktualisieren der Regel-kompilierten Datenstruktur (RCDS)
214 spezifizieren, die in dem Suchprozessorspeicher240 gespeichert ist. Andererseits kann es sein, dass eine Regel-kompilierte Datenstruktur (RCDS)214 nicht gespeichert ist, da das Kompilierer-Modul216 das binäre Format eines Entscheidungsbaums218 nicht kompiliert hat. In diesem Fall kann das „inkrementelle Aktualisierung”-Modul210 eine Änderungsliste222 erstellen, die die Regel-kompilierte Datenstruktur (RCDS)214 erstellt. Die Änderungsliste222 kann an die Datenebene-Vorrichtung206 über die Schnittstelle232 kommuniziert werden und dann an den Suchprozessor238 über die Schnittstelle242 kommuniziert werden. Alternativ kann die Änderungsliste222 an den Suchprozessor238 über die Schnittstelle244 kommuniziert werden. Die Regel-kompilierte Datenstruktur214 kann durch einen aktiven Suchprozess212 verwendet werden, um empfangene Pakete246 zu klassifizieren. - Das Paketverarbeitungsmodul
234 kann konfiguriert sein zum Senden von Paketen252 und Empfangen von Paketen246 . Der Datenebene-Prozessor204 kann Such- bzw. Lookup-Anforderungen248 an den Suchprozessor238 senden und Ergebnisse250 von dem Suchprozessor238 empfangen. Der Suchprozessor238 kann konfiguriert sein zum Finden einer oder mehrerer Regel(n) (passende Regeln), die für ein Paket passen, durch Verwenden der Regel-kompilierten Datenstruktur (RCDS)214 . Zum Beispiel kann ein Paket in Teile aufgeteilt werden, wie einen Header, eine Nutzlast und einen Trailer. Der Header des Pakets (oder Paket-Header) kann weiter in Felder aufgeteilt werden. Der Suchprozessor238 kann konfiguriert sein zum Finden einer oder mehrerer Regel(n), die für einen oder mehrere Teil(e) eines empfangenen Pakets passt/passen. - Die Suchanforderung
248 kann einen Paket-Header und einen Gruppenidentifizierer (GID – group identifier) umfassen. Der GID kann einen Eintrag in einer globalen Definitions/Beschreibungs-Tabelle (GDT – gobal definition/description table) indizieren. Jeder GDT-Eintrag kann eine n Anzahl von Tabellenidentifizierern (TID – table identifier), einen Paket-Header-Index (PHIDX – packet header index) und einen Schlüsselformat-Tabellenindex (KFTIDX – key format table index) umfassen. Jeder TID kann einen Eintrag in einer Baumpositionstabelle (TLT – tree location table) indizieren. Jeder TLT-Eintrag kann eine Such- bzw. Lookup-Maschine (zum Beispiel Suchprozessor) identifizieren, um die eine oder mehreren passende(n) Regel(n) zu suchen. Auf diese Weise kann jeder TID sowohl spezifizieren, wer nach der einen oder mehreren passende(n) Regel(n) sucht, als auch wo nach der einen oder mehreren passende(n) Regel(n) zu suchen ist. - Jeder Tabellenidentifizierer (TID – table identifier) kann auch einen Eintrag in einer Baum-Zugangs-Tabelle (TAT – tree access table) indizieren. Eine TAT kann in dem Kontext verwendet werden, in dem mehrere Suchmaschinen, die zusammen in einer Gruppe gruppiert sind, nach der einen oder mehreren passenden Regel(n) suchen. Jeder TAT-Eintrag kann die Startadresse, in dem Speicher, einer Sammlung von Regeln (oder Zeigern zu Regeln) vorsehen, als Tabelle oder Baum von Regeln bezeichnet. Die Begriffe Tabelle von Regeln oder Baum von Regeln (oder einfach Tabelle oder Baum) werden in der Offenbarung austauschbar verwendet. Der TID identifiziert die Sammlung oder den Satz von Regeln, wie die Regel-kompilierte Datenstruktur
214 , in der/dem nach einer oder mehreren passenden Regel(n) zu suchen ist. - Der Paket-Header-Index (PHIDX) kann einen Eintrag in einer Paket-Header-Tabelle (PHT) indizieren. Jeder Eintrag in der PHT kann beschreiben, wie eine n Anzahl von Schlüsseln aus dem Paket-Header zu extrahieren ist. Der Schlüsselformat-Tabellenindex (KFTIDX) kann einen Eintrag in einer Schlüsselformat-Tabelle (KFT) indizieren. Jeder Eintrag in der KFT kann Anweisungen vorsehen zum Extrahieren eines Felds oder mehrerer Felder (zum Beispiel Teile des Paket-Headers) aus jedem der n Anzahl von Schlüsseln, die aus dem Paket-Header extrahiert wurden.
- Jedes der extrahierten Felder, zusammen mit jedem der TIDs, die alle beginnend mit der Suchanforderung abgeleitet wurden, kann verwendet werden, um Teilsätze der Regeln zu suchen. Jeder Teilsatz enthält Regeln, die möglicherweise zu jedem der extrahierten Felder passen. Jede Regel jedes Teilsatzes kann mit einem extrahierten Feld verglichen werden. Regeln, die passen, können in Antworten (zum Beispiel Suche-Antworten) als Ergebnisse
250 vorgesehen werden. - Die Suchanforderung und deren aufgezählte Stufen, wie oben beschrieben, sind nur vorgesehen, um Konzepte zu präsentieren. Diese Konzepte können auf vielfältige Weise implementiert werden. Zum Beispiel, gemäß beispielhaften Ausführungsbeispielen der vorliegenden Erfindung, können diese Konzepte durch einen Suchprozessor, wie den Suchprozessor
212 , implementiert werden. -
3 zeigt die Architektur eines beispielhaften Suchprozessors300 , der eine Suche nach einer oder mehreren Regel(n) vorsieht, die einem oder mehreren Teil(en) eines Pakets für eine Paketklassifizierung entsprechen, was als „Regelverarbeitung” bezeichnet werden kann. Der Prozessor umfasst unter anderem eine Schnittstelle (zum Beispiel Interlaken-LA-Schnittstelle)302 zum Empfangen von Anforderungen von einem Host (zum Beispiel dem Datenebene-Prozessor204 ) und zum Senden von Antworten an den Host; Suche-Front-End (LUFs – Lookup Front End)304a –b zum Verarbeiten, Planen und Sortieren der Anforderungen und Antworten; Suchmaschinen (LUFs – Lookup Engines)306a –h zum Suchen nach Regeln, bei der Anforderung, die für Schlüssel zur Paketklassifizierung passen; Speicher-Durchlauf-Aggregator (MWA – memory walker aggregator)308 und eine Speicherblock-Steuervorrichtung (MBCs – memory block controller)310a –b zum Koordinieren eines Lesens aus einem und Schreibens in einen Speicher, der sich extern zu dem Prozessor befindet (nicht gezeigt); und einen Eimer-Nachverabeitungsprozessor (BPP – Bucket Post Processor)312a –b zum Suchen nach Regeln, die in dem Speicher gespeichert sind, der sich extern zu dem Prozessor befindet (nicht gezeigt), die zu Schlüsseln für eine Paketklassifizierung passen. - Wie in
3 gezeigt, ist die LUE mit einem Speicher auf einem Chip bzw. On-Chip-Speicher314a –h assoziiert. Ebenfalls in3 gezeigt, mehrere LUEs306a –h und ihre assoziierten On-Chip-Speicher314a –h, zusammen mit einer Crossbar-Vorrichtung316 , sind in einem Supercluster SC0318 organisiert. Der beispielhafte Suchprozessor kann mehr als einen derartigen Supercluster haben (zum Beispiel SC0318 und SC1320 ). -
4 ist ein Blockdiagramm400 , das ein beispielhaftes Ausführungsbeispiel eines Suchblocks oder einer Suchgruppe bzw. Such-Clusters410 darstellt. Um die Operation des beispielhaften Suchprozessors darzustellen, in Bezug auf2A , umfasst die Suchgruppe410 einen On-Chip-Speicher (OCM – on-chip memory)408 , eine Baum-Durchlauf-Maschine (TWE – tree walk engine)404 , eine Eimer-Durchlauf-Maschine (BWE – bucket walk engine)414 und eine Vielzahl von Regel-Übereinstimmung-Maschinen (RME – rule match engines)420a –c. Der OCM408 speichert die Regel-kompilierte Datenstruktur (RCDS) als eine Baumdatenstruktur, eine Eimerspeicherdatenstruktur und eine Block- und/oder Regeldatenstruktur. Die Begriffe Baum und Regel-kompilierte Datenstruktur (RCDS) werden hier austauschbar verwendet. Die Baumdatenstruktur kann die Eimerspeicherdatenstruktur und die Block- und/oder Regeldatenstruktur umfassen. - Die Suchgruppe
410 empfängt einen Schlüssel402 von dem LUF304a –b (3 ) an der TWE404 . Die TWE404 gibt eine Vielzahl von Baum-Eingabe/Ausgabe(E/A bzw. I/O – input/output)-Zugriffen406 an den OCM408 aus und empfängt diese. Basierend auf dem Schlüssel402 geht die TWE404 den Baum von einem Wurzelknoten zu einem möglichen Blattknoten durch. Wenn die TWE404 keinen geeigneten Blattknoten findet, gibt die TWE404 ein keine-Übereinstimmung412 aus (zum Beispiel keine-Übereinstimmung). Dann, wenn die TWE404 einen geeigneten Blattknoten findet, kann der Blattknoten einen Zeiger410 zu einem Eimer zeigen. Die TWE404 liefert den Zeiger410 zu dem Eimer an die BWE414 . Die BWE414 greift auf den OCM408 zu durch Ausgeben von Eimer-E/A-Zugriffen416 auf den OCM408 . Die Eimer-E/A-Zugriffe416 rufen zumindest einen Zeiger418 zu einem Block zu der BWE414 ab. Die BWE414 liefert den Zeiger418 zu dem Block zu einer der Vielzahl von RMEs420a –c. Die eine der ausgewählten RMEs420a –c empfängt auch den Schlüssel402 . Jede der Vielzahl von RMEs420a –c ist konfiguriert zum Ausgeben von Regel- und/oder Block-E/A-Zugriffen424 an den OCM408 unter Verwendung des Zeigers418 zu dem Block, um geeignete Regeln von dem Block in den OCM herunterzuladen, um den Schlüssel402 zu analysieren. Die RMEs420a –c analysieren dann den Schlüssel unter Verwendung der Regeln, auf die von dem OCM408 zugegriffen wird, und geben eine Antwort oder keine-Übereinstimmung422a –c aus entsprechend dazu, ob der Schlüssel zu der Regel oder dem Block passte, wie angegeben durch den Baum und Eimer, in dem OCM408 gespeichert. - Nach einer Übersicht über den Suchprozessor und dessen Implementierung einer Suchanforderung (in Bezug auf
1 ) werden nun Ausführungsbeispiele für eine inkrementelle Aktualisierung der Regel-kompilierten Datenstruktur (RCDS)214 beschrieben. Wie beschrieben, soll der Suchprozessor Regeln hinzufügen, löschen oder modifizieren, ohne die Fähigkeit der Suchprozessors zu beeinflussen, nach einer oder mehreren Regel(n) zu suchen, die Schlüsseln entspricht/entsprechen, sowohl in Bezug auf Leistung (zum Beispiel, wie viele Pakete pro Zeiteinheit gesucht werden) als auch Funktionalität. -
5A ist ein Ablaufdiagramm eines Verfahrens500 , das beginnt (502 ) und eine inkrementelle Aktualisierung für eine Regel-kompilierte Datenstruktur (RCDS) empfangen kann (504 ), gemäß einem Ausführungsbeispiel. Die Regel-kompilierte Datenstruktur (RCDS) kann einen Satz von Regeln zur Paketklassifizierung repräsentieren. Die Regel-kompilierte Datenstruktur (RCDS) kann für eine Paketklassifizierung durch einen aktiven Suchprozess verwendet werden und basierend auf der empfangenen inkrementellen Aktualisierung atomar aktualisiert werden, aus der Perspektive des aktiven Suchprozesses, unter Verwendung der Regel-kompilierten Datenstruktur (RCDS) (506 ), und Ende (508 ). -
5B ist ein Ablaufdiagramm eines Verfahrens520 , das eine Regel-kompilierte Datenstruktur (RCDS) gemäß einem Ausführungsbeispiel repräsentiert. Die Regel-kompilierte Datenstruktur (RCDS) kann als ein Baum des Satzes von Regeln dargestellt werden, der Baum kann eine binäre Datenstruktur sein mit einem oder mehreren Knoten und einem Blatt oder mehreren Blättern (524 ). Zumindest einer des einen oder mehrerer Knoten kann als Elternknoten repräsentiert werden und mit einem oder mehreren Kindern) verknüpft werden, das eine oder die mehreren Kind(er) kann/können ein Knoten oder ein Blatt sein (526 ). Der Elternknoten kann mit dem einen oder mehreren Kind(ern) verknüpft sein durch Zeigen bzw. Verweisen des Elternknotens zu einer Geschwisterliste, die das eine oder mehrere Kind(er) umfasst. Knoten des Baums können mit einem oder mehreren Knoten und einem Blatt oder mehreren Blättern des Baums verknüpft sein (528 ). Blätter des Baums können mit einem oder mehreren Eimer(n) verknüpft sein, wobei jeder Eimer einen Teilsatz des Satzes von Regeln repräsentieren kann, jeder Eimer einen oder mehrere Eimereinträge entsprechend dem Teilsatz des Satzes von Regeln umfassen kann (530 ). Die Eimereinträge können gemäß einer ansteigenden oder abnehmenden Regelpriorität geordnet sein. Das Speichern des Satzes von Regeln kann in einer Regeltabelle gespeichert werden, wobei die Regeln in der Regeltabelle geordnet oder ungeordnet sind (532 ), und das Verfahren endet (534 ). - In Bezug auf Funktionalität, während der Suchprozessor eine Suche durchführt, sollte der Suchprozessor den Zustand der Regeln (oder Regeltabelle) finden als entweder „bevor” oder „nachdem” eine Regel hinzugefügt, gelöscht oder modifiziert wird. Der Suchprozessor sollte den Zustand der Regeln nicht finden als einen Zwischenzustand zwischen „bevor” oder „nachdem” eine Regel hinzugefügt, gelöscht oder modifiziert wird. Zum Beispiel sollte nicht der Fall sein, dass während der Suche der Suchprozessor eine Regel findet, die aufgrund einer Regel-Aktualisierung zu einem Schlüssel für einige Zeit passt. Das Hinzufügen, Löschen oder Modifizieren von Regeln, ohne die Funktionalität oder die Leistung zu beeinflussen, wie oben beschrieben, wird als eine „atomare” Aktualisierung oder ein „atomares” Aktualisieren bezeichnet.
- Die Herausforderung einer Durchführung einer atomaren Aktualisierung (oder eines atomaren Aktualisierens) ist, dass jedes Hinzufügen, Löschen oder Modifizieren von Regeln mehr als eine Aktualisierung in Anspruch nehmen kann, um abgeschlossen zu werden. Einige Regeln können nicht in einer einzigen Aktualisierung hinzugefügt, gelöscht oder modifiziert werden (zum Beispiel kann eine Regel nicht durch einfaches Ändern eines Bits in dieser Regel hinzugefügt, gelöscht oder modifiziert werden).
-
6A zeigt ein Ablaufdiagramm eines Verfahrens für eine atomare Aktualisierung (600 ) gemäß einem Ausführungsbeispiel. Das Verfahren beginnt (602 ). Die atomare Aktualisierung der Regel-kompilierten Datenstruktur (RCDS) kann umfassen ein Beschränken eines Zustands der Regel-kompilierten Datenstruktur (RCDS) auf einen „vorher”-Zustand und einen „nachher”-Zustand. Der „vorher”-Zustand ist ein Zustand der Regel-kompilierten Datenstruktur (RCDS) vor einem Empfangen der inkrementellen Aktualisierung für die Regelkompilierte Datenstruktur (RCDS) (604 ). Die Regel-kompilierte Datenstruktur (RCDS) kann durch einen aktiven Suchprozess verwendet werden (606 ) und eine inkrementelle Aktualisierung kann empfangen werden (608 ). Die Serie von einer oder mehreren Modifikation(en) wird basierend auf der empfangenen inkrementellen Aktualisierung abgeschlossen (610 ). Eine Aktualisierung der Regelkompilierten Datenstruktur (RCDS) kann durchgeführt werden (612 ). Der „nachher”-Zustand ist ein Zustand der Regel-kompilierten Datenstruktur (RCDS), nachdem eine Serie von einer oder mehreren Modifikation(en) der Regelkompilierten Datenstruktur (RCDS) abgeschlossen ist (614 ). Die Serie von einer oder mehreren Modifikation(en) kann für den aktiven Suchprozess sichtbar gemacht werden (basierend auf einem Durchführen einer Aktualisierung der durchsuchten Regel-kompilierten Datenstruktur (RCDS). Das Verfahren kann enden (618 ). - Gemäß hier offenbarten Techniken erscheint ein Hinzufügen, Löschen und Modifizieren einer Regel als eine Aktualisierung in Anspruch zu nehmen aus der Perspektive eines Suchprozessors, der eine aktive Suche durchführt. Die Regel-kompilierte Datenstruktur (RCDS) oder ein Baum von Regeln oder ein Baum repräsentiert einen Satz von Regeln. Der Baum ist eine binäre Datenstruktur mit Knoten und Blättern. Jedes Blatt des Baums zeigt zu einem Teilsatz der Regeln, als Eimer von Regeln oder Eimer bezeichnet. Jeder der Eimer repräsentiert einen Teilsatz der Regeln. Jeder Eimer ist eine Datenstruktur (zum Beispiel ein Array) mit Regeln, Zeigern zu Regeln, Zeigern zu Blöcken von Regeln oder jede Kombination daraus, die in einer Regeltabelle gespeichert sein können. Regeln (oder Zeiger zu Regeln) in einem Eimer sind nach Priorität geordnet (zum Beispiel eine ansteigende oder abnehmende Priorität). Eine Regeltabelle ist eine Datenstruktur (zum Beispiel ein Array) mit den Regeln. Regeln innerhalb der Regeltabelle können geordnet oder ungeordnet sein.
- Eine Regel hat unter anderem eine Priorität und ein oder mehrere Feld(er). Auf diese Weise umfasst ein Modifizieren einer Regel ein Modifizieren einer Priorität und/oder eines Felds oder mehrerer Felder. Um ein Modifizieren einer Priorität einer Regel gemäß einem Ausführungsbeispiel zu beschreiben, ist das folgende Beispiel vorgesehen.
- Ein Netzwerk-Router führt, in was als eine „weiße Liste” bezeichnet werden kann, Regeln zum Zulassen von Verkehr von bestimmten Netzwerken. Die weiße Liste kann auch eine Regel zum Fallenlassen von Verkehr von allen Netzwerken umfassen, als „Standard-Route” oder „Standard-Regel” bezeichnet. Die Regeln können priorisiert sein derart, dass der Router einen Verkehr zuerst mit der Regel mit der höchsten Priorität vergleicht, und wenn keine Übereinstimmung gefunden wird, den Verkehr als nächstes mit der Regel mit der nächsthöheren Priorität vergleicht. Der Router kann weiter vergleichen durch Abarbeiten der Liste von Regeln, bis eine Übereinstimmung gefunden wird oder bis der Router die Regel mit der niedrigsten Priorität erreicht, die Standard-Route, in welchem Fall der Verkehr fallengelassen wird.
- Die weiße Liste kann gefährdet sein und der Router kann einen „zu beanstandenden” Verkehr zulassen. Statt durch jede Regel zu gehen, um die Regel zu finden, die den zu beanstandenden Verkehr zulässt (was zeitaufwendig sein kann), kann ein Betreiber oder Administrator des Routers die Regeln „neu priorisieren” durch Ändern der Priorität der Standard-Route von der niedrigsten zu der höchsten Priorität. Nach der Standard-Route stoppt die höchste Priorität den gesamten Verkehr, einschließlich des zu beanstandenden Verkehrs.
- Ein Modifizieren einer Priorität einer Regel, gemäß einem Ausführungsbeispiel, umfasst ein Bestimmen, ob ein Ändern der Priorität der Regel mit einer Priorität einer anderen Regel in Konflikt tritt oder diese überlappt. Unter Verwendung des obigen Beispiels der weißen Liste wird angenommen, dass die Regel mit der höchsten Priorität eine Priorität von 0 hat und es gibt keine Priorität höher als 0. Es besteht ein Konflikt, wenn die Priorität der Standard-Route auf 0 geändert wird. In dem Fall einer kollidierenden Priorität kann die Priorität der Regel und die Priorität einer anderen Regel aktualisiert werden. In dem Fall ohne kollidierende Priorität (zum Beispiel hat die Regel mit der höchsten Priorität eine Priorität von 1 und die Priorität der Standard-Route wird auf 0 geändert), wird die Priorität der Regel modifiziert, ohne Regeln zu löschen und hinzuzufügen. Um ein Modifizieren eines Felds einer Regel gemäß einem Ausführungsbeispiel zu beschreiben, ist das folgende Beispiel vorgesehen.
-
6B zeigt, dass eine Regel mit „n” Feldern durch einen „n”-dimensionalen Graph repräsentiert werden kann, in dem jedes Feld durch eine Dimension repräsentiert wird. Zum Beispiel zeigt6B zwei Regeln, R1 und R2, als Kästchen. In der beispielhaften Darstellung von6B hat jede Regel zwei Felder, X und Y, die in6B als Dimension-X und Dimension-Y repräsentiert werden. Eine Seite entlang der Dimension-X repräsentiert einen Bereich von Werten (oder ein Präfix) für Feld X. Zum Beispiel, wie in6B gezeigt, repräsentiert die Seite des Kästchens, die R2 entlang der Dimension-X repräsentiert, ein Feld X mit einem Bereich von 15–30. Ähnlich repräsentiert eine Seite entlang der Dimension-Y einen Bereich von Werten (oder ein Präfix) für das Feld Y. Zum Beispiel, wie in6B gezeigt, repräsentiert die Seite des Kästchens, die R2 entlang der Dimension-Y repräsentiert, das Feld Y mit einem Bereich von 20–40. Der Graph von6B kann als Baum mit Knoten und Blättern repräsentiert werden durch „Aufteilen” eines Regelplatzes, der R1 und R2 enthält, mit „Schnittlinien”, wie in6B gezeigt. -
6C zeigt einen Baum, der aus einem Aufteilen eines Regelplatzes mit R1 und R2 resultiert, wie in6B gezeigt. Der Baum hat einen Wurzelknoten (RN), Knoten (N) und Blätter (L1, L2 und L3). N zeigt zu Blättern, die die Regeln R1 und R2 repräsentieren. Das Blatt L1 zeigt zu einem Eimer, der die Regel R1 enthält; das Blatt L2 zeigt zu einem Eimer, der die Regeln R1 und R2 enthält; und das Blatt L3 zeigt zu einem Eimer, der keine Regeln enthält. -
6D zeigt für die Regel R2 den Bereich von Feld X verändert von 15–30 auf 10–30. -
6E zeigt einen Baum, der aus einem Aufteilen eines Regelplatzes mit R1 und „modifizierter” Regel R2 mit denselben Schnittlinien wie6B resultiert. Wie die6C und6E zeigen, erfordert ein Modifizieren des Felds X der Regel R2 ein Hinzufügen der Regel R2 zu dem Eimer, auf den von dem Blatt L1 gezeigt wird, und dem Eimer, auf den von dem Blatt L3 gezeigt wird. Die Regel kann zu den Eimern hinzugefügt werden, wie durch hier offenbarte Techniken beschrieben wird. -
6F zeigt für die Regel R2 den Bereich von Feld Y verändert von 20–40 auf 30–40. -
6G zeigt einen Baum, der aus einem Aufteilen eines Regelplatzes mit R1 und „modifizierter” Regel R2 mit denselben Schnittlinien wie6B resultiert. Wie die6C und6G zeigen, erfordert ein Modifizieren des Felds Y der Regel R2 ein Löschen der Regel R2 aus dem Eimer, auf den von dem Blatt L2 gezeigt wird. Die Regel kann aus dem Eimer gelöscht werden, wie durch hier offenbarte Techniken beschrieben wird. -
6H zeigt ein Ablaufdiagramm eines Verfahrens630 zum Modifizieren einer Regel gemäß einem Ausführungsbeispiel. Das Verfahren beginnt (632 ) durch Empfangen einer inkrementellen Aktualisierung für eine Regelkompilierte Datenstruktur (RCDS). Wenn die inkrementelle Aktualisierung eine Regel-Hinzufügen-Operation ist (636 ), kann die neue Regel atomar zu der Regelkompilierten Datenstruktur (RCDS) gemäß hier beschriebenen Ausführungsbeispielen hinzugefügt werden (638 ) und das Verfahren endet (662 ). Wenn die inkrementelle Aktualisierung eine Regel-Löschen-Operation ist (640 ), kann die Regel atomar aus der Regel-kompilierten Datenstruktur (RCDS) gemäß hier beschriebenen Ausführungsbeispielen gelöscht werden (638 ) und das Verfahren endet (662 ). Eine Überprüfung kann vorgenommen werden, um zu bestimmen, ob die inkrementelle Aktualisierung eine Regel-Modifizieren-Operation (644 ) ist. Ein Modifizieren der Regel kann zumindest eines umfassen aus: Modifizieren einer Priorität der Regel oder Modifizieren zumindest eines Felds der Regel. - Wenn die Regel zu modifizieren ist, kann eine Überprüfung vorgenommen werden, um zu bestimmen, ob die Regel-Priorität zu modifizieren ist (
646 ). Wenn die Priorität zu modifizieren ist, kann eine Überprüfung vorgenommen werden, um einen Priorität-Übereinstimmung-Konflikt basierend darauf zu identifizieren, dass eine Änderung der Priorität der Regel inkonsistent ist mit einer aktuellen Prioritätsreihenfolge der Regel und einer oder mehrerer anderer Regel(n) (648 ). Wenn der Priorität-Übereinstimmung-Konflikt nicht identifiziert wird, kann die Priorität der Regel atomar modifiziert werden (658 ), und das Verfahren endet (662 ). Wenn der Priorität-Übereinstimmung-Konflikt identifiziert wird, kann die Priorität der Regel und die Priorität einer anderen Regel atomar modifiziert werden (656 ). Nachdem Prioritäten der Regeln verändert wurden, können neue Abdeckungslisten erforderlich sein oder Aktualisierung für bestehende Abdeckungslisten können erforderlich sein basierend darauf, ob Regeln des Knotens andere Regeln des Knotens aufgrund der Prioritätsänderungen abdecken oder nicht. Somit können zusätzliche Aktualisierungen erforderlich sein, um abgedeckte Regeln aus dem Knoten zu entfernen oder Regeln zu dem Knoten hinzuzufügen, die aufgrund der Prioritätsänderungen aufgedeckt wurden. Eine Überprüfung kann vorgenommen werden, um zu bestimmen, ob solche zusätzlichen Aktualisierungen erforderlich sind (664 ). Wenn nicht, endet danach das Verfahren (662 ) in dem beispielhaften Ausführungsbeispiel. Wenn ja, können die zusätzlichen Aktualisierungen atomar aufgenommen werden (666 ) und das Verfahren endet danach (662 ) in dem beispielhaften Ausführungsbeispiel. Wenn die Priorität nicht modifiziert wird, kann eine Überprüfung vorgenommen werden, um zu bestimmen, ob zumindest ein Feld der Regel zu modifizieren ist (650 ). Wenn nicht, endet das Verfahren (662 ). Wenn zumindest ein Feld zu modifizieren ist, kann eine Bestimmung gemacht werden zum Identifizieren einer oder mehrerer Regel(n), die hinzuzufügen oder zu löschen ist/sind (652 ). In einigen Fällen kann ein Modifizieren eines Felds einer Regel ein Modifizieren des Felds ohne ein Hinzufügen oder Löschen von Regeln umfassen. Eine Überprüfung kann vorgenommen werden, um zu bestimmen, ob ein weiteres Feld modifiziert wird (654 ), und wiederholt werden, um die eine oder mehreren Regel(n) zu identifizieren, die hinzuzufügen oder zu löschen ist/sind (652 ). Wenn keine weiteren Felder zu modifizieren sind, kann/können die bestimmte(n) eine oder mehreren Regel(n) hinzugefügt oder gelöscht werden und das Hinzufügen oder Löschen der bestimmte(n) einen oder mehreren Regel(n) ist atomar (660 ) und das Verfahren endet (662 ). - Regeln können zu einem Eimer hinzugefügt werden, bis eine obere Grenze erreicht ist. Ein Festlegen einer Obergrenze der Anzahl von Regeln, die zu einem Eimer hinzugefügt werden können, vermeidet, dass eine Suche des Baums zu einer linearen Suche von Eimern wird. Wenn die obere Grenze erreicht ist, kann gesagt werden, dass es keinen „Platz” in einem Eimer zum Hinzufügen einer Regel gibt. Bei einem Hinzufügen einer Regel zu einem Eimer, die „passt”, hinsichtlich sowohl Platz als auch Priorität, wird die Regel einfach an das Ende des Eimers angefügt. Die Regel und ihre Priorität werden an die Regeltabelle angefügt. Eine Regel kann ihre Priorität umfassen.
- Durch Aufnehmen einer Regel-Priorität muss es nicht notwendig sein, Regeln in einem Speicher zu verschieben (bewegen), um eine spezifische Prioritätsreihenfolge zu realisieren. Gemäß einem Ausführungsbeispiel kann stattdessen die Priorität einer Regel oder von Regeln aktualisiert werden. Eine Regel-Priorität kann in Blöcken zugewiesen werden. Löcher (zum Beispiel Prioritäts-Differenz) können zwischen Regeln in einem Eimer vorhanden sein. Eine Priorität-Übereinstimmung kann basierend auf einem Bestimmen, dass Löcher vorhanden sind, bestimmt werden. Wenn eine modifizierte Priorität einer Regel in ein Prioritäts-Loch passt, muss die Priorität anderer Regeln nicht angepasst werden. Zusätzlich können Regeln, die in einem Eimer enthalten sind (entweder direkt oder indirekt über Zeiger, wie hier offenbart), eine gleiche Priorität haben, wenn die Regeln nicht für eine Übereinstimmung konkurrieren. Eine Priorität-Übereinstimmung kann bestimmt werden, auch wenn die Priorität einer Regel zu einer Priorität modifiziert wird, die dieselbe ist wie eine andere Regel in dem Eimer.
-
7 ist ein Ablaufdiagramm700 zum Hinzufügen einer Regel, die in einen Eimer passen kann. Das Verfahren beginnt (702 ) und identifiziert einen Zieleimer aus dem einen oder mehreren Eimer(n) zum Aufnehmen der neuen Regel (704 ). Eine Überprüfung wird vorgenommen, um zu bestimmen, ob es eine Platz-Übereinstimmung gibt bzw. ob Platz ist (706 ). Platz kann auf einer anpassbaren Schwelle für die Anzahl von Eimereinträgen basieren, die in einem Eimer enthalten sein können. Wenn Platz ist, wird eine Überprüfung vorgenommen, um zu bestimmen, ob es eine Priorität-Übereinstimmung gibt (708 ). Wenn Platz ist und es eine Priorität-Übereinstimmung gibt, kann die neue Regel an das Ende des Zieleimers angefügt werden. Ein Anfügen der neuen Regel an das Ende des Zieleimers nimmt eine Aktualisierung in Anspruch (710 ). Wenn kein Platz ist oder es keine Priorität-Übereinstimmung gibt, kann eine Serie von einer oder mehreren Modifikation(en) bestimmt werden (712 ) und das Verfahren endet (714 ). - Zum Beispiel wird, gemäß einem Ausführungsbeispiel, bei einem Hinzufügen einer Regel zu einem Eimer, die hinsichtlich einer Priorität nicht passt (zum Beispiel Hinzufügen der Regel an das Ende des Eimers führt zu einer falschen Prioritätsreihenfolge), ein „neuer” Eimer erzeugt. Der neue Eimer kann die Regeln aus dem „alten” Eimer umfassen und die neue Regel wird in der richtigen Prioritätsreihenfolge hinzugefügt. Die Verknüpfung von dem Baum (Blatt) zu dem alten Eimer kann durch eine neue Verknüpfung von dem Baum zu dem neuen Eimer ersetzt werden. Ein Herstellen dieser neuen Verknüpfung zu dem neuen Eimer wird in einer Aktualisierung durchgeführt (die ein Teil eines Hinzufügens eines neuen Eimers ist), um die Leistung oder aktive Suchanfragen nicht zu beeinflussen, die auf dem Baum durchgeführt werden.
-
8A ist ein Ablaufdiagramm der Serie von einer oder mehreren Modifikation(en), die bestimmt werden kann/können, gemäß einem Ausführungsbeispiel, wenn ein Hinzufügen einer Regel zu einem Eimer hinsichtlich der Priorität nicht passt. Das Verfahren (800 ) beginnt (802 ) und identifiziert einen Zieleimer aus dem einen oder mehreren Eimer(n) zum Aufnehmen der neuen Regel (804 ). Eine Überprüfung kann vorgenommen werden, ob die neue Regel hinsichtlich der Priorität passt oder nicht (816 ). Wenn die neue Regel nicht passt, kann ein neuer Eimer erzeugt werden basierend auf einem Bestimmen, dass die Priorität, die mit der neuen Regel assoziiert ist, inkonsistent ist mit einer Prioritätsreihenfolge von Regeln in dem Zieleimer (806 ). Der aktive Suchprozess wird durch den erzeugten neuen Eimer nicht beeinflusst. Der Satz von Regeln des Zieleimers kann in dem neuen Eimer aufgenommen werden (808 ). Die Reihenfolge des Satzes von Regeln und der neuen Regel kann basierend auf ansteigender oder abnehmender Prioritätsreihenfolge angepasst werden (810 ). Eine Verknüpfung eines Blatts in dem Baum kann aktualisiert werden, um das Blatt zu dem neuen Eimer zu verweisen, die Aktualisierung der Verknüpfung nimmt eine Aktualisierung in Anspruch (812 ) und das Verfahren endet (814 ). -
8B zeigt einen Baum820 mit einem Blatt822 , das zu einem Eimer824 zeigt826 . Der (alte) Eimer umfasst in abnehmender Priorität die Regeln R1, R5 und R7. -
8C zeigt, gemäß einem Ausführungsbeispiel, dass zum Hinzufügen der Regel R2832 , die eine höhere Priorität hat als Regel R7834 , ein neuer Eimer836 erzeugt wird. Die neue Eimer836 umfasst, in abnehmender Priorität, die Regeln R1, R2, R5 und R7. In einer Aktualisierung wird veranlasst, dass das Blatt zu dem neuen Eimer836 anstelle dem alten Eimer824 zeigt838 . - Wenn es keinen Platz in einem Eimer gibt, um eine Regel hinzuzufügen, gemäß einem Ausführungsbeispiel, wird ein Teilbaum erstellt, die Regel wird zu einem Eimer des Teilbaums hinzugefügt, und ein Blatt eines Baums wird aktualisiert, um zu dem Teilbaum zu zeigen.
-
9A ist ein Ablaufdiagramm eines Ausführungsbeispiels eines Verfahrens, das einen Teilbaum erstellt und atomar eine neue Regel zu dem Baum hinzufügt (900 ). Das Verfahren beginnt (902 ) und identifiziert einen Zieleimer aus dem einen oder mehreren Eimer(n), um die neue Regel aufzunehmen (904 ). Eine Überprüfung wird für eine Platz-Übereinstimmung in dem Eimer für die neue Regel vorgenommen (906 ). Ein Platzmangel in dem Zieleimer kann bestimmt werden basierend auf einer anpassbaren maximalen Anzahl von Regeln, die für den Zieleimer gesetzt ist. Wenn Platz ist, endet das Verfahren (916 ), und die Regel kann gemäß anderen hier offenbarten Ausführungsbeispielen hinzugefügt werden. Wenn kein Platz ist, kann ein Teilbaum basierend auf einem Bestimmen des Platzmangels in dem Zieleimer für die neue Regel erstellt werden, wobei der Teilbaum einen oder mehrere Knoten und Blätter umfassen kann (908 ). Der aktive Suchprozess wird durch den erstellten Teilbaum nicht beeinflusst. Die neue Regel kann zu einem oder mehreren Eimer(n) des Teilbaums hinzugefügt werden (910 ). Eine oder mehrere Regel(n) des Zieleimers kann/können zu einem oder mehreren Eimer(n) des Teilbaums hinzugefügt werden (912 ). Der Teilbaum kann mit dem Baum verknüpft werden durch Aktualisieren einer Verknüpfung eines Blatts in dem Baum, um zu dem Teilbaum zu zeigen (914 ). Zum Beispiel kann das Blatt, das eine Verknüpfung zu dem Zieleimer aus dem einen oder mehreren Eimer(n) hat, aktualisiert werden durch Zeigen des Blatts zu dem Teilbaum, dadurch Umwandeln des Blatts in einen Knoten. Die Aktualisierung der Verknüpfung nimmt eine Aktualisierung in Anspruch und die neue Regel wird atomar zu dem Baum hinzugefügt. -
9B zeigt Knoten und Blätter eines Baums. Ein Elternknoten950 zeigt zu einer Geschwisterliste952 (zum Beispiel eine Liste von Kinder), die Knoten und Blätter umfasst. Das Blatt954 zeigt956 zu einem Eimer958 mit acht Regeln (nicht gezeigt). In einem Ausführungsbeispiel ist die Anzahl von Regeln pro Eimer auf acht beschränkt. Es ist kein Platz, um eine weitere Regel (zum Beispiel eine neunte Regel) zu dem Eimer hinzuzufügen. Gemäß einem Ausführungsbeispiel wird ein Teilbaum erstellt. -
9C zeigt einen neuen erstellten Teilbaum960 gemäß einem Ausführungsbeispiel. Das Blatt954 kann zu einem Knoten umgewandelt werden durch Zeigen964 des Blatts zu einer neuen Geschwisterliste966 , die Blätter und Knoten umfassen kann. Die Regel kann zu einem oder mehreren Eimer(n)962a –b des Teilbaums960 hinzugefügt werden (zum Beispiel unter Verwendung eines der Regel-Hinzufügen-Mechanismen, die hier offenbart werden). - Ein Erstellen des Teilbaums kann mehr Zeit in Anspruch nehmen als eine Aktualisierung, hat aber keinen Einfluss auf die Leistung und/oder die Funktionalität einer Suche. Während der Teilbaum erstellt wird, sind der Teilbaum und der Baum getrennt und verschieden voneinander. Daher kann der Baum weiter durchsucht werden, ohne den Teilbaum zu durchsuchen. Sobald der Teilbaum erstellt ist, wird das Blatt aktualisiert, um zu dem Teilbaum anstelle des Eimers zu zeigen, wodurch das Blatt ein Knoten des Baums wird. Ein Aktualisieren des Blatts (was ein Teil eines Hinzufügens eines neuen Teilbaums ist) nimmt eine Aktualisierung in Anspruch und ist atomar. Da der Baum den Teilbaum nach der Aktualisierung umfasst, umfasst eine Suche des Baums die hinzugefügte Regel.
- Wie oben beschrieben, repräsentiert ein Baum einen Satz von Regeln. Bei einem Hinzufügen eines neuen „Bereichs” einer Regel zu dem Satz (zum Beispiel Schneiden bzw. Teilen von Regeln) wird ein Blatt oder in einigen Fällen ein Knoten zu dem Baum hinzugefügt. Ein Hinzufügen eines Blatts/Knotens zu einem Baum, gemäß einem Ausführungsbeispiel, umfasst ein Erzeugen einer Geschwisterliste von Knoten und Blättern, einschließlich des Blatts/Knotens, das/der hinzugefügt wird, und dann Aktualisieren eines Elternknotens, um zu der Geschwisterliste zu zeigen.
-
10A ist ein Ablaufdiagramm eines Ausführungsbeispiels eines Verfahrens zum atomaren Hinzufügen eines neuen Blatts oder eines neuen Knotens zu einem Elternknoten in dem Baum (1000 ). Der Elternknoten in dem Baum ist mit einer aktuellen Geschwisterliste verknüpft; die aktuelle Geschwisterliste kann ein Blatt oder mehrere Blätter oder einen oder mehrere Knoten umfassen (1004 ). Wenn nicht bestimmt wird, ein neues Blatt oder einen neuen Knoten zu dem Eltern hinzuzufügen, endet das Verfahren (1014 ). Eine neue Geschwisterliste kann erzeugt werden, wenn bestimmt wird, ein neues Blatt oder einen neuen Knoten hinzuzufügen, und der aktive Suchprozess wird durch die erzeugte neue Geschwisterliste nicht beeinflusst (1008 ). Das neue Blatt oder der neue Knoten kann zu der neuen Geschwisterliste hinzugefügt werden, wobei die neue Geschwisterliste die aktuelle Geschwisterliste umfassen kann (1010 ). Die neue Geschwisterliste kann in dem Baum durch Aktualisieren einer Verknüpfung des Elterns aufgenommen werden, den Elternknoten zu der neuen Geschwisterliste zu verweisen (1012 ). Die Aktualisierung der Verknüpfung nimmt eine Aktualisierung in Anspruch und das Verfahren endet (1014 ). -
10B zeigt einen Elternknoten1050 und seine Kinder, die Knoten und Blätter angeordnet in einer Geschwisterliste1052 sind, auf die durch den Knoten1050 gezeigt wird1060 . Die Blätter zeigen zu Eimern1064a –c von Regeln (nicht gezeigt). Gemäß einem Ausführungsbeispiel kann, um ein Blatt/einen Knoten zu dem Baum hinzuzufügen, eine neue Geschwisterliste mit dem hinzugefügten Blatt/Knoten erzeugt werden. -
10C zeigt, dass zum Hinzufügen eines Blatts/Knotens zu dem Baum eine neue Geschwisterliste mit dem hinzugefügten Blatt/Knoten erzeugt wird gemäß einem Ausführungsbeispiel. Sobald zum Beispiel die neue Geschwisterliste1054 erzeugt ist, wird der Elternknoten1050 aktualisiert, um zu der neuen Geschwisterliste zu zeigen1058 anstatt zu der alten Geschwisterliste1052 zu zeigen1060 . Ein neues Blatt1066 ist in der neuen Geschwisterliste1054 enthalten. Das neue Blatt1066 zeigt zu einem neuen Eimer1064d von Regeln (nicht gezeigt). Ein Aktualisieren des Elternknotens1050 , um zu der neuen Geschwisterliste1054 zu zeigen1058 , nimmt eine Aktualisierung in Anspruch und ist atomar. - Wenn ein Baum von Regeln (Knoten und Blätter) und Eimer von Regeln anfangs erzeugt werden, sind sie in einem Speicher zusammenhängend, zum Beispiel besetzen sie ein Speicherlayout beginnend an einer Speicheradresse und endend an einer anderen Speicheradresse. Im Laufe der Zeit führt ein Hinzufügen und Löschen von Regeln, wie oben beschrieben, zu „alten” Blättern und „alten” Eimern, die nicht mehr referenziert werden. Dies erzeugt „Löcher” oder „Flicken” aus ungenutztem Speicher in dem Speicherlayout. Das Speicherlayout wird als fragmentiert bezeichnet. Um diese Löcher oder Flicken in dem Speicherlayout wieder zurückzugewinnen, wird ein Defragmentierungs- oder Defrag-Mechanismus verwendet. Wie die oben beschriebenen Mechanismen einer inkrementellen Aktualisierung ist der Defrag-Mechanismus atomar und scheint eine Aktualisierung in Anspruch zu nehmen aus der Perspektive eines Suchprozessors, der eine aktive Suche durchführt.
-
11A ist ein Ablaufdiagramm eines Defragmentierungsprozesses gemäß einem Ausführungsbeispiel (1100 ). Gemäß einem Ausführungsbeispiel kann eine Defragmentierung ein Reservieren eines Teils des Speichers (zum Beispiel einen Defrag-Bereich oder zugewiesenen Bereich) für den Defragmentierungsprozess umfassen. Das Verfahren beginnt (1102 ) durch Reservieren eines Defragmentierungsteils des Speicherplatzes, wobei der Defragmentierungsteil des Speicherplatzes ein bestimmter Defragmentierungsbereich sein kann, der ein zusammenhängender Teil des Speicherplatzes ist, reserviert an einem bestimmten Bereich des Speicherplatzes (1104 ). Ein toter Bereich der Regel-kompilierten Datenstruktur (RCDS) kann identifiziert werden (1106 ). Der tote Bereich kann ein Teil des Speicherplatzes sein, der von zumindest einem nicht-referenzierten Blatt, Knoten, Eimer oder Geschwisterliste belegt ist. Ein Wiedergewinnen des toten Bereichs kann ein Verlagern eines verwendeten Teil des Speichers umfassen, wobei der verwendete Teil einen oder mehrere Knoten oder Blätter umfasst, die sich angrenzend an den toten Bereich befinden, der für den bestimmten Defragmentierungsteil identifiziert ist (1110 ). Eine neue Geschwisterliste kann zu einem wiedergewonnenen Speicherplatz verschoben werden (1112 ). Der wiedergewonnene Speicherplatz kann den identifizierten toten Bereich und den verlagerten verwendeten Teil des Speichers umfassen. Der verwendete Teil des Speichers kann aus dem Defragmentierungsbereich zu einem Endteil des Speicherplatzes verlagert werden, der für die Regel-kompilierte Datenstruktur (RCDS) reserviert ist (1114 ), und das Verfahren endet (1116 ). Die Regel-kompilierte Datenstruktur (RCDS) kann durch ein Wiedergewinnen des toten Bereichs defragmentiert werden, wobei der aktive Suchprozess durch den wiedergewonnenen toten Bereich nicht beeinflusst ist, da die Regel-kompilierte Datenstruktur (RCDS) atomar defragmentiert wird. -
11B zeigt einen Baum1150 mit drei Ebenen1152a –c, wobei jede Ebene einen oder mehrere Knoten1154a –f enthält. Jeder Knoten besetzt eine Speichereinheit. Auf Ebene eins des Baums1152a gibt es einen Knoten1154a , einen Wurzelknoten, der eine Speichereinheit besetzt. Der Elternknoten zeigt1157 zu einer Geschwisterliste1160 , die vier Knoten umfasst (1154b ). Auf der Ebene zwei des Baums gibt es vier Knoten (1154b ), Kinderknoten des Wurzelknotens, die vier Speichereinheiten besetzen. Auf der Ebene drei des Baums gibt es acht Knoten (1154c –f), Enkelknoten des Wurzelknotens, die acht Speichereinheiten besetzen. -
11C zeigt ein Hinzufügen einer Regel auf der Ebene zwei des Baums (1152b ), das gemäß einem Ausführungsbeispiel ein Erzeugen einer neuen Geschwisterliste von sechs Knoten (1170 ) umfasst, die sechs Speichereinheiten besetzen. Die neue Geschwisterliste1170 kann nicht in dem Speicherplatz erzeugt werden, der von der „alten” Ebene zwei des Baums besetzt ist (1152b ), da es nicht genügend Platz gibt, sechs Speichereinheiten sind erforderlich, aber nur vier Speichereinheiten (zusammenhängender Speicher) sind verfügbar. - Der Speicherplatz
1158 zeigt zusammenhängende Speichereinheiten1154a' –f' entsprechend den Knoten1154a –f. Der Speicherplatz1156a und1156b wird für die neue Geschwisterliste1170 zugewiesen und die Knoten-1154a -Verknüpfung wird aktualisiert derart, dass sie nicht mehr zu der alten Geschwisterliste1154b zeigt1157 , sondern zu der neuen Geschwisterliste1170 zeigt1174 , die sich in den Speichereinheiten1156a –b befindet. Die Aktualisierung der Verknüpfung nimmt eine Aktualisierung in Anspruch und ist atomar. Der Speicherplatz1154b' , der von der „alten” Ebene zwei des Baums besetzt wird, ist nun ungenutzt und stellt ein Beispiel eines „toten Bereichs” dar. - Um den toten Bereich (zum Beispiel vier Speichereinheiten in diesem Beispiel) wiederzugewinnen, kann Platz für die neue Geschwisterliste (sechs Speichereinheiten) geschaffen werden durch Verschieben, in dem Speicher, eines oder mehrerer Knoten nach dem toten Bereich (d. h. zwei Knoten auf Ebene drei des Baums
1152c , die zwei Speichereinheiten1154c' –d' besetzen) in den toten Bereich1154b' . Der Knoten wird durch Kopieren der Speichereinheit an eine andere Position und Aktualisieren der Knoten-Verknüpfung verschoben. Ein Aktualisieren der Knoten-Verknüpfung für jeden verschobenen Knoten nimmt eine Aktualisierung in Anspruch und ist atomar. Die Knoten1154e und1154f können dann durch Kopieren der Speichereinheiten1154e' –f' zu1154c' –d' und dann Aktualisieren der entsprechenden Verknüpfungen atomar in einer Aktualisierung verschoben werden. Die neue Geschwisterliste1170 kann durch Kopieren von1156a und1156b zu einer Position eines bestimmten Defragmentierungsbereichs1172 verschoben werden, zum Beispiel durch Kopieren von1156a und1156b zu1156a' und1156b' . Die Verknüpfung von1154a zu der neuen Geschwisterliste1170 kann dann in einer Aktualisierung aktualisiert werden und ist atomar. Die neue Geschwisterliste1170 , die sich nun in der Defragmentierung befindet, kann erneut verschoben werden durch Kopieren von1156a' und1156b' zu den Speichereinheiten1154e' –f' und einen erforderlichen zwei-Knoten-Teil von1156a . Die neue Geschwisterliste kann verschoben werden durch Aktualisieren der Verknüpfung des Knotens1154a , um zu der verlagerten neuen Geschwisterliste1170 zu zeigen. Somit ist der tote Bereich nun wiedergewonnen und der Speicher wird auf eine zusammenhängende Weise verwendet. Optional können der eine oder mehrere Knoten, der/die in den Defrag-Bereich verschoben wurde(n), aus dem Defrag-Bereich an das Ende des Speicher-Layouts geholt werden, das von dem Baum besetzt wird. - Gemäß einem Ausführungsbeispiel kann ein Löschen einer Regel ein für-ungültig-Erklären einer Regel in einer Regeltabelle umfassen.
-
12A ist ein Ablaufdiagramm, das ein Löschen einer Regel gemäß einem Ausführungsbeispiel darstellt (1200 ). Das Verfahren beginnt (1210 ) und bestimmt, dass eine Regel zu löschen ist (1212 ). Wenn eine Regel nicht gelöscht wird, endet das Verfahren (1220 ). Wenn die Regel gelöscht wird, wird bestimmt, die Regel für ungültig zu erklären (1214 ). Wenn die Regel nicht für ungültig erklärt wird, endet das Verfahren (1220 ). Die spezifizierte Regel in der Regel-kompilierten Datenstruktur (RCDS) wird atomar gelöscht basierend darauf, dass die inkrementelle Aktualisierung eine Löschen-Operation ist, die die Regel spezifiziert. Die Regel wird in einer Aktualisierung für ungültig erklärt durch Setzen eines gültigen Bits, das der Regel entspricht, auf ungültig. Der aktive Suchprozess überspringt die für ungültig erklärte spezifizierte Regel (1218 ) und das Verfahren endet (1220 ). -
12B zeigt eine Regeltabelle1202 mit den Regeln R1, R2, R3 und R4. Ein gültiges Bit1204 kann mit jeder der Regeln assoziiert sein. Ein Setzen des gültigen Bits einer gegebenen Regel (zum Beispiel R1) auf (I)NVALID bzw. UNGÜLTIG1206 identifiziert die Regel als eine ungültige Regel. Wenn eine Regel-Übereinstimmung-Maschine (RME – rule match engine) Regeln mit einem Schlüssel (oder anderen Daten) vergleicht, überspringt die RME die ungültige Regel und die Regel wird effektiv gelöscht. - Ein Blatt eines Baums kann einen Zeiger zu einem Eimer von Regeln (bPTR) und einen Zähler der Anzahl von Regeln in dem Eimer (nRule) umfassen. Der Zähler der Anzahl von Regeln in dem Eimer kann in dem Haushaltsführungsbaum
220 enthalten sein und durch diesen geführt werden. -
13 zeigt ein Blatt1302 mit einem Zeiger bPtr1304 zu einem Eimer und einen Regel-Zähler nRule1306 . Wenn eine Regel aus dem Eimer gelöscht wird (für ungültig erklärt wird), kann der nRule-Zähler1306 dekrementiert werden. Wenn der nRule-Zähler1306 Null erreicht, wird das Blatt als null Regeln habend betrachtet. Die bPtr1304 kann auf null gesetzt werden. - Wenn eine Baum-Durchlauf-Maschine (TWE – tree walk engine) durch einen Baum geht, überspringt die TWE ein Blatt mit einem auf null gesetzten Eimer-Zeiger (zum Beispiel zeigt das Blatt zu einem Eimer mit null Regeln). Durch Überspringen des Blatts wird ein Eimer, auf den durch dieses Blatt gezeigt wird (der Eimer, der mit dem Blatt assoziiert ist), nicht an eine Eimer-Durchlauf-Maschine (BWE – bucket walk engine) zur Verarbeitung geleitet und der Eimer kann gelöscht werden durch Setzen des Eimer-Zeigers auf null.
-
14A zeigt ein Ausführungsbeispiel zum Löschen einer Regel.14A zeigt, dass bei einem Löschen von Regeln zwei oder mehr Eimer von Regeln in einen neuen Eimer zusammengeführt werden können.14A zeigt einen Elternknoten und seine Kinder, Blätter L1 und L2, und Knoten N1 und N2. Die Kinder sind in einer Geschwisterliste1404 organisiert, auf die durch den Eltern1402 gezeigt wird1406 . Jedes der Blätter L1 und L2 zeigt zu einem Eimer1408a –b (B1 und B2) von fünf Regeln (nicht gezeigt). Eine Regel wird aus jedem Eimer gelöscht, wodurch vier Regeln in jedem Eimer verbleiben. -
14B zeigt, dass ein Zusammenführen der zwei Eimer, gemäß einem Ausführungsbeispiel, ein Erzeugen eines Eimers B'1408c mit den acht verbleibenden Regeln und ein Erzeugen eines neuen Blatts L11410 umfasst, das zu dem neuen Eimer B'1408c zeigt. Eine neue Geschwisterliste1412 einschließlich L1 wird erzeugt. Der Elternknoten1402 wird aktualisiert, um zu der neuen Geschwisterliste (L1, N1, N2)1412 anstatt zu der alten Geschwisterliste (L1, L2, N1, N2)1404 zu zeigen1414 . Ein Aktualisieren des Elternknotens nimmt eine Aktualisierung in Anspruch (die ein Teil eines Zusammenführens von Eimern ist) und ist atomar. Ein Zusammenführen von Eimern kann veranlassen, dass ein Teilbaum oder mehrere Teilbäume neu kompiliert werden, wie später im Detail beschrieben wird. -
15 ist ein Ablaufdiagramm, das ein Verfahren zum atomaren Löschen einer spezifizierten Regel aus dem Baum darstellt, wobei ein Eimereintrag eines Eimers die spezifizierte Regel umfasst (1500 ). Das Verfahren beginnt (1502 ) und der Eimer wird mit einem Blatt durch einen Blatt-Eimer-Zeiger verknüpft (1504 ). Der Eimer umfasst einen Eimereintrag, der die spezifizierte Regel ist (1506 ). Eine Überprüfung wird vorgenommen zum Löschen der spezifizierten Regel (1508 ), wenn die Regel nicht gelöscht wird, endet das Verfahren (1516 ). Wenn die spezifizierte Regel zu löschen ist, kann die spezifizierte Regel in dem Eimereintrag ungültig gemacht werden (1510 ). Eine Überprüfung kann dann vorgenommen werden, um zu bestimmen, ob alle Eimereinträge in dem Eimer ungültig sind (1512 ). Wenn der Eimer zumindest einen gültigen Eintrag enthält, endet das Verfahren (1516 ). Wenn alle Eimereinträge in dem Eimer ungültig sind, kann die Verknüpfung zu dem Eimer aktualisiert werden durch Setzen des Blatt-Eimer-Zeigers auf null (1514 ). Ein für-ungültig-Erklären der spezifizierten Regel und Aktualisieren des Blatt-Eimer-Zeigers auf null nimmt eine Aktualisierung in Anspruch. Zusätzlich kann der aktive Suchprozess einen Eimer überspringen, wenn der Blatt-Eimer-Zeiger null ist. -
16 ist ein Ablaufdiagramm gemäß einem anderen Ausführungsbeispiel eines Verfahrens zum atomaren Löschen einer spezifizierten Regel aus dem Baum, wobei ein Eimereintrag eines Eimers einen Regel-Zeiger umfasst, der zu der spezifizierten Regel zeigt (1600 ). Das Verfahren beginnt (1602 ) und der Eimer ist mit einem Blatt durch einen Blatt-Eimer-Zeiger verknüpft (1604 ). Der Eimer umfasst einen Eimereintrag, der ein Regel-Zeiger ist, der zu der spezifizierten Regel zeigt (1606 ). Eine Überprüfung wird vorgenommen zum Löschen der spezifizierten Regel (1608 ), wenn die Regel nicht gelöscht wird, endet das Verfahren (1616 ). Wenn die spezifizierte Regel zu löschen ist, wird der Regel-Zeiger auf null gesetzt (1610 ). Eine Überprüfung kann vorgenommen werden, um zu bestimmen, ob alle Eimereinträge in dem Eimer ungültig sind (1612 ). Wenn der Eimer zumindest einen gültigen Eintrag enthält, endet das Verfahren (1616 ). Wenn alle Eimereinträge in dem Eimer ungültig sind, kann die Verknüpfung zu dem Eimer aktualisiert werden durch Setzen des Blatt-Eimer-Zeigers auf null (1614 ). Ein Setzen des Regel-Zeigers auf null und ein Setzen des Blatt-Eimer-Zeigers auf null nimmt eine Aktualisierung in Anspruch, wobei der aktive Suchprozess Null-Blatt-Eimer-Zeiger überspringt und Null-Regel-Zeiger überspringt. -
17 ist ein Ablaufdiagramm gemäß einem weiteren Ausführungsbeispiel eines Verfahrens zum atomaren Löschen einer spezifizierten Regel aus dem Baum, wobei ein Eimereintrag eines Eimers einen Regel-Block-Zeiger umfasst, der zu einem Satz von einer oder mehreren Regel(n) zeigt, der die spezifizierte Regel umfasst (1700 ). Das Verfahren beginnt (1702 ) und der Eimer wird mit einem Blatt durch einen Blatt-Eimer-Zeiger verknüpft (1704 ). Der Eimer umfasst einen Eimereintrag, der ein Regel-Block-Zeiger ist, der zu einem Satz von Regeln zeigt, der die spezifizierte Regel umfasst (1706 ). Eine Überprüfung wird vorgenommen zum Löschen der spezifizierten Regel (1708 ). Wenn die Regel nicht gelöscht wird, endet das Verfahren (1720 ). Wenn die spezifizierte Regel zu löschen ist, kann die spezifizierte Regel für ungültig erklärt werden (1710 ). Eine Überprüfung kann vorgenommen werden, um zu bestimmen, ob alle Regeln in dem Satz ungültig sind (1712 ). Wenn nicht, endet das Verfahren (1720 ). Wenn alle Regeln in dem Satz ungültig sind, kann der Regel-Block-Zeiger auf null gesetzt werden (1714 ). Eine Überprüfung kann vorgenommen werden, um zu bestimmen, ob alle Eimereinträge in dem Eimer ungültig sind (1716 ). Wenn der Eimer zumindest einen gültigen Eintrag enthält, endet das Verfahren (1720 ). Wenn alle Eimereinträge in dem Eimer ungültig sind, kann die Verknüpfung zu dem Eimer aktualisiert werden durch Setzen des Blatt-Eimer-Zeigers auf null (1718 ) und das Verfahren endet (1720 ). Ein für-ungültig-Erklären der spezifizierten Regel, Setzen des Regel-Block-Zeigers auf null und Setzen des Blatt-Eimer-Zeigers auf null nimmt eine Aktualisierung in Anspruch. Der aktive Suchprozess überspringt Null-Blatt-Eimer-Zeiger, Null-Regel-Block-Zeiger, ungültige (zum Beispiel für ungültig erklärte) Regeln. - Bei einem Hinzufügen, Löschen und Modifizieren von Regeln, Knoten, wie oben beschrieben, können Knoten, Blätter und/oder Eimer eines Baums hinzugefügt, gelöscht, geteilt oder zusammengeführt werden. Der Baum kann hinsichtlich Tiefe und Speicher im Vergleich zu dem Baum, als dieser anfangs kompiliert wurde, weniger als optimal werden. Zum Beispiel kann ein Baum 100 Regeln repräsentieren. Der Baum mit 100 Regeln kann in 4 Blätter/Knoten unterteilt werden, was im Durchschnitt zu 25 Regeln pro Blatt/Knoten führt. Regeln können gelöscht werden und zwei oder mehr Eimer können zusammengeführt werden, wie in Ausführungsbeispielen hier beschrieben wird. Eine Zusammenführung kann die Anzahl von Blättern/Knoten von 4 zu 3 reduzieren und im Durchschnitt zu 33 Regeln pro Blatt/Knoten führen. Ein Teilbaum oder mehrere Teilbäume können gebildet werden. Zur „Verbesserung” des Baums, hinsichtlich Tiefe und Speicher, kann nach einem inkrementellen Aktualisieren ein Teil des Baums oder Teilbaums neu kompiliert werden.
- Ein Neukompilieren eines Teilbaums gemäß einem Ausführungsbeispiel, als „adaptive Anpassung eines Baums” bezeichnet, umfasst ein Verfolgen der Anzahl von stattfindenden Aktualisierungen mit einem Zähler an jedem Knoten des Baums. Zum Beispiel kann der Haushaltsführungsbaum
220 den Aktualisierungszähler umfassen und führen. Für einen gegebenen Knoten kann ein Verhältnis bestimmt werden aus der Anzahl von Aktualisierungen, die für den gegebenen Knoten verfolgt werden, und der Anzahl von Regeln, die durch den gegebenen Knoten repräsentiert werden. Wenn dieses Verhältnis für einen gegebenen Knoten größer ist als ein Wert (der vorkonfiguriert oder dynamisch konfiguriert sein kann, zum Beispiel durch einen Rückmeldungsmechanismus), kann ein Teilbaum des gegebenen Knotens neu kompiliert werden. -
18 ist ein Ablaufdiagramm eines Verfahrens (1800 ) für eine adaptive Anpassung des Baums gemäß einem Ausführungsbeispiel. Das Verfahren beginnt (1802 ). An jedem Knoten kann eine Gesamtanzahl von inkrementellen Aktualisierungen verfolgt werden (1804 ). Ein Verhältnis der Gesamtanzahl von inkrementellen Aktualisierungen, die für den gegebenen Knoten verfolgt werden, zu einer Anzahl von Regeln, die durch den gegebenen Knoten repräsentiert werden, kann bestimmt werden (1806 ). Eine Überprüfung kann vorgenommen werden, um zu bestimmen, ob das Verhältnis größer als die Schwelle ist. Wenn das Verhältnis kleiner oder gleich der Schwelle ist, endet das Verfahren (1816 ). Wenn das Verhältnis größer als die Schwelle ist, kann der Baum durch Neukompilieren eines Teilbaums angepasst werden (1810 ), und ein Verhältnis der Gesamtanzahl von inkrementellen Aktualisierungen, die für den gegebenen Knoten verfolgt werden, zu einer Anzahl von Regeln, die durch den gegebenen Knoten repräsentiert werden seit einer letzten Neukompilierung kann erneut bestimmt werden (1806 ) und das Verfahren kann weitergehen, wie oben beschrieben. -
19A stellt eine inkrementelle Aktualisierung gemäß einem weiteren Ausführungsbeispiel zum Hinzufügen einer Regel dar (1900 ). In dem beispielhaften Ausführungsbeispiel kann eine Regel hinzugefügt werden durch Anfügen der Regel und ihrer Priorität an die Regeltabelle, Ersetzen einer für ungültig erklärten Regel mit einer neuen Regel und Hinzufügen der Regel zu einem Eimer. Wie gezeigt, kann die inkrementelle Aktualisierung Lesen-Modifizieren-Schreiben-Operationen (RMW – read modify write) umfassen. -
19B stellt eine inkrementelle Aktualisierung gemäß einem weiteren Ausführungsbeispiel zum Aufteilen eines Blatts in einen Knoten und Blätter dar (1902 ). In dem beispielhaften Ausführungsbeispiel kann ein Aufteilen eines Blatts in einen Knoten und Blätter umfassen ein Erzeugen eines Knotens, Finden oder Erzeugen von neuen Eimern, Erzeugen eines Arrays von Blättern unter dem erzeugten Knoten, Erzeugen eines Arrays von Blatt-Indizes unter dem erzeugten Knoten und Finden oder Erzeugen eindeutiger Blätter. -
19C stellt eine inkrementelle Aktualisierung gemäß einem weiteren Ausführungsbeispiel zum Hinzufügen eines Eimers zu einem Knoten dar (1904 ). In dem beispielhaften Ausführungsbeispiel kann ein Hinzufügen eines Eimers zu einem Knoten ein Ersetzen eines Lochs in dem Knoten/Blatt-Array mit einem neuen Blatt, Ersetzen eines Lochs in dem Array von Blatt-Indizes mit einem neuen Blatt-Index, Erzeugen eines neuen Arrays, das das neue Blatt enthält, Finden oder Erzeugen eines neuen eindeutigen Blatts, Erzeugen eines neuen Arrays, das einen neuen Blatt-Index enthält, Aktualisieren des Knotens mit einer neuen Hash-Maske und Finden oder Erzeugen eines Eimers mit einer spezifizierten Regel-Liste umfassen. -
19D stellt eine inkrementelle Aktualisierung gemäß einem weiteren Ausführungsbeispiel zum Neukompilieren eines Teilbaums dar (1906 ). In dem beispielhaften Ausführungsbeispiel kann ein Neukompilieren eines Teilbaums ein Aktualisieren eines Wurzelknotens des Teilbaums, ein Aktualisieren eines Zeigers zu der Wurzel des Baums und ein Erzeugen eines Knotens und eines Arrays umfassen. -
19E stellt eine inkrementelle Aktualisierung gemäß einem weiteren Ausführungsbeispiel zum Löschen einer Regel dar (1908 ). In dem beispielhaften Ausführungsbeispiel kann ein Löschen einer Regel ein für-ungültig-Erklären einer Regel, Entfernen der Regel aus allen Eimern, die diese referenzieren können, Markieren des Blatts als leer und Verkleinern des Knoten/Blatt-Arrays umfassen. -
19F stellt eine inkrementelle Aktualisierung gemäß einem weiteren Ausführungsbeispiel zum Modifizieren einer Regel dar (1910 ). In dem beispielhaften Ausführungsbeispiel kann ein Modifizieren der Regel ein Setzen einer Regeldefinition auf einen Schnittpunkt von alten und neuen Versionen und Setzen der Regeldefinition auf die neue Version umfassen. -
19G stellt eine inkrementelle Aktualisierung gemäß einem weiteren Ausführungsbeispiel zur Defragmentierung dar (1912 ). In dem beispielhaften Ausführungsbeispiel kann eine Defragmentierung ein Kopieren eines Arrays von Knoten und Blättern, Kopieren von Arrays von Knoten und Blatt-Indizes, Aktualisieren eines Knoten-Kind-Zeigers, um auf das neue Array zu zeigen, Kopieren eines Eimers und Aktualisieren von Blättern, um zu dem neuen Eimer zu zeigen (zum Beispiel die Eimer-Kopie). - Wenn inkrementelle Aktualisierungen empfangen werden, kann der Baum basierend auf den inkrementellen Aktualisierungen modifiziert werden. Als ein Ergebnis kann die Qualität des Baums reduziert werden, da der Baum aus Speicher- oder Leistungs-Sicht ineffizient werden kann, oder eine Kombination daraus. Eine Ineffizienz des Baums kann das Ergebnis einer veränderten Form oder Tiefe des Baums aufgrund von Baum-Aktualisierungen sein. Zum Beispiel kann die Form des Baums unausgewogen werden, wie weiter unten beschrieben wird, oder der Baum kann breiter (zum Beispiel flacher) oder tiefer als notwendig sein. Eine Ineffizienz kann aus einer nicht ausreichenden Anzahl von Kinder pro Knoten resultieren. Eine nicht-ausreichende Anzahl von Kindern pro Knoten kann zu einer reduzierten Anzahl von Entscheidungsbaumpfaden und längeren Suchzeiten führen, was eine Leistung des Baums beeinflusst. Gemäß hier offenbarten Ausführungsbeispielen können Heuristiken eingesetzt werden, um zu bestimmen, wann in dem Baum neu zu kompilieren ist, und einen Abschnitt des Baums zum Neukompilieren zu identifizieren, wodurch eine Effizienz (zum Beispiel Qualität) des Baums beibehalten werden kann.
- Hier offenbarte Ausführungsbeispiele wenden Heuristiken an, um Auslösepunkte zu identifizieren, die eine Bestimmung ermöglichen, wann und wo (zum Beispiel an welchem bestimmten Knoten) in dem Baum eine Neukompilierung eine Baumeffizienz (zum Beispiel Qualität) verbessern kann. Eine Neukompilierung kann ein Neukompilieren eines Abschnitts des Baums oder sogar des gesamten Baums umfassen. Da eine Neukompilierung Rechenzeit erfordert, besteht ein Kompromiss, ob Rechenzeit geopfert wird, um eine Baumqualität zu verbessern, oder nicht.
- Zum Beispiel, an einem Extrem, kann eine Entscheidung getroffen werden, den Baum für jede empfangene inkrementelle Aktualisierung neu zu kompilieren. Ein Neukompilieren des Baums basierend auf jeder empfangenen inkrementellen Aktualisierung kann die Qualität eines Baums maximieren; jedoch kann eine solche Maximierung der Qualität auf Kosten eines Maximierens der Rechenzeit gehen. Als anderes Extrem kann eine alternative Entscheidung getroffen werden, nie neu zu kompilieren und den Baum einfach zu ändern basierend auf der inkrementellen Aktualisierung des Hinzufügens, Löschens oder Modifizierens, wie in beispielhaften Ausführungsbeispielen hier offenbart wird. Eine solche alternative Entscheidung kann eine Rechenzeit minimieren, kann aber auf Kosten eines Minimieren der Qualität des Baums gehen.
- Hier offenbarte Ausführungsbeispiele wenden Heuristiken an, um auszulösen, wann und wo in dem Baum ein Neukompilieren eine Baumqualität verbessern kann, wodurch Entscheidungen unterstützt werden, die Rechenzeit gegen eine Baumqualität abwägen (zum Beispiel, wie effizient der Baum von einer Speicher- oder Leistungs-Perspektive aus sein kann, oder eine Kombination daraus). Gemäß hier offenbarten Ausführungsbeispielen können Heuristiken eingesetzt werden, um Auslösepunkte zu identifizieren, die einen bestimmten Knoten zum Neukompilieren identifizieren und wann der bestimmte Knoten neu zu kompilieren ist.
- Zum Beispiel können Heuristiken angewendet werden, um zu bestimmen, warm und wo der Baum neu zu kompilieren ist, um die Qualität des Baums beizubehalten, durch Vorsehen einer ausgewogeneren Verteilung der Knoten und Blätter des Baums derart, dass eine Effizienz (zum Beispiel Qualität) des Baums beibehalten werden kann.
-
19H ist ein beispielhaftes Diagramm eines ausgewogenen1913 und eines nicht ausgewogenen Baums1923 . Der ausgewogene Baum1913 umfasst einen Wurzelknoten1915 , Knoten1917a und1917b , und Blätter1919a –d, die zu Eimern1921a –d zeigen. Wie in dem beispielhaften Ausführungsbeispiel gezeigt, hat der ausgewogene Baum1913 eine ausgewogene Form und Tiefe. Im Gegensatz dazu umfasst der nicht ausgewogene Baum1923 einen Wurzelknoten1925 und eine ungleichmäßige Verteilung von Knoten1927a –e und Blättern1929a –g, die zu Eimern1931a –g zeigen. Hier offenbarte Ausführungsbeispiele können einen Abschnitt des Baums identifizieren, wie den Abschnitt1933 des nicht ausgewogenen Baums1923 , um basierend auf zumindest einer Heuristik neu zu kompilieren, zur Beibehaltung der Qualität des Baums. - Die Neukompilierung kann bei einer gegebenen einen oder mehreren empfangenen inkrementellen Aktualisierung(en) ausgelöst werden. Zum Beispiel kann/können eine oder mehrere inkrementelle Aktualisierung(en)
1935 empfangen werden und bei der gegebenen inkrementellen Aktualisierung, wie einer Regel-Hinzufügen-Aktualisierung1937 , kann der Abschnitt des Baums1933 identifiziert werden und eine Neukompilierung des identifizierten Abschnitts kann basierend auf einer oder mehreren Aktualisierungen) ausgelöst werden, die für den Baum bestimmt wird/werden basierend auf der empfangenen inkrementellen Aktualisierung. - Wie hier beschrieben, können empfangene inkrementelle Aktualisierungen zu einer oder mehreren Aktualisierung(en) für den Baum führen. Zum Beispiel kann ein Hinzufügen einer Regel zu einem Blatt zu einem Umwandeln des Blatts in einen neuen Knoten führen, der mit einem oder mehreren neuen Kind(ern) verknüpft werden kann, eine Form oder Tiefe des Baums verändernd. Somit können empfangene inkrementelle Aktualisierungen eine Form oder Tiefe des Baums beeinflussen, was zu einer ungleichmäßigen Verteilung der Knoten oder Blätter des Baums führt. Gemäß hier offenbarten Ausführungsbeispielen kann zumindest eine Heuristik verwendet werden, um die Qualität des Baums beizubehalten.
- Durch eine Verwendung der zumindest einen Heuristik kann ein Abschnitt des Baums, wie der Abschnitt
1933 , neu kompiliert werden oder der gesamte Baum1923 kann neu kompiliert werden, um die Qualität des Baums beizubehalten. Es sollte angemerkt werden, dass der ausgewogene Baum1913 und der nicht-ausgewogene Baum1923 Beispiele von Baum-Formen und -Tiefen sind und dass ausgewogene und nicht-ausgewogene Bäume jede geeignete Form oder Tiefe haben können. Durch einen Einsatz von zumindest einer Heuristik, um einen Abschnitt des Baums zu identifizieren und eine Neukompilierung des identifizierten Abschnitts auszulösen, ermöglichen hier offenbarte Ausführungsbeispiele, dass die Neukompilierung vorteilhafterweise durchgeführt wird, wann und wo erforderlich, wodurch eine Entscheidung unterstützt wird, wann eine Rechenzeit zu verwenden ist, um eine Qualität (zum Beispiel Effizienz) des Baums zu verbessern. - Gemäß hier offenbarten Ausführungsbeispielen können Heuristiken angewendet werden, um zu bestimmen, wann und wo der Baum neu zu kompilieren ist, um eine Qualität des Baums beizubehalten. Hier offenbarte Ausführungsbeispiele können bestimmen, wann und wo ein Abschnitt des Baums neu zu kompilieren ist, basierend auf einer gegebenen Tiefe des Baums, Tiefen von Knoten in dem Baum, einer Anzahl von Kinder eines Knotens in dem Baum, oder anderen geeigneten Charakteristiken des Baums, die Form und Tiefe des Baums repräsentieren. Gemäß einem Ausführungsbeispiel kann eine Heuristik darauf basieren, dass ein Knoten weniger Kinder hat als eine gegebene Schwelle von Kinder.
- Eine Neukompilierung eines Knotens, der weniger als die gegebene Schwelle von Kinder hat, kann zu einer Zunahme der Anzahl von Kinder des Knotens führen, wodurch mehr Pfade vorgesehen werden, was schnellere Suchen ermöglicht und somit die Effizienz eines Baums aus einer Leistungsperspektive erhöht. Der Knoten kann weniger als die gegebene Schwelle von Kinder haben basierend auf einer inkrementeller Aktualisierung, die dazu führt, dass ein Kind des Knotens entfernt wird. Somit kann ein Zeitpunkt einer Neukompilierung sein, wenn das Kind des Knotens entfernt wird basierend auf einer gegebenen einen von einer oder mehreren empfangenen inkrementellen Aktualisierung(en). Weiter kann die Position für die Neukompilierung als ein Abschnitt des Baums mit dem Knoten und einem Teilbaum unterhalb des Knotens identifiziert werden.
- Gemäß einem weiteren hier offenbarten Ausführungsbeispiel kann zumindest eine Heuristik auf einem Schritt eines Knotens basieren. Ein Schritt (hier auch als Schrittwert bezeichnet) eines Knotens ist ein Satz von einem oder mehreren Bit(s), der zum Aufteilen des Knotens verwendet wird, wie unten beschrieben wird.
-
19I zeigt einen Knoten, der in mehrere Kinder aufgeteilt wird. Zum Beispiel kann ein Knoten1941 auf einen Satz von zwei Bits (zum Beispiel Bit 0 und Bit 1) eines Felds F11943 aufgeteilt werden, das ein zweiunddreißig-Bit-Feld sein kann, wodurch vier Kinder1947a –d erzeugt werden. Ein Schrittwert1945 für den Knoten1941 würde zwei sein. Der Kind-Knoten1947a kann auf einen Satz von drei Bits aufgeteilt werden (zum Beispiel Bit 2, Bit 3 und Bit 4) des Felds F11943 , was zu der Bildung von acht Kinder1949a –h führt. Ein Schrittwert1951 für den Kind-Knoten1947a würde drei Bits sein. Der Schrittwert des Knotens kann als zumindest eine Heuristik verwendet werden zur Beibehaltung einer Qualität des Baums, wie unten beschrieben wird. - Gemäß einem Ausführungsbeispiel kann eine Gesamtanzahl von Knoten-Aktualisierungen seit einer letzten Neukompilierung des Knotens an jedem Knoten verfolgt werden. Zum Beispiel kann ein Zähler
1953 eine Gesamtanzahl von Aktualisierungen seit einer letzten Neukompilierung des Knotens1947a verfolgen. Gemäß hier offenbarten Ausführungsbeispielen kann ein Verhältnis der Gesamtanzahl von inkrementellen Aktualisierungen, die für einen Knoten verfolgt werden, zu einer Anzahl von Regeln, die durch den Knoten repräsentiert werden bei einer letzten Neukompilierung des Knotens berechnet werden. Zum Beispiel kann ein Verhältnis der Gesamtanzahl von inkrementellen Aktualisierungen, die von dem Zähler1953 verfolgt werden, zu der Anzahl von Regeln, die durch den Knoten1947a repräsentiert werden (zum Beispiel N Regeln), berechnet werden. Gemäß hier offenbarten Ausführungsbeispielen kann eine Neukompilierung des Knotens1947a ausgelöst werden, wenn das berechnete Verhältnis größer ist als ein gegebener Aktualisierungsschwellenwert. - Gemäß einem Ausführungsbeispiel kann die gegebene Aktualisierungsschwelle basierend auf dem Schrittwert des Knotens angepasst werden. Zum Beispiel der Schrittwert
1951 des Knotens1947a . Gemäß einem weiteren Ausführungsbeispiel kann die gegebene Schwelle basierend auf der Tiefe des Knotens in dem Baum angepasst werden. Die Tiefe des Knotens kann auf einer Anzahl von Knoten basieren, die in einem direkten Pfad zwischen dem Knoten und einem Wurzelknoten des Baums enthalten sind, wobei der Wurzelknoten die Vielzahl von Regeln repräsentiert. Zum Beispiel wäre die Anzahl von Knoten, die in dem direkten Pfad zwischen dem Knoten288b und dem Wurzelknoten292 von2B enthalten ist, eins. - So kann eine Verwendung zumindest einer Heuristik ein Vergleichen des berechneten Verhältnisses mit der gegebenen Aktualisierungsschwelle umfassen, wodurch erfasst wird, ob eine Neukompilierung des Knotens und Teilbaums darunter auszulösen ist oder nicht, die Form oder Tiefe des Baums auf eine Weise verändernd, die durch die zumindest eine eingesetzte Heuristik erfasst wird.
-
19J ist ein Ablaufdiagramm eines beispielhaften Ausführungsbeispiels eines Verfahrens zum Einsetzen zumindest einer Heuristik zur Beibehaltung der Qualität eines Baums, wie eine hier beschriebene Regel-kompilierte Datenstruktur (1914 ). Das Verfahren beginnt (1916 ) und empfängt eine oder mehrere inkrementelle Aktualisierung(en) für die Regel-kompilierte Datenstruktur (RCDS), die eine Vielzahl von Regeln repräsentiert (1918 ). Die Vielzahl von Regeln kann zumindest ein Feld haben. Die RCDS kann die Vielzahl von Regeln als einen Entscheidungsbaum für eine Paketklassifizierung repräsentieren. Das Verfahren kann eine oder mehrere Aktualisierung(en) für die RCDS basierend auf der einen oder mehreren empfangenen inkrementellen Aktualisierung(en) bestimmen (1920 ). Das Verfahren kann zumindest eine Heuristik zur Beibehaltung einer RCDS-Qualität einsetzen (1922 ). Bei einer gegebenen einen der einen oder mehreren empfangenen inkrementellen Aktualisierung(en) kann das Verfahren einen Abschnitt der RCDS identifizieren (1924 ) und eine Neukompilierung des identifizierten Abschnitts basierend auf der einen oder mehreren bestimmten Aktualisierung(en) auslösen, die Form oder Tiefe der RCDS auf eine Weise verändernd, die durch die zumindest eine eingesetzte Heuristik erfasst wird (1926 ), und in dem beispielhaften Ausführungsbeispiel endet danach das Verfahren (1928 ). - Ein Beibehalten einer Qualität kann umfassen ein Ermöglichen einer ausgewogenen Form der RCDS, Erhöhen einer Anzahl von Entscheidungsbaumpfaden in der RCDS oder Steuern einer Anzahl von Entscheidungsbaumebenen in der RCDS durch Neukompilieren des identifizierten Abschnitts.
-
19K ist ein Ablaufdiagramm eines beispielhaften Ausführungsbeispiels eines weiteren Verfahrens zum Einsetzen zumindest einer Heuristik zur Beibehaltung einer Qualität eines Baums, wie eine hier beschriebene Regelkompilierte Datenstruktur (1930 ). Das Verfahren kann beginnen (1932 ) und eine Vielzahl von Knoten in der RCDS umfassen, wobei jeder Knoten einen Teilsatz der Vielzahl von Regeln in der RCDS repräsentieren kann. Das Verfahren kann eine inkrementelle Aktualisierung empfangen (1934 ). Das Verfahren kann eine oder mehrere Aktualisierung(en) basierend auf der empfangenen inkrementellen Aktualisierung bestimmen (1936 ) und die Anzahl von Kinder für einen Knoten als Ergebnis der einen oder mehreren bestimmten Aktualisierung(en) bestimmen (1938 ). Eine Überprüfung kann vorgenommen werden in Bezug darauf, ob die bestimmte Anzahl von Kinder geringer ist als eine gegebene Kindschwelle oder nicht (1940 ). Wenn nicht, endet danach das Verfahren in dem beispielhaften Ausführungsbeispiel (1944 ). Wenn ja, kann eine durch zumindest eine eingesetzte Heuristik erfasste Weise ein Identifizieren des Knotens als mit einer Anzahl von Kinder unter einem gegebenen Kindschwellenwert als Ergebnis einer Aktualisierung des identifizierten Knotens umfassen. Das Verfahren kann den identifizierten Knoten neu kompilieren, um die Anzahl von Kinder des identifizierten Knotens zu erhöhen, wodurch eine höhere Anzahl von Entscheidungsbaumpfaden in der RCDS vorgesehen ist (1942 ), und in dem beispielhaften Ausführungsbeispiel endet danach das Verfahren (1944 ). -
19L ist ein Ablaufdiagramm eines beispielhaften Ausführungsbeispiels eines weiteren Verfahrens zum Einsetzen zumindest einer Heuristik zur Beibehaltung einer Qualität eines Baums, wie eine hier beschriebene Regelkompilierte Datenstruktur (1950 ). Das Verfahren kann beginnen (1952 ) und eine Vielzahl von Knoten in der RCDS umfassen, wobei jeder Knoten einen Teilsatz der Vielzahl von Regeln in der RCDS repräsentieren kann. Das Verfahren kann eine inkrementelle Aktualisierung empfangen (1954 ). Das Verfahren kann eine oder mehrere Aktualisierung(en) basierend auf der empfangenen inkrementellen Aktualisierung bestimmen (1956 ). Das Verfahren kann eine Gesamtanzahl von Aktualisierungen eines Knotens seit einer letzten Neukompilierung des Knotens inkrementieren (1958 ). Das Verfahren kann ein Verhältnis der Gesamtanzahl von inkrementellen Aktualisierungen, die für den Knoten verfolgt werden, zu einer Anzahl von Regeln, die durch den Knoten repräsentiert werden, bei einer letzten Neukompilierung des Knotens berechnen (1960 ). Das Verfahren kann prüfen, ob das berechnete Verhältnis größer ist als ein gegebener Aktualisierungsschwellenwert (1962 ). Wenn nicht, endet in dem beispielhaften Ausführungsbeispiel danach das Verfahren (1964 ). Wenn ja, löst die durch die zumindest eine eingesetzte Heuristik erfasste Weise eine Neukompilierung des Knotens und eines Teilbaums unterhalb aus, wenn das Verhältnis größer ist als ein gegebener Aktualisierungsschwellenwert (1964 ) und das Verfahren endet danach in dem beispielhaften Ausführungsbeispiel (1966 ). -
19M ist ein Ablaufdiagramm eines beispielhaften Ausführungsbeispiels eines Verfahrens zum Verfolgen von Knotenaktualisierungen (1970 ). Das Verfahren kann beginnen (1972 ) und einen Zähler führen (1974 ). Der Zähler kann auf jede geeignete Weise implementiert werden. Zum Beispiel kann ein Zähler für jeden Knoten geführt werden durch Reservieren eines Speicherstelle, die mit jedem Knoten assoziiert ist, und Inkrementieren eines Werts, der in der Speicherstelle gespeichert ist, basierend auf einer Aktualisierung des assoziierten Knotens. Das Verfahren kann den geführten Zähler jedes Mal inkrementieren, wenn eine neue Regel zu dem Knoten hinzugefügt wird, jedes Mal, wenn eine existierende Regel in dem Knoten modifiziert wird, und jedes Mal, wenn eine existierende Regel aus dem Knoten gelöscht wird (1976 ). Eine Überprüfung kann vorgenommen werden in Bezug darauf, ob der Knoten neu kompiliert wird oder nicht (1978 ). Wenn nicht, endet in dem beispielhaften Ausführungsbeispiel danach das Verfahren (1982 ). Wenn ja, wird der geführte Zähler zurückgesetzt (1980 ) und das Verfahren endet in dem beispielhaften Ausführungsbeispiel danach (1982 ). - Gemäß hier offenbarten Ausführungsbeispielen kann die RCDS eine Vielzahl von Knoten umfassen, wobei jeder Knoten einen Teilsatz der Vielzahl von Regeln repräsentieren kann, und der identifizierte Abschnitt zum Neukompilieren kann ein Knoten aus der Vielzahl von Knoten sein, der in eine Anzahl von anderen Knoten, Blättern, oder eine Kombination daraus aufgeteilt wurde. Ein Neukompilieren kann umfassen ein Auswählen eines Felds oder mehrerer Felder des zumindest einen Felds und erneutes Aufteilen des Knotens in eine neue Anzahl von neuen anderen Knoten, neuen anderen Blättern, oder einer neuen Kombination daraus. Weiter, gemäß hier offenbarten Ausführungsbeispielen, ein Aktualisieren der RCDS auf eine Weise, die der RCDS ein Aufnehmen der einen oder mehreren bestimmten inkrementellen Aktualisierung(en) und des neu kompilierten identifizierten Abschnitts ermöglicht, atomar aus der Perspektive eines aktiven Suchprozesses unter Verwendung der RCDS für eine Paketklassifizierung.
-
20 ist ein Blockdiagramm der inneren Struktur eines Computers2000 , in dem verschiedene Ausführungsbeispiele der vorliegenden Erfindung implementiert werden können. Der Computer2000 enthält einen Systembus2479 , wobei ein Bus ein Satz von Hardware-Leitungen ist, die zur Datenübertragung zwischen den Komponenten eines Computers oder eines Verarbeitungssystems benutzt werden. Der Bus2479 ist im Wesentlichen eine gemeinsame Leitung, die verschiedene Elemente eines Computersystems (zum Beispiel Prozessor, Plattenspeicher, Speicher, Eingangs/Ausgangs-Anschlüsse, Netzwerkanschlüsse, etc.) verbindet, die die Übertragung von Information zwischen den Elementen ermöglicht. An dem Systembus2479 angefügt ist eine E/A-Vorrichtungsschnittstelle2482 zum Verbinden verschiedener Eingabe- und Ausgabevorrichtungen (zum Beispiel Tastatur, Maus, Anzeigen, Drucker, Lautsprecher, etc.) mit dem Computer2400 . Die Netzwerkschnittstelle2486 ermöglicht dem Computer2400 , mit verschiedenen anderen Vorrichtungen verbunden zu werden, die mit einem Netzwerk verbunden sind. Der Speicher2490 sieht einen flüchtigen Speicher für Computersoftwareanweisungen2492a und Daten2494a vor. Der Plattenspeicher2495 sieht einen nicht-flüchtigen Speicher für Computersoftwareanweisungen2492b und Daten2494b vor. Eine Zentralprozessoreinheit2484 ist ebenfalls mit dem Systembus2479 verbunden und sieht die Ausführung von Computeranweisungen vor. - Die Prozessor-Routinen
2492a –b und Daten2494a –b sind ein Computerprogrammprodukt, mit einem computerlesbaren Medium (zum Beispiel ein entfernbares Speichermedium, wie eine oder mehrere DVD-ROMs, CD-ROMs, Disketten, Bänder, etc.), das zumindest einen Teil der Softwareanweisungen für Ausführungsbeispiele des Erfindungssystems vorsieht. Das Computerprogrammprodukt2492a –b kann durch jedes geeignete Softwareinstallationsverfahren installiert werden, wie in der Technik weithin bekannt. In einem anderen Ausführungsbeispiel kann zumindest ein Teil der Softwareanweisungen auch über ein Kabel, Kommunikations- und/oder drahtlose Verbindung heruntergeladen werden. - Weiter können Ausführungsbeispiele der vorliegenden Erfindung in einer Vielzahl von Computerarchitekturen implementiert werden. Der Universalcomputer von
20 ist zu Zwecken der Darstellung und nicht als Einschränkung für hier offenbarte Techniken. - Während diese Erfindung insbesondere unter Bezugnahme auf ihre beispielhaften Ausführungsbeispiele gezeigt und beschrieben wurde, sollte es für Fachleute offensichtlich sein, dass verschiedene Änderungen in Form und Details darin vorgenommen werden können, ohne von dem Umfang der Erfindung abzuweichen, aufgenommen durch die angefügten Ansprüche.
- Ausführungsbeispiele können in Hardware, Firmware, Software oder jeder Kombination daraus implementiert werden. Ausführungsbeispiele können auch als Anweisungen implementiert werden, die auf einem nicht-transienten maschinenlesbaren Medium gespeichert sind, die durch ein oder mehrere Verfahren gelesen und ausgeführt werden können. Ein nicht-transientes maschinenlesbares Medium kann jeden Mechanismus zum Speichern oder Übertragen von Information in einer Form umfassen, die von einer Maschine lesbar ist (zum Beispiel eine Computervorrichtung). Zum Beispiel kann ein nicht-transitorisches maschinenlesbares Medium einen Nur-Lese-Speicher (ROM – read only memory); Direktzugriffsspeicher (RAM – random access memory); Magnetplattenspeichermedia; optische Speichermedia; Flash-Speichervorrichtungen und andere umfassen. Weiter können Firmware, Software, Routinen oder Anweisungen hier beschrieben werden als bestimmte Aktionen durchführend. Es sollte jedoch offensichtlich sein, dass solche Beschreibungen nur zur Unterstützung sind und dass derartige Aktionen tatsächlich von Computervorrichtungen, Prozessoren, Steuervorrichtungen oder anderen Vorrichtungen resultieren, die die Firmware, Software, Routinen, Anweisungen, etc. ausführen.
- Wie für Fachleute offensichtlich ist, können hier offenbarte Techniken als ein System, ein Verfahren oder ein Computerprogrammprodukt aufgenommen werden. Demgemäß können hier offenbarte Techniken die Form eines komplett-Hardware-Ausführungsbeispiels, eines komplett-Software-Ausführungsbeispiels (einschließlich Firmware, residenter Software, Mikrocode etc.) oder eines Ausführungsbeispiels haben, das Software- und Hardware-Aspekte kombiniert, die alle hier im Allgemeinen als eine „Einheit”, ein „Modul” oder „System” bezeichnet werden können.
- Es sollte offensichtlich sein, dass die Blockdiagramme mehr oder weniger Elemente umfassen können, anders angeordnet sein können, oder anders repräsentieren können. Es sollte offensichtlich sein, dass die Implementierung die Block- und Ablaufdiagramme und die Anzahl von Block- und Ablaufdiagrammen diktieren kann, die die Ausführung von hier offenbarten Techniken darstellen.
- WEITERE ZUSAMMENFASSUNG DER ERFINDUNG
-
- 1. Ein Verfahren, das aufweist: Empfangen einer oder mehrerer inkrementeller Aktualisierung(en) für eine Regelkompilierte Datenstruktur (RCDS – Rule Compiled Data Structure), die eine Vielzahl von Regeln repräsentiert, wobei die Vielzahl von Regeln zumindest ein Feld hat, wobei die RCDS die Vielzahl von Regeln als einen Entscheidungsbaum für eine Paketklassifizierung repräsentiert; Bestimmen einer oder mehrerer Aktualisierung(en) für die RCDS basierend auf der einen oder mehreren empfangenen inkrementellen Aktualisierung(en); Einsetzen zumindest einer Heuristik zur Beibehaltung einer Qualität der RCDS; und bei einer gegebenen einen der einen oder mehreren empfangenen inkrementellen Aktualisierung(en), Identifizieren eines Abschnitts der RCDS und Auslösen einer Neukompilierung des identifizierten Abschnitts basierend auf der einen oder den mehreren bestimmten Aktualisierung(en), die Form oder Tiefe der RCDS auf eine Weise verändernd, die durch die zumindest eine eingesetzte Heuristik erfasst wird.
- 2. Das Verfahren gemäß 1, wobei ein Beibehalten einer Qualität ein Ermöglichen einer ausgewogenen Form der RCDS, Erhöhen einer Anzahl von Entscheidungsbaumpfaden in der RCDS oder Steuern einer Anzahl von Entscheidungsbaumebenen in der RCDS durch Neukompilieren des identifizierten Abschnitts umfasst.
- 3. Das Verfahren gemäß 1, wobei die RCDS eine Vielzahl von Knoten umfasst, wobei jeder Knoten einen Teilsatz der Vielzahl von Regeln repräsentiert und die Weise, die durch die zumindest eine eingesetzte Heuristik erfasst wird, umfasst: Identifizieren eines Knotens der Vielzahl von Knoten, der eine Anzahl von Kindern unter einem gegebenen Kindschwellenwert hat, als ein Ergebnis einer Aktualisierung des identifizierten Knotens für die gegebene eine der einen oder mehreren empfangenen inkrementellen Aktualisierung(en), wobei der identifizierte Abschnitt der identifizierte Knoten ist; und Neukompilieren des identifizierten Knotens, um die Anzahl von Kinder des identifizierten Knotens zu erhöhen, was eine höhere Anzahl von Entscheidungsbaumpfaden in der RCDS vorsieht.
- 4. Das Verfahren gemäß 1, wobei die RCDS eine Vielzahl von Knoten umfasst, wobei jeder Knoten einen Teilsatz der Vielzahl von Regeln repräsentiert und die Weise, die durch die zumindest eine eingesetzte Heuristik erfasst wird, umfasst: an jedem Knoten, Verfolgen einer Gesamtanzahl von Knotenaktualisierungen seit einer letzten Neukompilierung des Knotens; Berechnen eines Verhältnisses der Gesamtanzahl von inkrementellen Aktualisierungen, die für den Knoten verfolgt werden, zu einer Anzahl von Regeln, die durch den Knoten bei einer letzten Neukompilierung des Knotens repräsentiert werden; und Neukompilieren des Knotens, wenn das Verhältnis größer ist als ein gegebener Aktualisierungsschwellenwert als Ergebnis einer Aktualisierung des Knotens, die durch die gegebene eine der einen oder mehreren empfangenen inkrementellen Aktualisierung(en) veranlasst wird, wobei der identifizierte Abschnitt der Knoten ist.
- 5. Das Verfahren gemäß 4, wobei das Verfolgen der Gesamtanzahl von Knotenaktualisierungen umfasst: Führen eines Zählers; Inkrementieren des geführten Zählers jedes Mal, wenn eine neue Regel zu dem Knoten hinzugefügt wird; Inkrementieren des geführten Zählers jedes Mal, wenn eine existierende Regel modifiziert oder aus dem Knoten gelöscht wird; und Zurücksetzen des geführten Zählers, wenn der Knoten neu kompiliert wird.
- 6. Das Verfahren gemäß 4, wobei jeder Knoten in eine Anzahl von Kind-Knoten auf einem oder mehreren ausgewählten Feld(ern) des zumindest einen Felds und einem oder mehreren ausgewählten Bit(s) des/der einen oder mehreren ausgewählten Feld(er) aufgeteilt wird und der Knoten einen Schrittwert umfasst, wobei der Schrittwert einen Satz von einem oder mehreren Bit(s) angibt, der zum Aufteilen des Knotens verwendet wird, und wobei der gegebene Aktualisierungsschwellenwert eine Funktion einer Anzahl des einen oder mehrerer Bits in dem Satz ist.
- 7. Das Verfahren gemäß 4, wobei der gegebene Aktualisierungsschwellenwert eine Funktion der Tiefe des Knotens ist, wobei die Tiefe des Knotens auf einer Anzahl von Knoten basiert, die in einem direkten Pfad zwischen dem Knoten und einem Wurzelknoten der RCDS enthalten sind, wobei der Wurzelknoten die Vielzahl von Regeln repräsentiert.
- 8. Das Verfahren gemäß 1, wobei die RCDS eine Vielzahl von Knoten umfasst, wobei jeder Knoten einen Teilsatz der Vielzahl von Regeln repräsentiert, und der identifizierte Abschnitt ein Knoten der Vielzahl von Knoten ist.
- 9. Das Verfahren gemäß 1, wobei der identifizierte Abschnitt die gesamte RCDS ist.
- 10. Das Verfahren gemäß 1, wobei die RCDS eine Vielzahl von Knoten umfasst, wobei jeder Knoten einen Teilsatz der Vielzahl von Regeln repräsentiert, und der identifizierte Abschnitt ein Knoten der Vielzahl von Knoten ist, der in eine Anzahl von anderen Knoten, Blättern oder eine Kombination daraus aufgeteilt wurde, und ein Neukompilieren ein Auswählen eines Felds oder mehrerer Felder des zumindest einen Felds und erneutes Aufteilen des Knotens in eine neue Anzahl von neuen anderen Knoten, neuen anderen Blättern, oder einer neuen Kombination daraus umfasst.
- 11. Das Verfahren gemäß 1, das weiter aufweist ein Aktualisieren der RCDS auf eine Weise, die der RCDS ermöglicht, die eine oder mehreren bestimmten inkrementellen Aktualisierung(en) und den neu kompilierten identifizierten Abschnitt aus der Perspektive eines aktiven Suchprozesses unter Verwendung der RCDS für eine Paketklassifizierung atomar zu integrieren.
- 12. Eine Vorrichtung, die aufweist: einen Speicher; einen Prozessor, der mit dem Speicher gekoppelt ist, wobei der Prozessor konfiguriert ist zum: Empfangen einer oder mehrerer inkrementeller Aktualisierung(en) für eine Regel-kompilierte Datenstruktur (RCDS – Rule Compiled Data Structure), die eine Vielzahl von Regeln repräsentiert, wobei die Vielzahl von Regeln zumindest ein Feld hat, wobei die RCDS die Vielzahl von Regeln als einen Entscheidungsbaum für eine Paketklassifizierung repräsentiert; Bestimmen einer oder mehrerer Aktualisierung(en) für die RCDS basierend auf der einen oder mehreren empfangenen inkrementellen Aktualisierung(en); Einsetzen zumindest einer Heuristik zur Beibehaltung einer Qualität der RCDS; und bei einer gegebenen einen der einen oder mehreren empfangenen inkrementellen Aktualisierung(en), Identifizieren eines Abschnitts der RCDS und Auslösen einer Neukompilierung des identifizierten Abschnitts basierend auf der einen oder den mehreren bestimmten Aktualisierung(en), die Form oder Tiefe der RCDS auf eine Weise verändernd, die durch die zumindest eine eingesetzte Heuristik erfasst wird.
- 13. Die Vorrichtung gemäß 12, wobei der Prozessor weiter konfiguriert ist zum Neukompilieren des identifizierten Abschnitts, dadurch Ermöglichen einer ausgewogenen Form der RCDS, Erhöhen einer Anzahl von Entscheidungsbaumpfaden in der RCDS oder Steuern einer Anzahl von Entscheidungsbaumebenen in der RCDS, um eine Qualität der RCDS beizubehalten.
- 14. Die Vorrichtung gemäß 12, wobei die RCDS eine Vielzahl von Knoten umfasst, wobei jeder Knoten einen Teilsatz der Vielzahl von Regeln repräsentiert, und um die Weise zu ermöglichen, die durch die zumindest eine eingesetzte Heuristik erfasst wird, der Prozessor weiter konfiguriert ist zum: Identifizieren eines Knotens der Vielzahl von Knoten, der eine Anzahl von Kindern unter einem gegebenen Kindschwellenwert hat, als ein Ergebnis einer Aktualisierung des identifizierten Knotens für die gegebene eine der einen oder mehreren empfangenen inkrementellen Aktualisierung(en), wobei der identifizierte Abschnitt der identifizierte Knoten ist; und Neukompilieren des identifizierten Knotens, um die Anzahl von Kinder des identifizierten Knotens zu erhöhen, was eine höhere Anzahl von Entscheidungsbaumpfaden in der RCDS vorsieht.
- 15. Die Vorrichtung gemäß 12, wobei die RCDS eine Vielzahl von Knoten umfasst, wobei jeder Knoten einen Teilsatz der Vielzahl von Regeln repräsentiert, und um die Weise zu ermöglichen, die durch die zumindest eine eingesetzte Heuristik erfasst wird, der Prozessor weiter konfiguriert ist zum: an jedem Knoten, Verfolgen einer Gesamtanzahl von Knotenaktualisierungen seit einer letzten Neukompilierung des Knotens; Berechnen eines Verhältnisses der Gesamtanzahl von inkrementellen Aktualisierungen, die für den Knoten verfolgt werden, zu einer Anzahl von Regeln, die durch den Knoten bei einer letzten Neukompilierung des Knotens repräsentiert werden; und Neukompilieren des Knotens, wenn das Verhältnis größer ist als ein gegebener Aktualisierungsschwellenwert als Ergebnis einer Aktualisierung des Knotens, die durch die gegebene eine der einen oder mehreren empfangenen inkrementellen Aktualisierung(en) veranlasst wird, wobei der identifizierte Abschnitt der Knoten ist.
- 16. Die Vorrichtung gemäß 15, wobei zum Verfolgen der Gesamtanzahl von Knotenaktualisierungen der Prozessor weiter konfiguriert ist zum: Führen eines Zählers; Inkrementieren des geführten Zählers jedes Mal, wenn eine neue Regel zu dem Knoten hinzugefügt wird; Inkrementieren des geführten Zählers jedes Mal, wenn eine existierende Regel modifiziert oder aus dem Knoten gelöscht wird; und Zurücksetzen des geführten Zählers, wenn der Knoten neu kompiliert wird.
- 17. Die Vorrichtung gemäß 15, wobei jeder Knoten in eine Anzahl von Kind-Knoten auf einem oder mehreren ausgewählten Feld(ern) des zumindest einen Felds und einem oder mehreren ausgewählten Bit(s) des/der einen oder mehreren ausgewählten Feld(er) aufgeteilt wird und der Knoten einen Schrittwert umfasst, wobei der Schrittwert einen Satz von einem oder mehreren Bit(s) angibt, der zum Aufteilen des Knotens verwendet wird, und der Prozessor weiter konfiguriert ist zum Bestimmen des gegebene Aktualisierungsschwellenwerts als eine Funktion einer Anzahl des einen oder mehrerer Bits in dem Satz.
- 18. Die Vorrichtung gemäß 15, wobei der Prozessor weiter konfiguriert ist zum Bestimmen des gegebenen Aktualisierungsschwellenwerts als eine Funktion der Tiefe des Knotens, wobei die Tiefe des Knotens auf einer Anzahl von Knoten basiert, die in einem direkten Pfad zwischen dem Knoten und einem Wurzelknoten der RCDS enthalten sind, wobei der Wurzelknoten die Vielzahl von Regeln repräsentiert.
- 19. Die Vorrichtung gemäß 15, wobei die RCDS eine Vielzahl von Knoten umfasst, wobei jeder Knoten einen Teilsatz der Vielzahl von Regeln repräsentiert, und der identifizierte Abschnitt ein Knoten der Vielzahl von Knoten ist.
- 20. Die Vorrichtung gemäß 12, wobei der identifizierte Abschnitt die gesamte RCDS ist.
- 21. Die Vorrichtung gemäß 12, wobei die RCDS eine Vielzahl von Knoten umfasst, wobei jeder Knoten einen Teilsatz der Vielzahl von Regeln repräsentiert, und der identifizierte Abschnitt ein Knoten der Vielzahl von Knoten ist, der in eine Anzahl von anderen Knoten, Blättern oder eine Kombination daraus aufgeteilt wurde, und zum Neukompilieren der Prozessor weiter konfiguriert ist zum Auswählen eines Felds oder mehrerer Felder des zumindest einen Felds und erneuten Aufteilen des Knotens in eine neue Anzahl von neuen anderen Knoten, neuen anderen Blättern, oder einer neuen Kombination daraus.
- 22. Die Vorrichtung gemäß 12, wobei der Prozessor weiter konfiguriert ist zum Aktualisieren der RCDS auf eine Weise, die der RCDS ermöglicht, die eine oder mehreren bestimmten inkrementellen Aktualisierung(en) und den neu kompilierten identifizierten Abschnitt aus der Perspektive eines aktiven Suchprozesses unter Verwendung der RCDS für eine Paketklassifizierung atomar zu integrieren.
- 23. Ein nicht-transitorisches computerlesbares Medium mit einer darauf codierten Sequenz von Anweisungen, die bei einem Laden und Ausfahren durch einen Prozessor den Prozessor veranlassen zum: Empfangen einer oder mehrerer inkrementeller Aktualisierung(en) für eine Regelkompilierte Datenstruktur (RCDS – Rule Compiled Data Structure), die eine Vielzahl von Regeln repräsentiert, wobei die Vielzahl von Regeln zumindest ein Feld hat, wobei die RCDS die Vielzahl von Regeln als einen Entscheidungsbaum für eine Paketklassifizierung repräsentiert; Bestimmen einer oder mehrerer Aktualisierung(en) für die RCDS basierend auf der einen oder mehreren empfangenen inkrementellen Aktualisierung(en); Einsetzen zumindest einer Heuristik zur Beibehaltung einer Qualität der RCDS; und bei einer gegebenen einen der einen oder mehreren empfangenen inkrementellen Aktualisierung(en), Identifizieren eines Abschnitts der RCDS und Auslösen einer Neukompilierung des identifizierten Abschnitts basierend auf der einen oder den mehreren bestimmten Aktualisierung(en), die Form oder Tiefe der RCDS auf eine Weise verändernd, die durch die zumindest eine eingesetzte Heuristik erfasst wird.
- 24. Das nicht-transitorische computerlesbare Medium gemäß 23, wobei der Prozessor weiter konfiguriert ist zum Neukompilieren des identifizierten Abschnitts, dadurch Ermöglichen einer ausgewogenen Form der RCDS, Erhöhen einer Anzahl von Entscheidungsbaumpfaden in der RCDS oder Steuern einer Anzahl von Entscheidungsbaumebenen in der RCDS, um eine Qualität der RCDS beizubehalten.
- 25. Das nicht-transitorische computerlesbare Medium gemäß 23, wobei die RCDS eine Vielzahl von Knoten umfasst, wobei jeder Knoten einen Teilsatz der Vielzahl von Regeln repräsentiert, und wobei, um die Weise zu ermöglichen, die durch die zumindest eine eingesetzte Heuristik erfasst wird, die Sequenz von Anweisungen weiter den Prozessor veranlasst zum: Identifizieren eines Knotens der Vielzahl von Knoten, der eine Anzahl von Kindern unter einem gegebenen Kindschwellenwert hat, als ein Ergebnis einer Aktualisierung des identifizierten Knotens für die gegebene eine der einen oder mehreren empfangenen inkrementellen Aktualisierung(en), wobei der identifizierte Abschnitt der identifizierte Knoten ist; und Neukompilieren des identifizierten Knotens, um die Anzahl von Kinder des identifizierten Knotens zu erhöhen, was eine höhere Anzahl von Entscheidungsbaumpfaden in der RCDS vorsieht.
- 26. Das nicht-transitorische computerlesbare Medium gemäß 23, wobei die RCDS eine Vielzahl von Knoten umfasst, wobei jeder Knoten einen Teilsatz der Vielzahl von Regeln repräsentiert, und wobei, um die Weise zu ermöglichen, die durch die zumindest eine eingesetzte Heuristik erfasst wird, die Sequenz von Anweisungen weiter den Prozessor veranlasst zum: an jedem Knoten, Verfolgen einer Gesamtanzahl von Knotenaktualisierungen seit einer letzten Neukompilierung des Knotens; Berechnen eines Verhältnisses der Gesamtanzahl von inkrementellen Aktualisierungen, die für den Knoten verfolgt werden, zu einer Anzahl von Regeln, die durch den Knoten bei einer letzten Neukompilierung des Knotens repräsentiert werden; und Neukompilieren des Knotens, wenn das Verhältnis größer ist als ein gegebener Aktualisierungsschwellenwert als Ergebnis einer Aktualisierung des Knotens, die durch die gegebene eine der einen oder mehreren empfangenen inkrementellen Aktualisierung(en) veranlasst wird, wobei der identifizierte Abschnitt der Knoten ist.
- 27. Das nicht-transitorische computerlesbare Medium gemäß 26, wobei zum Verfolgen der Gesamtanzahl von Knotenaktualisierungen die Sequenz von Anweisungen weiter den Prozessor veranlasst zum: Führen eines Zählers; Inkrementieren des geführten Zählers jedes Mal, wenn eine neue Regel zu dem Knoten hinzugefügt wird; Inkrementieren des geführten Zählers jedes Mal, wenn eine existierende Regel modifiziert oder aus dem Knoten gelöscht wird; und Zurücksetzen des geführten Zählers, wenn der Knoten neu kompiliert wird.
- 28. Das nicht-transitorische computerlesbare Medium gemäß 26, wobei jeder Knoten in eine Anzahl von Kind-Knoten auf einem oder mehreren ausgewählten Feld(ern) des zumindest einen Felds und einem oder mehreren ausgewählten Bit(s) des/der einen oder mehreren ausgewählten Feld(er) aufgeteilt wird und der Knoten einen Schrittwert umfasst, wobei der Schrittwert einen Satz von einem oder mehreren Bit(s) angibt, der zum Aufteilen des Knotens verwendet wird, und die Sequenz von Anweisungen weiter den Prozessor veranlasst zum Bestimmen des gegebene Aktualisierungsschwellenwerts als eine Funktion einer Anzahl des einen oder mehrerer Bits in dem Satz.
- 29. Das nicht-transitorische computerlesbare Medium gemäß 26, wobei die Sequenz von Anweisungen weiter den Prozessor veranlasst zum Bestimmen des gegebenen Aktualisierungsschwellenwerts als eine Funktion der Tiefe des Knotens, wobei die Tiefe des Knotens auf einer Anzahl von Knoten basiert, die in einem direkten Pfad zwischen dem Knoten und einem Wurzelknoten der RCDS enthalten sind, wobei der Wurzelknoten die Vielzahl von Regeln repräsentiert.
- 30. Das nicht-transitorische computerlesbare Medium gemäß 26, wobei die RCDS eine Vielzahl von Knoten umfasst, wobei jeder Knoten einen Teilsatz der Vielzahl von Regeln repräsentiert, und der identifizierte Abschnitt ein Knoten der Vielzahl von Knoten ist.
- 31. Das nicht-transitorische computerlesbare Medium gemäß 23, wobei der identifizierte Abschnitt die gesamte RCDS ist.
- 32. Das nicht-transitorische computerlesbare Medium gemäß 23, wobei die RCDS eine Vielzahl von Knoten umfasst, wobei jeder Knoten einen Teilsatz der Vielzahl von Regeln repräsentiert, und der identifizierte Abschnitt ein Knoten der Vielzahl von Knoten ist, der in eine Anzahl von anderen Knoten, Blättern oder eine Kombination daraus aufgeteilt wurde, und zum Neukompilieren die Sequenz von Anweisungen weiter den Prozessor veranlasst zum Auswählen eines Felds oder mehrerer Felder des zumindest einen Felds und erneuten Aufteilen des Knotens in eine neue Anzahl von neuen anderen Knoten, neuen anderen Blättern, oder einer neuen Kombination daraus.
- 33. Das nicht-transitorische computerlesbare Medium gemäß 23, wobei die Sequenz von Anweisungen weiter den Prozessor veranlasst zum Aktualisieren der RCDS auf eine Weise, die der RCDS ermöglicht, die eine oder mehreren bestimmten inkrementellen Aktualisierung(en) und den neu kompilierten identifizierten Abschnitt aus der Perspektive eines aktiven Suchprozesses unter Verwendung der RCDS für eine Paketklassifizierung atomar zu integrieren.
Claims (13)
- Ein Verfahren, das aufweist: Empfangen einer oder mehrerer inkrementeller Aktualisierung(en) für eine Regelkompilierte Datenstruktur (RCDS – Rule Compiled Data Structure), die eine Vielzahl von Regeln repräsentiert, wobei die Vielzahl von Regeln zumindest ein Feld hat, wobei die RCDS die Vielzahl von Regeln als einen Entscheidungsbaum für eine Paketklassifizierung repräsentiert; Bestimmen einer oder mehrerer Aktualisierung(en) für die RCDS basierend auf der einen oder mehreren empfangenen inkrementellen Aktualisierung(en); Einsetzen zumindest einer Heuristik zur Beibehaltung einer Qualität der RCDS; und bei einer gegebenen einen der einen oder mehreren empfangenen inkrementellen Aktualisierung(en), Identifizieren eines Abschnitts der RCDS und Auslösen einer Neukompilierung des identifizierten Abschnitts basierend auf der einen oder den mehreren bestimmten Aktualisierung(en), die Form oder Tiefe der RCDS auf eine Weise verändernd, die durch die zumindest eine eingesetzte Heuristik erfasst wird.
- Das Verfahren gemäß Anspruch 1, wobei ein Beibehalten einer Qualität ein Ermöglichen einer ausgewogenen Form der RCDS, Erhöhen einer Anzahl von Entscheidungsbaumpfaden in der RCDS oder Steuern einer Anzahl von Entscheidungsbaumebenen in der RCDS durch Neukompilieren des identifizierten Abschnitts umfasst.
- Das Verfahren gemäß Anspruch 1, wobei die RCDS eine Vielzahl von Knoten umfasst, wobei jeder Knoten einen Teilsatz der Vielzahl von Regeln repräsentiert, und die Weise, die durch die zumindest eine eingesetzte Heuristik erfasst wird, umfasst: Identifizieren eines Knotens der Vielzahl von Knoten, der eine Anzahl von Kindern unter einem gegebenen Kindschwellenwert hat, als ein Ergebnis einer Aktualisierung des identifizierten Knotens für die gegebene eine der einen oder mehreren empfangenen inkrementellen Aktualisierung(en), wobei der identifizierte Abschnitt der identifizierte Knoten ist; und Neukompilieren des identifizierten Knotens, um die Anzahl von Kinder des identifizierten Knotens zu erhöhen, was eine höhere Anzahl von Entscheidungsbaumpfaden in der RCDS vorsieht.
- Das Verfahren gemäß Anspruch 1, wobei die RCDS eine Vielzahl von Knoten umfasst, wobei jeder Knoten einen Teilsatz der Vielzahl von Regeln repräsentiert und die Weise, die durch die zumindest eine eingesetzte Heuristik erfasst wird, umfasst: an jedem Knoten, Verfolgen einer Gesamtanzahl von Knotenaktualisierungen seit einer letzten Neukompilierung des Knotens; Berechnen eines Verhältnisses der Gesamtanzahl von inkrementellen Aktualisierungen, die für den Knoten verfolgt werden, zu einer Anzahl von Regeln, die durch den Knoten bei einer letzten Neukompilierung des Knotens repräsentiert werden; und Neukompilieren des Knotens, wenn das Verhältnis größer ist als ein gegebener Aktualisierungsschwellenwert als Ergebnis einer Aktualisierung des Knotens, die durch die gegebene eine der einen oder mehreren empfangenen inkrementellen Aktualisierungen) veranlasst wird, wobei der identifizierte Abschnitt der Knoten ist.
- Das Verfahren gemäß Anspruch 4, wobei das Verfolgen der Gesamtanzahl von Knotenaktualisierungen umfasst: Führen eines Zählers; Inkrementieren des geführten Zählers jedes Mal, wenn eine neue Regel zu dem Knoten hinzugefügt wird; Inkrementieren des geführten Zählers jedes Mal, wenn eine existierende Regel modifiziert oder aus dem Knoten gelöscht wird; und Zurücksetzen des geführten Zählers, wenn der Knoten neu kompiliert wird.
- Das Verfahren gemäß Anspruch 4, wobei jeder Knoten in eine Anzahl von Kind-Knoten auf einem oder mehreren ausgewählten Feld(ern) des zumindest einen Felds und einem oder mehreren ausgewählten Bit(s) des/der einen oder mehreren ausgewählten Feld(er) aufgeteilt wird und der Knoten einen Schrittwert umfasst, wobei der Schrittwert einen Satz von einem oder mehreren Bit(s) angibt, der zum Aufteilen des Knotens verwendet wird, und wobei der gegebene Aktualisierungsschwellenwert eine Funktion einer Anzahl des einen oder mehrerer Bits in dem Satz ist.
- Das Verfahren gemäß Anspruch 4, wobei der gegebene Aktualisierungsschwellenwert eine Funktion der Tiefe des Knotens ist, wobei die Tiefe des Knotens auf einer Anzahl von Knoten basiert, die in einem direkten Pfad zwischen dem Knoten und einem Wurzelknoten der RCDS enthalten sind, wobei der Wurzelknoten die Vielzahl von Regeln repräsentiert.
- Das Verfahren gemäß Anspruch 1, wobei die RCDS eine Vielzahl von Knoten umfasst, wobei jeder Knoten einen Teilsatz der Vielzahl von Regeln repräsentiert, und der identifizierte Abschnitt ein Knoten der Vielzahl von Knoten ist.
- Das Verfahren gemäß Anspruch 1, wobei der identifizierte Abschnitt die gesamte RCDS ist.
- Das Verfahren gemäß Anspruch 1, wobei die RCDS eine Vielzahl von Knoten umfasst, wobei jeder Knoten einen Teilsatz der Vielzahl von Regeln repräsentiert, und der identifizierte Abschnitt ein Knoten der Vielzahl von Knoten ist, der in eine Anzahl von anderen Knoten, Blättern oder eine Kombination daraus aufgeteilt wurde, und ein Neukompilieren ein Auswählen eines Felds oder mehrerer Felder des zumindest einen Felds und erneutes Aufteilen des Knotens in eine neue Anzahl von neuen anderen Knoten, neuen anderen Blättern, oder einer neuen Kombination daraus umfasst.
- Das Verfahren gemäß Anspruch 1, das weiter aufweist ein Aktualisieren der RCDS auf eine Weise, die der RCDS ermöglicht, die eine oder mehreren bestimmten inkrementellen Aktualisierung(en) und den neu kompilierten identifizierten Abschnitt aus der Perspektive eines aktiven Suchprozesses unter Verwendung der RCDS für eine Paketklassifizierung atomar zu integrieren.
- Eine Vorrichtung, die aufweist: einen Speicher; einen Prozessor, der mit dem Speicher gekoppelt ist, wobei der Prozessor konfiguriert ist zum: Empfangen einer oder mehrerer inkrementeller Aktualisierung(en) für eine Regel-kompilierte Datenstruktur (RCDS – Rule Compiled Data Structure), die eine Vielzahl von Regeln repräsentiert, wobei die Vielzahl von Regeln zumindest ein Feld hat, wobei die RCDS die Vielzahl von Regeln als einen Entscheidungsbaum für eine Paketklassifizierung repräsentiert; Bestimmen einer oder mehrerer Aktualisierung(en) für die RCDS basierend auf der einen oder mehreren empfangenen inkrementellen Aktualisierung(en); Einsetzen zumindest einer Heuristik zur Beibehaltung einer Qualität der RCDS; und bei einer gegebenen einen der einen oder mehreren empfangenen inkrementellen Aktualisierung(en), Identifizieren eines Abschnitts der RCDS und Auslösen einer Neukompilierung des identifizierten Abschnitts basierend auf der einen oder den mehreren bestimmten Aktualisierung(en), die Form oder Tiefe der RCDS auf eine Weise verändernd, die durch die zumindest eine eingesetzte Heuristik erfasst wird.
- Ein nicht-transitorisches computerlesbares Medium mit einer darauf codierten Sequenz von Anweisungen, die bei einem Laden und Ausführen durch einen Prozessor den Prozessor veranlassen, das Verfahren gemäß einem der Ansprüche 1 bis 11 auszuführen.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/831,191 | 2013-03-14 | ||
US13/831,191 US10229139B2 (en) | 2011-08-02 | 2013-03-14 | Incremental update heuristics |
Publications (1)
Publication Number | Publication Date |
---|---|
DE102014001498A1 true DE102014001498A1 (de) | 2014-10-02 |
Family
ID=51519850
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE201410001498 Pending DE102014001498A1 (de) | 2013-03-14 | 2014-02-05 | Heuristiken inkrementeller Aktualisierung |
Country Status (1)
Country | Link |
---|---|
DE (1) | DE102014001498A1 (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10389744B2 (en) | 2015-03-30 | 2019-08-20 | Volkswagen Aktiengesellschaft | Attack detection method, attack detection device and bus system for a motor vehicle |
-
2014
- 2014-02-05 DE DE201410001498 patent/DE102014001498A1/de active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10389744B2 (en) | 2015-03-30 | 2019-08-20 | Volkswagen Aktiengesellschaft | Attack detection method, attack detection device and bus system for a motor vehicle |
US11063970B2 (en) | 2015-03-30 | 2021-07-13 | Volkswagen Aktiengesellschaft | Attack detection method, attack detection device and bus system for a motor vehicle |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9183244B2 (en) | Rule modification in decision trees | |
US9137340B2 (en) | Incremental update | |
US10083200B2 (en) | Batch incremental update | |
US10229139B2 (en) | Incremental update heuristics | |
US10460250B2 (en) | Scope in decision trees | |
DE10297269B4 (de) | Kennzeichnung von Paketen mit einem Nachschlageschlüssel zur leichteren Verwendung eines gemeinsamen Paketweiterleitungs-Cache | |
DE69937248T2 (de) | Routers und verfahren für optimale leitwegtabellenkomprimierung | |
DE602004011721T2 (de) | Zugriffssteurungsmechanismus für Router | |
US9432284B2 (en) | Method and apparatus for compiling search trees for processing request keys based on a key size supported by underlying processing elements | |
DE102013208431B4 (de) | Großer verteilter Switch auf Fabric-Basis unter Verwendung virtueller Switches und virtueller Steuereinheiten | |
DE102016105526A1 (de) | Schnelles mehrschichtiges Indexieren mit Unterstützung für dynamische Aktualisierung | |
DE102016104478A1 (de) | Kryptographische Verfahren, die Arbeitsnachweise in Systemen untereinander verbundener Knoten realisieren | |
DE202014010893U1 (de) | Rufwegsucher | |
DE112010003144T5 (de) | Erweiterbare Grundstruktur zur Unterstützung verschiedener Einsatzarchitekturen | |
DE102007011143A1 (de) | Ein Verfahren zum Optimieren des Leitens von Anforderungen in einem Netz | |
DE112012002624T5 (de) | Regex-Kompilierer | |
US9647947B2 (en) | Block mask register key processing by compiling data structures to traverse rules and creating a new rule set | |
US9268855B2 (en) | Processing request keys based on a key size supported by underlying processing elements | |
DE112005000705B4 (de) | Konfiguration von Umleitungstabellen | |
DE112019000421B4 (de) | Arbeitslastverwaltung mit datenzugriffserkennung in einem datenverarbeitungscluster | |
DE202014010940U1 (de) | Dynamische Shuffle-Rekonfiguration | |
DE202014010920U1 (de) | Datenverkehrsgestaltung für groß angelegte Datencenter-Netze | |
DE112020003596B4 (de) | Datenbank-Tuning unter Verwendung eines föderierten maschinellen Lernsystems eines Centerless-Netzwerks | |
DE112016003598T5 (de) | Gleichzeitige Massenverarbeitung von baumbasierten Datenstrukturen | |
DE112019005392T5 (de) | Steigern von datenleistung durch transferieren von daten zwischen speicherebenen unter verwendung von arbeitslastmerkmalen |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R081 | Change of applicant/patentee |
Owner name: MARVELL ASIA PTE, LTD., SG Free format text: FORMER OWNER: CAVIUM, INC., SAN JOSE, CALIF., US Owner name: CAVIUM, LLC (N.D.GES.D.STAATES DELAWARE), SAN , US Free format text: FORMER OWNER: CAVIUM, INC., SAN JOSE, CALIF., US |
|
R082 | Change of representative |
Representative=s name: WAGNER & GEYER PARTNERSCHAFT MBB PATENT- UND R, DE |
|
R081 | Change of applicant/patentee |
Owner name: MARVELL ASIA PTE, LTD., SG Free format text: FORMER OWNER: CAVIUM, LLC (N.D.GES.D.STAATES DELAWARE), SAN JOSE, CALIF., US |
|
R082 | Change of representative |
Representative=s name: WAGNER & GEYER PARTNERSCHAFT MBB PATENT- UND R, DE |
|
R012 | Request for examination validly filed | ||
R079 | Amendment of ipc main class |
Free format text: PREVIOUS MAIN CLASS: H04L0012753000 Ipc: H04L0045480000 |
|
R082 | Change of representative |
Representative=s name: GRUENECKER PATENT- UND RECHTSANWAELTE PARTG MB, DE |