DE10052904A1 - Warteschlangenbildungsverfahren zur Weiterleitung von Paketen in Folge - Google Patents

Warteschlangenbildungsverfahren zur Weiterleitung von Paketen in Folge

Info

Publication number
DE10052904A1
DE10052904A1 DE10052904A DE10052904A DE10052904A1 DE 10052904 A1 DE10052904 A1 DE 10052904A1 DE 10052904 A DE10052904 A DE 10052904A DE 10052904 A DE10052904 A DE 10052904A DE 10052904 A1 DE10052904 A1 DE 10052904A1
Authority
DE
Germany
Prior art keywords
packet
fifo
queue
field
port
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.)
Granted
Application number
DE10052904A
Other languages
English (en)
Other versions
DE10052904B4 (de
Inventor
Jen-Kai Chen
Yu-Ju Lin
Jiann-Hwa Liou
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.)
Via Technologies Inc
Original Assignee
Via Technologies Inc
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 Via Technologies Inc filed Critical Via Technologies Inc
Publication of DE10052904A1 publication Critical patent/DE10052904A1/de
Application granted granted Critical
Publication of DE10052904B4 publication Critical patent/DE10052904B4/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3027Output queuing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/20Support for services
    • H04L49/201Multicast operation; Broadcast operation

Landscapes

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

Abstract

Die Erfindung betrifft ein Ausgangswarteschlangenbildungsverfahren zur sequentiellen Weiterleitung der Pakete in einem Switch-Netzwerk. Jeder Port ist einer Portausgangswarteschlange zugeordnet, und eine globale Ausgangswarteschlange wird von sämtlichen Portausgangswarteschlangen gemeinsam genutzt. Ein FIFO-Block (FIFO: First In First Out) ist jeder Portausgangswarteschlange und der globalen Ausgangswarteschlange zugewiesen. Der FIFO-Block umfaßt eine Anzahl von FIFO-Knoten. Auf der Grundlage des Typs und der Zielports des empfangenen Pakets werden die Felder des zugeordneten FIFO-Knotens in der Portausgangswarteschlange und der globalen Ausgangswarteschlange gesetzt. Die Pakete werden auf der Grundlage der zugeordneten Felder gesendet bzw. übersprungen.

Description

Die vorliegende Erfindung betrifft generell das Ausgangswarte­ schlangenbildungs-Verfahren zur Weiterleitung von Paketen in Folge, und insbesondere das Ausgangswarteschlangenbildungs- Verfahren zur Weiterleitung von Paketen in Folge in einem Ethernet-Switch-Netzwerk.
Die vorliegende Anmeldung enthält durch Verweis die taiwanesi­ sche Anmeldung mit der laufenden Eingangsnummer 88120840, ein­ gereicht am 30.11.1999.
Ein generelles Ethernet-Switch-Netzwerk kann Hunderte von Ports enthalten, und die Ports können Ethernet-Ports oder Zen­ tralverarbeitungseinheit-Ports (CPU-Ports) sein.
In dem Ethernet-Switch-Netzwerk werden Daten entweder von dem Ethernet-Port zu dem Ethernet-Port oder von dem CPU-Port zu dem Ethernet-Port weitergeleitet. Während des Vorgangs einer Datenweiterleitung werden Daten in Form von Paketen weiterge­ leitet. Das Paket stellt individuelle Informationen dar, wel­ che Adresse, Steuersignale, Datensignale etc. enthalten. Das Paket wird als eine Einheit im Kommunikationsnetzwerk betrach­ tet, das heißt, die Ports des Ethernet-Switch-Netzwerks senden Daten in Paketen zueinander. Dementsprechend wird das Paket zu Zielports des Pakets weitergeleitet.
Auf der Grundlage der Anzahl von Zielports, welche dem Paket zugeordnet sind, existieren drei Grundtypen von Paketen: (1) das Unicast-Paket; (2) das Multicast-Paket; und (3) das Broadcast-Paket. Im Falle des Unicast-Pakets existiert ledig­ lich ein Zielport. Im Falle des Multicast-Pakets existieren mehr als ein Zielport. Im Falle des Broadcast-Pakets werden sämtliche Ports des Ethernet-Switch-Netzwerks als Zielports verwendet. Beispielsweise weist bei einem Switch-Netzwerk von 17 Ports ein Broadcast-Paket 16 Zielports auf, während ein Multicast-Paket 2 bis 15 Zielports aufweist, abhängig von ver­ schiedenen Situationen.
In dem Ethernet-Switch-Netzwerk existieren zwei Steuermodule, die Eingangssteuerung und die Ausgangssteuerung. Die Eingang­ steuerung wird beim Verarbeiten eines Paketeingangs verwendet, während die Ausgangssteuerung beim Verarbeiten eines Paketaus­ gangs verwendet wird. Jeder Port weist seine zugeordnete Ein­ gangssteuerung und Ausgangssteuerung auf. Die Eingangssteue­ rung und die Ausgangssteuerung sind voneinander unabhängig.
Wenn das Paket zu dessen Zielport weitergeleitet wird, so wird das Paket in der Portausgangswarteschlange des Zielports zuge­ wiesen. Tatsächlich wird die Portausgangswarteschlange gebil­ det durch Verknüpfen der Paketpuffer, wodurch das Paket vor­ übergehend im Paketpuffer gespeichert wird. Das im Paketpuffer gespeicherte Paket umfaßt höchstens 1518 Bytes. Ein Verknüp­ fungsknoten, welcher bei der Paketweiterleitungsprozedur ver­ wendet wird, wird zum Speichern anderer Daten, wie beispiels­ weise der Paketgröße, der Zielport-Bitmaske und des Zeigers, verwendet.
Die Paketgröße enthält Informationen, üblicherweise in Bytes, bezüglich der Größe des Pakets, wohingegen die Zielport- Bitmaske Informationen bezüglich des Zielports des Pakets ent­ hält. Beispielsweise umfaßt im Falle eines Switch-Netzwerks mit 16 Ethernet-Ports und einem CPU-Port die Zielport-Bitmaske 17 Bits. Jedes Bit in der Zielport-Bitmaske gehört zu einem Port. Wenn das Bit in der Zielport-Bitmaske 1 ist, so bedeutet dies, daß der Port, welcher dem Bit zugeordnet ist, der Ziel­ port ist. Anders ausgedrückt, hat das Paket, wenn in der Zielport-Bitmaske 5 Bits vorhanden sind, welche 1 sind, 5 Ziel­ ports.
Der Zeiger wird verwendet zum Zeigen auf den nächsten zu ver­ wendenden Verknüpfungsknoten. Das heißt, die Verknüpfung zwi­ schen den Verknüpfungsknoten wird durch den Zeiger erreicht.
Die Eingangssteuerung zur Verarbeitung des Paketeingangs des Ports umfaßt die folgenden Schritte:
  • 1. Erhalten der Zielport-Bitmaske durch ein Durchsuchen von Tabellen;
  • 2. Zuweisen eines freien Paketpuffers zum Speichern des Ein­ gangspakets; und
  • 3. Warteschlangeneinreihung des Eingangspakets in die Portausgangswarteschlange des Ports.
Die Ausgangssteuerung zur Verarbeitung des Paketausgangs des Ports umfaßt die folgenden Schritte:
  • 1. Warteschlangenherausnahme eines Ausgangspakets aus der Portausgangswarteschlange;
  • 2. Senden des Ausgangspakets; und
  • 3. Freigeben des Paketpuffers des Ausgangspakets.
Bei einem Switch-Netzwerk mit einer Struktur mit gemeinsam ge­ nutzten Speicher werden sämtliche freien Paketpuffer zu Beginn in einer freien Liste zugewiesen.
Es sei angenommen, daß 10 Pakete weitergeleitet werden sollen. Die 10 Pakete sind gemäß eines Merkmals, wie etwa der Zeitfol­ ge, von 1 bis 10 numeriert. Für ein Port müssen die zu empfan­ genden Pakete 1, 5, 8 und 9 sein. Wenn die zum Pakete in einer falschem Reihenfolge, wie etwa 1, 8, 5 und 9, zum Zielport weitergeleitet werden, so tritt ein Reihenfolgefehler bzw. ein Datenfehler im Port auf.
Daher sollte ein geeignetes Verfahren beim Weiterleiten der Pakete in Folge zum Zielport angewandt werden. Beispielsweise ist das FIFO Verfahren (FIFO: First In First Out) eines der geeigneten Verfahren, welche beim Weiterleiten der Pakete in Folge verwendet werden.
Bei einem Switch-Netzwerk, welches zum Weiterleiten des Pakets in Folge geeignet ist, umfaßt die Eingangssteuerung:
  • 1. Erhalten der Zielport-Bitmaske durch ein Durchsuchen von Tabellen:
  • 2. Zuweisen eines freien Paketpuffers zum Speichern des Ein­ gangspakets; und
  • 3. Warteschlangeneinreihung des Eingangspakets in die Aus­ gangswarteschlange mit der kleinsten Portkennzahl gemäß der Zielport-Bitmaske.
