-
Die
vorliegende Erfindung betrifft allgemein Mehrfachsendungen mit Netzwerkprozessoren
und insbesondere ein Verfahren zum rationelleren Durchführen der
Mehrfachsendung in einem Netzwerkprozessor als bisher.
-
Bei
der Realisierung eines Mehrfachsendeschemas in einem Netzwerkprozessor
sind mehrere Probleme zu berücksichtigen,
die es beim Einfachsenden nicht gibt. Wenn beispielsweise ein oder mehrere
Rahmen zu einem einzelnen Ziel übertragen
werden (d.h. unidirektionales Senden), können jedes Mal, wenn die Daten
aus einem entsprechenden Puffer gelesen werden, die einem bestimmten Rahmen
(d.h. allen Daten, die in bestimmten Pufferspeichern gespeichert
sind) zugeordneten Puffer wieder in die Warteschlange der freien
Puffer (d.h. die verknüpfte
Liste der für
Rahmen zur Verfügung stehenden
Pufferspeicher) zurückgeführt werden. Beim
Mehrfachsenden hingegen gibt es mehrere Zieladressen, sodass die
einem Rahmen zugeordneten Puffer nicht direkt in die freie Warteschlange
zurückgestellt
werden können,
sondern erst nach Umstellen der verknüpften Liste nach Beendigung
der letzten Mehrfachsendung. Ein weiteres Problem beim Mehrfachsenden
besteht im Gegensatz zum unidirektionalen Senden darin, das für jede Zieladresse
beim Mehrfachsenden ein anderer Startzeitpunkt innerhalb des Referenzrahmens
oder zusätzliche
Informationen erforderlich sein können. Üblicherweise werden diese Probleme
dadurch gelöst,
dass für
jede Mehrfachsendeanforderung (also für jede Mehrfachsendeadresse)
eine vollständige
Kopie des Bezugsrahmens erzeugt wird. Das Problem wird zwar durch
die Mehrfachkopien gelöst,
aber zur Erfüllung
der Mehrfachsendeanforderung wird mehr Pufferspeicher belegt und
dadurch die Systemleistung eingeschränkt.
-
Wenn
man hingegen keine Mehrfachkopien des Rahmen erzeugt, sondern die
Mehrfachsendung durch Verknüpfen
mit dem Referenzrahmen durchführt,
können
einige Anschlüsse
(ports) mit höherer Leistung
laufen als andere, sodass Leistungsunterschiede berücksichtigt
werden müssen.
Insbesondere kann die Rückverbindung
zu einem Referenzrahmen zu Problemen führen, da die zuletzt gestartete Übertragung
nicht auch als letzte beendet werden muss. Dieser Widerspruch zwischen
den startenden und den beendenden Rahmen führt dazu, dass man nicht weiß, wann
die Puffer des Bezugsrahmens wieder in die Warteschlange der freien
Puffer eingestellt werden sollen. Insbesondere ist es nicht möglich, die Puffer
einfach dann wieder zurückzuführen, nachdem
der gestartete Rahmen beendet worden ist. Eine Lösung wäre, bis zur Beendigung aller
Mehrfachsendungen zu warten, aber auch ein solcher Ansatz würde die
Systemleistung unnötig
einschränken.
-
In
der US-Patentschrift A-5 561 807 wird das Mehrfachsenden mit einem
Netzwerkprozessor beschrieben.
-
Bei
einem Hochleistungs-Netzwerkprozessor wird eine neuartige Lösung benötigt, bei
welcher für
das Mehrfachsenden möglichst
wenig Speicher in Anspruch genommen wird und Leistungsunterschiede
zwischen den Anschlüssen
berücksichtigt
werden.
-
Die
vorliegende Erfindung betrifft ein Verfahren zum Mehrfachsenden
mit einem Netzwerkprozessor nach Anspruch 1.
-
Die
Erfindung betrifft auch einen Netzwerkprozessor nach Anspruch 7
und ein Computerprogramm nach Anspruch 6.
-
Durch
den neuartigen Ansatz gemäß der Erfindung
erübrigt
sich das Erzeugen einer Kopie des gesamten Rahmens für jede Instanz
beim Mehrfachsenden (d.h. für
jede Mehrfachsendeadresse), sodass weniger Speicherkapazität benötigt wird
und die Probleme infolge unterschiedlicher Inanspruchnahme von Rechenleistung
durch einzelne Anschlüsse beseitigt
werden. Außerdem
werden in Anspruch genommene Puffer wieder in die freie Warteschlange zurückgeführt, wenn
diese verwendet werden (unabhängig
davon, ob andere Einzelübertragungen
beendet sind), und mittels eines Zählers wird ermittelt, ob alle
Einzelübertragungen
beendet sind, sodass auch ein Referenzrahmen wieder zur freien Warteschlange
zurückgeführt werden
kann.
-
Die
obigen sowie weitere Aufgaben, Aspekte und Vorteile werden durch
die folgende detaillierte Beschreibung einer bevorzugten Ausführungsart
der Erfindung in Verbindung mit den Zeichnungen verständlicher,
wobei:
-
1 eine Übersichtsdarstellung
ist, welche die Datenstrukturen darstellt;
-
2 ein
Blockschaltbild ist, welches den Chipsatz der Systemumgebung der
bevorzugten Ausführungsart
der vorliegenden Erfindung zeigt;
-
3 ein
Blockschaltbild ist, welches ausführlicher den integrierten Prozessorkomplex
und die Datenfluss-Chips des Chipsatzes von 2 zeigt;
-
4 eine
Darstellung ist, welches das allgemeine Nachrichtenformat zeigt;
-
5 ein
Blockschaltbild ist, welches die Datenstrukturen gemäß den bevorzugten
Ausführungsarten
der vorliegenden Erfindung zeigt; und
-
6 ein
Flussdiagramm ist, welches den durch die bevorzugte Ausführungsart
der Erfindung realisierten Prozess zeigt.
-
1 zeigt
speziell die Datenstrukturen gemäß einer
bevorzugten Ausführungsart
der Erfindung. Ein Rahmen wird in einer Reihe von Puffern 1011 bis 1015 gespeichert.
Jeder Puffer verfügt über einen
entsprechenden Puffersteuerblock (Buffer Control Block, BCB) 1021 bis 1025,
welcher die einzelnen Puffer zu einem Rahmen verknüpft. Jeder Rahmen
verfügt über einen
entsprechenden Rahmensteuerblock (Frame Control Block, FCB) 1031 bis 103n ,
welcher eine Reihe von Rahmen zu einer Warteschlange vereinigt.
Jede Warteschlange verfügt über einen
Warteschlangensteuerblock (Queue Control Block, QCB) 104,
welcher die Adresse des ersten und des letzten FCB 103 in
der Warteschlange und einen Zählerwert
der Anzahl der Rahmen in der Warteschlange speichert.
-
Definitionen der Datenstruktur
-
Die
Puffer 101 dienen zum Speichern von Daten. Jeder Puffer
hat eine Größe von 64
Byte und kann 1 bis 64 Byte gültige
Daten speichern. Alle gültigen
Daten in einem Puffer 101 müssen als zusammenhängender
Bereich von Bytes gespeichert werden. Mehrere Puffer werden durch
eine Verknüpfungsliste
aneinander gehängt,
um Rahmen zu speichern, die größer als
64 Byte sind.
-
Zuerst
werden alle Puffer in die Warteschlange der freien Puffer eingestellt.
Wenn ein Rahmen ankommt, werden Puffer vom Kopf der Warteschlange
der freien Puffer entfernt und zum Speichern der Rahmendaten verwendet.
Wenn die letzte Übertragung
eines Rahmens erfolgt, werden die zum Speichern der Rahmendaten
verwendeten Puffer zum Ende der Warteschlange der freien Puffer
verschoben.
-
Ein
Puffersteuerblock (BCB) 102 bildet die verknüpfte Liste
zum Verketten mehrerer Puffer zu einem Rahmen. Er speichert auch,
welche Bytes des Puffers 101 gültige Daten enthalten. Jeder
Puffer 101 verfügt über einen
entsprechenden BCB 102. Die Adresse eines Puffers 101 im
Datenspeicher (205 und 206 in 2)
dient auch als Adresse des entsprechenden BCB 102 in der
BCB-Matrix. Ein BCB 102 enthält die folgenden Felder:
- • Das
Feld Nächste
Pufferadresse (hext Buffer Address, NBA) dient zum Speichern eines
Zeigers auf den nächsten
Puffer 101 in einem Rahmen. Das Feld NBA im BCB 102 für den aktuellen Puffer 101 enthält die Adresse
des nächsten
Puffers 101 des Rahmens (und des entsprechenden BCB 102).
- • Das
Feld Startbyteposition (Starting Byte Position, SBP) dient zum Speichern
des ersten gültigen Datenbytes
im nächsten
Puffer 101 eines Rahmens. Die gültigen Werte reichen von 0
bis 63.
- • Das
Feld Endbyteposition (Ending Byte Position, EBP) dient zum Speichern
der relativen Position des letzten gültigen Datenbytes im nächsten Puffer 101 eines
Rahmens. Die gültigen
Werte reichen von 0 bis 63.
- • Das
Bit Übergangspuffer
(Transient Buffer, TBUF) gibt bei der Übertragung von Mehrfachsenderahmen
nur an, ob der nächste
Puffer 101 im Rahmen wieder zur Warteschlange der freien Puffer
zurückgeführt werden
soll, nachdem seine Daten zur Übertragung
gelesen worden sind. Dieses Bit ist nur für Mehrfachsenderahmen gültig. Es
wird beim Empfang eines Rahmen standardmäßig gleich null gesetzt.
-
Man
beachte, dass die Felder SBP, EBP und TBUF nur für den „nächsten" Puffer 101 im Rahmen und nicht
für den
Puffer 101 gelten, welcher dem aktuellen BCB 102 entspricht.
Diese Felder sind in dieser Weise definiert, damit die Informationen
des SBP, des EBP und des TBUF für
den nächsten
Puffer 101 gleichzeitig mit seiner Adresse (NBA) abgerufen
werden können.
-
Jedes
der Felder in einem BCB 102 wird während des Empfangs eines Rahmens
durch die Datenflusshardware 202 (2) geladen.
Die Felder des BCB 102 können danach durch einen Picocode verändert werden,
um den Rahmen vor der Übertragung
zu „bearbeiten". Das Feld NBA kann
verändert werden,
indem Puffer in einen Rahmen eingefügt oder aus ihm gelöscht werden.
-
Die
Felder SBP und EBP können
verändert werden,
indem die Anzahl der gültigen
Bytes in einem Puffer 101 geändert wird. Das Bit TBUF kann
für Puffer
eines Mehrfachsenderahmens gesetzt werden, um anzufordern, dass
der Puffer 101 sofort nach der Übertragung seiner Daten wieder
zur Warteschlange der freien Puffer zurückgeführt wird.
-
Das
Feld NBA des BCB 102 dient auch zur Bildung der verknüpften Liste
von Puffern der Warteschlange der freien Puffer. Das Feld NBA enthält als einziges
Feld des BCB 102 gültige
Informationen, wenn sich der entsprechende Puffer 101 in
der Warteschlange der freien Puffer befindet.
-
Ein
Rahmensteuerblock (Frame Control Block, FCB) 103 bildet
die verknüpfte
Liste der Rahmen in der Warteschlange. Er speichert auch die Gesamtzahl
der gültigen
Bytes im Rahmen, die Pufferadresse und die SBP/EBP des ersten Puffers 101 im Rahmen
sowie ein 2-Bit-Rahmenfeld „Typ". Ein FCB 103 enthält die folgenden
Felder:
- • Das
Feld Nächste
Rahmenadresse (hext Frame Address, NFA) dient zum Speichern des
Zeigers auf den nächsten
Rahmen in einer Rahmenwarteschlange. Das Feld NFA im FCB 103 für den aktuellen
Rahmen enthält
die Adresse des FCB 103 für den nächsten Rahmen in der Warteschlange. Dieses
Feld enthält
keine gültigen
Daten, wenn der entsprechende Rahmen der letzte in der Warteschlange
ist. Wenn das Feld „QCNT" im QCB gleich null
ist, befinden sich keine Rahmen in der Warteschlange. Wenn das Feld „QCNT" im QCB gleich 1
ist, ist das Feld „NFA" im FCB am Kopf der
Warteschlange nicht gültig,
da es in der Warteschlange keinen „nächsten Rahmen" gibt.
- • Das
Feld Byteanzahl (Byte Count, BCNT) dient zum Speichern eines Zählerwertes
der Gesamtzahl der gültigen
Bytes in allen Puffern des nächsten
Rahmens in einer Rahmenwarteschlange. Man beachte, dass sich der
Wert BCNT auf den „nächsten" Rahmen in der Warteschlange
und nicht auf den Rahmen des FCB 103 bezieht, in welchem
der BCNT gespeichert ist. Das Feld BCNT wird auf diese Weise definiert,
um die Adresse (NFA) und die Länge
(BCNT) des nächsten
Rahmens in der Warteschlange gleichzeitig abrufen zu können.
- • Das
Feld Erste Pufferadresse (First Buffer Address, FBA) dient zum Speichern
der Adresse des ersten Puffers 101 (und des ersten BCB 102) in
einem Rahmen.
- • Die
Felder SBP und EBP dienen zum Speichern der Start- und Endbytepositionen
von gültigen
Daten im ersten Puffer 101 einer Rahmens.
- • Das
Feld Typ dient dazu, dass der Picocode der Datenflusssoftware 202 das
Format und den Typ des zu übertragenden
Rahmens mitteilt.
- • 00 „Unidirektionaler
Senderahmen mit FACB". Der
Rahmen soll nur zu einem einzigen Ziel (unidirektional) gesendet
werden, und jeder Puffer 101 soll wieder zur Warteschlange
der freien Puffer zurückgeführt werden,
sobald die Daten für
die Übertragung
gelesen worden sind. Im ersten Puffer 101 des Rahmens sind
ein oder mehrere Rahmenänderungssteuerblöcke (Frame
Alteration Control Block, FACB) gespeichert.
- • 01 „Statischer
Rahmen mit FACB".
Der Rahmen soll übertragen
werden, ohne dass einer der Puffer zur Warteschlange der freien
Puffer zurückgeführt wird.
Im ersten Puffer 101 des Rahmens sind ein oder mehrere
FACBs gespeichert.
- • 10 „Unidirektionaler
Senderahmen ohne FACB". Der
Rahmen soll zu einem einzigen Ziel (unidirektional) gesendet werden,
und jeder Puffer 101 soll wieder zur Warteschlange der
freien Puffer zurückgeführt werden,
sobald die Daten für
die Übertragung
gelesen worden sind. Im ersten Puffer 101 des Rahmens sind
keine FACBs gespeichert.
- • 11 „Mehrfachsenderahmen
mit FACB und TBUF als erster Puffer". Der Rahmen soll zu mehreren Zielen
(Mehrfachsenden) gesendet werden, und die Puffer, die allen Einzelübertragungen
des Rahmens gemeinsam sind, werden erst dann wieder zur Warteschlange
der freien Puffer zurückgeführt, nachdem
der Rahmen vollständig
zu allen Zielen übertragen
worden ist. Im ersten Puffer 101 jeder Einzelübertragung
des Rahmens sind ein oder mehrere FACBs gespeichert. Ferner werden der
erste Puffer 101 des Rahmens und jeder nachfolgende Puffer 101 mit
dem im BCB 102 gesetzten Bit TBUF als zu einer Einzelübertragung des
Rahmens gehörig
angesehen und sofort wieder zur Warteschlange der freien Puffer
zurückgeführt, sobald
die Daten vom Puffer 101 übertragen worden sind.
-
Jedes
Feld in einem FCB 103 wird während des Empfangs eines Rahmens
zuerst durch die Datenflusshardware 202 (2)
geladen. Anschließend
können
die Felder BCNT, FBA, SBP, EBP und Typ des FCB 103 vor
dem Senden des Rahmens durch den Picocode verändert werden. Das Feld BCNT
kann verändert
werden, wenn die Länge
des Rahmens beim Editieren geändert
wurde. Die Felder FBA, SBP und EBP können verändert werden, wenn die Adresse
oder der Bereich der gültigen
Daten des ersten Puffers 101 des Rahmens geändert worden ist.
Das Feld Typ legt den Typ der Rahmenübertragung fest.
-
Eine
Warteschlange der freien FCBs dient zur Verwaltung einer verknüpften Liste
von FCBs, die im Augenblick keinem Rahmen zugewiesen sind. Das Feld
NFA des FCB 103 dient zur Bildung der verknüpften Liste
der FCBs in der Warteschlange der freien FCBs. Das Feld NFA ist
das einzige Feld im FCB 103, welches gültige Informationen enthält, wenn
sich der entsprechende FCB 103 in der Warteschlange der
freien FCBs befindet.
-
Ein
Warteschlangensteuerblock (Queue Control Block, QCB) 104 verwaltet
eine Warteschlange von Rahmen, indem er die Adressen des ersten und
des letzten FCB in der Warteschlange sowie einen Zählerwert
der Gesamtzahl von Rahmen in der Warteschlange speichert. Eine QCB 104 enthält die folgenden
Felder:
-
• Kopf-FCBA – Dient
zum Speichern der FCB-Adresse des Rahmens am Kopf der Warteschlange.
-
• Kopf-BCNT – Dient
zum Speichern eines Zählerwertes
der Gesamtzahl gültiger
Bytes des Rahmens am Kopf der Warteschlange.
-
• End-FCBA – Dient
zum Speichern der FCB-Adresse (FCBA) des Rahmens am Ende der Warteschlange.
-
• QCNT – Dient
zum Speichern eines Zählerwertes
der Anzahl der im Augenblick in der Warteschlange befindlichen Rahmen.
-
Die
Rahmen werden auf folgende Weise an den Kopf oder an das Ende der
Warteschlange gesetzt:
- 1. Wenn sich in der
Warteschlange bereits ein oder mehrere Rahmen befinden (QCNT ist
größer als
oder gleich 1), werden die ursprünglich
am Ende der Warteschlange befindlichen Felder NFA und BCNT im FCB 103 so
geschrieben, dass sie den neuen Rahmen an das Ende der Warteschlange
anhängen.
Wenn sich vorher keine Rahmen in der Warteschlange befanden hatten, (QCNT
gleich 0), werden die Felder Kopf-FCBA und Kopf-BCNT des QCB 104 so
geschrieben, dass der neue Rahmen an den Kopf der Warteschlange
gestellt wird.
- 2. Die End-FCBA des QCB 104 wird so geschrieben, dass
sie auf den neuen FCB 103 zeigt, welcher an das Ende der
Warteschlange gesetzt wurde.
- 3. Der QCNT des QCB 104 wird um 1 verringert, um einen
zusätzlichen
Rahmen in der Warteschlange anzuzeigen.
-
Rahmen
werden wie folgt vom Kopf der Warteschlange entfernt:
- 1. Wenn sich in der Warteschlange bereits mehr als ein Rahmen
befindet (QCNT größer als
1), werden die Felder NFA und BCNT im FCB 103 am Kopf der
Warteschlange gelesen, um die FCBA und den BCNT für den neuen
Rahmen zu erhalten, der an den Kopf der Warteschlange gestellt wird.
Diese Werte FCBA und BCNT werden dann in die Kopf-FCBA und den Kopf-BCNT
des QCB 104 geschrieben, um den neuen Rahmen am Kopf der
Warteschlange zu positionieren.
- 2. Der Wert QCNT des QCB 104 wird dann um 1 verringert,
um anzuzeigen, dass sich ein Rahmen weniger in der Warteschlange
befindet.
-
Rahmenempfang
-
Im
folgenden Abschnitt wird die Verwendung der Datenstrukturen vom
Empfang eines Rahmens bis zu seiner Weiterleitung zum Netzwerkprozessor beschrieben.
-
Schritt
1: Wenn die ersten Daten des Rahmens empfangen werden, wird ein
freier Adresspuffer vom Kopf der Warteschlange der freien Puffer
und ein freier FCB 103 vom Kopf der Warteschlange der freien
FCB entfernt. In den Puffer 101 werden bis zu 64 Byte Rahmendaten
geschrieben. In den FCB 103 werden die Werte FBA, SBP und
EBP für
den ersten Puffer 101 geschrieben. Ein Arbeitsregister
mit Bytezählerwerten
wird gleich der Anzahl der Bytes gesetzt, die in den ersten Puffer 101 geschrieben
wurden. Wenn der gesamte Rahmen in den ersten Puffer 101 passt,
springt der Prozess zu Schritt 3; ansonsten wird mit Schritt 2 fortgesetzt.
-
Schritt
2: Ein weiterer Puffer 101 wird aus der Warteschlange der
freien Puffer genommen und in diesen bis zu 64 Datenbytes geschrieben.
In den BCB 102 für
den vorigen Puffer 101 werden die Werte NBA, SBP und EBP
des aktuellen Puffers 101 geschrieben. Die Anzahl der in
den Puffer 101 geschriebenen Bytes wird zum Arbeitsregister
mit den Bytezählerwerten
addiert. Wenn das Ende des Rahmens empfangen worden ist, springt
der Prozess wieder zu Schritt 3; ansonsten wird mit Schritt 2 fortgesetzt.
-
Schritt
3: Dann wird der Rahmen an das Ende einer Eingabewarteschlange gestellt,
um auf die Weiterleitung zum Netzwerkprozessor zu warten.
- 1. Wenn sich vorher noch keine Rahmen in der Eingabewarteschlange
befunden hatten, wird die Adresse des FCB 103 des neuen
Rahmens in die Kopf-FCBA und die Schluss-FCBA des QCB 104 der
Eingabewarteschlange geschrieben. Der Bytezählerwert des Arbeitsregisters
wird in den Kopf-BCNT im QCB 104 geschrieben, um die Gesamtlänge des
neuen Rahmens zu speichern. Der Wert QCNT im QCB 104 wird
um 1 erhöht.
- 2. Wenn sich in der Eingabewarteschlange bereits ein oder mehrere
Rahmen befunden hatten, werden Werte in die Felder NFA und BCNT
des FCB 103 für
den vorangehenden Rahmen am Ende der Eingabewarteschlange geschrieben.
In das Feld NFA wird die Adresse des FCB 103 des neuen
Rahmens geschrieben. In das Feld BCNT wird der Bytezählerwert
des Arbeitsregisters geschrieben, um die Länge des neuen Rahmens zu speichern.
In das Feld End-FCBA des QCB 104 der Eingabewarteschlange
wird die Adresse des FCB 103 des neuen Rahmens geschrieben.
Der Wert QCNT des QCB 104 wird um 1 erhöht.
-
Wenn
der Rahmen den Kopf der Eingabewarteschlange erreicht hat, wird
er aus der Warteschlange genommen und zum Netzwerkprozessor weitergeleitet.
Die Felder Kopf-FCBA und Kopf-BCNT werden aus dem QCB 104 der
Eingabewarteschlange gelesen. Dann wird der Wert Kopf-FCBA dazu
verwendet, den Inhalt des FCB 103 am Kopf der Warteschlange
zu lesen. Die aus dem FCB 103 gelesenen Werte NFA und BCNT
werden dazu verwendet, die Felder Kopf-FCBA und Kopf-BCNT des QCB 104 zu
aktualisieren. Die aus dem FCB 103 gelesenen Werte FBA,
SBP und EBP werden dazu verwendet, die Rahmendaten aufzufinden und
zu lesen, um sie zum Netzwerkprozessor weiterzuleiten. Die BCB-Kette 102 wird
so lange abgearbeitet, bis die zur Weiterleitung benötigten Rahmendaten
gelesen worden sind. Der Wert QCNT im QCB 104 wird um 1
verringert.
-
2 stellt
den Chipsatz der Systemumgebung dar, in welcher die bevorzugte Ausführungsart der
vorliegenden Erfindung realisiert wird. Genauer gesagt, die Daten
fließen
vom Koppelfeld 201 zum Datenfluss-Chip 202 und
dann zum POS(Paket über SONET)-Framer
oder die Ethernet-MAC (Medienzugriffssteuerung) 203. Vom
POS-Framer oder der Ethernet-MAC 203 fließen die
Daten zum Datenfluss-Chip 204 und anschließend zum
Koppelfeld 201. Die Datenfluss-Chips 202 und 204 werden durch
Datenspeicher (dynamischer RAM, DRAM) 205 bzw. 206 sowie
Steuerspeicher (statischer RAM, SRAM) 207 bzw. 208 unterstützt. Die
Datenfluss-Chips 202 und 204 stehen mit entsprechenden integrierten
Prozessorkomplexen (Embedded Processor Complex, EPC) 209 bzw. 210 und
optional mit Zeitplanungs-Chips 211 bzw. 212 in
Verbindung. Die EPC-Chips 209 und 210 werden durch
Referenztabellen 213 bzw. 214, die im DRAM stehen,
sowie durch Referenztabellen 215 bzw. 216 unterstützt, die im
SRAM stehen. Außerdem
verfügt
der EPC-Chip 209 über
eine Koprozessorschnittstelle und einen lokalen PCI-Bus (Peripheral Component
Interconnect, Anschluss von Peripherieeinheiten), während der EPC-Chip 210 zusätzlich durch
einen adressierbaren Inhaltsspeicher (CAM) 217 unterstützt wird.
Wenn die Zeitplanungs-Chips 211 und 212 verwendet
werden, werden sie durch die im SRAM stehenden Datenflusswarteschlangen 218 bzw. 219 unterstützt.
-
3 zeigt
den Datenfluss-Chip 202 (204), den EPC-Chip 209 (210)
und den Zeitplanungs-Chip 211 (212) genauer. Der
EPC-Chip 209 (210)
dient zur Ausführung
der Software zur Weiterleitung des Netzwerkdatenverkehrs. Der Chip
enthält
in Form von Hardware Funktionen zum Ausführen normaler Operationen wie
Durchsuchen von Tabellen, Festlegen von Regeln und Zählen. Der
Datenfluss-Chip 202 (204) dient als primärer Datenpfad
zum Senden und Empfangen von Datenverkehr über Netzwerk- und/oder Koppelfeldschnittstellen.
Er verfügt über eine
Schnittstelle zu einem großen
Datenspeicher 205 (206) zum Puffern des Datenverkehrs
beim Durchlaufen des Netzwerkprozessor-Subsystems. Er leitet die
Rahmenkopfdaten zur Verarbeitung zum EPC-Chip weiter und antwortet
auf Anforderungen seitens des EPC-Chips, Rahmen zu ihrer Zieladresse
weiterzuleiten. Optional kann ein Zeitplanungs-Chip 211 (212) zugefügt werden,
um die Dienstqualität
(Quality of Service, QoS) des Netzwerkprozessor-Subsystems zu verbessern.
Dieser Chip kann die zeitliche Reihenfolge tausender Netzwerk-„Datenflüsse" entsprechend dem
ihnen zugewiesenen QoS-Wert steuern.
-
Der
EPC-Chip 209 (210) enthält zwölf dyadische Protokollprozessoreinheiten
(DPPU) 301, welche für
die parallele Verarbeitung des Netzwerkverkehrs sorgen. Jede DPPU
enthält
zwei „Picocode"-Einheiten. Jede
Picocode-Einheit unterstützt zwei
Prozesse. Zwischen den Prozessen kann in Abhängigkeit vom Inhalt ohne zusätzlichen
Systemaufwand umgeschaltet werden. In den EPC-Chip ist ein Speicher
für Picocode-Instruktionen
integriert. Ankommende Rahmen werden über die Datenflussschnittstelle 302 vom
Datenfluss-Chip 202 (204) empfangen und in einem
Paketpuffer 303 zwischengespeichert. Eine Steuerungsfunktion
verteilt die ankommenden Rahmen auf die Protokollprozessoren 301.
Anhand von zwölf
Kategorien der Eingabewarteschlange können Rahmen bestimmten Prozessen zugeordnet
oder auf alle Prozesse verteilt werden. Eine Abschlusssteuerungsfunktion
stellt sicher, dass die Reihenfolge der Rahmen am Ausgang des Protokollprozessors 301 erhalten
bleibt.
-
Ein
integrierter PowerPC®-Mikroprozessorkern 304 ermöglicht die
Ausführung
einer Systemmanagement-Software auf höherer Ebene. Eine 18-Bit-Schnittstelle
zum äußeren DDR-SDRAM
gewährleistet
den Zugriff auf bis zu 64 MB Anweisungsspeicher. Eine 32-Bit-PCI-Schnittstelle
ermöglicht
die Kopplung mit anderen Steuerungsfunktionen oder die Konfigurierung
von Peripherieschaltungen wie beispielsweise MAC- oder Framer-Komponenten.
-
Eine
Klassifizierungsfunktion auf Hardwarebasis analysiert die Rahmen,
wenn sie den Protokollprozessoren zugeleitet werden, um die wohlbekannten
Rahmenformate Schicht 2 und Schicht 3 zu erkennen. Das Ergebnis
der Klassifizierung dient zur Voreinstellung des Picocode-Prozesses,
bevor dieser mit der Verarbeitung jedes Rahmens beginnt.
-
Eine
Tabellensuchmaschine unterstützt
das Durchsuchen von Tabellen durch Hardware. Die Tabellen haben
eine Patricia-Baumstruktur,
bei der die Suche bei einer Adresse endet, die einem Eintrag am „Blatt" des Baums entspricht
und unter welcher der Picocode Informationen eines Datenflusses
speichert. Es werden drei Tabellensuchalgorithmen unterstützt: Feste Übereinstimmung
(Fixed Match, FM), Längste
Präfixübereinstimmung
(Longest Prefix Match, LPM) und ein spezieller Algorithmus Softwaregesteuerter
Baum (Software Managed Tree, SMT) für Suchvorgänge nach komplexen Regeln.
Der Steuerspeicher 206 (207) stellt große DRAM-Tabellen
und schnelle SRAM-Tabellen zur Verfügung, um die Klassifizierung
der Leitungsgeschwindigkeit von Millionen von Datenflüssen zu
unterstützen.
Die SRAM-Schnittstelle kann optional zum Anschließen eines
nach Inhalten adressierbaren Speichers (Content Addressable Memory,
CAM) (217 in 2) zur Verbesserung der Suchleistung
dienen.
-
Der
Picocode kann einen Rahmen direkt bearbeiten, indem er ihn aus dem
mit dem Datenfluss-Chip 202 (204) verbundenen
Datenspeicher 205 (206) liest und wieder in diesen
schreibt. Zur weiteren Beschleunigung kann der Picocode auch Rahmenänderungsbefehle
erzeugen, damit der Datenfluss-Chip Änderungen am Rahmen vornimmt,
wenn dieser über
den Ausgangsanschluss übertragen wird.
-
Eine
Zählerverwaltungsfunktion
unterstützt den
Picocode bei der Verwaltung von Statistikzählern. Auf dem Chip integrierte
SRAMs und optional ein externer SRAM (gemeinsam mit dem Strategiemanager
genutzt) können
zum Zählen
von Ereignissen verwendet werden, die zwischen den Ankunftszeitpunkten
der Rahmen eintreten. Einer der (gemeinsam mit der Tabellensuchfunktion
genutzten) externen Steuerspeicher-DDR-SDRAMs kann zur Verwaltung großer Zahlen
von Zählern
für Ereignisse verwendet
werden, die nicht so oft eintreten.
-
Eine
Strategiemanagerfunktion unterstützt den
Picocode bei der Steuerung der ankommenden Datenströme. Sie
verwaltet tausende von Leaky-Bucket-Fällen mit auswählbaren
Parametern und Algorithmen. Ein auf dem Chip integrierter SRAM bietet Platz
für 1 K
Steuerblöcke
(PolCBs). Zur Erhöhung der
Anzahl der PolCBs kann optional ein (gemeinsam mit dem Zählermanager
genutzter) externer SRAM zugefügt
werden.
-
Der
Datenfluss-Chip 202 (204) stellt Sende- und Empfangsschnittstellen
bereit, die unabhängig voneinander
so konfiguriert werden können,
dass sie entweder im Schnittstellenmodus „Anschluss" oder „Vermittlung" arbeiten. Im Anschlussmodus
tauscht der Datenfluss-Chip Rahmen aus, um diverse Netzwerkmedien
anzuschließen,
zum Beispiel Ethernet-MACs
oder Paket-über-SONET(POS)-Framer. Dies
geschieht über
eine Empfangssteuereinheit 305 und eine Sendesteuereinheit 306.
Im Vermittlungsmodus tauscht der Datenfluss-Chip Rahmen in Form von
64-Byte-Zellensegmenten aus, um die Verbindung zu zellenbasierten
Kopplungsfeldern herzustellen. Der durch die Sende- und Empfangsschnittstellen 306 bzw. 305 des
Datenfluss-Chips
bereitgestellte physische Bus ist ein 64-Bit-Datenbus. Die Schnittstelle
unterstützt
direkt den Anschluss von Industrie-POS-Framern und kann mittels
einer FPGA-Logik (Field Programmable Gate Array, feldprogrammierbare
Gatematrix) an Industrie-Ehternet-MACs und Koppelfeldschnittstellen
(zum Beispiel CSIX) angepasst werden.
-
Ein über eine
Datenbankvermittlung 307 mit dem Datenfluss-Chip 202 (204)
verbundener großer Datenspeicher 205 (206)
stellt einen „Netzwerkpuffer" zum Abfangen von
Datenverkehrsspitzen bereit, wenn die Rate der ankommenden Rahmen
die Rate der abgehenden Rahmen übersteigt.
Er dient auch als Lagerstelle zum Neuzusammenstellen von IP-Fragmenten
sowie als Lagerstelle für
Rahmen, die bei solchen Anwendungen wie dem TCP-Abbruch auf ein
erneutes Senden warten. Es werden mehrere DRAM-Schnittstellen unterstützt, um
für die
Anschlussschnittstelle und die Vermittlungsschnittstellen ausreichend
Sende- und Empfangsbandbreite zur Verfügung zu stellen. Zum direkten
Lesen/Schreiben des Datenspeichers mittels des EPC-Picocodes wird
zusätzliche
Bandbreite zur Verfügung
gestellt. Der Datenspeicher 205 (206) wird über verknüpfte Listen
der Puffer verwaltet. Zum Verwalten der verknüpften Listen der Puffer und
der Rahmen dienen zwei externe SRAMs.
-
Der
Datenfluss-Chip 202 (204) führt leistungsfähige Algorithmen
zur Vermeidung von Überlastungen
durch, zum Beispiel das „vorzeitige
statistische Löschen" (random early discard,
RED), um einen Überlauf
des Datenspeichers 205 (206) zu verhindern. Die
Algorithmen zur Vermeidung von Überlastungen
arbeiten mit Werten vom EPC-Picocode und von der EPC-Regelfunktion,
die beide über
die EPC-Schnittstelle 308 laufen, und diversen Warteschlangenschwellenwerten,
die durch den Datenfluss- und den Zeitsteuerungs-Chip verwaltet
werden. Ein „Löschungswahrscheinlichkeits-Speicher" im Datenfluss-Chip
wird durch den EPC-Picocode verwaltet und durch die Funktion zur
Vermeidung von Überlastungen
aufgerufen, um diverse Standard- oder Spezial-Löschalgorithmen zu realisieren.
-
Der
Datenfluss-Chip 202 (204) führt mittels Befehlen, die im
Rahmenänderungs-Steuerblock (Frame
Alteration Control Block, FACB) (siehe 5) gespeichert
sind, einen umfangreichen Satz von hardwaregestützten Funktionen zur Änderung
von Rahmen in der Rahmenänderungslogik 309 aus.
Die Änderungen
folgender Rahmenfelder sind bekannt: Ethernet DA/SA, VLAN, DIX,
SAP, SNAP, MPLS, IP TTL, IP TOS Byte und IP-Kopfdatenprüfsumme.
Der FACB hat zwei Aufgaben: Er speichert zum einen die im Mehrfachsendealgorithmus
zu verwendende FCB-Referenzadresse und zum anderen die Rahmenänderungsbefehle
zum Ausführen
in der Rahmenänderungslogik 309 (Teil
der Sendesteuereinheit 306 des Datenfluss-Chips), damit
diese die Rahmendaten ändert,
wenn sie über
den Ausgangsanschluss gesendet werden. Beispielsweise werden folgende wohlbekannte
Rahmenänderungen
von der Rahmenänderungslogik 309 vorgenommen: Überschreiben
der Ethernetziel- oder -quellenadresse, Überschreiben des Ethernetprotokolltyps,
Einfügen
und Löschen
von Markierungen durch die Funktion Multiprotokoll-Markierungsänderung
(MultiProtocol Label Switching, MPLS), Verkürzung der Lebensdauer (Time-to-Live,
TTL) nach dem Internetprotokoll (IP) usw. Zu beachten ist, dass
die Rahmenänderungslogik
zur Realisierung der vorliegenden Erfindung nicht erforderlich ist.
Dasselbe Mehrfachsendeverfahren kann auch dann verwendet werden,
wenn der Datenfluss-Chip 202 (204) die Funktion
der Rahmenänderungslogik
nicht enthält.
-
Der
Datenfluss-Chip 202 (204) realisiert ein Verfahren
unter der Bezeichnung „virtuelle
Ausgangswarteschlange",
bei dem für
Rahmen, die zu verschiedenen Ausgängen oder Zieladressen geschickt
werden sollen, jeweils getrennte Ausgangswarteschlangen existieren.
Durch dieses Schema wird verhindert, dass eine Leitung gleich am
Anfang blockiert wird, wenn ein einzelner Ausgangsanschluss blockiert
ist. Für
jeden Ausgangsanschluss gibt es Warteschlangen mit hoher und niedriger
Priorität,
damit Datenverkehr mit bzw. ohne reservierte Bandbreite unabhängig voneinander über die
Warteschlangen gesteuert werden kann.
-
Der
optional vorgesehene Zeitplanungs-Chip 211 (212)
sorgt für
die „Dienstqualität", indem er Datenflusswarteschlangen
nach unterschiedlichen Algorithmen wie beispielsweise „garantierte
Bandbreite", „geringster
Aufwand", „Spitzenbandbreite" usw. steuert. Zur
Steuerung tausender Datenflusswarteschlangen mit hunderten oder
tausenden aktiv durch die Warteschlangen verwalteten Rahmen dienen zwei
externe SRAMs. Der Zeitplanungs-Chip 211 (212)
unterstützt
die Überlastungssteuerungsalgorithmen
des Datenfluss-Chips, indem er in Abhängigkeit von Schwellenwerten
je Datenflusswarteschlange das Löschen
von Rahmen ermöglicht.
-
Zu
beachten ist, dass alle Informationen zwischen dem Datenfluss-Chip 202 (204),
dem EPC 209 (210) und dem Zeitplanungs-Chip 211 (212)
im Format „Nachricht" ausgetauscht werden.
Informationen zwischen dem Koppelfeld 201, dem Datenfluss-Chip 202 und
dem POS-Framer/Ethernet-MAC 203 werden im Format „Rahmen" ausgetauscht. Nachrichten dienen
nur zum Austausch von „Steuerungs" informationen zwischen
dem Datenfluss-Chip, dem EPC und dem Zeitplanungs-Chip. Beispiele
solcher Nachrichten sind: Steuern, in Warteschlange einstellen, Unterbrechung/Ausnahmezustand,
Daten lesen, Daten schreiben, Register lesen und Register schreiben.
Eine Nachricht kann aus einer Anforderung oder einer Antwort bestehen.
-
Das
allgemeine Format von Nachrichten ist in 4 dargestellt.
Das Nachrichtenformat enthält gemäß 4 die
folgenden Komponenten:
Nachrichten-ID: Das Feld Message_ID
(Nachrichten-ID) ist ein 8-Bit-Wert im ersten Wort der Nachricht,
der den Nachrichtentyp eindeutig kennzeichnet.
Nachrichten-Parameter:
Das Feld Message_Parameters (Nachrichten-Parameter) ist ein 24-Bit-Wert
im ersten Wort einer Nachricht, der jeweils für einen Nachrichtentyp für die folgenden
Zwecke angegeben werden kann:
- • Verwendung
als Erweiterung des Feldes Message_ID zum Definieren anderer Nachrichtentypen
ist möglich.
- • Verwendung
zur weiteren Kennzeichnung des Zwecks der Nachricht ist für jeweils
einen Nachrichtentyp möglich.
- • Verwendung
zum Transportieren von „Folgenummern" oder anderer „Referenz-ID"-Informationen zum
Zuordnen der als Antwort empfangenen Daten ist möglich.
- • Verwendung
zum Angeben der Nachrichtenlänge
bei Nachrichten unterschiedlicher Länge ist möglich.
- • Verwendung
zum Transportieren anderer für
die Nachricht charakteristischer Daten ist möglich.
Daten: Der
Rest der Nachricht kann aus „0" bis „N-1" zusätzlichen
32-Bit-„Datenwörtern" bestehen.
-
Mehrfachsendung
-
Im
folgenden Abschnitt wird der Prozess des Einstellens eines Mehrfachsenderahmens
in eine Warteschlange und des Sendens desselben beschrieben. 5 zeigt
ein Beispiel einer Mehrfachsendung. Im vorliegenden Fall wird der
Mehrfachsenderahmen an drei Zieladressen gesendet und weist daher
drei „Instanzen" (Einzelfälle) auf.
Der während des
Empfangs des ursprünglichen
Rahmens zugewiesene FCB bleibt während
der Lebensdauer des Rahmens erhalten und trägt die Bezeichnung „Referenz-FCB" 501. Der
Netzwerkprozessor erhält
weitere FCBs (FCB 1, FCB 2 und FCB 3 in 5) 5021, 5022 und 5023 sowie Puffer 5031 , 5032 und 5033 und verknüpft diese
mit dem ursprünglichen
Referenzrahmen 501, um jede Instanz für die Mehrfachrahmensendung
zu erzeugen. Dann wird jede Instanz zum Senden in die Warteschlange
eingestellt.
-
Die
FCBs 502 und die Puffer 503 jeder einzelnen Instanz
werden gelöscht,
sobald jede Instanz gesendet wurde. Der Referenz-FCB 501 und
die zugehörigen
Puffer 5051 bis 5055 hingegen werden erst gelöscht, nachdem
alle Instanzen gesendet worden sind. Da jede Instanz des Rahmens über einen
anderen Anschluss gesendet werden kann, kann das Senden der einzelnen
Instanzen in einer anderen Reihenfolge beendet werden als der Reihenfolge
in der Warteschlange entspricht. Mittels eines Mehrfachsendezählers (Multicast
Counter, MCC) wird ermittelt, ob alle Instanzen gesendet worden
sind und der Referenzrahmen gelöscht
werden kann. Der MCC wird im freien Feld NFA des Referenz-FCB 501 gespeichert,
das in 5 oben links dargestellt ist. Das Feld wird durch
die Anzahl der Instanzen der Mehrfachsendung initialisiert und dann
jeweils nach dem Senden jeder einzelnen Instanz um eins verringert. Sobald
der MCC auf null steht, werden der Referenz-FCB 501 und
seine zugehörigen
Puffer 5051 bis 5055 gelöscht, indem sie wieder in die
Warteschlangen der freien FCBs bzw. der freien Puffer zurückgeführt werden.
-
Der
Referenz-FCB 501 und die anderen FCBs 5021, 5022 und 5023 stammen
sämtlich
aus dem gesamten Bestand an freien FCBs. Wenn der FCB als Referenz-FCB
verwendet wird, dient das Feld NFA/MCC als MCC. Wenn der FCB als
normaler FCB (nicht als Referenz-FCB) verwendet wird, dient das
Feld NFA/MCC als NFA. Die wechselseitigen Beziehungen zwischen den
QCBs und den FCBs sind in 1 dargestellt.
Alle FCBs 5021 , 5022 und 5023 stehen
in einer Warteschlange zum Senden bereit. Der Datenfluss-Chip enthält für jede Ausgangswarteschlange
einen QCB. Jede Ausgangswarteschlange ist normalerweise einem Anschluss
(d.h. einer Datennetzleitung über
den POS-Framer/Ethernet-MAC oder
einem anderen Netzwerkprozessor über
das Koppelfeld) zugeordnet. Jede der drei in 5 dargestellten
Mehrfachsendeinstanzen steht in einer Ausgangswarteschlange. Es
kann sein, dass alle drei Instanzen entweder zum Senden über ein
und denselben Anschluss oder zum Senden über unterschiedliche Ausgänge in eine
Warteschlange eingestellt werden. Aber jeder der FCBs wird in eine
Warteschlange von Rahmen eingestellt, die genau über einen Anschluss gesendet
werden sollen. Das Feld NFA in diesen FCBs wird zur Bildung der
verknüpften Liste
der Rahmen in der Warteschlange verwendet. Der Referenz-FCB 501 ist
jedoch in keiner Warteschlange enthalten. In ihm sind Parameter
gespeichert, die zum Zurückgeben
der Puffer des ursprünglichen (Referenz-)
Rahmens zur Warteschlange der freien Puffer dienen, nachdem alle
Instanzen des Rahmens gesendet worden sind. Da der Referenz-FCB 501 in
keiner Rahmenwarteschlange enthalten ist, braucht das Feld NFA keine
verknüpfte
Liste zu bilden. Diese Bits des Feldes NFA dienen vielmehr zum Speichern
des MCC. Die Adresse des Referenz-FCB wird im FALB (siehe 5)
vor den Rahmendaten gespeichert und dient dort zum Auffinden des
Referenz-FCB, nachdem alle Instanzen des Rahmens gesendet worden
sind.
-
Der
EPC-Chip 202 führt
die folgenden Schritte aus, um jede Instanz des Mehrfachsenderahmens in
die Warteschlange einzustellen:
- 1. Ein FCB 502 aus
der Warteschlange der freien FCBs wird der Instanz zugewiesen.
- 2. Ein oder mehrere Puffer 503 aus der Warteschlange
der freien Puffer nehmen den FACB und eindeutige Kopfdaten der Instanz
auf. Bei Mehrfachsendungen muss der FACB verwendet werden.
- 3. Die für
die Instanz charakteristischen Daten werden in die obigen Puffer 503 geschrieben.
Im Normalfall unterscheiden sich die Kopfdaten verschiedener Instanzen
einer Mehrfachsendung voneinander. Zum Beispiel kann eine Instanz
der Mehrfachsendung Ethernet-Kopfdaten aufweisen, da sie über einen
Ethernet-Anschluss gesendet wird, während bei einer anderen Instanz POS-Kopfdaten
erforderlich sind, da sie über
einen POS-Anschluss gesendet wird.
- 4. Die Inhalte der den Puffern der einzelnen Instanzen zugewiesenen
BCBs 504 führen
dazu, dass eine verknüpfte
Liste entsteht, die diese Puffer mit den Puffern des ursprünglichen „Referenzrahmens" verknüpft. Die
Puffer der einzelnen Instanzen brauchen nicht mit dem ersten Puffer
des Referenzrahmen verknüpft
zu werden. Wenn aus der Instanz einige der führenden Bytes des Referenzrahmens
entfallen sollen, können
die Puffer der jeweiligen Instanz mit einem anderen Puffer als dem
ersten Puffer des Referenzrahmens verknüpft werden. Die Werte SBP und
EBP werden in jeden BCB 504 geschrieben, um die gültigen Bytes
des nächsten
Puffers darzustellen. Dadurch kann der BCB 504 für den letzten
Puffer der jeweiligen Instanz eine relative Position für das Startbyte
im ersten verknüpften
Puffer vom Referenzrahmen angeben, die von der relativen Position der
Bytes für
andere Instanzen verschieden ist. Das Bit TBUF soll anzeigen, ob
der nächste
Puffer sofort nach dem Senden seiner Daten wieder zur Warteschlange
der freien Puffer zurückgeschickt werden
soll. Für
den letzten Puffer der jeweiligen Instanz muss das Bit TBUF in seinem
BCB 504 auf null stehen. Das Bit TBUF im BCB 504 der Puffer
aller anderen Instanzen muss auf eins stehen.
- 5. Dann bereitet der Netzwerkprozessor das Einstellen in die
Warteschlange vor, um die Instanz dem Datenfluss-Chip 202 zum
Senden bereitzustellen. Als Teil des Einstellens in die Warteschlange
erhält
der Datenfluss-Chip 202 die folgenden Informationen:
- • Nummer
der Zielwarteschlange – Gibt
an, in welche Ausgangswarteschlange die Mehrfachsendeinstanz eingestellt
werden soll.
- • FCBA – Gibt die
Rahmensteuerblockadresse (FCBA) an, welche der Mehrfachsendeinstanz durch
den Netzwerkprozessor zugewiesen wurde.
- • BCNT – Gibt die
Gesamtlänge
des Rahmens an. Dieser Wert kann für jede Mehrfachsendeinstanz verschieden
sein.
- • FBA – Gibt die
Adresse des ersten Puffer 101 in der Mehrfachsendeinstanz
an. Der erste Puffer 101 ist für jede Mehrfachsendeinstanz
verschieden.
- • SBP/EBP – Gibt die
Position des Start- und des Schlussbytes der gültigen Daten im ersten Puffer 101 an.
- • Typ – Gibt Typ
und Format des zu sendenden Rahmens an. Dieser Wert ist für „Mehrfachsenderahmen" immer auf den Binärwert „11" gesetzt. Dieser
Wert bedeutet 1) dass der Rahmen eine Mehrfachsendeinstanz ist,
2) dass der erste Puffer 101 einen FACB enthält, und
3) dass der erste Puffer 101 ein Übergangspuffer ist (TBUF=1).
- • FACB – Information
des Rahmenänderungs-Steuerblocks
(FACB), welche die Änderungen
des Datenfluss-Chips 202 angibt, die beim Senden der Rahmendaten
zu berücksichtigen sind.
Der FACB kann für
jede Mehrfachsendeinstanz unterschiedliche Rahmenänderungsanforderungen
enthalten. Jede Instanz muss jedoch die Adresse des Referenz-FCB 501 enthalten,
die zum Löschen
des Referenzrahmens benötigt wird,
nachdem alle Instanzen gesendet worden sind.
- • Das
Mehrfachsenden – Beim
Einstellen einer Mehrfachsendeinstanz in die Warteschlange gibt der
Netzwerkprozessor an, ob gerade die erste, eine mittlere oder die
letzte Instanz der Mehrfachsendung in die Warteschlange eingestellt
wird.
- – 01 – Erste
Instanz senden – Die
erste Instanz in der Warteschlange wird als „erste zu sendende Instanz" bezeichnet.
- – 10 – Mittlere
Instanz senden – Wenn
der Mehrfachsenderahmen aus mehr als zwei Instanzen besteht, werden
alle mittleren Instanzen als „mittlere
zu sendende Instanz" bezeichnet.
- – 11 – Letzte
Instanz senden – Die
letzte Instanz in der Warteschlange wird als „letzte zu sendende Instanz" bezeichnet.
-
Im
Folgenden werden die Schritte des Datenfluss-Chips vom Einstellen
in die Warteschlange bis zum Senden der Instanz des Mehrfachsenderahmens über den
Zielausgangsanschluss beschrieben:
- 1. Der Datenfluss-Chip 202 schreibt
die FACB-Information in den ersten Puffer 502 des Rahmens, wobei
er die beim Einstellen in die Warteschlange bereitgestellten Werte
FBA und SBP als Pufferadresse und als relative Position verwendet,
auf welche die Information geschrieben werden soll.
- 2. Der Datenfluss-Chip 202 entnimmt der FACB-Information
die Adresse des Referenz-FCB 501. Diese Adresse dient dazu,
auf den Referenz-FCB 501 zuzugreifen und in ihm einen MCC-Wert zu speichern.
Der MCC-Wert wird im Feld NFA des Referenz-FCB 501 gespeichert (das
Feld NFA des Referenz-FCB 501 ist
frei, da sich der Referenzrahmen nicht direkt in einer Warteschlange
befindet). Der Wert des MCC 506 wird beim Einstellen in
die Warteschlange wie folgt aktualisiert:
- • Beim
Mehrfachsendeschritt 01 „erste
Instanz senden" wird
der MCC 506 gleich 2 gesetzt.
- • Beim
Mehrfachsendeschritt 10 „mittlere
Instanz senden" wird
der MCC 506 um 1 erhöht.
- • Beim
Mehrfachsendeschritt 11 „letzte
Instanz senden" wird
der MCC 506 nicht verändert.
- 3. Der Datenfluss-Chip 202 schreibt die Werte FBA,
SBP, EBP und Typ in den FCB 502, der durch den beim Einstellen
in die Warteschlange angegebenen Wert FCBA bezeichnet wurde
- 4. Der Datenfluss-Chip 202 stellt den Rahmen in die
angeforderte Ausgangswarteschlange ein, welche beim Einstellen in
die Warteschlange durch den Wert der Zielwarteschlangennummer angegeben
wurde. Dies geschieht wie folgt:
- a. Wenn sich zuvor noch keine Rahmen in der Ausgangswarteschlange
befunden hatten, wird in die Kopf-FCBA und die Schluss-FCBA des
QCB 104 der Ausgangswarteschlange (1) der Wert
FCBA zum Zeitpunkt des Einstellens in die Warteschlange geschrieben.
In den Kopf-BCNT des QCB 104 wird zum Zeitpunkt des Einstellens in
die Warteschlange der Wert BCNT geschrieben. Der Wert QCNT im QCB 104 wird
um 1 erhöht.
- b. Wenn sich zuvor bereis ein oder mehrere Rahmen in der Ausgangswarteschlange
befunden hatten, werden Werte in die Felder NFA und BCNT des FCB 502 desjenigen
Rahmens geschrieben, der sich zuvor am Ende der Ausgangswarteschlange
befunden hatte. In die Felder NFA und BCNT werden die Werte FCBA
und BCNT zum Zeitpunkt des Einstellens in die Warteschlange geschrieben.
In das Feld Schluss-FCBA des QCB 104 der Ausgangswarteschlange
(1) wird dann der Wert FCBA zum Zeitpunkt des Einstellens
in die Warteschlange geschrieben. Der Wert QCNT im QCB 104 wird
um 1 erhöht.
- 5. Sobald der Rahmen an den Kopf der Ausgangswarteschlange gerückt ist,
wird er aus der Warteschlange genommen und über den Ausgangsanschluss gesendet.
Die Felder Kopf-FCBA und Kopf-BCNT werden aus dem QCB 104 der Ausgangswarteschlange
gelesen. Der Wert Kopf-BCNT wird in das Zählregister der aktiven Bytes
geladen und während
des Sendens des Rahmens verwendet. Der Wert Kopf-FCBA dient dazu,
den Inhalt des FCB 502 am Kopf der Warteschlange zu lesen.
Die aus dem FCB 502 gelesenen Werte NFA und BCNT dienen
zum Aktualisieren der Felder Kopf-FCBA und Kopf-BCNT des QCB 104 (1).
Die aus dem FCB 502 gelesenen Felder FBA, SBP, EBP und
Typ werden in Zählregister
geladen und während
des Sendens der Daten aus dem ersten Puffer 5041 verwendet. Dann
wird der FCB 502 gelöscht,
indem seine Adresse an den Ende der Warteschlange der freien FCBs
gesetzt wird. Der Wert QCNT im QCB 104 wird um 1 verringert.
- 6. Die aus dem FCB 103 gelesenen Werte FBA, SBP, EBP
und Typ dienen zum Auffinden und Lesen des Inhalts des ersten Puffers 101 des
Rahmens. Das Feld Typ bedeutet Mehrfachsenden und zeigt an, dass
ein FACB vorhanden ist. Deshalb wird der Wert aus dem FACB gelesen
und in die Rahmenänderungslogik übertragen,
um dort die Rahmendaten vor dem Senden in der gewünschten
Weise zu verändern.
Desgleichen wird die Adresse des Referenz-FCB 501 dem FACB entnommen,
in einem Arbeitsregister gespeichert und verwendet, nachdem der
Rahmen vollständig gesendet
worden ist. Die Rahmendaten werden dann aus dem Puffer 101 (falls
vorhanden) in eine Ausgangs-FIFO-Warteschlange eingestellt (First-In-First-Out-Puffer),
um anschließend über den
Ausgangsanschluss gesendet zu werden. Die Anzahl der in die Ausgangs-FIFO-Warteschlange eingestellten
Bytes entspricht von den aktiven Bytes im Arbeitsregister der Bytezählerwerte
bzw. von der Anzahl der gültigen
Bytes im Puffer 101 dem kleineren der beiden Werte, die
durch die werte SBP bzw. EBP angezeigt werden. Das Arbeitsregister
der Bytezählerwerte
wird sodann um die Anzahl derjenigen Datenbytes verringert, die in
die Ausgangs-FIFO-Warteschlange
eingestellt worden sind. Wenn der Wert des Arbeitsregisters der
Bytezählerwerte
dann immer noch größer als null
ist, werden die Werte NBA, SBP, EBP und TBUF aus dem dem ersten
Puffer 101 entsprechenden BCB 102 gelesen, in
Arbeitsregister geladen und beim Senden des nächsten Puffers 101 verwendet.
Dann wird der erste Puffer 101 gelöscht, indem seine Pufferadresse
an den Schluss der Warteschlange der freien Puffergesetzt wird.
- 7. Die aus dem BCB 102 gelesenen Werte NBA, SBP, EBP
und TBUF dienen zum Auffinden und Lesen des Inhalts des nächsten Puffers 101 des Rahmens.
Die Rahmendaten aus dem Puffer 101 werden dann in die Ausgangs-FIFO-Warteschlange
eingestellt, um dann über
den Ausgangsanschluss gesendet zu werden. Die Anzahl der in die
Ausgangs-FIFO-Warteschlange
eingestellten Bytes entspricht vom Bytezählerwert im Arbeitsregister
bzw. von der Anzahl der gültigen
Bytes im Puffer 101 dem kleineren der beiden Werte, die durch
die Werte SBP bzw. EBP angezeigt werden. Das Arbeitsregister der
Bytezählerwerte
wird dann um die Anzahl derjenigen Datenbytes verringert, die in
die Ausgangs-FIFO-Warteschlange eingestellt worden sind. wenn der
Wert des Arbeitsregisters der Bytezählerwerte dann immer noch größer als
null ist, werden die Werte NBA, SBP, EBP und TBUF aus dem dem aktuellen
Puffer 101 entsprechenden BCB 102 gelesen, in
Arbeitsregister geladen und beim Senden des nächsten Puffers 101 verwendet.
Wenn das Bit TBUF des aktuellen Puffers 101 gesetzt war,
wird dieser gelöscht,
indem seine Pufferadresse an den Schluss der Warteschlange der freien
Puffer gesetzt wird. Der Schritt 7 wird so lange wiederholt,
bis der Bytezählerwert
des Arbeitsregisters bis auf null verringert ist.
- 8. Sobald der Rahmen vollständig
gesendet worden ist, wird unter Zuhilfenahme der zuvor in einem
Arbeitsregister temporär
gespeicherten Adresse des Referenz-FCB das Feld MCC gelesen, das
im Feld NFA des Referenz-FCB 501 gespeichert ist. Anschließend wird
einer der beiden folgenden Schritte ausgeführt:
- • Wenn
der Wert MCC größer als
eins ist, wird er um eins verringert und wieder in das Feld NFA
des Referenz-FCB 501 geschrieben. Diese Mehrfachsendeinstanz
ist damit vollständig
gesendet. Der Referenzrahmen kann jedoch nicht gelöscht werden,
da die anderen Mehrfachsendeinstanzen noch nicht vollständig gesendet
worden sind.
- • Wenn
der Wert MCC gleich eins ist, wird der Referenz-FCB 501 in eine „Löschwarteschlange" eingestellt, um
die zum Referenzrahmen gehörenden
FCBs und Puffer in die jeweilige freie Warteschlange zurückzuführen.
-
Damit
sind alle Instanzen des Mehrfachsenderahmens vollständig gesendet
worden.
-
5 gilt
auch für
das Senden von statischen Rahmen. Das Senden von statischen Rahmen unterscheidet
sich vom Mehrfachsenden lediglich dadurch, dass keine FCBs oder
Puffer in die Warteschlangen der freien FCBs bzw. der freien Puffer zurückgeführt werden
und der Wert MCC im Referenz-FCB 501 nicht verringert wird.
Das Senden von statischen Rahmen erfolgt dann, wenn zum erneuten Senden
eines Rahmens zu einem späteren
Zeitpunkt eine Kopie des Rahmens zurückbehalten werden muss. Jede
der in 5 dargestellten Rahmeninstanzen kann einmal oder
mehrmals als statischer Rahmen gesendet werden (indem das Feld „Typ" des FCB auf den
Binärwert „01" gesetzt wird, um
einen statischen Rahmen anzuzeigen). Wenn eine Rahmeninstanz zum
letzten Mal gesendet wird, wird sie als normaler Mehrfachsenderahmen
gesendet (indem das Feld „Typ" des FCB auf den
Binärwert „11" gesetzt wird, um
einen Mehrfachsenderahmen anzuzeigen). Somit kann jede Rahmeninstanz
einmal bis N-mal als statischer Rahmen und anschließend einmalig
als normaler Mehrfachsenderahmen gesendet werden. Wenn jede Instanz
als normaler Mehrfachsenderahmen gesendet worden ist, werden der
Referenz-FCB 501 und die Puffer des Referenzrahmens wieder
zu den Warteschlangen der freien FCBs bzw. der freien Puffer zurückgeführt. Die
Picocode-Software im EPC-Chip 209 ermittelt, ob Rahmeninstanzen
als statische oder als Mehrfachsenderahmen gesendet werden.
-
Der
Datenfluss-Chip 202 sendet einen statischen Rahmen genauso
wie einen Rahmentyp „Unicast
mit FALB" (unidirektionale Übertragung
mit FACB) mit dem einzigen Unterschied, dass die FCBs 103 und
die Puffer 101 des Rahmens nicht zu den entsprechenden
freien Warteschlangen zurückgeführt werden.
Anschließend
kann der EPC-Chip 202 eine weitere warteschlangenoperation
auslösen,
indem er denselben FCB 103 anweist, den Rahmen noch einmal
zu senden. Der Rahmen kann dann beliebig oft wiederholt gesendet
werden, indem der Wert für
den Typ „statischer
Rahmen" angegeben wird.
Der Typ „statischer
Rahmen" dient dazu
anzugeben, ob das wiederholte Senden eines Rahmens entweder vom
unidirektionalen oder vom Mehrfachsendetyp ist. Beim Mehrfachsenden
wird der Parameter TBUF für
statische Rahmen nicht berücksichtigt,
sodass auch dann keine Puffer gelöscht werden, wenn das Bit TBUF
gesetzt ist.
-
Sobald
der statische Rahmen zum letzten Mal wiederholt gesendet worden
ist, wird er einfach als Typ „unidirektionales
Senden mit FALB" mit
dem Binärwert „00" oder als Typ „Mehrfachsenden" mit dem Binärwert „11" in die Warteschlange
eingestellt. Dann wird der Rahmen entsprechend der Beschreibung
in den vorangehenden Abschnitten gesendet, und die FCBs 103 und
die zugehörigen
Puffer 101 werden zu den entsprechenden freien Warteschlangen
zurückgeführt.
-
6 zeigt
ein Flussdiagramm, welches die Funktionsweise einer bevorzugten
Ausführungsart der
Erfindung beschreibt. Der Prozess beginnt in Block 601,
indem der EPC-Chip 209 den Datenfluss-Chip 202 auffordert,
Rahmen zum EPC-Chip 209 zu senden, und ermittelt im Entscheidungsblock 602,
ob ein Rahmen übertragen
worden ist. Wenn dies nicht der Fall ist, bleibt der Prozess im
Funktionsblock 603 in Wartestellung. Wenn ein Rahmen übertragen
worden ist, fordert der EPC-Chip 209 im Funktionsblock 604 vom
Datenfluss-Chip 202 die Überlassung von „N" freien FCB-Adressen
an. Im Entscheidungsblock 605 wird ermittelt, ob die FCB-Adressen übermittelt
worden sind. Wenn dies nicht der Fall ist, bleibt der Prozess im
Funktionsblock 606 in Wartestellung. Wenn die FCB-Adressen übermittelt
worden sind, fordert der EPC-Chip 209 im Funktionsblock 607 vom
Datenfluss-Chip 202 die Überlassung von „N" Puffern an. Dann
wird im Entscheidungsblock 608 ermittelt, ob die Puffer übermittelt
worden sind. Wenn dies nicht der Fall ist, bleibt der Prozess im
Funktionsblock 609 in Wartestellung. Wenn die Puffer übertragen
worden sind, hängt
der EPC-Chip 209 im Funktionsblock 610 einen oder mehrere
erste neue Puffer an einen ursprünglichen ersten
Puffer 101 an. Anschließend stellt der EPC-Chip 209 im
Funktionsblock 611 jede Instanz mit der FACB-Information
(Rahmenänderungs-Steuerblock)
in die Warteschlange ein. Zum Schluss teilt der EPC-Chip 209 im
Funktionsblock 612 dem Datenfluss-Chip 202 mit,
dass der Zähler
für jedes
gesendete Paket aktualisiert werden muss. Ein analoger Prozess läuft zwischen
dem EPC-Chip 210 und dem Datenfluss-Chip 202 ab.
Der oben beschriebene Prozess gilt sowohl für Dateneingang als auch für Datenausgang. 2 zeigt,
dass die drei Hauptchips EPC-Chip, Datenfluss-Chip und Zeitplanungs-Chip sowohl
für den
Dateneingang als auch für
den Dateneingang verwendet werden; dabei unterscheidet sich lediglich
die Richtung des Datenflusses. Alle Funktionen wie beispielsweise
das Mehrfachsenden sind beim Dateneingang und beim Datenausgang
identisch.