DE60315965T2 - Vorrichtung zur paketablaufsteuerung - Google Patents

Vorrichtung zur paketablaufsteuerung Download PDF

Info

Publication number
DE60315965T2
DE60315965T2 DE60315965T DE60315965T DE60315965T2 DE 60315965 T2 DE60315965 T2 DE 60315965T2 DE 60315965 T DE60315965 T DE 60315965T DE 60315965 T DE60315965 T DE 60315965T DE 60315965 T2 DE60315965 T2 DE 60315965T2
Authority
DE
Germany
Prior art keywords
grant
acceptance
grants
packets
requests
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60315965T
Other languages
English (en)
Other versions
DE60315965D1 (de
Inventor
Flavio Palo Alto BONOMI
Patrick Pleasanton COSTELLO
Robert Brooklyn BRANDT
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cisco Technology Inc
Original Assignee
Cisco Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cisco Technology Inc filed Critical Cisco Technology Inc
Application granted granted Critical
Publication of DE60315965D1 publication Critical patent/DE60315965D1/de
Publication of DE60315965T2 publication Critical patent/DE60315965T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q3/00Selecting arrangements
    • H04Q3/64Distributing or queueing
    • H04Q3/66Traffic distributors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/15Flow control; Congestion control in relation to multipoint traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/26Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/253Routing or path finding in a switch fabric using establishment or release of connections between ports
    • H04L49/254Centralised controller, i.e. arbitration or scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/20Support for services
    • H04L49/201Multicast operation; Broadcast operation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/50Overload detection or protection within a single switching element
    • H04L49/505Corrective measures
    • H04L49/506Backpressure
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/50Overload detection or protection within a single switching element
    • H04L49/505Corrective measures
    • H04L49/508Head of Line Blocking Avoidance
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13003Constructional details of switching devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/1302Relay switches
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/1304Coordinate switches, crossbar, 4/2 with relays, coupling field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13103Memory
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13106Microprocessor, CPU
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13109Initializing, personal profile
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13141Hunting for free outlet, circuit or channel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13166Fault prevention
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13174Data transmission, file transfer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13204Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13216Code signals, frame structure
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13242Broadcast, diffusion, multicast, point-to-multipoint (1 : N)
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13299Bus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q2213/00Indexing scheme relating to selecting arrangements in general and for multiplex systems
    • H04Q2213/13389LAN, internet

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Control And Other Processes For Unpacking Of Materials (AREA)
  • Auxiliary Devices For And Details Of Packaging Control (AREA)
  • Container Filling Or Packaging Operations (AREA)

Description

  • 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) 103106 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 133134 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.

