DE69829645T2 - Verfahren zur Änderung von dynamischen Entscheidungsbäume - Google Patents

Verfahren zur Änderung von dynamischen Entscheidungsbäume Download PDF

Info

Publication number
DE69829645T2
DE69829645T2 DE69829645T DE69829645T DE69829645T2 DE 69829645 T2 DE69829645 T2 DE 69829645T2 DE 69829645 T DE69829645 T DE 69829645T DE 69829645 T DE69829645 T DE 69829645T DE 69829645 T2 DE69829645 T2 DE 69829645T2
Authority
DE
Germany
Prior art keywords
node
tree
rule
nodes
new
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69829645T
Other languages
English (en)
Other versions
DE69829645D1 (de
Inventor
Aled Justin Edwards
Costas Calamvokis
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Application granted granted Critical
Publication of DE69829645D1 publication Critical patent/DE69829645D1/de
Publication of DE69829645T2 publication Critical patent/DE69829645T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q3/00Selecting arrangements
    • H04Q3/64Distributing or queueing
    • H04Q3/66Traffic distributors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0817Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/12Network monitoring probes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13056Routines, finite state machines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13109Initializing, personal profile
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13196Connection circuit/link/trunk/junction, bridge, router, gateway

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

  • Technisches Gebiet
  • Diese Erfindung bezieht sich auf ein Verfahren und eine Vorrichtung zum Ändern dynamischer Entscheidungsbäume, z.B. zur Verwendung bei Schaltern (z.B. Zentralstationen bzw. Hubs und Routern), die zum Lenken von Datenpaketen in paketbasierten Datenkommunikationsnetzwerken verwendet werden, oder bei Überwachungssonden zum Sammeln von Daten über eine Funktionsweise derartiger Netzwerke.
  • Stand der Technik
  • Große Datenkommunikationsnetzwerke mit hoher Kapazität, z.B. das Internet, beruhen üblicherweise auf Paketvermittlungstechniken. Bei derartigen Techniken werden zu kommunizierende Daten in Blöcke aufgeteilt, von denen jeder mit einem Anfangsblock kombiniert wird, um ein Datenpaket zu bilden. Beispielsweise umfasst der Anfangsblock Informationen, die die jeweilige Kommunikationstransaktion, auf die sich das Paket bezieht, identifizieren, und Weiterleitungs- bzw. Routinginformationen, die den Absender und den beabsichtigten Empfänger der Daten identifizieren. Jedes Paket wird zwischen Paketvermittlungsvorrichtungen, z.B. Hubs und Routern, die den Anfangsblock des Pakets untersuchen und die Routinginformationen in Verbindung mit Daten über den aktuellen Betriebsstatus des Netzwerks verwenden, um einen Übertragungspfad auszuwählen, entlang dessen das Paket zu seinem endgültigen Zielort weitergeleitet werden soll, durch das Netzwerk übertragen.
  • Mit zunehmender Nachfrage nach einer neuen und qualitativ hochwertigeren Datenübertragung steigt auch das Erfordernis schnellerer und gleichzeitig flexiblerer Paketvermittlungsvorrichtungen. Eine Technik, die bei Paketvermittlungsein richtungen zum Untersuchen von Paketanfangsblöcken und Treffen von Weiterleitungsentscheidungen verwendet wird, stützt sich auf die Verwendung von Datenstrukturen, die oft als Entscheidungsbäume bezeichnet werden (obwohl sie formaler als gerichtete azyklische Graphen beschrieben werden). Ein Beispiel der Verwendung dieser Technik ist in der US-Patentschrift Nr. 5,574,910 beschrieben, wo jeder nicht-endgültige Knoten eines binären Entscheidungsbaums eine Bandbreite von Werten eines „Schlüssels" (z.B. eines bestimmten Feldes eines Paketanfangsblockes) darstellt, wobei der linke Tochterknoten dieses Knotens einen niedrigeren Teil des Wertebereichs und der rechte Tochterknoten den oberen Teil des Wertebereichs darstellt. Knoten können zu dem Entscheidungsbaum hinzugefügt und aus demselben gelöscht werden.
  • Derzeitige Implementierungen von Entscheidungsbäumen weisen verschiedene Nachteile auf. Beispielsweise wird ein vollständiger Baum üblicherweise in einem einzigen Vorgang aus einem Regelsatz entwickelt, der definiert, wie Pakete weitergeleitet werden sollen; somit beinhaltet sogar eine einzelne, triviale Änderung der Regeln eine Erstellung eines vollständigen neuen Baums. Wenn dieser Baum einen vorhandenen Baum in einer Paketvermittlungseinrichtung ersetzen soll, muss die Vermittlungseinrichtung vorübergehend deaktiviert werden (oder ankommende Pakete müssen zumindest gepuffert werden), während die Baumersetzung stattfindet, um zu vermeiden, dass sich die Ersetzung auf ein Paket auswirkt, für das Weiterleitungsentscheidungen, die den Baum verwenden, bereits im Gange sind. Dies verringert einerseits den Durchsatz der Paketvermittlungseinrichtung und erhöht andererseits deren Komplexität und Kosten. Alternativ dazu können zwei Kopien des gesamten Entscheidungsbaums aufrechterhalten werden – eine Aktive für Weiterleitungspakete und eine Inaktive, die auf sichere Weise modifiziert werden kann; wenn die Modifikationen abgeschlossen sind, wird der aktive Baum inaktiv gemacht, und umgekehrt. Obwohl ein derartiges „Doppelpuffern" eine Verringerung des Durch satzes der Vermittlungseinrichtung vermeidet, beinhaltet es eine kostspielige Vervielfältigung bzw. Duplikation von Hochgeschwindigkeitsspeicher, der üblicherweise zum Speichern von Entscheidungsbäumen verwendet wird.
  • Es wäre äußerst wünschenswert, ein Entscheidungsbaumsystem zu haben, das ermöglicht, ansprechend auf Veränderungen der zugeordneten Weiterleitungsregeln an dem Entscheidungsbaum inkrementale Veränderungen durchzuführen. Zudem ist es wünschenswert, dass derartige Veränderungen durchgeführt werden, ohne den Betrieb der Paketvermittlungseinrichtung mehr als nur momentan zu stören, und dass sie ohne jegliches Erfordernis, ankommende Pakete zu puffern, durchgeführt werden.
  • Eine Aufgabe dieser Erfindung besteht darin, ein Verfahren zu schaffen, das die Verwendung von Entscheidungsbäumen erleichtert.
  • Offenbarung der Erfindung
  • Gemäß einem Aspekt dieser Erfindung ist ein Verfahren zum Ändern eines dynamischen Entscheidungsbaumes, der in einem Vorrichtungsspeicher (26) gespeichert ist und Knoten (A, B, C, D) enthält, von einer Erster-Knoten-Konfiguration zu einer Zweiter-Knoten-Konfiguration vorgesehen; wobei das Verfahren folgende Schritte umfasst:
    • (a) Identifizieren einer Stelle in dem Entscheidungsbaum, an der zumindest ein neuer Knoten (Cb2, 52) eingefügt werden soll;
    • (b) Einfügen, an dieser Stelle, eines temporären Knotens (58), der einen ersten und einen zweiten Zustand aufweist, wobei der erste Zustand die vorhandene Konfiguration des Baums unverändert lässt, und wobei der temporäre Knoten anfänglich in dem ersten Zustand ist;
    • (c) Einfügen des zumindest einen neuen Knotens (Cb2, 52), der von dem temporären Knoten (58) abhängen soll und nur dann in den Baum eingekoppelt wird, wenn sich der temporäre Knoten (58) in dem zweiten Zustand befindet;
    • (d) Wiederholen der Schritte (a), (b) und (c) für jegliche zusätzliche neue Knoten (Ca2, 54), die eingefügt werden sollen; und
    • (e) gleichzeitiges Ändern jedes temporären Knotens (56, 58) von seinem ersten zu seinem zweiten Zustand.
  • Die vorliegende Erfindung umfasst auch eine Vorrichtung zum Ausführen des obigen Verfahrens.
  • Kurze Beschreibung der Zeichnungen
  • Unter Bezugnahme auf die beiliegenden Zeichnungen werden nun beispielhaft ein Verfahren und eine Vorrichtung zum Ändern dynamischer Entscheidungsbäume gemäß dieser Erfindung in einer Datenpaketvermittlungseinrichtung beschrieben. Es zeigen:
  • 1 ein Blockschemabild einer Datenpaketvermittlungseinrichtung;
  • 2 ein Blockschemabild einer in die Paketvermittlungseinrichtung der 1 integrierten Entscheidungsbaumverwaltungseinrichtung;
  • 3a bis 3g einen einfachen Entscheidungsbaum und Schritte, die an einem Modifizieren desselben beteiligt sind;
  • 4 ein Flussdiagramm, das die Hauptschritte in einer rekursiven Prozedur zum Verwalten von Änderungen an einem dynamischen Entscheidungsbaum veranschaulicht; und
  • 5 bis 14 Schritte, die an einem Verwalten von Änderungen an einem dynamischen Entscheidungsbaum beteiligt sind.
  • Bester Modus zum Ausführen der Erfindung & industrielle Anwendbarkeit
  • Unter Bezugnahme auf 1 weist eine Paketvermittlungseinrichtung 10 mehrere Schnittstellen 12 zum Verbinden der Vermittlungseinrichtung mit physischen Netzwerkmedien (z.B. einem paarverseilten Kabel, einem Koaxialkabel oder einem Lichtwellenleiter) auf, die Datenpakete gemäß relevanten Standardprotokollen (z.B. gemäß 100Base-T Fast Ethernet, 100VG-AnyLAN oder FDDI) tragen. Jede Schnittstelle weist eine zugeordnete Tor-ASIC (ASIC = application specific integrated circuit, anwendungsspezifische integrierte Schaltung) 14 zum Steuern des Flusses von Paketen in und aus der Schnittstelle gemäß bekannten Prinzipien auf.
  • Die Tor-ASICs 14 sind durch einen Bus 16 miteinander und mit einer Paketklassifizierungseinrichtung 18 gekoppelt, die Pakete gemäß in deren Anfangsblöcken enthaltenen Informationen „klassifiziert" und sie entsprechend von der Schnittstelle, an der sie empfangen wurden, zur weiteren Übertragung entsprechend an eine oder mehrere andere Schnittstellen weiterleitet. Zu diesem Zweck beinhaltet die Paketklassifizierungseinrichtung 18 eine Entscheidungsbaumverwaltungseinrichtung 20, die einen Speicher zum Speichern eines Entscheidungsbaums und eine Schaltungsanordnung zum Verwenden desselben enthält, um aus Paketanfangsblockinformationen zu ermitteln, wie Pakete weitergeleitet werden sollen. Die Ergebnisse dieses Bestimmens werden vorübergehend in Ausgangsregistern 22 in der Paketklassifizierungseinrichtung 18 gespeichert, und der Inhalt dieser Register 22 wird wiederum über den Bus 16 an die Tor-ASICs 14 geliefert, um die Aktionen bzw. Handlungen der Tor-ASICs 14 zu steuern und dadurch zu bewirken, dass die Pakete nach Bedarf weitergeleitet werden. Die Paketklassifizierungseinrichtung 18 ist mit einem Prozessor oder einer CPU 24 verbunden, der bzw. die Überwachungssoftwareprogrammanweisungen ausführt, um den Gesamtbetrieb der Paketvermittlungseinrichtung 10 zu steuern, und insbesondere, um den Betrieb der Entscheidungsbaumverwaltungseinrichtung 20 zu steuern, um ihre Entscheidungsbäume zu erstellen und zu modifizieren. Die CPU weist einen zugeordneten Direktzugriffsspeicher (RAM) 26 auf, der diese Überwachungsprogrammanweisungen und ferner bestimmte Datenposten (nachfolgend beschrieben), die sich auf die Struktur und Verwaltung der Entscheidungsbäume beziehen, speichert.
  • Die hierin zu beschreibenden Entscheidungsbäume sind, formeller ausgedrückt, ordnungsgemäß als gerichtete azyklische Graphen beschrieben. Trotzdem verbreitete sich der Begriff „Entscheidungsbaum" in der Technik, um auf derartige Graphen Bezug zu nehmen, und somit wird er in diesem Dokument verwendet.
  • Unter Bezugnahme auf 2 enthält die Entscheidungsbaumverwaltungseinrichtung 20 eine oder mehrere Nachschlageinheiten 28, die über eine FIFO-Einheit (FIFO = first-in first-out) Pakete von dem Bus 16 empfangen. Diese Nachschlageinheiten lesen Anweisungen aus dem Entscheidungsbaum, implementieren die Anweisung (z.B. durch Lesen weiterer Teile des ankommenden Pakets aus der FIFO 30, durch Vergleichen dieser Teile mit Testwerten und/oder durch Einstellen der Ausgangsregister 22) und verzweigen sich anschließend zu einer weiteren Anweisung in dem Entscheidungsbaum. Die Nachschlageinheiten 28 greifen über eine Speichersteuerung 32, die mit der CPU 24 und mit einem Baumspeicher gekoppelt ist, der die zwei folgenden Teile aufweist, auf den Entscheidungsbaum zu: einen schnellen RAM-Speicher 34, der mit der Entscheidungsbaumverwaltungs einrichtung 20 integriert ist, und einen langsameren RAM-Speicher 36 in einer mit der Entscheidungsbaumverwaltungseinrichtung 20 gekoppelten separaten Einheit.
  • Es gibt verschiedene Arten von Anweisungen in dem Entscheidungsbaum:
    • – Verzweigung ist der Hauptanweisungstyp. Dieser kann eine variable Anzahl von Bits aus dem ankommenden Paket (oder aus anderen Quellen) lesen und verwendet den Wert, den er gelesen hat, um in eine angehängte Tabelle zu indexieren oder zu hashen, um eine weitere Anweisung zu finden. Verzweigungen können Werte auch aus einem eines kleinen Satzes von Registern oder aus dem durch eine andere Nachschlageinheit erzeugten Ergebnis lesen.
    • – Handlungsanweisungen ermöglichen, dass das endgültige Resultat des ankommenden Pakets entschieden werden kann. Sie modifizieren Bestimmte der Ausgangsregister 22, die bestimmen, ob das Paket weitergeleitet werden sollte, und falls dies der Fall ist, wohin.
    • – Andere Anweisungen, die ermöglichen, dass Bits aus dem Paket ausgesondert werden, dass Register zugewiesen und bewegt werden, und dass Zähler in dem Entscheidungsbaum inkrementiert werden.
  • Anweisungen in dem Entscheidungsbaum, der in dem Baumspeicher 34/36 gespeichert ist, sind durch in dem RAM 26 (1) gespeicherte Regeln definiert und werden durch die CPU 24 verarbeitet, um den Entscheidungsbaum zu erstellen und zu modifizieren. Eine Regel weist zwei Hauptteile auf: einen Bedingungssatz (z.B. „Falls EingangsTor = = 1", „If In-Port = = 1") und einen Handlungssatz (wie z.B. „Dann lasse Paket fallen", „then DropPacket", oder „dann gib Paket über Tor-ASIC X aus", „then output packet via PortASIC X"). Wenn ein Paket den Bedingungen entspricht (wie sie in dem Teil des Entscheidungsbaums, der dieser Regel entspricht, verkörpert sind), werden die betreffenden Handlungen durchgeführt. Die Bedingungen in einer Regel vergleichen den Wert eines Feldes mit einem feststehenden Wert (z.B. einer bestimmten Zieladresse für Pakete), um zu entscheiden, ob die Handlungen durchgeführt werden sollten; ein Feld ist üblicherweise ein Abschnitt des Anfangsblockes eines Pakets von ankommenden Daten. Regeln sind in Regelsätzen enthalten, die üblicherweise aufeinander bezogene Sätze von Regeln enthalten (die sich auf denselben Satz von Feldern beziehen). Eine Hinzufügung einer Regel zu einem Regelsatz in dem RAM 26 bewirkt, dass die CPU 24 unter der Steuerung des in dem RAM 26 gespeicherten Überwachungssoftwareprogramms entsprechende Änderungen an dem Entscheidungsbaum in dem Baumspeicher 34/36 bewirkt.
  • Das Überwachungssoftwareprogramm erhält für jeden Regelsatz einen „Regelbaum" in dem RAM 26 aufrecht, der aus einem Satz von miteinander verbundenen Knoten besteht. Jede Regel kann man so betrachten, als beschreibe sie einen fiktiven Pfad durch diesen Regelbaum. Jeder Knoten in dem Regelbaum entspricht üblicherweise einer oder mehreren Anweisungen in dem Entscheidungsbaum in dem Baumspeicher 34/36. Wenn ein Paket, das einer bestimmten Regel entspricht, klassifiziert wird, führt die Paketklassifizierungseinrichtung 18 Anweisungen aus, die den Knoten auf dem fiktiven Pfad der Regel durch den Regelbaum entsprechen. Die Knoten in dem Regelbaum speichern auch verschiedene Informationsposten, die benötigt werden, um Veränderungen an dem Entscheidungsbaum in dem Baumspeicher 34/36 zu verwalten.
  • Die Vorgehensweise zum Hinzufügen von Regeln zu einem Regelsatz in dem RAM 26 ist in den 3a bis 3g veranschaulicht, wobei als erstes Beispiel eine Regel verwendet wird, die eine Bedingung enthält, die sich auf das EingangsTor bezieht, an dem ein Paket empfangen wird (wie es in einem Feld-EingangsTor aufgezeichnet ist, das in dem Paketanfangsblock enthalten ist, mittels der relevanten Tor-ASIC):
    Falls EingangsTor = = 1 oder 2, dann führe HandlungA durch, führe HandlungB durch (Regel 1)
  • Unter Bezugnahme auf 3a wird ein „Verzweigungs"-Knoten 40 (der einer Verzweigungsanweisung in dem Entscheidungsbaum entspricht) erstellt, der Informationen über das Feld-EingangsTor in dem Paketanfangsblock enthält. Die Erstellung eines Knotens beinhaltet in der Praxis Schritte (die durch das Überwachungsprogramm in dem RAM 26 koordiniert werden) wie z.B. ein Zuweisen von Raum in dem RAM 26 zum Speichern von Informationen über den Knoten, und ein Aktualisieren von Tabellen, die ebenfalls in dem RAM 26 gespeichert sind, zum Verwalten und Wiedergewinnen derartiger Informationen, z.B. gemäß der Identität eines Feldes, auf das durch eine Regel Bezug genommen wird.
  • Als Nächstes wird der Verzweigungsknoten 40 erweitert, um Einträge für die spezifizierten Testwerte, 1 und 2 (3b), zu enthalten. Wenn es weitere Testbedingungen gäbe, würden nach Bedarf entsprechende Knoten gefunden oder erstellt.
  • Wenn Knoten für alle Testbedingungen der Regel mit relevanten Testwerten existieren, wird ein „Handlungs"-Knoten 42 hinzugefügt, um die durch die Regel festgelegte(n) Handlung(en) zu enthalten, wie in 3c gezeigt ist; in diesem Fall gibt es die HandlungA und die HandlungB, die beide für einen der in dem Verzweigungsknoten 40 getesteten Werte benötigt werden. Die neue Regel ist nun abgeschlossen, und die CPU kann ausgelöst werden, entsprechende Teile des Überwachungsprogramms auszuführen, um, wie nachfolgend beschrieben wird, an dem Entscheidungsbaum in dem Baumspeicher 34/36 entsprechende Veränderungen vorzunehmen, um zu bewirken, dass die neue Regel tatsächlich implementiert werden kann.
  • Anschließend kann gewünscht werden, eine weitere Regel hinzuzufügen, wie folgt:
    Falls EingangsTor = = 3, dann führe HandlungA aus, führe HandlungB aus (Regel 2)
  • In diesem Fall existiert bereits ein Knoten, der sowohl die HandlungA als auch die HandlungB bewirkt (der Handlungsknoten 42), ebenso ein Knoten (der Verzweigungsknoten 40), der den Wert des Feld-EingangsTors testet. Dementsprechend verwendet das Überwachungsprogramm erneut die Knoten 40 und 42 mit zusätzlichen Einträgen, um die zusätzliche Regel zu integrieren. Der sich ergebende Regelbaum ist in 3d gezeigt. Wiederum nimmt das Überwachungsprogramm anschließend die entsprechenden Veränderungen an dem Entscheidungsbaum in dem Baumspeicher 34/36 vor.
  • Nun kann eine dritte neue Regel gewünscht werden, wie folgt:
    Falls EingangsTor = = 3, dann führe HandlungC durch (Regel 3)
  • Diese Regel muss hinzugefügt werden, ohne die Ausführung der zwei zuvor hinzugefügten Regeln zu beeinträchtigen, die, im Fall der Regel 2, bereits eine HandlungA und eine HandlungB erfordern, wenn das EingangsTor 3 ist; gleichermaßen ist die Auswirkung dieser neuen Regel auf den Fall EingangsTor = = 3 beschränkt, so dass die neue HandlungC nicht durchgeführt werden muss, wenn das EingangsTor 1 oder 2 ist. Ein einfaches Hinzuaddieren der HandlungC zu dem Handlungsknoten 42, wie in 3e gezeigt ist, ist also falsch, da HandlungA und HandlungB nicht implementiert werden sollten, wenn das EingangsTor 3 ist; gleichermaßen ist auch ein Absondern der HandlungC zur Implementierung, wenn das EingangsTor 3 ist, wie in 3f gezeigt ist, falsch, da die HandlungA und die HandlungB dann fälschlicherweise für diesen Wert des EingangsTors weggelassen würden.
  • Um die Regel 3 auf richtige Weise hinzuzufügen, muss der vorhandene Handlungsknoten 42 dementsprechend kopiert werden, um einen zweiten Handlungsknoten 44 zu erzeugen, wie er in 3g gezeigt ist, mit den Handlungen für EingangsTorwerte 1 und 2 in dem ursprünglichen Knoten 42 und den Aktionen für den EingangsTorwert 3 in der Kopie (Knoten 44). Dann kann die neue HandlungC auf korrekte Weise lediglich zu dem neuen Handlungsknoten 44 hinzugefügt werden.
  • Der Vorgang der Regelhinzufügung, der oben umrissen würde, besteht aus drei Phasen:
    • – Phase 1 verwendet eine rekursive Prozedur, um den Regelbaum in dem RAM 26 zu durchqueren, wobei Bedingungen in der Regel erfüllt werden, nach Bedarf Knoten erzeugt oder geteilt werden und die Handlungen in der Regel schließlich in den entsprechenden Knoten gespeichert werden; da diese erste Phase in dem Regelbaum in dem RAM 26 durchgeführt wird, hat sie keine Auswirkung auf das Funktionieren der Entscheidungsbaumverwaltungseinrichtung 20, während die Klassifizierung der Pakete fortgesetzt wird;
    • – Phase 2 fügt „Vermittlungsknoten" in den Regelbaum ein, so dass alle neuen und modifizierten Knoten von der alten Baumstruktur isoliert sind, und erfasst und kombiniert jegliche vervielfältigten bzw. duplizierten bzw. Mehrfachknoten;
    • – Phase 3 erzeugt neue Anweisungen in dem Baumspeicher 34/36, die den neuen/modifizierten Knoten in dem RAM 26 entsprechen, und erstellt spezielle „Vermittlungs"-Verzweigungsanweisungen, die den Vermittlungsknoten entsprechen; da die neuen Anweisungen durch die Vermittlungsanweisungen isoliert werden, fungiert der Entscheidungsbaum in dem Baumspeicher 34/36 immer noch genauso wie vorher; alle Vermittlungsanweisungen be ziehen sich auf einen einzigen Steuerwert an einer festgelegten Stelle in dem Baumspeicher 34/36 (beispielsweise durch Aufrufen einer Anweisung, die den Wert an dieser Stelle untersucht und zurückgibt); dieser Steuerwert enthält anfänglich einen Wert von 0, was bewirkt, dass die Vermittlungsanweisungen auf die alten Pfade zeigen; dann wird in einem einzelnen Vorgang ein Wert von 1 in die Steuerstelle geschrieben; in diesem Moment schalten alle Vermittlungsanweisungen gleichzeitig hinüber zu dem neuen Pfad, und danach folgen alle Paketklassifizierungsoperationen dem neuen, modifizierten Entscheidungsbaum. (Falls zur Klassifizierung eines Pakets mehr als eine Veränderung entlang einem einzelnen Pfad durch den Regelbaum benötigt wird, wird die Klassifizierung kurz deaktiviert, und die Umschaltung wird nur dann durchgeführt, wenn bei dem Klassifizierungsvorgang keine Pakete verbleiben.)
  • Danach werden die Vermittlungsknoten und -anweisungen und redundante alte Knoten und Anweisungen beseitigt. In den Phasen 1 und 2 können viele neue Regeln hinzugefügt werden, bevor Phase 3 aufgerufen wird.
  • Phase 1
  • Bevor die rekursive Prozedur beginnt, wird ein KnotenInfo-Array initialisiert. Dieses Array behält jeden neuen Knoten im Auge, wenn er angetroffen wird, indem es die folgenden Daten für denselben unterhält:
    • – BesuchsZählwert – wie oft der Knoten während der Rekursion besucht wurde;
    • – RefZählwert – wie viele andere Knoten auf denselben zeigen (diese Informationen werden auch in Zuordnung zu jedem Knoten einzeln in dem RAM 26 gehalten);
    • – Rückzeiger zu den Einträgen in den Knoten, die Zeiger auf diesen Knoten enthalten.
  • KnotenInfo-Array-Einträge werden in einer doppelt verbundenen Liste unterhalten, die nach Tiefe in dem Baum sortiert ist.
  • Die rekursive Prozedur beginnt bei dem Wurzelknoten des Regelbaums (d.h. bei dem Verzweigungsknoten, der das erste Feld in dem Paket untersucht, für das jemals eine Regelbedingung in dem Regelsatz spezifiziert wurde) und führt den folgenden Zyklus durch:
    • (1) schlage einen KnotenInfo-Array-Eintrag für den aktuellen Knoten nach; wenn kein derartiger Eintrag vorliegt, erstelle einen.
    • (2) untersuche die Werte von BesuchsZählwert und RefZählwert in diesem KnotenInfo-Eintrag:
    • – wenn sie nicht gleich sind, halte die rekursive Prozedur an (siehe unten);
    • – falls sie gleich sind, kann die Regel einfach zu dem aktuellen Knoten hinzugefügt werden (siehe unten).
  • Die rekursive Prozedur wird angehalten, wenn die Werte von BesuchsZählwert und RefZählwert nicht gleich sind, da dies bedeutet, dass die Prozedur nicht alle Pfade zu dem aktuellen Knoten untersucht hat. In diesem Fall muss die Prozedur den Regelbaum, der Knoten untersucht, von denen sie den Knoten erreichte, an dem der Stopp erfolgte, sichern. Wenn sie einen Pfad von einem derartigen Knoten findet, der noch nicht untersucht wurde, wird die Rekursion entlang dieses Pfades wieder aufgenommen. Wenn kein derartiger nicht-untersuchter Pfad gefunden wird, sucht die Prozedur einen dem Wurzelknoten am nächsten liegenden Knoten, an dem die Rekursion zuvor angehalten worden war, und nimmt die Rekursion von dort wieder auf. Dieser Prozess wird fortgesetzt, bis jeder Knoten, für den die Rekursion angehalten wurde, aufgelöst wurde, entweder weil ein Verfolgen eines anderen Pfades zu dem Knoten bewirkt, dass BesuchsZählwert und RefZählwert gleich werden, oder wenn notwendig durch Aufspalten des Knotens.
  • Der Prozess zum Hinzufügen einer Regel zu einem Knoten, nachdem der entsprechende Knoten wie oben beschrieben identifiziert wurde, hängt davon ab, ob der Knoten ein Verzweigungsknoten, ein Vermittlungsknoten oder ein Handlungsknoten ist.
  • Wenn er ein Verzweigungsknoten ist, testet er eventuell nicht das in der Bedingung der Regel enthaltene Feld, wobei in diesem Fall alle Pfade von dem Knoten akzeptabel sind. Demgemäß wird jeder dieser Pfade nacheinander ausgewählt, und die rekursive Prozedur wird auf den ausgewählten Pfad angewandt. Falls das Feld, auf das in der Bedingung der Regel verwiesen wird, in dem Verzweigungsknoten getestet wird, liegen zwei Situationen vor, die zu betrachten sind:
    • – die Bedingung in der Regel kann die akzeptablen Pfade von dem Knoten auf einen Teilsatz aller Pfade von diesem Knoten beschränken; in diesem Fall wird die rekursive Prozedur bei dem ersten Pfad in diesem Teilsatz wieder aufgenommen;
    • – der bzw. die durch die Bedingung der Regel getestete(n) Wert(e) wird bzw. werden eventuell derzeit nicht in dem Verzweigungsknoten spezifiziert, wobei der Verzweigungsknoten in diesem Fall erweitert wird, um den bzw. die zusätzlichen Wert(e) zu umfassen (wie bei der oben beschriebenen Erweiterung von 3c zu 3d) – dies kann erfordern, dass der Knoten kopiert wird, falls die Ressourcen in dem RAM 26 für diesen Knoten bereits vollständig belegt sind; dann wird die rekursive Prozedur von dem ersten Pfad, der dem neu hinzugefügten Testwert bzw. den neu hinzugefügten Testwerten zugeordnet ist, wieder aufgenommen.
  • Ein Vermittlungsknoten wird auf ähnliche Weise wie ein Verzweigungsknoten behandelt, mit der Ausnahme, dass lediglich der „neue" Pfad, der bewirkte, dass dieser Vermittlungsknoten hinzugefügt wurde, zur Untersuchung durch die rekursive Prozedur ausgewählt wird.
  • Wenn der Knoten, zu dem die Regel hinzugefügt werden soll, ein Handlungsknoten ist und alle durch die Regel getesteten Bedingungen implementiert wurden, werden die Handlungen in der Regel einfach zu dem Handlungsknoten hinzugefügt, und die rekursive Prozedur ist abgeschlossen. Wenn es Bedingungen gibt, die noch implementiert werden müssen, wird die rekursive Prozedur geradewegs durch den Handlungsknoten hindurch fortgesetzt.
  • Wenn alle Knoten, an denen die Rekursion anhielt, aufgelöst wurden, und wenn alle Handlungen in der Regel, die hinzugefügt wurde, in Handlungsknoten platziert wurden, ist die rekursive Prozedur der Phase 1 abgeschlossen. Jedoch sind die neuen oder modifizierten Knoten noch nicht in den Rest des Regelbaums eingebunden.
  • Phase 2
  • Für jede Kette eines oder mehrerer neuer oder modifizierter Knoten wird ein Vermittlungsknoten in den Regelbaum eingefügt. Zu diesem Zweck durchquert der Regelhinzufügungsprozess wieder den Regelbaum nach oben, wobei er die Rückzeiger verwendet und die Knoten identifiziert, mit denen neue Knoten mittels eines Pfades verbunden werden sollten. Die Verbindung wird über einen Vermittlungsknoten, der ebenfalls eingefügt wird, hergestellt, so dass verhindert wird, dass sich die neuen Knoten (wenn sie als Anweisungen in dem Baumspeicher 34/36 reproduziert werden) vorübergehend in irgendeiner Form auswirken.
  • Während dieser Phase erfasst der Regelhinzufügungsprozess außerdem jeglichen Knoten, der exakt mit der Wirkung eines anderen Knotens übereinstimmt, und kombiniert dieselben mit Blick darauf, die Größe des Baums minimal zu halten, zu einem einzigen, gemeinsam verwendeten Knoten. Zu diesem Zweck vergleicht der Prozess Knoten, die wahrscheinliche Kandidaten für eine Kombination sind. Ein Knoten stimmt mit der Wirkung eines anderen Knotens überein, wenn:
    • – beide Handlungsknoten sind, die dieselben Handlungen enthalten; oder
    • – beide Verzweigungsknoten sind, die dasselbe Feld gegenüber demselben Satz von Werten testen.
  • Wenn beide Knoten auf diese Weise übereinstimmen, wird der neu hinzugefügte Knoten entfernt, indem jeglicher Verzweigungsknoten, der auf den neuen Knoten zeigt, modifiziert wird, so dass er statt dessen auf den übereinstimmenden existierenden Knoten zeigt. Diese Prozedur wird auf rekursive Weise entlang jeglicher Kette von Knoten, die den neuen vervielfältigten Knoten enthalten, fortgesetzt.
  • Phase 3
  • Für alle neuen oder modifizierten Knoten in dem RAM 26:
    • – wird Speicher in dem Baumspeicher 34/36 zugewiesen;
    • – wird jeder neue oder modifizierte Knoten in den entsprechenden Satz von Anweisungen in dem Baumspeicher umgewandelt;
    • – werden Verzweigungsknoten zu Verzweigungsanweisungen;
    • – werden Handlungsknoten zu Handlungsanweisungen;
    • – werden Vermittlungsknoten zu Vermittlungsanweisungen (spezielle Verzweigungsanweisungen);
    • – werden alle existierenden Anweisungen dahingehend modifiziert, auf die Vermittlungsanweisungen zu zeigen;
    • – werden existierende Knoten, die dahingehend modifiziert wurden, auf Vermittlungsknoten zu zeigen, lokalisiert, und werden die entsprechenden Anweisungen in dem Baumspeicher 34/36 dahingehend modifiziert, auf die relevanten Vermittlungsanweisungen zu zeigen;
    • – wird die Speichersteuerstelle, die den Zustand der Vermittlungsanweisungen steuert, in Bezug auf ihren Wert von 0 zu 1 verändert, wodurch bewirkt wird, dass alle Vermittlungsanweisungen gleichzeitig ihren Zustand ändern, um an den neuen Pfaden entlang zu zeigen;
    • – werden die vorhandenen Anweisungen, die auf Vermittlungsanweisungen zeigen, dahingehend modifiziert, direkt an den neuen Pfaden entlang zu zeigen statt über die Vermittlungsanweisungen in ihrem veränderten Zustand;
    • – werden jegliche redundanten alten Knoten und Anweisungen und die Vermittlungsknoten und -anweisungen entfernt (d.h. die Speicherstellen, die Informationen über dieselben und ihre Verbindungen mit anderen Knoten enthalten, werden gelöscht, und diese Stellen werden zur Wiederverwendung an einen Freier-Speicher-Pool zurückgegeben).
  • Beispiel einer Regelhinzufügung
  • 5 bis 12 zeigen ein praktisches Beispiel einer Hinzufügung einer Regel gemäß der oben beschriebenen Prozedur.
  • Unter Bezugnahme auf 5 existiert bereits ein Regelsatz für die Regeln, die die folgenden Bedingungen umfassen:
    falls (A = = 1 oder 2) und (B = = *) und (C = = 1) und (D = = ...) dann ... (Regel 4)
    falls (A = = 1 oder 2) und (B = = *) und (C = = 2) und (D = = ...) dann ... (Regel 5)
    falls (A = = 3) und (B = = *) und (C = = 1) und (D = = ...) dann ... (Regel 6)
  • Es sei angemerkt, dass der Wert von B bei diesem Beispiel nicht von Bedeutung ist (obwohl spätere Regeln eventuell Bedingungen auf diesen Wert festlegen); der Knoten CA gemeinsam verwendet wird, um den Entscheidungsbaum kompakt zu halten. Die neue hinzuzufügende Regel lautet:
    falls (A = = 1 oder 3) und (B = = *) und (C = = 2) dann führe HandlungX durch (Regel 7)
  • Die rekursive Prozedur der Phase 1 beginnt an dem Wurzelknoten des Regelbaums in dem RAM 26, d.h. dem Verzweigungsknoten A. Nach einem Prüfen des KnotenInfo-Arrays auf einen Eintrag bezüglich dieses Knotens hin stellt die Prozedur fest, dass es keinen gibt, da dies das erste Mal ist, dass der Knoten während einer Verarbeitung dieser neuen Regel 7 untersucht wurde; somit wird:
    • – ein KnotenInfo-Array-Eintrag erstellt;
    • – sein BesuchsZählwert-Parameter auf einen Wert Eins inkrementiert;
    • – sein RefZählwert-Parameter auf den Wert eingestellt, der in Verbindung mit dem Knoten A selbst gespeichert ist;
    • – ein Rückzeiger zu dem Regelsatz selbst zu dem Eintrag hinzugefügt.
  • Als Nächstes wird der Wert des RefZählwert-Parameters bei diesem KnotenInfo-Eintrag (in diesem Fall 1, da der Knoten A durch lediglich einen „Knoten", den Regelsatz selbst, referenziert wird) mit dem BesuchsZählwert-Parameter (nun ebenfalls 1) verglichen. Sie sind gleich, also kann die rekursive Prozedur bezüglich dieses Knotens damit fortfahren, Regel 7 hinzuzufügen. Da es ein Verzweigungsknoten ist, muss die Prozedur als Nächstes untersuchen, ob dieser Knoten ein in der Regel 7 referenziertes Feld testet; der Knoten A testet das Feld A, das in der Tat auch in der Regel 7 getestet wird, so dass die Prozedur nun einen Pfad auswählt, der von dem Knoten A verfolgt werden soll. Es gibt zwei relevante Pfade, für die Werte A = = 1 und A = = 3; zuerst wählt die Prozedur den Pfad für A = = 1 aus und kehrt zurück, um den nächsten Knoten entlang diesem Pfad, nämlich den Knoten Ba, zu untersuchen.
  • Nach einem Prüfen des KnotenInfo-Arrays auf einen Eintrag bezüglich dieses Knotens Ba hin stellt die Prozedur fest, dass es keinen gibt, da dies das erste Mal ist, dass der Knoten während einer Verarbeitung dieser neuen Regel 7 untersucht wurde; somit wird:
    • – ein KnotenInfo-Array-Eintrag erstellt;
    • – sein BesuchsZählwert-Parameter auf einen Wert Eins inkrementiert;
    • – sein RefZählwert-Parameter auf den Wert eingestellt, der in Verbindung mit dem Knoten Ba selbst gespeichert ist;
    • – ein Rückzeiger auf den Knoten A zu dem Eintrag hinzugefügt.
  • Der Wert des RefZählwert-Parameters bei diesem KnotenInfo-Eintrag (in diesem Fall 1, da der Knoten Ba durch lediglich einen Knoten referenziert wird) wird mit dem BesuchsZählwert-Parameter (nun ebenfalls 1) verglichen. Sie sind gleich, also kann die rekursive Prozedur bezüglich dieses Knotens damit fortfahren, Regel 7 hinzuzufügen. Da es ein Verzweigungsknoten ist, muss die Prozedur als Nächstes untersuchen, ob dieser Knoten ein in der Regel 7 referenziertes Feld testet; der Knoten Ba testet das Feld B, das in der Tat auch in der Regel 7 getestet wird, jedoch mit einem „bedeutungslosen" (WildCard-) Wert, so dass die Prozedur nun alle Pfade auswählt, die von dem Knoten Ba verfolgt werden sollen – in diesem Fall gibt es lediglich einen Pfad, zu dem Knoten Ca.
  • Was die beiden ersten geprüften Knoten angeht, stellt die Prozedur fest, dass es keinen KnotenInfo-Array-Eintrag für den Knoten Ca gibt; somit wird:
    • – ein KnotenInfo-Array-Eintrag erstellt;
    • – sein BesuchsZählwert-Parameter auf einen Wert Eins inkrementiert;
    • – sein RefZählwert-Parameter auf den Wert eingestellt, der in Verbindung mit dem Knoten Ca selbst gespeichert ist;
    • – ein Rückzeiger auf den Knoten Ba zu dem Eintrag hinzugefügt.
  • Der Wert des RefZählwert-Parameters bei diesem KnotenInfo-Eintrag (in diesem Fall 2, da der Knoten Ca durch zwei Knoten, Ba und Bb, referenziert wird) wird mit dem BesuchsZählwert-Parameter (nun 1) verglichen. Sie sind nicht gleich, so dass die rekursive Prozedur an diesem Punkt anhalten muss und speichern muss, wie weit die Prozedur auf diesem Pfad bezüglich des KnotenInfo-Array-Eintrags für den Knoten Ca fortgeschritten war.
  • Die Prozedur kehrt nun zu dem Knoten Ba zurück und stellt fest, dass die Verarbeitung für diesen Knoten abgeschlossen ist, und somit kehrt sie weiter zu dem Knoten A zurück und stellt fest, dass die Verarbeitung für diesen Knoten immer noch benötigt wird, bezüglich des Pfades für den Wert A = = 3, hin zu dem Knoten Bc.
  • Dementsprechend prüft die rekursive Prozedur nun das KnotenInfo-Array bezüglich eines Eintrags für diesen Knoten und stellt wiederum fest, dass es keinen gibt; somit wird:
    • – ein KnotenInfo-Array-Eintrag erstellt;
    • – sein BesuchsZählwert-Parameter auf einen Wert Eins inkrementiert;
    • – sein RefZählwert-Parameter auf den Wert eingestellt, der in Verbindung mit dem Knoten Bc selbst gespeichert ist;
    • – ein Rückzeiger auf den Knoten A zu dem Eintrag hinzugefügt.
  • Der Wert des RefZählwert-Parameters bei diesem KnotenInfo-Eintrag (1, da der Knoten Bc durch lediglich einen Knoten referenziert wird) wird mit dem BesuchsZählwert-Parameter (nun ebenfalls 1) verglichen. Sie sind gleich, so dass die rekursive Prozedur bezüglich dieses Knotens damit fortfahren kann, Regel 7 hinzuzufügen. Es ist ein Verzweigungskno ten, so dass die Prozedur als Nächstes untersucht, ob dieser Knoten ein in der Regel 7 referenziertes Feld testet; der Knoten Bc testet das Feld B, das in der Tat auch in der Regel 7 getestet wird, jedoch mit einem „bedeutungslosen" (WildCard-) Wert, so dass die Prozedur nun alle Pfade auswählt, die von dem Knoten Bc verfolgt werden sollen – es gibt lediglich einen Pfad, zu dem Knoten Cb.
  • Wie zuvor stellt die rekursive Prozedur fest, dass es in dem KnotenInfo-Array für diesen Knoten keinen Eintrag gibt; somit wird:
    • – ein KnotenInfo-Array-Eintrag erstellt;
    • – sein BesuchsZählwert-Parameter auf einen Wert Eins inkrementiert;
    • – sein RefZählwert-Parameter auf den Wert eingestellt, der in Verbindung mit dem Knoten Cb selbst gespeichert ist;
    • – ein Rückzeiger auf den Knoten Bc zu dem Eintrag hinzugefügt.
  • Der Wert des RefZählwert-Parameters bei diesem KnotenInfo-Eintrag (1, da der Knoten Cb durch lediglich einen Knoten referenziert wird) wird mit dem BesuchsZählwert-Parameter (nun ebenfalls 1) verglichen. Sie sind gleich, so dass die rekursive Prozedur bezüglich dieses Knotens damit fortfahren kann, Regel 7 hinzuzufügen. Es ist ein Verzweigungsknoten, so dass die Prozedur als Nächstes untersucht, ob dieser Knoten ein in der Regel 7 referenziertes Feld testet; der Knoten Cb testet das Feld C, das in der Regel 7 getestet wird, so dass die Prozedur nun versucht, einen Pfad auszuwählen, der von dem Knoten Cb an verfolgt werden soll. Es gibt jedoch keinen Pfad von dem Knoten Cb für den Wert C = = 2, also muss einer hinzugefügt werden. Bei diesem Beispiel wird angenommen, dass der existierende Knoten Cb kei nen weiteren Testwert berücksichtigen kann, so dass ein neuer Knoten Cb2 benötigt wird (6). Dieser Knoten Cb2 wird mit ausreichenden Ressourcen in dem RAM 26 erzeugt, um eine Kopie des aktuellen Inhalts des vorhandenen Codes Cb (der Testwert C = = 1, was zu dem Knoten Dc führt) plus den neuen Testwert C = = 2 zu enthalten.
  • An diesem Punkt wurden alle Bedingungen in der neuen Regel 7 berücksichtigt, so dass die Handlung, die dieselbe spezifiziert (HandlungX) für den Fall C = = 2 direkt als Resultat zu dem neuen Knoten Cb2 hinzugefügt werden kann. Zu diesem Zweck wird ein Vermittlungsknoten 50 (7) in dem RAM 26 erzeugt, mit einer Verbindung von dem entsprechenden Resultat des Knotens Cb2, die zu einem neuen Handlungsknoten 52 führt, der die HandlungX spezifiziert. An diesem Punkt ist der Knoten Cb2 inaktiv, da er keinen Eingangspfad aufweist, also werden beide seine Resultate ebenfalls inaktiv, wie in 7 durch gestrichelte Linien dargestellt ist. Obwohl der Vermittlungsknoten 50 aus diesem Grund nicht unbedingt notwendig ist, ist er als Vorsichtsmaßnahme gegen einen Ausfall mit aufgenommen, um die Hinzufügung der neuen Regel 7 auf Pfaden, die erst noch verfolgt werden müssen, abzuschließen, wobei die neue HandlungX in diesem Fall nirgendwo wirksam werden sollte. Der Vermittlungsknoten 50 gewährleistet, dass diese neue Handlung isoliert bleibt, bis die Hinzufügung der neuen Regel vollständig erfolgreich war.
  • Die Prozedur ersetzt den KnotenInfo-Array-Eintrag für den veralteten Knoten Cb durch einen KnotenInfo-Eintrag für den Ersatzknoten Cb2 und kehrt dann zurück, um den vorausgehenden Knoten Bc zu untersuchen. Sie stellt fest, dass die Verarbeitung für diesen Knoten abgeschlossen ist, also kehrt sie weiter zu dem Knoten A zurück, für den die Verarbeitung nun ebenfalls abgeschlossen ist. Dementsprechend prüft die rekursive Prozedur, ob etwaige ausstehende Knoten vorliegen, für die die Rekursion angehalten werden musste, und stellt fest, dass dies bei dem Knoten Ca der Fall ist.
  • Somit muss die Rekursion an diesem Knoten wieder aufgenommen werden.
  • Die Prozedur vergleicht den RefZählwert für diesen Knoten Ca (2) mit seinem Besuchszählwert (1), und da sie feststellt, dass sie sich unterscheiden, und in Abwesenheit einer anderen Möglichkeit, teilt sie den Knoten in zwei Hälften. Dementsprechend wird ein neuer Knoten Ca2 erzeugt (8), wobei der Inhalt des vorhandenen Knotens Ca und ebenso Pfade aus demselben zu den Knoten Da und Db dupliziert werden. Die neue Regel 7 spezifiziert eine Bedingung für das Feld C (C = = 2), und der neue Knoten Ca2 umfasst bereits einen Test für diesen Wert; ferner wurden alle Bedingungen in der neuen Regel 7 an diesem Punkt berücksichtigt, so dass ein Handlungsknoten 54 für die Aktion, die er spezifiziert, an dem (derzeit inaktiven) Pfad aus dem Knoten Ca2 heraus (zu dem Knoten Db) hinzugefügt werden kann – siehe 9. Man beachte, dass die Erzeugung des neuen Knotens Ca2 gewährleistet, dass die neue Regel 7 lediglich für die Fälle, in denen A die Werte 1 und 3 aufweist, korrekt hinzugefügt wird, jedoch nicht in dem Fall, dass A den Wert 2 aufweist.
  • An diesem Punkt stellt die rekursive Prozedur fest, dass alle angehaltenen Rekursionen abgeschlossen wurden und somit auch Phase 1 der Hinzufügung der Regel 7 abgeschlossen wurde.
  • Bei Phase 2 identifiziert die Prozedur neu hinzugefügte Knoten, die durch Vermittlungsknoten mit vorhandenen Knoten verbunden werden müssen, wie in 9 durch gestrichelte Pfeile angegeben ist. Zu diesem Zweck untersucht die Prozedur den KnotenInfo-Array-Eintrag für jeden neu hinzugefügten Knoten, wobei sie Rückzeiger sucht, die existierende Knoten angeben, von denen derartige Verbindungen gemacht werden sollten. Für jede derartige Verbindung wird ein Vermittlungsknoten erzeugt. Beispielsweise vervielfältigt der neue Knoten Ca2 den vorhandenen Knoten Ca, der mit dem vor handenen Knoten Ba verbunden ist. Dementsprechend wird ein Vermittlungsknoten 56 in die bestehende Verbindung zwischen den existierenden Knoten Ba und Ca platziert und wird anfänglich eingestellt, um den Pfad entlang dieser Verbindung aufrechtzuerhalten (10). Der alternative, derzeit ungenutzte Pfad von dem neuen Vermittlungsknoten 56 wird mit dem neuen Knoten Ca2 gekoppelt. Desgleichen wird ein neuer Vermittlungsknoten 58 bezüglich der Knoten Bc, Cb und Cb2 hinzugefügt.
  • Als Nächstes werden in Phase 3 die neuen und modifizierten Knoten in dem Regelbaum in dem RAM 26 in Anweisungen umgewandelt, die in den Baumspeicher 34/36 platziert werden, um einen entsprechenden modifizierten Entscheidungsbaum zu erzeugen. Somit veranschaulichen 1012 insbesondere die Struktur des Entscheidungsbaums in dem Baumspeicher 34/36 sowie des Regelbaums in dem RAM 26.
  • Für jeden neuen Knoten Ca2, Cb2, 52 und 54 (HandlungX) in dem Regelbaum werden in dem Baumspeicher 34/36 entsprechende Anweisungen erzeugt (d.h. Speicherressourcen in dem Baumspeicher werden zugewiesen, und Zeiger auf den Speicher für andere Knoten werden nach Bedarf eingerichtet). Desgleichen werden in dem Baumspeicher 34/36 Vermittlungsanweisungen erzeugt, die den Vermittlungsknoten 50, 56 und 58 entsprechen, und durch den O-Wert in der Steuerstelle eingestellt, um die vorhandenen Pfade durch den Entscheidungsbaum zu bewahren und die neuen Anweisungen isoliert zu halten. Die vorhandenen Anweisungen in dem Entscheidungsbaum für die Knoten Ba und Bc werden so modifiziert, dass die Pfade von denselben zu den Vermittlungsanweisungen führen, die den Vermittlungsknoten 56 bzw. 58 entsprechen, statt direkt zu den Anweisungen zu führen, die den Knoten Ca und Cb entsprechen.
  • Der Wert in der Steuerstelle wird nun von 0 zu 1 geändert. Die Vermittlungsanweisungen, die den Vermittlungsknoten 50, 56 und 58 entsprechen, verändern gleichzeitig ihren Zu stand, so dass die Pfade von denselben zu den neuen Anweisungen für die Knoten 52, Ca2 bzw. Cb2 führen. Somit ist der modifizierte Entscheidungsbaum in einem einzigen, effektiv augenblicklichen Übergang implementiert, ohne dass ein Zwischenzustand eine Mischung der vorherigen und modifizierten Bäume beinhaltet.
  • Die den Knoten Ba und Bc entsprechenden Anweisungen werden erneut modifiziert, so dass die Pfade von denselben statt zu den Vermittlungsanweisungen, die den Vermittlungsknoten 56 und 58 entsprechen, direkt zu den neuen Anweisungen für die Knoten Ca2 und Ca2 führen, und die Anweisung für den Knoten Cb2 wird ebenfalls modifiziert, um direkt mit der Handlungsanweisung, die dem Handlungsknoten 52 entspricht, verbunden zu werden. Anschließend werden die Vermittlungsanweisungen für die Vermittlungsknoten 50, 56 und 58 beseitigt (d.h. die Speicherressourcen, die Informationen über dieselben speichern, werden gelöscht und zur Wiederverwendung freigegeben), ebenso wie die veraltete Anweisung, die dem veralteten Knoten Cb entspricht (12). Die Knoten selbst in dem RAM 26 werden ebenfalls gelöscht.
  • Wie oben erwähnt wurde, erfasst der Prozess in Phase 2 Mehrfachknoten und kombiniert sie mit Blick auf eine Minimierung der Nutzung von Speicherressourcen so, dass ihre Funktionalität gemeinsam verwendet wird. Dies kann durch das Beispiel des Hinzufügens einer neuen Regel 8 wie folgt veranschaulicht werden:
    wenn (A = = 3) und (B = = *) und (C = = 3) dann führe HandlungX durch (Regel 8)
  • Phase 1 erzeugt einen neuen Knoten Cb3, wie in 13 gezeigt ist, mit einem Pfad zu dem Knoten Dc für den Fall, dass C den Wert 1 aufweist, und mit Pfaden zu Handlungsknoten 52 (vorhanden) und 60 (neu), die jeweils eine HandlungX enthalten, für die Fälle, dass C den Wert 2 bzw. 3 aufweist. Bei Phase 2 erfasst der Prozess, dass die zwei Hand lungsknoten 52 und 60 identisch sind, gemäß den oben beschriebenen Kriterien, und kombiniert sie zu einem einzigen Handlungsknoten 62, wie in 14 gezeigt ist.
  • Der Prozess zum Löschen von Regeln ähnelt sehr stark dem Prozess zum Hinzufügen von Regeln, mit Ausnahme dessen, dass der letzte Schritt, bei dem die Regelhandlungen zu einem Handlungsknoten hinzugefügt werden, durch einen Schritt ersetzt wird, bei dem die Regelhandlungen aus dem Handlungsknoten entfernt werden. In diesem Fall muss eine Fehlerbedingung angezeigt werden, wenn die Handlung(en), die in der zu löschenden Regel vorliegt bzw. vorliegen, in der Tat nicht in dem Handlungsknoten gefunden wird bzw. werden.
  • Obwohl die obigen Beispiele im Kontext von Entscheidungsbäumen zur Paketvermittlung beschrieben wurden, ist die Erfindung nicht auf eine derartige Verwendung beschränkt. Beispielsweise ist sie auch auf Testsonden anwendbar, die mit Netzwerkkommunikationsverbindungen verbunden sind, um Protokoll- und Zeitgebungsinformationen zur entfernten Anzeige und Analyse zu sammeln; in diesem Fall kann der Entscheidungsbaum verwendet werden, um die Funktionsweise eines Protokolls zu definieren, so dass die Sonde eine tatsächliche Implementierung des Protokolls mittels Paketen, die das Netzwerk durchqueren, mit der theoretischen Definition des Protokolls vergleichen kann. Eine weitere mögliche Verwendung betrifft Virusscanner zum Prüfen von Softwareprogrammen; derartige Scanner können dadurch arbeiten, dass sie eine beliebige von mehreren bestimmten Sequenzen von Anweisungscodes in Programm- und Datendateien suchen. Dieser Prozess kann zweckmäßigerweise in einem Entscheidungsbaum implementiert werden. Während neue Computerviren entwickelt werden, ist es notwendig, Virusscanner (und somit ihre Entscheidungsbäume) kontinuierlich zu aktualisieren. Die vorliegende Erfindung liefert ein zweckmäßiges Verfahren zum Bewerkstelligen desselben.

Claims (9)

  1. Ein Verfahren zum Ändern eines dynamischen Entscheidungsbaumes, der in einem Vorrichtungsspeicher (26) gespeichert ist und Knoten (A, B, C, D) enthält, von einer Erster-Knoten-Konfiguration zu einer Zweiter-Knoten-Konfiguration; wobei das Verfahren folgende Schritte umfasst: (a) Identifizieren einer Stelle in dem Entscheidungsbaum, an der zumindest ein neuer Knoten (Cb2, 52) eingefügt werden soll; (b) Einfügen, an dieser Stelle, eines temporären Knotens (58), der einen ersten und einen zweiten Zustand aufweist, wobei der erste Zustand die vorhandene Konfiguration des Baums unverändert lässt, und wobei der temporäre Knoten anfänglich in dem ersten Zustand ist; (c) Einfügen des zumindest einen neuen Knotens (Cb2, 52), der von dem temporären Knoten (58) abhängen soll und nur dann in den Baum eingekoppelt wird, wenn sich der temporäre Knoten (58) in dem zweiten Zustand befindet; (d) Wiederholen der Schritte (a), (b) und (c) für jegliche zusätzliche neue Knoten (Ca2, 54), die eingefügt werden sollen; und (e) gleichzeitiges Ändern jedes temporären Knotens (56, 58) von seinem ersten zu seinem zweiten Zustand.
  2. Das Verfahren gemäß Anspruch 1, das folgenden Schritt umfasst: (f) Entfernen jedes temporären Knotens (56, 58).
  3. Das Verfahren gemäß Anspruch 1 oder 2, das folgenden Schritt umfasst: (g) Entfernen jedes in der ersten Konfiguration enthaltenen Knotens (Cb), der in der zweiten Konfiguration redundant ist.
  4. Das Verfahren gemäß Anspruch 3, bei dem ein Zählwert bezüglich der Anzahl von Pfaden, entlang derer jeder Knoten in dem Baum erreicht werden kann, aufrechterhalten wird, und ein Knoten (Cb) als redundant erachtet wird, wenn sein jeweiliger Zählwert null ist.
  5. Das Verfahren gemäß einem der vorhergehenden Ansprüche, bei dem der Zustand jedes temporären Knotens (56, 58) von einem gemeinsamen Steuerwert abhängig ist und der Zustand jedes temporären Knotens gleichzeitig durch Verändern des gemeinsamen Steuerwerts geändert wird.
  6. Vorrichtung zum Ausführen des Verfahrens gemäß einem der vorhergehenden Ansprüche.
  7. Vorrichtung gemäß Anspruch 6, wobei die Vorrichtung ein Schalter (10) zum Schalten von Paketdaten ist, wobei der Entscheidungsbaum dazu bestimmt ist, Regeln zum Steuern des Weiterleitens von Datenpaketen zu verkörpern.
  8. Vorrichtung gemäß Anspruch 6, wobei die Vorrichtung eine Sonde zum passiven Überwachen des Betriebs eines Datenkommunikationsnetzwerks ist, wobei der Entschei dungsbaum verwendet wird, um den Betrieb eines Protokolls zu definieren.
  9. Vorrichtung gemäß Anspruch 6, wobei die Vorrichtung ein Virusscanner ist, wobei der Entscheidungsbaum dazu bestimmt ist, mehrere bestimmte Sequenzen von Anweisungscodes zu spezifizieren.
DE69829645T 1998-05-01 1998-05-01 Verfahren zur Änderung von dynamischen Entscheidungsbäume Expired - Lifetime DE69829645T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP98303425A EP0954139B1 (de) 1998-05-01 1998-05-01 Verfahren zur Änderung von dynamischen Entscheidungsbäume

Publications (2)

Publication Number Publication Date
DE69829645D1 DE69829645D1 (de) 2005-05-12
DE69829645T2 true DE69829645T2 (de) 2006-03-09

Family

ID=8234802

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69829645T Expired - Lifetime DE69829645T2 (de) 1998-05-01 1998-05-01 Verfahren zur Änderung von dynamischen Entscheidungsbäume

Country Status (3)

Country Link
US (1) US6320848B1 (de)
EP (1) EP0954139B1 (de)
DE (1) DE69829645T2 (de)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6697872B1 (en) 1999-10-15 2004-02-24 Cisco Technology Distributed packet processing using encapsulation and decapsulation chains
US6578084B1 (en) 1999-10-15 2003-06-10 Cisco Technology, Inc. Packet processing using encapsulation and decapsulation chains
US6601106B1 (en) * 1999-10-15 2003-07-29 Cisco Technology, Inc. Packet processing using non-sequential encapsulation and decapsulation chains
US7200684B1 (en) * 2000-04-13 2007-04-03 International Business Machines Corporation Network data packet classification and demultiplexing
US6757742B1 (en) * 2000-05-25 2004-06-29 Advanced Micro Devices, Inc. Computer-based system for validating hash-based table lookup schemes in a network switch
US7006532B1 (en) 2001-05-23 2006-02-28 Cisco Technology, Inc. Dynamically building encapsulation and decapsulation chains at run time
US20020188732A1 (en) * 2001-06-06 2002-12-12 Buckman Charles R. System and method for allocating bandwidth across a network
US7095715B2 (en) * 2001-07-02 2006-08-22 3Com Corporation System and method for processing network packet flows
US20030033519A1 (en) * 2001-08-13 2003-02-13 Tippingpoint Technologies,Inc. System and method for programming network nodes
US7239639B2 (en) * 2001-12-27 2007-07-03 3Com Corporation System and method for dynamically constructing packet classification rules
US7737134B2 (en) * 2002-03-13 2010-06-15 The Texas A & M University System Anticancer agents and use
US7187694B1 (en) * 2002-03-29 2007-03-06 Pmc-Sierra, Inc. Generic packet parser
US6938049B2 (en) * 2002-06-11 2005-08-30 The Regents Of The University Of California Creating ensembles of decision trees through sampling
US7824706B2 (en) * 2003-05-09 2010-11-02 Freedom Health, Llc Dietary supplement and method for the treatment of digestive tract ulcers in equines
US7801980B1 (en) 2003-05-12 2010-09-21 Sourcefire, Inc. Systems and methods for determining characteristics of a network
US7539681B2 (en) 2004-07-26 2009-05-26 Sourcefire, Inc. Methods and systems for multi-pattern searching
US7733803B2 (en) * 2005-11-14 2010-06-08 Sourcefire, Inc. Systems and methods for modifying network map attributes
US8046833B2 (en) 2005-11-14 2011-10-25 Sourcefire, Inc. Intrusion event correlation with network discovery information
US7948988B2 (en) 2006-07-27 2011-05-24 Sourcefire, Inc. Device, system and method for analysis of fragments in a fragment train
US7701945B2 (en) * 2006-08-10 2010-04-20 Sourcefire, Inc. Device, system and method for analysis of segments in a transmission control protocol (TCP) session
US8069352B2 (en) * 2007-02-28 2011-11-29 Sourcefire, Inc. Device, system and method for timestamp analysis of segments in a transmission control protocol (TCP) session
US8127353B2 (en) 2007-04-30 2012-02-28 Sourcefire, Inc. Real-time user awareness for a computer network
US8789031B2 (en) * 2007-09-18 2014-07-22 Intel Corporation Software constructed strands for execution on a multi-core architecture
US8474043B2 (en) * 2008-04-17 2013-06-25 Sourcefire, Inc. Speed and memory optimization of intrusion detection system (IDS) and intrusion prevention system (IPS) rule processing
US8370931B1 (en) * 2008-09-17 2013-02-05 Trend Micro Incorporated Multi-behavior policy matching for malware detection
WO2010045089A1 (en) 2008-10-08 2010-04-22 Sourcefire, Inc. Target-based smb and dce/rpc processing for an intrusion detection system or intrusion prevention system
CN101447940B (zh) * 2008-12-23 2011-03-30 杭州华三通信技术有限公司 访问控制列表规则的更新方法和装置
CN101534301B (zh) * 2009-04-13 2012-09-05 北京星网锐捷网络技术有限公司 表项的安装方法和装置以及网络设备
US8433790B2 (en) 2010-06-11 2013-04-30 Sourcefire, Inc. System and method for assigning network blocks to sensors
US8671182B2 (en) 2010-06-22 2014-03-11 Sourcefire, Inc. System and method for resolving operating system or service identity conflicts
US8601034B2 (en) 2011-03-11 2013-12-03 Sourcefire, Inc. System and method for real time data awareness
US9116625B2 (en) * 2012-05-11 2015-08-25 Micron Technology, Inc. Write command overlap detection
WO2018146521A1 (en) * 2017-02-11 2018-08-16 Pismo Labs Technology Ltd. Methods and systems for transmitting information packets through tunnel groups at a network node
US20200160450A1 (en) * 2018-11-19 2020-05-21 Jpmorgan Chase Bank, N.A. Systems and methods for decision tree-based management of market risk stress scenarios

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4499596A (en) * 1982-06-28 1985-02-12 International Business Machines Corporation Adaptive facsimile compression using a dynamic extendable decision network
AU4661793A (en) * 1992-07-02 1994-01-31 Wellfleet Communications Data packet processing method and apparatus
WO1994015305A1 (en) * 1992-12-21 1994-07-07 Apple Computer, Inc. Method and apparatus for transforming an arbitrary acyclic topology collection of nodes into an acyclic directed graph
US5666481A (en) * 1993-02-26 1997-09-09 Cabletron Systems, Inc. Method and apparatus for resolving faults in communications networks
US5509006A (en) * 1994-04-18 1996-04-16 Cisco Systems Incorporated Apparatus and method for switching packets using tree memory
US6018524A (en) * 1997-09-09 2000-01-25 Washington University Scalable high speed IP routing lookups
US6192051B1 (en) * 1999-02-26 2001-02-20 Redstone Communications, Inc. Network router search engine using compressed tree forwarding table

Also Published As

Publication number Publication date
EP0954139B1 (de) 2005-04-06
US6320848B1 (en) 2001-11-20
DE69829645D1 (de) 2005-05-12
EP0954139A1 (de) 1999-11-03

Similar Documents

Publication Publication Date Title
DE69829645T2 (de) Verfahren zur Änderung von dynamischen Entscheidungsbäume
DE69228166T2 (de) Ereignisbehandlungsvorrichtung mit Filterverfahren und mit Einwirkungassoziationsverfahren
DE69330675T2 (de) Verbesserte Paketstruktur für Netzschicht
DE69423101T2 (de) Virtuelle mehrfachsende-durchschaltvermittlung unter verwendung von zellenrecycling
DE60214670T2 (de) Verfahren und vorrichtung zur leitweglenkungstabellenverwaltung
DE69328647T2 (de) Verfahren und Vorrichtung zur optimalen Wegeauswahl in Paketübertragungsnetzen
DE69422436T2 (de) Netzanalysenverfahren
DE69216704T2 (de) Verfolgung von folgenummern in einem paketkommunikationssystem
DE60307241T2 (de) Vlan tabellenverwaltungssystem in hardwarebasierten paketvermittlungsstellen für speichereffizientes auslesen und einschreiben
DE69330904T2 (de) Paketnetz-Schnittstelle
DE10393053B4 (de) Bereichsbasierte Mehrfeldkorrelation - Paketklassifizierung mit logorithmischem Zeitverhalten
DE69432746T2 (de) Ereignisverarbeitungssystem und Verfahren zur Herstellen eines solchen Systems
DE69419027T4 (de) Mindestkosten-leitwegsauswahl in verteilten kommunikationsnetzen
DE68925557T2 (de) Verfahren zum Zugriff von Daten in einer Tabelle und seine Anwendung zum Lenken von Daten zwischen entfernten Stationen
DE60026229T2 (de) Verfahren und Vorrichtung für Klassifizierung von Datenpaketen
DE60026676T2 (de) Paketklassifizierungsautomat
DE69836812T2 (de) Verfahren und gerät zum dynamischen warteschlange-abschätzen
DE69927109T2 (de) Speicher zur Informationssuche durch Präfixanalyse für Knoten von Hochgeschwindigkeitsnetzen
DE60313371T2 (de) Verwendung von baumartigen "Bitmap" Datenstrukturen
DE60021846T2 (de) Leitweglenkungsanordnung
DE112011103561T5 (de) Netzwerkprozessor und Verfahren zum Beschleunigen der Datenpaket-Syntaxanalyse
DE69937185T2 (de) Verfahren und vorrichtung zum paketbeförderungsnachschlagen mit einer reduzierten anzahl von speicherzugriffen
DE69423923T2 (de) System für Zusammenfügen/Auseinandernehmen von ATM-Zellen
DE10297269T5 (de) Kennzeichnung von Paketen mit einem Nachschlageschlüssel zur leichteren Verwendung eines gemeinsamen Paketweiterleitungs-Cache
DE10028563B4 (de) Kommunikationssteuerungseinheit

Legal Events

Date Code Title Description
8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE

8364 No opposition during term of opposition