Bei einem Switch-Netzwerk, welche zum Weiterleiten des Pakets in Folge geeignet ist, umfaßt die Ausgangssteuerung:
  • 1. Warteschlangenherausnahme eines Ausgangspakets aus der zu­ geordneten Portausgangswarteschlange;
  • 2. Senden des Ausgangspakets;
  • 3. Rücksetzen (bzw. Löschen) des zugeordneten Bits der Ziel­ port-Bitmaske und
  • 4. wenn die Bits der Zielport-Bitmaske alle Null sind, dann erfolgt eine Freigabe des Paketpuffers des Ausgangspakets in die freie Liste; andernfalls erfolgt eine Warteschlangenein­ reihung des Ausgangspakets in die kleinste Portkennzahl gemäß der Zielport-Bitmaske.
Jedoch weist das oben erwähnte herkömmliche Verfahren den gro­ ßen Nachteil auf, daß ein Weiterleiten der Pakete in Folge ei­ ne große Zeitspanne erfordert. Daher existiert ein weiteres herkömmliches Verfahren, welches eine kürzere Zeitspanne zur Weiterleitung der Pakete in Folge benötigt.
Das zweite herkömmliche Verfahren wird als "Verknüpfungskno­ ten-Verdoppelungsverfahren" bezeichnet. Bei dem zweiten her­ kömmlichen Verfahren ist der Verknüpfungsknoten in zwei Typen untergliedert: den Unicast-Verknüpfungsknoten und den Multi­ cast-Verknüpfungsknoten. In der folgenden Beschreibung umfaßt der Verknüpfungsknoten 64 Bits. Fig. 1A und 1B stellen je­ weils die Strukturen des Unicast-Verknüpfungsknoten und des Multicast-Verknüpfungsknoten bei dem zweiten herkömmlichen Verfahren dar.
Wie in Fig. 1A dargestellt, umfaßt der Unicast-Verknüpfungs­ knoten drei Felder: ein Zeigerfeld, ein Zielport-Bitmasken- Feld und ein "Weitere Daten"-Feld. Das Zeigerfeld reicht von Bit 0 bis Bit 18. Das Zielport-Bitmasken-Feld reicht von Bit 19 bis Bit 35. Das "Weitere Daten"-Feld reicht von Bit 36 bis Bit 63. In ähnlicher Weise umfaßt der Multicast-Verknüpfungs­ knoten, wie in Fig. 1B dargestellt, ein erstes Zeigerfeld, ein zweites Zeigerfeld und ein "Weitere Daten"-Feld. Das erste Zeigerfeld reicht von Bit 1 bis Bit 18. Das zweite Zeigerfeld reicht von Bit 19 bis Bit 37. Das "Weitere Daten"-Feld reicht von Bit 38 bis Bit 63.
Ein Unicast-Verknüpfungsknoten von 64 Bits ist eins zu eins einem Paketpuffer von 1,5 Kilobyte zugeordnet. Der Unicast- Verknüpfungsknoten wird statisch zum Paketpuffer geleitet. Es sei angenommen, daß sämtliche Unicast-Verknüpfungsknoten auf­ einander folgend numeriert sind, ebenso wie Multicast-Verknüp­ fungsknoten und Paketpuffer. Das heißt, der j-te Unicast- Verknüpfungsknoten ist dem j-ten Paketpuffer statisch zugeord­ net. Hingegen ist der Multicast-Verknüpfungsknoten dem Paket­ puffer dynamisch zugeordnet.
Wenn der Paketpuffer dem Unicast-Verknüpfungsknoten zugeordnet ist, so wird der Paketpuffer zum Speichern des Unicast-Pakets verwendet. In ähnlicher Weise wird, wenn der Paketpuffer dem Multicast-Verknüpfungsknoten zugeordnet ist, der Paketpuffer zum Speichern des Multicast-Pakets oder des Broadcast-Pakets verwendet.
Bei dem herkömmlichen Verfahren werden, wenn ein Unicast-Paket weitergeleitet wird, ein Paketpuffer und ein Unicast-Verknüp­ fungsknoten verwendet. Es sei angenommen, das ein Multicast- Paket k Zielports aufweist. Wenn ein Multicast-Paket weiterge­ leitet wird, so werden ein Paketpuffer, ein Unicast- Verknüpfungsknoten und k Multicast-Verknüpfungsknoten verwen­ det.
Die Art und Weise der Weiterleitung eines Broadcast-Pakets ist ähnlich derjenigen der Weiterleitung eines Multicast-Pakets bei diesem herkömmlichen Verfahren. Bei einem Switch-Netzwerk mit N Ports werden ein Paketpuffer, ein Unicast-Verknüpfungsknoten und N - 1 Multicast-Verknüpfungsknoten bei der Weiterlei­ tung eines Broadcast-Pakets verwendet.
Wenn ein Multicast-Paket weitergeleitet wird, so umfaßt die Eingangssteuerung die folgenden Schritte:
  • 1. Erhalten der Zielport-Bitmaske durch ein Durchsuchen von Tabellen;
  • 2. Zuweisen eines Paketpuffers in der freien Liste zum Spei­ chern des Multicast-Pakets
  • 3. Setzen der Zielport-Bitmaske des Unicast-Verknüpfungs­ knoten, wobei die Zielport-Bitmaske zu den Zielports des Mul­ ticast-Pakets geleitet wird;
  • 4. Zuweisen von k Multicast-Verknüpfungsknoten in der freien Liste, wobei eine dynamische Zuordnung davon zu dem Paketpuf­ fer existiert; und
  • 5. Warteschlangeneinreihung der k Multicast-Verknüpfungs­ knoten in die jeweilige Ausgangswarteschlange der k Zielports.
Wenn ein Unicast-Paket weitergeleitet wird, so umfaßt die Ein­ gangssteuerung:
  • 1. Erhalten der Zielport-Bitmaske durch ein Durchsuchen von Tabellen;
  • 2. Zuweisen eines Paketpuffers in der freien Liste zum Spei­ chern des Unicast-Pakets;
  • 3. Zuweisen eines dem Paketpuffer in Schritt (2) zugeordneten Unicast-Verknüpfungsknotens; und
  • 4. Warteschlangeneinreihung des Unicast-Verknüpfungsknotens in die Ausgangswarteschlange des Zielports.
Wenn ein Ausgangspaket aus der Ausgangswarteschlange freigege­ ben wird, so umfaßt die Ausgangssteuerung folgende Schritte:
  • 1. Warteschlangenherausnahme eines Ausgangspakets aus der Ausgangswarteschlange;
  • 2. Senden des Ausgangspakets;
  • 3. wenn der Verknüpfungsknoten ein Unicast-Verknüpfungsknoten ist, so erfolgt ein Freigeben des dem Ausgangspaket zugeordne­ ten Paketpuffers in die freie Liste
  • 4. wenn der Verknüpfungsknoten ein Multicast-Verknüpfungs­ knoten ist und die Zielport-Bitmaske des zugeordneten Unicast- Verknüpfungsknotens lediglich ein Bit von 1 aufweist, so er­ folgt eine Freigabe des Multicast-Verknüpfungsknotens und des Paketpuffers in die freie Liste; und
  • 5. wenn der Verknüpfungsknoten ein Multicast-Verknüpfungs­ knoten ist, und die Zielport-Bitmaske des zugeordneten Uni­ cast-Verknüpfungsknotens zwei oder mehr Bits von 1 aufweist, so erfolgen ein Löschen des zugeordneten Bits in der Zielport- Bitmaske des Unicast-Verknüpfungsknotens und ein Freigeben des Multicast-Verknüpfungsknotens.