Claims (27)

  1. Verfahren, das Folgendes umfasst: Identifizieren eines Satzes von Anforderungen (604), die Paketen entsprechen, die von einer Vielzahl von Eingängen (104, 107) quer durch einen Paket-Switch (102) zu einem bestimmten Ausgang (105, 108) gesendet werden sollen; Aufrechterhalten einer Gewährungs-Ausgangsposition (602); Bestimmen einer Gewährungs-Vorrückposition (612); Identifizieren von ersten n Anforderungen in einer vorbestimmten Sequenz ausgehend von der Gewährungs-Ausgangsposition (616, 618), wobei n kleiner als die oder gleich der maximalen Anzahl von Paketen ist, die in einer einzelnen Paketzeit zu dem bestimmten Ausgang (105, 108) gesendet werden kann; und Aktualisieren der Gewährungs-Ausgangsposition (634) in Reaktion darauf, dass die ersten n Gewährungen eine bestimmte Gewährung enthalten, die der Gewährungs-Vorrückposition entspricht.
  2. Verfahren nach Anspruch 1, wobei das Aktualisieren der Gewährungs-Ausgangsposition nur dann durchgeführt wird, wenn die ersten n Gewährungen die bestimmte Gewährung umfassen, die der Gewährungs-Vorrückposition entspricht.
  3. Verfahren nach einem der vorhergehenden Ansprüche, wobei das Aktualisieren der Gewährungs-Ausgangsposition das Einstellen eines Wertes der Gewährungs-Ausgangsposition auf eine Position jenseits der Gewährungs-Vorrückposition (634) umfasst.
  4. Verfahren nach einem der vorhergehenden Ansprüche, das des Weiteren Folgendes umfasst: Verwalten einer Bitmapdatenstruktur, die den Satz von Anforderungen anzeigt; und wobei die Gewährungs-Ausgangsposition und die Gewährungs-Vorrückposition eine oder mehrere Positionen innerhalb der Bitmapdatenstruktur identifizieren.
  5. Verfahren nach Anspruch 4, wobei die Bitmapdatenstruktur eine Bitmapdarstellung umfasst, die jedem der Vielzahl von Eingängen (104, 107) entspricht.
  6. Verfahren nach einem der vorhergehenden Ansprüche, wobei der Satz von Anforderungen höchstens n Anforderungen von jedem Eingang der Vielzahl von Eingängen (104, 107) umfasst.
  7. Verfahren nach einem der vorhergehenden Ansprüche, wobei der Satz von Anforderungen von jedem bestimmten Eingang der Vielzahl von Eingängen (104, 107) höchstens die maximale Anzahl von Paketen umfasst, die jeder bestimmte Eingang in der einzelnen Paketzeit senden kann.
  8. Verfahren nach einem der vorhergehenden Ansprüche, wobei n eine ganze Zahl größer oder gleich 2 ist.
  9. Verfahren nach einem der vorhergehenden Ansprüche, wobei n anfänglich gleich der maximalen Zahl von Paketen ist, die in einer einzelnen Paketzeit gesendet werden können, und wobei n für eine nachfolgende Scheduling-Iteration um die Anzahl von Gewährungen reduziert wird.
  10. Verfahren, das Folgendes umfasst: Erzeugen eines Satzes von Anforderungen (512), die den Paketen entsprechen, die von einem bestimmten Eingang (104, 107) quer durch einen Paket-Switch (102) zu einer Vielzahl von Ausgängen (105, 108) gesendet werden sollen; Identifizieren eines Satzes von Gewährungen, die in Reaktion auf den Satz von Anforderungen (704) erzeugt werden; Aufrechterhalten einer Annahme-Ausgangsposition (702); Bestimmen einer Annahme-Vorrückposition (708); Identifizieren von ersten m Gewährungen in einer vorbestimmten Sequenz (714) 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 (730) in Reaktion darauf, dass die ersten m Gewährungen eine bestimmte Annahme enthalten, die der Annahme-Vorrückposition entspricht.
  11. Verfahren nach Anspruch 10, wobei das Aktualisieren der Annahme-Ausgangsposition nur dann durchgeführt wird, wenn die ersten m Gewährungen die bestimmte Annahme umfassen, die der Annahme-Vorrückposition entspricht.
  12. Verfahren nach Anspruch 10 oder 11, wobei das Aktualisieren der Annahme-Ausgangsposition das Einstellen eines Wertes der Annahme-Ausgangsposition auf eine Position jenseits der Annahme-Vorrückposition (730) umfasst.
  13. Verfahren nach Anspruch 10, 11 oder 12, das des Weiteren Folgendes umfasst: Verwalten einer Bitmapdatenstruktur, die den Satz von Gewährungen anzeigt; und wobei die Annahme-Ausgangsposition und die Annahme-Vorrückposition eine oder mehrere Positionen innerhalb der Bitmapdatenstruktur identifizieren.
  14. Verfahren nach Anspruch 13, wobei die Bitmapdatenstruktur eine Bitmapdarstellung enthält, die jedem der Vielzahl von Ausgängen (105, 108) entspricht.
  15. Verfahren nach einem der Ansprüche 10 bis 14, wobei der Satz von Anforderungen höchstens m Anforderungen von dem bestimmten Eingang (104, 107) enthält.
  16. Verfahren nach einem der Ansprüche 10 bis 15, wobei der Satz von Anforderungen für jeden bestimmten Ausgang der Vielzahl von Ausgängen (105, 108) höchstens die maximale Anzahl von Paketen enthält, die zu jedem bestimmten Ausgang in der einzelnen Paketzeit gesendet werden können.
  17. Verfahren nach Anspruch 5 oder 14, wobei die Bitmapdarstellungen rechtsbündig sind.
  18. Verfahren nach einem der Ansprüche 10 bis 17, wobei m eine ganze Zahl größer oder gleich 2 ist.
  19. Verfahren nach einem der Ansprüche 10 bis 18, wobei m anfänglich gleich der maximalen Anzahl an Verbindungen ist, die in einer einzelnen Paketzeit verwendet werden können, und wobei n für eine nachfolgende Scheduling-Iteration um die Anzahl an Gewährungen reduziert wird.
  20. Computerprogramm oder Computerprogramm-Erzeugnis oder computerlesbares Medium, das Programmcodeeinrichtungen zum Durchführen der Schritte nach einem der Ansprüche 1 bis 19 umfasst, wenn das Programm in einer elektronischen Vorrichtung läuft.
  21. Vorrichtung mit: einer Vielzahl von Anforderungs-Generatoren (154); einer Vielzahl von Gewährungs-Arbitern (155), die mit der Vielzahl von Anforderungs-Generatoren (154) gekoppelt ist; einer Vielzahl von Annahme-Arbitern (156), die mit der Vielzahl von Gewährungs-Arbitern (155) gekoppelt ist; wobei jeder der Vielzahl von Anforderungs-Generatoren (154) zur Erzeugung von Anforderungen für seinen assoziierten Eingang einer Vielzahl von Eingängen eines Switch (151) konfiguriert ist; wobei jeder der Vielzahl von Gewährungs-Arbitern (155) zur Erzeugung von Gewährungen auf der Basis von einer oder mehreren empfangenen Anforderungen konfiguriert ist, wobei die Gewährungen einer Berechtigung zum Senden zu seinem assoziierten Ausgang einer Vielzahl von Ausgängen des Switch (151) entsprechen, wobei die Gewährungs-Arbiter Einrichtungen zum Aufrechterhalten einer Gewährungs-Ausgangsposition (602), Einrichtungen zum Bestimmen einer Gewährungs-Vorrückposition (612), Einrichtungen zum Identifizieren von ersten n Anforderungen in einer vorbestimmten Sequenz ausgehend von der Gewährungs-Ausgangsposition (616, 618), wobei n kleiner als die oder gleich der maximalen Anzahl von Paketen ist, die in einer einzelnen Paketzeit zu dem assoziierten Ausgang (105, 108) gesendet werden kann; und Einrichtungen zum Aktualisieren der Gewährungs-Ausgangsposition (634) in Reaktion darauf umfasst, dass die ersten n Gewährungen eine bestimmte Gewährung enthalten, die der Gewährungs-Vorrückposition entspricht; und wobei jeder der Vielzahl von Annahme-Arbitern Einrichtungen zum Erzeugen von Annahmen auf der Basis von einer oder mehreren empfangenen Gewährungen umfasst, wobei die Annahmen seinem assoziierten Eingang der Vielzahl von Eingängen (104, 107) entsprechen.
  22. Vorrichtung nach Anspruch 21, des Weiteren mit einer Vielzahl von Paketanzeigegeneratoren, wobei jeder der Vielzahl von Paketanzeigegeneratoren mit einem anderen Eingang der Vielzahl von Eingängen (104, 107) und einem anderen der Vielzahl von Anforderungs-Generatoren (154) assoziiert ist; wobei jeder der Vielzahl von Paketanzeigegeneratoren so konfiguriert ist, dass er eine Anzeige von in Warteschlangen stehenden Paketen und ihren jeweiligen Zielen zu seinem assoziierten einen der Vielzahl von Anforderungs-Generatoren (154) sendet.
  23. Vorrichtung nach Anspruch 21 oder 22, des Weiteren mit Einrichtungen zum Senden von Paketen quer durch den Switch (151) von der Vielzahl von Eingängen (104, 107) zu einer Vielzahl von Ausgängen (105, 108) des Switch (151) in Übereinstimmung mit den Annahmen.
  24. Vorrichtung nach Anspruch 23, wobei die Annahmen einen ersten Unicast-Satz von Annahmen, einen zweiten Unicast-Satz von Annahmen und einen Multicast-Satz von Annahmen umfassen.
  25. Vorrichtung nach einem der Ansprüche 21 bis 24, wobei die Einrichtungen zum Erzeugen von Annahmen Einrichtungen zum Aufrechterhalten einer Annahme-Ausgangsposition (702), Einrichtungen zum Bestimmen einer Annahme-Vorrückposition (708), Einrichtungen zum Identifizieren von ersten m Gewährungen in einer vorbestimmten Sequenz (714) 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 assoziierten Eingang verwendet werden können, und Einrichtungen zum Aktualisieren der Annahme-Ausgangsposition (730) in Reaktion darauf umfassen, dass die ersten m Gewährungen eine bestimmte Annahme enthalten, die der Annahme-Vorrückposition entspricht.
  26. Vorrichtung nach einem der Ansprüche 21 bis 25, des Weiteren mit einer Multicast-Steuerung, die so konfiguriert ist, dass sie einen Multicast-Zeiger verwaltet.
  27. Vorrichtung nach Anspruch 26, wobei die Multicast-Steuerung des Weiteren so konfiguriert ist, dass sie eine Multicast-Vorrückposition (806) bestimmt und den Multicast-Zeiger (812) in Reaktion auf eine bestimmte Anforderung, die der Gewährung (810) der Multicast-Vorrückposition entspricht, eine bestimmte Gewährung, die der Annahme der Multicast-Vorrückposition entspricht, oder ein Multicast-Paket, das dem Senden der Multicast-Vorrückposition entspricht, aktualisiert.
