-
Verwandte Fälle
-
Diese
Anmeldung beansprucht die Priorität der am 14. Juni 2000 eingereichten
U.S. Provisional Application 60/211
863 , worauf hiermit verwiesen sei.
-
Hintergrund der Erfindung
-
1. Gebiet der Erfindung
-
Die
Erfindung betrifft das Gebiet der Paketkommunikation und insbesondere
von Paketverarbeitungsschaltungen.
-
2. Beschreibung des Problems
-
Ein
Kommunikationspaket ist eine Informationseinheit, die über ein
Kommunikationssystem von einem Punkt zu einem anderen übertragen
wird. Das Paket weist einen Header auf, der dem Kommunikationssystem angibt,
wie das Paket verarbeitet werden sollte. Die Hauptaufgabe bei der
Verarbeitung eines Pakets besteht darin, das Paket geeignet vom
Absender zum Empfänger
zu leiten, wenngleich es viele andere Aufgaben, wie Sicherheit,
Dienstklassifizierung, Abrechnung und Adressumsetzung, gibt. Zwei übliche Beispiele
von Paketkommunikationsprotokollen sind das Internetprotokoll (IP)
und das Protokoll des asynchronen Übertragungsmodus (ATM).
-
Kommunikationspaketprozessoren
sind integrierte Schaltungen, die Pakete empfangen, verarbeiten und übertragen.
Mit einem unersättlichen
Bedarf an schneller Kommunikation werden Paketprozessoren dahin getrieben,
mehr Pakete mit höheren
Geschwindigkeiten zu behandeln. Das Problem wird durch den Wunsch verschlimmert,
dass Paketprozessoren einen robusteren Satz von Paketbehandlungsoptionen
bieten.
-
Um
diese schwierige Aufgabe zu lösen,
weist ein Paketprozessor einen schnellen Kernprozessor auf, der
eine Paketverarbeitungs-Softwareanwendung ausführt. Unter Softwaresteuerung
verarbeitet der Kernprozessor den Header eines ankommenden Pakets,
um Kontextinformationen aus einem Speicher für das Paket abzurufen. Die
Kontextinformationen spezifizieren, wie das Paket in Bezug auf die
Weiterleitung, Sicherheit und andere Bereiche behandelt werden sollte.
Der Kernprozessor verarbeitet die Kontextinformationen dann unter
Softwaresteuerung, um die Paketbehandlung zu steuern.
-
Zum
Abrufen der gewünschten
Kontextinformationen muss der Kernprozessor den Paket-Header mit den
Speicherstellen assoziieren, welche die gewünschten Kontextinformationen
enthalten. Der Kernprozessor muss dann die gewünschten Kontextinformationen
aus den assoziierten Speicherstellen abrufen. Falls der Kernprozessor
die Kontextinformationen modifiziert, muss er die modifizierten
Kontextinformationen dann in die richtigen Speicherstellen zurückschreiben.
Dieser Prozess wird für
jedes Paket wiederholt, so dass der Kernprozessor Header wiederholt
mit Speicherstellen assoziiert, Kontextinformationen abruft und
modifizierte Kontextinformationen in die Speicherstellen schreibt.
-
Diese
Aufgabe wird durch die Zunahme der Verarbeitungsoptionen, die auf
ein Paket angewendet werden können,
weiter kompliziert. Wenn die Verarbeitungsoptionen zunehmen, nimmt
auch die Größe der Kontextinformationen,
welche diese Optionen spezifizieren, zu. Der Kernprozessor muss
nun zunehmend größere Kontextinformationsmengen
behandeln, oder der Kernprozessor muss selektiv nur die gewünschten
Daten abrufen, die in den Kontextinformationen enthalten sind.
-
Mit
zunehmenden Geschwindigkeiten und Verarbeitungsanforderungen wird
der Kernprozessor überlastet.
Das Ergebnis ist entweder ein Verlust an Geschwindigkeit oder ein
Verlust an Verarbeitungsoptionen. Eine Lösung besteht darin, einfach
schnellere Prozessoren hinzuzufügen.
Leider erhöht
diese Lösung
die Kosten des zugrunde liegenden Systems erheblich.
-
Ein
inhaltsadressierbarer Speicher (CAM) ist eine integrierte Schaltung,
die eine Liste schnell durchsuchen kann, um ein entsprechendes Ergebnis
bereitzustellen. Der CAM ist mit einer Liste von Selektor-Einträgen konfiguriert.
Jeder Selektor-Eintrag hat ein entsprechendes Ergebnis. Wenn der
CAM einen eingegebenen Selektor empfängt, durchsucht er die Liste
von Selektor-Einträgen
auf eine Übereinstimmung.
Die Suche wird mit hoher Geschwindigkeit ausgeführt, indem jeder Selektor-Eintrag
gleichzeitig mit dem eingegebenen Selektor verglichen wird. Leider
wurden CAMs noch nicht wirksam eingesetzt, um dabei zu helfen, das vorstehend
erwähnte
Problem zu lösen.
-
In
US-A-5 329 618 ist
eine Nachschlagetabelle zur Verwendung in einer Brücke offenbart,
worin eine negative Filterung zum Verbinden eines ersten und eines
zweiten Netzes in einem Datenkommunikationssystem verwendet wird.
Jeder Datenübertragung
ist eine Quellen- und eine Zieladresse zugeordnet, die jeweils insgesamt
(m + n) binäre
Datenbits haben, wobei die Brücke
die Datenübertragung
von einem Netz zu dem anderen weiterleitet, es sei denn, dass die
Zieladresse in der Nachschlagetabelle gefunden wird und dem sendenden
Netz entspricht. Die Nachschlagetabelle weist eine Codiereinrichtung,
die auf eine (m + n)-Bit-Adresse anspricht, um einen ersten und
einen zweiten Code zu erzeugen, die jeweils m und n Datenbits aufweisen, welche
es zusammen ermöglichen,
dass eine (m + n)-Bit-Adresse eindeutig decodiert wird, einen Direktzugriffsspeicher
(RAM), der mit der Codiereinrichtung gekoppelt ist und m adressierbare
Stellen aufweist, die jeweils für
das Speichern von mindestens n Datenbits vorgesehen sind, und einen
inhaltsadressierbaren Speicher (CAM), der mit der Codiereinrichtung
gekoppelt ist und mehrere adressierbare Stellen aufweist, die jeweils
für das
Speichern von mindestens (m + n) Datenbits vorgesehen sind, auf.
Falls die Stelle in dem RAM, deren Adresse gleich dem ersten Code
ist, verfügbar
ist, wird der zweite Code an der Stelle gespeichert. Falls der zweite
Code andernfalls nicht bereits darin gespeichert ist, werden alle
(m + n) Bits der (m + n)-Bit-Adresse an
einer verfügbaren
Stelle im CAM gespeichert, es sei denn, dass sie bereits darin gespeichert
sind. Eine Zieladresse wird durch Lesen des Inhalts des CAMs, ebenso
wie des Inhalts der Stelle im RAM, deren Adresse gleich dem ersten
Code ist, nachgeschlagen.
-
In
WO 9914893 ist eine Mehrportbrücke offenbart,
die einen Speicher und mehrere Ports aufweist. Jeder Port weist
einen Empfangspuffer, einen Sendepuffer und einen "Triplet"-Puffer auf. Wenn ein Datenpaket durch
den Empfangspuffer eines Ports empfangen wird, wird eine Nachschlagetabelle
verwendet, um den geeigneten Zielport für das Paket zu identifizieren.
Ein Ergebnis des Nachschlagens ist ein "Triplet", welches aufweist: ein erstes Feld,
das die Identifikation des Quellenports enthält, ein zweites Feld, das die
Identifikation des Zielports enthält, und ein drittes Feld, das
eine dem ankommenden Paket im Speicher zugewiesene Anfangsadresse
enthält.
Das Triplet wird beim ersten Mal auf den Kommunikationsbus gegeben.
Falls der Zielport verfügbar
ist, empfängt
er das Paket zur gleichen Zeit, zu der das Paket im Speicher gespeichert
wird. Andernfalls wird das Triplet ein zweites Mal auf den Kommunikationsbus
gegeben, nachdem es im Speicher gespeichert wurde. Der Zielport
speichert das Triplet in seinem Tripletpuffer. Wenn der Zielport
verfügbar
ist, ruft er das Paket dann zur Übertragung
aus dem Speicher ab.
-
Zusammenfassung der Lösung
-
Die
Erfindung hilft dabei, die vorstehend erwähnten Probleme durch eine Paketverarbeitungsschaltung
zu lösen,
welche den Kernprozessor von der Komplexität des Abrufens ausgewählter Kontextinformationen
entlastet. Eine Look-up-Engine
arbeitet mit einem CAM, um selektiv Kontextinformationen aus dem
Speicher für
den Kernprozessor abzurufen. Dem Kernprozessor wird vorteilhafterweise
ein Summationsblock relevanter Kontextinformationen für jedes
Paket bereitgestellt. Die Schaltung kann mit hohen Geschwindigkei ten arbeiten,
und die Kapazität
des Kernprozessors wird für
andere Verarbeitungsaufgaben freigesetzt. Zusätzlich können die Kontextinformationen
als eine einzelne Datenbank von Kontextstrukturen, die von den Paketen
gemeinsam verwendet wird, verwaltet werden.
-
Falls
der Kernprozessor die Kontextinformationen modifiziert, während er
ein Paket verarbeitet, kann die Look-up-Engine die modifizierten Kontextinformationen
automatisch im Speicher für
den Kernprozessor speichern. Die Look-up-Engine kann einen Selektor
in den CAM schreiben und den Summationsblock an eine entsprechende
Speicherstelle schreiben, so dass der CAM zum schnellen Abrufen
des gesamten Summationsblocks unter Verwendung des Selektors verwendet
werden kann. Die Look-up-Engine kann Selektoren für den CAM
auf der Grundlage von CAM-Ergebnissen erzeugen, um einen komplexen
Kontextinformationsabruf zu ermöglichen,
ohne zusätzliche
Prozessorkapazität
zu verwenden. Der CAM kann weitere Selektoren anhand des anfänglichen
Selektors erzeugen, so dass eine Verringerung der Verwendung des
Datenbusses auftritt, der Selektoren zum CAM überträgt. Der Datenbus kann dann
zur Übertragung
von Ergebnissen zur Paketverarbeitungsschaltung verwendet werden.
Falls gewünscht,
können
der Ergebnisbus und seine zugeordneten Anschlussstifte fortgelassen
werden.
-
Einige
Aspekte der Erfindung umfassen eine Schaltung zum Verarbeiten eines
Kommunikationspakets. Die Schaltung weist einen inhaltsadressierbaren
Speicher, eine Look-up-Engine und einen Prozessor auf. Die Look-up-Engine
ist konfiguriert, um einen ersten Selektor zum inhaltsadressierbaren
Speicher zu übertragen.
Der inhaltsadressierbare Speicher ist konfiguriert, um den ersten
Selektor zu empfangen und zu verarbeiten, um weitere Selektoren
zu erzeugen. Der inhaltsadressierbare Speicher ist konfiguriert,
um die weiteren Selektoren auf Übereinstimmungen
zu verarbeiten und den Übereinstimmungen
entsprechende Ergebnisse bereitzustellen. Die Look-up-Engine ist
konfiguriert, um die Ergebnisse von dem inhaltsadressierbaren Speicher
zu empfangen und Kontext strukturen auf der Grundlage der Ergebnisse
aus einem Kontextspeicher (111) abzurufen. Die Look-up-Engine
ist konfiguriert, um einen Summationsblock unter Verwendung der Kontextstrukturen
zu bilden und den Summationsblock zu übertragen. Der Prozessor ist
konfiguriert, um den Summationsblock zu empfangen und zu verarbeiten,
um die Behandlung des Kommunikationspakets zu steuern.
-
Gemäß einigen
Aspekten der Erfindung ist die Look-up-Engine konfiguriert, um eine Aktualisierungsanweisung
und eine modifizierte Kontextstruktur zu empfangen und als Reaktion
auf die Aktualisierungsanweisung automatisch die modifizierte Kontextstruktur
in den Kontextspeicher (111) zu schreiben.
-
Gemäß einigen
Aspekten der Erfindung ist die Look-up-Engine konfiguriert, eine Installationsanweisung
für den
Summationsblock zu empfangen, einen Summationsblock-Selektor in
den inhaltsadressierbaren Speicher zu schreiben und ein entsprechendes
Summationsblock-Ergebnis von dem inhaltsadressierbaren Speicher
zu empfangen, den Summationsblock an eine Speicherstelle zu schreiben,
die dem Summationsblock-Ergebnis
entspricht, anschließend
den Summationsblock-Selektor
zum inhaltsadressierbaren Speicher zu übertragen und das entsprechende
Summationsblock-Ergebnis von dem inhaltsadressierbaren Speicher
zu empfangen, den Summationsblock auf der Grundlage des Summationsblock-Ergebnisses
abzurufen und den Summationsblock zu übertragen.
-
Gemäß einigen
Aspekten der Erfindung ist der inhaltsadressierbare Speicher konfiguriert,
um die weiteren Selektoren durch Inkrementieren eines Abschnitts
des ersten Selektors zu erzeugen.
-
Gemäß einigen
Aspekten der Erfindung ist die Look-up-Engine konfiguriert, um den ersten Selektor zum
inhaltsadressierbaren Speicher zu übertragen, ein entsprechendes
erstes Ergebnis vom inhaltsadressierbaren Speicher zu empfangen
und auf der Grundlage des ersten Ergebnisses die weiteren Selektoren
zu erzeugen.
-
Gemäß einigen
Aspekten der Erfindung ist der Prozessor konfiguriert, um Header-Informationen
vom Kommunikationspaket zu verarbeiten, um den ersten Selektor zu
erzeugen und zur Look-up-Engine zu übertragen.
-
Gemäß einigen
Aspekten der Erfindung beziehen sich die Kontextstrukturen auf die
Netzadressumsetzung, Paketsicherheit und Paketklassifizierung.
-
Gemäß einigen
Aspekten der Erfindung gibt ein erstes der Ergebnisse, das dem ersten
Selektor entspricht, eine Verarbeitungsanweisung für die Look-up-Engine
an.
-
Gemäß einigen
Aspekten der Erfindung ist der inhaltsadressierbare Speicher konfiguriert,
um den ersten Selektor zu empfangen und die Ergebnisse über einen
einzigen bidirektionalen Datenbus zu übertragen.
-
Gemäß einigen
Aspekten der Erfindung sind der Prozessor, die Look-up-Engine und
der inhaltsadressierbare Speicher in einer einzigen integrierten
Schaltung konfiguriert.
-
Einige
Aspekte der Erfindung umfassen ein Verfahren zum Betreiben einer
Schaltung, um ein Kommunikationspaket zu verarbeiten. Das Verfahren
weist folgende Schritte auf: Übertragen
eines ersten Selektors zu einem inhaltsadressierbaren Speicher,
Verarbeiten des ersten Selektors zum Erzeugen weiterer Selektoren
und Verarbeiten der weiteren Selektoren auf Übereinstimmungen in dem inhaltsadressierbaren
Speicher, Übertragen
von Ergebnissen, die den Übereinstimmungen
entsprechen, aus dem inhaltsadressierbaren Speicher, Abrufen von
Kontextstrukturen auf der Grundlage der Ergebnisse aus einem Kontextspeicher
und Bilden eines Summationsblocks unter Verwendung der Kontextstrukturen
und Verarbeiten des Summationsblocks, um die Behandlung des Kommunikationspakets
zu steuern.
-
Gemäß einigen
Aspekten der Erfindung weist das Verfahren weiter auf: Empfangen
einer Aktualisierungsanweisung und einer modifizierten Kontextstruktur
und automatisches Schreiben der modifizierten Kontextstruktur in
den Kontextspeicher, ansprechend auf die Aktualisierungsanweisung.
-
Gemäß einigen
Aspekten der Erfindung weist das Verfahren ferner folgende Schritte
auf: Empfangen einer Installationsanweisung für den Summationsblock, Schreiben
eines Summationsblock-Selektors in den inhaltsadressierbaren Speicher
und Empfangen eines entsprechenden Summationsblock-Ergebnisses von
dem inhaltsadressierbaren Speicher, Schreiben des Summationsblocks
an eine dem Summationsblock-Ergebnis entsprechende Speicherstelle,
anschließend Übertragen
des Summationsblock-Selektors zum inhaltsadressierbaren Speicher
und Empfangen des entsprechenden Summationsblock-Ergebnisses von
dem inhaltsadressierbaren Speicher und anschließend Abrufen des Summationsblocks
auf der Grundlage des Summationsblock Ergebnisses.
-
Gemäß einigen
Aspekten der Erfindung weist das Erzeugen der weiteren Selektoren
das Inkrementieren eines Abschnitts des ersten Selektors auf.
-
Gemäß einigen
Aspekten der Erfindung weist das Erzeugen der weiteren Selektoren
auf: Übertragen des
ersten Selektors zum inhaltsadressierbaren Speicher, Empfangen eines
entsprechenden ersten Ergebnisses von dem inhaltsadressierbaren
Speicher und Erzeugen der weiteren Selektoren auf der Grundlage
des ersten Ergebnisses.
-
Gemäß einigen
Aspekten der Erfindung weist das Verfahren weiter das Verarbeiten
von Header-Informationen von dem Kommunikationspaket, um den ersten
Selektor zu erzeugen, auf.
-
Gemäß einigen
Aspekten der Erfindung beziehen sich die Kontextstrukturen auf die
Netzadressumsetzung, die Paketsicherheit und die Paketklassifizierung.
-
Gemäß einigen
Aspekten der Erfindung gibt ein erstes der Ergebnisse, das dem ersten
Selektor entspricht, eine Verarbeitungsanweisung an.
-
Gemäß einigen
Aspekten der Erfindung weist das Empfangen des ersten Selektors
und das Übertragen
der Ergebnisse die Verwendung eines einzigen bidirektionalen Datenbusses
auf.
-
Gemäß einigen
Aspekten der Erfindung ist die Schaltungsanordnung in einer einzigen
integrierten Schaltung konfiguriert.
-
Beschreibung der Zeichnung
-
Die
gleichen Bezugszahlen stellen in allen Zeichnungsteilen die gleichen
Elemente dar.
-
Es
zeigen:
-
1 eine
Kommunikationspaket-Verarbeitungsschaltung gemäß einem Beispiel der Erfindung,
-
2 die
Beziehung zwischen einem Selektor und seinem Summationsblock gemäß einem
Beispiel der Erfindung,
-
3 eine
Look-up-Engine gemäß einem
Beispiel der Erfindung,
-
4 Operationen
für eine
Look-up-Engine,
-
5 Operationen
für eine
Look-up-Engine,
-
6 einen
CAM und eine Look-up-Engine gemäß einem
Beispiel der Erfindung und
-
7 einen
CAM gemäß einem
Beispiel der Erfindung.
-
Detaillierte Beschreibung
der Erfindung
-
Kommunikationspaket-Verarbeitungsschaltung 1
-
1 zeigt
eine Kommunikationspaket-Verarbeitungsschaltung 100 gemäß einem
Beispiel der Erfindung. Die Schaltung 100 ist mit einem
Speicher 110 und einem Speicher 111 verbunden.
Der Speicher 110 speichert Pakete. Der Speicher 111 speichert
Kontextstrukturen, welche steuern, wie die Pakete von der Schaltung 100 behandelt
werden.
-
Die
Schaltung 100 empfängt
Kommunikationspakete und speichert sie im Speicher 110.
Die Schaltung 100 verarbeitet die Header in den Paketen,
um einen Summationsblock der Kontextstrukturen vom Speicher 111 zu
erhalten. Beispiele von Kontextstrukturen sind Kontextinformationen,
die sich auf eine Netzadressumsetzung, Abrechnung, Paketweiterleitung,
Paketsicherheit und Paketklassifikation beziehen. Die Schal tung 100 verarbeitet
die Pakete auf der Grundlage der Kontextstrukturen und überträgt die verarbeiteten
Pakete vom Speicher 110.
-
Die
Schaltung 100 besteht aus einer Netzschnittstelle 101,
einer Arbeitswarteschlange 102, einem Kernprozessor 103,
einem Kreuzschienenschalter 104, einer Speichersteuereinrichtung 105,
einem inhaltsadressierbaren Speicher (CAM) 106 und einer
Look-up-Engine 107. Auf der Grundlage dieser Darlegung
werden Fachleute leicht verstehen, wie herkömmliche Paketverarbeitungsschaltungen
modifiziert werden können, um
die Schaltung 100 herzustellen und zu verwenden. Die Schaltung 100 könnte auch
eine einzelne integrierte Schaltung oder ein zusammenwirkender Satz
diskreter Schaltungen sein. Beispielsweise könnte der CAM 106 in
einer autonomen integrierten Schaltung vorhanden sein. Die Speicher 110 und 111 könnten miteinander oder
innerhalb der Schaltung 100 integriert sein. Der Speicher 110 könnte ein
synchroner dynamischer Direktzugriffsspeicher (SDRAM) sein. Der
Speicher 111 könnte
ein statischer Direktzugriffsspeicher (SRAM) sein.
-
Die
Netzschnittstelle 101 tauscht Pakete mit chipexternen Systemen
aus. Die Netzschnittstelle 101 tauscht die Pakete mit der
Speichersteuereinrichtung 105 und Verarbeitungseinträge mit der
Arbeitswarteschlange 102 aus. Die Arbeitswarteschlange 102 puffert
Einträge
für die
anschließende
Verarbeitung. Der Kernprozessor 103 verarbeitet eingehende
Pakete ansprechend auf Einträge
der Arbeitswarteschlange 102 von der Netzschnittstelle 101.
Die Netzschnittstelle 101 überträgt verarbeitete Pakete ansprechend
auf Einträge
der Arbeitswarteschlange 102 vom Kernprozessor 103 zu
externen Systemen. Der Kreuzschienenschalter 104 tauscht
Signale zwischen verschiedenen Elementen der Schaltung 100 aus.
Die Speichersteuereinrichtung 105 tauscht Pakete zwischen
der Netzschnittstelle 101 und dem Speicher 110 aus.
Die Speichersteuereinrichtung 105 tauscht Paket-Header
zwischen dem Kernprozessor 103 und dem Speicher 110 aus.
-
Der
Kernprozessor 103 könnte
ein herkömmlicher
Mikroprozessorkern sein, der eine Paketverarbeitungssoftware ausführt, um
die Paketbehandlung zu steuern. Der Kernprozessor 103 ruft
einen Paket-Header, ansprechend auf einen Eintrag in der Arbeitswarteschlange 102,
durch die Speichersteuereinrichtung 105 aus dem Speicher 110 ab.
Der Kernprozessor 103 erhält einen Summationsblock von
Kontextstrukturen für
das Paket vom Speicher 111 durch die Look-up-Engine 107.
Der Kernprozessor 103 führt
Software zum Verarbeiten des Paket-Headers und der Kontextstrukturen
aus, um eine ausgewählte
Verarbeitung auf das Paket anzuwenden. Der Kernprozessor 103 überträgt den verarbeiteten
Header durch die Speichersteuereinrichtung 105 wieder zum
Speicher 110 zurück
und gibt einen Paketübertragungseintrag
in die Arbeitswarteschlange 102 ein.
-
Die
Look-up-Engine empfängt
einen Selektor, der Paket-Header-Informationen
enthält,
vom Kernprozessor 103. Der Selektor gibt auch die Typen
von Kontextstrukturen für
das Paket an, die vom Kernprozessor 103 gewünscht werden,
wobei diese Typen typischerweise durch Kernprozessorsoftware definiert
werden. Der CAM 106 und die Look-up-Engine 107 arbeiten
zusammen, um die relevanten Kontextstrukturen vom Speicher 111 auszuwählen. Die
Look-up-Engine 107 bildet einen Summationsblock dieser
ausgewählten
Kontextstrukturen und führt
den Summationsblock dem Kernprozessor 103 zu. Der CAM 106 und
die Look-up-Engine 107 werden nachstehend detailliert erörtert.
-
1 zeigt
die Signale 1–13,
die auch in der folgenden Tabelle beschrieben sind.
SIGNAL | VON | ZU | INHALT |
1 | CHIPEXTERN | SPEICHER 110 | PAKET |
2 | NETZSCHNITTSTELLE 101 | PROZESSOR 103 | WARTESCHLANGENEINTRAG |
3 | SPEICHER 110 | PROZESSOR 103 | HEADER |
4 | PROZESSOR 103 | CAM 106 | ERSTER
SELEKTOR |
5 | CAM 106 | SPEICHER 111 | ERSTES
ERGEBNIS |
6 | SPEICHER 111 | LOOK-UP-ENGINE 107 | ERSTER
KONTEXT |
7 | LOOK-UP-ENGINE 107 | CAM 106 | ZWEITER
SELEKTOR |
8 | CAM 106 | SPEICHER 111 | ZWEITES
ERGEBNIS |
9 | SPEICHER 111 | LOOK-UP-ENGINE 107 | ZWEITER
KONTEXT |
10 | LOOK-UP-ENGINE 107 | PROZESSOR 103 | SUMMATIONSBLOCK |
11 | PROZESSOR 103 | SPEICHER 110 | HEADER |
12 | PROZESSOR 103 | NETZSCHNITTSTELLE 101 | WARTESCHLANGENEINTRAG |
13 | SPEICHER 110 | CHIPEXTERN | PAKET |
-
Beim
Betrieb empfängt
die Netzschnittstelle 101 ein Paket von außerhalb
des Chips und überträgt das Paket
durch den Kreuzschienenschalter 104 und die Speichersteuereinrichtung 105 zum
Speicher 110. Die Netzschnittstelle 101 gibt auch
einen Eintrag für
das Paket in die Arbeitswarteschlange 102 ein. Der Kernprozessor 103 liest
den Warteschlangeneintrag und ruft den Paket-Header durch die Speichersteuereinrichtung 105 und
den Kreuzschienenschalter 104 aus dem Speicher 110 ab.
-
Der
Kernprozessor 103 verarbeitet den Paket-Header, um einen
ersten Selektor zu erzeugen. Der Kernprozessor überträgt den ersten Selektor durch
den Kreuzschienenschalter 104 zur Look-up-Engine 107. Die
Look-up-Engine überträgt den ersten
Selektor zum CRM 106. Der CAM 106 verarbeitet
den ersten Selektor, um festzustellen, ob er mit irgendwelchen CAM-Einträgen übereinstimmt.
Falls eine Übereinstimmung
gefunden wird, überträgt der CAM 106 ein
entsprechendes erstes Ergebnis zur Look-up-Engine 107.
Die Look-up-Engine 107 überträgt das erste
Ergebnis zum Speicher 111, um eine erste Kontextstruktur
abzurufen. Die Look-up-Engine 107 verwendet die erste Kontextstruktur,
um den Summationsblock für
den Kernprozessor 103 zu bilden.
-
In
manchen Beispielen führt
die Look-up-Engine 107 eine Reihe von Suchen im CAM 103 aus,
um zusätzliche
Ergebnisse zu erhalten und zusätzliche
Kontextstrukturen aus dem Speicher 111 abzurufen. Für eine Suchreihe
erzeugt die Look-up-Engine 107 mindestens einen zweiten
Selektor auf der Grundlage des ersten Selektors. Typischerweise
wird hierbei ein Abschnitt des ersten Selektors, ansprechend auf
Modifikationsanweisungen vom Kernprozessor 103, modifiziert.
Die Look-up-Engine 107 überträgt den zweiten
Selektor zum CAM 106.
-
Der
CAM 106 verarbeitet den zweiten Selektor, um festzustellen,
ob er mit irgendwelchen CAM-Einträgen übereinstimmt. Falls eine Übereinstimmung
gefunden wird, überträgt der CAM 106 ein
entsprechendes zweites Ergebnis zur Look-up-Engine 107. Die Look-up-Engine 107 überträgt das zweite
Ergebnis zum Speicher 111, um die zweite Kontextstruktur
abzurufen. Die Look-up-Engine 107 verwendet die zweite
Kontextstruktur, um den Summationsblock für den Kernprozessor 103 weiter
aufzubauen. Zusätzliche
Selektoren können ähnlich erzeugt
und verwendet werden, um den Summationsblock weiter aufzubauen.
Demgemäß kann durch
geeignetes Konfigurieren des CAMs 103 und des Speichers 111 ein
einziger Selektor vom Kernprozessor 103 verwendet werden,
um einen Summationsblock aus Kontextstrukturen zu bilden, die für das Paket
relevant sind.
-
Die
Look-up-Engine 107 überträgt den Summationsblock
durch den Kreuzschienenschalter 104 zum Kernprozessor 103.
Der Kernprozessor 103 verarbeitet die Kontextstruktur im Summationsblock,
um festzustellen, wie das Paket behandelt werden sollte. Wenn die
Paketbehandlung abgeschlossen ist, überträgt der Kernprozessor 103 einen
Eintrag zur Arbeitswarteschlange 102 und überträgt den Header
zum Speicher 110 zurück.
Die Netzschnittstelle 101 liest den Warteschlangeneintrag
und überträgt das Paket
vom Speicher 110 außerhalb
des Chips.
-
Sobald
ein Summationsblock gebildet wurde, kann der Kernprozessor 103 die
Look-up-Engine 107 anweisen, den Summationsblock für eine spätere Verwendung
im Speicher 111 zu installieren. Die Installation vermeidet
die Aufgabe des wiederholten Neubildens des Summationsblocks. Ansprechend
auf eine Installationsanweisung des Kernprozessors schreibt die
Look-up-Engine 107 den Selektor für den installierten Summationsblock
in den CAM 106 und empfängt
das entsprechende CAM-Ergebnis.
Die Look-up-Engine 107 schreibt dann den Summationsblock
an eine Adresse, die dem CAM-Ergebnis entspricht, in den Speicher 111. Demgemäß kann der
Kernprozessor 103 den Summationsblock schnell wieder erhalten,
ohne dass die Look-up-Engine 107 mehrere
CAM-Suchen zur Neubildung des Summationsblocks verwendet.
-
Der Selektor und der Summationsblock 2
-
2 zeigt
die Beziehung zwischen einem Selektor und seinem Summationsblock,
wodurch effektiv festgelegt wird, wie Pakete mit einem bestimmten
Header behandelt werden. Ein Beispiel eines Selektors wird nachstehend
angegeben, wobei die Anzahl der Bits in Klammern angegeben ist.
TYP
(8) – SCHNITTSTELLENKENNUNG
(16) – PROTOKOLL
(8) – QUELLENADRESSE
(32) – ZIELADRESSE
(32) – QUELLENPORT
(16) – ZIELPORT
(16)
-
Der
Typ im vorderen Abschnitt des Selektors kann einem spezifischen
Typ von Kontextstruktur zugeordnet werden. Die folgende Tabelle
listet ein Beispiel dieser Zuordnungen auf:
TYP | KONTEXTSTRUKTUR |
1 | NETZADRESSUMSETZUNG |
2 | ABRECHNUNG |
3 | PAKETWEITERLEITUNG |
4 | PAKETSICHERHEIT |
5 | PAKETKLASSIFIKATION |
-
2 zeigt
einen CAM, der mit verschiedenen Selektoren konfiguriert ist, und
entsprechende Ergebnisse. Aus Gründen
der Einfachheit ist jeder Abschnitt des vorstehend erwähnten Beispiels
eines Selektors in 2 durch eine einzige Ziffer
dargestellt. Der CAM ist ternär,
so dass ein X ein beliebiger Eintrag ist, der mit allem übereinstimmt.
Die CAM-Ergebnisse
zeigen auf Kontextstrukturen im Speicher. Im Wesentlichen wählen die
CAM-Ergebnisse die Kontextstrukturen aus, die auf ein gegebenes
Paket angewendet werden.
-
Zur
Erläuterung
eines Beispiels sei angenommen, dass es vier verschiedene Netzadressumsetzungs-Kontextstrukturen
(NAT 1–4)
und drei verschiedene Sicherheitskontextstrukturen (SICHERHEIT 1–3) gibt.
Weiter sei angenommen, dass es erwünscht ist, NAT 2 und SICHERHEIT
3 für Pakete
zu implementieren, die folgendes aufweisen: Quellenadresse = 9,
Zieladresse = 8, Quellenport = 3 und Zielport = 4. Die Schnittstellenkennung
und das Protokoll dieser Pakete sind unbedeutend, so dass die relevanten
Pakete einen Selektor aufweisen, der mit den Ziffern 9834 endet.
-
Bevor
die Pakete ankommen, wird der CAM mit den Selektoreinträgen 1XX9834
und 4XX9834 konfiguriert, um die geeigneten Übereinstimmungen auszulösen. Der
CAM wird auch mit entsprechenden Ergebnissen B und K konfiguriert,
die auf die gewünschten
Kontextstrukturen NAT 2 und SICHERHEIT 3 zeigen.
-
Wenn
ein Paket ankommt, bei dem ein Header Schnittstellenkennung = 3,
Protokoll = 2, Quellenadresse = 9, Zieladresse = 8, Quellenport
= 3 und Zielport = 4 angibt, erzeugt der Kernprozessor den Typ-1-Selektor 1329834.
Dieser erste Selektor stimmt mit dem Eintrag 1XX9834 im CAM überein,
und das entsprechende Ergebnis B zeigt auf die NAT-2-Kontextstruktur
im Speicher. Auf der Grundlage des Ergebnisses B wird die NAT-2-Kontextstruktur in
den Summationsblock für
das Paket eingegeben.
-
Der
zweite Selektor wird erzeugt, indem das Typfeld von 1 zu 4 modifiziert
wird. Typischerweise gibt der Kernprozessor an, welcher Typ gesucht
werden muss und in welcher Reihenfolge dies geschehen sollte, indem
er eine Suchreihe spezifiziert. Der zweite Selektor 4329834 stimmt
mit dem Eintrag 4XX9834 im CAM überein,
und das entsprechende Ergebnis K zeigt auf die SICHERHEIT-3-Kontextstruktur
im Speicher. Die SICHERHEIT-3-Kontextstruktur wird dann in den Summationsblock
eingegeben. Der Kernprozessor behandelt das Paket dann auf der Grundlage
des Summationsblocks mit den gewünschten
Kontextstrukturen.
-
Es
sei bemerkt, dass der CAM-Eintrag unter 4XX9834 4XX98XX ist, der
auch mit dem Selektor 4329834 übereinstimmt.
Dieser untere Eintrag hat ein entsprechendes Ergebnis J, das auf
die SICHERHEIT-1-Kontextstruktur zeigt. Weil der CAM nur ein Ergebnis
für die
niedrigste übereinstimmende
Adresse zurückgibt,
wird das Ergebnis J nicht zurückgegeben.
Dies ermöglicht
eine Priorisierung von Kontextstrukturen durch ihre relative Anordnung
im CAM. In diesem Beispiel hat das Paket SICHERHEIT 3 empfangen,
während alle
anderen Pakete, die die gleiche Source-/Zieladresse, jedoch verschiedene
Ports, aufweisen, SICHERHEIT 1 empfangen würden.
-
Der
Summationsblock weist Felder auf, die Typen zugewiesen sind. Die
Kontextstrukturen haben die gleiche Größe und die gleiche Konfiguration
wie der Summationsblock, die Kontextstrukturen haben jedoch nur
gültige
Felder für
ihren jeweiligen Typ. Demgemäß kann ein
Summationsblock durch einfaches Überlagern der
ausgewählten
Kontextstrukturen gebildet werden.
-
Look-up-Engine 3–5
-
3 zeigt
die Look-up-Engine 307 gemäß einem Beispiel der Erfindung.
Die Look-up-Engine 307 besteht aus einer Master-Schnittstelle,
einer Speicherschnittstelle, einer SRAM-Steuereinrichtung, einer CAM-Steuereinrichtung,
Kanalsteuerregistern, Registern für die Kanäle 1–6 und Wartungsregistern. Der
Kernprozessor ist ein Beispiel eines Masters, wobei die Look-up-Engine 307 verwendet
wird, es können
jedoch auch andere Systeme als ein Master wirken. Die Master-Schnittstelle wird
zur Kommunikation mit dem Kernprozessor und anderen Mastern, typischerweise
durch den Kreuzschienenschalter, verwendet. Die Speicherschnittstelle
wird zur Kommunikation mit dem CAM und mit einem SRAM verwendet,
worin Kontextstrukturen und installierte Summationsblöcke gespeichert
sind.
-
Der
Kernprozessor und andere Master verwenden die Kanäle, um Summationsblöcke zu erhalten.
Die Look-up-Engine 307 bedient die Kanäle in umlaufender Weise. Jeder
Kanal hat Register für
einen Selektor und einen zugeordneten Summationsblock. Jeder Kanal
hat zusätzliche
Register, um drei verschiedene Suchreihen zu definieren und selektorbezogene
Operationen zu spezifizieren. Der Kernprozessor ist mit vier der
Kanäle
versehen, und zwei Kanäle
sind für
andere Master reserviert. Die anderen Master können einen Kanal durch Lesen
einer verfügbaren
Kanalnummer aus den Kanalsteuerregistern erhalten. Nach Abschluss
geben die Master den Kanal durch Schreiben der Kanalnummer in die
Kanalsteuerregister zurück.
Der Kernprozessor kann in ähnlicher
Weise auch einige seiner Kanäle
zur Verwendung durch die anderen Master freigeben.
-
Die 4–5 zeigen
Operationen für
die Look-up-Engine 307.
Um einen Summationsblock für
ein Paket zu erhalten, schreibt der Master den entsprechenden Selektor
und eine Suchanweisung in seine Kanalregister. Ein Bit im Typfeld
des Selektors gibt an, ob eine Einzelsuche oder eine Reihensuche
erwünscht
ist, und falls eine Reihensuche angegeben wird, schreibt der Master
auch die Typen für
die Reihensuche in der gewünschten
Suchreihenfolge in seine Kanalregister. Ein Feld gibt an, welche
der drei Suchreihen zu verwenden ist. Ein anderes Feld gibt an,
ob die Suche für
einen installierten Summationsblock erfolgt.
-
Falls
eine Einzelsuche gefordert wird, überträgt die CAM-Steuereinrichtung den einzelnen Selektor
in den CAM und überträgt jedes
CAM-Ergebnis zur SRAM-Steuereinrichtung. Die SRAM-Steuereinrichtung
ruft die Kontextstruktur, die dem CAM-Ergebnis entspricht, aus dem SRAM ab.
Die SRAM-Steuereinrichtung bildet den Summationsblock mit der Kontextstruktur
und schreibt den Summationsblock in die Kanalregister. Die SRAM-Steuereinrichtung
gibt in den Kanalregistern an, dass der Summationsblock für den Master
bereit ist.
-
Falls
eine Reihensuche angefordert wird, die sich nicht auf einen installierten
Summationsblock bezieht, überträgt die CAM-Steuereinrichtung
den ersten Selektor zum CAM und jedes CAM-Ergebnis zur SRAM-Steuereinrichtung.
Die CAM-Steuereinrichtung
modifiziert dann den Selektor, wie durch die Suchreihe angegeben
ist, und führt
zusätzliche
CAM-Suchen der Reihe nach aus. CAM-Ergebnisse werden zur SRAM-Steuereinrichtung
weitergeleitet. Die SRAM-Steuereinrichtung ruft die Kontextstrukturen,
die den CAM-Ergebnissen entsprechen, aus dem SRAM ab. Die SRAM-Steuereinrichtung
bildet den Summationsblock mit diesen Kontextstrukturen und schreibt
den Summationsblock in die Kanalregister. Die SRAM-Steuereinrichtung
gibt in den Kanalregistern an, dass der Summationsblock für den Master
bereit ist.
-
Falls
eine Reihensuche für
einen installierten Summationsblock gefordert wird, überträgt die CAM-Steuereinrichtung
den ersten Selektor für
den Summationsblock in den CAM. Falls ein Ergebnis zurückgegeben
wird, wird das CAM-Ergebnis zur SRAM-Steuereinrichtung weitergeleitet.
Die SRAM-Steuereinrichtung ruft den Summationsblock, der dem CAM-Ergebnis
entspricht, aus dem SRAM ab. Die SRAM-Steuereinrichtung schreibt
den Summationsblock in die Kanalregister. Die SRAM-Steuereinrichtung
gibt in den Kanalregistern an, dass der Summationsblock für den Master
bereit ist. Falls das CAM-Ergebnis
für den
ersten Selektor nicht zurückgegeben
wird, modifiziert die CAM-Steuereinrichtung den Selektor, wie durch
die Suchreihe angegeben wird, und führt zusätzliche CAM-Suchen aus. Die CAM-Ergebnisse werden
zur SRAM-Steuereinrichtung weitergeleitet. Die SRAM-Steuereinrichtung
ruft die Kontextstrukturen, die den CAM-Ergebnissen entsprechen,
aus dem SRAM ab. Die SRAM-Steuereinrichtung bildet den Summationsblock
mit diesen Kontextstrukturen und schreibt den Summationsblock in
die Kanalregister. Die SRAM-Steuereinrichtung gibt in den Kanalregistern
an, dass der Summationsblock für
den Master bereit ist.
-
Mit 5 fortfahrend
sei bemerkt, dass zur Aktualisierung des Summationsblocks im SRAM
der Master den Summationsblock in seinen Kanalregistern modifiziert
und eine Aktualisierungsanweisung in seine Kanalregister schreibt.
Für einen
installierten Summationsblock aktualisiert die SRAM-Steuereinrichtung
den Summationsblock im SRAM. Für
einen nicht installierten Summationsblock aktualisiert die SRAM-Steuereinrichtung
die entsprechenden Kontextstrukturen im SRAM.
-
Zum
Installieren des Summationsblocks im SRAM schreibt der Master eine
Installationsanweisung in seine Kanalregister. Die CAM-Steuereinrichtung
schreibt dann den Selektor, der dem Summationsblock zugeordnet ist,
in einen freien CAM-Eintrag. Selektoren für installierte Summationsblöcke haben
einen Typ von Null. Die CAM-Steuereinrichtung empfängt das
dem neuen Selektoreintrag entsprechende Ergebnis und überträgt das Ergebnis
zur SRAM-Steuereinrichtung. Die SRAM-Steuereinrichtung schreibt den Summationsblock
an die SRAM-Speicherstelle,
die dem Ergebnis zugeordnet ist. Die Look-up-Engine verfolgt das Alter jedes installierten
Summationsblocks und entfernt periodisch installierte Summationsblöcke, die über eine
Altersschwelle hinaus gealtert sind.
-
Zum
Deinstallieren des Summationsblocks im SRAM schreibt der Master
eine Deinstallationsanweisung in seine Kanalregister. Die CAM-Steuereinrichtung
löscht
dann den Selektor für
den installierten Summationsblock aus dem CAM. Die CAM-Steuereinrichtung
empfängt
das CAM-Ergebnis, das dem gelöschten
Selektoreintrag entspricht, und überträgt es zur
SRAM-Steuereinrichtung.
Die SRAM-Steuereinrichtung löscht den
installierten Summationsblock aus der SRAM-Speicherstelle, die dem
Ergebnis zugeordnet ist.
-
Look-up-Engine und CAM-Selektor-Verarbeitung – 6
-
6 zeigt
einen CAM 606 und eine Look-up-Engine 607 gemäß einem
Beispiel der Erfindung. In diesem Beispiel arbeiten die Look-up-Engine 607 und
der CAM 606 zusammen, um den Selektor vom Master zu verarbeiten,
um eine robustere Paketverarbeitung bereitzustellen. Die Look-up-Engine 607 kann
den Selektor modifizieren, eine Suchreihe erzeugen und Auslöser oder
Anweisungen für
die anschließende
Verarbeitung festlegen. Fachleute werden erkennen, wie diese Optionen
kombiniert werden können.
-
Der
CAM 606 ist mit Selektoren und entsprechenden Ergebnissen
konfiguriert. Die Look-up-Engine 607 ist mit einem Selektorregister,
einem Suchreihenregister und einer Selektorverarbeitungslogik konfiguriert. Abgesehen
von mit Bezug auf 6 beschriebenen Modifikationen
sind der CAM 606 und die Look-up-Engine 607 so
konfiguriert und arbeiten so, wie vorstehend beschrieben wurde.
-
Die
Look-up-Engine 607 empfängt
einen Selektor 64 vom Master. Der Selektor 64 hat
einen speziellen Typ, der hier als Typ X bezeichnet wird. Der Typ
X kann die gewünschte
Selektorverarbeitung direkt angeben und beispielsweise eine Suchreihe
festlegen. Der Typ X kann einen Satz spezieller Typen darstellen,
wobei spezifische spezielle Typen verschiedene Selektorverarbeitungen
angeben, wobei beispielsweise der Typ X1 die Bestimmung einer Suchreihe
angibt und der Typ X2 eine Modifikation des Selektors angibt. Der
Typ X kann sich auch auf das CAM-Ergebnis beziehen, um die gewünschte Selektorverarbeitung
anzugeben.
-
Zur
Modifikation des Selektors überträgt die Selektorverarbeitungslogik
einen Selektor mit dem Typ X zum CAM 606. Der CAM 606 sucht
eine Übereinstimmung
für den
Selektor und führt
das entsprechende Ergebnis der Look-up-Engine 607 zu. Das
Ergebnis kann einen neuen Typ, neue Header-Informationen oder andere
Informationen, die in einem Selektor enthalten sein können, angeben.
Die Selektorverarbeitungslogik modifiziert den Selektor 64 auf
der Grundlage des Ergebnisses.
-
Zur
Bildung einer Suchreihe überträgt die Selektorverarbeitungslogik
einen Selektor mit dem Typ X zum CAM 606. Der CAM 606 sucht
eine Übereinstimmung
für den
Selektor und führt
das entsprechende Ergebnis der Look-up-Engine 607 zu. Das
Ergebnis gibt Typen 1 – N
an. Die Selektorverarbeitungslogik modifiziert den Selektor 64 auf
der Grundlage des Ergebnisses, um den Typ 1 aufzunehmen. Die Selektorverarbeitungslogik
fügt die
Typen 2 – N
zum Suchreihenregister hinzu.
-
Eine
Anweisung ist eine Aktion, für
deren Erkennung und Implementation die Look-up-Engine 607 konfiguriert
ist. Ein primäres
Beispiel einer Anweisung ist eine Summationsblockinstallation. Ein
Auslöser
ist eine Bedingung, die eine zusätzliche
Verarbeitung einleitet, wenn sie erfüllt ist. Falls beispielsweise
ein folgendes CAM-Ergebnis einen bestimmten Code hat, wird die bestimmte
Verarbeitungsoption angewendet, wie beispielsweise die Modifikation
der Selektor-Header-Informationen,
das Bilden einer Suchreihe oder das Erhalten einer Anweisung.
-
Zum
Erhalten eines Auslösers
oder einer Anweisung überträgt die Selektorverarbeitungslogik
einen Selektor mit dem Typ X zum CAM 606. Der CAM 606 sucht
eine Übereinstimmung
für den
Selektor und führt das
entsprechende Ergebnis der Look-up-Engine 607 zu.
Das Ergebnis gibt den Auslöser
oder die Anweisung an. Die Selektorverarbeitungslogik implementiert
den Auslöser
oder die Anweisung, wenn anwendbar. Beispielsweise kann die Selektorverarbeitungslogik
eine Anweisung zum automatischen Installieren eines Summationsblocks,
nachdem der Summationsblock erhalten wurde, erzeugen.
-
Spezielle CAM-Konfiguration 7
-
7 zeigt
einen CAM 706 gemäß einem
Beispiel der Erfindung. Der CAM 706 besteht aus einer Verarbeitungslogik 721 und
einer Selektor-Logik 722. Die Verarbeitungslogik 721 ist
durch einen Datenbus 725 und einen Ergebnisbus 726 mit
der Look-up-Engine verbunden, wenngleich der Ergebnisbus 726 in
manchen Fällen
fortgelassen werden kann. Die Verarbeitungslogik 721 verarbeitet
Selektoren und kommuniziert zwischen der Logik 722 und
den Bussen 725–726.
Die Selektor-Logik 722 ist
wie vorstehend für
einen CAM beschrieben konfiguriert und arbeitet so, um Selektoren
zu verarbeiten und entsprechende Ergebnisse bereitzustellen.
-
In
einem Beispiel überträgt die Look-up-Engine
einen Selektor über
den Datenbus 725 zur Verarbeitungslogik 721. Die
Verarbeitungslogik 721 übergibt
den Selektor an die Selektor-Logik 722, um ein entsprechendes
Ergebnis von der Selektor-Logik 722 zu erhalten. Die Verarbeitungslogik 724 inkrementiert
dann automatisch das Typfeld in dem Selektor und übergibt
den modifizierten Selektor an die Selektor-Logik 722, um ein
entsprechendes Ergebnis von der Selektor-Logik 722 zu erhalten.
Dieser Prozess wird wiederholt, bis das Typfeld auf eine spezifizierte
Zahl inkrementiert wurde.
-
In
einem anderen Beispiel überträgt die Look-up-Engine
einen Selektor und eine Suchreihe über den Datenbus 725 zur
Verarbeitungslogik 721. Die Verarbeitungslogik 721 übergibt
den Selektor an die Selektor-Logik 722, um ein entsprechendes
Ergebnis von der Selektor-Logik 722 zu erhalten. Die Verarbeitungslogik 721 modifiziert
dann das Typfeld in dem Selektor auf der Grundlage der Suchreihe
und übergibt
den modifizierten Selektor an die Selektor-Logik 722, um
ein entsprechendes Ergebnis von der Selektor-Logik 722 zu erhalten.
Dieser Prozess wird wiederholt, bis die Suchreihe abgeschlossen
ist.
-
Es
sei bemerkt, dass der Datenbus 725 nicht mehr Selektoren
für jede
CAM-Suche zu übertragen braucht,
weil die Verarbeitungslogik 721 den Selektor automatisch
modifiziert und die modifizierten Selektoren an die Selektor-Logik 722 übergibt.
Hierdurch wird zusätzliche
Kapazität
auf dem Datenbus 725 erzeugt. Falls gewünscht, kann die Verarbeitungslogik 721 die
entsprechenden Ergebnisse über
den Datenbus 725 zur Look-up-Engine übertragen, wobei diese zusätzliche
Buskapazität
verwendet wird. Vorteilhafterweise könnten der Ergebnisbus 726 und
seine zugeordneten Anschlussstifte fortgelassen werden. Alternativ
könnte
der Ergebnisbus 726 noch verwendet werden, um Ergebnisse
zur Look-up-Engine zu übertragen.
-
Die
Verarbeitungslogik 721 kann die vorstehend mit Bezug auf
die Selektor-Modifikation und die Suchreihenerzeugung beschriebene
Verarbeitung aufnehmen. Zur Modifikation des Selektors überträgt die Verarbeitungslogik 721 einen
Selektor zur Selektor-Logik 722, um ein entsprechendes
Ergebnis von der Selektor-Logik 722 zu erhalten. Das Ergebnis
kann einen neuen Typ, neue Header-Informationen oder andere Informationen,
die in einen Selektor aufgenommen werden können, angeben. Die Verarbeitungslogik 721 modifiziert
den Selektor auf der Grundlage des Ergebnisses und nimmt die Suchoperationen
wieder auf.
-
Zur
Bildung einer Suchreihe überträgt die Verarbeitungslogik 721 einen
Selektor zur Selektor-Logik 722, um ein entsprechendes
Ergebnis von der Selektor-Logik 722 zu erhalten. Das Ergebnis
gibt Typen 1 – N an.
Die Verarbeitungslogik 721 übergibt eine Reihe von Selektoren
mit Typen 1 – N
an die Selektor-Logik 722, um entsprechende Ergebnisse
von der Selektor-Logik 722 zu erhalten, die der Look-up-Engine
zugeführt
werden.
-
Zusätzliche Merkmale der Look-up-Engine
-
Eine
Profilierungsreihe ist ein bestimmter Typ einer Reihensuche, der
in den Kanalregistern definiert werden kann. Die Profilierungsreihe
erhält
einen Summationsblock, der Zähler
an Stelle der gewöhnlichen Kontextstrukturen
enthält.
Der Summationsblock von Zählern
kann wie vorstehend beschrieben erzeugt und installiert werden.
Der Master kann die Zähler
in dem Summationsblock modifizieren oder einen Autoaktualisierungsmechanismus
in der Look-up-Engine verwenden. In einem Beispiel eines Autoaktualisierungsszenarios
weist der Summationsblock acht Paare von Zählern, nämlich eines Zählers 1
und eines Zählers
2, auf. Die Look-up-Engine hält
Autoinkrementwerte für
den Zähler
1 und den Zähler
2 in Registern, die von den Mastern konfigurierbar sind. Falls der
Master eine Autoaktualisierung festlegt und die Autoinkrementwerte
in den Registern sind, aktualisiert die Look-up-Engine die Summationsblockzähler 1 und
2 automatisch um ihre jeweiligen Autoinkrementwerte für jede Profilreihensuche.
Das typische Beispiel besteht darin, Pakete mit einem gegebenen
Selektor durch Autoinkrementieren um eins zu zählen. Der Master kann auch
die Byteanzahl in dem Paket in das Autoinkrementregister schreiben,
um die Gesamtanzahl von Bytes für
einen gegebenen Selektor zu profilieren.
-
Mehrere
Kontextstrukturen können
Daten an einer gemeinsamen Speicherstelle gemeinsam verwenden. Jede
Kontext struktur identifiziert ihre Felder, die keine Daten halten,
sondern auf gemeinsam verwendete Daten zeigen. Wenn der Summationsblock
gebildet wird, verwendet die Look-up-Engine Zeiger von diesen Feldern,
um die gemeinsam verwendeten Daten aus der gemeinsamen Speicherstelle
abzurufen. Falls der Summationsblock dann für die anschließende Verwendung
installiert wird, werden die gemeinsam verwendeten Daten an die
gemeinsam verwendeten Speicherstellen zurückgeschrieben, und die geeigneten
Zeiger werden in den gespeicherten Summationsblock eingegeben. Wenn
der gespeicherte Summationsblock wiederverwendet wird, verwendet
die Look-up-Engine die Zeiger zum Abrufen der gemeinsam verwendeten
Daten und um sie in den Summationsblock für den Master einzugeben. Die
Look-up-Engine ermöglicht
es dem Master und anderen Mastern, den SRAM und den CAM zu initialisieren
und zu warten. Weil die Einträge
im CAM direkt Kontextstrukturen und Summationsblöcken im SRAM zugeordnet sind,
kann es wünschenswert
sein, Suchaktivitäten
zu unterbrechen, während
der CAM und der SRAM modifiziert werden. Um die Wartung einzuleiten, liest
der Master den Status aus den Wartungsregistern, um festzustellen,
ob eine Wartungsoperation zulässig ist.
Falls dies der Fall ist, schreibt der Master in die Wartungsregister,
um Wartungsoperationen durch andere Master zu sperren. Falls gewünscht, kann
der Master auch in die Wartungsregister schreiben, um Suchoperationen
zu sperren. Falls Suchoperationen nicht gesperrt sind, erhalten
sie Priorität über Wartungsoperationen.
-
Die
Wartungsregister weisen getrennte Register für CAM-Wartungsoperationen und SRAM-Wartungsoperationen
auf. Für
CAM-Wartungsoperationen schreibt der Master einen Adressen- und Transaktionstyp
in die CAM-Wartungsregister. Für
eine Schreiboperation schreibt der Master auch Daten und eine Datenmaske in
die CAM-Wartungsregister. Die Datenmaske gibt unbedeutende CAM-Einträge an. Die
CAM-Steuereinrichtung führt
die Wartungsoperation aus und gibt einen Operationsabschluss in
den CAM-Wartungsregistern an. Ansprechend auf den Abschluss gibt
der Master typischerweise Wartungs- und Suchoperationen für andere Master
frei.
-
Für SRAM-Wartungsoperationen
schreibt der Master einen Adressen- und Transaktionstyp in die SRAM-Wartungsregister.
Für eine
Schreiboperation schreibt der Master auch Daten in die SRAM-Wartungsregister.
Die SRAM-Steuereinrichtung führt
die Wartungsoperation aus und gibt den Operationsabschluss in den
SRAM-Wartungsregistern an. Ansprechend auf den Abschluss gibt der
Master typischerweise Wartungs- und Suchoperationen für andere
Master frei.
-
Die
Look-up-Engine unterstützt
mehrere verschiedene CAMs. Die Look-up-Engine weist CAM-Konfigurationsregister
auf, die Konfigurationsinformationen für den CAM empfangen, der für die Implementation ausgewählt wurde.
Die Look-up-Engine arbeitet unter Verwendung der CAM-Konfigurationsinformationen in den
Registern mit dem ausgewählten
CAM zusammen. Einige Beispiele der CAM-Konfigurationsinformationen umfassen:
Adressgranularität,
Strobe-Polarität,
Datenbreite, Anzahl der Zyklen vom Selektor bis zum Ergebnis, Zyklen
für Übereinstimmungs-Hinweiszeichen
und Adressierungs- und Vergleichsparameter.
-
Die 1–7 und
die vorstehende Beschreibung erläutern
spezifische Beispiele einer Paketverarbeitungsschaltung gemäß der vorliegenden
Erfindung. Fachleute werden verstehen, dass einige herkömmliche
Aspekte der Schaltung im Interesse der Klarheit vereinfacht oder
fortgelassen wurden. Fachleute werden verstehen, dass die vorstehend
beschriebenen Merkmale auf verschiedene Arten kombiniert werden
könnten, um
mehrere Variationen der Erfindung zu bilden. Fachleuten werden Variationen
der Schaltung einfallen, die innerhalb des Schutzumfangs der Erfindung
liegen. Daher ist die Erfindung nicht auf die vorstehend beschriebenen
spezifischen Beispiele, sondern nur durch die folgenden Ansprüche und
ihre Entsprechungen beschränkt.