Bei dem herkömmlichen Verfahren wird, wenn das Multicast-Paket bereits zu einem Zielport weitergeleitet wurde, das zugeordne­ te Bit in der Zielport-Bitmaske gelöscht (bzw. rückgesetzt) das heißt, es wird auf 0 gesetzt. Daher stellt die Anzahl von Bits, welche 1 sind, die Anzahl von Zielports dar, zu welchen das Multicast-Paket noch nicht weitergeleitet wurde.
Daher stellt in dem Schritt (4) der Ausgangssteuerung, wenn die Zielport-Bitmaske des Unicast-Verknüpfungsknotens ledig­ lich ein Bit aufweist, welches 1 ist, dies dar, daß das Multi­ cast-Paket bereits lediglich einen weiterzuleitenden Zielport übrigläßt. Anschließend können der Paketpuffer und der Uni­ cast-Verknüpfungsknoten in die freie Liste freigegeben werden.
Wie oben erwähnt, umfaßt der Unicast-Verknüpfungsknoten den Zeiger, die Zielport-Bitmaske und weitere Daten. Wenn der Uni­ cast-Verknüpfungsknoten beim Weiterleiten des Unicast-Pakets verwendet wird, so zeigt der Zeiger auf das nächste Unicast- Paket des Ports. Wenn der Unicast-Verknüpfungsknoten beim Wei­ terleiten des Multicast-Pakets verwendet wird, so wird die Zielport-Bitmaske des Unicast-Verknüpfungsknotens zu den Ziel­ ports des Multicast-Pakets geleitet. Wenn das Multicast-Paket zum Zielport geleitet wird, und das Multicast-Paket aus der Warteschlange herauszunehmen ist, so wird das Bit in der Ziel­ port-Bitmaske, welches dem Zielport zugeordnet ist, gelöscht.
Der Multicast-Verknüpfungsknoten von Fig. 1B umfaßt einen er­ sten Zeiger, einen zweiten Zeiger und weitere Daten. Der erste Zeiger wird verwendet, um auf den nächsten Verknüpfungsknoten der Ausgangsschlange zu zeigen. Der zweite Zeiger wird verwen­ det, um auf den zugeordneten Unicast-Verknüpfungsknoten zu zeigen.
Generell steht die Leistung des Ausgangswarteschlangenbil­ dungsverfahrens in Zusammenhang mit den Zuweisungszweiten, Freigabezeiten, Warteschlangeneinreihungszeiten und den Warte­ schlangenherausnahmezeiten. Tabelle 1 zeigt die Gesamtoperationszeiten des herkömmlichen Verfahrens bei einer Weiterleitung des Multicast-Pakets mit k Zielports.
Tabelle 1
Der Punkt "Variation" stellt die Variation bezüglich Bits in der Zielport-Bitmaske dar. Der Begriff "Lesen" stellt den Le­ sevorgang dar, welcher an den zugeordneten Bits ausgeführt wird, das heißt, daß k Schritte durchgeführt werden müssen, um den Lesevorgang an den zugeordneten Bits abzuschließen, in ähnlicher Weise stellen die Begriffe "Schreiben" bzw. "Lö­ schen" den Schreibvorgang dar, welcher an den zugeordneten Bits ausgeführt wird. Wie oben erwähnt, werden der Multicast- Verknüpfungsknoten und der Paketpuffer, wenn lediglich ein zu­ geordnetes Bit vorhanden ist, welches 1 ist, freigegeben, das heißt, es ist nicht erforderlich, das letzte "1"-Bit zu lö­ schen so daß k - 1 Schritte erforderlich sind, um den Schreibvorgang (Löschvorgang) an den zugeordneten Bits anzu­ schließen.
Wie in Tabelle 1 dargestellt, werden beim Weiterleiten eines Multicast-Pakets mit k Zielports (1 + k) + (1 + k) + k + k + (k - 1) + k = 6k + 1 Operationszeiten benötigt. Daher ist eine hohe Speicherband­ breite erforderlich um derart viele Operationszeiten bewälti­ gen zu können.
Es ist daher eine Aufgabe der Erfindung, ein verbessertes und vereinfachtes Ausgangswarteschlangenbildungsverfahren zur Wei­ terleitung von Paketen in Folge zu schaffen. Die Erfindung of­ fenbart ein FIFO-Knoten-Gemeinsamnutzungs-Verfahren (FIFO: First In First Out) zur Weiterleitung von Paketen in Folge in einem Ethernet-Switch-Netzwerk.
Erfindungsgemäß wird die Aufgabe durch die Merkmale der An­ sprüche 1 bzw. 12 gelöst, die Unteransprüche zeigen weitere vorteilhafte Ausgestaltungen der Erfindung.
Die Erfindung löst die oben genannte Aufgabe durch Vorsehen eines neuen Ausgangswarteschlangenbildungsverfahrens zur Wei­ terleitung der Pakete in Folge. Das Ausgangswarteschlangenbil­ dungsverfahren wird bei einem Switch-Netzwerk mit einer Anzahl von Ports verwendet. Jeder Port ist einer Portausgangswarte­ schlange zugeordnet, während eine globale Ausgangswarteschlan­ ge von sämtlichen Portausgangswarteschlangen genutzt wird. Ein FIFO-Block (FIFO: First In First Out) ist jeder Portausgangs­ warteschlange und der globalen Ausgangswarteschlange zugewie­ sen. Der FIFO-Block umfaßt eine Anzahl von FIFO-Knoten. Jeder FIFO-Knoten umfaßt ein Überspringfeld und ein Multicastzähler­ feld (bzw. ein Portmaskenfeld). Bei dem Verfahren werden der Typ und der Zielport des empfangenen Pakets bestimmt. Das Überspringfeld des Multicastzählerfelds (bzw. des Portmasken­ felds) des zugeordneten FIFO-Knotens in der Portausgangswarte­ schlange bzw. der globalen Ausgangswarteschlange werden an­ schließend gemäß dem Typ des empfangenen Pakets gesetzt. Das Paket wird gesendet bzw. übersprungen von der Portausgangswar­ teschlange/globalen Ausgangswarteschlange auf der Grundlage des Werts im Überspringfeld und des Multicastzählerfelds.
Weitere Aufgaben, Merkmale und Vorteile der Erfindung gehen aus der nachfolgenden genauen Beschreibung des bevorzugten, jedoch nicht einschränkenden Ausführungsbeispiels deutlich hervor. Die Beschreibung erfolgt unter Bezugnahme auf die bei­ liegende Zeichnung. Es zeigt:
Fig. 1A eine Datenstruktur für einen Unicast-Verknüpfungs­ knoten gemäß einem herkömmlichen Verfahren;
Fig. 1B eine Datenstruktur für einen Multicast-Verknüpfungs­ knoten gemäß einem herkömmlichen Verfahren;
Fig. 2 eine Datenstruktur für einen FIFO-Block (FIFO: First In First Out) bei einem Ausführungsbeispiel der Erfindung;
Fig. 3 eine Datenstruktur für einen FIFO-Knoten beim Ausfüh­ rungsbeispiel der Erfindung;
Fig. 4 die Datenstruktur für die Ausgangswarteschlange beim Ausführungsbeispiel der Erfindung;
Fig. 5 ein Flußdiagramm der Eingangssteuerung beim Ausfüh­ rungsbeispiel der Erfindung; und
Fig. 6 ein Flußdiagramm der Ausgangssteuerung beim Ausfüh­ rungsbeispiel der Erfindung.
Das Ausführungsbeispiel wird im Ethernet-Switch-Netzwerk ange­ wandt. Selbstverständlich ist die Erfindung nicht auf das Ethernet-Switch-Netzwerk beschränkt. Durch eine geeignete An­ passung kann die Erfindung auf ein anderes Netzwerk angewandt werden. Es sei angenommen, daß das Ethernet-Switch-Netzwerk N Ports aufweist, wobei jeder Port seine eigene Portausgangswar­ teschlange aufweist. Eine globale Ausgangswarteschlange wird von sämtlichen Portausgangswarteschlangen gemeinsam genutzt.
Bei diesem Ausführungsbeispiel wird ein FIFO-Block (FIFO: First In First Out) als ein Grundelement in der Ausgangswarte­ schlange betrachtet. Fig. 2 zeigt eine Datenstruktur des FIFO- Blocks. Wie in Fig. 2 dargestellt, umfaßt ein FIFO-Block Nb FIFO-Knoten und einen Zeiger, wobei Nb eine natürliche Zahl ist. Sämtliche der FIFO-Knoten in dem FIFO-Block sind in der Richtung von oben aufeinanderfolgend von 1 bis Nb numeriert. Der Zeiger im FIFO-Block wird zum Zeigen auf den nächsten FI­ FO-Block verwendet. Sämtliche der FIFO-Blöcke sind ausgehend von 1 aufeinanderfolgend numeriert. Der j-te FIFO-Knoten des k-ten FIFO-Blocks wird als Paketparameter (k, j) bezeichnet. Jeder FIFO-Knoten wird zu einem Paketpuffer geleitet. Daher wird der FIFO-Knoten mit dem Paketparameter (k, j) zu dem (k . Nb + j)-ten Paketpuffer geleitet. Bei dem Ausführungsbeispiel werden die FIFO-Knoten im gleichen FIFO-Block als aufeinander­ folgend betrachtet. Der letzte FIFO-Knoten ist über den Zeiger mit dem ersten FIFO-Knoten des nächsten FIFO-Blocks verknüpft.
Zuerst werden sämtliche FIFO-Blöcke als freie Liste miteinan­ der verknüpft. Anschließend weist die Warteschlangensteuerung einen freien FIFO-Block zu jeder Portausgangswarteschlange und einen weiteren freien FIFO-Block zu der globalen Ausganswarte­ schlange zu. Dementsprechend sind sowohl die Portausgangswar­ teschlange als auch die globale Ausgangswarteschlange mit Nb freien Paketpuffern versehen. Das Unicast-Paket ist in der Portausgangswarteschlange zugewiesen, und das Multicast-Paket ist in der globalen Ausgangswarteschlange zugewiesen. Die Be­ ziehung zwischen der Warteschlangensteuerung und der Eingangs­ steuerung/Ausgangssteuerung ist ähnlich der Server/Client- Struktur. Die grobe Beziehung ist wie folgt: Wenn die Aus­ gangssteuerung eine Warteschlangenherausnahmeanforderung sen­ det, so liefert die Warteschlangensteuerung eine Warteschlan­ genherausnahemoperation an die Ausgangssteuerung. In ähnlicher Weise liefert die Warteschlangensteuerung, wenn die Eingangssteuerung eine Warteschlangeneinreihungsanforderung sendet, eine Warteschlangeneinreihungsoperation an die Eingangssteue­ rung.
In dem Verfahren zur Weiterleitung eines Pakets werden die FI­ FO-Knoten aufeinanderfolgend durch die weiterzuleitenden Pake­ te belegt. Nachdem sämtliche FIFO-Knoten im gleichen FIFO- Block belegt sind, weist die Warteschlangensteuerung unmittel­ bar einen neuen FIFO-Block zu. Wenn das Paket bereites zum Zielport weitergeleitet ist, so wird das Paket freigegeben, ebenso wie der ursprünglich durch das Paket belegte FIFO- Knoten. Nachdem sämtliche FIFO-Knoten im gleichen FIFO-Block freigegeben sind, gibt die Warteschlangensteuerung den FIFO- Block in die freie Liste frei. In welcher Weise der FIFO- Knoten Und der FIFO-Block freigegeben werden, ist unten be­ schrieben.
Bei dem Ausführungsbeispiel sind die Pakete in zwei Typen un­ terteilt: das Unicast-Paket und das Multicast-Paket. Das Broadcast-Paket wird bei diesem Ausführungsbeispiel als dem Multicast-Paket gleichgestellt angesehen. In einer Gruppe von weiterzuleitenden Paketen sind diese beiden Typen von Paketen entweder angrenzend oder abwechselnd. Das heißt, für einen Port kann, wenn das vorhergehend Paket ein Unicast-Paket ist, das nächste Paket ein weiteres Unicast-Paket oder ein Multi­ cast-Paket sein. In ähnlicher Weise kann das nächste Paket, wenn das vorhergehende Paket ein Multicast-Paket ist, ein Uni­ cast-Paket oder ein weiteres Multicast-Paket sein.
In der Warteschlangensteuerung existieren jeweils vier Regi­ ster, welche jeder Portausgangswarteschlange zugeordnet sind. Die vier Register sind das "Ausgangsüberspringzähler"- Register, das "Ausgangsmulticastzähler"-Register, das "Ein­ gangsüberspringzähler"-Register und das Eingangsmulticastzähler"-Register. Wie oben erwähnt, wird die Portausgangswarte­ schlange zum Anordnen der Unicast-Pakete verwendet. Dement­ sprechend werden die vier Register den Unicast-Paketen zuge­ ordnet.
Das "Ausgangsüberspringzähler"-Register wird verwendet zum An­ zeigen, wie viele auf das Unicast-Paket folgende Multicast- Pakete zu überspringen sind. Das "Ausgangsmulticastzähler"- Register wird verwendet zum Anzeigen, wie viele auf das Uni­ cast-Paket folgenden Multicast-Pakete aus der Warteschlange herauszunehmen sind. Das "Ausgangsmulticastzähler"-Register wird verwendet zum Bestätigen, ob eine Warteschlangenheraus­ nahmeoperation erforderlich ist oder nicht. Das "Ausgangsüber­ springzähler"-Register und das "Ausgangsmulticastzähler"- Register werden zusammen berücksichtigt. Es sei angenommen, daß das "Ausgangsüberspringzähler"-Register und das "Ausgangs­ multicastzähler"-Register drei bzw. sechs sind. Dies bedeutet, daß neun Multicast-Pakete zwischen zwei Unicast-Paketen vor­ handen sind. Bei den neuen Multicast-Paketen sind die ersten drei Multicast-Pakete zu überspringen, und die letzten sechs Multicast-Pakete sind aus der Warteschlange herauszunehmen. Das "Ausgangsüberspringzähler"-Register und das "Ausgangsmul­ ticastzähler"-Register werden bei einem Warteschlangenheraus­ nahme des Pakets verwendet.
Das "Eingangüberspringzähler"-Register wird verwendet zum An­ zeigen, wie viele auf das Unicast-Paket folgende Multicast- Pakete zu überspringen sind. Das "Eingangsmulticastzähler"- Register wird verwendet zum Anzeigen, wie viele auf das Uni­ cast-Paket folgende Multicast-Pakete in die Warteschlange ein­ gereiht sind. Das "Eingangsmulticastzähler"-Register wird ver­ wendet zum Bestätigen, ob eine Warteschlangeneinreihungsopera­ tion erforderlich ist oder nicht. Das "Eingangüberspringzäh­ ler"-Register und das "Eingangsmulticastzähler"-Register werden zusammen berücksichtigt. Es sei angenommen, daß das "Ein­ gangüberspringzähler"-Register und das "Eingangsmulticastzäh­ ler"-Register drei bzw. sechs sind. Dies bedeutet, daß neun Multicast-Pakete zwischen dem Unicast-Paket und dem nächsten Unicast-Paket vorhanden sind. Bei den neuen Multicast-Paketen werden die ersten drei Multicast-Pakete übersprungen, und die letzten sechs Multicast-Pakete werden in die Warteschlange eingereiht. Das "Eingangüberspringzähler"-Register und das "Eingangsmulticastzähler"-Register werden bei einer Warte­ schlangeneinreihung des Pakets verwendet.
Fig. 3 zeigt eine Datenstruktur eines FIFO-Knotens in 64 Bits. Bei dem Ausführungsbeispiel ist der FIFO-Knoten in vier Felder unterteilt: das Zieladressentypfeld, das Portmaskenfeld (bzw. das Multicastzählerfeld), das Überspringzählerfeld und das Weitere-Daten-Feld. Die 64 Bits sind aufeinanderfolgend, wie in Fig. 3 dargestellt, aufeinanderfolgend von 0 bis 63 nume­ riert. Das Zieladressentypfeld befindet sich in Bit 0. Das Portmaskenfeld (bzw. das Multicastzählerfeld) reicht von Bits 1 bis 17. Das Überspringzählerfeld reicht von Bits 18 bis 34. Das Weitere-Daten-Feld reicht von Bits 35 bis 63.
Das Zieladressentypfeld wird verwendet zum Anzeigen des in dem Paketpuffer, welcher dem FIFO-Knoten zugeordnet ist, gespei­ cherten Pakettyps. Wenn der Zieladressentyp 0 ist, so ist das in dem Paketpuffer gespeicherte Paket ein Unicast-Paket, und wenn der Zieladressentyp 1 ist, so ist das in dem Paketpuffer gespeicherte Paket ein Multicast-Paket.
Die Verwendung des zweiten Feldes ist abhängig vom Zieladres­ sentyp. Wenn der Zieladressentyp 0 ist, so wird das zweite Feld als ein Multicastzählerfeld verwendet, wohingegen dann, wenn der Zieladressentyp 1 ist, das zweite Feld als ein Port­ maskenfeld verwendet wird. Das Multicastzählerfeld zeigt an, wie viele Multicast-Pakete aus der Warteschlange herauszuneh­ men sind, und das Portmaskenfeld zeigt an, welche Ports in dem Switch-Netzwerk die Zielports des Multicast-Pakets sind. Bei dem Ausführungsbeispiel werden lediglich ein Paketpuffer und ein FIFO-Knoten bei der Weiterleitung eines Pakets benötigt, unabhängig davon, ob ein Unicast-Paket oder ein Multicast- Paket weitergeleitet wird.
Das Überspringzählerfeld zeigt an, wie viele Multicast-Pakete zu überspringen sind. Es sei angenommen, daß das "Eingangs­ überspringzähler"-Register und das "Eingangsmulticastzähler"- Register drei bzw. sechs sind. Dies bedeutet, daß neun Multi­ cast-Pakete zwischen dem Unicast-Paket und dem nächsten Uni­ cast-Paket vorhanden sind. Bei den neun Multicast-Paketen wer­ den die drei ersten Multicast-Pakete übersprungen, und die letzten sechs Multicast-Pakete werden aus der Warteschlange herausgenommen. Durch Kombination des Überspringzählerfelds und der Kontinuität der FIFO-Knoten werden Operationszeiten bei einer Warteschlangenherausnahme eines Multicast-Pakets aus der globalen Ausgangswarteschlangen auf weniger als N ver­ ringert, wobei N die Anzahl sämtlicher Ports in dem Ethernet- Switch-Netzwerk ist. Das Weitere-Daten-Feld ist reserviert.
Zuerst werden das "Eingangsüberspringzähler"-Reigster und das "Eingangsmulticastzähler"-Reigster beide auf 0 rückgesetzt. Bei einem Multicast-Paket mit k Zielports (K = 2~N) führt die Warteschlagensteuerung die folgenden Schritte aus:
  • 1. Wenn der j-te Port nicht der Zielport des Multicast-Pakets ist, so führt die Warteschlagensteuerung verschiedene Opera­ tionen gemäß dem Wert in dem "Eingangsmulticastzähler"- Register des j-ten Ports aus. Zu Vereinfachung ist das "Ein­ gangsmulticastzäher"-Register des j-ten Ports als das j-te "Eingangsmulticastzäher"-Register markiert, und die anderen Register sind in einer ähnlichen Weise markiert. Wenn das j-te "Eingangsmulticastzähler"-Register 0 ist, so wird das j-te "Eingangsüberspringzähler"-Reigster um 1 erhöht. Wenn das j-te "Eingangsmulticastzähler"-Register nicht 0 ist, so wird das j- te "Eingangsmulticastzähler"-Register um 1 erhöht.
  • 2. Wenn der j-te Port einer der Zielports des Multicast- Pakets ist, so wird das j-te "Eingangsmulticastzähler"- Register um 1 erhöht.