DE60315965T 2002-03-30 2003-03-15 Vorrichtung zur paketablaufsteuerung Expired - Lifetime DE60315965T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/109,785 US7184443B2 (en) 2002-03-30 2002-03-30 Packet scheduling particularly applicable to systems including a non-blocking switching fabric and homogeneous or heterogeneous line card interfaces
US109785 2002-03-30
PCT/US2003/008218 WO2003085909A1 (en) 2002-03-30 2003-03-15 Packet scheduling mechanism

Publications (2)

Publication Number Publication Date
DE60315965D1 DE60315965D1 (de) 2007-10-11
DE60315965T2 true DE60315965T2 (de) 2008-05-15

Family

ID=28789768

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60315965T Expired - Lifetime DE60315965T2 (de) 2002-03-30 2003-03-15 Vorrichtung zur paketablaufsteuerung

Country Status (8)

Country Link
US (2) US7184443B2 (de)
EP (1) EP1491011B9 (de)
CN (1) CN100379204C (de)
AT (1) ATE372012T1 (de)
AU (1) AU2003218229B2 (de)
CA (1) CA2484436A1 (de)
DE (1) DE60315965T2 (de)
WO (1) WO2003085909A1 (de)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102015009702B3 (de) * 2015-07-30 2016-12-29 FOLID GmbH Getränkedose mit Schutzfolienlagerraum
DE102016011941B3 (de) * 2016-10-07 2017-10-19 Unipress Etiketten & Schilder e.K. Vorrichtung und Verfahren zum Zuschneiden einer Schutzfolie
DE102016010465A1 (de) 2016-08-31 2018-03-01 Unipress Etiketten & Schilder e.K. Schutzelement zum Abdecken des ausgießseitigen Endes eines Getränkebehälters
DE102016014511A1 (de) 2016-12-07 2018-06-07 Unipress Etiketten & Schilder e.K. Vorrichtung zum Erzeugen eines bahnförmigen Vorprodukts, aus dem Schutzkappen für Behälter herstellbar sind

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7184443B2 (en) 2002-03-30 2007-02-27 Cisco Technology, Inc. Packet scheduling particularly applicable to systems including a non-blocking switching fabric and homogeneous or heterogeneous line card interfaces
US7453898B1 (en) 2002-03-30 2008-11-18 Cisco Technology, Inc. Methods and apparatus for simultaneously scheduling multiple priorities of packets
US7194661B1 (en) * 2002-12-23 2007-03-20 Intel Corporation Keep alive buffers (KABs)
US7408937B1 (en) * 2003-01-09 2008-08-05 Cisco Technology, Inc. Methods and apparatus for identifying a variable number of items first in sequence from a variable starting position which may be particularly useful by packet or other scheduling mechanisms
US7571216B1 (en) * 2003-10-02 2009-08-04 Cisco Technology, Inc. Network device/CPU interface scheme
JP4394988B2 (ja) * 2004-03-19 2010-01-06 富士通株式会社 パケット読出し制御方法及び装置
US7061927B2 (en) 2004-04-12 2006-06-13 Cisco Technology, Inc. Weighted random scheduling particularly applicable to packet switching systems
US20050289280A1 (en) * 2004-06-23 2005-12-29 Tundra Semiconductor Corporation Switching fabric bridge
US20050289281A1 (en) * 2004-06-23 2005-12-29 Tundra Semiconductor Corporation Non-blocking switch fabric
US20060140193A1 (en) * 2004-12-29 2006-06-29 Nokia Corporation Optimization of a TCP connection
CA2562634A1 (en) * 2005-11-28 2007-05-28 Tundra Semiconductor Corporation Method and switch for broadcasting packets
US7850260B2 (en) * 2007-06-22 2010-12-14 Oracle America, Inc. Injection/ejection mechanism
CN108173787B (zh) * 2017-11-30 2020-12-18 成都成电光信科技股份有限公司 Fc交换机的数据传递路径选择方法、并行调度方法及装置
US11683276B2 (en) 2021-05-20 2023-06-20 Cisco Technology, Inc. Quasi-output queue behavior of a packet switching device achieved using virtual output queue ordering independently determined for each output queue

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6262697A (ja) * 1985-09-13 1987-03-19 Toshiba Corp デ−タ送信制御方式
US5500858A (en) * 1994-12-20 1996-03-19 The Regents Of The University Of California Method and apparatus for scheduling cells in an input-queued switch
JP3434642B2 (ja) * 1995-07-07 2003-08-11 株式会社東芝 パケットスケジューリング装置
AU6501496A (en) * 1995-07-19 1997-02-18 Ascom Nexion Inc. Point-to-multipoint transmission using subqueues
US6212182B1 (en) * 1996-06-27 2001-04-03 Cisco Technology, Inc. Combined unicast and multicast scheduling
KR100188961B1 (ko) * 1996-07-25 1999-06-01 윤종용 인터네트 서비스 장치 및 그 방법
US5923644A (en) * 1996-10-03 1999-07-13 The Board Of Trustees Of The Leland Stanford Junior University Apparatus and method for processing multicast cells in an input-queued multicast switch
US6445680B1 (en) * 1998-05-27 2002-09-03 3Com Corporation Linked list based least recently used arbiter
US6628646B1 (en) * 1999-05-14 2003-09-30 Nortel Networks Limited Programmable multicast scheduling for a network device
US6253080B1 (en) * 1999-07-08 2001-06-26 Globalstar L.P. Low earth orbit distributed gateway communication system
KR100382142B1 (ko) * 2000-05-19 2003-05-01 주식회사 케이티 단순반복매칭을 이용한 입출력버퍼형 스위치의 셀스케줄링 방법
US6961539B2 (en) * 2001-08-09 2005-11-01 Hughes Electronics Corporation Low latency handling of transmission control protocol messages in a broadband satellite communications system
US20030072326A1 (en) * 2001-08-14 2003-04-17 Mehdi Alasti Method and apparatus for parallel, weighted arbitration scheduling for a switch fabric
US6757246B2 (en) * 2001-08-14 2004-06-29 Pts Corporation Method and apparatus for weighted arbitration scheduling separately at the input ports and the output ports of a switch fabric
US7184443B2 (en) 2002-03-30 2007-02-27 Cisco Technology, Inc. Packet scheduling particularly applicable to systems including a non-blocking switching fabric and homogeneous or heterogeneous line card interfaces
US7539199B2 (en) 2003-02-21 2009-05-26 Gireesh Shrimali Switch fabric scheduling with fairness and priority consideration

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102015009702B3 (de) * 2015-07-30 2016-12-29 FOLID GmbH Getränkedose mit Schutzfolienlagerraum
DE102016010465A1 (de) 2016-08-31 2018-03-01 Unipress Etiketten & Schilder e.K. Schutzelement zum Abdecken des ausgießseitigen Endes eines Getränkebehälters
DE102016011941B3 (de) * 2016-10-07 2017-10-19 Unipress Etiketten & Schilder e.K. Vorrichtung und Verfahren zum Zuschneiden einer Schutzfolie
DE102016014511A1 (de) 2016-12-07 2018-06-07 Unipress Etiketten & Schilder e.K. Vorrichtung zum Erzeugen eines bahnförmigen Vorprodukts, aus dem Schutzkappen für Behälter herstellbar sind

