-
Hintergrund
der Erfindung
-
1. Gebiet
der Erfindung
-
Die
vorliegende Erfindung bezieht sich auf das Sammeln von Informationen
bezüglich
der Verwendung eines Kommunikationsbus, was üblicherweise Netzstatistik
genannt wird. Insbesondere bezieht sich die vorliegende Erfindung
auf einen Paketnetzprotokollanalysator, der einen inhaltsadressierbaren
Speicher (CAM) verwendet.
-
2. Angabe
des Problems
-
Kommunikationssysteme,
in denen Informationen in Datenpaketen zwischen einem Anfangsblock
und einem Abschlussblock übertragen
werden, die Informationen bezüglich
des Datenpakets liefern, werden allgemein Paketnetze genannt. Es
gibt viele Arten von Paketen, die über ein bestimmtes Paketnetz
gesendet werden können,
wobei jedes derselben durch einen Satz von Regeln oder Übereinkünften, die
Protokolle genannt werden, definiert ist. Ein Paket oder Rahmen
umfasst allgemein einen Anfangsblock, einen Abschlussblock und eine
Nutzlast, die zwischen dem Anfangsblock und dem Abschlussblock angeordnet
ist. Das Protokoll für ein
bestimmtes Paket oder einen bestimmten Rahmen definiert allgemein
den Inhalt des Rahmenanfangsblocks und des Rahmenabschlussblocks,
sowie die relative Position des Datenpakets oder der Nutzlast in
dem Rahmen. Protokollanalysatoren stellen eine Verbindung zu dem
Kommunikationsbus eines Paketnetzes her und sammeln und speichern
Informationen bezüglich
der Pakete, die sich auf dem Bus bewegen. Derartige Informationen
könnten
den Typ eines Pakets, z.B. IBM, Novell oder Appletalk, die Anzahl
von Bits in dem Rahmen und viele weitere Typen von Informationen
umfassen. Diese Informatio nen sind für Netzentwerfer und -überwacher
nützlich
beim Bestimmen von Ausrüstungsanforderungen,
der Quelle von Netzproblemen und allgemein bei der Überwachung
des Netzes.
-
Herkömmlicherweise
haben Protokollanalysatoren Mikroprozessoren verwendet, die durch
eine Software programmiert sind, um die Paketinformationen zu sammeln
und zu speichern. Datenkommunikationsnetze des Stands der Technik
sind sehr schnell mit einer Datenübertragung mit der Rate von
Gigabits pro Sekunde. Softwarebasierte Systeme können mit dem eingehenden Verkehrsfluss
in derartigen Hochgeschwindigkeits-Datensystemen nicht Stand halten.
Eine häufige
Lösung
des Stands der Technik für
dieses Problem ist die Abtastung der Daten. So sind die Daten statistischer
Natur, so der Ausdruck „Netzstatistik". Derartige herkömmliche
Protokollanalysatoren können
ungenau sein und einige Ereignisse könnten vollständig verfehlt
werden. Lösungen
des Stands der Technik für
dieses Problem umfassen außerdem
die Verwendung eines Vorfilterns, um ungewollte Rahmen zu verwerfen,
wobei so die Paketrate reduziert wird, bevor die Software den Verkehr
verarbeitet. Wenn jedoch alle Rahmen oder ein großer Prozentsatz
von Rahmen Rahmen sind, die abgetastet werden sollen, ist diese
Lösung
nicht brauchbar.
-
Eine
weitere Lösung
ist die Verwendung einer maßgeschneiderten
integrierten Schaltung (IC), die einen Algorithmus verwendet, um
die Abtastung in einer Weise anzuleiten, die bedeutungsvolle Rahmen
auswählt.
Jede beliebige Abtastlösung
ist jedoch nicht für
einen Protokollanalysator akzeptabel, der auf den R&D-Markt abzielt.
R&D-Personen
erwarten, absolute Messungen zu sehen und keine Annäherungen.
Ferner ist bei Gigabit-Datenübertragungsgeschwindigkeiten
die Abtastung bei einer derart niedrigen Rate verglichen mit der
Verkehrsrate, dass die Algorithmen unter Umständen nicht weiter gültig zur
Durchführung
bedeutungsvoller Messungen sind.
-
Zustandsmaschinen
sind allgemein in der Elektronikindustrie bekannt, diese wurden
jedoch bisher nicht als Protokollanalysatoren eingesetzt, hauptsächlich da
es so viele unterschiedliche Paketnetzprotokolle gibt und jedes
Protokoll ziemlich komplex ist, so dass man in der Technik geglaubt
hat, dass eine Zustandsmaschine, die Protokolle analysieren kann,
so groß und
komplex wäre,
dass dies nicht brauchbar ist. Ferner werden ständig neue Protokolle eingeführt und
alte Protokolle verändern
sich ständig
und man weiß,
dass es viel einfacher ist, ein Softwareprogramm zu verändern, um
neue und überarbeitete
Protokolle zu handhaben, als eine Zustandsmaschine neu zu programmieren,
die im Wesentlichen Hardware ist.
-
Die
EP 0 650 167 A2 offenbart
einen inhaltsadressierbaren Speicher mit einer programmierbaren
Feldmaskierung. In dem beschriebenen inhaltsadressierbaren Speicher
(CAM) ist zumindest eine Gruppe von Speicherzellen durch eine Wortleitung
und eine Übereinstimmungsleitung
verbunden. Die Gruppe von Speicherzellen umfasst Datenspeicherzellen,
die in eine Anzahl von Datenspeicherzellfeldern unterteilt sind,
zum Speichern von Datenbits eines Datenworts. Eine Maskenspeicherzelle
ist innerhalb der Gruppe von Speicherzellen zum Speichern zumindest
eines Maskenbits, das einen Status von Daten anzeigt, die in zumindest
einem der Datenspeicherzellfelder gespeichert sind, vorgesehen.
Die Maskenspeicherzelle ist wirksam, um die Übereinstimmungsleitung ansprechend
auf das gespeicherte Maskenbit zu unterbrechen. Ein Übereinstimmungsleitungsdetektor
erfasst einen Signalpegel auf der Übereinstimmungsleitung, um
anzuzeigen, ob Eingangsdatenbits, die auf den Datenspeicherzellbitleitungen
geliefert werden, mit Datenbits übereinstimmen,
die in zumindest einem der Datenfelder gespeichert sind. Die Datenspeicherzellfelder
könnten
in eine Hierarchie organisiert sein, wobei Maskenspeicherzellen
zwischen die Datenfelder geschaltet sind, um ein hierarchisches Maskieren
bereitzustellen. Eine allgemeine programmierbare Maskierung beliebiger
Datenfelder innerhalb der Gruppe wird unter Ver wendung gemultiplexter
Maskenspeicherzellen, die durch Umgehungsleitungen verbunden sind,
bereitgestellt. Die gemultiplexten Maskenspeicherzellen könnten eines
oder mehrere Maskenbits speichern, um es zu ermöglichen, dass eine Umgehungsleitung
mit Abschnitten der Übereinstimmungsleitung verbunden
ist, wodurch ein bestimmtes Datenspeicherzellfeld maskiert wird.
Gemäß dem jeweiligen
Dokument könnten
die Daten in einem Anfangsblock eines Datenpakets verwendet werden,
um auf eine gespeicherte Nachschlagtabelle zuzugreifen, um nachfolgende
Verarbeitungsschritte, die für
das Paket erforderlich sind, zu bestimmen. Ein Paketschalter kann
implementiert werden, der eine Nachschlagtabelle beinhaltet.
-
Der
Artikel „Real-Time
Mechanism for Accounting and Network Access Control", veröffentlicht
in IBM Technical Disclosure Bulletin, Band 37, Nr. 04A, April 1994
auf den Seiten 337–339
offenbart einen Echtzeitmechanismus für eine Abrechnung und Telekommunikationsnetzzugriffssteuerung.
Eine Abrechnung und Netzzugriffssteuerung werden an einer Verbindung
oder an Teilen der Verbindungsinformationen durchgeführt, z.B.
Quellenadresse, Zieladresse oder Tore. Diese Verbindungsinformationen
werden aus dem Paketanfangsblock extrahiert und in einer Tabelle
gespeicherter Adressen gesucht. Wenn die Adresse in der Tabelle
gefunden wird, werden die erforderlichen Abrechnungs- oder Zugriffssteueroperationen
durchgeführt.
Die Abrechnungssteuerung einer derartigen Lösung besteht aus einer Abrechnungstabelle
und einer Abrechnungszustandsmaschine.
-
Das
Patent 5,351,243 der Vereinigten Staaten offenbart einen Überwacher
für Pakete
auf einem lokalen Netz, einschließlich eines Satzes von Logikschaltungen,
die in einem Computerchip implementiert sind, eines Speichers, der
mit dem Computerchip in Wechselwirkung steht, um Überwachungsdaten
an die Logikschaltungen zu liefern, einer Logik zum Empfangen eines
Pakets von dem lokalen Netz und eines Parsers zur Verarbeitung von
Bits des Pakets, wie dieselben empfangen werden. Der Parser verwendet
die Überwachungsdaten
in Verbindung mit den empfangenen Bits, um Weiterleitungsdaten bereitzustellen,
die den Typ des empfangenen Pakets anzeigen. Der Überwacher
verwendet die Weiterleitungsdaten, um zu bestimmen, ob das empfangene
Paket in einem Speicher gespeichert, verworfen oder an andere Host-Computer in dem Netz
weitergeleitet wird. Der Überwacher
verwendet die Typinformationen von den Weiterleitungsdaten, um Zählwertinformationen
der unterschiedlichen Typen von Paketen beizubehalten, die an einen
Host-Computer oder eine entfernte Überwachungsvorrichtung weitergeleitet
werden könnten.
-
Die
CA 2237986 C offenbart
eine Vorrichtung zum Sammeln von Netzstatistikinformationen, die
eine elektronische Nachschlagtabelle aufweist, die eine Zustandsmaschine
aufweist, die einen inhaltsadressierbaren Speicher (CAM) umfasst,
sowie einen Direktzugriffsspeicher (RAM), die in Serie geschaltet
sind. Diese Architektur ist aufgrund der geringeren Geschwindigkeit
eines CAM verglichen mit einem RAM inhärent langsam.
-
3. Lösung des
Problems
-
Die
vorliegende Erfindung löst
das obige und weitere Probleme in Protokollanalysatoren des Stands der
Technik durch eine Vorrichtung zum Sammeln von Netzstatistikinformationen
gemäß Anspruch
1.
-
Die
Erfindung liefert nicht nur einen extrem schnellen Protokollanalysator,
sie tut dies auch auf eine Weise, die es erlaubt, dass das Statistiksammelsystem
mit relativ geringen Kosten hergestellt und umprogrammiert werden
kann. Zahlreiche weitere Merkmale, Aufgaben und Vorteile der Erfindung
werden aus der folgenden Beschreibung in Verbindung mit den beigefügten Zeichnungen
ersichtlich werden.
-
Kurze Beschreibung
der Zeichnungen
-
1 ist
ein Blockdiagramm, das eine verallgemeinerte logische Beschreibung
eines Protokollanalysators gemäß der Erfindung
zeigt;
-
2 ist
ein Blockdiagramm, das eine detaillierte logische Beschreibung eines
bevorzugten Ausführungsbeispiels
eines Protokollanalysators gemäß der Erfindung
zeigt;
-
3 ist
ein Blockdiagramm, das die Hardware zeigt, mit der das bevorzugte
Ausführungsbeispiel
aus 2 implementiert wir
-
4 ist
ein Blockschaltschema des FIFO-Pufferabschnitts des Ausführungsbeispiels
aus 3;
-
5 ist
ein Blockschaltschema eines Statistikabschnitts des Ausführungsbeispiels
aus 3;
-
6 ist
ein Blockschaltschema des Rahmenanfangsblockpufferabschnitts des
Statistikabschnitts aus 5;
-
7 ist
ein Blockschaltschema des ASM-RAM-Verwalter-Abschnitts des Statistikabschnitts aus 5;
-
8 ist
ein Blockschaltschema des CAM-Verwalter-Abschnitts des Statistikabschnitts
aus 5;
-
9 ist
ein Blockschaltschema des Statistikzähler-Abschnitts des Statistikabschnitts
aus 5; und
-
10 ist
ein Flussdiagramm, das ein Beispiel des Parsens bzw. syntaktischen
Analysierens eines TCP/IP-Rahmens durch den Protokollanalysator
gemäß der Erfindung
zeigt.
-
Beschreibung
des bevorzugten Ausführungsbeispiels
-
1. Übersicht
-
Wie
oben erläutert
wurde, bezieht sich diese Offenbarung auf Protokollanalysatoren,
die üblicherweise verwendet
werden, um Informationen über
die Verwendung von Kommunikationsnetzen zu sammeln und zu speichern,
und insbesondere Paketnetze. In der Technik werden die gesammelten
Informationen üblicherweise
als „Statistiken" oder „Netzstatistiken" bezeichnet und so
werden wir diese Ausdrücke
verwenden, um die Informationen anzugeben, die durch die Protokollanalysatoren
gemäß der Erfindung
gesammelt werden. Es wird jedoch darauf verwiesen, dass die durch
den Protokollanalysator gemäß der Erfindung
gesammelten Daten unter Umständen
nicht statistischer Natur sind, da bei dem bevorzugten Ausführungsbeispiel
Informationen über
jedes auf einem Netz übertragene
Paket gesammelt werden können,
selbst bei Gigabit-Übertragungsraten.
-
In
der Elektroniktechnik hat der Ausdruck Zustandsmaschine die Bedeutung
Digitalelektronikhardware bekommen, die mit Hardwaregeschwindigkeiten
läuft;
der Ausdruck steht üblicherweise
im Kontrast zu prozessorbasierten Systemen, die unter Verwendung
einer Software arbeiten, und deshalb viel langsamer sind als reine
Hardwaresysteme. Bei der allgemeinsten Verwendung bedeutet jedoch
der Ausdruck manchmal ein beliebiges System, das mit einer diskreten
Logik arbeitet, was softwarebasierte Systeme umfassen könnte. Bei dieser
Offenbarung bedeutet Zustandsmaschine ein diskretes (im Gegensatz
zu analog) Logikelektroniksystem, das in Hardware implementiert
ist. Dies bedeutet bei dieser Beschreibung, dass der Ausdruck Zustandsmaschine
keinen Prozessor umfasst, auf dem ein Softwareprogramm läuft. Diese
Verwendung des Ausdrucks ist konsistent mit einer gegenwärtigen Verwendung
in der Technik, ist jedoch enger als die breitesten Verwendungen
des Ausdrucks.
-
In
dieser Beschreibung werden wir uns zur Einfachheit manchmal mit
der gleichen Zahl auf eine Signalleitung und das Signal, das durch
die Leitung getragen wird, beziehen. Dies reduziert die Ganzzahlen
in den Zeichnungen stark und sollte keine Verwirrung bewirken, da
in jedem Fall, in dem dies getan wird, die Leitung ein spezifiziertes
Signal trägt.
Die Leitung 30 in 1 z.B. trägt ein Datensignal 30.
In vielen Fällen
wird auch das Signal durch einen beschreibenden Namen, wie z.B. „Daten", was auf die Leitung 30 geschrieben ist,
bezeichnet.
-
Bezug
nehmend auf 1 ist ein verallgemeinertes
Blockdiagramm eines Protokollanalysators 15 gemäß der Erfindung
gezeigt. Dieses Blockdiagramm ist nützlich bei einem Einführen des
allgemeinen Konzepts dessen, wie das System gemäß der Erfindung einen komplizierten
Gegenstand, wie z.B. einen Paketnetzrahmen, in einer einfachen Weise
ohne Verwendung einer Software analysieren kann. Der verallgemeinerte
Protokollanalysator 15 umfasst einen Eingangspuffer 18,
eine Nachschlagtabelle, die eine algorithmische Zustandsmaschine
(ASM) 20 aufweist, und einen Statistikzähler 28. Der Eingangspuffer 18 akzeptiert
und speichert über
eine Leitung 17 Informationen, die auf dem PCI-Bus 16 laufen.
Er könnte
entworfen sein, um nur bestimmte Abschnitte der Businformationen,
wie z.B. Anfangsblöcke
und Abschlussblöcke,
nur Anfangsblöcke zu
akzeptieren und zu speichern oder könnte die Informationen abtasten,
wenn nur ein statistisches Bild des Busverkehrs erwünscht wird.
Puffer, die derartige Aufgaben ohne Software erzielen, sind in der
Technik bekannt. Die in dem Puffer 18 gespeicherten Informationen
werden mit einer geeigneten Zeitgebung an die Nachschlagtabelle 20 weitergeleitet,
so dass die Nachschlagtabelle 20 beschäftigt bleibt, solange Informationen
in dem Puffer 18 sind. Die Nachschlagtabelle 20 ist
logisch eine einfache Eins-zu-Eins-Tabelle, die einen ersten Abschnitt,
der einen digitalen Code speichert, der Datensegmenten von Interesse
entspricht, die auf dem Bus 16 laufen könnten, und einen zweiten Abschnitt
aufweist, der Instruk tionen bezüglich
dessen aufweist, was getan werden soll, wenn ein spezifisches Datensegment
gefunden wird. Die Nachschlagtabelle 20 vergleicht jedes
Stück Daten,
das auf der Leitung 30 eingeht, mit den Datensätzen in
dem ersten Abschnitt der Tabelle und spricht durch ein Ausgeben,
auf Leitungen 32, 34 und 36, vorbestimmter
Signale an, die in einer entsprechenden Position in dem zweiten
Abschnitt der Tabelle gespeichert sind. Auf dem einfachsten Pegel
könnte
die Ausgabe auf der Leitung 36 einfach Signale sein, die
die Netzstatistikinformationen darstellen, die bewirken, dass einer
oder mehrere Zähler
in den Statistikzählern 28 inkrementiert
werden. Die Tabelle könnte
z.B. ein Datensegment erkennen, das ein NovellTM-Paket
anzeigt, und einen Zähler
in den Statistikzählern 28 inkrementieren, der
die NovellTM-Pakete zählt. Gleichzeitig sagt sie
dem Eingangspuffer 18 über
die Leitung 34, neue Daten weiterzuleiten. Üblicherweise
jedoch ist die Ausgabe der Tabelle komplexer. Das Ergebnis eines
Prüfens
des Datensegments ist zweideutig und die Tabelle 20 gibt Signale
auf der Leitung 32 aus, die ihren Zustand verändern, d.
h. sie sagt sich selbst, das Datensegment weiter zu prüfen, um
die Zweideutigkeiten zu lösen.
Oder die Ausgabe könnte
eine Kombination von Signalen auf den Leitungen 32, 34 und 36 sein.
So ist die Nachschlagtabelle 20 eine Zustandsmaschine:
d. h. für
jedes vorgelegte diskrete Datensegment gibt sie bestimmte vorbestimmte
diskrete Signale aus, die dazu führen,
dass Netzstatistiken aufgezeichnet werden. Die Philosophie des Systems 15 besteht
darin, über
eine Hardware 20 zu verfügen, die im wesentlichen ignorant
gegenüber
der Protokollstruktur ist, jedoch in der Lage ist, einen Algorithmus
zum Decodieren von Protokollen zu unterstützen, die in einem Basissatz
von Instruktionen in dem „Nachschlag"-Teil der Zustandsmaschine
codiert werden sollen.
-
Zusammenfassend
fordert die algorithmische Zustandsmaschine 20 (ASM) abhängig von
der Eingangsdatenstruktur und dem gegenwärtigen Zustand ein neues Stück Daten
an, zeichnet einige Statistiken auf, fragt nach einer bestimmten
auszu führenden
Instruktion und bewegt sich weiter zu dem nächsten Zustand. Diese Instruktionen
könnten
sein: Inkrementieren eines Zählwerts
in einem Statistikregister; Hinzufügen eines neuen Eintrags zu
den Statistikzählern;
Erzeugen eines Momentaufnahme-Auslöseimpulses, der über die
Leitung 40 einem Erfassungs-RAM (2 und 3)
sagt, ein spezifisches Datensegment zu speichern; weitere Analyse
des Datenabschnitts; und andere Systemverwaltungsfunktionen, wie
z.B. Durchführen
eines Vergleichs, was unten beschrieben wird.
-
In
dieser Beschreibung beschreiben wir ein Ausführungsbeispiel der algorithmischen
Zustandsmaschine (ASM) 15, die eine Protokollbestimmung
durchführt.
Zusätzlich
zu der Protokollbestimmung kann ein Algorithmus geschrieben und
in der Nachschlagtabelle 20 gespeichert werden, um Statistiken über Adressinformationen
zu sammeln, Knotenstatistiken bereitzustellen und Verbindungsstatistiken
bereitzustellen. Die Komplexität
des ausgeführten
Algorithmus beeinflusst die Anzahl von Rahmen pro Sekunde, die analysiert werden
können.
Durch ein Verwenden mehrerer Nachschlagtabellen 20 jedoch,
die an sequentiellen Rahmen arbeiten, kann ein System aufgebaut
werden, das so viele Rahmen wie erwünscht in so viel Details wie
erwünscht
handhaben kann.
-
Aus
der obigen allgemeinen Beschreibung ist klar, dass die Nachschlagtabelle 20 eine
große
Menge an Daten halten und sehr schnell arbeiten muss. Die Kombination
eines schnellen inhaltsadressierbaren Speichers (CAM) und eines
schnellen Direktzugriffspeichers (RAM) ist in der Lage, diese Anforderung
zu erfüllen. Ein
CAM passt Eingangsdaten mit Daten zusammen, die in dem Speicher
enthalten sind, und erzeugt eine Adresse, die den Daten entspricht.
Ein RAM liefert eine Ausgabe, die in dem Speicher an der Adresse,
die in den Speicher eingegeben wird, gespeichert wird. Wie diese
Kombination als eine große
schnelle Nachschlagtabelle wirken kann, kann Bezug nehmend auf 2 gesehen
werden, die ein logisches Blockdiagramm des bevorzugten Ausfüh rungsbeispiels
des Protokollanalysators 15 gemäß der Erfindung ist. Es wird
angemerkt, dass keine Eins-zu-Eins-Entsprechung zwischen jedem Abschnitt
aus 1 und jedem Abschnitt aus 2 vorliegt,
da 1 vereinfacht wurde, um die Konzepte der Erfindung
besser einzuführen.
Es wird angemerkt, dass 2 auch eine vereinfachte Version
des tatsächlichen
Protokollanalysators 15 ist: er umfasst z.B. nicht alle
Funktionen des bevorzugten Ausführungsbeispiels
des ASM 20 (die unten vollständig beschrieben ist), so dass
die essentiellen Funktionen in dieser Übersicht nicht verschleiert
werden. Der vereinfachte Protokollanalysator 15 umfasst
einen Eingangspuffer 18, einen Adresserzeuger 52,
ein Vergleichsregister 54, eine Maske 56 und eine
algorithmische Zustandsmaschine (ASM) 20, die eine CAM-Verwalterlogik 60,
die einen CAM 62 umfasst, einen ASM-RAM 64 und
Auswähler 72, 74 und 76 umfasst.
Der Protokollanalysator 15 umfasst außerdem einen Zähler-RAM 66,
ein Inkrementier-Latch 67 und
einen Addierer-Latch 68. Ein Erfassungs-RAM 80,
der nicht Teil der ASM 20 ist, sondern durch die Ausgabe
der ASM 20 getrieben wird, ist in 2 ebenso gezeigt.
Das Logiksystem aus 2 empfängt eine Eingabe auf einer
Leitung 17 von einem Bus 16 (1), was
in 2 durch das „B" angezeigt ist. Bei
dem bevorzugten Ausführungsbeispiel
ist der Bus 16 ein PCI-Bus. In dieser Figur und nachfolgenden
Figuren sind die Leitungen, wie z.B. 81, oft Mehrleiterleitungen, wobei
die Anzahl von Leitern und so die Anzahl von Bits, die auf einer
Leitung übertragen
werden können, durch
einen Schrägstrich
und eine Zahl angezeigt wird. Das „32/"-Zeichen an der Leitung 81 z.B.
zeigt an, dass diese in der Lage ist, bis zu 32 Bits gleichzeitig
zu tragen.
-
Da
das in 2 gezeigte Ausführungsbeispiel nur eine Protokollbestimmung
durchführt,
muss nur der Rahmenanfangsblockabschnitt jedes Rahmens analysiert
werden. So umfasst der Eingangspuffer 18 (1) einen
FIFO-Pufferabschnitt 18A (3), der
den Rahmenanfangsblock von jedem Rahmen aussortiert und denselben
an einen Rahmenanfangsblockpuffer 18B (6)
leitet. Eingehende 64 Bit breite Daten auf dem PCI-Bus 16,
der eine Burst-Natur besitzt, werden einem Ent-Burst-Vorgang unterzogen und in dem
FIFO-Pufferabschnitt 18A abgeschnitten und dann in den
Rahmenanfangsblockpuffer 18B geschrieben, um es zu ermöglichen,
dass die ASM 20 Direktzugriff auf den Datenpaketanfangsblock
hat. Wie unten detaillierter erläutert wird,
leitet der Eingangspuffer 18 32-Bit-Datensegmente auf der
Leitung 30 an die Zustandsmaschine 20.
-
Der
CAM 62 und der ASM-RAM 64 sind mit dem Protokollbestimmungsalgorithmus
programmiert. Es ist die Aufgabe der ASM 20, den Protokollbestimmungsalgorithmus
in dem CAM 62 und dem ASM-RAM 64 zu verwenden,
um die verschiedenen Felder jedes Rahmens der Reihe nach zu prüfen und
Entscheidungen darüber,
was das Protokoll ist, durchzuführen.
Der RAM ist schneller als der CAM bei der Durchführung von 16-Bit-Nachschlägen und
wird zur Entscheidungsfindung bei Protokollfeldern mit 8 Bits oder
weniger verwendet. Der CAM ist langsamer als der ASM-RAM zum Nachschlag,
da derselbe mehr Zyklen benötigt,
um zu arbeiten, und jeder Zyklus ist langsamer als ein ähnlicher
RAM-Zyklus, er kann jedoch Strukturen mit einer Breite von bis zu
128 Bits übereinstimmen.
Dies ist besonders nützlich
für Adress-
und Torfelder. Es ist am einfachsten, die Funktionsweise der ASM 20 zu
verstehen, indem zuerst die Eingabe und Ausgabe des CAM 62 und des
ASM-RAM 64 verstanden wird, die sehr wesentlich für das System
sind, und indem dann die anderen Funktionen, die weniger wichtig
sind, betrachtet werden. Das allgemeine Format der Eingangs- und
Ausgangssignale des CAM und ASM-RAM ist in Tabelle I gezeigt.
-
-
Die
ASM-RAM-Eingabe beträgt
immer 16 Bits, die CAM-Eingabe beträgt 32 Bits (siehe unten) und
die Ausgabe beider der CAM/ASM-RAM-Kombination und des ASM-RAM beträgt 38 Bits.
Die ersten 38 Bits definieren einen spezifischen Abschnitt des CAM
und ASM-RAM, in dem Codes für
nachfolgende Zyklen des Analysevorgangs gespeichert sind. Aus Bequemlichkeit
sind diese acht Bits in zwei Vier-Bit-Abschnitte unterteilt, wobei
die ersten derselben der „Stapel" genannt werden und
die zweiten derselben die Pegel genannt werden. Allgemein entspricht
der Stapel dem bestimmten Protokolltyp, während der Pegel der Anzahl
in einer Sequenz von Schritten entspricht, die erforderlich sind,
um den Protokolltyp zu parsen oder analysieren. Zusammen definieren
der Stapel und der Pegel den Zustand der Zustandsmaschine 20.
So kann ein beliebiger Zyklus in der Analysesequenz durch den Zustand
x, y definiert sein, wobei x der Stapel ist und y der Pegel ist.
Die letzten acht Bits der ASM-RAM-Eingabe sind die Struktur von
dem Rah-menanfangsblock, der zusammengepasst werden soll, und die
letzten 24, 56, 88 oder 120 Bits der CAM-Eingabe sind die Struktur
von dem Rahmenanfangsblock, die zusammengepasst werden soll. Der
CAM-Verwalter 60 ist
in der Lage, bis zu vier nachfolgende 32- Bit-Datenbits zu speichern, so dass
derselbe dem CAM 32, 64, 96 oder 128 Bits vorlegen kann. Die letzten 30
Bits der Ausgabe sind in vier Bits, die die Maske definieren, sechs
Bits, die den Adressversatz definieren, d. h. das Delta-Adresssignal, zwölf Bits
allgemeiner Instruktionen und acht Bits Zählerindexinformationen unterteilt.
Zur Einfachheit sind in 2 nur zwei allgemeine Instruktionen,
d. h. die Vergleichsinstruktion und die Auslöseimpulsinstruktion gezeigt
und erläutert.
Wie in der detaillierten Beschreibung unten zu sehen sein wird, gibt
es viele zusätzliche
Instruktionen, die durch den CAM 62 und den ASM-RAM 64 ausgegeben
werden.
-
Um
die Funktionsweise der ASM 20 zu verstehen, nehmen wir
an, dass ein anfängliches
Datensegment von einem neuen Rahmen gerade durch den Rahmenanfangsblockpufferabschnitt 50 ausgegeben
wurde. Der Stapel und Pegel für
einen neuen Rahmen sind beide als Null definiert, d. h. der Zustand
ist 0,0. Wenn das Datensegment acht Bits oder weniger ist, geht
es zu dem ASM-RAM 64, wie durch die Leitung 82 angezeigt
ist. Da der Stapel und der Pegel beide Null sind, sind die durch
die Zustandsleitung 84 hinzugefügten Bits Null und der Auswähler 76 ist
in dem Vorgabezustand, der es dem Datensegment erlaubt, direkt zu
dem ASM-RAM 64 durchzulaufen. Wenn der Vorgabezustand 0,0
derart war, dass das Datensegment von Interesse mehr als acht Bits
beträgt,
geht es über
die Leitungen 81, 85, 86 und 86A zu
dem CAM-Verwalter 60 und
der Maske 56, da der Vorgabezustand des Auswählers 76 der
ist, die CAM-Ausgabe weiterzuleiten. Wenn das erste Datensegment
mehr als acht Bits beträgt
und der CAM eine Übereinstimmung
findet, gibt der CAM auf der Leitung 87 eine 10-Bit-Adresse
aus, die dem Segment entspricht, wobei vorne in der Adresse die
Bits 111111 hinzugefügt
werden, was ein eindeutiger Code ist, der dem ASM-RAM anzeigt, dass
er eine Eingabe von dem CAM erhält.
Der Auswähler 74 leitet
dies an den ASM-RAM, da der Vorgabezustand des Auswählers Weiterleiten
ist. Wenn keine Übereinstimmung
vorliegt, geht die Keine-Übereinstimmung-Leitung 88 nach
Hoch und der Auswähler 74 leitet
das Signal nicht auf der Leitung 87 weiter, sondern leitet
statt dessen ein eindeutiges Signal weiter, d. h. das Signal 1111,
0000, verkettet mit dem Zustand, d. h. die ersten acht Bits sind
1111, 0000 und die letzten acht Bits sind der gegenwärtige Zustand,
der durch den Stapel und den Pegel definiert ist. So empfängt der
ASM-RAM 64 eine 16 Bit-Adresse, wie auch immer das erste
Datensegment ist, das der Zustandsmaschine 20 vorgelegt
wird.
-
Ansprechend
auf die Adresse erzeugt der ASM-RAM eine Anzahl von Ausgaben, die
folgendes umfassen können:
eine 6-Bit-Delta-Adresssignalausgabe
auf der Leitung 92, um den Erzeuger 52 zu adressieren, der
eine neue Adresse erzeugt, um auf ein neues 32-Bit-Wort aus dem
Rahmenanfangsblockpuffer 18B zuzugreifen; einen neuen Zustand
x, y basierend auf dem Protokolltyp (zu Beginn unbekannt und auf
0 gesetzt) und einem Zählwert
(Pegel), wobei dieser Zustand auf der Leitung 90 ausgegeben
wird; eine Maskensignalausgabe auf der Leitung 91, die
durch das Filter 56 interpretiert wird, um nur die bestimmten
Bytes der Rahmenanfangsblockpufferausgabe weiterzuleiten, die geprüft werden
müssen;
Instruktionsbits, von denen eines, das auf der Leitung 89 ausgegeben
wird, auswählt,
ob der RAM (16-Bit-Nachschlag) oder CAM (32-, 64-, 96- oder 128-Bit-Nachschlag)
im nächsten
Zyklus verwendet wird, und weitere, die auf der Leitung 93 an
ein Vergleichsregister 54 ausgegeben werden, was unten
erläutert
wird. Wenn z.B. das erste geprüfte
Byte das Typ/Länge-Feld
(MSB) ist, wird der RAM-Nachschlag verwendet, da dieses Feld nur
8 Bits breit ist. Abhängig
davon, ob dieses Feld >=
0 × 06
ist, gibt der RAM die nächsten
Rahmenanfangsblockorte an (über
einen kumulativen Adressversatz), die geprüft werden sollen, sowie, wie
dieselben geprüft
werden sollen (RAM-Nachschlag oder CAM-Nachschlag). Auf diese Weise
schreitet die Zustandsmaschine 20 durch den Algorithmus,
der in der CAM- und ASM-RAM-Kombination gespeichert ist. An einer
bestimmten Stufe in dem Protokoll sind spezielle Aktionen erforderlich,
wie z.B. ein Zählen einer
Instanz eines Nachrichtentyps oder Durchführen eines Vergleichs von Quellen-
und Zieltorfeldern. Diese „speziellen" Funktionen werden
durch eine Ausgabe aus dem ASM-RAM ausgelöst. Beispiele dieser speziellen
Instruktionen sind: Schreiben des ersten Worts in das CAM-Zielwortregister;
Schreiben des zweiten, dritten oder vierten Worts in das CAM-Zielwortregister;
Erhalten der CAM-Übereinstimmungsadresse;
Rücksetzen
des Algorithmus, wenn das Ende der Kopfelementverarbeitung erreicht
wurde; Instruktionen an das Inkrementierlatch 67 über die
Leitung 94, den Rahmenzähler
um Eins zu inkrementieren, und/oder Instruktionen an das Addiererlatch 68 über die
Leitung 95, den Byte-Zähler
um eine bestimmte Anzahl von Bytes weiterzubewegen, um die Bandbreite
eines Protokolls von Interesse aufzuzeichnen; Ausgabeinstruktionen
auf der Leitung 93 and das Vergleichsregister 54,
zwei 16-Bit-Zahlen zu vergleichen und die niedrigste auszuwählen; Prüfen auf
ISL-Anfangsblock; Erzeugen eines Auslöseimpulssignals auf der Leitung 40 an
den Erfassungs-RAM 80, Hinzufügen einer unbekannten Datenstruktur
zu Liste bekannter Datenstrukturen in dem CAM; Auswählen einer
32-, 64-, 96- oder 128-Bit-CAM-Struktur-Übereinstimmung. Die Rahmengröße wird
auf der Leitung 31 in das Latch 68 eingegeben,
um es demselben zu ermöglichen,
die Anzahl von Bytes des Protokolls zu bestimmen, und der Erfassungs-RAM 80 kommuniziert
mit dem PCI-Bus über
die Leitung 33, um es demselben zu ermöglichen, einen Rahmen oder
Satz von Rahmen ansprechend auf das Signal auf der Auslöseimpulsleitung 40 zu
erfassen.
-
Das
Logiksystem aus 2 kann in vielen Weisen implementiert
sein. Ein exemplarisches und bevorzugtes Ausführungsbeispiel folgt.
-
2. Detaillierte
Beschreibung
-
3 zeigt
ein Blockdiagramm der Hardwareimplementierung des bevorzugten Ausführungsbeispiels des
Protokollanalysa tors 15. Er umfasst einen FIFO-Pufferabschnitt 18A,
eine ASM 20 und einen Erfassungs-RAM 80. Bei diesem
Ausführungsbeispiel
umfasst die ASM zwei Statistikabschnitte 314 und 316.
Der FIFO-Pufferabschnitt 18A sendet abwechselnd Rahmen
an den ersten Statistikabschnitt 314 und dann den zweiten
Statistikabschnitt 316. Die Erfindung zieht in Betracht,
dass es Ausführungsbeispiele
mit einem Statistikabschnitt geben könnte, sowie Ausführungsbeispiele
mit drei oder mehr Statistikabschnitten. Allgemein wird die Anzahl
von Statistikabschnitten durch die Zeit bestimmt, die es dauert,
bis ein Statistikabschnitt einen Rahmen vollständig analysiert hat, sowie
die erwartete Übertragungsrate
von Rahmen auf dem Bus 16. Die Anzahl von Statistikabschnitten
ist so ausgewählt,
dass bei einem Normalbetrieb alle Rahmen, die auf dem Bus 16 laufen,
analysiert werden können.
Je tiefer ein Rahmen analysiert werden soll, desto mehr Statistikabschnitte
gibt es, da eine tiefere Analyse mehr Zeit erfordert. Da jeder Statistikabschnitt
identisch ist, erläutern wir
detailliert nur den ersten Abschnitt 314 und seine Wechselwirkung
mit dem FIFO-Pufferabschnitt 18A und dem Erfassungs-RAM 80.
-
Der
FIFO-Pufferabschnitt 18A umfasst ein frei programmierbares
Gatearray (FPGA) 306, genannt „Puffer-FPGA" und ein Zuerst-Hinein-Zuerst-Hinaus-(FIFO-)
Register 310, die auf Leitungen 303 und 305 kommunizieren.
Das Puffer-FPGA kommuniziert mit Statistikabschnitten I und II auf
Leitungen 307 bzw. 308. Wie oben angezeigt ist,
kommuniziert der Erfassungs-RAM 80 mit dem PCI-Bus 16 auf
einem Unterbus 33 und mit jedem Statistikabschnitt über eine
Auslöseimpulsleitung 40.
Der Statistikabschnitt I umfasst ein FPGA mit Namen „Statistik-FPGA", einen CAM 62,
einen Zähler-RAM 66 und
einen ASM-RAM 64. Bei dem bevorzugten Ausführungsbeispiel
sind der RAM 64 und der RAM 66 separate Blöcke, die
in mehreren RAM-ICs implementiert sind.
-
Bezug
nehmend auf 4 ist ein Blockdiagramm gezeigt,
das die Details des FIFO-Pufferabschnitts 18A darstellt.
Er umfasst einen FIFO 310, eine Handshake- bzw. Quittungsaustauch-Logikeinheit 410,
eine Gegenwärtige-Adresse-Extrahieren-Logikeinheit 412,
eine FIFO-Steuerlogikeinheit 414, eine Prozessorschnittstellenlogik 416 und
einen Auswähler 422.
Er umfasst außerdem
eine PCI-Taktleitung 430 und einen Rahmen, der einfach
Signale durch den FIFO-Pufferabschnitt 18A an den Statistikabschnitt 314 weiterleitet. Die
Handshake-Logikeinheit 410 führt Funktionen durch, um den
Austausch von Daten zwischen dem FIFO-Pufferabschnitt 18A und
Prozessoren und Peripheriegeräten,
die mit dem Bus 16 verbunden sind, zu koordinieren, wie
in der Technik bekannt ist. Die Logikeinheit 412 überwacht
die Signale FRAME, TRDY und IRDY des PCI-Bus und extrahiert die
gegenwärtige
Adresse, auf die zu einem beliebigen bestimmten Zeitpunkt zugegriffen
wird. Sie erfasst außerdem
Schreibzyklen zwischen einem Prozessor an einem Ende des PCI-Bus 16 und
einem Speicher an dem anderen Ende des Bus, die durch einen vorbestimmten
Adressbereich definiert sind. Schließlich latcht sie die PCI-Adresse
des gegenwärtigen
Rahmens und erzeugt eine Prozessorunterbrechung, wenn die Auslöseimpulsleitung 437 freigegeben
wird. Die FIFO-Steuerlogikeinheit 414 erfasst den Start von
Rahmenanfangsblöcken
und gibt einen Befehl aus, das Schreiben von bis zu 128 Bits nachfolgender
Daten in den FIFO zu beginnen. Der Rahmenanfangsblock wird an der
ansteigenden Flanke des PCI-Takts in den FIFO geschrieben. Das Schreiben
wird vorzugsweise 8 Bytes breit durchgeführt. Die FIFO- Steuer-Logikeinheit 414 initialisiert
außerdem
ein Lesen durch den Statistikabschnitt von dem FIFO 310 auf
ein Empfangen einer Rahmenanforderung auf der Leitung 436 von
dem Statistikabschnitt 314 hin. Wenn das FIFO mit dem Senden
eines Rahmens beginnt, wird ein Rahmenstartsignal auf der Leitung 435 gesendet.
Das FIFO informiert außerdem
den Statistikabschnitt, dass es einen Rahmen oder weniger gespeichert
hat, mit einem „Fast-Leer"-(F-Leer-) Signal
auf der Leitung 434. Das FIFO arbeitet in zwei 32-Bit-Unterabschnitten,
wobei jeder derselben Daten auf einer von Leitungen 432 bzw. 433 sendet.
Der Auswähler 422 wählt aus,
welche der Leitungen 432 und 433 gelesen werden
soll, ansprechend auf ein Signal von dem Statistikabschnitt 314 auf der
Leitung 440, und sendet die Daten auf der Leitung 307 an
den Statistikabschnitt 314. Die Prozessorschnittstelle 416 stellt
eine schnittstellenmäßige Verbindung
zu einem Prozessor auf dem PCI-Bus 16 her, wenn der CAM 62 und
der ASM-RAM 64 programmiert werden und die Statistiken
von dem Statistik-RAM 66 gelesen werden.
Sie wandelt PCI-Registerzugriffe auf den Statistikabschnitt 314 in
eine Multiplex-Bus-(MUX-Bus-) Anordnung zur Verbindung mit den FPGAs
in dem Statistikabschnitt um. Insbesondere weist die Schnittstelle 416 einen
Multiplexer auf, der eine 32-Bit-PCI-Adresse in zwei 16-Bit-Wörter umwandelt,
und leitet dieselben seriell auf der MUX-Bus-Leitung 439 weiter,
und wandelt außerdem
ein 32-Bit-PCI-Datensegment
in zwei 16-Bit-Datenwörter
um, die dieselbe seriell auf der MUX-Bus-Leitung 439 weiterleitet.
Dies erlaubt es, dass die Anzahl von Zwischenverbindungsleitungen
zwischen Chips in dem System 15 wesentlich reduziert werden
kann, ohne eine Leistung des Systems zu beeinträchtigen. Dies heißt, dass,
während
es länger
dauert, bis die Signale auf dem MUX-Bus 439 weitergeleitet
sind, dieser Bus nur verwendet wird, wenn das System 15 programmiert
und gelesen wird, und beeinflusst so nicht die Geschwindigkeit eines
Analysierens von Daten. Die gesamte Logik in dem FIFO-Pufferabschnitt 18A,
mit Ausnahme des FIFO, ist mit dem Puffer-FPGA 306 implementiert.
Weitere temporäre
Speicherhardware, wie z.B. ein RAM, könnte anstelle des FIFO eingesetzt
werden, der FIFO wird jedoch bevorzugt, da dies einen einfachen
Weg darstellt, um die Leistung des Systems 15 zu verbessern, so
dass derselbe nur mit der Durchschnittsrate der Datenübertragung
auf dem Bus 16 standhalten muss, und nicht der momentanen Übertragungsrate.
Dies bedeutet, dass das FIFO es erlaubt, dass Daten in schnellen Bursts
ankommen, jedoch mit einer geringeren Durchschnittsrate analysiert
werden können,
die langsamer ist als die Spitzen-Burst-Rate.
-
Bezug
nehmend auf 5 stellt ein Blockdiagramm allgemein
die Logikorganisation des Statistikabschnitts 314 dar.
Es sollte zu erkennen sein, dass die tatsächliche Hardware, aus der der
Abschnitt 314 aufgebaut ist, relativ einfach ist, und ist
in 3 gezeigt. In dieser und nachfolgenden Figuren
werden wir uns auf die Logikorganisation konzentrieren, die die
Programmierung des Statistik-FPGA 320 und die Verbindung
des Statistik-FPGA mit dem CAM 62 und den RAMs 64 und 66 definiert.
Mit Ausnahme des Erfassungs-RAM 80 weist 5 im
Wesentlichen den gleichen Inhalt auf wie 2, mit der
Ausnahme, dass die Signale in 5 detaillierter
gegeben sind; die Nummerierung in 2 ist auf 5 übertragen,
wo die Teile identisch sind. Der Statistikabschnitt 314 umfasst
einen Rahmenanfangsblockpufferabschnitt 50, einen CAM-Verwalter 60,
einen ASM-RAM-Verwalter 70,
einen Statistikzählerabschnitt 520 und
eine MUX-Bus-Schnittstelle 510. Die Signale PCI-Takt, Daten,
F-Leer und Rahmen-Start
werden von dem FIFO-Pufferabschnitt 18A in den Rahmenanfangsblockpufferabschnitt 50 auf
Leitungen 430, 307, 434 bzw. 435 eingegeben
und die Signale Auswahl und Rahmenanforderung gehen von dem Rahmenanfangsblockpufferabschnitt 50 auf
Leitungen 440 bzw. 436 zu dem FIFO-Pufferabschnitt 18A.
Die Signale Durchgeführt,
Delta-Adresse, Vergleich,
Maske und Zustand werden von dem ASM-RAM-Verwalter 70 in den Rahmenanfangsblockpufferabschnitt 50 eingegeben.
Die RAM-Eingangsstruktur (RIP) wird durch den Rahmenanfangsblockpufferabschnitt 50 auf
der Leitung 83 an den ASM-RAM-Verwalter 70 ausgegeben
und die CAM-Eingangsstruktur (CIP) wird durch den Rahmenanfangsblockpufferabschnitt 50 auf
der Leitung 86A an den CAM-Verwalter 60 ausgegeben.
Das MUX-Bus-Signal wird von dem FIFO-Pufferabschnitt 18A auf
der Leitung 439 in die MUX-Bus-Schnittstelle 510 eingegeben. Das
Rahmengrößensignal
wird auf der Leitung 31 an den Statistikzähler 520 ausgegeben,
während
die MUX-Bus-Schnittstelle mit dem CAM-Verwalter, dem ASM-RAM-Verwalter
und dem Statistikzähler 520 über einen
internen Bus 530 kommuniziert. Der CAM-Verwalter 60 empfängt die
Signale CAM-Lesen, CAM-Schreiben, Ansammeln, CAM-Zyklus Setzen und
Zustand von dem ASM-RAM-Verwalter 70 auf der Leitung 535.
Der CAM-Verwalter gibt die CAM-Ausgabestruktur
und das Keine-Übereinstimmung-Signal
auf Leitungen 87 bzw. 88 an den ASM-RAM-Verwalter
aus. Der ASM-RAM-Verwalter
gibt die Signale Index, Inkrementieren und Bytes-Hinzufügen zusätzlich zu
den anderen oben erwähnten
Ausgaben an den Statistikzählerabschnitt 520 aus.
-
Der
Rahmenanfangsblockpufferabschnitt 50 liest Daten von dem
FIFO 310 (4), wenn das F-Leer-Signal anzeigt,
dass gespeicherte Rahmen verfügbar
sind. Der 32 Bit breite Rahmenanfangsblock wird unter Verwendung
des PCI-Takts in den Rahmenanfangsblockpufferabschnitt 50 getaktet
und braucht 480 Nanosekunden (nS) zur Übertragung des Minimums von
64 Bytes des Anfangsblocks und bis zu 960 nS für das Maximum von 128 Bytes
des Anfangsblocks. Der Rahmenanfangsblockpufferabschnitt 50 erzeugt
sowohl die RAM- als auch die CAM-Nachschlagstruktur
basierend auf Adressierungs-, Zustands-, ISL-Prüf-, Vergleichs- und Maskeninformationen
von dem ASM-RAM-Verwalter.
Wenn ein CAM-Zugriff zeitlich geplant wird, liefert der CAM-Verwalter
entweder die CAM-Adresse bei der Strukturübereinstimmung oder er zeigt
Keine-Übereinstimmung
an. Der Typ von CAM-Zugriff (1-, 2-, 3- oder 4-Wort) kann vor der
tatsächlichen
Strukturübereinstimmung über die
CAM-Zyklus-Setzen-Instruktion
von der ASM aufgebaut werden. Der CAM-Verwalter kann auch aufgebaut
sein, um automatisch eine unbekannte Struktur zu seiner Liste bekannter
Strukturen hinzuzufügen. Der
ASM-Verwalter erzeugt die Instruktionen für den nächsten Zyklus basierend auf
seiner vorprogrammierten Nachschlagtabelle. Um Statistiken zu sammeln,
liefert die ASM einen Zählerindex
und eine Instruktion zum Inkrementieren eines der beiden zugeordneten
Zähler
und/oder Hinzufügen
der Rahmengröße, wie
durch das Rahmengrößensignal
auf der Leitung 31 gegeben, zu dem anderen zugeordneten
Zähler.
Das „Index"-Signal sagt dem
Statistikzähler,
auf welchen der Zähler
zugegriffen werden soll. Wenn der ASM-Verwalter anzeigt, dass ein
Momentaufnahme-Auslöseimpuls
erzeugt werden soll, sagt er dies dem FIFO-Puffer 18A auf
der Leitung 437, welcher die PCI-Adresse zwischenspeichert,
und unterbricht den Prozessor und sagt außerdem dem Erfassungs-RAM über die
Leitung 40, den Rahmen bei dieser PCI-Adresse zu erfassen.
-
Bezug
nehmend auf 6 ist ein detailliertes Logikdiagramm
des Rahmenanfangsblockpufferabschnitts 50 gezeigt. Der
Rahmenanfangsblockpufferabschnitt 50 umfasst einen Zwischen-Schalter-Verbindungs-
(ISL-) Anfangsblockdetektor 704, einen Ladeadresserzeuger 606,
eine Ladesteuerung 608, einen Adresserzeuger 52,
einen Komparator 54, einen Maskenerzeuger 56,
einen ISL-Signalerzeuger 612 und einen Rahmenanfangsblockpuffer 18B,
der einen RAM-Abschnitt 620, der in acht 16 × 8-Bit-Register
unterteilt ist, Auswähler 630, 632 und 72,
acht RAM-Eingangsauswähler,
die in einen oberen Satz 634 von vier Auswählern und
einen unteren Satz 635 von vier Auswählern unterteilt sind, und
acht RAM-Ausgangsauswähler 636,
die in einen oberen Satz 623 von vier Auswählern und
einen unteren Satz 624 von vier Auswählern unterteilt sind, umfasst.
Ansprechend auf das Prüf-ISL-Signal,
das von dem ASM-RAM-Verwalter 70 auf der Leitung 96 eingegeben
wird, liest der ISL-Detektor das Datensignal von dem FIFO-Puffer 18A auf
der Leitung 307 und gibt ein Signal an den ISL-Signalerzeuger 612 auf
der Leitung 640 aus, wenn ein ISL-Signal erfasst wird.
Die Datenleitung 307 ist auch mit dem Dateneingang auf
jedem der RAMs 620 verbunden. Das PCI-Taktsignal auf der
Leitung 430 und das Rahmenstartsignal auf der Leitung 435 werden
in den Ladeadresserzeuger 606 eingegeben, dessen Ausgabe
an jeden der Auswähler 634 über die
Leitung 644 angelegt wird. Das F-Leer-Signal auf der Leitung 434 wird
an die Ladesteuerung 608 angelegt, die das Auswahl- und
Rahmenanforderung-Signal auf Leitungen 440 bzw. 436 ausgibt.
Die Ladesteuerung 608 gibt außerdem Auswahlsignale an die
vier oberen RAM-Eingangsauswähler 634 und
Auswähler 630 und 632 über die
Leitung 651 und an die vier unteren RAM-Eingangsauswähler 635 über die
Leitung 652 aus. Das Durchgeführt-Signal auf der Leitung 641 wird
in die Ladesteuerung 608 und den Adresserzeuger 52 eingegeben.
-
Das
Delta-Adresse-Signal auf der Leitung 92 wird in den Adresserzeuger 52 eingegeben.
Der Adresserzeuger 52 gibt Signale an einen Auswähler in
den oberen RAM-Eingangsauswählern 634 und
einen Auswähler
in den unteren RAM-Eingangsauswählern 635 über jede
von vier Adressleitungen 655 aus. Der Adresserzeuger gibt
außerdem
ein Auswahlsignal an jeden von Auswählern 636 über die
Leitung 643 aus. Bei jedem der Auswähler 634 und 635 ist
der Ausgang mit dem Adresseingang eines entsprechenden der RAM-Register 620 verbunden.
Die Ausgabe jedes RAM-Registers in dem oberen Satz 621 wird
an jeden der Auswähler 623 angelegt
und die Ausgabe jedes der RAM-Register in dem unteren Satz 622 wird
an jeden der Auswähler 624 angelegt.
Die Ausgabe jedes der Auswähler 623 und 624 wird
an den Auswähler 632 angelegt, während die
Ausgabe der Auswähler 625 und 626 auch
an den Auswähler 630 angelegt
wird. Die Ausgabe des Auswählers 630 wird
an den ISL-Signalerzeuger 612 angelegt und der Ausgang
des ISL-Signalerzeugers 612 ist die Leitung 82,
die die 8-Bit-RAM-Eingangsstruktur
liefert. Die Ausgabe des Auswählers 632 wird
an den Komparator 54 und den Auswähler 72 angelegt,
das Vergleichsinstruktionssignal auf der Leitung 93 wird an
den Komparator 54 angelegt und das Maskensignal auf der
Leitung 91 wird an den Maskenerzeuger 56 angelegt.
Die Ausgabe des Auswählers 72 wird
an den Maskengenerator 56 angelegt. Die Ausgabe des Maskenerzeugers 56 ist
die CAM-Eingangsstruktur auf der Leitung 86. Es wird angemerkt,
dass die Leitungen 641, 90, 91, 92, 93 und 96 Leiter
sind, die Teil der Leitung 534 (5) sind.
-
Einige
bestimmte Funktionen des Rahmenanfangsblockpuffers, die noch nicht
erläutert
wurden, sind wie folgt. Der ISL-Detektor 604 sucht
nach der 01000c0000-Struktur, wenn die Daten in den RAM geladen
werden. Wenn derselbe diese Struktur erfasst, ist das Protokoll
eine ISL und die Ausgabe auf der Leitung 82 an den RAM
wird bei allen Einsen, falls abgefragt, blockiert. Der Adresserzeuger
nimmt das Delta-Adresssignal und
fügt dasselbe
zu der zwischengespeicherten vorherigen Adresse hinzu. Dann erzeugt
er vier versetzte Adressen, eine für jeden der vier RAM-Blöcke 621 oder 622.
Der RAM 620 arbeitet als zwei Seiten, von denen eine lädt, während die
andere gerade verarbeitet wird. Die Seiten werden ausgetauscht,
wenn die Ladesteuerung 608 sieht, dass die „gerade
verarbeitete" Seite „erledigt" ist, und also, dass
die „gerade
geladene" Seite fertig
geladen ist. Die Signalausgabe auf der Leitung 86A ist
immer ein Signal mit 32 Bits oder weniger, obwohl die Signalausgabe
auf der Leitung 86 von der Maske 56 auch ein 32-Bit-Signal
ist. Dies bedeutet, dass bei dem anfänglichen Zyklus (0,0)
24 Bits auf der Leitung 86 erzeugt werden und acht Bits über die
Leitung 90 hinzugefügt
werden, um die 32-Bit-Signalausgabe auf der Leitung 86A zu
vervollständigen,
bei nachfolgenden Zyklen jedoch werden die vollen 32 Bits auf der
Leitung 86 erzeugt.
-
Der
ASM-RAM-Verwalter ist in 7 gezeigt. Er umfasst den ASM-RAM 64 und
einen CAM-Ausgabe-Zu-RAM-Adresse-Wandler, der die durch den CAM 62 ausgegebene
Struktur in eine geeignete RAM-Adresse umwandelt. Außerdem umfasst
er einen Auswähler 76,
ein Latch 708 und Puffer 710, 712 und 714.
Die CAM-Ausgabestruktur wird über
eine Leitung 87 in einen Wandler 704 eingegeben
und das Keine-Übereinstimmung-Signal
wird über
eine Leitung 88 eingegeben. Das 111111-Signal und die 1111,0000-Spezialfall-Signale
werden ebenso in den Wandler 704 eingegeben. Ein CAM-Lesesignal,
das durch den ASM-RAM-Verwalter auf der Leitung 728 ausgegeben
wird, wird auch in den Wandler 704 eingegeben. Die Ausgabe
des Wandlers 704 wird an den Auswähler 76 angelegt.
Das CAM-Lesesignal
wird als ein Auswahlsignal über
eine Leitung 720 an den Auswähler 76 angelegt.
Die RAM-Eingabestruktur wird über
eine Leitung 82 in den Auswähler 76 eingegeben.
Die interne Busleitung 532 trägt eine Anzahl von Signalen
zu und von dem ASM-RAM-Verwalter 70: ein Adresssignal auf
einer Leitung 721, das an den Auswähler 76 angelegt wird; ein
Schreibfreigabesignal auf eine Leitung 722 und ein Datenschreibsignal
auf einer Leitung 723, die an den ASM-RAM 64 angelegt werden; und
ein Datenlesesignal auf einer Leitung 724, das durch den
ASM-RAM 64 ausgegeben wird. Diese Signale werden verwendet,
wenn der ASM-RAM programmiert und gelesen wird. Der ASM-RAM gibt
außerdem
die Signale Erledigt, Delta-Adresse, Vergleich, Maske, Zustand,
CAM-Lesen, CAM-Schreiben, Ansammeln, CAM-Zyklus Setzen, Index, Inkrementieren,
Bytes-Hinzufügen,
ISL-Prüfen
und Auslöser
auf der Leitung 728 aus. Das Latch 708 latcht
die aus dem ASM-RAM 64 ausgegebenen Signale. Es wird angemerkt,
dass die Leitung 728 die gleiche ist wie die Leitungen 38, 40, 437, 534 und 535 aus 5. Die
Funktionen des ASM-RAM-Verwalters
und die Verwendung seiner Ausgangssignale wurden oben erläutert oder
werden unten noch erläutert.
-
Die
Details der Logik des CAM-Verwalters 60 sind in 8 gezeigt.
Der CAM-Verwalter 60 umfasst einen CAM 62, eine
Busschnittstelle 810, eine Steuerung 812, einen
CAM-Befehlserzeuger 814,
Auswähler 816, 820, 821 und 822 und
ein Latch 824. Der interne Bus 531 stellt eine
Verbindung zu der Busschnittstelle 810 her. Die Busschnittstelle
gibt die folgenden Signale aus: ein Buszugriffsignal auf einer Leitung 836 an
den Auswähler 820,
das als ein Auswahlsignal für
diesen Auswähler
dient; ein Datensignal auf einer Leitung 837, das als eine
Eingabe an den Auswähler 820 angelegt
wird; ein Schreibfreigabesignal auf einer Leitung 838, das
als eine Eingabe an den Auswähler 821 angelegt
wird; ein Daten/Befehlsauswahl-Signal auf einer Leitung 839,
das als eine Eingabe an den Auswähler 822 angelegt
wird. Ein Datensignal, das durch den CAM 62 an seinem 32-Bit-Daten-Eingangs/Ausgangsanschluss,
D32, ausgegeben wird, wird auf der Leitung 835A an
die Busschnittstelle 810 angelegt. Das CAM-Eingangsstruktursignal
wird auf der Leitung 86A in den Auswähler 816 eingegeben.
Die Signale CAM-Lesen, CAM-Schreiben, Ansammeln und CAM-Zyklus Setzen
werden über Leitungen 831, 832, 833 bzw. 834 an
die Steuerung 812 angelegt. Die Steuerung gibt Signale
auf der Leitung 840 an den CAM-Befehlserzeuger 814 aus,
die den Erzeuger 814 anweisen, einen geeigneten Befehl
auszugeben, der durch den CAM 62 erkennbar ist; Beispiele
dieser Befeh le sind unten erläutert.
Die Ausgabe des CAM-Befehlserzeugers wird als eine Eingabe an den
Auswähler 814 über die
Leitung 841 angelegt. Ein Auswahlsignal wird an den Auswähler 816 durch
die Steuerung 812 über
die Leitung 842 angelegt. Ein Schreibfreigabesignal wird
durch die Steuerung 812 als eine Eingabe an den Auswähler 821 über die
Leitung 843 angelegt. Ein Daten/Befehlsauswahl-Signal wird
durch die Steuerung 812 auf der Leitung 844 ausgegeben
und als eine Eingabe an den Auswähler 822 angelegt.
Die Ausgabe des Auswählers 820 wird
an den 32-Bit-Dateneingang/-ausgang, D32,
des CAM 62 angelegt. Der Dateneingang/-ausgang, D32, gibt auch sein Signal auf der Leitung 835B aus,
das an das Latch 826 angelegt wird, und stellt die CAM-Ausgabestruktur
auf der Leitung 87 bereit. Die Ausgabe des Auswählers 821 wird
an den Schreibfreigabeeingang, w/, des CAM 62 angelegt. Die
Ausgabe des Auswählers 822 wird
an den Daten/Befehlsauswahl-Eingang, /CM, des CAM 62 angelegt. Die
Ausgabe des Übereinstimm-Flag-Ausgangs,
/MF, des CAM 62 wird über
das Signal 848 an das Latch 826 angelegt und stellt
das Keine-Übereinstimmung-Signal
auf der Leitung 88 bereit. Das Latch 826 latcht
die CAM-Ausgabestruktur und das Keine-Übereinstimmung-Signal,
das an dasselbe angelegt wird.
-
Wie
oben angezeigt wurde, können
Daten durch das D32-Tor entweder in den
CAM 62 geschrieben oder aus dem CAM 62 heraus
gelesen werden. Das Schreibfreigabesignal, das bei /W eingegeben
wird, bestimmt die Richtung eines Datenflusses. Befehle werden auch
durch das D32-Tor in den CAM 62 eingegeben. Das
an den /CM-Eingang angelegte Signal bestimmt, ob die Eingabe Daten
oder ein Befehl ist. Das Signal an dem /MF-Ausgang zeigt an, ob
eine Übereinstimmung
während
eines Vergleichzyklus durchgeführt
wurde oder nicht. Der CAM arbeitet, wenn er als eine Nachschlagtabelle
verwendet wird, bei 2 zu 5 Zyklen: bei dem ersten bis vierten Takt-Tick
gehen zu vergleichende Daten ein; bei dem darauffolgenden Takt-Tick
kommt ein Adress- oder ein Keine-Übereinstimmung-Signal
heraus. Nach einem Empfang des CAM-Schreibsignals schreibt die Steuerung 812 die
vorgelegte CAM-Eingangsstruktur in das Zielwortregister des CAM 62.
Das gesetzte CAM-Zyklussignal umfasst Informationen über die
Anzahl von 32-Bit-Wörtern,
die in das Zielwortregister geschrieben werden, bevor erwartet wird,
dass der CAM mit den Daten übereinstimmt.
Auf ein Empfangen des gesetzten CAM-Zyklussignals hin verwendet
die Steuerung den zeitweiligen Befehlsaufhebe- (TCO-) Befehl, um
in das Segmentsteuerregister des CAM zu schreiben, um die erwartete
Anzahl von 32-Bit-Wörtern
zu setzen, bevor ein Vergleich benötigt wird. Dies könnte 1,
2, 3 oder 4 sein. Auf ein Empfangen eines Ansammlungssignals hin
setzt die Steuerung, wenn Keine-Übereinstimmung
das Ergebnis eines Vergleichs ist, die SPD-Instruktion auf die nächste freie
Adresse und dann bewegt ein Datenbewegungs- (MOV-) Befehl das Zielwortregister
in die nächste
freie Adresse. Auf ein Empfangen eines CAM-Lesesignals hin führt die
Steuerung einen Lesevorgang aus, um die Adresse der Übereinstimmung
aus dem Statusregister in dem CAM zu erhalten. Beim Programmieren
weist der Prozessor freien Zugriff auf, um sowohl Daten- als auch
Befehlsregister zu lesen und zu schreiben. Für weitere Informationen über eine
Funktionsweise eines CAM könnten
die Beschreibungen und Dokumentation für einen CAM konsultiert werden.
-
Die
Logikorganisation des Statistikzählerabschnitts 520 ist
in 9 gezeigt. Der Statistikzählerabschnitt 520 umfasst
den Zähler-RAM 66,
der in zwei Abschnitte 66A und 66B unterteilt
ist. Der Statistikzählerabschnitt 520 umfasst
auch einen Adressdecodierer 904, einen Herzschlagerzeuger 906,
eine Seitenauswahllogikeinheit 908, ein Addiererlatch 68,
ein Inkrementierlatch 67, Auswähler 920 bis 927 und
Puffer bzw. Zwischenspeicher 930 bis 933. Der
Zähler
kann als in zwei separate Zählerabschnitte
unterteilt betrachtet werden, einen ersten Abschnitt, der den RAM 66A,
die Auswähler 924 bis 926 und
die Puffer 930 und 931 aufweist, und einen zweiten,
der den RAM 66B, die Auswähler 921 bis 923 und
die Puffer 932 und 933 aufweist. Mit Ausnahme
der Verbindungen zwischen der Seitenauswahllogik 908 und
den Auswählern 926 und 923 sind
der Entwurf und die Funktionsweise des ersten Abschnitts gleich
wie bei dem zweiten, und so erläutern
wir nur den ersten detailliert. Wie unten zu sehen ist, wird, während ein
RAM gerade beschrieben wird, der Inhalt des anderen RAM gespeichert
und bleibt statisch. Ein Decodierer empfängt das interne Bussignal auf
einer Leitung 533 und legt geeignete Signale an die Eingänge jedes
von Auswählern 924 bis 926 über Leitungen 942 an, sowie
das Auswahlsignal an jeden Auswähler
auf der Leitung 943, während
das Auswahlsignal an Auswähler 921 bis 923 über eine
Leitung 941 angelegt wird. Die Ausgabe des Auswählers 926 wird
an den Schreibfreigabeeingang des RAM 66A angelegt, die
Ausgabe des Auswählers 925 wird
an den Adresseingang des RAM 66A angelegt und die Ausgabe.
des Auswählers 924 wird
an den Dateneingang/-ausgang des RAM 66A durch den Puffer 930 angelegt.
Der Dateneingang/-ausgang des RAM 66A ist außerdem mit
den Eingängen
von Auswählern 920 und 927 durch
den Puffer 931 verbunden. Der Ausgang des Auswählers 927 liefert
die Datenausgabe über
eine Leitung 944 an den internen Bus. Der Herzschlagerzeuger 906 liefert
eine Ausgabe auf einer Leitung 968, vorzugsweise eine jede
Sekunde, die an die Seitenauswahllogik 908 angelegt wird.
Die Seitenauswahllogik 908 legt ein Ausgangssignal an den
Eingang des Auswählers 926 über eine
Leitung 950 an und ein weiteres Ausgangssignal an den Eingang
des Auswählers 923 über eine
Leitung 951. Das Indexsignal wird über eine Leitung 956 an
den Eingang der Auswähler 925 und 922 angelegt,
das Inkrementiersignal wird über eine
Leitung 957 an das Inkrementierlatch 67 angelegt,
das Bytes-Hinzufügen-Signal wird über eine
Leitung 958 an das Addiererlatch 68 angelegt und
das Rahmengrößesignal
wird über
eine Leitung 31 an das Addiererlatch 68 angelegt.
Die Ausgabe des Auswählers 920 wird über eine
Leitung 961 an das Inkrementierlatch 67 und das
Addiererlatch 68 angelegt. Das Indexsignal sagt dem RAM,
welches seiner internen Zählregister
zu inkrementieren ist und/oder zu welchem Bytes hinzuzufügen sind.
Typischerweise könnte
ein Statistik-RAM 66A 100 oder mehr unterschiedliche Statistikregister
oder -zähler
umfassen.
-
Der
Herzschlagerzeuger 906 ist ein Eine-Sekunde-Taktgeber,
der den Kontext der beiden RAMs 66A und 66B jede
Sekunde umschaltet. Dies bedeutet, dass für eine Sekunde ein RAM, z.B. 66A, „aktiv" ist und der andere
RAM, 66B, „inaktiv" ist. In der nächsten Sekunde
sind die Rollen der RAMs umgekehrt. Wenn ein RAM aktiv ist, werden
die eingehenden Statistikdaten in demselben gespeichert. Dies bedeutet,
dass, wenn ein Inkrementieren- und/oder Bytes-Hinzufügen-Befehl eingeht, während ein
RAM „aktiv" ist, der Inhalt
des geeigneten Registers des RAM in das entsprechende Latch gelesen
wird, das dann inkrementiert wird und/oder zu demselben wird hinzugefügt, dann
wird der Inhalt zurück
in das geeignete Register in dem RAM geschrieben. Wenn ein RAM inaktiv
ist, kann derselbe gelesen werden, um die gespeicherten Statistikinformationen
an einen Prozessor, der mit dem Bus 16 verbunden ist, weiterzuleiten.
Der Prozessorbus weist uneingeschränkten Lese/Schreibzugriff auf
die RAMs auf, beobachtet jedoch den Zustand des Herzschlags vor
einem Zugreifen. Er greift nur auf den „inaktiven" RAM zu, mit Ausnahme zu Initialisierungszwecken.
-
Die
FGPAs, die Teile der Puffer und Statistikabschnitte sind, sind vorzugsweise
in FGPAs vom Xilinx-Typ implementiert. Ein geeigneter CAM ist ein
MU9C1965A Wide LANCAMTM, hergestellt durch
MUSIC Semiconductors, 254 B Mountain Avenue, Hadkettstown, New Jersey
07840. Der RAM könnte
ein beliebiger geeignet schneller RAM sein.
-
3. Beispiel: Parsen eines
TCP/2P-Rahmens über
ein Ethernet
-
Tabelle
II stellt das Format eines Anfangsblocks, minus der Präambel, für einen
Ethernet-Übertragungs-Steuerprotokoll/Internetprotokoll-(TCP/IP-)
Rahmen dar, einen exem plarischen Rahmen, der durch den Protokollanalysator
gemäß der Erfindung
analysierbar ist.
-
-
Jede
vertikale Unterteilung oder Zeile der Tabelle stellt zwei Bytes
dar. Die MAC-Zieladresse z.B. besetzt die ersten sechs Bytes des
Anfangsblocks und der Ethertyp besetzt das 13. bis 14. Byte des
Anfangsblocks. Wenn eine Zeile in Spalten unterteilt ist, werden
die zwei Bytes entsprechend von links nach rechts unterteilt. Der
Diensttyp B. besetzt das 16. Byte des Anfangsblocks. 10 ist
ein Flussdiagramm, das das Parsen eines bestimmten TCP/IP-Rahmens
darstellt. Bei diesem Flussdiagramm stellt jedes Feld mit spitz
zulaufenden Enden einen CAM- oder ASM-RAM-Zyklus dar, in dem eine Entscheidung
durchgeführt
wird. Für jeden
derartigen Zyklus gibt es eine Eingabe in und eine Ausgabe aus entweder
dem CAM oder ASM-RAM. Wenn der Zyklus ein CAM-Zyklus ist, wird das
Wort CAM oben rechts in das Entscheidungsfeld geschrieben, gemeinsam
mit einer Zahl, die anzeigt, ob dies ein 32-, 64-, 96- oder 128-Bit-CAM-Zyklus ist. Der
Zustand der ASM 20 für
den Zyklus ist oben links in dem Feld angezeigt. Felder ohne spitz
zulaufende Enden sind Schritte, die nach einem Zyklus stattfinden,
es jedoch nicht erforderlich machen, dass ein weiterer Zyklus oder
eine weitere Entscheidung durchgeführt wird. Tabelle III zeigt
die Eingabe und Ausgabe für
jeden Zyklus. In diesem Fall ist das Kommunikationssystem ein Ethernet,
so dass der Protokollstapel aus den Ethertyp-(ET-) Feld-Bytes 13 und 14 bestimmt
wird und in der Spalte ET gezeigt ist.
-
Nun
Bezug nehmend auf die Tabellen II und III und 10 ist
der erste Schritt 1004 ein 64-Bit-CAM-Zyklus und der Zustand
ist die Anfangsbedingung, 0,0. Die ASM 20 prüft, um zu
sehen, ob die Eingangs-(I/P-) Zieladresse (ZA) die ISL-Zieladresse ist,
d. h., ob diese gleich 0x01000c0000 ist. Da dieser Schritt ein vorbereitender
Schritt ist, der für
jeden Rahmen stattfindet, ist er bei dem bevorzugten Ausführungsbeispiel
in Hardware implementiert, insbesondere der ISL-Anfangsblockdetektor 604,
der in dem Statistik-FPGA 320 (3 und 6)
implementiert ist, ist jedoch hier als ein CAM-Zyklus gezeigt, um
die Flexibilität
des Systems darzustellen. Bei unserem Beispiel ist der Rahmen kein
ISL-Rahmen, so dass
die Ausgabe der ASM 20 sagt, 12 Bytes auszulassen und sich
zu dem höchstwertigen
Ethertyp-Byte zu bewegen und dasselbe in dem RAM zu parsen. Das
System tut dies in Schritt 1006 und findet den Ethertyp
0x08xx. Da dies größer ist als
0x60xx, ist dies kein 802,3-Länge-Feld.
Die Ausgabe weist an, dass das System in den Zustand 0,4 geht, und
parst den gesamten Ethertyp in dem CAM. Es wird angemerkt, dass,
wenn der Typ nicht größer oder
gleich 0x60xx gewesen wäre,
das System zu dem Zustand 0,6 gegangen wäre, was
zu einem vollständig
unterschiedlichen Abschnitt des Algorithmus führen würde, wobei dieser Abschnitt
hier nicht gezeigt ist. Der nächste Schritt,
d. h. Zustand 0,4, ist ein 32-Bit-CAM-Zyklus,
so dass das System den CAM-Zyklus
bei Schritt 1007 auf 32 Bits setzt. Schritt 1008 ist
ein 32-Bit-CAM-Zyklus, in dem der Ethertyp 0x0806 als IP erkannt
wird, und so wird der Zähler,
der dem IP-Protokolltyp zugewiesen ist, bei Schritt 1010 inkrementiert
und das System 20 gelangt in den 0-ten IP-Zustand, d. h.
IP, 0, und schreitet 11 Bytes zu dem Protokolltypfeld voran und
zeigt an, dass als Nächstes
ein RAM-Zyklus kommt. Wenn der Ethertyp nicht erkannt worden wäre, hätte es entweder einen
Fehler gegeben oder dieser Rahmen wäre einer gewesen, an dessen
Zählung
das System nicht interessiert war, so dass das System zurück zu dem
Zustand 0,0 gegangen wäre
und sich einen neuen Rahmen angesehen hätte. Bei Schritt 1012 wird
der IP-Protokolltyp in dem RAM gelesen und als TCP erkannt. Wieder hätte es,
wenn der Typ nicht erkennbar gewesen wäre, einen Fehler gegeben oder
dieser Rahmen wäre
einer gewesen, an dessen Zählung
das System nicht interessiert war, so dass das System zurück in den
Zustand 0,0 gegangen wäre
und sich einen neuen Rahmen angesehen hätte. Die Instruktionen aus
dem RAM bei Schritt 1012 zeigen an, dass der nächste Zustand
der IP,1-Zustand ist, und das System sollte die Daten drei Bytes
zurück
prüfen,
was dasselbe in der Fragmentierungsflagregion des Rahmens platziert,
sowie, dass der nächste
Zyklus ein RAM-Zyklus ist. Wenn keine Fragmentierung vorliegt oder
wenn dies das erste Fragment ist, wird der Zähler, der einem Zählen von
TCP-Rahmen zugewiesen ist, bei Schritt 1016 inkrementiert
und dann werden die Bytes des Rahmen bei Schritt 1018 gezählt. Wenn
eine Fragmentierung vorliegt und dies ein bestimmtes anderes Fragment
als das erste ist, was hier der Fall ist, werden nur die Bytes gezählt. Die
Instruktionen in dem IP,1-Zustand sagen dem System, sechs Bytes
zurückzugehen,
um sich die Anfangsblocklänge in
einem RAM-Zyklus anzusehen, und setzt den nächsten Zustand auf IP,2. Wenn
das Anfangsblocklängenfeld nicht
gültig
ist, würde
das System wieder zurück
zu dem Zustand 0,0 gehen und sich einen neuen Rahmen ansehen. Bei
Schritt 1020 jedoch stellt sich heraus, dass die An fangsblocklänge hier
gültig
ist, und dies sagt dem System, wo der Beginn der TCP-Schicht ist.
-
-
-
Die
Instruktionen in Schritt 1020 für dieses bestimmte Längenfeld
sind, dass das System 20 Bytes voranschreiten 5 soll, wo
sich das TCP-Quellentor befindet, und dass dies in das Zielwortregister
in dem CAM geladen werden soll, was bei Schritt 1022 durchgeführt wird.
Es wird angemerkt, dass das Zielwortregister in dem CAM sich von
dem Vergleichsregister 54 unterscheidet; ersteres ist ein
spezifisches 10 Register in dem CAM 62, während letzteres
in dem Statistik-FPGA 320 implementiert
ist. Das System fährt
dann mit einem Zustand IP,3, wie angewiesen, fort. Unabhängig von
der Eingabe bittet bei Schritt 1024 die ASM 20,
dass der Zieltor mit dem Quellentor verglichen wird (I/P = xx),
und dass 15 der kleinere Wert der ASM bei dem nächsten Zyklus
vorgelegt wird, der ein CAM-Zyklus ist. Sie instruiert außerdem,
dass, wenn das Tor nicht erkannt wird, dieses als eine neue Struktur
hinzugefügt
wird und Statistiken darüber
zu sammeln sind. Wie angewiesen, werden die Tore bei Schritt 1026 20 verglichen
und das System fährt
mit dem IP,4-Zustand fort, der Schritt 1028 ist. In diesem
Fall wird das Tor nicht erkannt, so dass bei Schritt 1030 das
Tor in den CAM geladen wird, und eine Instruktion geht heraus, dass
der zugeordnete Statistik-RAM-Zählwert
inkrementiert werden soll, was bei Schritt 1032 durchgeführt wird.
Der Algorithmus wird dann wieder zurück auf den Anfang gesetzt,
um ein neues Paket zu erwarten.
-
Ein
Merkmal der Erfindung besteht darin, dass die Nachschlagtabelle
eine Zustandsmaschine verwendet und keinen Prozessor und gespeicherte
Software. Das bevorzugte Ausführungsbeispiel
der Zustandsmaschine umfasst einen CAM und einen RAM, es könnte jedoch
auch in anderen Weisen implementiert sein.
-
Ein
weiteres Merkmal der Erfindung besteht darin, dass die Nachschlagtabelle
einen CAM verwendet. Dies erlaubt es, dass lange Datenabschnitte
schnell identifiziert werden können.
Die durch den CAM ausgegebene Adresse wird vorzugsweise in einen
RAM eingegeben, könnte
jedoch auch in ein weiteres beliebiges Logiksystem eingegeben werden,
in dem Informationen an spezifischen Adressen gespeichert sind.
Es ist auch möglich,
dass die ausgegebenen Adressen einfach an einen Speicher übertragen
und später
verarbeitet werden könnten.
-
Ein
weiteres Merkmal der Erfindung besteht darin, dass die Fähigkeit
der Zustandsmaschine 20, Statistiken über Rahmen zu sammeln, die
auf dem PCI-Bus 16 laufen, nicht auf vorbestimmte Rahmen-
und Protokolltypen eingeschränkt
ist. Wenn beim Prüfen
eines Rahmenanfangsblocks eine neue Struktur gefunden wird, die
zuvor in dem System 15 noch nicht gesehen wurde, kann der
ASM-RAM-Verwalter 70 eine Instruktion an die Logikeinheit
ausgeben, die in dem Statistik-FPGA 320 implementiert ist,
um zu bewirken, dass dasselbe die neue Struktur in den CAM schreibt.
Ein neuer Zähler
kann außerdem
zu dem Zähler-RAM 66 hinzugefügt werden,
um die Vorkommen der neuen Struktur zu zählen. Auf nachfolgende Auftritte
der Struktur hin bewirkt jedes Auftreten, dass der neue Zähler, der
der neuen Struktur entspricht, inkrementiert wird.
-
Ein
weiteres Merkmal der Erfindung ist die Verwendung eines Adressversatzwertes,
um den nächsten Abschnitt
des Datenrahmens, der analysiert werden soll, zu lokalisieren. Wie
oben angezeigt wurde, ist der Versatzwert die positive oder negative
Zahl von Bytes, die das System von der Adresse des gegenwärtigen oder
ersten Abschnitts, der gerade analysiert wird, gehen sollte, oder
der gerade analysiert würde,
um den nächsten
Abschnitt oder zweiten Abschnitt, der analysiert werden soll, zu
finden. Der Versatzwert wird durch den Adresserzeuger 52 verwendet,
um die Adresse des nächsten
Abschnitts des Rahmens, der analysiert werden soll, zu erzeugen.
Die Verwendung des Versatzes weist zwei unterschiedliche Vorteile
auf. Zuerst reduziert sie die Anzahl unterschiedlicher Zweige des
Analysealgorithmus stark, d. h. die Anzahl von Zuständen, die
in dem CAM 62 und RAM 64 gespeichert werden müssen. Dies
heißt,
dass, da die relative Länge
von Anfangsblöcken
variiert, die absolute Adresse eines bestimmten Rahmenanfangsblocks
viele unterschiedliche Werte annehmen könnte, während die relative Position
der verschiedenen Abschnitte des Rahmenanfangsblocks nicht annähernd so
viel variiert. Zweitens reduziert sie die Anzahl von Leitern wesentlich,
die benötigt
werden, um den Ausgang der Zustandsmaschine mit dem Adresserzeuger
zu verbinden, da es viel weniger Leiter braucht, um den Versatzwert
zu tragen, als es braucht, um eine absolute Adresse zu tragen.
-
Es
wurde ein neuartiger Protokollanalysator zum Sammeln von Informationen über die
Verwendung eines Paketnetzes beschrieben, die es dem Benutzer erlauben,
Informationen über
jeden Rahmen zu sammeln, der auf einem Paketnetz übertragen
wird, selbst mit Gigabit-Übertragungsraten,
und viele weitere Vorteile aufweisen. Es ist klar, dass, nun, da
die Erfindung vollständig
offenbart wurde, Fachleute auf dem Gebiet zahlreiche Verwendungen
und Modifizierungen des beschriebenen spezifischen Ausführungsbeispiels
durchführen
könnten,
ohne von den erfindungsgemäßen Konzepten
abzuweichen. Nun z.B., da offenbart wurde, dass eine relativ einfache
Zustandsmaschine verwendet werden kann, um Paketnetzstatistiken
zu sammeln, können
andere Zustandsmaschinen zu diesem Zweck entworfen werden. Nun,
da offenbart wurde, dass ein CAM besonders zur Verwendung in einem
Protokollanalysator angepasst ist, können weitere Protokollanalysatoren
unter Verwendung eines CAM entworfen werden. Es ist ebenso klar,
dass äquivalente
Komponenten oder Schältungen
anstelle der verschiedenen Komponenten und Schaltungen, die hierin
beschrieben sind, eingesetzt werden können. Zusätzliche Merkmale könnten hinzugefügt werden.
Eine größere oder
kleinere Anzahl von Teilen könnte
verwendet werden. Folglich soll die Erfindung als jedes einzelne
neuartige Merkmal und jede einzelne neuartige Kombination von Merkmalen,
die in dem Protokollanalysatorsystem, das offenbart wurde, vorhanden
sind und/oder von demselben besessen werden, umfassend aufgefasst
werden.