Wenn ein Unicast-Paket in eine Portausgangswarteschlange ein­ gereiht wird, so folgen auf das Unicast-Paket wenige Multi­ cast-Pakete. Nach Warteschlangeneinreihung eines nächsten Uni­ cast-Pakets ist bekannt, wie viele Multicast-Pakete auf das vorhergehende Unicast-Paket folgen.
Wenn das nächste Unicast-Paket in die Portausgangswarteschlan­ ge eingereiht wird, so wird der Wert in dem "Eingangsüber­ springzähler"-Register des Ports in das Überspringzählerfeld des vorhergehenden Unicast-Pakets gesetzt, und der Wert in dem "Eingangsmulticastzähler"-Register des Ports wird in das Mul­ ticastzählerfeld des vorhergehenden Unicast-Pakets gesetzt. Das "Eingangsüberspringzähler"-Register und das "Eingangsmul­ ticastzähler"-Register werden anschließend beide auf 0 rückge­ setzt.
Wenn ein FIFO-Knoten aus einer Portausgangswarteschlange her­ ausgenommen wird, so wird das Überspringzählerfeld des FIFO- Knotens in das "Ausgangsüberspringzähler"-Register geschrie­ ben, während das Multicastzählerfeld des FIFO-Knotens in das "Ausgangsmulticastzähler"-Register des Ports geschrieben wird.
Fig. 4 zeigt eine Datenstruktur der Portausgangswarteschlange und der globalen Ausgangswarteschlangen bei dem Ausführungsbeispiel. In Fig. 4 stellt die Portausgangswarteschlange j (j = 0~N - 1) die Portausgangswarteschlange [j] dar. Die Portaus­ gangswarteschlange j umfaßt einen Anfang-Zeiger HEAD-j und ei­ nen Ende-Zeiger TAIL-j. Der Anfang-Zeiger HEAD-j wird verwen­ det zum Anzeigen des nächsten FIFO-Knotens, welcher aus der Portausgangswarteschlange [j] herauszunehmen ist, während der Ende-Zeiger TAIL-j verwendet wird zum Anzeigen des nächsten FIFO-Knotens, welcher in die Portausgangswarteschlange [j] einzureihen ist. Wie in Fig. 4 dargestellt, umfaßt die globale Ausgangswarteschlange N Anfang-Zeiger pj-HEAD und einen Ende- Zeiger TAIL. Der Anfang-Zeiger pj-HEAD in der globalen Aus­ gangswarteschlange ist der Portausgangswarteschlange [j] ein­ deutig zugeordnet. Der Anfang-Zeiger pj-HEAD zeigt auf den nächsten FIFO-Knoten, welcher aus der globalen Ausgangswarte­ schlange herauszunehmen ist. Die Positionen und die Operatio­ nen dieser Anfang-Zeiger pj-HEAD sind unabhängig. Der Ende- Zeiger TAIL in der globalen Ausgangswarteschlange wird von sämtliche Portausgangswarteschlangen gemeinsam genutzt und wird verwendet zum Anzeigen des nächsten FIFO-Knotens, welcher in die globale Ausgangswarteschlange einzureihen ist.
Fig. 5 zeigt ein Flußdiagramm der Eingangssteuerung bei dem Ausführungsbeispiels. Wie in Fig. 5 dargestellt, werden zuerst der Zieladressentyp und der Zielport des Paketes aus einer Ta­ belle erhalten, wie in Schritt 501 dargestellt.
Die Eingangssteuerung sendet anschließend eine Anforderung an die Warteschlangensteuerung zum Sperren eines FIFO-Knotens, wie in Schritt 502 dargestellt. Wenn das Paket ein Unicast- Paket ist, so wird ein FIFO-Knoten in der Portausgangswarte­ schlange des Zielports gesperrt. Wenn hingegen das Paket ein Multicastpaket ist, so wird ein FIFO-Knoten in der globalen Ausgangswarteschlange gesperrt.
Als nächstes werden die Felder im FIFO-Knoten gesetzt, wie in Schritt 503 dargestellt. Wenn das Paket ein Unicast-Paket ist, so wird das Zieladressentypfeld auf 0 gesetzt, und die Warte­ schlangensteuerung setzt Werte des "Eingangsmulticastzähler"- Registers und des "Eingangsüberspringzähler"-Registers in das "Multicastzähler"-Feld und das "Überspringzähler"-Feld des FI­ FO-Knotens. Wenn das Paket ein Multicast-Paket ist, so wird das Zieladressentypfeld auf 1 gesetzt, und das Zielportfeld wird entsprechend den Zielports des Multicast-Pakets gesetzt. Jedes Bit in dem Zielportfeld ist einem Port eins zu eins zu­ geordnet. Wenn ein Port einer der Zielports des Multicast- Pakets ist, so wird das zugeordnete Bit auf 1 gesetzt. Wenn hingegen ein Port nicht der Zielport des Multicast-Pakets ist, so wird das zugeordnete Bit auf 0 gesetzt.
Der FIFO-Knoten wird anschließend in die Portausgangswarte­ schlange oder die globale Ausgangswarteschlange eingereiht, wie in Schritt 504 dargestellt. Wenn das Paket ein Unicast- Paket ist, so wird der FIFO-Knoten in die Portausgangswarte­ schlange eingereiht; und der Ende-Zeiger TAIL-j zeigt dorthin, wo der FIFO-Knoten in die Warteschlange eingereiht. Wenn das Paket ein Multicast-Paket ist, so wird der FIFO-Knoten in die globale Ausgangswarteschlange eingereiht; und der Ende-Zeiger TAIL-j zeigt dorthin, wo der FIFO-Knoten in die Warteschlange eingereiht ist. Der letzte FIFO-Knoten jeder Portausgangswar­ teschlange und globalen Ausgangswarteschlange wird im IC ge­ speichert, um die Zugriffszeit zu verringern. Wenn ein näch­ ster FIFO-Knoten in die Warteschlange eingereiht wird, so wird der vorhergehende im Speicher gespeichert.
Existiert irgendein Unicast-Paket und/oder Multicast-Pakete, welche auf das Unicast-Paket folgen, das aus der Portausgangs­ warteschlange oder aus der globalen Ausgangswarteschlangen herauszunehmen ist, so führt die Ausgangssteuerung die Schritt in Fig. 6 aus. Zur Vereinfachung werden ein Unicast-Paket und die Multicast-Pakete, welche auf das Unicast-Paket folgen, zu­ sammen als Paketgruppe bezeichnet. Die folgenden Multicast- Pakete sind definiert anhand der Multicast-Pakete zwischen zwei Unicast-Paketen. Selbstverständlich kann in manchen Fäl­ len die Paketgruppe nur ein Unicast-Paket enthalten. Der Grund hierfür ist, daß das Unicast-Paket von einem anderen Unicast- Paket gefolgt ist.
Zuerst nimmt die Ausgangssteuerung ein Unicast-Paket aus der Portausgangswarteschlange heraus, wie in Schritt 601 darge­ stellt.
Das Unicast-Paket wird anschließend gesendet, wie in Schritt 602 dargestellt.
Da das Unicast-Paket gesendet wurde, wird der zum Speichern des Unicast-Pakets verwendete Paketpuffer in die freie Liste freigegeben, und der dem Paketpuffer entsprechende FIFO-Knoten wird ebenfalls freigegeben, wie in Schritt 603 dargestellt. wie oben erwähnt, existieren Nb FIFO-Knoten im FIFO-Block, und der FIFO-Block wird nicht freigegeben, wenn nicht sämtliche in diesem FIFO-Block freigegeben sind.
Die Ausgangssteuerung führt anschließend die Warteschlangen­ herausnahme und das Senden der Multicast-Pakete durch. Die Warteschlangenherausnahme- und Sendeschritte sind wie folgt:
Die Warteschlangensteuerung erfaßt, ob der Wert im "Ausgangs­ überspringzähler"-Register 0 ist oder nicht, wie in Schritt 604 dargestellt. Der Wert im "Ausgangswarteschlangenzähler"- Register stellt dar, wie viele Multicast-Pakete zu übersprin­ gen sind. Wenn der Wert im "Ausgangsüberspringzähler"-Register nicht 0 ist, so führt die Ausgangssteuerung Schritt 065 aus.
Wenn der Wert im "Ausgangsüberspringzähler"-Register 0 ist, so führt die Ausgangssteuerung Schritt 607 aus.
In Schritt 605 wird ein Paket aus der globalen Ausganswarte­ schlange übersprungen, unabhängig davon, ob es ein Unicast- oder ein Multicast-Paket ist. Der Wert im "Ausgangsüberspring­ zähler"-Register wird anschließend um 1 vermindert, wie in Schritt 606 dargestellt. In Fig. 6 werden die Schritte 604, 605 und 606 so lange wiederholt, bis der Wert im "Ausgangs­ überspringzähler"-Register zu 0 wird. Da die Schritte 604, 605, und 606 beim Überspringen der Multicast-Pakete verwendet werden, werden diese drei Schritte auch als Überspringschritte bezeichnet.
In Schritt 607 erfaßt die Warteschlangensteuerung, ob der Wert im "Ausgangsmulticastzähler"-Register 0 ist. Wenn der Wert im "Ausgangsmulticastzähler"-Register 0 ist, existiert in der ak­ tuellen Paketgruppe kein aus der Warteschlangen herauszuneh­ mendes Multicast-Paket, und die Ausgangssteuerung kann mit der Verarbeitung der nächsten Paketgruppe fortfahren. Wenn der Wert im "Ausgangsmulticastzähler"-Register nicht 0 ist, so existieren ein bzw. mehrere Multicast-Pakete, welche aus der globalen Ausgangswarteschlange herauszunehmen sind, und die Ausgangssteuerung fährt mit Schritt 608 fort.
In Schritt 608 prüft die Warteschlangensteuerung das zugeord­ net Bit in der Zielport-Bitmaske des FIFO-Knotens in der glo­ balen Ausgangswarteschlange, um zu bestimmen, ob die Ausgangs­ steuerung das Multicast-Paket aus der globalen Ausgangswarte­ schlange herauszunehmen hat. Wenn das zugeordnete Bit gleich 1 ist, so bedeutet dies, das der Port einer der Zielports des Multicast-Pakets ist, und die Ausgangssteuerung springt zu Schritt 608. Wenn das zugeordnet Bit gleich 0 ist, so bedeutet die, das der Port nicht der Zielport des Multicast-Pakets ist, und die Ausgangssteuerung springt zu Schritt 614.
In Schritt 609 informiert die Warteschlangensteuerung die Aus­ gangssteuerung über die Warteschlangenherausnahme des Multi­ cast-Pakets aus der globalen Ausgangswarteschlange.
In Schritt 610 wird dann das Multicast-Paket gesendet, welches in Schritt 609 aus der Warteschlange herausgenommen wurde.
In Schritt 611 beurteilt die Ausgangssteuerung, ob die Ziel­ port-Bitmaske des FIFO-Knotens in der globalen Ausgangswarte­ schlange lediglich ein Bit aufweist, welches 1 ist. Bei dem Ausführungsbeispiel wird, wenn ein Multicast-Paket einer War­ teschlangenherausname und einem Senden von einem der Zielports davon unterzogen wurde, das zugeordnet Bit in der Zielport- Bitmaske des FIFO-Knotens auf 0 rückgesetzt. Daher ist, wenn lediglich ein Bit, welches 1 ist, in der Zielport-Bitmaske vorhanden ist, das Multicast-Paket bereits einer Warteschlan­ genherausnahme und einem Senden von sämtlichen Zielports un­ terzogen worden. Die Ausgangssteuerung springt zu Schritt 613. Wenn zwei oder mehr Bits vorhanden sind, welche 1 sind, so wird ist Multicast-Paket noch nicht einer Warteschlangenher­ ausnahe und einem Senden von sämtlichen Zielports unterzogen worden, und die Ausgangssteuerung springt zu Schritt 612.
In Schritt 612 wird das zugeordnete Bit in der Zielport- Bitmaske des FIFO-Knotens auf 0 rückgesetzt (bzw. gelöscht). Der Rücksetzschritt bedeutet, daß das Multicast-Paket aus der Portausgangswarteschlange des Zielports herausgenommen und ge­ sendet ist.
In Schritt 613 wird der zum Speichern des Multicast-Pakets verwendete Paketpuffer freigegeben, und der FIFO-Knoten in der globalen Ausgangswarteschlange wird ebenfalls freigegeben. Wie oben erwähnt, ist in dem Fall, daß lediglich ein Bit, welches 1 ist, in der Zielport-Bitmaske des FIFO-Knotens vorhanden ist, das Multicast-Paket bereits aus sämtlichen Zielports her­ ausgenommen und gesendet. Dementsprechend wird der Paketpuffer zum Speichern des Multicast-Pakets freigegeben, ebenso wie der FIFO-Knoten, welcher verwendet wird zum Anzeigen der Zielports des Multicast-Pakets, in der globalen Ausgangswarteschlange. Es existieren Nb FIFO-Knoten im FIFO-Block, und er FIFO-Block wird so lange nicht freigegeben, bis sämtliche FIFO-Knoten in diesem FIFO-Block freigegeben sind.
In Schritt 614 wird der Wert im "Ausgangsmulticastzähler"- Register um 1 vermindert. Wenn Schritt 608 direkt zu Schritt 614 springt, das heißt, das zugeordnete Bit der Zielport- Bitmaske ist 0, so ist der Port nicht einer der Zielports des Multicast-Pakets. Dementsprechend überspringt die Warteschlan­ gensteuerung die Warteschlangenherausnahmeschritte und die Sendeschritte. Durch ein Überspringen dieser Schritte über­ springt die Ausgangssteuerung das Multicast-Paket.
Die Ausgangssteuerung wiederholt die Schritte 607 bis 614 so lange, bis sämtliche Multicast-Pakete in der Paketgruppe aus der globalen Ausgangswarteschlange herausgenommen (bzw. über­ sprungen) sind.
In dem Flußdiagramm in Fig. 6 werden die Schritte der Einfach­ heit halber sequentiell ausgeführt. In der Praxis können man­ che Schritt in einem Pipeline-Modus ausgeführt werden, um die Verarbeitungsgeschwindigkeit zu verbessern. Beispielsweise sei angenommen, daß ein Paket eine große Paketlänge aufweist, wel­ che eine lange Zeitspanne erfordern würde, um das lange Multi­ cast-Paket weiterzuleiten. Die Sendeschritte werden dann zu­ sammen mit den Warteschlangenherausnahmeschritten des nächsten Pakets ausgeführt, um die Verarbeitungsgeschwindigkeit zu ver­ bessern.
Die Leistung zwischen der Erfindung und dem Stand der Technik bezüglich der Weiterleitung eines Multicastpakets mit k Ziel­ ports wird in Tabelle 2 verglichen.
Tabelle 2
In Tabelle 2 ist k die Anzahl der Zielports des Multicast- Pakets. Nb ist die Anzahl der FIFO-Knoten in einem FIFO-Block. N ist die Anzahl der Ports (Ethernet-Ports und CPU-Ports) im Ethernet-Switch-Netzwerk.
Aus Tabelle 2 geht hervor, daß die Zuweisungsoperationen und die Freigabeoperationen von (1 + k) auf (1/Nb) deutlich verbes­ sert sind. Außerdem verwendet die Erfindung das "Überspring­ zähler"-Register bei der Verringerung der Warteschlangenher­ ausnahmeoperation.
Eine Charakteristik der Erfindung beruht auf einer globalen Ausgangswarteschlange, welche durch sämtliche Portausgangswar­ teschlangen gemeinsam genutzt wird. Sämtliche Multicast- Pakete/Broadcast-Pakete werden in der globalen Ausgangswarte­ schlange gespeichert. Jede Portausgangswarteschlange kann die gewünschten Multicast-Pakete abrufen.
Eine weitere Charakteristik der Erfindung beruht auf einer Warteschlangensteuerung. Die Warteschlangensteuerung liefert die Warteschlangeneinreihungsoperationen an die Eingangssteue­ rung und die Warteschlangenherausnahmeoperationen an die Aus­ gangssteuerung.
Eine weitere Charakteristik der Erfindung beruht auf einem FI­ FO-Block, welcher als Komponente der Portausgangswarteschlange und der globalen Ausgangswarteschlange verwendet wird. Der FI­ FO-Block umfaßt Nb FIFO-Knoten und einen Zeiger. Die Zu­ griffsoperation wird durch die Kontinuität der FIFO-Knoten im gleichen FIFO-Block verbessert.
Zusammenfassend betrifft die vorliegende Erfindung ein Aus­ gangswarteschlangenbildungsverfahren zur sequentiellen Weiter­ leitung der Pakete in einem Switch-Netzwerk. Jeder Port ist einer Portausgangswarteschlange zugeordnet, und eine globale Ausgangswarteschlange wird von sämtliche Portausgangswarte­ schlangen gemeinsam genutzt. Ein FIFO-Block (FIFO: First In First Out) ist jeder Portausgangswarteschlange und der globa­ len Ausgangswarteschlange zugewiesen. Der FIFO-Block umfaßt eine Anzahl von FIFO-Knoten. Auf der Grundlage des Typs und der Zielports des empfangenen Pakets werden die Felder des zu­ geordneten FIFO-Knotens in der Portausgangswarteschlange und der globalen Ausgangswarteschlange gesetzt. Die Pakete werden auf der Grundlage der zugeordneten Felder gesendet bzw. über­ sprungen.
Während die Erfindung beispielhaft und in Form eines bevorzug­ ten Ausführungsbeispiels beschrieben wurde, ist es selbstverständlich, daß die Erfindung nicht darauf beschränkt ist. Vielmehr ist beabsichtigt, verschiedene Abwandlungen und ähn­ liche Anordnungen und Verfahren abzudecken, und dem Umfang der beiliegenden Ansprüche sollte daher die breitest mögliche In­ terpretation gewährt werden, um sämtliche derartigen Abwand­ lungen und ähnlichen Anordnungen und Verfahren einzuschließen.