Also Published As

Publication number Publication date
CA2484436A1 (en) 2003-10-16
CN100379204C (zh) 2008-04-02
US7184443B2 (en) 2007-02-27
EP1491011B1 (de) 2007-08-29
US7289443B1 (en) 2007-10-30
EP1491011B9 (de) 2008-02-13
DE60315965D1 (de) 2007-10-11
ATE372012T1 (de) 2007-09-15
CN1449160A (zh) 2003-10-15
WO2003085909A1 (en) 2003-10-16
EP1491011A1 (de) 2004-12-29
US20030193941A1 (en) 2003-10-16
AU2003218229B2 (en) 2009-02-26
AU2003218229A1 (en) 2003-10-20

Similar Documents

Publication Publication Date Title
DE60315965T2 (de) Vorrichtung zur paketablaufsteuerung
DE60128413T2 (de) Gekennzeichneter Prioritätswarteschlangescheduler
DE60036682T2 (de) Maschine zur gewichteten ringförmigen Ablaufsteuerung
DE69434329T2 (de) Verfahren und Vorrichtung zur Regulierung von Zellentransmissionen über virtuelle Kanäle
DE69917835T2 (de) Datenpfadstrukturen mit Rotatorumschalter
DE69924057T2 (de) Verfahren, Ablauffolgesteuerung, intelligenter Pufferspeicher, Prozessor und Telekommunikationssystem zum Verteilen verfügbahrer Bandbreite
DE69124645T2 (de) Verfahren und Schaltung zur Verkehrsformung
DE60222656T2 (de) Vorrichtung und verfahren für effizientes multicasting von datenpaketen
DE69909791T2 (de) Verteilte rechnerumgebung mit echt-zeit ablauffolgenlogik und zeit-deterministischer architektur
DE3850881T2 (de) Verfahren und Vorrichtung zur Nachrichtenübertragung zwischen Quellen- und Zielanwender durch einen anteilig genutzten Speicher.
DE69937219T2 (de) Torablauffolgesteuerung und Verfahren zur Dienstenablaufsteuerung mit Garantieen und hierarchische Ratenlimitierung mit oder ohne Überbuchungsmöglichkeit
DE10046656B4 (de) Scheduling-Verfahren für ein Master-Slave-System und Master-Slave-System
DE69931587T2 (de) RRGS-Round-Robin-Greedy Ablaufsteuerung für Eingangs-/Ausgangsgepufferte Terabitswitches
DE69937862T2 (de) Bandbreitensteuerung mit zwei Komponenten, zur Anwendung in digitalen Kommunikationssystemen mit mehreren Klassen
DE60110760T2 (de) Auslese-ablaufsteuerung für nicht aufeinander-folgende daten
EP0959407B1 (de) Verfahren zum Zuteilen von Aufträgen Datenverarbeitungssystem, Client-Datenbearbeitungsknoten und computerlesbares Speichermedium
DE60314205T2 (de) Arbiter für ein Vermittlungssystem mit Eingangspuffer
DE112006000282T5 (de) Abgleich von Datenpaketen für Mehrpunktverbindungen in einem mehrstufigen Schaltsystem
DE102007038964A1 (de) Verfahren und Vorrichtung zum Verarbeiten von Netzwerkdaten
DE60016996T2 (de) Hierarchischer Zuteiler für den Abwärtsweg in einem Satellit mit einer datenbearbeitenden Last
DE60222233T2 (de) Prozessor und Verfahren zur Erhaltung der Verarbeitungsreihenfolge von Paketen basierend auf Paketstromkennungen
DE60303444T2 (de) Ablaufsteuerung unter verwendung von quantumwerten und defizitwerten
EP0463207B1 (de) Programmgesteuerte Kommunikationsanlage
CH653783A5 (de) Steuereinrichtung, insbesondere fuer fernsprechvermittlungsanlagen.
DE102021213414A1 (de) Routing mit einem switch mit festen zuordnungen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: BOSCH JEHLE PATENTANWALTSGESELLSCHAFT MBH, 80639 M