DE60203380T2 - Verfahren und vorrichtung zur mehrfachsendung - Google Patents

Verfahren und vorrichtung zur mehrfachsendung Download PDF

Info

Publication number
DE60203380T2
DE60203380T2 DE60203380T DE60203380T DE60203380T2 DE 60203380 T2 DE60203380 T2 DE 60203380T2 DE 60203380 T DE60203380 T DE 60203380T DE 60203380 T DE60203380 T DE 60203380T DE 60203380 T2 DE60203380 T2 DE 60203380T2
Authority
DE
Germany
Prior art keywords
frame
buffer
queue
der
buffers
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
DE60203380T
Other languages
English (en)
Other versions
DE60203380D1 (de
Inventor
Claude Basso
Louis Jean CALVIGNAC
Marco Winchester HEDDES
Franklin Joseph LOGAN
Jean Fabrice VERPLANKEN
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE60203380D1 publication Critical patent/DE60203380D1/de
Application granted granted Critical
Publication of DE60203380T2 publication Critical patent/DE60203380T2/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
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • 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
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1881Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with schedule organisation, e.g. priority, sequence management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/20Traffic policing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/43Assembling or disassembling of packets, e.g. segmentation and reassembly [SAR]

Description

  • 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.

Claims (10)

  1. Verfahren zur Mehrfachsendung in einem Netzwerkprozessor, welches die folgenden Schritte umfasst: Speichern eines zu übertragenden Rahmens in einer Reihe von Originalpuffern (101), die mittels einer verknüpften Liste miteinander verkettet sind; Zuordnen eines Puffersteuerblocks (102) zu jedem Puffer; Zuordnen eines Originalrahmensteuerblocks (103) zu dem Rahmen; Einstellen des Rahmens in eine Warteschlange, um auf die Übertragung durch einen Netzwerkprozessor zu warten; Zuordnen eines Warteschlangensteuerblocks (104) zur Warteschlange der zu sendenden Rahmen, dadurch gekennzeichnet, dass das Verfahren ferner die folgenden Schritte umfasst: Zuweisen zusätzlicher Puffer und zusätzlicher Rahmensteuerblöcke zu jedem Mehrfachsendeziel und Verknüpfen dieser zusätzlichen Rahmensteuerblöcke mit dem dem Rahmen zugeordneten Originalrahmensteuerblock; Ermitteln mittels eines Mehrfachsendezählers, wann der Rahmen zu jedem der Mehrfachsendeziele gesendet wurde; Zurückgeben der jedem Mehrfachsendeziel zugewiesenen zusätzlichen Puffer und Rahmensteuerblöcke zu den Warteschlangen der freien Puffer und Rahmensteuerblöcke, sobald der Rahmen zu jedem Ziel gesendet wurde; und Zurückgeben der Originalpuffer und der Rahmensteuerblöcke zu den Warteschlangen der freien Puffer und Rahmensteuerblöcke, sobald der Rahmen zu allen Mehrfachsendezielen gesendet wurde.
  2. Verfahren zur Mehrfachsendung nach Anspruch 1, bei welchem der jedem Puffer zugeordnete Puffersteuerblock eine verknüpfte Liste zum Verketten der Puffer zu einem Rahmen bildet und eine Vielzahl von Feldern enthält, darunter einzelner Felder zum Speichern eines Zeigers auf den nächsten Puffer des Rahmens; Speichern der relativen Position des ersten gültigen Datenbytes im nächsten Puffer eines Rahmens; Speichern der relativen Position des letzten gültigen Datenbytes im nächsten Puffer eines Rahmens; und Anzeigen, ob der nächste Puffer des Rahmens wieder zur Warteschlange der freien Puffer zurückgegeben oder zur Fortsetzung der Mehrfachsendung reserviert bleiben soll.
  3. Verfahren zur Mehrfachsendung nach Anspruch 1 oder 2, bei welchem der jedem Rahmen zugeordnete Rahmensteuerblock eine verknüpfte Liste zur Verkettung der Rahmen zu einer Warteschlange bildet und eine Vielzahl von Feldern enthält, einschließlich einzelner Felder zum Speichern eines Zeigers auf den nächsten Rahmen in der Warteschlange; Speichern eines Zählerwertes der Gesamtzahl von Bytes des nächsten Rahmens in der Warteschlange; Speichern der Adresse des ersten Puffers in einem Rahmen; Speichern der Position des ersten gültigen Datenbytes im ersten Puffer eines Rahmens; Speichern der Position des letzten gültigen Datenbytes im ersten Puffer eines Rahmens; und Speichern von Daten zum Format und zum Typ des zu sendenden Rahmens.
  4. Verfahren zur Mehrfachsendung nach einem der vorangehenden Ansprüche, bei welchem der Schritt des Einstellens von Rahmen in eine Warteschlange die folgenden Schritte umfasst: Entnehmen einer freien Pufferadresse vom Anfang der Warteschlange mit freien Puffern; Entnehmen eines freien Rahmensteuerblocks vom Anfang der Warteschlange der freien Rahmensteuerblöcke; Schreiben von Rahmendaten in den Puffer; Schreiben von Steuerdaten, einschließlich der ersten Pufferadresse und der Positionen des ersten und des letzten gültigen Datenbytes im ersten Puffer in den Rahmensteuerblock; Setzen eines Arbeitsregisters mit Bytezählerwerten gleich der Anzahl der in den ersten Puffer geschriebenen Bytes; Wiederholen dieses Prozesses so lange, bis der gesamte Rahmen in die Puffer geschrieben ist; und Anfügen des Rahmens an das Ende einer Eingabewarteschlange, um auf die Weiterleitung zum Netzwerkprozessor zu warten.
  5. Verfahren zur Mehrfachsendung nach einem der vorangehenden Ansprüche, bei welchem der der Warteschlange mit den zu sendenden Rahmen zugeordnete Warteschlangensteuerblock eine Vielzahl von Felder enthält, einschließlich einzelner Felder zum Speichern der Adresse des dem Rahmen am Anfang der Warteschlange zugeordneten Rahmensteuerblocks; Speichern eines Zählerwertes der Gesamtzahl der gültigen Bytes in dem Rahmen am Anfang der Warteschlange; und Speichern der Adresse des dem Rahmen am Ende der Warteschlange zugeordneten Rahmensteuerblocks.
  6. Computerprogramm mit einem Programmcode zur Ausführung der Schritte des Verfahrens nach einem der vorangehenden Ansprüche, wenn dieses Programm in einem Computersystem läuft.
  7. Netzwerkprozessor zur Unterstützung der Mehrfachsendung, welcher Folgendes umfasst: ein Mittel zum Speichern eines zu sendenden Rahmens in einer Reihe von Originalpuffern (101), die durch eine verknüpfte Liste miteinander verkettet sind; ein Mittel zum Zuordnen eines Puffersteuerblocks (102) zu jedem Puffer und zum Zuordnen eines Originalrahmensteuerblocks (103) zu dem Rahmen; ein Mittel zum Einstellen des Rahmens in eine Warteschlange, um auf das Senden zu warten; ein Mittel zum Zuordnen eines Warteschlangensteuerblocks (104) zur Warteschlange der zu sendenden Rahmen, dadurch gekennzeichnet, dass der Netzwerkprozessor ferner Folgendes umfasst: ein Mittel zum Zuweisen zusätzlicher Puffer und zusätzlicher Rahmensteuerblöcke zu jedem Mehrfachsendeziel und zum Verknüpfen dieser zusätzlichen Rahmensteuerblöcke mit dem dem Rahmen zugeordneten Originalrahmensteuerblock; ein Mittel, welches unter Verwendung eines Mehrfachsendezählers ermittelt, wann der Rahmen zu jedem der Mehrfachsendeziele gesendet wurde; und ein Mittel zum Zurückgeben der jedem Mehrfachsendeziel zugewiesenen zusätzlichen Puffer und Rahmensteuerblöcke zu den Warteschlangen der freien Puffer und Rahmensteuerblöcke, sobald der Rahmen zu jedem Ziel gesendet wurde, und zum Zurückgeben der Originalpuffer und Rahmensteuerblöcke zu den Warteschlangen der freien Puffer und Rahmensteuerblöcke, nachdem der Rahmen zu allen Mehrfachsendezielen gesendet wurde.
  8. Netzwerkprozessor nach Anspruch 7, bei welchem der jedem Puffer zugeordnete Puffersteuerblock eine verknüpfte Liste zur Verkettung der Puffer zu einem Rahmen bildet und eine Vielzahl von Feldern enthält, einschließlich einzelner Felder zum Speichern eines Zeigers auf den nächsten Puffer des Rahmens; Speichern der relativen Position des ersten gültigen Datenbytes im nächsten Puffer eines Rahmens; Speichern der relativen Position des letzten gültigen Datenbytes im nächsten Puffer eines Rahmens; und Anzeigen, ob der nächste Puffer des Rahmens wieder zur Warteschlange der freien Puffer zurückgegeben oder zur Fortsetzung der Mehrfachsendung reserviert bleiben soll.
  9. Netzwerkprozessor nach Anspruch 7 oder 8, bei welchem der jedem Rahmen zugeordnete Rahmensteuerblock eine verknüpfte Liste zur Verkettung der Rahmen zu einer Warteschlange bildet und eine Vielzahl von Feldern enthält, einschließlich einzelner Felder zum Speichern eines Zeigers auf den nächsten Rahmen in der Warteschlange; Speichern eines Zählerwertes der Gesamtzahl von Bytes des nächsten Rahmens in der Warteschlange; Speichern der Adresse des ersten Puffers in einem Rahmen; Speichern der Position des ersten gültigen Datenbytes im ersten Puffer eines Rahmens; Speichern der Position des letzten gültigen Datenbytes im ersten Puffer eines Rahmens; Speichern von Daten zum Format und zum Typ des zu sendenden Rahmens.
  10. Netzwerkprozessor nach Anspruch 7, 8 oder 9, bei welchem das Mittel zum Einstellen von Rahmen in eine Warteschlange Folgendes umfasst: ein Mittel zum Entnehmen einer freien Pufferadresse vom Anfang der Warteschlange der freien Puffer; ein Mittel zum Entnehmen eines freien Rahmensteuerblocks vom Anfang der Warteschlange der freien Rahmensteuerblöcke; ein Mittel zum Schreiben von Rahmendaten in den Puffer; ein Mittel zum Schreiben von Steuerdaten, einschließlich der ersten Pufferadresse und der Positionen des ersten und des letzten gültigen Datenbytes im ersten Puffer in den Rahmensteuerblock; ein Mittel zum Setzen eines Zählregisters mit aktiven Bytes gleich der Anzahl der in den ersten Puffer geschriebenen Bytes; ein Mittel zum Anfügen des Rahmens, als Reaktion auf das Schreiben des gesamten Rahmens in die Puffer, an das Ende einer Eingabewarteschlange, um auf die Weiterleitung zum Netzwerkprozessor zu warten.
DE60203380T 2001-04-20 2002-01-28 Verfahren und vorrichtung zur mehrfachsendung Expired - Lifetime DE60203380T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US839079 2001-04-20
US09/839,079 US6836480B2 (en) 2001-04-20 2001-04-20 Data structures for efficient processing of multicast transmissions
PCT/GB2002/000383 WO2002087156A2 (en) 2001-04-20 2002-01-28 Method and device for multicast transmissions

Publications (2)

Publication Number Publication Date
DE60203380D1 DE60203380D1 (de) 2005-04-28
DE60203380T2 true DE60203380T2 (de) 2006-02-02

Family

ID=25278799

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60203380T Expired - Lifetime DE60203380T2 (de) 2001-04-20 2002-01-28 Verfahren und vorrichtung zur mehrfachsendung

Country Status (10)

Country Link
US (1) US6836480B2 (de)
EP (1) EP1380133B1 (de)
JP (1) JP3777161B2 (de)
KR (1) KR100690418B1 (de)
CN (1) CN1219384C (de)
AT (1) ATE291802T1 (de)
AU (1) AU2002225237A1 (de)
DE (1) DE60203380T2 (de)
TW (1) TW573413B (de)
WO (1) WO2002087156A2 (de)

Families Citing this family (102)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6937606B2 (en) * 2001-04-20 2005-08-30 International Business Machines Corporation Data structures for efficient processing of IP fragmentation and reassembly
US7167471B2 (en) * 2001-08-28 2007-01-23 International Business Machines Corporation Network processor with single interface supporting tree search engine and CAM
US7206310B1 (en) * 2001-12-28 2007-04-17 Redback Networks Inc. Method and apparatus for replicating packet data with a network element
US7307986B2 (en) * 2002-02-04 2007-12-11 Intel Corporation State record processing
US7680043B2 (en) * 2002-03-20 2010-03-16 International Business Machines Corporation Network processor having fast flow queue disable process
US7230922B1 (en) 2002-04-05 2007-06-12 Cingular Wireless Ii, Llc Real-time rate control mechanism for multi-rate data transmissions in wireless networks
US7685008B2 (en) * 2004-02-20 2010-03-23 Accenture Global Services Gmbh Account level participation for underwriting components
CA2560334A1 (en) * 2004-04-07 2005-10-20 Axiogenesis Ag Non-invasive, in vitro functional tissue assay systems
US7940764B2 (en) * 2004-08-12 2011-05-10 Intel Corporation Method and system for processing multicast packets
US20060187963A1 (en) * 2005-02-18 2006-08-24 International Business Machines Corporation Method for sharing single data buffer by several packets
US7466715B2 (en) * 2005-03-28 2008-12-16 International Business Machines Corporation Flexible control block format for frame description and management
US7474662B2 (en) * 2005-04-29 2009-01-06 International Business Machines Corporation Systems and methods for rate-limited weighted best effort scheduling
KR100717239B1 (ko) * 2005-06-22 2007-05-11 엔에이치엔(주) 동일한 멀티캐스트 그룹에 속하는 구성원 서버들 간의신뢰성 있는 통신을 제공하기 위한 방법 및 장치
TWI269972B (en) * 2005-10-21 2007-01-01 Ind Tech Res Inst Method for releasing data of storage apparatus
US7945816B1 (en) 2005-11-30 2011-05-17 At&T Intellectual Property Ii, L.P. Comprehensive end-to-end storage area network (SAN) application transport service
US7779016B2 (en) * 2006-09-14 2010-08-17 International Business Machines Corporation Parallel execution of operations for a partitioned binary radix tree on a parallel computer
US8032899B2 (en) 2006-10-26 2011-10-04 International Business Machines Corporation Providing policy-based operating system services in a hypervisor on a computing system
US8713582B2 (en) * 2006-10-26 2014-04-29 International Business Machines Corporation Providing policy-based operating system services in an operating system on a computing system
US8656448B2 (en) * 2006-10-26 2014-02-18 International Business Machines Corporation Providing policy-based application services to an application running on a computing system
US20080273678A1 (en) 2007-05-01 2008-11-06 Igor Balk Systems and methods for phone call management
US7286661B1 (en) 2007-05-01 2007-10-23 Unison Technologies Llc Systems and methods for scalable hunt-group management
US20080285588A1 (en) 2007-05-16 2008-11-20 Unison Technologies Llc Systems and methods for providing unified collaboration systems with combined communication log
US20080285736A1 (en) 2007-05-16 2008-11-20 Unison Technolgies Llc Systems and methods for providing unified collaboration systems with conditional communication handling
US8296430B2 (en) * 2007-06-18 2012-10-23 International Business Machines Corporation Administering an epoch initiated for remote memory access
US7958274B2 (en) * 2007-06-18 2011-06-07 International Business Machines Corporation Heuristic status polling
US9065839B2 (en) 2007-10-02 2015-06-23 International Business Machines Corporation Minimally buffered data transfers between nodes in a data communications network
US7984450B2 (en) * 2007-11-28 2011-07-19 International Business Machines Corporation Dispatching packets on a global combining network of a parallel computer
US8127235B2 (en) 2007-11-30 2012-02-28 International Business Machines Corporation Automatic increasing of capacity of a virtual space in a virtual world
CN101453485B (zh) * 2007-12-07 2011-12-07 英业达股份有限公司 使用多播数据流进行数据传输及写入的方法
US20090164919A1 (en) 2007-12-24 2009-06-25 Cary Lee Bates Generating data for managing encounters in a virtual world environment
CN101489184B (zh) * 2008-01-14 2010-12-08 华为技术有限公司 区分小区内子帧状态的方法、装置以及系统
CN101222344B (zh) * 2008-01-23 2010-12-29 中兴通讯股份有限公司 文件组播传输方法和系统
JP5159375B2 (ja) 2008-03-07 2013-03-06 インターナショナル・ビジネス・マシーンズ・コーポレーション メタバースにおけるオブジェクトの真贋判断システム、方法及びそのコンピュータ・プログラム
US7895260B2 (en) * 2008-07-28 2011-02-22 International Business Machines Corporation Processing data access requests among a plurality of compute nodes
KR101326983B1 (ko) * 2009-12-21 2014-01-15 한국전자통신연구원 트래픽 제어 장치 및 방법
US9205328B2 (en) 2010-02-18 2015-12-08 Activision Publishing, Inc. Videogame system and method that enables characters to earn virtual fans by completing secondary objectives
US8365186B2 (en) 2010-04-14 2013-01-29 International Business Machines Corporation Runtime optimization of an application executing on a parallel computer
US9682324B2 (en) 2010-05-12 2017-06-20 Activision Publishing, Inc. System and method for enabling players to participate in asynchronous, competitive challenges
US8504730B2 (en) 2010-07-30 2013-08-06 International Business Machines Corporation Administering connection identifiers for collective operations in a parallel computer
CN102377576B (zh) * 2010-08-06 2014-09-17 高通创锐讯通讯科技(上海)有限公司 多播的实现方法
US8565120B2 (en) 2011-01-05 2013-10-22 International Business Machines Corporation Locality mapping in a distributed processing system
US9317637B2 (en) 2011-01-14 2016-04-19 International Business Machines Corporation Distributed hardware device simulation
CN102281192B (zh) * 2011-07-19 2017-09-29 中兴通讯股份有限公司 交换网络芯片的信元处理方法及装置
US8689228B2 (en) 2011-07-19 2014-04-01 International Business Machines Corporation Identifying data communications algorithms of all other tasks in a single collective operation in a distributed processing system
US9250948B2 (en) 2011-09-13 2016-02-02 International Business Machines Corporation Establishing a group of endpoints in a parallel computer
US10137376B2 (en) 2012-12-31 2018-11-27 Activision Publishing, Inc. System and method for creating and streaming augmented game sessions
US10322351B2 (en) 2014-07-03 2019-06-18 Activision Publishing, Inc. Matchmaking system and method for multiplayer video games
US11351466B2 (en) 2014-12-05 2022-06-07 Activision Publishing, Ing. System and method for customizing a replay of one or more game events in a video game
US10118099B2 (en) 2014-12-16 2018-11-06 Activision Publishing, Inc. System and method for transparently styling non-player characters in a multiplayer video game
US10486068B2 (en) 2015-05-14 2019-11-26 Activision Publishing, Inc. System and method for providing dynamically variable maps in a video game
US10286314B2 (en) 2015-05-14 2019-05-14 Activision Publishing, Inc. System and method for providing continuous gameplay in a multiplayer video game through an unbounded gameplay session
US10315113B2 (en) 2015-05-14 2019-06-11 Activision Publishing, Inc. System and method for simulating gameplay of nonplayer characters distributed across networked end user devices
US10213682B2 (en) 2015-06-15 2019-02-26 Activision Publishing, Inc. System and method for uniquely identifying physical trading cards and incorporating trading card game items in a video game
US10471348B2 (en) 2015-07-24 2019-11-12 Activision Publishing, Inc. System and method for creating and sharing customized video game weapon configurations in multiplayer video games via one or more social networks
US10099140B2 (en) 2015-10-08 2018-10-16 Activision Publishing, Inc. System and method for generating personalized messaging campaigns for video game players
US11185784B2 (en) 2015-10-08 2021-11-30 Activision Publishing, Inc. System and method for generating personalized messaging campaigns for video game players
US10232272B2 (en) 2015-10-21 2019-03-19 Activision Publishing, Inc. System and method for replaying video game streams
US10245509B2 (en) 2015-10-21 2019-04-02 Activision Publishing, Inc. System and method of inferring user interest in different aspects of video game streams
US10376781B2 (en) 2015-10-21 2019-08-13 Activision Publishing, Inc. System and method of generating and distributing video game streams
US10694352B2 (en) 2015-10-28 2020-06-23 Activision Publishing, Inc. System and method of using physical objects to control software access
CN105471837A (zh) * 2015-11-09 2016-04-06 北京捷思锐科技股份有限公司 信息处理方法及装置
US10300390B2 (en) 2016-04-01 2019-05-28 Activision Publishing, Inc. System and method of automatically annotating gameplay of a video game based on triggering events
US10226701B2 (en) 2016-04-29 2019-03-12 Activision Publishing, Inc. System and method for identifying spawn locations in a video game
US10179289B2 (en) 2016-06-21 2019-01-15 Activision Publishing, Inc. System and method for reading graphically-encoded identifiers from physical trading cards through image-based template matching
US10573065B2 (en) 2016-07-29 2020-02-25 Activision Publishing, Inc. Systems and methods for automating the personalization of blendshape rigs based on performance capture data
US10463964B2 (en) 2016-11-17 2019-11-05 Activision Publishing, Inc. Systems and methods for the real-time generation of in-game, locally accessible heatmaps
US10709981B2 (en) 2016-11-17 2020-07-14 Activision Publishing, Inc. Systems and methods for the real-time generation of in-game, locally accessible barrier-aware heatmaps
US10500498B2 (en) 2016-11-29 2019-12-10 Activision Publishing, Inc. System and method for optimizing virtual games
US10055880B2 (en) 2016-12-06 2018-08-21 Activision Publishing, Inc. Methods and systems to modify a two dimensional facial image to increase dimensional depth and generate a facial image that appears three dimensional
US10861079B2 (en) 2017-02-23 2020-12-08 Activision Publishing, Inc. Flexible online pre-ordering system for media
CN108989840B (zh) * 2017-06-02 2020-10-16 上海数字电视国家工程研究中心有限公司 适用于高速运动接收的数据帧的设计方法和传输系统
US10818060B2 (en) 2017-09-05 2020-10-27 Activision Publishing, Inc. Systems and methods for guiding motion capture actors using a motion reference system
US10974150B2 (en) 2017-09-27 2021-04-13 Activision Publishing, Inc. Methods and systems for improved content customization in multiplayer gaming environments
US10561945B2 (en) 2017-09-27 2020-02-18 Activision Publishing, Inc. Methods and systems for incentivizing team cooperation in multiplayer gaming environments
US11040286B2 (en) 2017-09-27 2021-06-22 Activision Publishing, Inc. Methods and systems for improved content generation in multiplayer gaming environments
US10463971B2 (en) 2017-12-06 2019-11-05 Activision Publishing, Inc. System and method for validating video gaming data
US10537809B2 (en) 2017-12-06 2020-01-21 Activision Publishing, Inc. System and method for validating video gaming data
US10981051B2 (en) 2017-12-19 2021-04-20 Activision Publishing, Inc. Synchronized, fully programmable game controllers
US10596471B2 (en) 2017-12-22 2020-03-24 Activision Publishing, Inc. Systems and methods for enabling audience participation in multi-player video game play sessions
US11278813B2 (en) 2017-12-22 2022-03-22 Activision Publishing, Inc. Systems and methods for enabling audience participation in bonus game play sessions
US10765948B2 (en) 2017-12-22 2020-09-08 Activision Publishing, Inc. Video game content aggregation, normalization, and publication systems and methods
US11192028B2 (en) 2018-11-19 2021-12-07 Activision Publishing, Inc. Systems and methods for the real-time customization of video game content based on player data
US11263670B2 (en) 2018-11-19 2022-03-01 Activision Publishing, Inc. Systems and methods for dynamically modifying video game content based on non-video gaming content being concurrently experienced by a user
US20200196011A1 (en) 2018-12-15 2020-06-18 Activision Publishing, Inc. Systems and Methods for Receiving Digital Media and Classifying, Labeling and Searching Offensive Content Within Digital Media
US11679330B2 (en) 2018-12-18 2023-06-20 Activision Publishing, Inc. Systems and methods for generating improved non-player characters
US11305191B2 (en) 2018-12-20 2022-04-19 Activision Publishing, Inc. Systems and methods for controlling camera perspectives, movements, and displays of video game gameplay
US11344808B2 (en) 2019-06-28 2022-05-31 Activision Publishing, Inc. Systems and methods for dynamically generating and modulating music based on gaming events, player profiles and/or player reactions
US11097193B2 (en) 2019-09-11 2021-08-24 Activision Publishing, Inc. Methods and systems for increasing player engagement in multiplayer gaming environments
US11423605B2 (en) 2019-11-01 2022-08-23 Activision Publishing, Inc. Systems and methods for remastering a game space while maintaining the underlying game simulation
US11712627B2 (en) 2019-11-08 2023-08-01 Activision Publishing, Inc. System and method for providing conditional access to virtual gaming items
US11537209B2 (en) 2019-12-17 2022-12-27 Activision Publishing, Inc. Systems and methods for guiding actors using a motion capture reference system
US11420122B2 (en) 2019-12-23 2022-08-23 Activision Publishing, Inc. Systems and methods for controlling camera perspectives, movements, and displays of video game gameplay
US11563774B2 (en) 2019-12-27 2023-01-24 Activision Publishing, Inc. Systems and methods for tracking and identifying phishing website authors
US11524234B2 (en) 2020-08-18 2022-12-13 Activision Publishing, Inc. Multiplayer video games with virtual characters having dynamically modified fields of view
US11351459B2 (en) 2020-08-18 2022-06-07 Activision Publishing, Inc. Multiplayer video games with virtual characters having dynamically generated attribute profiles unconstrained by predefined discrete values
US11833423B2 (en) 2020-09-29 2023-12-05 Activision Publishing, Inc. Methods and systems for generating level of detail visual assets in a video game
US11724188B2 (en) 2020-09-29 2023-08-15 Activision Publishing, Inc. Methods and systems for selecting a level of detail visual asset during the execution of a video game
US11717753B2 (en) 2020-09-29 2023-08-08 Activision Publishing, Inc. Methods and systems for generating modified level of detail visual assets in a video game
US11439904B2 (en) 2020-11-11 2022-09-13 Activision Publishing, Inc. Systems and methods for imparting dynamic and realistic movement to player-controlled avatars in video games
US11794107B2 (en) 2020-12-30 2023-10-24 Activision Publishing, Inc. Systems and methods for improved collision detection in video games
US11853439B2 (en) 2020-12-30 2023-12-26 Activision Publishing, Inc. Distributed data storage system providing enhanced security
CN115378887B (zh) * 2022-07-05 2024-01-23 西安电子科技大学 一种时间触发以太网交换机tt业务交换装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0365731B1 (de) * 1988-10-28 1994-07-27 International Business Machines Corporation Verfahren und Vorrichtung zur Nachrichtenübertragung zwischen Quellen- und Zielanwender durch einen anteilig genutzten Speicher
EP0622922B1 (de) * 1993-04-29 2000-11-29 International Business Machines Corporation Verfahren und Gerät für Mehrfachübertragung von Daten in einem Kommunikationssystem
JP3486946B2 (ja) 1994-03-16 2004-01-13 富士通株式会社 マルチキャスト通信中継装置
US5684797A (en) * 1995-04-05 1997-11-04 International Business Machines Corporation ATM cell multicasting method and apparatus
US5925099A (en) * 1995-06-15 1999-07-20 Intel Corporation Method and apparatus for transporting messages between processors in a multiple processor system
JP2842522B2 (ja) * 1995-12-06 1999-01-06 日本電気株式会社 Atmスイッチ及びその制御方法
US5689506A (en) * 1996-01-16 1997-11-18 Lucent Technologies Inc. Multicast routing in multistage networks
US5898687A (en) * 1996-07-24 1999-04-27 Cisco Systems, Inc. Arbitration mechanism for a multicast logic engine of a switching fabric circuit
US6094435A (en) * 1997-06-30 2000-07-25 Sun Microsystems, Inc. System and method for a quality of service in a multi-layer network element
US6111880A (en) * 1997-12-05 2000-08-29 Whittaker Corporation Hybrid packet/cell switching, linking, and control system and methodology for sharing a common internal cell format

Also Published As

Publication number Publication date
EP1380133B1 (de) 2005-03-23
CN1498480A (zh) 2004-05-19
JP2004524781A (ja) 2004-08-12
EP1380133A2 (de) 2004-01-14
JP3777161B2 (ja) 2006-05-24
KR20040002922A (ko) 2004-01-07
WO2002087156A2 (en) 2002-10-31
CN1219384C (zh) 2005-09-14
AU2002225237A1 (en) 2002-11-05
WO2002087156A3 (en) 2002-12-19
KR100690418B1 (ko) 2007-03-09
DE60203380D1 (de) 2005-04-28
US20020154634A1 (en) 2002-10-24
ATE291802T1 (de) 2005-04-15
TW573413B (en) 2004-01-21
US6836480B2 (en) 2004-12-28

Similar Documents

Publication Publication Date Title
DE60203380T2 (de) Verfahren und vorrichtung zur mehrfachsendung
DE60202136T2 (de) Cache-eintrag-auswahlverfahren und -vorrichtung
DE69823483T2 (de) Mehrfachkopiewarteschlangestruktur mit einem suchbaren cachespeicherbereich
DE69733703T2 (de) Puffer von Mehrfachsendezellen in Vermittlungsnetzen
DE69433293T2 (de) Netzwerkübertragungsverfahren für Systeme mit virtuellem Speicher
DE60301029T2 (de) Replikationsprozess für IP-Mehrfachsendung und Vorrichtung hierfür
DE602005003142T2 (de) Vorrichtung und verfahren zur unterstützung von verbindungsherstellung in einem offload der netzwerkprotokollverarbeitung
DE602005005219T2 (de) Paketzusammenführung
DE60305035T2 (de) Anpassen des längsten präfix unter verwendung von baumartigen "bitmap" datenstrukturen
DE10196447B4 (de) Verfahren und Vorrichtung zum Verringern der Erschöpfung des Pools in einer Vermittlung mit gemeinsam genutztem Speicher
DE69819303T2 (de) Verfahren und vorrichtung zur übertragung von mehrfachkopien durch vervielfältigung von datenidentifikatoren
DE112020002484T5 (de) System und verfahren zur erleichterung der feinkörnigen flusssteuerung in einer netzwerkschnittstellensteuerung (nic)
DE69726995T2 (de) Mehrfachsende-Leitweglenkung in mehrstufigen Netzen
DE69817328T2 (de) Warteschlangenstruktur und -verfahren zur prioritätszuteilung von rahmen in einem netzwerkkoppelfeld
DE60031516T2 (de) Verfahren und gerät für die verwaltung eines netzflusses in einer hochleistungs-netzschnittstelle
DE69823337T2 (de) Vorrichtung und verfahren zur rückgewinnung von puffern
DE60021846T2 (de) Leitweglenkungsanordnung
DE69737361T2 (de) Schnelle vermittlungsvorrichtung
DE60302045T2 (de) Verfahren und System zur geordneten dynamischen Verteilung von Paketströmen zwischen Netzwerkprozessoren
DE60222656T2 (de) Vorrichtung und verfahren für effizientes multicasting von datenpaketen
DE19531749A1 (de) Verkehrsgestaltungseinrichtung und Paket-Kommunikationsgerät
DE60031596T2 (de) Zeitmultiplex-Vermittlungssystem (TDM) mit sehr breitem Speicher
DE69937185T2 (de) Verfahren und vorrichtung zum paketbeförderungsnachschlagen mit einer reduzierten anzahl von speicherzugriffen
DE102005046702B4 (de) Verfahren und Prozessor zum Klassifizieren von Datenpaketeinheiten
DE60015186T2 (de) Verfahren und system für rahmen- und protokollklassifikation

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8320 Willingness to grant licences declared (paragraph 23)
8328 Change in the person/name/address of the agent

Representative=s name: DUSCHER, R., DIPL.-PHYS. DR.RER.NAT., PAT.-ANW., 7