Claims (12)

1. Ausgangswarteschlangenbildungsverfahren zur Weiterleitung von Paketen in einem Switch-Netzwerk, wobei das Switch- Netzwerk eine Vielzahl von Ports, die jeweils einer Portausgangswarteschlange entsprechen, eine globale Aus­ gangswarteschlange, die von sämtlichen Portausgangswarte­ schlangen gemeinsam genutzt wird, einen FIFO-Block (FIFO: First In First Out) umfaßt, welcher jeder Portausgangs­ warteschlange und der globalen Ausgangswarteschlange zu­ gewiesen ist, wobei der FIFO-Block (eine natürliche Zahl) FIFO-Knoten und einen Zähler umfaßt, wobei jeder FIFO- Knoten ein erstes Feld und ein zweites Feld umfaßt, wobei das Ausgangswarteschlangenbildungsverfahren umfaßt:
Empfangen eines Pakets und Bestimmen des Typs und des Zielports des Pakets;
wenn das Paket ein Unicast-Paket ist, Setzen des ersten und des zweiten Felds eines ersten FIFO-Knotens in der Portausgangswarteschlange;
wenn das Paket ein Multicast-Paket ist, Setzen des zwei­ ten Felds eines zweiten FIFO-Knotens in der globalen Aus­ gangswarteschlange gemäß den Zielports des Multicast- Pakets und Setzen des ersten Felds und des zweiten Felds eines letzten des ersten FIFO-Knotens in jeder Portaus­ gangswarteschlange;
Lesen des ersten Felds und des zweiten Felds im ersten FIFO-Knoten entsprechend dem Unicast-Paket und Senden des Unicast-Pakets; und
Senden bzw. Überspringen des Multicast-Pakets gemäß dem ersten Feld und dem zweiten Feld des ersten FIFO-Knotens und dem zweiten Feld des zweiten FIFO-Knotens.
2. Verfahren nach Anspruch 1, wobei jeder FIFO-Knoten ferner ein drittes Feld umfaßt, wobei das dritte Feld 0 ist, wenn das Paket ein Unicast-Paket ist, und das dritte Feld 1 ist, wenn das Paket ein Multicast-Paket ist.
3. Verfahren nach Anspruch 1, wobei der Schritt des Setzens des ersten Felds und des zweiten Felds des ersten FIFO- Knotens umfaßt:
Erhöhen des ersten Felds um 1, wenn die Ausgangswarte­ schlange nicht einer der Zielports des Multicast-Pakets ist und das zweite Feld 0 ist;
Erhöhen des zweiten Felds um 1, wenn die Ausgangswarte­ schlange nicht einer der Zielports des Multicast-Pakets ist und das zweite Feld nicht 0 ist; und
Erhöhen des zweiten Felds um 1, wenn die Ausgangswarte­ schlange einer der Zielports des Multicast-Pakets ist.
4. Verfahren nach Anspruch 1, wobei der Schritt des Lesens des ersten Felds und des zweitens Felds des zweiten FIFO- Knotens umfaßt: Lesen des ersten Felds und des zweiten Felds in ein er­ stes Register und ein zweites Register.
5. Verfahren nach Anspruch 4, wobei der Schritt des Sendens bzw. Überspringens des Multicast-Pakets umfaßt:
Überspringen von m Multicast-Paketen aus der globalen Ausgangswarteschlange, wobei m (0 oder eine natürliche Zahl) der Wert im ersten Register ist;
Senden bzw. Überspringen von n (0 oder eine natürliche Zahl) Multicast-Paketen aus der globalen Ausgangswarte­ schlange, wobei n der Wert im zweiten Register ist.
6. Verfahren nach Anspruch 5, wobei dann, wenn das zweite Feld des zweiten FIFO-Knotens bestimmt, daß die Portaus­ gangswarteschlange einer der Zielports des Multicast- Pakets ist, eines der n Multicast-Pakete gesendet bzw. Übersprungen wird.
7. Verfahren nach Anspruch 6, wobei der Schritt des Sendens des Multicast-Pakets umfaßt:
Freigeben des zweiten FIFO-Knotens, wenn das zweite Feld des zweiten FIFO-Knotens lediglich ein Bit umfaßt, wel­ ches 1 ist;
Löschen eines zugeordneten Bits, wenn das zweite Feld des zweiten FIFO-Knotens zwei oder mehr Bits umfaßt, welche 1 sind; und
Freigeben des FIFO-Blocks, bis sämtliche zweiten FIFO- Knoten im FIFO-Block freigegeben sind.
8. Verfahren nach Anspruch 1, wobei der Schritt des Sendens des Unicast-Pakets umfaßt:
Freigeben des ersten FIFO-Knotens;
Freigeben des FIFO-Blocks, bis sämtliche ersten FIFO- Knoten im FIFO-Block freigegeben sind.
9. Verfahren nach Anspruch 1, wobei jede Portausgangswarte­ schlange einen ersten Anfang-Zeiger umfaßt, welcher auf einen der ersten FIFO-Knoten in der Portausgangswarte­ schlange zeigt.
10. Verfahren nach Anspruch 1, wobei jede Portausgangswarte­ schlange einen ersten Ende-Zeiger umfaßt, welcher auf ei­ ne der ersten FIFO-Knoten in der Portausgangswarteschlan­ ge zeigt.
11. Verfahren nach Anspruch 1, wobei die globale Ausgangswar­ teschlange eine Vielzahl von zweiten Anfang-Zeigern und einen zweiten Ende-Zeiger umfaßt, wobei jeder zweite An­ fang-Zeiger jeder Portausgangswarteschlange eins zu eins zugeordnet ist und auf einen der zweiten FIFO-Knoten in der globalen Ausgangswarteschlange zeigt, wobei eine Zu­ ordnung davon zu jeder Portausgangswarteschlange dazu existiert; und der zweite Ende-Zeiger auf einen der zwei­ ten FIFO-Knoten in der globalen Ausgangswarteschlange zeigt.
12. Ausgangswarteschlangenbildungsverfahren zur Weiterleitung von Paketen in einem Switch-Netzwerk, wobei das Switch- Netzwerk eine Vielzahl von Ports, die jeweils einer Portausgangswarteschlange entsprechen, und eine globale Ausgangswarteschlange umfaßt, die durch sämtliche Portausgangswarteschlangen gemeinsam genutzt wird, wobei die Pakete vom Unicast- oder Multicasttyp sind und das Ausgangswarteschlangenbildungsverfahren umfaßt:
Erfassen des Typs eines Empfangspakets;
wenn der Typ des Empfangspakets ein Unicasttyp ist, Zu­ weisen des Empfangspakets zu der Portausgangswarteschlan­ ge;
wenn der Typ des Empfangspakets ein Multicasttyp ist, Zu­ weisen des Empfangspakets zu der globalen Ausgangswarte­ schlange; und
Bestimmen einer Warteschlangenherausnahme bzw. eines Überspringens des Empfangspakets in der globalen Aus­ gangswarteschlange gemäß dem Typ des Empfangspakets.
DE10052904A 1999-11-30 2000-10-25 Warteschlangenbildungsverfahren zur Weiterleitung von Paketen in Folge Expired - Lifetime DE10052904B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
TW088120840 1999-11-30
TW088120840A TW445730B (en) 1999-11-30 1999-11-30 Output queuing scheme for forwarding packets in sequence

