DE60131277T2 - Kommunikationspaketprozessor mit einer look-up-engine zum abrufen von kontextinformationen für einen kernprozessor - Google Patents

Kommunikationspaketprozessor mit einer look-up-engine zum abrufen von kontextinformationen für einen kernprozessor Download PDF

Info

Publication number
DE60131277T2
DE60131277T2 DE60131277T DE60131277T DE60131277T2 DE 60131277 T2 DE60131277 T2 DE 60131277T2 DE 60131277 T DE60131277 T DE 60131277T DE 60131277 T DE60131277 T DE 60131277T DE 60131277 T2 DE60131277 T2 DE 60131277T2
Authority
DE
Germany
Prior art keywords
selector
summation block
addressable memory
engine
look
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60131277T
Other languages
English (en)
Other versions
DE60131277D1 (de
Inventor
Paul V. Lexington BERGANTINO
Anna K. Foxboro KUJTKOWSKI
Jeffrey M. Sudbury WINSTON
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mindspeed Technologies LLC
Original Assignee
Mindspeed Technologies LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mindspeed Technologies LLC filed Critical Mindspeed Technologies LLC
Publication of DE60131277D1 publication Critical patent/DE60131277D1/de
Application granted granted Critical
Publication of DE60131277T2 publication Critical patent/DE60131277T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/60Router architectures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements

Landscapes

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

Description

  • 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 35
  • 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 45 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 725726. 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 17 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.

Claims (20)

  1. Schaltung (100) zum Verarbeiten eines Kommunikationspakets, wobei die Schaltung (100) gekennzeichnet ist durch: einen inhaltsadressierbaren Speicher (106), der dafür konfiguriert ist, einen ersten Selektor zu empfangen und zu verarbeiten, um weitere Selektoren zu erzeugen, diese weiteren Selektoren auf Übereinstimmungen zu verarbeiten und Ergebnisse entsprechend den Übereinstimmungen zu liefern; eine Look-up Engine (107), die dafür konfiguriert ist, den ersten Selektor an den inhaltsadressierbaren Speicher (106) zu übertragen und die Ergebnisse von dem inhaltsadressierbaren Speicher (106) zu empfangen, Kontextstrukturen aus einem Kontextspeicher (111) basierend auf den Ergebnissen abzurufen, anhand der Kontextstrukturen einen Summatiönsblock zu erstellen und den Summationsblock zu übertragen; und einen Prozessor (103), der dafür konfiguriert ist, den Summationsblock zu empfangen und zu verarbeiten, um die Behandlung des Kommunikationspakets zu steuern.
  2. Schaltung (100) gemäß Anspruch 1, wobei die Look-up Engine (107) dafür konfiguriert ist, eine Aktualisierungsanweisung und eine modifizierte Kontextstruktur zu empfangen und als Reaktion auf die Aktualisierungsanweisung automatisch die modifizierte Kontextstruktur in den Kontextspeicher (111) zu schreiben.
  3. Schaltung (100) gemäß Anspruch 1, wobei die Look-up Engine (107) dafür konfiguriert ist, eine Installationsanweisung für den Summationsblock zu empfangen, einen Summationsblock-Selektor in den inhaltsadressierbaren Speicher (106) zu schreiben und ein entsprechendes Summationsblock-Ergebnis von dem inhaltsadressierbaren Speicher (106) zu empfangen, den Summationsblock an eine Speicherposition zu schreiben, die dem Summationsblock-Ergebnis entspricht, anschließend den Summationsblock-Selektor an den inhaltsadressierbaren Speicher (106) zu übertragen und das entsprechende Summationsblock-Ergebnis von dem inhaltsadressierbaren Speicher (106) zu empfangen, den Summationsblock basierend auf dem Summationsblock-Ergebnis abzurufen und den Summationsblock zu übertragen.
  4. Schaltung (100) gemäß Anspruch 1, wobei der inhaltsadressierbare Speicher (106) dafür konfiguriert ist, die weiteren Selektoren zu erzeugen, indem ein Teil des ersten Selektors inkrementiert wird.
  5. Schaltung (100) gemäß Anspruch 1, wobei die Look-up Engine (107) dafür konfiguriert ist, den ersten Selektor an den inhaltsadressierbaren Speicher (106) zu übertragen, ein entsprechendes erstes Ergebnis von dem inhaltsadressierbaren Speicher (106) zu empfangen und die weiteren Selektoren basierend auf dem ersten Ergebnis zu erzeugen.
  6. Schaltung (100) gemäß Anspruch 1, wobei der Prozessor (103) dafür konfiguriert ist, Header-Informationen des Kommunikationspakets zu verarbeiten, um den ersten Selektor zu erzeugen und an die Look-up Engine (107) zu übertragen.
  7. Schaltung (100) gemäß Anspruch 1, wobei sich die Kontextstrukturen auf die Netzadressumsetzung, Paketsicherheit und Paketklassifizierung beziehen.
  8. Schaltung (100) gemäß Anspruch 1, wobei ein erstes der Ergebnisse, das dem ersten Selektor entspricht, eine Verarbeitungsanweisung für die Look-up Engine (107) anzeigt.
  9. Schaltung (100) gemäß Anspruch 1, wobei der inhaltsadressierbare Speicher (106) dafür konfiguriert ist, über einen einzelnen bidirektionalen Datenbus den ersten Selektor zu empfangen und die Ergebnisse zu übertragen.
  10. Schaltung (100) gemäß Anspruch 1, wobei der Prozessor (103), die Look-up Engine (107) und der inhaltsadressierbare Speicher (106) in einer einzigen integrierten Schaltung konfiguriert sind.
  11. Verfahren zum Betreiben der Schaltung (100), um ein Kommunikationspaket zu verarbeiten, wobei das Verfahren umfasst: einen ersten Selektor an einen inhaltsadressierbaren Speicher (106) zu übertragen; in dem inhaltsadressierbaren Speicher (106) den ersten Selektor zu verarbeiten, um weitere Selektoren zu erzeugen, und die weiteren Selektoren auf Übereinstimmungen zu verarbeiten; die Ergebnisse, die den Übereinstimmungen entsprechen, von dem inhaltsadressierbaren Speicher (106) zu übertragen; Kontextstrukturen aus einem Kontextspeicher (111) basierend auf den Ergebnissen abzurufen und einen Summationsblocks anhand der Kontextstrukturen zu erstellen; und den Summationsblock zu verarbeiten, um die Behandlung des Kommunikationspakets zu steuern.
  12. Verfahren gemäß Anspruch 11, welches ferner umfasst, eine Aktualisierungsanweisung und eine modifizierte Kontextstruktur zu empfangen und als Reaktion auf die Aktualisie rungsanweisung automatisch die modifizierte Kontextstruktur in den Kontextspeicher (111) zu schreiben.
  13. Verfahren gemäß Anspruch 11, welches ferner umfasst: eine Installationsanweisung für den Summationsblock zu empfangen; einen Summationsblock-Selektor in den inhaltsadressierbaren Speicher (106) zu schreiben und ein entsprechendes Summationsblock-Ergebnis von dem inhaltsadressierbaren Speicher (106) zu empfangen; den Summationsblock an eine Speicherposition zu schreiben, die dem Summationsblock-Ergebnis entspricht; anschließend den Summationsblock-Selektor an den inhaltsadressierbaren Speicher (106) zu übertragen und das entsprechende Summationsblock-Ergebnis von dem inhaltsadressierbaren Speicher (106) zu empfangen; und anschließend den Summationsblock basierend auf dem Summationsblock-Ergebnis abzurufen.
  14. Verfahren gemäß Anspruch 11, wobei das Erzeugen der weiteren Selektoren umfasst, einen Teil des ersten Selektors zu inkrementieren.
  15. Verfahren gemäß Anspruch 11, wobei das Erzeugen der weiteren Selektoren umfasst: den ersten Selektor an den inhaltsadressierbaren Speicher (106) zu übertragen; ein entsprechendes erstes Ergebnis von dem inhaltsadressierbaren Speicher (106) zu empfangen; und die weiteren Selektoren basierend auf dem ersten Ergebnis zu erzeugen.
  16. Verfahren gemäß Anspruch 11, ferner umfassend, Header-Informationen des Kommunikationspakets zu verarbeiten, um den ersten Selektor zu erzeugen.
  17. Verfahren gemäß Anspruch 11, wobei sich die Kontextstrukturen auf die Netzadressumsetzung, Paketsicherheit und Paketklassifizierung beziehen.
  18. Verfahren gemäß Anspruch 11, wobei ein erstes der Ergebnisse, das dem ersten Selektor entspricht, eine Verarbeitungsanweisung anzeigt.
  19. Verfahren gemäß Anspruch 11, wobei das Empfangen des ersten Selektors und das Übertragen der Ergebnisse umfasst, einen einzelnen bidirektionalen Datenbus zu benutzen.
  20. Verfahren gemäß Anspruch 11, wobei die Schaltung (100) in einer einzigen integrierten Schaltung konfiguriert ist.
DE60131277T 2000-06-14 2001-06-12 Kommunikationspaketprozessor mit einer look-up-engine zum abrufen von kontextinformationen für einen kernprozessor Expired - Lifetime DE60131277T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US21186300P 2000-06-14 2000-06-14
US211863P 2000-06-14
PCT/US2001/018821 WO2001097449A2 (en) 2000-06-14 2001-06-12 Communication packet processor with a look-up engine to retrieve context information for a core processor

Publications (2)

Publication Number Publication Date
DE60131277D1 DE60131277D1 (de) 2007-12-20
DE60131277T2 true DE60131277T2 (de) 2008-09-04

Family

ID=22788600

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60131277T Expired - Lifetime DE60131277T2 (de) 2000-06-14 2001-06-12 Kommunikationspaketprozessor mit einer look-up-engine zum abrufen von kontextinformationen für einen kernprozessor

Country Status (5)

Country Link
US (1) US6845099B2 (de)
EP (1) EP1290831B1 (de)
AU (1) AU2001266846A1 (de)
DE (1) DE60131277T2 (de)
WO (1) WO2001097449A2 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2378622A (en) 2001-08-11 2003-02-12 Zarlink Semiconductor Ltd Updating a lookup table used in mapping between TDM channels and packets
US6901491B2 (en) * 2001-10-22 2005-05-31 Sun Microsystems, Inc. Method and apparatus for integration of communication links with a remote direct memory access protocol
US7193996B2 (en) 2002-02-28 2007-03-20 Acme Packet, Inc. System and method for determining a source of an internet protocol packet
US7822877B2 (en) * 2006-11-27 2010-10-26 Bay Microsystems, Inc. Network processor integrated circuit with a software programmable search engine communications module

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5329618A (en) 1992-04-02 1994-07-12 Fibronics Ltd. Look-up table for a bridge in a data communications system
JPH09307581A (ja) * 1996-05-16 1997-11-28 Oki Electric Ind Co Ltd ブリッジ装置
US6304903B1 (en) * 1997-08-01 2001-10-16 Agilent Technologies, Inc. State machine for collecting information on use of a packet network
AU9484098A (en) 1997-09-17 1999-04-05 Sony Electronics Inc. Triplet architecture in a multi-port bridge for a local area network including method and apparatus for periodically updating entries in a content addressable memory
US6728249B2 (en) * 1998-06-27 2004-04-27 Intel Corporation System and method for performing cut-through forwarding in an ATM network supporting LAN emulation
US6424659B2 (en) * 1998-07-17 2002-07-23 Network Equipment Technologies, Inc. Multi-layer switching apparatus and method
US6289414B1 (en) * 1998-10-08 2001-09-11 Music Semiconductors, Inc. Partially ordered cams used in ternary hierarchical address searching/sorting
US6502163B1 (en) * 1999-12-17 2002-12-31 Lara Technology, Inc. Method and apparatus for ordering entries in a ternary content addressable memory
US6535951B1 (en) * 2000-02-29 2003-03-18 Cisco Technology, Inc. Hit result register file used in a CAM

Also Published As

Publication number Publication date
AU2001266846A1 (en) 2001-12-24
US20020122419A1 (en) 2002-09-05
DE60131277D1 (de) 2007-12-20
WO2001097449A3 (en) 2002-04-18
EP1290831B1 (de) 2007-11-07
EP1290831A2 (de) 2003-03-12
US6845099B2 (en) 2005-01-18
WO2001097449A2 (en) 2001-12-20

Similar Documents

Publication Publication Date Title
DE60203380T2 (de) Verfahren und vorrichtung zur mehrfachsendung
EP1057102B1 (de) VERFAHREN ZUR DEADLOCKFREIEN KONFIGURATION VON DATENFLUSSPROZESSOREN UND BAUSTEINEN MIT ZWEI- ODER MEHRDIMENSIONALER PROGRAMMIERBARER ZELLSTRUKTUR (FPGAs, DPGAs, O. DGL.)
DE69031266T2 (de) Übertragungsarchitektur für Hochgeschwindigkeitsnetzwerk
DE60221030T2 (de) Verfahren, einrichtung und rechnerprogramm für die entkapselung und verkapselung von paketen mit mehreren kopffeldern
DE69834122T2 (de) Verbindingsunterstützung in einer hochleistungsnetzwerkvorrichtung
DE60026676T2 (de) Paketklassifizierungsautomat
DE102006058818B4 (de) Vorrichtung und Verfahren zur Umwandlung von Textmitteilungen
DE60313371T2 (de) Verwendung von baumartigen "Bitmap" Datenstrukturen
DE69838387T2 (de) Verfahren und vorrichtung in einem paketenleitweglenkungsschalter um den zugriff zu einem gemeinsamen speicher auf verschiedenen datenraten zu steuern
DE60028176T2 (de) Verfahren zur automatischen Übertragung des Rückbestätigungsrahmens in Canopen und anderen Can Verarbeitungschichtprotokollen
EP2882144B1 (de) Verfahren und Filteranordnung zum Filtern von über einen seriellen Datenbus eines Kommunikationsnetzwerks in einem Teilnehmer des Netzwerks eingehenden Nachrichten
DE60317155T2 (de) Netzwerkeinheiten zur Verwendung in und Organisation von Kaskadensystemen
DE68923951T2 (de) Hochgeschwindigkeits-Kombinierschalter mit Einzelfifo.
DE60015186T2 (de) Verfahren und system für rahmen- und protokollklassifikation
DE69019247T2 (de) Kontrollverfahren und Vorrichtung bei der Kommunikation zwischen Rechnern.
DE3853162T2 (de) Gemeinsamer intelligenter Speicher für die gegenseitige Verbindung von verteilten Mikroprozessoren.
DE68927202T2 (de) Paralleler Prozessor
DE60215416T2 (de) Zeigerbasierte binäre Suchmaschine und dafür geeignetes Verfahren
DE19860120A1 (de) Routensuchschaltung und diese verwendende Kommunikationsvorrichtung
DE19718105A1 (de) Multiprozessorsystem zur Unterstützung einer Rundsendekommunikation und Intermultiprozessor-Kommunikationsverfahren dafür
DE69830113T2 (de) Verfahren zur Adresseneinstellung und Kommunikationssystem das dieses verwendet
DE60131277T2 (de) Kommunikationspaketprozessor mit einer look-up-engine zum abrufen von kontextinformationen für einen kernprozessor
DE60120290T2 (de) Vermittlungsanlage mit externer Adressenauflösungsschnittstelle
DE60211466T2 (de) Prozessor mit reduzierten Speicheranforderungen für Hochgeschwindigkeitsrouting und Vermittlung von Paketen
DE69031885T2 (de) Leitweglenkungsvorrichtung und -verfahren für lokales Maschennetzwerk hoher Geschwindigkeit

Legal Events

Date Code Title Description
8364 No opposition during term of opposition