-
Gebiet der
Erfindung
-
Die
vorliegende Erfindung bezieht sich im Allgemeinen auf Paketverarbeitungssysteme,
und insbesondere auf einen Netzwerkprozessor oder einen anderen
Typ von Prozessor, der für
eine Verwendung in der Durchführung
von Paket-Routing, Paket-Vermittlung und anderen Paketverarbeitungsoperationen
innerhalb eines solchen Systems konfiguriert ist.
-
Hintergrund
der Erfindung
-
Ein
Netzwerkprozessor steuert im Allgemeinen den Paketfluss zwischen
einem physikalischen Übertragungsmedium,
wie z.B. einem physikalischen Schichtanteil von beispielsweise einem
Netzwerk mit asynchronem Übertragungsmode
(„Asynchronous Transfer
Mode Network (ATM)")
oder einem synchronen optischen Netzwerk („Synchronous Optical Network
(SONET)"), und einem
Schalternetz in einem Router (Kommunikationsserver zur Überleitung
von Nachrichten) oder einem anderen Typ von Paketschalter. Solche
Router und Schalter beinhalten im Allgemeinen mehrere Netzwerkprozessoren,
die beispielsweise in der Form einer Reihe oder von Anschlussbaugruppen
angeordnet sind, wobei einer oder mehrere der Prozessoren mit jeder
der Baugruppen assoziiert ist.
-
Bei
der Durchführung
von Paketverarbeitungsoperationen, wie z.B. Routing oder Vermittlung („Switching"), muss der Netzwerkprozessor
typischerweise wenigstens einen Teil des Anfangs oder des Kopfes
eines jeden Pakets untersuchen. Der Umfang eines jeden Pakets, der
untersucht werden muss, hängt
ab von seinen assoziierten Netzwerkkommunikationsprotokollen, aktiven
Optionen und anderen ähnlichen
Faktoren. Die Hochwertigkeit oder Komplexität des Routers oder Schalters
kann ebenso den Umfang eines jeden Pakets, der eine Untersuchung
benötigt,
beeinflussen.
-
Viele
konventionelle Router und Schalter sind so konfiguriert, für ein gegebenes
Paket, das verarbeitet wird, im Wesentlichen das gesamte Paket zu
speichern, bis dieses Paket letztendlich zu seinem Ziel übertragen
wird oder fallen gelassen wird. Das Paket wird für gewöhnlich in einem Router- oder
einem Schalter-Speicher gespeichert, der zu dem assoziierten Netzwerkprozessor
extern angeordnet ist. Die Länge
der Zeit, in der das gegebene Paket in dem externen Speicher gehalten
werden kann, wird beeinflusst durch die grundlegende Verarbeitungszeit
des Routers oder Schalters, durch die Servicequalität, die auf
das Paket angewandt wird, durch die bestimmten Protokollschichten,
die zu analysieren sind, und durch die Blockierung des Anschlusses oder
eines anderen Kommunikationskanals, an welchen das Paket gerichtet
wird.
-
Hochgeschwindigkeits-Router
und -Schalter werden typischerweise in einem auf dem Chip untergebrachten
Speicher innerhalb des Netzwerkprozessors einen gewissen Teil eines
gegebenen Paktes speichern, das durch diesen Netzwerkprozessor verarbeitet
wird. Dies erhöht
im großen
Maße die
Leistungsfähigkeit
des Routers oder Schalters, indem es nicht erforderlich ist, auf
den größeren externen
Speicher zuzugreifen, der das ganze Paket enthält, in der Weise, dass der
externe Speicher langsamer ist und hinsichtlich der Bandbreite begrenzter
ist als der auf dem Chip untergebrachte Speicher. Jedoch gibt in der
konventionellen Praxis der Paketteil des ungünstigsten Falles, der den Bedarf
haben kann, in einer gegebenen Router- oder Schalter-Anwendung analysiert
zu werden, für
gewöhnlich
die Größe eines
jeden Paketteils vor, der in dem auf dem Chip untergebrachten Speicher
gehalten wird, obgleich der Paketteil des ungünstigsten Falls mit nur bestimmten,
selten auftretenden Paketen assoziiert sein kann. Dies erhöht in signifikanter
Weise die erforderliche Größe des auf
dem Chip untergebrachten Speichers, und folglich den Preis und die
Komplexität
des Netzwerkprozessors.
-
Es
ist aus diesem Grund ersichtlich, dass ein Bedarf für eine verbesserte
Technik besteht, um bestimmte Teile von Paketen zu bestimmen, die
in bestimmten Speichern zu speichern sind, die mit einem Netzwerkprozessor
oder einem anderen Typ von Prozessor assoziiert sind, um die Speicheranforderungen
der Vorrichtung zu reduzieren.
-
US-Patent
6 032 190 ist repräsentativ
für den Stand
der Technik.
-
Zusammenfassung
der Erfindung
-
Die
Erfindung sieht eine signifikante Reduktion in den Speicheranforderungen
eines Netzwerkprozessors oder eines anderen Prozessortyps vor.
-
Gemäß der vorliegenden
Erfindung wird ein Prozessor gemäß Anspruch
1 bereitgestellt. Gemäß der vorliegenden
Erfindung wird weiterhin ein Verfahren gemäß Anspruch 10 bereitgestellt.
-
Gemäß einer
Ausführungsform
der Erfindung beinhaltet ein Prozessor eine Paketanalyseeinrichtung
und eine erste Speicherschaltung, die betriebsmäßig mit der Paketanalyseeinrichtung
gekoppelt ist. Die Paketanalyseeinrichtung ist derart betreibbar,
um wenigstens partiell eines oder mehrere Pakete zu analysieren,
die durch den Prozessor empfangen werden, um für ein Gegebenes der Pakete
einen Teil des Pakets zu bestimmen, der in der ersten Speicherschaltung
zu speichern ist. Der Teil des gegebenen Pakets, wenn er in der
ersten Speicherschaltung gespeichert ist, wird dadurch für eine nachfolgende
Verarbeitung innerhalb des Prozessors zugänglich gemacht, ohne dass es
notwendig ist, auf eine zweite Speicherschaltung zuzugreifen, die
mit dem Prozessor assoziiert ist und derart konfiguriert ist, im
Wesentlichen das gesamte gegebene Paket zu speichern. Die erste
und zweite Speicherschaltung können
beispielsweise jeweilige interne und externe Speicher des Prozessors
umfassen.
-
Gemäß einer
anderen Ausführungsform
der Erfindung kann die Paketanalyseeinrichtung so konfiguriert sein,
einen Wert zu verwenden, der in einem Register des Prozessors gespeichert
ist, um den Teil des gegebenen Pakets zu bestimmen, der in der ersten
Speicherschaltung zu speichern ist, beispielsweise in einem internen
Speicher. Das Register kann eines aus einer Anzahl von Registern
sein, welche eine Nachschlagetabelle implementieren, die für die Paketanalyseeinrichtung
zugänglich
ist. Die Nachschlagetabelle beinhaltet mehrere Einträge, wobei
jeder eine Paket-Kategorisierungsinformation, wie z.B. Anschlussnummer
oder Paketflussidentifizierer, und eine assoziierte Anzahl von Blöcken des
Pakets beinhaltet, die in dem internen Speicher zu speichern sind.
-
Gemäß einer
weiteren Ausführungsform
der Erfindung kann der Wert, der in einem Gegebenen der Register
gespeichert ist, in dynamischer Weise aktualisierbar sein, beispielsweise
unter Steuerung einer Host-Vorrichtung (Leitrechner-Vorrichtung),
die betriebsmäßig mit
dem Prozessor gekoppelt ist. Dies ermöglicht einem Programmierer,
beispielsweise die bestimmten Teile einer gegebenen Kategorie von
Paketen, die in dem internen Speicher des Prozessors zu speichern
sind, zu spezifizieren.
-
In
vorteilhafter Weise reduzieren die Methoden der Erfindung nicht
nur die internen und/oder externen Speicheranforderungen des Prozessors,
sondern reduzieren im Wesentlichen den Bedarf für Zugriffe auf einen externen
Speicher, wobei dadurch der Prozessordurchsatz erhöht wird.
-
Kurze Beschreibung
der Zeichnungen
-
1 ist
ein vereinfachtes Blockdiagramm eines Paketverarbeitungssystems,
in welchem die vorliegende Erfindung implementiert ist.
-
2 ist
eine detailliertere Darstellung eines Netzwerkprozessors des Systems
nach 1, der gemäß den Techniken
der Erfindung konfiguriert ist.
-
3 veranschaulicht eine Datenstruktur einer
Nachschlagetabelle, die in dem Netzwerkprozessor der 2 verwendet
werden kann, um Paketidentifizierer und entsprechende Umfänge der
Pakete zu speichern, die in einem internen Speicher zu speichern
sind, in Übereinstimmung
mit der Erfindung.
-
4 ist
ein Flussdiagramm eines Paketanalyse- und Speicherprozesses, der
in das System gemäß 1 durch
den Netzwerkprozessor gemäß 2 in Übereinstimmung
mit der Erfindung implementierbar ist.
-
Detaillierte
Beschreibung der Erfindung
-
Die
Erfindung wird im Folgenden veranschaulicht in Verbindung mit einem
exemplarischen Paketverarbeitungssystem, welches einen Netzwerkprozessor
beinhaltet, der in einer bestimmten Art und Weise konfiguriert ist.
Es versteht sich jedoch, dass die Erfindung allgemeiner auf irgendeinen
Prozessor anwendbar ist, in welchem es wünschenswert ist, die internen
und/oder externen Speicheranforderungen zu reduzieren, die mit Paketverarbeitungsoperationen
assoziiert sind, die in dem Speicher durchgeführt werden.
-
Ein „Prozessor", so wie der Begriff
hierin benutzt wird, kann im Wege eines Beispiels und ohne Beschränkung hierauf
unter Benutzung eines Mikroprozessors, einer zentralen Verarbeitungseinheit („Central
Processing Unit, CPU"),
eines digitalen Signalprozessors („Digital Signal Processor,
DSP"), einer Applikations-spezifischen
integrierten Schaltung („Application-Specific
Integrated Circuit, ASIC")
oder eines anderen Typs von Datenverarbeitungsvorrichtung, sowie
von Teilen und Kombinationen von diesen oder anderer Vorrichtungen
implementiert werden. Ein gegebener Prozessor, der für die Verwendung
mit der vorliegenden Erfindung geeignet ist, kann sowohl einen internen
Speicher, beispielsweise einen auf dem Chip untergebrachten Speicher (On-Chip-Speicher),
und einen externen Speicher beinhalten. Der Begriff „Prozessor" soll im Allgemeinen
so ausgelegt werden, so dass ein solcher externer Speicher umfasst
ist.
-
Die
vorliegende Erfindung reduziert in einer veranschaulichenden Ausführungsform
die Menge an Speicher, die in einem Netzwerkprozessor benötigt wird,
in dem partiell genug von jedem Paket analysiert wird, wenn es an
dem Netzwerkprozessor ankommt, um in der Lage zu sein, nur die Menge
an Speicher zu reservieren, die benötigt wird, um den entsprechenden
Teil des Pakets zu speichern. Zu der geeigneten Zeit kann das Paket
sodann vollständig von
diesem gespeicherten Teil an analysiert werden. Dies ermöglicht einen
höheren
Paketdurchsatz in dem Netzwerkprozessor, weil ein reduzierter Bedarf besteht,
auf einen externen Speicher zuzugreifen. Es reduziert somit Systemkosten
als Folge einer Reduktion in der benötigten Bandbreite zu dem externen Speicher
und der assoziierten Vereinfachungswirkung in dem gesamten Design
des Verarbeitungssystems.
-
1 zeigt
ein Paketverarbeitungssystem 100, in welchem die Erfindung
implementiert ist. Das System 100 beinhaltet einen Netzwerkprozessor 102 mit
einem internen Speicher 104. Der Netzwerkprozessor 102 ist
mit einem externen Speicher 106 gekoppelt, wie dargestellt,
und ist derart konfiguriert, eine Schnittstelle zwischen einem Netzwerk 108,
von welchem Pakete empfangen werden, und einem Schaltnetz 110 zu
bilden, welches eine Vermittlung (das „Switching") von Paketdaten steuert. Der Prozessor 102 und
sein assoziierter externer Speicher 106 können beispielsweise
als eine oder mehrere integrierte Schaltungen implementiert sein,
die auf einer Linienbaugruppe eines Routers oder Schalters installiert
sind. In solch einer Konfiguration wird das Schaltnetz 110 im
Allgemeinen so angesehen, als ob es Teil des Routers oder Schalters
ist.
-
Obwohl
der Speicher 106 in der Figur derart dargestellt ist, dass
er zu dem Prozessor 102 extern angeordnet ist, soll der
Begriff „Prozessor", wie er hierin benutzt
wird, wie vorhergehend bereits erwähnt, so ausreichend breit ausgelegt
werden, dass er Elemente 102 und 106 umfasst.
-
Es
versteht sich, dass die besondere Anordnung von Systemelementen,
wie in 1 gezeigt, nur ein veranschaulichendes Beispiel
ist. Zum Beispiel kann, wie vorhergehend erwähnt, die Erfindung in irgendeinem
Typ von Paketprozessor implementiert werden, wobei sie nicht limitiert
ist auf eine bestimmte Paketverarbeitungsapplikation.
-
2 zeigt
den Netzwerkprozessor 102 von 1 in detaillierterer
Weise. Der Netzwerkprozessor 102 gemäß dieser Ausführungsform
beinhaltet eine Paketanalyseeinrichtung 200, welche eintreffende
Pakete von dem Netzwerk 108 empfängt. Die Paketanalyseeinrichtung
ist mit einer Speichersteuereinrichtung 202 gekoppelt,
welche in dieser Ausführungsform
eine Schnittstelle bildet zu dem internen Speicher 104 und
dem externen Speicher 106. Der Prozessor 102 kann
außerdem
eine andere Verarbeitungsschaltung beinhalten oder in anderer Weise
mit einer solchen assoziiert sein, die nicht in der Figur dargestellt
ist, wie zum Beispiel eine Verkehrsleiteinheit.
-
Gemäß der Erfindung
ist die Paketanalyseeinrichtung 200 derart betreibbar,
wenigstens partiell eines oder mehrere Pakete zu analysieren, die
durch den Netzwerkprozessor 102 empfangen werden, um für ein Gegebenes
der Pakete einen Anteil des Pakets zu bestimmen, der in dem internen
Speicher 104 zu speichern ist. Der Anteil des gegebenen
Pakets, wenn er in dem internen Speicher 104 gespeichert ist,
ist dadurch für
eine nachfolgende Verarbeitung innerhalb des Netzwerkprozessors 102 zugänglich, ohne
dass ein Zugriff auf den externen Speicher 106 notwendig
ist, welcher typischerweise so konfiguriert ist, im Wesentlichen
das gesamte gegebene Paket zu speichern. Der Teil eines gegebenen
Pakets, der in dem internen Speicher 104 zu speichern ist,
kann beispielsweise ein designierter Teil eines Kopfes („Header") des Pakets sein.
Die Speichersteuereinheit 202 ist derart betreibbar, die
Speicherung des designierten Teils des gegebenen Pakets in dem internen
Speicher 104 zu steuern, und die Speicherung des im Wesentlichen
gesamten Pakets in dem externen Speicher 106 zu steuern.
-
Die
Paketanalyseeinrichtung 200 analysiert folglich wenigstens
partiell wenigstens eine Teilmenge der Pakete, die von dem Netzwerk 108 empfangen
wurden, und bestimmt für
jedes der analysierten Pakete einen bestimmten Teil des Pakets,
der in dem internen Speicher 104 zu speichern ist. Die
Bestimmung kann basiert werden beispielsweise auf einer Identifizierung
einer Anschlussnummer, einem Paketflussidentifizierer oder einer
anderen Paket-Charakterisierungsinformation, die mit einem gegebenen Paket
assoziiert ist, und einem Lesen eines Bezeichners einer assoziierten
Anzahl von Blöcken
aus einem entsprechenden Register oder einer anderen Speicherlokalität, wie es
weiter unten noch detaillierter beschrieben werden wird. Der bestimmte
Teil ist im Allgemeinen ein Teil, der für eine nachfolgende Verarbeitung
innerhalb des Netzwerkprozessors 102 benötigt wird,
so dass, wenn der bestimmte Teil in dem internen Speicher 102 gespeichert
ist, die nachfolgende Verarbeitung durchgeführt werden kann, ohne dass
ein Zugriff auf den externen Speicher für einen anderen Teil des Pakets
notwendig ist.
-
Es
sollte bemerkt werden, dass die Techniken der Erfindung außerdem angewandt
werden können,
die Speicheranforderungen zu reduzieren, die mit einem externen
Speicher assoziiert sind, beispielsweise indem ein bestimmter Teil
eines Pakets bestimmt wird, der in der ersten Speicherschaltung zu
speichern ist, wobei im Wesentlichen das gesamte Paket in der zweiten
Speicherschaltung gespeichert ist, wobei eine oder beide der ersten
und zweiten Speicherschaltung einen externen Speicher repräsentieren.
Solch eine erste und zweite Speicherschaltung kann ebenso mit dem
jeweiligen internen und externen Speicher 104, 106 von 1 korrespondieren.
Die erste und zweite Speicherschaltung können daher verschiedene Speicher
repräsentieren,
können
jedoch alternativ verschiedene Teile eines einzelnen internen oder
externen Speichers repräsentieren.
-
Obwohl
sie als eine einzelne Speichersteuereinrichtung dargestellt ist,
kann die Speichersteuereinrichtung 202 separate Steuereinrichtungen
für jeden
des internen Speichers 104 und des externen Speichers 106 enthalten,
wie es dem Fachmann bewusst ist.
-
Die
Paketanalyseeinrichtung 200 kommuniziert über die
Speichersteuereinrichtung 202 (Speichercontroller) mit
einer Nachschlagetabelle 205, die unter Benutzung eines
Satzes von Registern in einem Teil des internen Speichers 104 implementiert ist.
Die Nachschlagtabelle 205 stellt Information bereit, die
von der Paketanalyseeinrichtung 200 verwendet wird, um
den bestimmten Teil eines gegebenen Pakets, der in dem internen
Speicher 104 zu speichern ist, festzulegen.
-
Es
sollte bemerkt werden, dass die Nachschlagetabelle 205 in
einem separaten Speicher in einer anderen Ausführungsform der Erfindung untergebracht
sein kann, als dass sie als Teil des internen Speichers 104 implementiert
ist, wie in der Figur dargestellt.
-
3A stellt
ein Beispiel eines Satzes von Registern dar, welcher die Nachschlagetabelle 205 beinhaltet.
In diesem Beispiel enthält
die Nachschlagetabelle 205 N verschiedene Einträge, wobei
jeder in einem entsprechenden Register des internen Speichers 104 gespeichert
ist. Jeder Eintrag beinhaltet eine Anschlussnummer und eine entsprechende
Anzahl von Blöcken.
Die Anschlussnummer entspricht einem von N Anschlüssen, der
assoziiert sein kann mit Paketen, die an dem Netzwerkprozessor 102 ankommen.
Zum Beispiel kann ein gegebener Netzwerkprozessor 256 Anschlüsse oder
mehr unterstützen.
Die Anzahl von Blöcken,
die für
einen gegebenen Anschluss spezifiziert sind, bezeichnet die Anzahl
von Blöcken
eines jeden Pakets, das an diesem Anschluss ankommt, die in dem
internen Speicher 104 zu speichern sind. Ein Block wird
vorzugsweise als eine bestimmte Anzahl von Bytes spezifiziert. Zum
Beispiel kann in der veranschauli chenden Ausführungsform ein Block 64 Bytes
sein. Es sollte bemerkt werden, dass ein besonderer, vorbestimmter Blockwert,
beispielsweise ein Blockwert von Null, der als ein Eintrag in der
Nachschlagtabelle 205 gespeichert ist, anzeigen kann, dass
für jedes
Paket, das an dem entsprechenden Anschluss ankommt, im Wesentlichen
das gesamte Paket in dem internen Speicher 104 zu speichern
ist, bis zu einem spezifizierten Maximalwert, beispielsweise 64
Kilobytes.
-
Die
Paketanalyseeinrichtung 200 in dem Beispiel nach 3A ist
so konfiguriert, für
ein gegebenes Paket die jeweilige Anschlussnummer zu bestimmen,
die mit dem gegebenen Paket assoziiert ist. Die Paketanalyseeinrichtung 200 benutzt
sodann die bestimmte Anschlussnummer als eine Eingabe an die Nachschlagetabelle 205,
um die entsprechende Anzahl von Blöcken dieses Pakets zu bestimmen,
die in dem internen Speicher 104 zu speichern sind. Diese Anzahl
von Blöcken
des Pakets wird sodann in dem internen Speicher 104 unter
der Direktive des Speichercontrollers 202 gespeichert.
-
3B zeigt
ein anderes Beispiel eines Satzes von Registern, welche die Nachschlagetabelle 205 umfassen.
In diesem Beispiel enthält
die Nachschlagetabelle 205 wiederum N verschiedene Einträge, wobei
jeder in einem entsprechenden Register des internen Speichers 104 gespeichert
ist. Jedoch enthält
in diesem Fall jeder Eintrag einen Paketidentifizierer und eine
entsprechende Anzahl von Blöcken.
Der Paketidentifizierer kann beispielsweise einen Paketflussidentifizierer,
welcher besondere in Beziehung stehende Pakete spezifiziert, oder
irgendeine andere geeignete Paketidentifizierungsinformation enthalten.
Wie in dem vorherigen Beispiel bezeichnet die Anzahl von Blöcken, die
für einen
gegebenen Paketidentifizierer spezifiziert ist, die Anzahl von Blöcken eines
jeden Pakets mit dem entsprechenden Paketidentifizierer, die in
dem internen Speicher 104 zu speichern sind. Wiederum ist
ein Block vorzugsweise spezifiziert als eine bestimmte Anzahl von
Bytes, beispielsweise 64 Bytes, und ein Null-Blockeintrag kann bezeichnen,
dass im Wesentlichen das gesamte Paket in dem internen Speicher 104 bis
zu einem spezifizierten maximalen Wert zu speichern ist.
-
Die
Paketanalyseeinrichtung 200 in dem Beispiel gemäß 3B ist
so konfiguriert, für
ein gegebenes Paket den jeweiligen Paketidentifizierer zu bestimmen,
der mit dem gegebenen Paket assoziiert ist. Die Paketanalyseeinrichtung 200 benutzt
sodann den bestimmten Paketidentifizierer als eine Eingabe an die
Nachschlagetabelle 205, um die entsprechende Anzahl von
Blöcken
dieses Pakets zu bestimmen, die in dem internen Speicher 104 zu
speichern sind. Diese Anzahl von Blöcken des Pakets wird sodann
in dem internen Speicher 104 unter der Direktive des Speichercontrollers 202 gespeichert.
-
Es
versteht sich, dass die besonderen Beispiele von 3A und 3B nicht
gedacht sind, den Umfang der Erfindung in irgendeiner Weise zu begrenzen.
Der Fachmann wird bemerken, dass zahlreiche alternative Konfigurationen
einer Nachschlagetabelle möglich
sind. Zum Beispiel ist es möglich,
andere Typen von Paket-Kategorisierungsmethoden und verschiedene
Ansätze
zu verwenden, um den bestimmten Teil zu spezifizieren, der in einem Speicher
für eine
gegebene Paketkategorie zu speichern ist.
-
4 ist
ein Flussdiagramm eines allgemeinen Paketanalyse- und Speicherprozesses,
der in dem Paketverarbeitungssystem 100 von 1 durch den
Netzwerkprozessor 102 implementierbar ist. Der Prozess
wird veranschaulicht für
ein einzelnes Paket, jedoch kann eine ähnliche Verarbeitung für jedes empfangene
Paket angewandt werden. Es sollte außerdem betont werden, dass
der Prozess gemäß 4 in
seiner Gesamtheit nur als beispielhaft und veranschaulichend für die Methoden
der Erfindung aufgefasst werden sollte, als dass er in der Natur
begrenzend ist. Obgleich nicht in der Figur dargestellt, kann der
Prozess gemäß 4 einen
vorausgehenden Schritt zur Initialisierung der Einträge der Nachschlagetabelle
auf gewünschte
Werte enthalten.
-
In
Schritt 400 wird ein Paket, das zu verarbeiten ist, von
dem Netzwerkprozessor 102 empfangen. Im Schritt 402 analysiert
die Paketanalyseeinrichtung 200 partiell das Paket, um
den Teil zu bestimmen, der für
eine nachfolgende Verarbeitung innerhalb des Netzwerkprozessors
benötigt
wird. Wie vorhergehend bereits hingewiesen, kann diese Bestimmung durchgeführt werden,
indem auf die Nachschlagetabelle 205 zugegriffen wird,
um eine bestimmte Anzahl von Blöcken
des Pakets zu bestimmen, die in dem internen Speicher zu speichern
sind. In Schritt 404 wird der angeforderte Teil des Pakets,
wie von der Nachschlagetabelle 205 festgelegt, in dem internen
Speicher 104 gespeichert. Im Schritt 406 wird
das gesamte Paket in dem externen Speicher 106 gespeichert. Die
Speicherung des gesamten Pakets in dem externen Speicher nach der
Speicherung des erforderlichen Teils in dem internen Speicher wird
nur im Wege eines Beispiels ausgeführt, und ist kein Erfordernis der
Erfindung. Zum Beispiel könnte
das gesamte Paket in dem externen Speicher gespeichert werden, bevor
die Schritte 402 und 404 des Prozesses durchgeführt werden.
In einem anderen Beispiel kann nur der verbleibende Teil des Pakets,
d.h. des Teils, der verschieden ist zu dem Teil, der in dem internen
Speicher in Schritt 404 gespeichert wird, in dem externen Speicher
im Schritt 406 gespeichert werden. Außerdem können Schritte 404 und 406 im
Wesentlichen parallel durchgeführt
werden. In jedem Fall wird zu einer Paketverarbeitungszeit, d.h.
zu einer Zeit, zu welcher die oben erwähnte nachfolgende Verarbeitung mit
dem erforderlichen Teil des Pakets durchzuführen ist, dieser Teil des Pakets
von dem internen Speicher 104 abgerufen, wie es nötig ist,
die entsprechenden Verarbeitungsoperationen in dem Netzwerkprozessor
zu implementieren.
-
Jeder
Eintrag der Nachschlagetabelle 205 kann über eine
geeignete Softwaresteuerung dynamisch aktualisiert werden. Zum Beispiel
kann ein gegebener „Anzahl
von Blöcken"-Wert für einen
Eintrag in der Nachschlagetabelle 205 darin anfänglich gespeichert
werden oder unter der Steuerung eines Host-Prozessors, der mit dem
Netzwerkprozessor 102 beispielsweise über einen „Peripheral Component Interconnect
(PCI)"-Bus gekoppelt
ist, aktualisiert werden. Dies ermöglicht in vorteilhafter Weise einem
Programmierer, für
jeweilige Anschlussnummern, Paketflussidentifizierer oder andere
Kategorien von Paketen die jewei lige Anzahl von Blöcken von jenen
Paketen zu spezifizieren, die in dem internen Speicher zu speichern
sind. Im Allgemeinen kennt solch ein Programmierer typischerweise
die spezifischen Protokolle, die mit einer gegebenen Paketkategorie
assoziiert sind, und kennt daher einen geeigneten Teil eines jeden
der Pakete, der in einem internen Speicher für einen optimalen Verarbeitungsdurchsatz
zu halten ist. Ein gegebener gespeicherter Wert in der Nachschlagetabelle 205 kann
unter einer Softwaresteuerung in dynamischer Weise für jedes Paket
in einer Sequenz der empfangenen Pakete aktualisiert werden. Alternativ
kann der gleiche Wert für mehrere
der empfangenen Pakete verwendbar sein, wie in den Beispielen von 3A und 3B.
-
Die
oben beschriebenen Ausführungsformen der
Erfindung sollen nur veranschaulichend sein. Zum Beispiel können, obwohl
die veranschaulichenden Ausführungsformen
eine einzelne Nachschlagetabelle benutzen, wobei jeder Eintrag mit
einer Paketkategorisierungsinformation und einer assoziierten Anzahl
von Blöcken
des Pakets in einem internen Speicher zu speichern sind, andere
Ausführungsformen
verschiedene Typen von Registern oder Speicheranordnungen benutzen,
um die beschriebene Funktionalität
zu implementieren. Obwohl der designierte Teil eines gegebenen Pakets,
der in einem internen Speicher oder einer anderen ersten Speicherschaltung
zu speichern ist, einen Teil eines Headers des Pakets repräsentieren
kann, kann er in alternativer Weise einen substantiell größeren Teil
des Pakets repräsentieren,
und kann so groß sein
wie das gesamte Paket für
gewisse vorbestimmte Blocknummerneinträge, beispielsweise einem Null-Eintrag. Diese
und zahlreiche andere alternative Ausführungsformen innerhalb des
Umfangs der folgenden Ansprüche
sind dem Fachmann ersichtlich.