Publications (2)

Publication Number Publication Date
DE10052904A1 true DE10052904A1 (de) 2001-06-07
DE10052904B4 DE10052904B4 (de) 2007-07-26

Family

ID=21643195

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10052904A Expired - Lifetime DE10052904B4 (de) 1999-11-30 2000-10-25 Warteschlangenbildungsverfahren zur Weiterleitung von Paketen in Folge

Country Status (3)

Country Link
US (1) US6958973B1 (de)
DE (1) DE10052904B4 (de)
TW (1) TW445730B (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7487505B2 (en) * 2001-08-27 2009-02-03 Intel Corporation Multithreaded microprocessor with register allocation based on number of active threads
US7337275B2 (en) * 2002-08-13 2008-02-26 Intel Corporation Free list and ring data structure management
US7586911B2 (en) * 2003-10-17 2009-09-08 Rmi Corporation Method and apparatus for packet transmit queue control
US20050083930A1 (en) * 2003-10-20 2005-04-21 Jen-Kai Chen Method of early buffer release and associated MAC controller
US7730501B2 (en) * 2003-11-19 2010-06-01 Intel Corporation Method for parallel processing of events within multiple event contexts maintaining ordered mutual exclusion
CN100449504C (zh) * 2005-01-05 2009-01-07 华为技术有限公司 一种基于bitmap表的缓存管理方法
US20070127480A1 (en) * 2005-12-02 2007-06-07 Via Technologies Inc. Method for implementing packets en-queuing and de-queuing in a network switch
US8806168B2 (en) * 2011-09-12 2014-08-12 Microsoft Corporation Producer-consumer data transfer using piecewise circular queue

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2288096B (en) * 1994-03-23 1999-04-28 Roke Manor Research Apparatus and method of processing bandwidth requirements in an ATM switch
EP0676878A1 (de) * 1994-04-07 1995-10-11 International Business Machines Corporation Effizientes Punkt zu Punkt und Punkt zu Mehrpunkt Weglenkungsverfahren für programmierbare Vermittlungsknoten in Hochgeschwindigkeits-Datenübertragungsnetzen
US5784003A (en) * 1996-03-25 1998-07-21 I-Cube, Inc. Network switch with broadcast support
US5898687A (en) * 1996-07-24 1999-04-27 Cisco Systems, Inc. Arbitration mechanism for a multicast logic engine of a switching fabric circuit
US6363075B1 (en) * 1998-01-23 2002-03-26 Industrial Technology Research Institute Shared buffer management mechanism and method using multiple linked lists in a high speed packet switching system
US6320861B1 (en) * 1998-05-15 2001-11-20 Marconi Communications, Inc. Hybrid scheme for queuing in a shared memory ATM switch buffer
US6625159B1 (en) * 1998-11-30 2003-09-23 Hewlett-Packard Development Company, L.P. Nonblocking and fair queuing switching method and shared memory packet switch
US6574194B1 (en) * 1998-12-18 2003-06-03 Cypress Semiconductor Corporation Architecture of data communications switching system and associated method
US6574232B1 (en) * 1999-05-26 2003-06-03 3Com Corporation Crossbar switch utilizing broadcast buffer and associated broadcast buffer management unit

Also Published As

Publication number Publication date
TW445730B (en) 2001-07-11
DE10052904B4 (de) 2007-07-26
US6958973B1 (en) 2005-10-25

Similar Documents

Publication Publication Date Title
DE69836812T2 (de) Verfahren und gerät zum dynamischen warteschlange-abschätzen
DE3300261C2 (de)
DE3752370T2 (de) Vermittlungssystem
DE10196447B4 (de) Verfahren und Vorrichtung zum Verringern der Erschöpfung des Pools in einer Vermittlung mit gemeinsam genutztem Speicher
DE3728805C2 (de)
DE69738386T2 (de) Verbesserungen in oder sich beziehend auf eine ATM-Vermittlungsstelle
EP0641099A1 (de) Verfahren und Vorrichtung zum Zwischenspeichern von Datenpaketen sowie Vermittlungsstelle mit einer solchen Vorrichtung
EP0847165A1 (de) Digitales Datenübertragungsnetz und Verfahren zum Betreiben des Datenübertragungsnetzes
DE19531749A1 (de) Verkehrsgestaltungseinrichtung und Paket-Kommunikationsgerät
EP0651536A2 (de) Verfahren zur Wiederherstellung einer vorgegebenen Reihenfolge für ATM-Zellen
EP0315919B1 (de) Vermittlungsknoten für die Vermittlung von in Datenpaketen ubertragenen Datensignalen
EP0329005A1 (de) Verfahren zum Einrichten von über Koppelvielfache einer mehrstufigen Koppelanordnung verlaufenden virtuellen Verbindungen
DE69433229T2 (de) ATM-Schalter
DE10052904A1 (de) Warteschlangenbildungsverfahren zur Weiterleitung von Paketen in Folge
DE2027159B2 (de) Datenverarbeitungsanlage
DE60210748T2 (de) System und Verfahren zum Verbinden von Rahmendaten durch das Einfügen von Bestimmungsfeldern in Steuerblöcke
DE60203785T2 (de) Netzschnittstelle
EP0471051B1 (de) Steuereinheit für den zentralspeicher eines atm-knotens
EP0555456B1 (de) Verfahren zur datenübertragung und datenverarbeitungsanlage mit verteilten rechnerknoten
DE19903841A1 (de) Flußsteuerungsverfahren und -vorrichtung für Netzwerk zwischen Prozessoren
EP0442581B1 (de) Asynchrones Zeitvielfachübermittlungssystem
DE2118930C3 (de) Verfahren und Schaltungsanordnung zum Überwachen von Anschlüssen in einem programmgesteuerten Verarbeitungssystem
EP0454218B1 (de) Zeitvielfachübermittlungssystem
EP1440544A1 (de) Verfahren zur kommunikation eines realzeit-datenverkehrs in einem kollisionserkennungs-basierten kommunikationsnetz, entsprechendes speichermedium und kommunikationsnetz
DE60013023T2 (de) Methode und Einheit zum Steuern der Ausgabe-Ordnung von temporär gespeicherten Daten oder Objekten

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
R071 Expiry of right