DE10052904A1 - Warteschlangenbildungsverfahren zur Weiterleitung von Paketen in Folge - Google Patents
Warteschlangenbildungsverfahren zur Weiterleitung von Paketen in FolgeInfo
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3027—Output queuing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/20—Support for services
- H04L49/201—Multicast 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.
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.
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.
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.
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.
Ü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.
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.
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.
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.
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)
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)
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 |
-
1999
- 1999-11-30 TW TW088120840A patent/TW445730B/zh not_active IP Right Cessation
-
2000
- 2000-09-27 US US09/669,879 patent/US6958973B1/en not_active Expired - Lifetime
- 2000-10-25 DE DE10052904A patent/DE10052904B4/de not_active Expired - Lifetime
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 |