-
GEBIET DER ERFINDUNG
-
Die
vorliegende Erfindung betrifft vor allem Kommunikations- und Computersysteme;
und insbesondere betrifft die Erfindung das Paket-Scheduling (Paket-Zeitablaufsteuerung),
das insbesondere auf Systeme anwendbar ist, die eine blockierungsfreie Switching
Fabric (Koppelmatrix) und homogene oder heterogene Leitungskartenschnittstellen
umfassen, ohne auf diese Systeme begrenzt zu sein.
-
HINTERGRUND DER ERFINDUNG
-
Die
Kommunikationsindustrie ändert
sich schnell, um sich auf die aufkommenden Technologien und den
immer weiter zunehmenden Kundenbedarf einzustellen. Dieser Kundenbedarf
bezüglich neuer
Anwendungen und erhöhter
Leistung von existierenden Anwendungen treibt Kommunikationsnetzwerk-
und Systemanbieter dazu, Netzwerke und Systeme mit größerer Geschwindigkeit
und Kapazität (z.B.
größerer Bandbreite)
zu verwenden. Beim Versuch, diese Ziele zu erreichen, besteht eine übliche Vorgehensweise,
die von vielen Kommunikationsanbietern ergriffen wird, darin, die
Paketvermittlungstechnologie zu verwenden. Öffentliche und private Kommunikationsnetzwerke
werden zunehmend unter Verwendung von verschiedenen Pakettechnologien,
wie z.B. des Internetprotokolls (IP), aufgebaut und erweitert.
-
SLIP
ist ein iterativer Algorithmus zur Zeitablaufsteuerung (Scheduling)
des Sendens von Paketen quer durch einen N × N Switch. In einer Implementierung
werden die folgenden drei Schritte durchgeführt:
- 1.
Jeder unzugeordnete (unmatched) Eingang sendet eine Anforderung
an jeden Ausgang, für den
er eine in einer Warteschlange stehende Zelle aufweist.
- 2. Wenn ein unzugeordneter Ausgang irgendwelche Anforderungen
empfängt,
dann wählt
er diejenige aus, die als nächste
in einem festen Round-Robin-Plan ausgehend von dem höchsten Auswahlprioritätselement
erscheint. Der Ausgang teilt jedem Eingang mit, ob seine Anforderung
gewährt
wurde oder nicht. Der Zeiger auf das höchste Auswahlprioritätselement
des Round-Robin-Plans wird auf eine Stelle jenseits des gewährten Eingangs
inkrementiert (Modulo N), wenn und auch nur dann, wenn die Gewährung im Schritt
3 der ersten Iteration akzeptiert wird. Der Zeiger wird in nachfolgenden
Iterationen nicht inkrementiert.
- 3. Wenn ein Eingang eine Gewährung
empfängt, dann
akzeptiert er diejenige, die in einem festen Round-Robin-Plan ausgehend
von dem höchsten Auswahlprioritätselement
als nächstes
erscheint. Der Zeiger auf das höchste
Auswahlprioritätselement
des Round-Robin-Plans wird auf eine Stelle jenseits des akzeptierten
Ausgangs inkrementiert (Modulo N).
-
I-SLIP
ist ein Scheduling-Algorithmus, der (anstatt nur eine SLIP-Iteration)
mehrere Iterationen des SLIP-Algorithmus umfasst, um die Zeitablaufsteuerung
von Paketen für
jede Runde des Sendens von Paketen zu bestimmen.
-
Jeder
Ausgangs-Scheduler entscheidet sich aus dem Satz von geordneten,
miteinander konkurrierenden Anforderungen unter Verwendung einer
rotierenden Auswahlpriorität.
Wenn ein anfragender Eingang eine Gewährung erhält und der Eingang diese Gewährung akzeptiert
bzw. annimmt, dann wird dieser Eingang an diesem Ausgang in der
nächsten Zellenzeit
die niedrigste Auswahlpriorität
aufweisen. Auch wird, welcher Eingang auch immer die höchste Auswahlpriorität an einem
Ausgang besitzt, dieser weiter Gewährungen während jedes nachfolgenden Zeitschlitzes
erhalten, bis er bedient wird. Dies gewährleistet, dass eine Verbindung
nicht verhungert: Die Verbindung mit der höchsten Auswahlpriorität an einem
Ausgang wird von einem Eingang immer in nicht mehr als N Zellenzeiten
angenommen werden.
-
Das
Bewegen der Zeiger verhindert nicht nur das Verhungern, sondern
führt auch
dazu, die Synchronisation der Scheduler aufzuheben. Jeder der Ausgänge, der
in dem vorhergehenden Zeitschlitz zugeordnet worden war, wird einen
anderen Eingang mit der höchsten
Auswahlpriorität
aufweisen. Auf diese Weise werden sie Gewährungen für unterschiedliche Eingänge erteilen.
Nun sei ein Beispiel betrachtet, bei dem zwei Eingänge beide
die gleichen zwei Ausgänge
anfordern. Anfänglich
können
beide Ausgänge
dem gleichen Eingang eine Gewährung
erteilen; in diesem Fall wird in der ersten Iteration nur eine Verbindung
hergestellt.
-
Der
erfolgreiche Ausgang wird seinen Zeiger inkrementieren, und in der
nächsten
Zellenzeit werden die Ausgänge
nicht mehr länger
konkurrieren: einer wird sich weiterbewegt haben, um einem anderen Eingang
eine Gewährung
zu erteilen, und der andere wird dem gleichen Eingang wie vorher
eine Gewährung
erteilen. Dies führt
zu einer besseren Zuordnung (match) in der ersten Iteration der
nächsten
Zellenzeit. Dies liegt daran, dass die Synchronisation der Ausgangs-Scheduler
im Hinblick zueinander aufgehoben worden ist (bzw. "außer Tritt
gefallen ist").
Dies führt
zu einer hohen Performanz, selbst für eine einzige Iteration des
SLIP.
-
Aufgrund
der Round-Robin-Bewegung der Zeiger tendiert der Algorithmus dazu,
eine faire Zuordnung von Bandbreite unter konkurrierenden Verbindungen
bereitzustellen und Burst-reduzierend zu sein. Die Burst-Reduktion ist am
einfachsten unter einer hohen Last zu verstehen, wenn alle Eingangs-Warteschlangen
besetzt sind: der Algorithmus wird jede im Wettbewerb stehende Verbindung
der Reihe nach besuchen, so dass selbst dann, wenn an dem Eingang
ein Burst von Zellen für
den gleichen Ausgang ankommt, der Burst mit der Zeit verteilt sein wird,
wenn es konkurrierenden Verkehr gibt.
-
Aber
der I-SLIP-Algorithmus ist so ausgelegt, dass er Kreuzschienen-Switching Fabrics
unterbringt, bei denen die Eingangsports unabhängig und homogen sind. Gewisse
Implementierungen von blockierungsfreien Switching Fabrics weisen
heterogene Leitungskarten (Line Cards) mit variierenden Kapazitäten auf.
Für diese
Systeme werden Scheduler gewünscht,
die eine auf vernünftige
Weise faire Bandbreitenzuordnung quer durch Leitungskarten mit variierender
Kapazität
bereitstellen, und zwar unabhängig
von der Leitungskartenkonfiguration. Selbst in Systemen, in denen
Leitungskarten mit variierenden Geschwindigkeiten in einem Verhältnis zu einem
proportionalen Anstieg der Anzahl an Eingangsports angeschlossen
werden, stellt der I-SLIP-Scheduling-Algorithmus
typischerweise keine ausreichend faire Bandbreitenzuordnung bereit.
Was benötigt
wird, sind neue Verfahren und Vorrichtungen zur Zeitablaufsteuerung
von Paketen quer durch eine blockierungsfreie Switching Fabric und
homogene oder heterogene Leitungskartenschnittstellen.
-
Die
EP-A2-1052814 offenbart
ein System für eine
Multicast-Zeitablaufsteuerung
für eine
Netzwerkvorrichtung. Sende-Anforderungen werden von einer Vielzahl
von Eingangsports empfangen, die die Ausgangsports identifizieren,
zu denen die Multicast-Zellen laut der Anforderung übertragen
werden sollen. Für
jede Dienstklasse führt
der Scheduler eine Scheduling-Iteration durch, die eine Gewährungsphase,
eine Annahme- bzw. Akzeptanzphase und eine Aktualisierungsphase
umfasst, in der eine Prioritätsanzeige
für die
Verwendung in dem nächsten Scheduling-Zyklus aktualisiert
wird.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Es
werden Verfahren und Vorrichtungen für die Zeitablaufsteuerung von
Paketen offenbart. Insbesondere ist gemäß einer Ausführungsform
ein Verfahren bereitgestellt, das Folgendes umfasst:
Identifizieren
eines Satzes von Anforderungen, die Paketen entsprechen, die von
einer Vielzahl von Eingängen
quer durch einen Paket-Switch zu einem bestimmten Ausgang gesendet
werden sollen;
Aufrechterhalten einer Gewährungs-Ausgangsposition;
Bestimmen
einer Gewährungs-Vorrückposition;
Identifizieren
von ersten n Anforderungen in einer vorbestimmten Sequenz ausgehend
von der Gewährungs-Ausgangsposition,
wobei n kleiner als die oder gleich der maximalen Anzahl von Paketen
ist, die in einer einzelnen Paketzeit zu dem bestimmten Ausgang
gesendet werden kann; und
Aktualisieren der Gewährungs-Ausgangsposition
in Reaktion darauf, dass die ersten n Gewährungen eine bestimmte Gewährung enthalten,
die der Gewährungs-Vorrückposition
entspricht.
-
Gemäß einer
zweiten Ausführungsform
ist ein Verfahren bereitgestellt, das Folgendes umfasst:
Erzeugen
eines Satzes von Anforderungen, die den Paketen entsprechen, die
von einem bestimmten Eingang quer durch einen Paket-Switch zu einer Vielzahl
von Ausgängen
gesendet werden sollen;
Identifizieren eines Satzes von Gewährungen,
die in Reaktion auf den Satz von Anforderungen erzeugt werden;
Aufrechterhalten
einer Annahme-Ausgangsposition;
Bestimmen einer Annahme-Vorrückposition;
Identifizieren
von ersten m Gewährungen
in einer vorbestimmten Sequenz ausgehend von der Annahme-Ausgangsposition,
wobei m kleiner als die oder gleich der maximalen Anzahl von Verbindungen
ist, die in einer einzelnen Paketzeit von dem bestimmten Eingang
verwendet werden kann; und
Aktualisieren der Annahme-Ausgangsposition
in Reaktion darauf, dass die ersten m Gewährungen eine bestimmte Annahme
enthalten, die der Annahme-Vorrückposition
entspricht.
-
Entsprechende
Vorrichtungs- und Computerprogramm-Erzeugnis-Ausführungsformen
sind bereitgestellt, und bevorzugte Merkmale der Ausführungsformen
sind in den Unteransprüchen
dargelegt.
-
In
einem Ausführungsbeispiel
wird ein Satz von Anforderungen erzeugt, die Paketen entsprechen,
die von einem bestimmten Eingang quer durch einen Paket-Switch zu
einer Vielzahl von Ausgängen gesendet
werden sollen. Eine Gewährungs-Ausgangsposition
wird verwaltet und eine Gewährungs-Vorrückposition
wird bestimmt. Die ersten n Anforderungen in einer vorbestimmten
Sequenz ausgehend von der Gewährungs-Ausgangsposition
werden identifiziert, wobei n kleiner als die oder gleich der maximalen
Anzahl von Verbindungen ist, die in einer einzelnen Paketzeit zu
dem bestimmten Ausgang verwendet werden kann. Die Gewährungs-Ausgangsposition
wird in Reaktion auf die ersten n Gewährungen aktualisiert, wenn
eine bestimmte Gewährung,
die der Gewährungs-Vorrückposition
entspricht, enthalten ist.
-
In
einem Ausführungsbeispiel
wird ein Satz von Anforderungen erzeugt, die den Paketen entsprechen,
die von einem bestimmten Eingang quer durch einen Paket-Switch zu
einer Vielzahl von Ausgängen
gesendet werden sollen, und ein Satz von Gewährungen, der in Reaktion auf
den Satz von Anforderungen erzeugt worden ist, wird identifiziert. Eine
Annahme-Ausgangsposition
wird aufrecht erhalten, und eine Annahme-Vorrückposition wird bestimmt. Die
ersten m Gewährungen
in einer vorbestimmten Sequenz ausgehend von der Annahme-Ausgangsposition
werden identifiziert, wobei m kleiner als die oder gleich der maximalen
Anzahl von Verbindungen ist, die in einer einzelnen Paketzeit von dem
bestimmten Eingang verwendet werden können. Die Annahme-Ausgangsposition
wird in Reaktion auf die ersten m Gewährungen aktualisiert, wenn eine
bestimmte Gewährung,
die der Annahme-Vorrückposition
entspricht, enthalten ist.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die
beigefügten
Ansprüche
legen die Merkmale der Erfindung mit Besonderheit dar. Die Erfindung
kann zusammen mit ihren Vorteilen aus der folgenden ausführlichen
Beschreibung in Verbindung mit den begleitenden Zeichnungen am besten
verstanden werden, in denen:
-
1A–E und 2 Blockdiagramme
von Ausführungsbeispielen
für die
Zeitablaufsteuerung (das Scheduling) von Paketen in einem System
sind, das eine blockierungsfreie Switching Fabric aufweist;
-
3A ein
Ablaufdiagramm eines Prozesses ist, der in einem Ausführungsbeispiel
für das Scheduling
von Unicast- und Multicast-Paketen in Scheduling-Zyklen mit drei
Iterationen verwendet wird;
-
3B ein
Ablaufdiagramm eines Prozesses ist, der in einem Ausführungsbeispiel
für das Scheduling
von Unicast- und/oder Multicast-Paketen in
einer oder mehreren Iterationen verwendet wird;
-
4A und 4C Ablaufdiagramme
von Prozessen sind, die in einem Ausführungsbeispiel für die Kommunikation
von Unicast- und Multicast-Paketanzeigen
zu einem Scheduler verwendet werden;
-
4B ein
Blockdiagramm eines Nachrichtenformats ist, das in einem Ausführungsbeispiel
für die
Kommunikation von Unicast- und Multicast-Paketanzeigen zu einem Scheduler verwendet
wird;
-
5 ein
Ablaufdiagramm eines Prozesses ist, der in einem Ausführungsbeispiel
für die
Erzeugung von Anforderungen verwendet wird;
-
6A ein
Ablaufdiagramm eines Prozesses ist, der in einem Ausführungsbeispiel
bei der Durchführung
der Gewährungsverarbeitung
verwendet wird;
-
6B–C Blockdiagramme
von Datenstrukturen sind, die in einem Ausführungsbeispiel bei der Durchführung der
Gewährungsverarbeitung
verwendet werden;
-
7A ein
Ablaufdiagramm eines Prozesses ist, der in einem Ausführungsbeispiel
für das Durchführen einer
Annahme- bzw. Akzeptanzverarbeitung verwendet wird;
-
7B Blockdiagramme
von Datenstrukturen veranschaulicht, die in einem Ausführungsbeispiel
für das
Durchführen
einer Annahmeverarbeitung verwendet werden;
-
8 ein
Ablaufdiagramm eines Prozesses ist, der in einem Ausführungsbeispiel
für die
Multicast-Zeiger-Verarbeitung verwendet wird; und
-
9 ein
Blockdiagramm ist, das in einem Ausführungsbeispiel für die Konfigurierung
des Switch und die Initiierung des Sendens von Paketen quer durch
den Switch verwendet wird.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Es
werden Verfahren und Vorrichtungen für die Zeitablaufsteuerung (das
Scheduling) von Paketen in Systemen, wie etwa Systemen, die eine
blockierungsfreie Switching Fabric und homogene oder heterogene
Leitungskartenschnittstellen aufweisen, ohne auf diese beschränkt zu sein,
offenbart. Die hier beschriebenen Ausführungsbeispiele umfassen verschiedene
Elemente und Begrenzungen, wobei kein Element oder keine Begrenzung
als kritisches Element oder kritische Begrenzung betrachtet wird.
Jeder der Ansprüche
führt individuell
einen Aspekt der Erfindung in ihrer Gesamtheit an. Darüber hinaus können einige
beschriebene Ausführungsbeispiele unter
anderem Systeme, Netzwerke, integrierte Schaltungschips, eingebettete
Prozessoren, ASICs, Verfahren und computerlesbare Medien, die Befehle enthalten,
umfassen, sind jedoch nicht auf diese begrenzt. Die nachstehend
beschriebenen Ausführungsbeispiele
verkörpern
verschiedene Aspekte und Konfigurationen innerhalb des Schutzbereichs und
Gedankens der Erfindung, wobei die Figuren beispielhafte und nicht-begrenzende
Konfigurationen veranschaulichen.
-
So,
wie er hier verwendet wird, bezieht sich der Begriff "Paket" auf Pakete aller
Arten oder irgendwelche anderen Informations- oder Dateneinheiten, einschließlich, jedoch
nicht begrenzt auf Zellen mit fester Länge und Pakete mit variabler
Länge,
von denen jedes in kleinere Pakete oder Zellen unterteilbar sein
kann oder nicht. Der Begriff "Paket", so, wie er hier verwendet
wird, bezieht sich auch auf sowohl das Paket selbst als auch auf
eine Paketanzeige, wie z.B., jedoch nicht begrenzt auf alles oder
einen Teil eines Pakets oder Paket-Header, einen Datenstrukturwert,
einen Zeiger oder Index oder irgendeinen anderen Teil oder eine
Identifikation eines Pakets. Überdies
können
diese Pakete eine oder mehrere Arten von Informationen enthalten,
einschließlich,
jedoch nicht begrenzt auf Sprach-, Daten-, Video- und Audioinformationen. Der Begriff "Datenelement" wird hier verwendet,
um sich auf ein Paket oder irgendeine andere Einheit oder ein Stück von Informationen
oder Daten zu beziehen.
-
Der
Begriff "System" wird hier allgemein
verwendet, um eine beliebige Anzahl von Komponenten, Elementen,
Untersystemen, Vorrichtungen, Paketvermittlungselementen, Paket-Switches
(Paketvermittlungsstellen), Routern, Netzwerken, Computer- und/oder
Kommunikationsvorrichtungen oder -mechanismen oder Kombinationen
von Komponenten davon zu beschreiben. Der Begriff "Computer" wird hier allgemein
verwendet, um eine beliebige Anzahl von Computern zu beschreiben,
einschließlich,
jedoch nicht begrenzt auf Personal Computer, eingebettete Prozessoren
und Systeme, eine Steuerlogik, ASICs, Chips, Arbeitsplatzrechner,
Großrechner, usw..
Der Begriff "Vorrichtung" wird hier allgemein verwendet,
um jede Art von Mechanismus, einschließlich eines Computers oder
Systems oder einer Komponente davon, zu beschreiben. Die Begriffe "Aufgabe" und "Prozess" werden hier allgemein
verwendet, um eine beliebige Art von laufendem Programm zu beschreiben,
einschließlich,
jedoch nicht begrenzt auf einen Computerprozess, eine Computeraufgabe,
einen Computer-Thread, eine Ausführungsanwendung,
ein Betriebssystem, einen Anwenderprozess, einen Vorrichtungstreiber,
einen nativen Code, eine Maschinen- oder andere Sprache, usw., und
kann interaktiv und/oder nicht interaktiv sein, lokal und/oder entfernt
ausführen,
im Vordergrund und/oder im Hintergrund ausführen, in den Anwender- und/oder
Betriebssystem-Adressenräumen
ausführen,
eine Routine einer Bibliothek und/oder eine eigenständige Anwendung
sein, und ist nicht auf irgendein spezielles Speicherpartitionierungsverfahren
begrenzt. Die Schritte, Verbindungen und Verarbeitung von Signalen
und Informationen, die in den Figuren veranschaulicht sind, einschließlich, jedoch nicht
begrenzt auf irgendwelche Block- und Ablaufdiagramme und Nachrichtensequenzdiagramme,
können
in derselben oder in einer anderen seriellen oder parallelen Reihenfolge
und/oder durch unterschiedliche Komponenten und/oder Prozesse, Threads,
usw. und/oder über
unterschiedliche Verbindungen durchgeführt werden und mit anderen
Funktionen in anderen Ausführungsbeispielen
kombiniert werden, wobei am Schutzbereich und Gedanken der vorliegenden Erfindung
festgehalten wird.
-
Darüber hinaus
werden die Begriffe "Netzwerk" und "Kommunikationsmechanismus" hier allgemein verwendet,
um ein oder mehrere Netzwerke, Kommunikationsmedien oder Kommunikationssysteme
zu beschreiben, einschließlich,
jedoch nicht begrenzt auf das Internet, private oder öffentliche
Telefon-, zellulare, drahtlose, Satelliten-, Kabel-, lokale, Stadtbereichs-
und/oder Weitbereichs-Netzwerke, ein Kabel, eine elektrische Verbindung,
einen Bus usw. und interne Kommunikationsmechanismen wie z.B. Nachrichtenleitung,
Kommunikationen zwischen Prozessen, einen gemeinsam genutzten Speicher, usw..
-
Der
Begriff "Speichermechanismus" umfasst eine beliebige
Art von Speicher, Speichervorrichtung oder einen anderen Mechanismus
zum Halten von Befehlen oder Daten in einem beliebigen Format. Ein "computerlesbares
Medium" ist ein
erweiterbarer Begriff, der irgendeinen Speicher, eine Speichervorrichtung,
einen Speichermechanismus und andere Speicher- und Signalisierungsmechanismen
umfasst, einschließlich
Schnittstellen und Vorrichtungen wie z.B. Netzwerkschnittstellenkarten
und Puffer darin, sowie irgendwelche Kommunikationsvorrichtungen
und Signale, die empfangen und gesendet werden, und andere aktuelle
und sich entwickelnde Technologien, die ein computergestütztes System
interpretieren, empfangen und/oder senden kann. Der Begriff "Speicher" umfasst irgendeinen
Direktzugriffsspeicher (RAM), Festwertspeicher (ROM), Flash-Speicher,
integrierte Schaltungen und/oder andere Speicherkomponenten oder
-elemente. Der Begriff "Speichervorrichtung" umfasst beliebige
Festkörper-Speichermedien,
Plattenlaufwerke, Disketten, vernetzte Dienste, Bandlaufwerke und
andere Speichervorrichtungen. Speicher und Speichervorrichtungen
können von
einem Computer ausführbare
Befehle, die von einem Prozessor und/oder einer Steuerlogik ausgeführt werden
sollen, und Daten speichern, die von einem Prozessor und/oder einer
Steuerlogik manipuliert werden. Der Begriff "Datenstruktur" ist ein erweiterbarer Begriff, der
sich auf irgendein Datenele ment, irgendeine Variable, irgendeine
Datenstruktur, irgendeine Datenbank und/oder ein oder mehrere Organisationsschemen
bezieht, die auf Daten angewendet werden können, um die Interpretation
der Daten oder das Durchführen
von Operationen an diesen zu erleichtern, wie z.B., jedoch nicht
begrenzt auf Speicherstellen oder -vorrichtungen, Sätze/Mengen, Warteschlangen,
Bäume,
Halden (Heaps), Listen, verkettete Listen, Arrays, Tabellen, Zeiger,
usw.. Eine Datenstruktur wird typischerweise in einem Speichermechanismus
verwaltet.
-
Die
Begriffe "erstes", "zweites", usw. werden hier
typischerweise verwendet, um verschiedene Einheiten (z.B. ein erstes
Element, ein zweites Element) zu bezeichnen. Die Verwendung dieser
Begriffe hier schließt
nicht notwendigerweise eine Reihenfolge ein, wie z.B. eine Einheit
oder ein Ereignis, die/das vor dem anderen stattfindet oder kommt,
sondern stellt vielmehr einen Mechanismus zum Unterscheiden zwischen
speziellen Einheiten bereit. Überdies
werden die Ausdrücke "auf der Basis von
x" und "in Reaktion auf x" verwendet, um einen
minimalen Satz von Datenelementen x anzugeben, von dem etwas abgeleitet
oder durch den etwas verursacht wird, wobei "x" erweiterbar
ist und nicht notwendigerweise eine vollständige Liste von Datenelementen
beschreibt, an denen die Operation durchgeführt wird, usw.. Außerdem wird
der Ausdruck "gekoppelt
mit" verwendet,
um ein gewisses Niveau an direkter oder indirekter Verbindung zwischen
zwei Elementen oder Vorrichtungen anzugeben, wobei die Kopplungsvorrichtung
oder – vorrichtungen
das gekoppelte Signal oder die übertragenen
Informationen modifiziert/modifizieren oder nicht modifiziert/nicht
modifizieren. Der Begriff "Teilmenge" wird verwendet,
um eine Gruppe von allen, weniger als allen oder keinem der Elemente
einer Menge anzugeben. Überdies
wird der Begriff "oder" hier verwendet,
um eine alternative Auswahl von einem oder mehreren, einschließlich allen
der konjunktiven Datenelemente anzugeben.
-
Es
werden Verfahren und Vorrichtungen für die Zeitablaufsteuerung (das
Scheduling) von Paketen in Systemen wie etwa Systemen, die eine
blockierungsfreie Switching Fabric und homogene oder heterogene
Leitungskartenschnittstellen aufweisen, ohne auf diese beschränkt zu sein,
offenbart. In einem Ausführungsbeispiel
arbeiten mehrere Anforderungs-Generatoren,
Gewährungs-Arbiter
und Annahme-Arbiter zusammen, um diese Zeitablaufsteuerung zu bestimmen.
Ein Satz von Anforderungen für das
Senden von Paketen von einem bestimmten Eingang wird erzeugt. Ausgehend
von einer Gewährungs-Ausgangsposition
werden erste n Anforderungen in einer vorbestimmten Sequenz identifiziert,
wobei n kleiner als die oder gleich der maximalen Anzahl von Verbindungen
ist, die in einer einzelnen Paketzeit zu dem bestimmten Ausgang
verwendet werden kann. Die Gewährungs-Ausgangsposition
wird in Reaktion darauf, dass die ersten n Gewährungen eine bestimmte Gewährung enthalten,
die einer Gewährungs-Vorrückposition
entspricht, aktualisiert. In einem Ausführungsbeispiel wird der Satz
von Gewährungen,
der auf dem Satz von Anforderungen basierend erzeugt wurde, in ähnlicher
Weise unter Verwendung einer Annahme-Ausgangsposition und einer
Annahme-Vorrückposition
bestimmt.
-
In
einem Ausführungsbeispiel
ist eine "Paketzeit" ein Zeitintervall
für eine
gegebene Switch-Konfiguration, während
dessen ein oder mehrere Pakete von einem oder mehreren Eingängen zu einem
oder mehreren Ausgängen
gesendet werden können.
In einem Ausführungsbeispiel
entspricht die Paketzeit dem Scheduling-Zeitintervall, das benötigt oder
zugeordnet wird, um die Zeitablaufsteuerung von Paketen durchzuführen, und
deshalb können
Pakete gesendet werden, während
das Paket-Scheduling und die entsprechende Switch-Konfiguration
für die
nächste
Paketzeit bestimmt werden.
-
1 veranschaulicht ein Ausführungsbeispiel
eines Systems 100, das einen blockierungsfreien Switch
(oder Switch Fabric) 102, eine Steuerung mit Scheduler
und Speicher 101 und mehrere Leitungskarten (Line Cards) 103–106 einschließt. Die Leitungskarte 103 ist
so gekennzeichnet, dass sie zum "Typ
A" mit A1 Eintritts-Verbindungen
oder -Ports 104 und A2 Austritts-Verbindungen oder -Ports 105 gehört. Die
Leitungskarte 106 ist so gekennzeichnet, dass sie zum "Typ B" gehört, mit
N1 Eintritts-Verbindungen oder -Ports 107 und N2 Austritts-Verbindungen
oder -Ports 108. Diese Bezeichnung betont, dass Schnittstellen
und Leitungskarten mit variierenden Raten und Anzahlen von Ports
oder Verbindungen zu einem blockierungsfreien Switch 102 unterstützt werden.
-
1B veranschaulicht
ein Ausführungsbeispiel
einer Leitungskarte (Line Card) 110. Signale, die Pakete
oder andere Datenformate enthalten, werden von der Leitungsschnittstelle 111 empfangen
und gesendet. Gezeigt sind Unicast- und Multicast-Warteschlangen 113,
in die in einem Ausführungsbeispiel ankommende
Pakete, für
die ein Scheduling durchgeführt
werden sollen, platziert werden. Eine Steuerung mit Anforderungs-Generatoren, Gewährungs-Arbitern
und Annahme-Arbitern 112 bestimmt und plant die Pakete
zeitablaufmäßig in der
Art und Weise, wie sie hier später
noch beschrieben wird, wobei Pakete von den Unicast- und Multicast-Warteschlangen 113 an
ihren jeweiligen geplanten Zeitpunkten über eine Switch-Schnittstelle 114 gesendet werden.
Außerdem
werden die Scheduling-Anforderungen,
-Gewährungen
und -Annahmen zwischen anderen Anforderungs-Generatoren, Gewährungs-Arbitern
und Annahme-Arbitern über
die Switch-Schnittstelle 114 kommuniziert.
-
1C veranschaulicht
ein Ausführungsbeispiel,
bei dem die Anforderungs-Generatoren, Gewährungs-Arbiter und Annahme-Arbiter
zentral in der Steuerung mit Anforderungs-Generatoren, Gewährungs-Arbitern
und Annahme-Arbitern 122 positioniert sind. Leitungskarten
mit Unicast- und Multicast-Warteschlangen und Paketanzeigegeneratoren 121 senden
Paketverkehranzeigen 123 zur Steuerung mit den Anforderungs-Generatoren,
Gewährungs-Arbitern
und Annahme-Arbitern 122. Zurückgesendet werden Annahme-/Zeitablaufsteuerungs-Anzeigen 124 von
Paketen zu Leitungskarten (Line Cards) 121, die das Senden
der angenommenen bzw. akzeptierten Pakete zu der geplanten Zeit initiieren.
Außerdem
sendet die Steuerung mit den Anforderungs-Generatoren, den Gewährungs-Arbitern
und den Annahme-Arbitern 122 Konfigurationsinformationen
zu dem Switch 120, so dass die Switching Fabric so konfiguriert
werden kann, dass sie die angenommenen Pakete zwischen dem Switch-Eingang
und den Ausgangsports und den angeschlossenen Leitungskarten 121 kommunizieren kann.
-
1D veranschaulicht
ein Ausführungsbeispiel
einer Leitungskarte (Line Card) 130. Signale, die Pakete
oder andere Datenformate enthalten, werden von der Leitungsschnittstelle 131 empfangen und
gesendet. Gezeigt sind N Unicast-Warteschlangen 133–134 und
eine Multicast-Warteschlange 135, in denen ankommende Pakete,
für die
ein Scheduling durchgeführt werden
soll, platziert werden. Typischerweise entspricht N der Anzahl an
Ausgangs-Leitungskarten oder der Anzahl an Switch-Ausgangsports,
zu denen die Leitungskarte Pakete senden kann. In einem Ausführungsbeispiel werden
zusätzliche
Warteschlangen verwendet, wie zum Beispiel mehrere Multicast-Warteschlangen und Warteschlangen
für die
Pufferung von Paketen, die verschiedene Prioritätsebenen aufweisen, ohne auf diese
beschränkt
zu sein. Eine Steuerung mit einem Anforderungs-Modul und einem Speicher 132 sendet Paketanzeigen
und empfängt
Annahme- und Scheduling-Anzeigen über die Switch-Schnittstelle 136.
-
1E veranschaulicht
ein System 150, das N Anforderungs-Generatoren 154, Gewährungs-Arbiter 155 und
Annahme-Arbiter 156 umfasst. Paketanzeigen werden von verschiedenen
Leitungskarten über
die Switch-Schnittstelle 151 empfangen
und in der entsprechenden Warteschlange der N Unicast-Warteschlangen 152 und
der N Muiticast-Anforderungs-Warteschlangen 153 gespeichert.
Die N Anforderungs-Generatoren 154 erzeugen auf der Basis der
Paketanzeigen in den Warteschlangen 152 und 153 Unicast-
und Multicast-Paketanforderungen (typischerweise in separaten Iterationen)
und kommunizieren diese zu den Gewährungs-Arbitern entsprechend
dem Ziel der Pakete der N Gewährungs-Arbiter 155.
Die N Gewährungs-Arbiter 155 wiederum
erzeugen und kommunizieren ihre Gewährungen zu den Annahme-Arbitern
entsprechend der Quelle der gewährten
Pakete der N Annahme-Arbiter 156. Die Annahmen werden dann
oder nach mehreren Iterationen zu der Switch-Schnittstelle 151 für das Weiterleiten
zu den geeigneten Leitungskarten und der Switch-Konfigurationssteuerung kommuniziert.
In einem Ausführungsbeispiel
wird eine Multicast-Steuerung 157 zum Verwalten einer gemeinsamen
Multicast-Position
verwendet, die von Gewährungs-Arbitern 155 bei
der Auswahl, welche Multicast-Anforderungen gewährt werden sollen, verwendet
wird.
-
2 veranschaulicht
ein Ausführungsbeispiel
eines Systems 200, das einen oder mehrere Anforderungs-Generatoren,
Gewährungs-Arbiter und/oder
Annahme-Arbiter für
die Zeitablaufsteuerung von Paketen in Übereinstimmung mit der Erfindung
umfassen kann, aber nicht darauf beschränkt ist. In einem Ausführungsbeispiel
umfasst das System 200 einen Prozessor 201, einen
Speicher 202, Speichervorrichtungen 203 und eine Switch-/Steuer-Schnittstelle 204,
die typischerweise über
einen oder mehrere Kommunikationsmechanismen 209 (für illustrative
Zwecke als ein Bus gezeigt) gekoppelt sind. Verschiedene Ausführungsbeispiele
des Systems 200 können
mehr oder weniger Elemente umfassen. Die Operation des Systems 200 wird
typischerweise von dem Prozessor 201 unter Verwendung des
Speichers 202 und der Speichervorrichtungen 203 gesteuert,
um eine oder mehrere Scheduling-Aufgaben oder -Prozesse durchzuführen. Der Speicher 202 ist
ein Typ eines computerlesbaren Mediums und umfasst typischerweise
einen Direktzugriffsspeicher (RAM), einen Festwertspeicher (ROM),
einen Flash-Speicher,
integrierte Schaltungen und/oder andere Speicherkomponenten. Der Speicher 202 speichert
typischerweise von einem Computer ausführbare Befehle, die von dem
Prozessor 201 ausgeführt
werden sollen, und/oder Daten, die von dem Prozessor 201 zur
Implementierung der Funktionalität
in Übereinstimmung
mit der Erfindung manipuliert werden können. Speichervorrichtungen 203 sind
ein anderer Typ von computerlesbarem Medium und umfassen typischerweise
Festkörper-Speichermedien,
Plattenlaufwerke, Disketten, vernetzte Dienste, Bandlaufwerke und
andere Speichervorrichtungen. Die Speichervorrichtungen 203 speichern
typischerweise von einem Computer ausführbare Befehle, die von dem
Prozessor 201 ausgeführt
werden sollen, und/oder Daten, die von dem Prozessor 201 zur
Implementierung der Funktionalität
in Übereinstimmung
mit der Erfindung manipuliert werden.
-
3A veranschaulicht
einen Prozess, der in einem Ausführungsbeispiel
für die
Zeitablaufsteuerung von Paketen unter Verwendung von drei Scheduling-Iterationen
verwendet wird. Die Verarbeitung beginnt am Prozessblock 300 und
geht weiter zum Prozessblock 302, bei dem eine erste Unicast-Scheduling-Iteration
durchgeführt
wird. Als nächstes
wird im Prozessblock 304 eine zweite Unicast-Scheduling-Iteration
durchgeführt.
Im Prozessblock 306 wird eine Multicast-Scheduling-Iteration
durchgeführt.
Als nächstes
wird in dem Prozessblock 308 der Switch (und seine Switching
Fabric) in Übereinstimmung
mit den zeitablaufmäßig geplanten
Paketen konfiguriert, und im Prozessblock 310 werden die
Pakete gesendet. Für
die nächste
Scheduling-Runde geht die Verarbeitung weiter zum Prozessblock 312,
bei dem eine Multicast-Scheduling-Iteration durchgeführt wird.
Als nächstes
wird im Prozessblock 314 eine erste Unicast-Scheduling- Iteration durchgeführt. Im
Prozessblock 316 wird eine zweite Unicast-Scheduling-Iteration
durchgeführt.
Als nächstes
wird im Prozessblock 318 der Switch (und seine Switching
Fabric) in Übereinstimmung
mit den zeitablaufmäßig geplanten
Paketen konfiguriert, und im Prozessblock 319 werden die
Pakete gesendet. Die Verarbeitung kehrt zum Prozessblock 302 zurück, um weitere
Schedulings von Paketen durchzuführen.
-
3B veranschaulicht
einen Prozess, der in einem Ausführungsbeispiel
für das
Scheduling von Paketen unter Verwendung einer oder mehrerer Scheduling-Iterationen
verwendet wird, die Unicast- und/oder Multicast-Iterationen in irgendeiner
gewünschten
Reihenfolge umfassen. Die Verarbeitung beginnt mit dem Prozessblock 320.
Wenn, wie im Prozessblock 322 bestimmt, als nächstes eine
Unicast-Iteration kommt, dann wird im Prozessblock 324 die
Unicast-Scheduling-Iteration durchgeführt; anderenfalls wird in dem
Prozessblock 326 eine Multicast-Scheduling-Iteration durchgeführt. Wenn,
wie im Prozessblock 328 bestimmt, für diesen Scheduling-Zyklus
mehr Scheduling-Iterationen durchgeführt werden sollen, dann kehrt
die Verarbeitung zurück
zum Prozessblock 322, um die nächste Scheduling-Iteration
durchzuführen.
Anderenfalls wird der Switch in dem Prozessblock 330 konfiguriert,
die Pakete werden im Prozessblock 340 gesendet, und die Verarbeitung
kehrt dann zu dem Prozessblock 322 zurück.
-
4A veranschaulicht
einen Prozess, der in einem Ausführungsbeispiel
verwendet wird, um Paketanzeigenachrichten zu erzeugen. Die Verarbeitung
beginnt mit dem Prozessblock 400 und geht weiter zum Prozessblock 402,
bei dem eine Paketanzeige-Datenstruktur geleert wird. Wenn, wie
im Prozessblock 404 bestimmt, noch mehr Unicast-Pakete
zum Versenden vorhanden sind, dann wird eine erste oder nächste Position
in den Unicast-Warteschlangen im Prozessblock 406 ausgewählt. Im
Prozessblock 408 wird eine Bitmap oder eine andere Darstellung
des Ziels oder der Ziele der Pakete an der ausgewählten Position
in den Ziel-Warteschlangen zu der Datenstruktur hinzugefügt, und
die Verarbeitung kehrt zum Prozessblock 404 zurück. In einem
Ausführungsbeispiel
werden für
Unicast- und/oder Multicast-Pakete dann, wenn ein bestimmtes Ziel
auf Grund eines Rückstaus
oder anderer Flusskontrollinformationen deaktiviert ist, unbenutzbar
ist oder im Augenblick unerreichbar ist, Anzeigen für dieses
Ziel nicht zu der Datenstruktur in den Prozessblöcken 408 oder 414 hinzugefügt.
-
Anderenfalls
wird dann, wenn es, wie im Prozessblock 410 bestimmt, noch
mehr Multicast-Pakete gibt, die gesendet werden sollen, eine erste
oder nächste
Position in der Multicast-Warteschlange im Prozessblock 412 ausgewählt. Im
Prozessblock 414 wird eine Bitmap oder eine andere Darstellung
der Ziele des Multicast-Pakets an der ausgewählten Position in der Multicast-Warteschlange
zu der Datenstruktur hinzugefügt,
und die Verarbeitung kehrt zum Prozessblock 410 zurück.
-
Anderenfalls
wird die Datenstruktur zu dem Scheduler im Prozessblock 430 gesendet.
Im Prozessblock 432 werden Anzeigen von dem Scheduler dahingehend
empfangen, welche Pakete gesendet werden sollen, und die Multicast-Warteschlangen werden
aktualisiert, wenn weniger als alle Ziele eines bestimmten Pakets
erlaubt werden. Das Senden dieser Pakete wird im Prozessblock 434 initiiert.
Die Verarbeitung kehrt zum Prozessblock 402 zurück.
-
4B veranschaulicht
ein Blockdiagramm einer Datenstruktur/eines Nachrichtenformats 450, die/das
in einem Ausführungsbeispiel
verwendet wird. Die Datenstruktur 450 weist typischerweise mehrere
Einträge
auf, von denen jeder ein Identifikationsfeld 451 zum Anzeigen,
ob der Eintrag Unicast- oder
Multicast-Paketanzeigen entspricht, und ein Bitmap-Feld 452 zum
Anzeigen der Ziele des Pakets aufweist.
-
4C veranschaulicht
einen Prozess, der in einem Ausführungsbeispiel
von einem zentralisierten Scheduling-System verwendet wird, um die
Paketanzeigen für
die verschiedenen sendenden Leitungskarten zu sammeln. Die Verarbeitung
beginnt mit dem Prozessblock 470 und geht weiter zum Prozessblock 472,
bei dem eine Nachricht empfangen wird. Im Prozessblock 474 werden
eine oder mehrere Paketanzeigewarteschlangen oder andere Datenstrukturen
aktualisiert, und die Verarbeitung kehrt zum Prozessblock 472 zurück.
-
5 veranschaulicht
einen Prozess, der in einem Ausführungsbeispiel
von jedem der Anforderungs-Generatoren verwendet wird, typischerweise einen
für jede
Leitungskarte, die mit dem blockierungsfreien Paket-Switch assoziiert
ist. Die Verarbeitung beginnt mit dem Prozessblock 500.
Wenn dies, wie im Prozessblock 502 bestimmt, eine erste
Iteration ist, dann wird im Prozessblock 504 der Wert von MAX
auf die maximale Anzahl von Paketen gesetzt, die von der Leitungskarte
in einer Paketzeit gesendet werden können, was typischerweise der
Anzahl an Switch-Eingangsports entspricht, mit denen die Leitungskarte
verbunden ist. Jeder Anforderungs-Generator wird typischerweise
eine kumulative Anzahl von Anforderungen ausstehen haben, die er
in einem Scheduling-Zyklus bedienen kann.
-
Wenn
dies, wie im Prozessblock 506 bestimmt, eine Unicast-Iteration
ist, dann geht die Verarbeitung weiter zum Prozessblock 508,
um einen Satz von Anforderungen für jeden der Gewährungs-Arbiter
anzuzeigen. Obwohl es mehr Ausgänge
gibt, als sie im Prozessblock 508 bestimmt werden, wird
ein Ausgang im Prozessblock 510 ausgewählt, und die Anzahl der gewünschten
Pakete, die zu dem bestimmten Ausgang gesendet werden sollen (bis
zu der maximalen Anzahl von Paketen, die das Ziel tatsächlich in
einer Paketzeit empfangen kann), wird im Prozessblock 512 bestimmt.
Wenn diese Zahl größer als
der Wert von MAX ist, wie im Prozessblock 514 bestimmt,
dann wird diese Zahl im Prozessblock 516 auf MAX gesetzt.
Im Prozessblock 518 werden die Anforderungen dem entsprechenden Gewährungs-Arbiter
signalisiert. Nachdem alle Ausgänge
verarbeitet worden sind, wartet der Anforderungs-Arbiter dann im
Prozessblock 520 auf das Ende der Annahme-Phase der aktuellen
Unicast-Iteration. Dann wird im Prozessblock 522 MAX um
die Anzahl an Annahmen, die den vorher gesendeten Anforderungen
von diesem Anforderungs-Arbiter in dieser Iteration entspricht,
verringert, und die Verarbeitung kehrt zum Prozessblock 502 zurück.
-
Wenn
dies, wie beim Prozessblock 506 bestimmt, eine Multicast-Iteration ist, dann
geht die Verarbeitung weiter zum Prozessblock 530, um CNT
auf Eins zu setzen und die Multicast-Anforderungs-Datenstruktur
zu leeren. Obwohl CNT nicht größer als MAX
ist und Multicast-Anforderungen vorhanden sind, die verarbeitet
werden sollen, wie im Prozessblock 532 bestimmt worden
ist, werden die Verarbeitungsblöcke 534 und 536 durchgeführt. Im
Prozessblock 534 wird eine Datenstruktur auf der Basis
der Ziele des Multicast-Pakets an der Position CNT in der Multicast-Warteschlange
gefüllt,
und CNT wird im Prozessblock 536 um Eins vergrößert. Wenn
dies erledigt ist, geht die Verarbeitung weiter zum Prozessblock 538,
um eine Multicast-Anforderung an jeden Gewährungs-Arbiter (natürlich könnte es
sich auch um eine Anforderung bezüglich Nicht-Multicast-Paketen
handeln) oder zumindest an diejenigen Gewährungs-Arbiter zu senden, die
eine anhängende Multicast-Anforderung
von diesem Anforderungs-Generator aufweisen. Die Verarbeitung geht
dann weiter zum Prozessblock 520.
-
6A veranschaulicht
ein Ablaufdiagramm eines Prozesses, der von einem Gewährungs-Arbiter in
einem Ausführungsbeispiel
verwendet wird. Die Verarbeitung beginnt mit dem Prozessblock 600 und geht
weiter zum Prozessblock 602, bei dem eine Gewährungs-Ausgangsposition
initialisiert wird. Als nächstes
werden im Prozessblock 604 die Anforderungen von den Anforderungs-Generatoren
empfangen, wobei diese Anforderungen dazu verwendet werden, eine
Datenstruktur zu füllen.
In einem Ausführungsbeispiel
wird die Datenstruktur 650 verwendet, die in 6B veranschaulicht
ist, wobei die Datenstruktur 650 eine unäre Bitmapdarstellung
der Anzahl von Anforderungen umfasst, die für jeden Slot (z.B. von jedem
Anforderungs-Generator)
empfangen wurden.
-
In
einem Ausführungsbeispiel
sind diese Bitmapdarstellungen rechtsbündig, wie dies in der Datenstruktur 660 veranschaulicht
ist. In einem Ausführungsbeispiel
sind diese Bitmapdarstellungen linksbündig, während in einem Ausführungsbeispiel diese
Bitmapdarstellungen in einer Art und Weise verwaltet werden, die
repräsentativ
für die
physikalischen Ports der Leitungskarte oder des Slots sind. Die
Ausrichtung der anfordernden Bits innerhalb einer solchen Bitmap
beeinflusst typischerweise das Paket-Scheduling, indem es sich auf die Aktualisierung
der Gewährungs-Ausgangsposition
auswirkt. Wenn die Bitmap rechtsbündig ist, ist es wahrscheinlicher,
dass die Ausgangsposition für
das Auswählen von
Bits (z.B. Bits, die Gewährungen
oder Annahmen entsprechen) zu Bits vorrückt, die einer nächsten Leitungskarte
oder einem nächsten
Slot entsprechen. Aber diese Rate des Vorrückens wird unter anderem immer
noch von der Verkehrsrate der Leitungskarte und dem Switch-Durchsatz
gedrosselt, wie dies von der Erzeugungsrate von Anforderungen, Gewährungen
und Annahmen angezeigt wird, sowie auch den Leitungskarten und Ports,
die den bestimmten Anforderungen, Gewährungen und Annahmen entsprechen.
-
Zurückkehrend
zu der Verarbeitung von 6A wird
dann, wenn dies, wie im Prozessblock 606 bestimmt, eine
erste Iteration der aktuellen Scheduling-Runde ist, im Prozessblock 608 MAX
auf die maximale Anzahl von Paketen gesetzt, die in einer Paketzeit
von der Leitungskarte empfangen werden kann, die diesem Gewährungs-Arbiter
entspricht. Als nächstes
wird dann, wenn dies, wie im Prozessblock 610 bestimmt,
eine Unicast-Iteration ist, im Prozessblock 612 die Gewährungs-Vorrückposition
(GAP; grant advancement position) bestimmt. Wenn eine Gewährung, die
der Gewährungs-Vorrückposition entspricht,
während
der ersten Iteration (oder in irgendeiner Iteration in einem Ausführungsbeispiel) akzeptiert
bzw. angenommen wird, dann wird die Gewährungs-Ausgangsposition derart
modifiziert, dass Gewährungen
in einer nächsten
Scheduling-Runde ausgehend von einer anderen Position erzeugt werden.
-
In
einem Ausführungsbeispiel
ist die Gewährungs-Vorrückposition
die erste Position in der Anforderungsdatenstruktur, die eine Anforderung
anzeigt, nach der Gewährungs-Ausgangsposition.
Unter Rückbezug
auf 6C veranschaulicht die Datenstruktur 660 zwei
rechtsbündige
Bitmaps. Wenn die Gewährungs-Ausgangsposition
bei Position 661 ist, dann ist die Gewährungs-Vorrückposition
bei Position 662. Wenn sich die Gewährungs-Ausgangsposition bei Position 662 befindet,
dann befindet sich die Gewährungs-Vorrückposition
bei Position 663. Wenn die Gewährungs-Ausgangsposition bei Position 663 liegt,
dann liegt die Gewährungs-Vorrückposition
bei Position 664.
-
Zurückkehrend
zu der Verarbeitung von 6A und
dem Prozessblock 614 werden dann, wenn die Iteration keine
Unicast-Iteration ist, im Prozessblock 616 bis zu MAX Multicast-Anforderungen beginnend
bei der Multicast-Zeigerposition (die allen Gewährungs-Arbitern in einem Ausführungsbeispiel gemeinsam
ist) erzeugt, und diese Gewährungen werden
zu den entsprechenden Annahme-Arbitern gesendet.
-
Anderenfalls
werden im Prozessblock 618 bis zu MAX Unicast-Gewährungen
beginnend bei der Gewährungs-Ausgangsposition
erzeugt. Als nächstes
werden im Prozessblock 620 diese erzeugten Gewährungen
zusammen mit einer Anzeige, ob eine Gewährung bei der Gewährungs-Vorrückposition enthalten
ist, zu den entsprechenden Annahme-Arbitern gesendet. Als nächstes werden
im Prozessblock 622 Anzeigen der angenommenen Gewährungen empfangen
und MAX wird um die Anzahl von angenommenen Gewährungen verringert, die von
diesem Gewährungs-Arbiter
erzeugt wurden. Wenn, wie im Prozessblock 624 bestimmt,
dies eine erste Iteration des aktuellen Scheduling-Zyklus ist, dann
wird dann, wenn, wie im Prozessblock 626 bestimmt, das
Paket an der Gewährungs-Vorrückposition
akzeptiert wurde, das Vorrück-Flag
im Prozessblock 628 gesetzt. Wenn dies, wie im Prozessblock 630 bestimmt,
eine letzte Iteration des aktuellen Scheduling-Zyklus ist, dann
wird dann, wenn, wie im Prozessblock 632 bestimmt, das
Vorrück-Flag
gesetzt ist, im Prozessblock 634 die Gewährungs-Ausgangsposition
zu der nächsten
Position nach der Gewährungs-Vorrückposition
vorgerückt.
Dann kehrt die Verarbeitung zum Prozessblock 604 zurück.
-
7A veranschaulicht
ein Ablaufdiagramm eines Prozesses, der von einem Annahme-Arbiter
in einem Ausführungsbeispiel
verwendet wird. Die Verarbeitung beginnt mit dem Prozessblock 700 und geht
weiter zum Prozessblock 702, bei dem eine Annahme-Ausgangsposition
initialisiert wird. Als nächstes
werden im Prozessblock 704 die Gewährungen und die Gewährungs-Vorrückpositions-Anzeigen
von den Gewährungs-Arbitern
empfangen, wobei diese Daten dazu verwendet werden, eine oder mehrere Datenstrukturen
zu füllen.
In einem Ausführungsbeispiel
wird die GAP-Datenstruktur 740,
wie sie in 7B veranschaulicht ist, dazu
verwendet, die Gewährungs-Annahme-Anzeigen
für jeden
der Gewährungs-Arbiter
(die in einem Ausführungsbeispiel
Leitungskarten-Slots entsprechen) zu verwalten, und eine Gewährungsdatenstruktur 750,
die eine unäre Bitmapdarstellung
der Anzahl an Gewährungen
umfasst, die für
jeden Slot (z.B. von jedem Anforderungs-Generator) empfangen wurden,
wird verwendet. Diese Bitmaps können
rechtsbündig
sein, müssen
aber nicht.
-
Zurückkehrend
zu der Verarbeitung von 7A und
dem Prozessblock 706 wird dann, wenn dies eine Unicast-Iteration
sowie auch eine erste Iteration des Scheduling-Zyklus ist, im Prozessblock 708 die
Annahme-Vorrückposition
typischerweise in der gleichen Art und Weise bestimmt, wie dies
bei der Gewährungs-Vorrückposition
der Fall ist, die hier beschrieben worden ist.
-
Als
nächstes
werden dann, wenn dies, wie im Prozessblock 710 bestimmt,
eine Multicast-Iteration ist, im Prozessblock 712 alle
Gewährungen
angenommen (da eine sendende Leitungskarte nicht mehr Multicast-Anforderungen sendet,
als sie bedienen kann), Annahme-Anzeigen werden übertragen, und die Verarbeitung
kehrt zum Prozessblock 704 zurück.
-
Anderenfalls
werden im Prozessblock 714 bis zu MAX Unicast-Gewährungen
beginnend mit der Gewährung
an der Annahme-Vorrückposition,
dann die Gewährungen
ausgehend von der Gewährungs-Ausgangsposition
angenommen. Als nächstes werden
im Prozessblock 716 die entsprechenden Gewährungs-Arbiter über ihre
angenommenen Gewährungen
informiert und ob ihre GAP-Gewährung angenommen
wurde. Als nächstes
wird im Prozessblock 718 MAX um die Anzahl von angenommenen Gewährungen
verringert, die von diesem Annahme-Arbiter erzeugt wurden. Wenn
dies, wie im Prozessblock 720 bestimmt, eine erste Iteration
des aktuellen Scheduling-Zyklus ist, dann wird dann, wenn, wie im
Prozessblock 722 bestimmt, die Gewährung an der Annahme-Vorrückposition
akzeptiert wurde, das Vorrück-Flag
im Prozessblock 724 gesetzt. Wenn dies, wie im Prozessblock 726 bestimmt,
eine letzte Iteration des aktuellen Scheduling-Zyklus ist, dann wird dann, wenn, wie
im Prozessblock 728 bestimmt, das Vorrück-Flag gesetzt ist, im Prozessblock 730 die
Annahme-Ausgangsposition zu der nächsten Position nach der Annahme-Vorrückposition
vorgerückt.
Dann kehrt die Verarbeitung zum Prozessblock 704 zurück.
-
8 veranschaulicht
einen Prozess, der in einem Ausführungsbeispiel
von einer Multicast-Steuerung verwendet wird, um den Multicast-Zeiger
zu aktualisieren. Die Verarbeitung beginnt beim Prozessblock 800 und
geht zum Prozessblock 802 weiter, bei dem die Multicast-Ausgangsposition
initialisiert wird. Als nächstes
werden im Prozessblock 804 Multicast- Anforderungsnachrichten von den verschiedenen
Anforderungs-Generatoren empfangen. Im Prozessblock 806 wird
die Multicast-Vorrückposition
auf die nächste
Position gesetzt, die eine Multicast-Anforderung bei oder nach der
Multicast-Ausgangsposition aufweist. Im Prozessblock 808 werden Multicast-Annahme-Anzeigen
empfangen. Wenn, wie im Prozessblock 801 bestimmt, alle
Anforderungen für
das Multicast-Paket an dem Kopf der Warteschlange, die der Multicast-Ausgangsposition
entsprechen, akzeptiert wurden (z.B. das erste Multicast-Paket,
das von dem Eingang gesendet werden soll, der der MAP-Position entspricht,
wurde vollständig
angenommen), dann wird im Prozessblock 812 die Multicast-Ausgangsposition
auf die nächste
Position nach der Multicast-Vorrückposition
gesetzt. Die Verarbeitung kehrt zum Prozessblock 804 zurück.
-
9 veranschaulicht
einen Prozess, der in einem Ausführungsbeispiel
für das
Konfigurieren eines Switch (z.B. der blockierungsfreien Switch Fabric)
und das Senden der akzeptierten Pakete verwendet wird. Die Verarbeitung
beginnt mit dem Prozessblock 900 und geht zum Prozessblock 902 weiter,
bei dem Anzeigen der angenommenen Verbindung empfangen werden. Im
Prozessblock 904 wird der Switch zu der geeigneten Zeit
so konfiguriert, dass er die passenden Eingangs- und Ausgangsports
des Switch verbindet, die den angenommenen Gewährungen entsprechen. Dann wird
im Prozessblock 906 das Senden der Pakete initiiert und
diese werden gesendet. Die Verarbeitung kehrt zum Prozessblock 902 zurück.
-
Angesichts
der vielen möglichen
Ausführungsbeispiele,
auf die die Prinzipien unserer Erfindung angewendet werden können, ist
zu erkennen, dass die Ausführungsbeispiele
und Ausführungsformen
davon, die hier unter Bezugnahme auf die Zeichnungen/Figuren beschrieben
worden sind, nur veranschaulichend sind und nicht als Begrenzung des
Schutzbereichs der Erfindung aufgefasst werden sollen. Beispielsweise
und wie für
einen Fachmann auf diesem Gebiet ersichtlich wäre, können viele der Prozessblockoperationen
umgeordnet werden, so dass sie vor, nach oder im Wesentlichen gleichzeitig mit
anderen Operationen durchgeführt
werden. Es können
auch viele verschiedene Formen von Datenstrukturen in verschiedenen
Ausführungsbeispielen verwendet
werden. Die Erfindung, wie sie hier beschrieben worden ist, zieht
alle solchen Ausführungsbeispiele
in Betracht, die in den Schutzbereich der folgenden Ansprüche und Äquivalente
davon fallen können.