DE102014001498A1 - Heuristiken inkrementeller Aktualisierung - Google Patents

Heuristiken inkrementeller Aktualisierung Download PDF

Info

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
Application number
DE201410001498
Other languages
English (en)
Inventor
Rajan Goyal
Kenneth A. Bullis
Satyanarayana Lakshmipathi Billa
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Marvell Asia Pte Ltd
Original Assignee
Cavium LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/831,191 external-priority patent/US10229139B2/en
Application filed by Cavium LLC filed Critical Cavium LLC
Publication of DE102014001498A1 publication Critical patent/DE102014001498A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]

Abstract

Ein System, eine Vorrichtung und ein Verfahren sind vorgesehen zum Empfangen einer oder mehrerer inkrementeller Aktualisierung(en), einschließlich Hinzufügen, Löschen oder Modifizieren von Regeln einer Regel-kompilierten Datenstruktur (RCDS – Rule Compiled Data Structure), die für eine Paketklassifizierung verwendet wird. Hier offenbarte Ausführungsbeispiele können zumindest eine Heuristik zur Beibehaltung einer Qualität der RCDS einsetzen. Bei einer gegebenen einen der einen oder mehreren empfangenen inkrementellen Aktualisierungen) kann ein Abschnitt der RCDS identifiziert werden und eine Neukompilierung des identifizierten Abschnitts kann ausgelöst werden, die Form oder Tiefe der RCDS auf eine Weise verändernd, die durch die zumindest eine eingesetzte Heuristik erfasst wird. Die zumindest eine eingesetzte Heuristik ermöglicht, dass Leistung und Funktionalität eines aktiven Suchprozesses unter Verwendung der RCDS verbessert werden durch vorteilhafterweise Bestimmen, wann und wo ein oder mehrere Abschnitte) der durchsuchten RCDS neu zu kompilieren ist/sind.

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 Blockdiagramm 100 einer typischen Netzwerktopologie mit Netzwerkelementen, die hier offenbarte Techniken einsetzen können. Die Netzwerktopologie umfasst einen Internet-Kern 102 mit einer Vielzahl von Kern-Routern 104a–h. Jeder der Vielzahl von Kern-Routern 104a–h ist mit zumindest einem anderen der Vielzahl von Kern-Routern 104a–h verbunden. Kern-Router 104a–h, die an der Kante bzw. dem Rand des Internet-Kerns 102 sind (zum Beispiel die Kern-Router 104b–e und 104h) sind mit zumindest einem Kanten-Router 106a–f gekoppelt. Jeder Kanten-Router 106a–f ist mit zumindest einem Zugangs-Router 108a–d gekoppelt.
  • Die Kern-Router 104a–h können konfiguriert sein, in dem Internet-Kern 102 oder Internet-Backbone zu arbeiten. Die Kern-Router 104a–h können konfiguriert sein, mehrere Telekommunikationsschnittstellen des Internet-Kerns 102 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-Kerns 102 angeordnet sein. Kanten-Router 106a–f können Zugangs-Router 108a–e außerhalb der Internet-Kerns 102 und Kern-Router 104a–h in dem Internet-Kern 102 überbrücken. Kanten-Router 106a–f können konfiguriert sein, ein Bridging-Protokoll zu verwenden, um Pakete von Zugangs-Routern 108a–e zu Kern-Routern 104a–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-Router 106a–f verbunden zu werden, der wiederum mit dem Internet-Kern 102 verbunden sein kann durch Verbinden mit einem der Kern-Router 104a–h. Auf diese Weise können die Kanten-Router 106a–f mit einem anderen Kanten-Router 106a–f über die Kanten-Router 106a–f und die dazwischen verbundenen Kern-Router 104a–h verbunden werden.
  • Die hier beschriebenen Prozessoren können sich in einem der Kern-Router 104a–h, Kanten-Router 106a–f und Zugangs-Router 108a–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 System 200, das eine Steuerebene-Vorrichtung 224 und eine Datenebene-Vorrichtung 226 umfasst, das eine Regel-kompilierte Datenstruktur (RCDS) 214 aus der Perspektive eines aktiven Suchprozesses 212 unter Verwendung (228) der Regel-kompilierten Datenstruktur (RCDS) 214 atomar aktualisiert.
  • Die Steuerebene-Vorrichtung 224 kann einen Steuerebene-Prozessor 202 umfassen, der ein Kompilierer-Modul 216, ein „inkrementelle Aktualisierung”-Modul 210 umfassen kann und mit einem Steuerebene-Speicher 208 gekoppelt sein kann. Der Steuerebene-Speicher 208 kann ein binäres Format eines Entscheidungsbaums 218, eines Haushaltsführungsbaums 220 und einer Änderungsliste 222 umfassen. Das Kompilierer-Modul 216 kann konfiguriert sein zum Empfangen einer Regel-Datei 230 und Kompilieren der empfangenen Regel-Datei in einen Entscheidungsbaum, wie ein binäres Format eines Entscheidungsbaums 218 (zum Beispiel eine binäre Datenstruktur).
  • 2B ist ein Blockdiagramm, das ein beispielhaftes Ausführungsbeispiel des Kompilierer-Moduls 216 zum Laden von Regeln in eine Speicherstruktur darstellt. Das Kompilierer-Modul 216 empfängt einen Regel-Satz 230. Das Kompilierer-Modul 216 erzeugt ein binäres Format von kompilierten Regeln (218). Das binäre Format der kompilierten Regeln (218) umfasst einen Baum 282, Eimer 284 und Regeln 286. Der Baum 282 umfasst Knoten 288a–d, Blattknoten 290a–b und einen Wurzelknoten 292. Jeder Blattknoten 290a–b des Baums 282 zeigt zu einem eines Satzes von Eimern 284. 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 Regeln 286 können Blöcke von Regeln 294 umfassen. Ein Block 294 (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 Blocks 294 (zum Beispiel unter Verwendung einer Hash-Funktion).
  • Das binäre Format eines Entscheidungsbaums 218 kann auf die Datenebene-Vorrichtung 206 über eine Schnittstelle 232 heruntergeladen werden. Die Schnittstelle 232 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-Prozessor 204 umfasst, der mit einem Datenebene-Speicher 236 gekoppelt ist. Das Paketverarbeitungsmodul 234 kann mit einem Klassifizierermodul 206 gekoppelt sein, das ebenfalls in der Datenebene-Vorrichtung 226 enthalten sein kann. Das Klassifizierermodul 206 kann einen Suchprozessor 238 umfassen, der mit einem Suchprozessorspeicher 240 gekoppelt sein kann. Der Datenebene-Prozessor 204 kann mit dem Suchprozessor 238 ü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 Klassifizierermodul 206 über die Schnittstelle 242 heruntergeladen werden und als die Regel-kompilierte Datenstruktur (RCDS) 214 gespeichert werden, die in dem Suchprozessorspeicher 214 enthalten sein kann. Alternativ kann das binäre Format einer Entscheidungsbaums 218 über die Schnittstelle 244 auf den Suchprozessor 238 heruntergeladen werden und als die Regel-kompilierte Datenstruktur (RCDS) 214 gespeichert werden. Die Schnittstelle 244 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”-Modul 210 kann das binäre Format eines Entscheidungsbaums 218 und eines Haushaltsführungsbaums 220 verwenden, um eine Änderungsliste 222 zum atomaren Aktualisieren der Regel-kompilierten Datenstruktur 214 erstellen. Der Haushaltsführungsbaum 220 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”-Modul 210 bestimmen, wann Regeln hinzuzufügen und zu löschen sind. Wenn zum Beispiel eine Regel zu löschen ist, kann das „inkrementelle Aktualisierung”-Modul 210 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 Suchprozessorspeicher 240 gespeichert ist. Andererseits kann es sein, dass eine Regel-kompilierte Datenstruktur (RCDS) 214 nicht gespeichert ist, da das Kompilierer-Modul 216 das binäre Format eines Entscheidungsbaums 218 nicht kompiliert hat. In diesem Fall kann das „inkrementelle Aktualisierung”-Modul 210 eine Änderungsliste 222 erstellen, die die Regel-kompilierte Datenstruktur (RCDS) 214 erstellt. Die Änderungsliste 222 kann an die Datenebene-Vorrichtung 206 über die Schnittstelle 232 kommuniziert werden und dann an den Suchprozessor 238 über die Schnittstelle 242 kommuniziert werden. Alternativ kann die Änderungsliste 222 an den Suchprozessor 238 über die Schnittstelle 244 kommuniziert werden. Die Regel-kompilierte Datenstruktur 214 kann durch einen aktiven Suchprozess 212 verwendet werden, um empfangene Pakete 246 zu klassifizieren.
  • Das Paketverarbeitungsmodul 234 kann konfiguriert sein zum Senden von Paketen 252 und Empfangen von Paketen 246. Der Datenebene-Prozessor 204 kann Such- bzw. Lookup-Anforderungen 248 an den Suchprozessor 238 senden und Ergebnisse 250 von dem Suchprozessor 238 empfangen. Der Suchprozessor 238 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 Suchprozessor 238 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 Suchprozessors 300, 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-Prozessor 204) 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-Speicher 314a–h assoziiert. Ebenfalls in 3 gezeigt, mehrere LUEs 306a–h und ihre assoziierten On-Chip-Speicher 314a–h, zusammen mit einer Crossbar-Vorrichtung 316, sind in einem Supercluster SC0 318 organisiert. Der beispielhafte Suchprozessor kann mehr als einen derartigen Supercluster haben (zum Beispiel SC0 318 und SC1 320).
  • 4 ist ein Blockdiagramm 400, das ein beispielhaftes Ausführungsbeispiel eines Suchblocks oder einer Suchgruppe bzw. Such-Clusters 410 darstellt. Um die Operation des beispielhaften Suchprozessors darzustellen, in Bezug auf 2A, umfasst die Suchgruppe 410 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 OCM 408 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üssel 402 von dem LUF 304a–b (3) an der TWE 404. Die TWE 404 gibt eine Vielzahl von Baum-Eingabe/Ausgabe(E/A bzw. I/O – input/output)-Zugriffen 406 an den OCM 408 aus und empfängt diese. Basierend auf dem Schlüssel 402 geht die TWE 404 den Baum von einem Wurzelknoten zu einem möglichen Blattknoten durch. Wenn die TWE 404 keinen geeigneten Blattknoten findet, gibt die TWE 404 ein keine-Übereinstimmung 412 aus (zum Beispiel keine-Übereinstimmung). Dann, wenn die TWE 404 einen geeigneten Blattknoten findet, kann der Blattknoten einen Zeiger 410 zu einem Eimer zeigen. Die TWE 404 liefert den Zeiger 410 zu dem Eimer an die BWE 414. Die BWE 414 greift auf den OCM 408 zu durch Ausgeben von Eimer-E/A-Zugriffen 416 auf den OCM 408. Die Eimer-E/A-Zugriffe 416 rufen zumindest einen Zeiger 418 zu einem Block zu der BWE 414 ab. Die BWE 414 liefert den Zeiger 418 zu dem Block zu einer der Vielzahl von RMEs 420a–c. Die eine der ausgewählten RMEs 420a–c empfängt auch den Schlüssel 402. Jede der Vielzahl von RMEs 420a–c ist konfiguriert zum Ausgeben von Regel- und/oder Block-E/A-Zugriffen 424 an den OCM 408 unter Verwendung des Zeigers 418 zu dem Block, um geeignete Regeln von dem Block in den OCM herunterzuladen, um den Schlüssel 402 zu analysieren. Die RMEs 420a–c analysieren dann den Schlüssel unter Verwendung der Regeln, auf die von dem OCM 408 zugegriffen wird, und geben eine Antwort oder keine-Übereinstimmung 422a–c aus entsprechend dazu, ob der Schlüssel zu der Regel oder dem Block passte, wie angegeben durch den Baum und Eimer, in dem OCM 408 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 Verfahrens 500, 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 Verfahrens 520, 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 zeigt 6B zwei Regeln, R1 und R2, als Kästchen. In der beispielhaften Darstellung von 6B hat jede Regel zwei Felder, X und Y, die in 6B 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 in 6B 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 in 6B 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 von 6B kann als Baum mit Knoten und Blättern repräsentiert werden durch „Aufteilen” eines Regelplatzes, der R1 und R2 enthält, mit „Schnittlinien”, wie in 6B gezeigt.
  • 6C zeigt einen Baum, der aus einem Aufteilen eines Regelplatzes mit R1 und R2 resultiert, wie in 6B 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 wie 6B resultiert. Wie die 6C und 6E 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 wie 6B resultiert. Wie die 6C und 6G 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 Verfahrens 630 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 Ablaufdiagramm 700 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 Baum 820 mit einem Blatt 822, das zu einem Eimer 824 zeigt 826. 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 R2 832, die eine höhere Priorität hat als Regel R7 834, ein neuer Eimer 836 erzeugt wird. Die neue Eimer 836 umfasst, in abnehmender Priorität, die Regeln R1, R2, R5 und R7. In einer Aktualisierung wird veranlasst, dass das Blatt zu dem neuen Eimer 836 anstelle dem alten Eimer 824 zeigt 838.
  • 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 Elternknoten 950 zeigt zu einer Geschwisterliste 952 (zum Beispiel eine Liste von Kinder), die Knoten und Blätter umfasst. Das Blatt 954 zeigt 956 zu einem Eimer 958 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 Teilbaum 960 gemäß einem Ausführungsbeispiel. Das Blatt 954 kann zu einem Knoten umgewandelt werden durch Zeigen 964 des Blatts zu einer neuen Geschwisterliste 966, die Blätter und Knoten umfassen kann. Die Regel kann zu einem oder mehreren Eimer(n) 962a–b des Teilbaums 960 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 Elternknoten 1050 und seine Kinder, die Knoten und Blätter angeordnet in einer Geschwisterliste 1052 sind, auf die durch den Knoten 1050 gezeigt wird 1060. Die Blätter zeigen zu Eimern 1064a–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 Geschwisterliste 1054 erzeugt ist, wird der Elternknoten 1050 aktualisiert, um zu der neuen Geschwisterliste zu zeigen 1058 anstatt zu der alten Geschwisterliste 1052 zu zeigen 1060. Ein neues Blatt 1066 ist in der neuen Geschwisterliste 1054 enthalten. Das neue Blatt 1066 zeigt zu einem neuen Eimer 1064d von Regeln (nicht gezeigt). Ein Aktualisieren des Elternknotens 1050, um zu der neuen Geschwisterliste 1054 zu zeigen 1058, 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 Baum 1150 mit drei Ebenen 1152a–c, wobei jede Ebene einen oder mehrere Knoten 1154a–f enthält. Jeder Knoten besetzt eine Speichereinheit. Auf Ebene eins des Baums 1152a gibt es einen Knoten 1154a, einen Wurzelknoten, der eine Speichereinheit besetzt. Der Elternknoten zeigt 1157 zu einer Geschwisterliste 1160, 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 Geschwisterliste 1170 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 Speichereinheiten 1154a'–f' entsprechend den Knoten 1154a–f. Der Speicherplatz 1156a und 1156b wird für die neue Geschwisterliste 1170 zugewiesen und die Knoten-1154a-Verknüpfung wird aktualisiert derart, dass sie nicht mehr zu der alten Geschwisterliste 1154b zeigt 1157, sondern zu der neuen Geschwisterliste 1170 zeigt 1174, die sich in den Speichereinheiten 1156a–b befindet. Die Aktualisierung der Verknüpfung nimmt eine Aktualisierung in Anspruch und ist atomar. Der Speicherplatz 1154b', 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 Speichereinheiten 1154c'–d' besetzen) in den toten Bereich 1154b'. 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 Knoten 1154e und 1154f können dann durch Kopieren der Speichereinheiten 1154e'–f' zu 1154c'–d' und dann Aktualisieren der entsprechenden Verknüpfungen atomar in einer Aktualisierung verschoben werden. Die neue Geschwisterliste 1170 kann durch Kopieren von 1156a und 1156b zu einer Position eines bestimmten Defragmentierungsbereichs 1172 verschoben werden, zum Beispiel durch Kopieren von 1156a und 1156b zu 1156a' und 1156b'. Die Verknüpfung von 1154a zu der neuen Geschwisterliste 1170 kann dann in einer Aktualisierung aktualisiert werden und ist atomar. Die neue Geschwisterliste 1170, die sich nun in der Defragmentierung befindet, kann erneut verschoben werden durch Kopieren von 1156a' und 1156b' zu den Speichereinheiten 1154e'–f' und einen erforderlichen zwei-Knoten-Teil von 1156a. Die neue Geschwisterliste kann verschoben werden durch Aktualisieren der Verknüpfung des Knotens 1154a, um zu der verlagerten neuen Geschwisterliste 1170 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 Regeltabelle 1202 mit den Regeln R1, R2, R3 und R4. Ein gültiges Bit 1204 kann mit jeder der Regeln assoziiert sein. Ein Setzen des gültigen Bits einer gegebenen Regel (zum Beispiel R1) auf (I)NVALID bzw. UNGÜLTIG 1206 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 Blatt 1302 mit einem Zeiger bPtr 1304 zu einem Eimer und einen Regel-Zähler nRule 1306. Wenn eine Regel aus dem Eimer gelöscht wird (für ungültig erklärt wird), kann der nRule-Zähler 1306 dekrementiert werden. Wenn der nRule-Zähler 1306 Null erreicht, wird das Blatt als null Regeln habend betrachtet. Die bPtr 1304 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 Geschwisterliste 1404 organisiert, auf die durch den Eltern 1402 gezeigt wird 1406. Jedes der Blätter L1 und L2 zeigt zu einem Eimer 1408a–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 L1 1410 umfasst, das zu dem neuen Eimer B' 1408c zeigt. Eine neue Geschwisterliste 1412 einschließlich L1 wird erzeugt. Der Elternknoten 1402 wird aktualisiert, um zu der neuen Geschwisterliste (L1, N1, N2) 1412 anstatt zu der alten Geschwisterliste (L1, L2, N1, N2) 1404 zu zeigen 1414. 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 ausgewogenen 1913 und eines nicht ausgewogenen Baums 1923. Der ausgewogene Baum 1913 umfasst einen Wurzelknoten 1915, Knoten 1917a und 1917b, und Blätter 1919a–d, die zu Eimern 1921a–d zeigen. Wie in dem beispielhaften Ausführungsbeispiel gezeigt, hat der ausgewogene Baum 1913 eine ausgewogene Form und Tiefe. Im Gegensatz dazu umfasst der nicht ausgewogene Baum 1923 einen Wurzelknoten 1925 und eine ungleichmäßige Verteilung von Knoten 1927a–e und Blättern 1929a–g, die zu Eimern 1931a–g zeigen. Hier offenbarte Ausführungsbeispiele können einen Abschnitt des Baums identifizieren, wie den Abschnitt 1933 des nicht ausgewogenen Baums 1923, 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-Aktualisierung 1937, kann der Abschnitt des Baums 1933 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 Baum 1923 kann neu kompiliert werden, um die Qualität des Baums beizubehalten. Es sollte angemerkt werden, dass der ausgewogene Baum 1913 und der nicht-ausgewogene Baum 1923 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 Knoten 1941 auf einen Satz von zwei Bits (zum Beispiel Bit 0 und Bit 1) eines Felds F1 1943 aufgeteilt werden, das ein zweiunddreißig-Bit-Feld sein kann, wodurch vier Kinder 1947a–d erzeugt werden. Ein Schrittwert 1945 für den Knoten 1941 würde zwei sein. Der Kind-Knoten 1947a kann auf einen Satz von drei Bits aufgeteilt werden (zum Beispiel Bit 2, Bit 3 und Bit 4) des Felds F1 1943, was zu der Bildung von acht Kinder 1949a–h führt. Ein Schrittwert 1951 für den Kind-Knoten 1947a 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 Knotens 1947a 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ähler 1953 verfolgt werden, zu der Anzahl von Regeln, die durch den Knoten 1947a repräsentiert werden (zum Beispiel N Regeln), berechnet werden. Gemäß hier offenbarten Ausführungsbeispielen kann eine Neukompilierung des Knotens 1947a 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 Knotens 1947a. 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 Knoten 288b und dem Wurzelknoten 292 von 2B 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 Computers 2000, in dem verschiedene Ausführungsbeispiele der vorliegenden Erfindung implementiert werden können. Der Computer 2000 enthält einen Systembus 2479, wobei ein Bus ein Satz von Hardware-Leitungen ist, die zur Datenübertragung zwischen den Komponenten eines Computers oder eines Verarbeitungssystems benutzt werden. Der Bus 2479 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 Systembus 2479 angefügt ist eine E/A-Vorrichtungsschnittstelle 2482 zum Verbinden verschiedener Eingabe- und Ausgabevorrichtungen (zum Beispiel Tastatur, Maus, Anzeigen, Drucker, Lautsprecher, etc.) mit dem Computer 2400. Die Netzwerkschnittstelle 2486 ermöglicht dem Computer 2400, mit verschiedenen anderen Vorrichtungen verbunden zu werden, die mit einem Netzwerk verbunden sind. Der Speicher 2490 sieht einen flüchtigen Speicher für Computersoftwareanweisungen 2492a und Daten 2494a vor. Der Plattenspeicher 2495 sieht einen nicht-flüchtigen Speicher für Computersoftwareanweisungen 2492b und Daten 2494b vor. Eine Zentralprozessoreinheit 2484 ist ebenfalls mit dem Systembus 2479 verbunden und sieht die Ausführung von Computeranweisungen vor.
  • Die Prozessor-Routinen 2492a–b und Daten 2494a–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 Computerprogrammprodukt 2492a–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)

  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äß 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. Das Verfahren gemäß Anspruch 1, wobei der identifizierte Abschnitt die gesamte RCDS ist.
  10. 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.
  11. 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.
  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. 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.
DE201410001498 2013-03-14 2014-02-05 Heuristiken inkrementeller Aktualisierung Pending DE102014001498A1 (de)

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)

* Cited by examiner, † Cited by third party
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

Cited By (2)

* Cited by examiner, † Cited by third party
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