DE69737357T2 - Speicherorganisation in einer vermittlungsvorrichtung - Google Patents

Speicherorganisation in einer vermittlungsvorrichtung Download PDF

Info

Publication number
DE69737357T2
DE69737357T2 DE69737357T DE69737357T DE69737357T2 DE 69737357 T2 DE69737357 T2 DE 69737357T2 DE 69737357 T DE69737357 T DE 69737357T DE 69737357 T DE69737357 T DE 69737357T DE 69737357 T2 DE69737357 T2 DE 69737357T2
Authority
DE
Germany
Prior art keywords
memory
router
cell
data
cells
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
DE69737357T
Other languages
English (en)
Other versions
DE69737357D1 (de
Inventor
S. Pradeep Mountain View SINDHU
C. Dennis Mountain View FERGUSON
O. Bjorn Palo Alto LIENCRES
Nalini Sunnyvale AGARWAL
Hann-Hwan San Jose JU
Marcelino Raymond Mountain View LIM
Mirzazadeh Rasoul Fremont OSKOUY
Sreeram Sunnyvale VEERAGANDHAM
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.)
Juniper Networks Inc
Original Assignee
Juniper Networks 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
Priority claimed from US08/767,576 external-priority patent/US5909440A/en
Priority claimed from US08/844,171 external-priority patent/US5905725A/en
Application filed by Juniper Networks Inc filed Critical Juniper Networks Inc
Application granted granted Critical
Publication of DE69737357D1 publication Critical patent/DE69737357D1/de
Publication of DE69737357T2 publication Critical patent/DE69737357T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/72Routing based on the source address
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/74591Address table lookup; Address filtering using content-addressable memories [CAM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/622Queue service order
    • H04L47/6225Fixed service order, e.g. Round Robin
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/104Asynchronous transfer mode [ATM] switching fabrics
    • H04L49/105ATM switching elements
    • H04L49/108ATM switching elements using shared central buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/15Interconnection of switching modules
    • H04L49/1515Non-blocking multistage, e.g. Clos
    • H04L49/153ATM switching fabrics having parallel switch planes
    • H04L49/1538Cell slicing
    • 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
    • H04L49/203ATM switching fabrics with multicast or broadcast capabilities
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3072Packet splitting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3081ATM peripheral units, e.g. policing, insertion or extraction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/60Software-defined switches
    • H04L49/608ATM switches adapted to switch variable length packets, e.g. IP packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9042Separate storage for different parts of the packet, e.g. header and payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9047Buffering arrangements including multiple buffers, e.g. buffer pools
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9057Arrangements for supporting packet reassembly or resequencing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q11/00Selecting arrangements for multiplex systems
    • H04Q11/04Selecting arrangements for multiplex systems for time-division multiplexing
    • H04Q11/0428Integrated services digital network, i.e. systems for transmission of different types of digitised signals, e.g. speech, data, telecentral, television signals
    • H04Q11/0478Provisions for broadband connections
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5638Services, e.g. multimedia, GOS, QOS
    • H04L2012/5646Cell characteristics, e.g. loss, delay, jitter, sequence integrity
    • H04L2012/5652Cell construction, e.g. including header, packetisation, depacketisation, assembly, reassembly
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5678Traffic aspects, e.g. arbitration, load balancing, smoothing, buffer management
    • H04L2012/5679Arbitration or scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5678Traffic aspects, e.g. arbitration, load balancing, smoothing, buffer management
    • H04L2012/5681Buffer or queue management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/103Packet switching elements characterised by the switching fabric construction using a shared central buffer; using a shared memory
    • 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/252Store and forward routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Description

  • Hintergrund
  • Die vorliegende Erfindung betrifft allgemein Datenroutingsysteme und insbesondere Verfahren und Vorrichtungen zum effizienten Routen von Paketen durch ein Netzwerk.
  • In einem paketvermittelten Kommunikationssystem ist ein Router eine Schaltvorrichtung, welche an einem Port Pakete empfängt, die Daten oder Steuerinformationen enthalten, und er routet auf der Grundlage von Zielinformationen, die in dem Paket enthalten sind, das Paket aus einem anderen Port zu dem Ziel (oder dem Zwischenziel).
  • Herkömmliche Router führen diese Schaltfunktion durch Auswerten von Headerinformationen aus, welche in einem ersten Datenblock in dem Paket enthalten sind, um den geeigneten Ausgangsport für ein bestimmtes Paket zu bestimmen.
  • Ein effizientes Schalten von Paketen durch den Router ist von besonderer Bedeutung. Mit Bezug nun auf 1a schließt ein herkömmlicher Router eine Mehrzahl von Eingangsports 2, von denen jeder einen Eingangspuffer (Speicher) 4 enthält, eine Schaltvorrichtung 6 und eine Mehrzahl von Ausgangsports 8 ein.
  • Datenpakete, die an einem Eingangsport 2 empfangen werden, werden zumindest zeitweilig in dem Eingangspuffer 4 gespeichert, während Zielinformationen, die mit jedem Paket assoziiert sind, decodiert werden, um das geeignete Schalten durch die Schaltvorrichtung 6 zu bestimmen. Die Größe des Eingangspuffers 4 basiert teilweise auf der Geschwindigkeit, mit der die Zielinformationen decodiert werden können. Wenn der Decodierprozess, vergleichen mit der Rate, mit der Pakete empfangen werden, zu lange dauert, können groß dimensionierte Speicherelemente erforderlich werden oder Pakete können verloren gehen.
  • Zusätzlich kann die Größe des Eingangspuffers durch eine Bedienung beeinflusst werden, die als "Blocking" bezeichnet wird. Pakete können dazu gezwungen werden, in dem Eingangspuffer zu verbleiben, nachdem die Zielinformationen decodiert worden sind, wenn die Schaltvorrichtung keine Verbindung aufbauen kann. Blocking bezieht sich auf einen Zustand, in dem aufgrund der Nichtverfügbarkeit des gewünschten Ausgangsports (der Port ist belegt, z. B. durch Routen eines anderen Pakets von einem verschiedenen Eingangsport) keine Verbindung in dem Schalter hergestellt werden kann. Zusammenfassend hängt die Größe des Eingangspuffers 4 von einer Anzahl von Faktoren ab, welche die Leitungseingangsrate, die Geschwindigkeit des Suchprozesses und die Blocking-Eigenschaften für die Schaltvorrichtung einschließen.
  • Unglücklicherweise sind herkömmliche Router in einer Anzahl von Aspekten ineffizient. Jeder Eingangsport schließt einen bestimmten Eingangspuffer ein, und in diesem Design ist eine Speicherteilung unter den Eingangsports nicht vorgesehen. Jeder Eingangspuffer muss so dimensioniert werden, dass er für einen gegebenen Port die maximalen Durchsatzerfordernisse erfüllt. Designbeschränkungen (Kosten) erfordern jedoch oftmals kleinere Puffer für jeden Port. Mit den kleineren Puffern ergibt sich die Möglichkeit, dass Pakete aufgrund von Blocking-Zuständen verloren gehen. Während typischerweise in dem Router zusätzliche Speicherkapazitäten vorhanden sind (aufgrund der sich ändernden Verwendung der Eingangsports), sind keine Maßnahmen getroffen worden, aus diesem Zusatz einen Vorteil zu ziehen.
  • Um das Auftreten von verlorenen Paketen zu minimieren, entwickelten Designer Non-Head-of-Line-Blocking-Router. Mit Bezug nun auf 1b schließt ein herkömmlicher Non-Head-of-Line-Blocking-Router eine Mehrzahl von Eingangsports 2, von denen jeder einen Eingangspuffer (Speicher) 4 einschließt, eine Schaltvorrichtung 6 und eine Mehrzahl von Ausgangsports 8, von denen jeder einen Ausgangspuffer 9 besitzt, ein. Um ein Non-Head-of-Line-Blocking zur Verfügung zu stellen, ist jeder Ausgangsport 8 so konfiguriert, dass er einen Ausgangspuffer 9 einschließt. Jeder Ausgangsport könnte gleichzeitig Pakete ausgeben und neue Pakete für eine Ausgabe zu einer späteren Zeit empfangen. Wenn die Größe des Ausgangspuffers erhöht wird, gehen weniger Pakete aufgrund eines Head-of-Line-Blockings an Eingangsports verloren.
  • Diese Designs sind jedoch noch ineffizienter hinsichtlich der Speicherkapazität und der Kosten. Wiederum schließt jeder Ausgangsport einen bestimmten Ausgangspuffer ein und es ist keine Speicherteilung zwischen Ausgangsports in dem Design vorgesehen. Jeder Ausgangspuffer muss so dimensioniert sein, dass er für einen gegebenen Port die maximalen Durchsatzerfordernisse erfüllt (um seine Non-Head-of-Line-Blockings-Eigenschaften beizubehalten). Es besteht typischerweise sogar noch ein größerer Speicherkapazitätsüberfluss, jedoch sind keine Mittel unternommen worden, aus diesem Über fluss einen Vorteil zu ziehen. Zweimal die Menge und Bandbreite von Speicher ist zu verwenden, die erforderlich ist, die Menge an Daten, die durch diese Arten von Vorrichtungen bewegt werden, zu tragen.
  • Die Beispiele der Anordnungen aus dem Stand der Technik sind in US-A-5408469 und US-A-5168492 offenbart.
  • Zusammenfassung der Erfindung
  • Im Allgemeinen stellt in einem Aspekt die Erfindung einen Router zum Schalten von Datenpaketen von einer Quelle zu einem Ziel in einem Netzwerk zur Verfügung. Der Router schließt einen Eingangsport zum Empfangen eines Datenpakets und einen physikalisch verteilten Speicher, welcher zwei oder mehr Bänke einschließt, ein. Jede Speicherbank schließt einen globalen Datenbereich zum Speichern von Teilen des Datenpakets ein. Der Router schließt weiterhin einen Eingangsschalter zum Streamen über die Speicherbänke gleichförmiger Teile des Datenpakets, einen Kontroller zum Bestimmen des Paketroutens durch den Router und einen Ausgangsschalter zum Extrahieren der Reihe nach der Teile der Paketdaten, die in dem globalen Datenbereich in jeder Speicherbank gespeichert sind, und zum Weiterleiten der Paketdaten an einen geeigneten Ausgangsport und einen Ausgangsport zum Übermitteln des Datenpakets zu dem Ziel ein.
  • In einem weiteren Aspekt stellt die Erfindung einen Router zum Schalten von Datenpaketen von einer Quelle zu einem Ziel in einem Netzwerk, in dem der Router einen verteilten Speicher einschließt, ein. Der verteilte Speicher schließt zwei oder mehr Speicherbänke ein. Jede Speicherbank wird zum Speichern gleichförmiger Teile eines Datenpakets verwendet, das von einer Quelle empfangen wird, und von Linking-Informationen für jedes Datenpaket, um die Extraktion der gleichförmigen Teile eines Datenpakets von verteilten Orten in dem Speicher in geeigneter Reihenfolge zu ermöglichen, nachdem der Router eine Routingbestimmung ausgeführt hat.
  • Aspekte der Erfindung schließen viele Merkmale ein. Der verteilte Speicher schließt eine Ausgangsqueue zum Speichern einer Nachricht ein, welche das Routen des Datenpakets durch den Router anzeigt. Die Nachricht schließt Linking-Informationen zum Auslesen von zumindest einer ersten Zelle des Datenpakets aus dem verteilten Speicher ein.
  • Die Nachricht schließt Linking-Informationen für die ersten fünf Zellen des Datenpakets ein.
  • Die Nachricht schließt eine Adresse für eine indirekte Zelle ein. Die indirekte Zelle ist in dem verteilten Speicher gespeichert und schließt Linking-Informationen zum Extrahieren von Zellen der Reihe nach aus dem verteilten Speicher ein.
  • Jede Speicherbank schließt einen globalen Datenbereich zum Speichern von Teilen von Datenpaketen und einen Nachrichtenbereich zum Speichern von Nachrichten ein. Der Nachrichtenbereich wird so dimensioniert, dass er 1/5 der Größe des globalen Datenbereichs für eine gegebene Speicherbank besitzt.
  • Der Router schließt eine Mehrzahl von Multifunktions-Multiports ein. Jeder Multifunktions-Multiport schließt einen oder mehrere Eingangsports und Ausgangsports zum Empfangen und Übermitteln von Datenpaketen durch den Router ein. Ein Teil des verteilten Speichers befindet sich innerhalb jedes Multifunktions-Multiports, so dass jeder Multifunktions-Multiport eine Speicherbank, die einen globalen Speicherbereich und einen Nachrichtenbereich besitzt, einschließt. Der Nachrichtenbereich eines gegebenen Multifunktions-Multiports speichert Nachrichten für Datenpakete, die durch einen Ausgangsport des gegebenen Multifunktions-Multiports zu routen sind. Speicherlese- und Speicherschreibeoperationen von dem und auf den verteilten Speicher sind zu 64 Bytes dimensioniert.
  • Der Router schließt eine Abbildungseinrichtung zum Abbilden von einem virtuellen Adressenraum auf einen physikalischen Adressraum, der mit dem verteilten Speicher assoziiert ist, ein. Die Abbildungseinrichtung wird zum Detektieren veralteter Pakete in dem Speicher verwendet und ermöglicht ein einfaches Überschreiben derselben, so dass keine Ausschusssammlung von veralteten Paketen erforderlich ist.
  • In einem anderen Aspekt stellt die Erfindung ein Verfahren zum Routen eines Datenpakets durch einen Router in einem System, in dem Datenpakete zwischen einer Quelle und einem Ziel über ein Netzwerk, das den Router einschließt, übermittelt werden, zur Verfügung. Das Verfahren schließt das Empfangen des Datenpakets, das Teilen des Datenpakets in Zellen einer festgelegten Größe und Speichern der Zelle in einem verteilten Speicher ein. Der verteilte Speicher schließt zwei oder mehr Speicherbänke ein. Auf einanderfolgende Zellen von dem Datenpaket werden in aufeinander folgenden Bänken des verteilten Speichers gespeichert. Linking-Informationen werden in einer Bank des Speichers zum Linken von Zellen des Datenpakets, die über den verteilten Speicher verteilt gespeichert sind, gespeichert. Die Linking-Informationen werden für das Extrahieren der Zellen der Reihe nach für das Übermitteln von dem Router zu dem Ziel verwendet.
  • In einem anderen Aspekt stellt die Erfindung ein Verfahren zum Speichern eines Datenpakets in einem Router, während eine Suchmaschine den geeigneten Pfad durch den Router für das Datenpaket in einem System, das Datenpakete zwischen einer Quelle und einem Ziel über ein Netzwerk, das den Router einschließt, übermittelt, bestimmt, zur Verfügung. Das Verfahren schließt das Teilen des Pakets in Zellen festgelegter Länge und Speichern der Zelle und Linking-Informationen zum Rekonstruieren des Datenpakets über einen globalen Datenpuffer ein. Der globale Datenbereich schließt zwei oder mehr Speicherbänke ein. Das Datenpaket wird unter den Speicherbänken aufgeteilt.
  • In einem anderen Aspekt stellt die Erfindung ein Verfahren zum Bestimmen davon zur Verfügung, welche Datenpakete, die in einem Router gespeichert sind, durch den Router in einem System, das Datenpakete zwischen einer Quelle und einem Ziel über ein Netzwerk, das den Router einschließt, übermittelt, zu übermitteln sind, zur Verfügung. Das Verfahren schließt das Bestimmen einer Route durch den Router für ein Datenpaket ein. Die Route schließt eine Nachricht ein, die eine Startadresse in dem Speicher, in dem das Datenpaket gespeichert ist, anzeigt. Die Nachricht wird unter Einschluss des Queuens der Nachricht mit anderen Nachrichten, die an dem selben Ausgangsport des Routers in einer Stromqueue auszugeben sind, verarbeitet. Die Vollständigkeit der Stromqueue wird zusammen mit einem Verlustkriterium auf der Grundlage teilweise der Vollständigkeit der Stromqueue bestimmt. Es wird eine Zufallszahl erzeugt und mit dem Verlustkriterium verglichen. Die Nachricht wird auf der Grundlage der Ergebnisse des Vergleichs fallengelassen.
  • Aspekte der Erfindung schließen viele Merkmale ein. Der Vollständigkeitstest wird ausgeführt, wenn das Paket einen Kopf der Stromqueue erreicht. Die Vollständigkeit ist ein Prozentsatz und die erzeugte Zufallszahl liegt zwischen null und eins.
  • Unter den Vorteilen der Erfindung befinden sich einer oder mehrere der Folgenden. Es wird ein Schalter zur Verfügung gestellt, der eine effiziente Allozierung von Speicher ü ber Ports einschließt und kein Head-of-Line-Blocking zeigt. Die Allozierung ermöglicht es, dass sämtliche Ports Speicherressourcen teilen.
  • Die Speicherbandbreite des Systems kann so bemessen sein, dass sie speziellen von den Nutzern definierten Erfordernissen entspricht. Ein Schalter wird zur Verfügung gestellt, in dem die Menge von Speicher in den Schalter proportional zu der Systembandbreite ist, wobei die Konstante der Proportionalität die Rundlaufnetzwerkverzögerung ist.
  • Die Speicherbandbreite wird auf einem minimal notwendigen Niveau von ungefähr dem Zweifachen der Durchsatzrate gehalten. Die Speicherbandbreite kann vorteilhafter Weise durch die Verwendung von Plug-In-Modulen erweitert werden.
  • Ein einzelner systemweiter virtueller Adressenraum wird zur Verfügung gestellt, der es ermöglicht, dass bequem aus dem Speicher ausgelesen und in diesen geschrieben wird. Ein Adressierungsschema wird zur Verfügung gestellt, welches einen physikalischen Speicherraum (und seine assoziierten verfügbaren Speichermodule) auf einen virtuellen Raum abbildet, um die Berechnung von Speicheradressen zu vereinfachen und einen Mechanismus für das Detektieren bereitzustellen, wenn eine Nachricht (Route) auf Zellen zeigt, die, seit die Originaldaten in den Speicher geschrieben worden sind, überschrieben worden sind.
  • Es wir für jeden Port die Speicherbandbreite für Lese- und Schreibeoperationen gewährleistet.
  • Weitere Vorteile und Merkmale werden aus der folgenden Beschreibung und den Ansprüchen deutlich.
  • Kurze Beschreibung der Zeichnungen
  • 1a und 1b sind Blockdiagramme herkömmlicher Routenvorrichtungen.
  • 2a ist ein schematisches Blockdiagramm eines Datenroutingsystems gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 2b ist ein schematisches Blockdiagramm eines Routers gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 3a ist ein schematisches Blockdiagramm eines Multifunktionsports gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 3b ist ein schematisches Blockdiagramm, welches die Datenübermittlungen zwischen Komponenten des Routers von 2b gemäß einer Ausführungsform der vorliegenden Erfindung zeigt.
  • 3c ist eine Datenstruktur für eine Zelle, die zwischen einem Multifunktionsport und einem Eingangsschalter gemäß einer Ausführungsform der vorliegenden Erfindung übermittelt wird.
  • 4 ist ein schematisches Blockdiagramm eines Routers, welches den Zeitplan und die Reihenfolge von Übermittlungen von dem Eingangsport zu dem Eingangsschalter gemäß einer Ausführungsform der vorliegenden Erfindung zeigt.
  • 5a ist ein schematisches Blockdiagramm eines Eingangsschalters gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 5b ist ein schematisches Blockdiagramm eines Routers, welches den Zeitplan und die Reihenfolge von Übermittlungen von dem Eingangsport zu einem Speicher gemäß einer Ausführungsform der vorliegenden Erfindung zeigt.
  • 6 ist eine Datenstruktur für eine Routenanfrage, welche gemäß einer Ausführungsform der vorliegenden Erfindung in einem Schlüsselpuffer gespeichert ist.
  • 7 ist eine Datenstruktur für eine indirekte Zelle gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 8 ist eine Datenstruktur für eine Zelle, welche zwischen dem Eingangsschalter und einer Speicherbank gemäß einer Ausführungsform der vorliegenden Erfindung übermittelt wird.
  • 9 ist ein schematisches Blockdiagramm einer Reservierungstabelle gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 10 ist ein Flussdiagramm eines Prozesses des Ladens einer Reservierungstabelle gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 11a ist ein schematisches Blockdiagramm eines Hauptspeichers gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 11b ist ein schematisches Blockdiagramm eines globalen Datenpuffers gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 11c ist ein schematisches Blockdiagramm eines Routers, der gemäß einer Ausführungsform der vorliegenden Erfindung drei Speicherbänke einschließt.
  • 11d ist ein schematisches Blockdiagramm eines virtuellen Adressenblocks für die Verwendung bei der Adressierung eines Speichers gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 11e ist ein schematisches Blockdiagramm einer Indextabelle für die Verwendung bei dem Abbilden von einem physikalischen Adressenraum auf einen virtuellen Adressenraum gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 11f zeigt das Verhältnis zwischen physikalischen und einem virtuellen Adressen gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 11g ist ein Beispiel für ein Abbilden zwischen einem physikalischen Raum und einem virtuellen Raum entsprechend einer Ausführungsform der vorliegenden Erfindung.
  • 11h zeigt das Verhältnis zwischen einem physikalischen und einem virtuellen Adressenraum über die Zeit gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 12 ist ein schematisches Blockdiagramm eines Routers, welches den Zeitplan und die Reihenfolge von Übermittlungen von dem Eingangsport zu einem Speicher gemäß einer Ausführungsform der vorliegenden Erfindung einschließt.
  • 13 ist ein schematisches Blockdiagramm eines Kontrollers gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 14 ist eine Datenstruktur für eine Ausgabeanforderung, die von dem Kontroller an den Ausgangsschalter gemäß einer Ausführungsform der vorliegenden Erfindung übermittelt wird.
  • 15a ist ein schematisches Blockdiagramm eines Ausgangsschalters gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 15b ist eine Datenstruktur für eine Zelle, welche von einer Speicherbank zu einem Ausgangsschalter gemäß einer Ausführungsform der vorliegenden Erfindung ausgegeben wird.
  • 16 ist eine Datenstruktur für eine Zelle, welche von dem Ausgangsschalter zu einem Ausgangsport in einem Multifunktions-Multiport gemäß einer Ausführungsform der vorliegenden Erfindung übermittelt wird.
  • 17a ist ein schematisches Blockdiagramm für einen Ausgabeabschnitt eines Multifunktionsports gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 17b ist ein schematisches Blockdiagramm für ein Queue-System zum Speichern von Nachrichten gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 18 ist ein Flussdiagramm für einen Prozess des Routens eines Pakets durch einen Router gemäß einer Ausführungsform der vorliegenden Erfindung.
  • Ausführliche Beschreibung
  • Mit Bezug auf 2a ist in einem Paketschaltsystem eine Quelle 10 mit einem oder mehreren Routern 20 für das Vermitteln von Paketen zu einem oder mehreren Zielen 30 verbunden. Jeder Router schließt eine Mehrzahl von Multifunktions-Multiports ein, die mit verschiedenen Quellen und Zielen verbunden sind. Ein Paket von Quelle 10 kann, bevor es an seinem Ziel anlangt, mehr als einen Router 20 passieren.
  • Mit Bezug auf 2b schließt jeder Router 20 einen Eingangsschalter 100, einen Ausgangsschalter 102, einen globalen Datenpuffer 104, welcher eine oder mehr Speicherbänke 105 einschließt, einen Kontroller 106 und eine Mehrzahl von Multifunktions-Multiports 150 (150-0 bis 150-3) ein. Mit dem Kontroller 106 ist ein Kontrollerspeicher 109 zum Speichern einer Routingtabelle assoziiert. Der Eingangsschalter 100 und der Ausgangsschalter 102 sind mit jedem Multifunktions-Multiport 150 in dem Router 20 verbunden. In einer Ausführungsform schließt der Router 20 Plug-and-Play-Multifunktions-Multiports ein, die eine einfache Erweiterungsmöglichkeit ermöglichen. Die vorliegende Erfindung wird mit Bezug auf ein System beschrieben, welches acht Multifunktions-Multiports 150 einschließt (selbst wenn 2b lediglich vier zeigt), wobei jeder Multifunktions-Multiport bis zu sechzehn Eingangsports und sechzehn Ausgangsports enthält. Andere Konfigurationen können in Abhängigkeit von den Benutzerladebedingungen verwendet werden. Jeder Multifunktions-Multiport schließt einen oder mehr Eingangsports, einen oder mehr Ausgangsports und einen Speicher ein. Die Konfiguration und Arbeitsweise der Multifunktions-Multiports wird unten in größerer Ausführlichkeit beschrieben.
  • Im Betrieb werden Pakete an einem Multifunktions-Multiport 150 empfangen, zu einem Eingangsschalter 100 übermittelt und zeitweilig in einem globalen Datenpuffer 104 gespeichert. Wenn das Paket von dem Schalter 100 empfangen worden ist, wird ein Schlüssel aus dem ersten Datenblock in dem Paket gelesen und an den Kontroller 106 übermittelt. Der Schlüssel enthält Zielinformationen, welche aus dem Headerfeld, das mit dem ersten Block von Daten in einem Paket assoziiert ist, und anderen Informationen (wie der Quellen-ID, Prioritätsdaten- und Fluss-ID) abgeleitet werden.
  • Eine Routensuchmaschine 110 in dem Kontroller 106 führt eine Suche auf der Grundlage der Schlüsselinformationen durch und gibt ein Ergebnis, welches den Ausgabemultiport enthält, der mit dem Ziel assoziiert ist, aus. Das Ergebnis wird mit anderen Informa tionen (wie der Quellen-ID, der Fluss-ID und der Paketlänge) für das Routen des Pakets durch den Router 20 gekoppelt und als eine Nachricht von dem Kontroller 106 an den Ausgangsschalter 102 übermittelt. Der Ausgangsschalter 102 übermittelt die Nachricht an den identifizierten Multifunktions-Multiport 150. Nach Empfangen der Nachrichteninformationen initiiert der Multifunktions-Multiport 150 die Übermittlung des Pakets von dem globalen Datenpuffer 104 durch den Ausgangsschalter 102 an den geeigneten Multifunktions-Multiport 150.
  • Multifunktions-Multiports
  • Mit Bezug auf 3a schließt jeder Multifunktions-Multiport 150 einen Eingabeabschnitt 270, einen Ausgabeabschnitt 280 und einen Speicherabschnitt 290 ein.
  • Der Eingabeabschnitt 270 schließt eine Leitungseingangsschnittstelle 300, einen Daten-Handler 302 und eine Eingangsschalterschnittstelle 304 ein. Der Ausgabeabschnitt 280 schließt einen Ausgabeanforderungsprozessor 306, eine Leitungsausgangsschnittstelle 308, eine Speichervorrichtung 310, einen Stromausgangspuffer 312 (einen für jeden Ausgangsstrom), einen Ausgabeformatierer 314, eine Ausgangsschalterschnittstelle 316 und einen Head-and-Tail-Queue-Puffer 318 ein. Zudem schließt der Ausgabeabschnitt einen Teil der Eingangsschalterschnittstelle 304 ein. Genauer schließt die Eingangsschalterschnittstelle 304 Leseanforderungsqueues 305, eine für jede Speicherbank, ein. Die Verwendung und der Betrieb der Leseanforderungsqueues, Stromausgangspuffer und Head-and-Tail-Queue werden unten in Verbindung mit den 17a und 17b in größerer Ausführlichkeit diskutiert.
  • Der Speicherabschnitt 290 schließt eine Speicherbank 105 (welche einen Teil des globalen Datenpuffers 104 darstellt) und einen Nachrichtenqueuekörper 319 ein. Die Verwendung und der Betrieb des Speicherabschnitts werden unten in Verbindung mit 17b in größerer Ausführlichkeit diskutiert.
  • Der Multifunktions-Multiport wird in Verbindung mit dem Eingangsschalter, dem Ausgangsschalter und dem Kontroller, wie es in 3b gezeigt ist, verwendet. Die verschiedenen Teilkomponenten des Eingabeabschnitts, des Ausgabeabschnitts und des Speicherabschnitts werden unten in größerer Ausführlichkeit beschrieben. Die Kombination der Vorrichtungen in einer einzelnen Einheit vereinfacht die Schnittstellen zwischen den Komponenten.
  • Mit Bezug wiederum auf 3a werden Pakete an der Leitungseingangsschnittstelle 300 empfangen. Wenn die Pakete empfangen werden, teilt der Daten-Handler 302 die empfangenen Pakete in Zellen festgelegter Länge. In einer Ausführungsform beträgt die Länge jeder Zelle 80 Bytes mit 16 Bytes eines internen Headers (Steuerinformationen) und 64 Bytes an Zellendaten. Wenn der Daten-Handler die einkommenden Pakete in Zellen festgelegter Länge teilt, gibt er gleichzeitig die Zellen durch die Eingangsschalterschnittstelle 304 an den Eingangsschalter 100 aus.
  • Das Format für die Übermittlungen zwischen dem Multifunktions-Multiport und dem Eingangsschalter ist in 3c gezeigt. Eine Zelle, die von einem Multifunktions-Multiport 150 an den Eingangsschalter übermittelt wird, enthält einen Zellenheader 352 und Zellendaten 354. Der Zellenheader 352 schließt ein Typfeld 356, ein Stromfeld 358 und Paketheaderfelder 360 ein. Zusätzlich schließt der Zellenheader 352 eine unabhängige Leseanforderung in der Form eines Multifunktions-Multiport-Identifiers 366 und einer Adresse 368 ein.
  • Das Typfeld 356 zeigt den Typ der von dem Multifunktions-Multiport zu übermittelnden Zelle an. An jedem Zellenschlitz (20 Taktzyklen in einer Ausführungsform) kann ein Multifunktions-Multiport entweder eine Datenzelle, einen Platzhalter für eine indirekte Zelle oder einen Platzhalter für eine verspätete indirekte Zelle übermitteln. Datenzellen enthalten Daten, die mit einem eingehenden Paket assoziiert sind. Ein Platzhalter für eine indirekte Zelle ist eine leere Zelle und wird in Verbindung mit einem indirekten Adressieren für das Speichern der Zelle in dem globalen Datenpuffer verwendet. Platzhalter für verspätete indirekte Zellen treten auf, wenn ein Datenstrom, der eine indirekte Adressierung erfordert, zu einer Zeit endet, die vor der bestimmten Zeit für das Schreiben der letzten indirekt adressierenden Zelle, die mit dem Datenstrom assoziiert ist, zu dem globalen Datenpuffer 104 liegt. Das Erzeugen und die Arbeitsweise von indirekten Platzhaltern und verspäteten indirekten Platzhaltern werden unten in Verbindung mit 7 in größerer Ausführlichkeit diskutiert.
  • Das Stromfeld 358 zeigt den Strom an, zu dem die Zellendaten gehören. In einer Ausführungsform der vorliegenden Erfindung ist jeder Multifunktions-Multiport in der Lage, bis zu sechzehn verschiedene Ströme von Daten zu der selben Zeit, einen auf jedem der jeweiligen 16 Eingangsports, zu behandeln.
  • Das Paketheaderfeld 360 enthält Header-Informationen, die mit einem gegebenen Paket assoziiert sind, und schließt Start-Offset-Informationen, die Paketlänge und Schnittstellenindexinformationen ein.
  • Der Multifunktions-Multiport-Identifier 366 identifiziert den Multifunktions-Multiport, der die Leseanforderung ausgibt. Die Adresse 368 zeigt die Adresse in dem globalen Datenpuffer 104 an, welche zu lesen ist.
  • Mit Bezug auf 4 wird eine einzelne Zelle 450 von einem Multifunktions-Multiport 150 zu dem Eingangsschalter 100 zu jedem Zellen-(Zeit)-Schlitz "T" übermittelt. Für einen gegebenen Zellenschlitz "T" empfängt der Eingangsschalter 100 insgesamt "N" Zellen, wobei "N" gleich der Anzahl der Multifunktions-Multiports ist.
  • In einer Ausführungsform können Zellen von einem gegebenen Strom in einer Reihenfolge in den Speicher geschrieben werden, die von der Ankunftsreihenfolge verschieden ist. Diese Schreiboperationen außerhalb der Reihenfolge werden ausgeführt, um einen effizienten Gebrauch der knappen Bandbreite zwischen den Multifunktions-Multiports und dem Eingangsschalter zu machen. Wenn ein Paket an dem Multifunktions-Multiport ankommt, wird es, wenn die Bytes ankommen, in Zellen geteilt, und die Zellen werden auf dem Weg zu dem Eingangsschalter in Ausgangsqueues pro Bank positioniert. Diese Queues sind so konstruiert, dass sie die knappe Zwischenverbindungsbandbreite zwischen den Strömen eines Multifunktions-Multiports in der effizientesten Weise, die möglich ist, teilen, jedoch weisen sie den nachteiligen Effekt auf, dass sie die Zellen an der Schnittstelle zwischen dem Multifunktions-Multiport und dem Eingangsschalter neu ordnen. Daher können die Zellen eines gegebenen Stroms an dem Eingangsschalter ungeordnet ankommen. Der Multifunktions-Multiport markiert die Datenzellen eines Stroms mit einem von vier Codes: erste Zelle (FC); Zwischendatenzelle (DC); letzte Zelle (LC); oder erste Zelle, welche ebenso eine letzte Zelle ist (FLC).
  • Eingangsschalter
  • Mit Bezug auf die 2b und 5a schließt ein Eingangsschalter 100 einen Round-Robin-Daten-Handler 500, eine oder mehrere Eingangsschnittstellen (501-0 bis 501-7, eine für jeden Multifunktions-Multiport 150), eine oder mehrere Speicherschnittstellen 502 (502-0 bis 502-7, eine mit jeder Speicherbank assoziiert), eine gleiche Anzahl an Zeigern 504 (504-0 bis 504-7), einen Ausgangsprozessor 505, eine oder mehrere Ausgangsschnittstellen 506 (506-0 bis 506-7, eine für jeden Multifunktions-Multiport 150), eine Reservierungstabelle 508, einen Prozessor für indirekte Zellen 510, eine Kontrollerschnittstelle 512 und einen Lesekontroller 517 ein.
  • a) Übermittlungen durch den Eingangsschalter
  • Der Round-Robin-Daten-Handler 500 empfängt Zellen von jedem Multifunktions-Multiport und übermittelt diese an den Ausgangsprozessor 505 zur Ausgabe an eine geeignete Speicherbank 105 in dem globalen Datenpuffer 104. Der Round-Robin-Daten-Handler 500 bedient die Eingaben (Zellen), die auf Eingangsschnittstellen 501 in einem Round-Robin empfangen werden, in Zeit-Divisions-Muliplext-Weise. Das heißt, dass eine Zelle für einen gegebenen Zellenschlitz von jedem Multifunktions-Multiport an dem Round-Robin-Daten-Handler 500 empfangen wird und sodann in den Ausgangsprozessor 505 für die Übermittlung an den nächsten Zellenschlitz zu einer Speicherbank 105 in dem globalen Datenpuffer 104 übermittelt wird. An dem nächsten Zeitzellenschlitz übermittelt der Daten-Handler 500 die nächste Zelle, die von dem selben Multifunktions-Multiport empfangen wird, an den Ausgangsprozessor 505 für das Übermitteln an eine andere Speicherbank. In einer Ausführungsform wird die nächste empfangene Zelle an die nächste Speicherbank (die nächste in numerischer Ordnung, Modulo N) in der Speicheranordnung übermittelt. Alternativ kann eine andere zeitabhängige Permutation verwendet werden, um die Übermittlung von nachfolgenden Zellen von dem selben Multifunktions-Multiport zu steuern.
  • Mit Bezug auf 5b werden der Zeitplan und die Ordnung von Übermittlungen von dem Multifunktions-Multiport zu dem Speicher gezeigt. Für die Zwecke dieses Beispiel ist eine Reihenfolge von Zellen auf jeder Übermittlungsleitung gezeigt. Lediglich zu beispielhaften Zwecken wird angenommen, dass jede Übermittlungsleitung sehr lang ist und Daten enthält, die mit zwei oder mehr Zellen assoziiert sind. Im Betrieb sind die Ü bermittlungsleitungen kurz, und zu einer gegebenen Zeit sind nicht mehrere Zellen auf einer Übermittlungsleitung vorhanden. An einem Zeitschlitz T4 wird eine Reihe von Zellen 450-0 bis 450-7 entlang der Übermittlungsleitungen 458, eine von jedem Multifunktions-Multiport 150 zu dem Eingangsschalter 100, übermittelt. An dem Zellenschlitz T3 (in der Zeit einer direkt vor dem Zellenschlitz T4) wird eine Reihe von Zellen 452-0 bis 452-7 entlang Übermittlungsleitungen 458, eine von jedem Multifunktions-Multiport 150 zu dem Eingangsschalter 100, übermittelt.
  • Der Round-Robin-Daten-Handler 500 und der Ausgangsprozessor 505 innerhalb des Eingangsschalters 100 übermitteln Zellen aus dem globalen Datenpuffer 104 auf Übermittlungsleitungen 460. Wie es an dem Zellenschlitz T2 gesehen werden kann, gibt der Ausgangsprozessor 505 eine Zelle 454-B0 bis 454-B7 an jede Speicherbank in einem einzelnen Zellenschlitz aus. Die "Bx"-Bezeichnung bezeichnet den Multifunktions-Multiport, von dem die bestimmte Zelle empfangen worden ist. Von jedem Multifunktions-Multiport wird eine Zelle zu dem globalen Datenpuffer 104 pro Zellenschlitz geschrieben. Zu der Zeitperiode T1 (ein Zellenschlitz vor dem Zellenschlitz T2) wird wiederum eine Zelle (456-B0 bis 456-B7 ) auf jede Speicherbank geschrieben. Der Round-Robin-Daten-Handler 500 zeit-unterteilt-multiplext die Übermittlungen an den Ausgangsprozessor 505, so dass aufeinander folgende Zellen von dem selben Multifunktions-Multiport auf aufeinander folgende Speicherbänke 105 (Modulo N) in dem globalen Datenpuffer 104 geschrieben werden.
  • Mit Bezug wiederum auf 5a zeigt der Zeiger 504 die Position in einer assoziierten Speicherbank an, auf die die nächste Zelle geschrieben wird. Der Ausgangsprozessor 505 schreibt eine Zelle auf eine Speicherposition in einer bestimmten Speicherbank auf der Grundlage der nächsten verfügbaren Adresse in der Bank, wie es von dem assoziierten Zeiger 504 angezeigt wird.
  • b) Schlüssellesen und der Linking-Prozess
  • Der Round-Robin-Daten-Handler 500 schließt eine Schlüssellesemaschine 514 zum Bestimmen der Schlüsselinformationen ein, die mit einer ersten Zelle in einem Paket assoziiert sind, und eine Linking-Maschine 515 zum Linken von Zellen in dem selben Paket.
  • Der Prozess des Lesens von Schlüsselinformationen ist in dem Stand der Technik bekannt. Nachdem der Schlüssel für ein gegebenes Paket bestimmt worden ist, wird er zeitweilig in einem Schlüsselpuffer 516 in dem Eingangsschalter 100 gespeichert, bis das gesamte Paket in dem globalen Datenpuffer 104 gespeichert worden ist. Die Datenstruktur für Einträge 600 in dem Schlüsselpuffer 516 ist in der 6 gezeigt. Jeder Eintrag oder jede "Info-Zelle" 600 schließt einen Schlüssel 602, die vollständige Adresse 604, Offsets 606 und einen Indikator für indirekte Zellen 608 ein.
  • Mit Bezug nunmehr auf die 5a, 6 und 7 bestimmt die Linking-Maschine 515 die Startadresse (vollständige Adresse) in dem Speicher, wo die erste Zelle in einem gegebenen Paket in dem Speicher zu speichern ist. Die Startadresse schließt die Banknummer in dem globalen Datenpuffer 104 (die Banknummer, die zugewiesen wird, um die Zelle durch den Round-Robin-Daten-Handler 500 zu speichern) und die erste verfügbare Adressposition in der bezeichneten Bank (wie sie durch den assoziierten Zeiger 504 angezeigt ist) ein. Die Startadresse (vollständige Adresse 604) wird in dem Schlüsselpuffer 516 zusammen mit dem assoziierten Schlüssel 602 für das Paket gespeichert. Wenn die nächste Zelle, die mit dem selben Paket assoziiert ist, an dem Schalter 100 ankommt, wird ein Offset 606 berechnet, der mit dem Offset assoziiert ist, mit dem die Zelle (relativ zu der vollständigen Adresse) zu schreiben ist, und in dem Schlüsselpuffer 516 gespeichert. In einer Ausführungsform der vorliegenden Erfindung werden bis zu vier Offsets 606 gespeichert. Jede Offset-Adresse wird auf Grundlage des relativen Offsets in dem Speicher zwischen der Position der letzten Zelle in dem Speicher und dem Wert des Zeigers 504, der mit der gegenwärtigen Speicherbank assoziiert ist, die geschrieben werden soll, berechnet.
  • Wenn mehr als fünf Datenzellen in einem Paket enthalten sind, dann wird der Indikator für indirekte Zellen für das Paket gesetzt, und es zeigt der letzte Offset die Adresse im Speicher an, wo die erste indirekte Zelle, die mit dem Paket assoziiert ist, gespeichert ist. Indirekte Zellen werden in größerer Ausführlichkeit unten mit Bezug auf 7 beschrieben. Nachdem das Paket in dem Speicher gespeichert worden ist, wird die assoziierte Info-Zelle in dem Schlüsselpuffer 516 (eine Routensuchanforderung) durch die Kontrollerschnittstelle 512 an den Kontroller 106 für die Weiterverarbeitung weitergeleitet. Alternativ kann die Info-Zelle übermittelt werden, nachdem die ersten fünf Zellen in dem Speicher gespeichert worden sind.
  • Das Linking oder Threading von Zellen für ein Paket wird unter Verwendung der oben beschriebenen Offsets und indirekten Zellen ausgeführt. Offsets werden zum Linken von Zellen in einem Paket verwendet. Offsets können zusammen mit Schlüsselinformationen gespeichert und durch den Kontroller 106 (2b) geroutet werden oder in indirekten Zellen gespeichert werden. In einer Ausführungsform ist es, wenn eine Zelle fünf Zellen oder weniger enthält, nicht notwendig, indirekte Zellen zu verwenden. Der Prozessor für indirekte Zellen 510 führt das Linking von Zellen für ein gegebenes Paket in dem Speicher aus. Der Prozessor für indirekte Zellen 510 erzeugt indirekte Zellen zum Speichern in dem globalen Datenpuffer 104. Indirekte Zellen enthalten Offset-Informationen, die mit dem relativen Offset in dem Speicherraum zwischen einander angrenzenden Zellen in dem Paket assoziiert sind. Der Prozessor für indirekte Zellen schließt einen Speicher für indirekte Zellen 520 zum Speichern von Daten indirekter Zellen während der Erzeugung von indirekten Zellen ein.
  • Mit Bezug nun auf 7 schließt die Datenstruktur für eine indirekte Zelle 700 ein Linking-Feld 702, eine Mehrzahl von Offset-Feldern 704 und ein letztes Feld 706 ein. Das Linking-Feld 702 zeigt, wenn es nicht gesetzt ist, an, dass die gegenwärtige indirekte Zelle die letzte Zelle in der Kette von indirekten Zellen für ein gegebenes Paket ist. Wenn es gesetzt ist, dann sind mehr indirekte Zellen für das gegebene Paket vorhanden. Wenn mehr indirekte Zellen vorhanden sind, dann zeigt das letzte Feld 706 den Offset gegenüber der Position in dem Speicher der nächsten indirekten Zelle, die mit dem Paket assoziiert ist, an. In einer Ausführungsform enthalten indirekte Zellen bis zu 56 Offset-Datenblöcke zum Linking von 56 Zellen in dem Speicher.
  • Wie oben beschrieben, verarbeitet die Linking-Maschine, wenn ein Paket empfangen wird, die ersten fünf Zellen und speichert Linking-Informationen in der Form einer Startadresse und von vier Offsets in dem Schlüsselpuffer 516. In dem Fall, dass mehr als fünf Zellen in einem Paket enthalten sind, übernimmt der Prozessor für indirekte Zellen für die Linking-Maschine und berechnet die Offsets, die mit den Positionen in dem Speicher assoziiert sind, wo die verbleibenden Zellen in dem Paket gespeichert sind. Der Round-Robin-Prozessor 500 überträgt die Zellen an den Ausgangsprozessor 505 zum Übermitteln an eine assoziierte Speicherbank in dem globalen Datenpuffer 104. Der Round-Robin-Prozessor 500 aktiviert den Prozessor für indirekte Zellen, wenn das Paket, das verarbeitet wird, mehr als fünf Zellen enthält (auf der Grundlage von Header-Informationen, die innerhalb der ersten Zelle enthalten sind). Zu der Zeit des Schreibens der fünf ten Zelle in den Speicher speichert der Prozessor für indirekte Zellen 510 die Adresse (die "Adresse indirekter Zellen"), die mit der Position in dem Speicher assoziiert ist, an der die fünfte Zelle geschrieben werden würde, wenn sie die letzte Zelle in dem Paket dargestellt hätte, in den Speicher für indirekte Zellen 520. Die Adresse für indirekte Zellen zeigt die Position in dem Speicher an, an der die indirekte Zelle, wenn sie vollständig ist (oder wenn die letzte Zelle des Pakets verarbeitet wird), zu schreiben ist.
  • Wenn eine indirekte Zelle vollständig ist (wenn Offsets in sämtlichen verfügbaren Positionen mit Ausnahme des letzten Feldes 706 gespeichert worden sind), dann speichert der Prozessor für indirekte Zelle den Offset, der mit der Position in dem Speicher assoziiert ist, wo die nächste indirekte Zelle positioniert ist, in dem letzten Feld 706. Danach wird die vollständige indirekte Zelle an ihren geeigneten Platz in dem Speicher geschrieben. Das Schreiben der indirekten Zelle in den Speicher erfolgt gleichzeitig mit dem Empfang eines Platzhalters für indirekte Zellen durch den Eingangsschalter 100 von dem assoziierten Multifunktions-Multiport 150. Dieser Prozess währt fort, bis die letzte Zelle in einem Paket in dem Speicher gespeichert worden ist. Zu dieser Zeit ist die letzte indirekte Zelle in dem Speicher geschrieben worden, und der assoziierte Eintrag 600 von dem Schlüsselpuffer 516 ist zu dem Kontroller 106 für die Weiterverarbeitung übermittelt worden. Für ein gegebenes Paket werden sämtliche indirekte Zellen zu der selben Speicherbank in dem globalen Speicherpuffer geschrieben.
  • Es wird oftmals der Fall sein, dass die letzte Zelle eines Paketes nicht mit einem Zeitpunkt übereinstimmt, der zum Schreiben der vollständigen indirekten Zelle sofort in den Speicher erforderlich ist. Dieses liegt daran, dass die Paketlänge vollständig willkürlich ist. Das Ende eines Paketes wird wahrscheinlich nicht mit dem letzten verfügbaren Eintrag einer indirekten Zelle übereinstimmen. Wenn ein Paket komplettiert worden ist (sämtliche Zellen sind von dem Eingangsschalter empfangen worden) und ein letzter Eintrag in die indirekte Zelle geschrieben worden ist, kann die indirekte Zelle in den Speicher geschrieben werden. Die Schreibeoperation wird jedoch noch bis zu dem geeigneten Zeitpunkt verzögert, und so erklärt sich der Ausdruck verzögerte indirekte Zelle. Eine verzögerte indirekte Zelle ist eine indirekte Zelle, welche die letzte indirekte Zelle ist, die mit einem Paket assoziiert ist. Sie ist verzögert, weil sie nach dem Rest des Pakets, das in den Speicher geschrieben worden ist, in den Speicher geschrieben wird. Der Zeitpunkt des Schreibens in den Speicher wird durch die Adresse, welche für die indirekte Zelle reserviert ist, bestimmt. Wie es oben beschrieben worden ist, wird zu dem Zeit punkt der Erzeugung einer indirekten Zelle ihre Position in dem Speicher reserviert. Die verzögerte indirekte Zelle wird in den Speicher zu dem nächsten Zeitschlitz geschrieben, der dafür verfügbar ist, dass der bestimmte Multifunktions-Multiport, nachdem das Paket komplettiert worden ist, auf die bestimmte Speicherbank schreibt. Dieser Zeitpunkt des Schreibens von verzögerten indirekten Zellen in den Speicher stimmt mit dem Empfang eines verzögerten indirekten Platzhalters von dem geeigneten Multifunktions-Multiport 150 überein.
  • c) Übermittlungen an den Speicher
  • Die Datenstruktur einer Zelle, welche von dem Eingangsschalter 100 (über den Ausgangsprozessor 505) zu einer Speicherbank 105 in dem globalen Datenpuffer 104 übermittelt wird, wird in 8 gezeigt. Die Einheit für das Adressieren und die Speicherallozierung ist eine 64-Byte-Zelle, und sämtliche Zugriffe auf den Speicher sind entweder Zellenleseoperationen oder Zellenschreibeoperationen. Eine Zellengröße von 64 Byte wurde als ein Kompromiss zwischen den konfligierenden Erfordernissen der Bandbreiteneffizienz und der Speichereffizienz gewählt. Die DRAM-Bandbreiteneffizienz erfordert größere Größen, während der Speicherverlust, der durch eine interne Fragmentierung verursacht wird, wenn Pakete variabler Größe in Zellen festgelegter Größe eingepasst werden, erfordert geringere Größen.
  • An jedem Zellenschlitz erzeugt der Ausgangsprozessor 505 eine Zelle 800, welche ein Leseanforderungsquellenfeld 802, eine Leseadresse 804, eine Schreibeadresse 806 und ein Datenfeld (Zellendaten, die von dem Multiport 150 empfangen werden) 808 einschließt. Das Leseanforderungsquellenfeld 802 zeigt den Ausgangsport (insbesondere den Multifunktions-Multiport 150) an, welcher die Leseoperation (den Zielausgangsport) anfordert. Der Ausgangsprozessor 505 empfängt Leseanforderungen von dem Lesekontroller 517 und bündelt die Leseanforderung mit jeglicher Schreibeanforderung, die von dem Round-Robin-Daten-Handler 500 für dieselbe Speicherbank vorgesehen ist. An jedem Zellenschlitz stellt der Ausgangsprozessor 505 eine Zelle 800 zur Verfügung, welche eine Schreibe- und Leseanforderung an jede Speicherbank 105 in den globalen Datenpuffer 104 einschließt.
  • Der Lesekontroller 517 steuert das Übermitteln von Leseanforderungssignalen, welche von dem Eingangsschalter 100 der Speicherschnittstelle 502 zu dem individuellen Spei cherbänken in dem globalen Datenpuffer 104 strömen. Der Lesekontroller 517 empfängt Leseanforderungen von jedem Multifunktions-Multiport durch die Ausgabeschnittstellen 506. Das Format von jeder Anforderung schließt eine Quellenidentifikation (Ausgangsport) und eine vollständige Adresse in den Speicher ein, die zu lesen ist. An jedem Zellenschlitz kann jeder Multifunktions-Multiport eine Leseanforderung für das Verarbeiten durch den Schalter 100 erzeugen, um einen Speicherplatz in dem globalen Datenpuffer 104 zu lesen, was in dem Lesen einer Zelle (eine Leseantwort) von einer Speicherbank 105 (an einem folgenden Zellenschlitz) zu einem Ausgangsschalter 102 resultiert.
  • Der Lesekontroller 517 lädt eine Reservierungstabelle 508 als Anforderungen, Pakete zu übermitteln, die von verschiedenen Multifunktions-Multiports 150 empfangen werden. Die Reservierungstabelle wird derart geladen, dass an jedem Zellenschlitz eine einzelne Leseanforderung für jede Bank des Speichers 105 erzeugt wird. Mit Bezug nunmehr auf 9 schließt die Reservierungstabelle 508 eine Mehrzahl von Spalten 900, eine für jede Speicherbank 105 in dem globalen Datenpuffer 104, eine Mehrzahl von Reihen 902, Platzhaltern 904 und geladene Einträge 906 ein. Jede Reihe repräsentiert einen Satz von Leseanforderungen (eine pro Speicherbank), die an einem einzelnen Zellenschlitz zu erzeugen ist. Jede Reihe schließt einen einzelnen Eintrag für jeden Multifunktions-Multiport 150 ein. An jedem Zellenschlitz ist jeder Multifunktions-Multiport in der Lage, eine Leseoperation von einer einzelnen Speicherbank 805 in dem globalen Datenpuffer 104 anzufordern. Mit der Reservierungstabelle 508 ist ein Lesezeiger 908 assoziiert. Der Zeiger zeigt auf die nächste Reihe in der Reservierungstabelle, die zu lesen ist. Reihen vor dem Lesezeiger entsprechen Anforderungen, die zu einer späteren Zellenschlitzzeit gequeuet werden. In einer Ausführungsform bewegt sich der Zeiger in jeder Zellenschlitzzeit um zumindest eine Reihe.
  • Geladene Einträge 906 geben Leseanforderungen wieder, die als ein Resultat von Reservierungsanforderungen auszuführen sind, die von einzelnen Multifunktions-Multiports empfangen werden. Platzhalter 904 stellen verfügbare Schlitze dar, in welchen Leseanforderungen für eine bestimmte Speicherbank noch verfügbar sind (z. B. Leseanforderungen, welche bisher noch nicht für diese Speicherbank von einem bestimmten Multifunktions-Multiport empfangen worden sind). An jedem Zellenschlitz führt der Lesekontroller 517 drei Funktionen aus: das Laden von Einträgen in der Reservierungstabelle an der ersten verfügbaren Position in der Tabelle (nach dem Lesezeiger), das Ausgeben der letzten Reihe als Leseanforderungen an den Ausgangsprozessor 505 und das Ak tualisieren der Tabelle durch Herausbewegen der letzten Reihe, Inkrementieren der Reihen und Erzeugen einer neuen Reihe an dem Anfang der Tabelle. Die Zahl der Reihen in der Reservierungstabelle muss größer als das Produkt der Latenz in der Verarbeitung der Leseanforderungen multipliziert mit der Anzahl der Bänke sein. In einer Ausführungsform sind 48 Reihen in der Reservierungstabelle 508 enthalten, wodurch ein System wiedergegeben wird, welches sechs Latenzzellenschlitze und acht Speicherbänke einschließt.
  • Bei der Initialisierung enthält die Reservierungstabelle 508 Platzhalter 904 in sämtlichen der Reihen 902. Die Platzhalter 904 sind Positionen in der Reservierungstabelle, welche nicht geladen worden sind. Wenn Leseanforderungen durch den Leseprozessor verarbeitet werden, werden bestimmte der Platzhalter 904 zu geladenen Einträgen 906 auf der Grundlage der Leseanforderungen umgewandelt. Die geladenen Einträge 906 schließen eine Leseanforderungsadresse ein.
  • Mit Bezug nun auf 10 schließt der Prozess des Ladens der Reservierungstabelle das Empfangen einer Leseanforderung (vollständige Adresse) von einem Multifunktions-Multiport (1000) ein. Der Lesekontroller decodiert die Leseanforderung, um die Spalte zu bestimmen (auf der Grundlage der Speicherbank, von der zu lesen ist), in welcher die Reservierungstabelle zu durchsuchen ist (1002). Der Leseprozessor durchsucht Daten von der Position an, welche durch den Zeiger 908 in der Reservierungstabelle angezeigt ist, nach dem ersten Platzhalter, der mit dem Multifunktions-Multiport assoziiert ist, der die Leseanforderung (1004) erzeugt hat. Der Leseprozessor wandelt den Platzhalter 904 durch Schreiben der vollständigen Adresse der Leseanforderung an der Position (1006) in einen gelesenen Eintrag 906 um. Der Prozess wiederholt sich für jede Leseanforderung, die von dem Lesekontroller (1008) empfangen wird.
  • Speicherarchitektur
  • Mit Bezug nun auf die 11a bis 11c wird der Hauptspeicher 1050 als ein temporärer Pufferspeicher für Pakete verwendet, die auf Eingangsströmen 1052 in das System und auf Ausgangsströmen 1054 aus dem System strömen. Der Hauptspeicher ist in zwei verschiedene Teile unterteilt: einen globalen Datenpuffer 104, der verwendet wird, um eingehende Pakete zu speichern, während die Suchmaschine den ausgehenden Strom für jedes Paket bestimmt, und Paketnachrichtenqueues 319, die verwendet werden, um Paketzeiger (Nachrichten) zu speichern, nachdem der ausgehende Strom bestimmt worden ist. Die Nachrichtenqueues 319 sind mit ausgehenden Strömen assoziiert, während der globale Datenpuffer einen gemeinsamen Pool darstellt, der unter sämtlichen Strömen aufgeteilt wird.
  • Der globale Datenpuffer 104 schließt eine Mehrzahl von Speicherbänken 105 ein. Mit jeder Speicherbank assoziiert ist eine Eingangsschalterschnittstelle (ein Eingangsport) 304 und eine Ausgangsschalterschnittstelle (ein Ausgangsport) 316. An jedem Zellenschlitz empfängt jede Speicherbank höchstens eine Schreibe- und eine Leseanforderung über die Eingangsschalterschnittstelle 304. Die Schreibeanforderungen sind mit Zellen assoziiert, die von einem Multifunktions-Multiport 150 empfangen werden. Leseanforderungen geben eine Anforderung für Zellendaten wieder, die von einer Speicherbank 105 an den Ausgangsschalter 102 für eine letztliche Übermittlung an einen anfragenden Multifunktions-Multiport 150 zu übermitteln ist.
  • Der Speicher in der Multifunktions-Multiportkonfiguration ist physikalisch über eine Anzahl von Bänken b verteilt, eine Bank für jeden aktiven Multifunktions-Multiport in dem System. 11c zeigt ein System, das drei Bänke, nummeriert als 0, 1 bzw. 4, einschließt, die drei aktive Multifunktions-Multiports repräsentieren. Jede Bank ist in zwei aneinander grenzende, sich nicht überlappende Regionen unterteilt, die als globaler Datenbereich (Speicherbank 105) und als der Nachrichtenbereich (Nachrichtenqueue 319) bezeichnet werden. Der globale Datenbereich für eine Bank stellt 1/b des Speichers des globalen Datenpuffers 104 dar. Der Nachrichtenbereich stellt Platz für Queueeingangsnachrichten zur Verfügung, die für einen gegebenen Multifunktions-Multiport auf der Leitungsausgangsschnittstelle 308 ausgesendet werden. Typischerweise ist der globale Datenbereich viermal größer als der Nachrichtenbereich; dieser Faktor leitet sich aus dem Quotienten zwischen der Datengröße und der Nachrichtengröße für das kleinste Paket her.
  • Die Speicherbandbreite jeder Bank ist für das Lesen und Schreiben von Paketen von einer Full-Duplex-OC-48-Schnittstelle sowie das Queueing und Dequeueing von Nachrichten für das Beispiel des schlechtesten Falles von Einzelzellpaketen hinreichend. Somit skaliert sowohl die gesamte Speichergröße als auch die gesamte Speicherbandbreite linear mit der Anzahl von aktiven Multifunktions-Multiports b in dem System.
  • In einer Ausführungsform ist jede Speicherbank als zwei Unterbänke unter Verwendung von zwei 72 Bit breiten SDRAM (static dynamic random access memory) DIMMs (dynamic in-line memory modules), die mit 125 MHz arbeiten, implementiert. Die Unterbänke sind gegenüber dem Eingangs- und Ausgangsschalter transparent, was darin resultiert, dass sie aus Sicht der Schalter, wie eine kontinuierliche Bank erscheint. Die Unterbank-Architektur ermöglicht jedoch einen besseren Durchsatz. Jeder DIMM weist einen 72 Bit breiten ECC (error correction code)-geschützten Datenpfad auf, welcher durch 9 SDRAM-Chips verläuft, von denen jeder 8 Bit breit ist. Die zwei DIMMs haben unterschiedliche Adressbusse und werden unabhängig voneinander adressiert. Die DIMMs sind auf Bit 0 der 23-Bit-Adresse interleavt. In einer Ausführungsform stellt die kleinste Speicherbankkonfiguration 32 MBytes unter Verwendung von 16 MBit-Chips und die größte 512 MBytes unter Verwendung von 256 MBit-Chips dar.
  • Wie oben beschrieben, kann eine Bank höchstens eine Leseanforderung und eine Schreibanforderung für jeden Zellenschlitz empfangen. Da ein Zellenschlitz 20 Taktzyklen bei 125 MHz beträgt, ergibt sich eine Spitzenbandbreitenanforderung von 400 MBytes/s für Leseoperationen und 400 MBytes/s für Schreibeoperationen. Die schlimmste Nachrichtenlast tritt für Einzelzellpakete auf. Für einen Unicast-Verkehr beträgt diese Last 1/4 der Datenbankbreite, welches 100 MBytes/s für Leseoperationen und 100 MBytes/s für Schreibeoperationen ergibt. In dieser Ausführungsform beträgt damit die notwendige Spitzenspeicherbandbreite 1 GByte/s.
  • In dieser Ausführungsform beträgt die Spitzenübermittlungsrate von jedem DIMM 1 GByte/s, aber die beibehaltene Rate hängt von der aktuellen Mischung von Leseoperationen und Schreibeoperationen ab und davon, wie die Adressen über die internen DIMM-Bänke verteilt sind. In der Praxis wird erwartet, dass jeder DIMM eine dauerhafte Datenrate von ungefähr 650 MBytes/s übermittelt. Die gesamten 1,3 GBytes/s, die von den zwei Gruppen geliefert werden, sind 30 % größer als die maximale dauerhafte Erfordernis von 1 GByte/s. Die 30 % Überschuss stellen eine Möglichkeit zur Verfügung, sofortige Ladeoperationen zu stützen, in denen mehr Zugriffe auf einen DIMM gerichtet sind als auf den anderen. Der Speicherkontroller für die zwei DIMMs befindet sich in dem Multifunktions-Multiport.
  • In einer Ausführungsform sind sämtliche Bänke von der selben Größe ausgebildet, und ungefähr 1/5-tel des Speichers in jeder Bank wird für den Nachrichtenbereich alloziert und 4/5-tel des globalen Datenbereichs. Der Zweck dieser Allozierung ist es, es sehr unwahrscheinlich zu machen, dass für einen Strom aufgrund des Platzes in seiner Nachrichtenqueue nicht hinreichend Speicher zur Verfügung steht. In dem schlechtesten Fall einer Paketgröße von 64 Bytes benötigen Nachrichten (mit der Größe von 16 Bytes) 1/4-tel der Menge des Speichers, den Paketdaten benötigen, was genau dem allozierten Anteil entspricht. Auf jede Zelle in dem globalen Datenpuffer kann über ihren physikalischen Zellenzeiger, welcher die physikalische Banknummer und die Adresse der Zelle in der Bank identifiziert, zugegriffen werden. Der physikalische Zellzeiger definiert einen systemweiten physikalischen Adressraum. Um die Adressberechnungen zu vereinfachen und um einen Mechanismus zum Detektieren alter Pakete zur Verfügung zu stellen, werden Zugriffe auf den globalen Paketpuffer durch einen systemweiten virtuellen Adressraum, der auf den physikalischen Adressraum abgebildet ist, ausgeführt.
  • Eingehende Pakete werden in so viele Zellen unterteilt, wie es nötig ist, und die Zellen werden zu dem globalen Paketdatenpuffer, wenn sie wie oben beschrieben, ankommen, geschrieben. Der globale Datenpuffer wird als ein einzelner großer Ringpuffer behandelt. Der Eingangsschalter behält eine Anordnung von Schreibezeigern, einen pro aktiver Bank, um zu verfolgen, wo die nächste Zelle zu schreiben ist. Die Zeiger beginnen an einem Ende des Puffers und schreiten fort, bis sie schließlich herumgekommen sind und überschreiben Pakete, die vor langer Zeit geschrieben worden sind. Ein Alterungsmechanismus wird verwendet, um zu verhindern, dass Zellen gelesen werden, die vielleicht durch nachfolgende Pakete überschrieben worden sind. Die Zellen von Paketen, die auf einem gegebenen Strom ankommen, werden streng über die aktiven Bänke interleavt, um die Bandbreitenlast zu verteilen.
  • a) Adressierung
  • Der globale Datenpuffer 104 ist in Bänke unterteilt, welche ihrerseits in nicht überlappende 64-Byte-Einheiten festgelegter Größe, Zellen genannt, unterteilt werden. Die Zelle ist sowohl die Einheit des Adressierens als auch der Speicherallozierung. Sämtliche Zugriffe auf den Speicher werden unter Verwendung von zwei Operationen ausgeführt: Zellenleseoperation und Zellenschreibeoperation. Da es nur eine Zugriffsgröße gibt, ist die Speicherallozierung einfach, und es gibt keine Probleme der Datenanordnung oder Byte-Ordnung.
  • Jede Zelle in dem System wird eindeutig durch einen physikalischen Zellenzeiger oder PCP identifiziert, welcher die physikalische Banknummer der Zelle und Adresse in der Bank identifiziert. Der Satz von PCPs bildet einen systemweiten physikalischen Adressraum, der dazu verwendet werden kann, jede Zelle in dem System zu lesen oder zu schreiben. Während dieser Raum einen Zugriff auf sämtliche mögliche Bänke in dem Hauptspeicher zur Verfügung stellt, ist er nicht bequem zum Lesen und Schreiben von Zellen, die Teil des globalen Datenpuffers sind.
  • Zum Beispiel kann der physikalische Raum in sich Löcher, entsprechend den Speicherbänken (Multifunktions-Multiports), die entweder eingesetzt sind oder nicht eingesetzt sind, die jedoch inaktiv sind, enthalten. Zudem ist die Größe des globalen Datenbereichs nicht notwendigerweise eine Potenz von zwei (da eine gerade Zahl an Multifunktions-Multiports verfügbar sein kann und wegen der gesetzten 4/5-zu-1/5-Verhältnisse, die für den globalen Bereich bzw. den Nachrichtenbereich gesetzt worden sind), so dass Adressenberechnungen Überprüfungen beinhalten, die normalerweise nicht notwendig wären. Diese beiden Faktoren erschweren die Adressenarithmetik, die für jeden Zugriff ausgeführt werden müssen, und die Verwendung des physikalischen Raums erzwingt direkt, dass jede Einheit, die Leseoperationen und Schreibeoperationen ausgibt, weiß, wie diese Arithmetik auszuführen ist. Schließlich stellt der direkte Zugriff auf den physikalischen Raum keinen Mechanismus zum Detektieren zur Verfügung, ob eine Nachricht auf Zellen zeigt, welche, seit die Originaldaten auf den Speicher geschrieben worden sind, überschrieben worden sind. Ein Abbildmechanismus von virtuellen zu reellen Adressen stellt eine Möglichkeit zur Lösung dieser Probleme dar. Dieser Mechanismus definiert einen einzelnen systemweiten virtuellen Adressenraum, der es ermöglicht, dass der globale Paketpuffer bequem ausgelesen und auf diesen geschrieben wird. Sämtliche nicht diagnostische Zugriffe auf den Puffer verwenden diesen Adressraum.
  • b) Physikalischer Raum
  • Jede Speicherbank besitzt eine eindeutige physikalische 3-Bit-Banknummer, oder PBN, die gleich der Nummer des Schlitzes ist, in welchen die Bank eingesetzt ist. In einer Ausführungsform werden Schlitze der Reihe nach von 0 bis 7 nummeriert (unter der Annahme einer Konfiguration von acht Multifunktions-Multiporten). Man beachte, dass eine Bank in einen verfügbaren Schlitz eingesetzt werden kann, so dass die Menge von akti ven Banknummern in einem System eine beliebige Untermenge der Nummern [0 .. 7] sein kann. Die PBN dient als die physikalische Adresse einer Bank.
  • In einer Bank werden Zellen unter Verwendung einer physikalischen 23-Bit-Zelladresse, oder PCA (1124 von 11f) identifiziert. Zellen werden der Reihe nach, startend bei 0 und endend bei NBank-1, wobei NBank die Zahl der Zellen in der Bank ist, nummeriert. In einer Ausführungsform ist die maximale Speichermenge in einer Bank durch die Architektur auf 223-Zellen oder 512 MBytes beschränkt.
  • Der Speicher einer Bank ist in zwei aneinander grenzende nicht überlappende Bereiche geteilt: Zellen [0..Nbuf-1) werden zu dem globalen Paketpuffer alloziert, während Zellen [Nbuf...NBank] zu Queues alloziert werden, die Nachrichten für Pakete enthalten, die über den assoziierten Multifunktions-Multiport zu senden sind. Die Anzahl der Zellen Nbuf, die zu dem globalen Datenpuffer alloziert werden, ist dieselbe für jede der b aktiven Bänke, so dass jede Bank genau 1/b-tel des Speichers für den Puffer beiträgt. Typischerweise wird ungefähr 1/5-tel des Speichers in einer Bank für Nachrichtenqueues und 4/5-tel für die globalen Datenpuffer alloziert.
  • Auch wenn jede Bank mit der selben Größe gezeigt ist, beachte man, dass es lediglich erforderlich ist, dass die globalen Paketpufferbereiche über die Bänke dieselbe Größe aufweisen. Die Architektur stellt keine Einschränkungen für die Größe der Nachrichtenbereiche dar, auch wenn sie typischerweise von der selben Größe sein werden.
  • Jede Zelle in dem System wird eindeutig durch das 26-BitTuple <PCA><PBN> identifiziert. Dieses Tuple wird physikalischer Zellenzeiger der Zelle oder PCP genannt. Der Satz von möglichen PCP-Werten definiert einen systemweiten physikalischen Adressraum. Sämtliche Zellenreferenzen müssen zu einem PCP übersetzt werden, bevor die Zelle gelesen oder geschrieben werden kann. In einer Ausführungsform ist die maximale Speichermenge in dem System durch die Architektur auf 226-Zellen oder 4 GBytes beschränkt.
  • e) Virtueller Raum
  • Mit Bezug nun auf 11d gibt es einen einzelnen systemweiten virtuellen Adressraum, der es ermöglicht, dass der globale Datenpuffer bequem gelesen und beschrieben wird und ebenso eine einfache Detektion von veralteten Paketen in dem Speicher ermöglicht. Durch Bereitstellen einer Abbildung von dem virtuellen zu dem physikalischen Adressraum wird eine Wartung des Speichers vereinfacht und es ist keine Ausschusssammlung von veralteten Paketen erforderlich. Der virtuelle Raum wird durch den Satz von möglichen Werten für eine 27-Bitquantität, die virtueller Zellenzeiger oder VCP (1120) genannt wird, definiert. Der VCP besteht aus einer virtuellen 24-Bit-Zellenadresse oder VCA (1122), die mit einer virtuellen 3-Bit-Banknummer oder VBN, wie in der 11c gezeigt, verknüpft wird.
  • Der Satz von Werten für die VBN definiert einen virtuellen Banknummerraum, der es vereinfacht, eine Arithmetik von Banknummern auszuführen. Wenn es in dem System b aktive Bänke gibt, liegen die erlaubten Werte für die VBN zwischen [0..b-1], und jegliche Arithmetik der VBNs wird Mod b getätigt.
  • Der Satz von Werten für die VCA definiert einen virtuellen Zellenadressraum für die Bank, welche durch die VBN identifiziert wird. Dieser virtuelle Zellenadressraum erleichtert es, eine Arithmetik für Zellenadressen durchzuführen, die in ihrer Bank liegen und ermöglicht ebenso Alterungsüberprüfungen.
  • Ein VCP wird zu einem physikalischen Zellenzeiger (PCP) übersetzt, in dem zwei separate Abbildungen ausgeführt werden: erstens wird die VBN auf eine physikalische Banknummer (PBN) abgebildet, und dann wird die VCA auf eine physikalische Zellenadresse (PCA) abgebildet. Die beiden Abbildungen sind nicht unabhängig voneinander. Insbesondere verwendet die VCA-zu-PCA-Abbildung Zustände, die der physikalischen Bank eigen sind und durch die erste Abbildung erzeugt werden.
  • d) Banknummerabbildung
  • Virtuelle Banknummern werden zu physikalischen Banknummern durch den Eingangsschalter unter Verwendung einer 8-Einträge-Suchtabelle 1150, wie in 11e gezeigt, übersetzt. Die Tabelle wird durch eine 3-Bit-VBN indiziert und erzeugt eine 3-Bit-PBN als Ergebnis. Das Beispiel zeigt die Tabelle für ein System, das fünf aktive Multifunktions-Multiports in Schlitzen 2, 3, 4, 6 und 7 eingesetzt aufweist.
  • Im Allgemeinen werden die b ersten Einträge der Tabelle mit den physikalischen Banknummern für diese Bänke gefüllt, wenn es in dem System b aktive Bänke gibt.
  • e) Zellenadressenabbilden
  • Mit Bezug nun auf 11f werden virtuelle Zellenadressen ebenso zu physikalischen Zellenadressen durch den Eingangsschalter übersetzt. Wie zuvor erwähnt, wird die VCA-zu-PCA-Übersetzung immer im Zusammenhang mit einer bestimmten physikalischen Bank ausgeführt, welche per Definition aktiv sein muss.
  • Aus Zwecken der Vereinfachung der Abbildung werden der virtuelle und physikalische Zellenadressraum in aneinander angrenzende und ausgerichtete Regionen von 4096 Zellen aufgeteilt, die Pages genannt werden. Die 12 Bits unterer Ordnung sowohl der VPAs als auch der VCAs entsprechen der Adresse einer Zelle innerhalb einer Page, während die Bits hoher Ordnung der Adresse der Page selbst entsprechen. Mit Bezug nun auf 11e erhält der Abbildungsprozess die Bits niedriger Ordnung der Adresse, während die Bits hoher Ordnung abgebildet werden.
  • Die Operation der VPMAP(1130)-Funktion ist wie folgt: es sei N die Zahl der Pages, die dem globalen Paketdatenpuffer durch jede Bank zugeordnet wird. Aus der Struktur der VCAs ist es klar, dass diese Anzahl eine ganze Zahl in dem Bereich [1...2048] sein muss (der Wert 0 wird ausgespart, da er den Fall repräsentiert, in dem kein Pufferspeicher vorhanden ist). Man beachte, dass die Zahl der Pages in dem virtuellen Raum exakt zweimal dem größten Wert von N ist. Wie später gesehen werden wird, ist diese Tatsache wesentlich dafür, dass das Alterungsschema funktioniert.
  • Die VPMAP-Funktion ist zeitabhängig, aber ihre Operation zu einer gegebenen Zeit ist direkt. Für jede Bank bildet diese Funktion eine durchgängige Region von N Pages in dem virtuellen Raum [vTP, vTP+1,..., vLP] auf die N Pages des physikalischen Raums für diese Bank ab (wobei TP für "nachfolgende Page" und LP für "führende Page" steht). Sämtliche Regionen werden zu einer gegebenen Zeit an dem selben Punkt in ihren entsprechenden Räumen positioniert. Für diese Diskussion erfolgt sämtliche Arithmetik Mod 4096, so dass angenommen wird, dass der virtuelle Adressenraum nach Page 4095 einmal um sich herumgegangen ist. Eine der virtuellen Pages in der Region wird immer auf die physikalische Page 0 abgebildet. Es sei diese Page v0 = vTP+k. Dann werden die virtuellen Pages [vTP+k, vTP+k+1, ..., vLP] direkt auf die physikalischen Pages [0, 1, ..., N-k-1] abgebildet, und die virtuellen Pages [vTP, vTP+1, ..., vLP+k-1] werden direkt auf die physikalischen Pages [N-k-1, N-k, ..., N-1] abgebildet. Dass heißt, dass die Region von N Pages in zwei getrennte Teile geteilt wird und dass Pages in den zwei Teilen eins-zu-eins auf identisch dimensionierte Teile des physikalischen Raums abgebildet werden. Zugriffe auf virtuelle Pages, die außerhalb der Region liegen, werden auf die physikalische Page 0xFFF abgebildet, um anzuzeigen, dass der Zugriff auf eine Zelle erfolgte, die überschrieben worden ist. 11g zeigt diese Abbildung für ein einfaches Beispiel, in dem N = 9 und k = 3.
  • Das zeitabhängige Verhalten von VPMAP besteht darin, dass die Region von N Pages des virtuellen Raums, die abgebildet wird, sich mit der Zeit bewegt. Zur Initialisierung des Systems wird VLP auf 0 gesetzt, und VTP wird auf -(N-1) gesetzt. Wenn Zellen in den Systemspeicher geschrieben werden, rücken die Schreibezeiger für jede Bank mehr oder weniger gemeinsam vor, jedoch bewegen sie sich nicht in einem fest miteinander verbundenen Schritt. Das System berechnet VLP als die Pagebits hoher Ordnung des Bank-Schreibezeigers, der am weitesten voraus ist; VTP ist dann einfach (VLP-N+1). 11h zeigt, wie sich die Region mit der Zeit bewegt. Der virtuelle Adressenraum ist als ein Ringpuffer mit Pagenummern, die außerhalb markiert sind, gezeigt, und die abgebildete Region ist hervorgehoben gezeigt. Das Bild ganz links zeigt die Abbildung zur Initialisierungszeit, während die nächsten zwei Bilder die Abbildung zu aufeinander folgenden späteren Zeiten zeigen.
  • Wenn sich die Region vorwärts bewegt, muss der Wert v0 periodisch aktualisiert werden, so dass er in dem Bereich der virtuellen Adressen, der abgebildet wird, verbleibt. Zur Systeminitialisierung wird v0 auf 0 gesetzt, und es wird danach, jedes Mal, wenn v0 gleich vTP wird, um N erhöht. Die Erhöhung erfolgt nach und nicht vor der Abbildung. reset: v0 = vLP = 0; wenn (v0 = vTP) v0 = v0 + N
  • f) Übermittlungen von dem Eingangsschalter zu dem Speicher
  • In Bezug nun auf 12 wird die Übermittlung von Zellen von dem Eingangsschalter 100 zu dem globalen Datenpuffer 104 in einer Zeit-Divisions-Multiplex-Art ausgeführt. Das heißt, dass aufeinander folgende Zellen von einem gegebenen Multiport zu verschiedenen Speicherzielplätzen geleitet werden. Zu jeder Zeitperiode (Zellenschlitz) übermittelt der Eingangsschalter eine einzelne Zelle zu dem Speicher, welche von jedem Multifunktions-Multiport (wie verfügbar) empfangen wird, in den Speicher. Zu der nächsten Zeit T+1 übermittelt der Eingangsschalter wiederum eine einzelne Zelle von jedem Multiport in den Speicher. Aufeinander folgende Einträge von dem selben Eingangsmultiport werden zu verschiedenen Speicherbänken 105 in dem globalen Datenpuffer 104 geschrieben.
  • Kontroller
  • Mit Bezug nun auf 13 schließt der Kontroller 106 einen Kontrollerspeicher 109, eine Suchmaschine 110, eine Eingangsschalterschnittstelle 1300 und eine Ausgangsschalterschnittstelle 1302 ein. Der Kontroller 106 empfängt eine Routensuchanfrage von dem Eingangsschalter 100 an der Eingangsschalterschnittstelle 1300. In einer Ausführungsform der vorliegenden Erfindung wird eine Mehrzahl von Routensuchmaschinen 110 in den Kontroller 106 eingeschlossen, von denen jede Suchanforderungen in einer Round-Robin-Art empfängt, um den Routingprozess zu beschleunigen. In einer Ausführungsform ist der Kontrollerspeicher 109 ein Static Random Access Memory (SRAM) von vier Bänken, welcher zweiunddreißig Routensuchmaschinen 110 zum Bedienen der gesamten Bandbreite erfordert. Die Anpassung von Schlüsseln, welche aus einem Paket erhalten werden, um eine am besten passende Route durch den Router zu bestimmen, wird in größerer Ausführlichkeit in der anhängigen Patentanmeldung mit dem Titel "HICH SPEED VARIABLE LENGTH BEST MATCH LOOK-UP IN A SWITCHING DEVICE", eingereicht am 16. Dezember 1996 von Fergusen et al., Seriennummer 08/767,576, beschrieben, welche hiermit ausdrücklich durch Referenz aufgenommen ist.
  • Routensuchmaschine, welche die Routensuchanforderung bedient, führt eine Bestpassungssuche durch und gibt eine Nachricht durch die Ausgangsschalterschnittstelle 1302 an den Ausgangsschalter 102 aus. Die Nachricht schließt ein Ergebnis ein, welches den Multifunktions-Multiport anzeigt, der für die Übermittlung des Pakets zu seinem Ziel zu verwenden ist.
  • Mit Bezug nunmehr auf 14 wird die Datenstruktur gezeigt, welche mit der Nachricht assoziiert ist, welche von dem Kontroller 106 an den Ausgangsschalter 102 ausgegeben wird. Die Datenstruktur 1400 für die Nachricht schließt eine Maske 1402, einen nächsten Sprungindexzeiger 1404, eine vollständige Adresse 1406, Offsets 1408 und eine Paketlänge 1410 ein.
  • Das Maskenfeld 1402 wird verwendet, um anzuzeigen, welcher Multifunktions-Multiport, der mit dem Ausgangsschalter 102 verbunden ist, das Paket übermitteln soll. In einer Ausführungsform kann die Nachricht zu mehr als einem Multifunktions-Multiport gesendet werden, was in dem Senden des assoziierten Pakets resultiert.
  • Mit jedem Multifunktions-Multiport 150 ist ein Speicher 310 assoziiert. Der nächste Sprungindexzeiger zeigt zu einer Position in dem Speicher 310. Der Speicher 310 wird verwendet, um Medienheaderinformationen zu speichern, die mit einem bestimmten Typ von Paketübermittlung assoziiert sind. Die nächsten Sprungadressen, Medienheaders und der Speicher 310 werden unten in größerer Ausführlichkeit in Verbindung mit dem Ausgabeabschnitt des Multifunktions-Multiport 150 beschrieben.
  • Die vollständige Adresse 1406 zeigt die Startadresse in dem globalen Datenpuffer an, an der die erste Zelle in dem Paket gespeichert ist. Wie oben beschrieben, stellen die Offsets 1408 Linking-Informationen zum Erhalten von Zellen oder einer indirekten Zelle, die mit dem Paket assoziiert ist, bereit. Das Paketlängenfeld 1410 zeigt die Länge des assoziierten Pakets an und kann verwendet werden, um zu bestimmen, ob indirekte Zellen zu erhalten sind.
  • Ausgangsschalter
  • Mit Bezug nun auf 15a schließt ein Ausgangsschalter 102, eine Kontrollerschnittstelle 1500, einen oder mehrere Speichereingänge 1502 (1502-0 bis 1502-7, einen für jede Speicherbank), einen oder mehrere Ausgänge 1504 (1504-0 bis 1504-7, einen für jeden Multifunktions-Multiport), einen Ergebnisprozessor 1506 und einen Ausgangsprozessor 1508 ein. Der Ausgangsschalter 1502 führt vier Funktionen aus: Empfangen von Ausgabeergebnissen, Verarbeiten von Ausgabeergebnissen, Empfangen von Zellen von dem Speicher und Ausgabe von Zellen an die Ausgangsports.
  • a) Übermittlungen von dem Speicher zu dem Ausgangsschalter
  • Zellen von dem Speicher werden an Speichereingängen 1502 empfangen und zu dem Ausgangsprozessor 1508 übermittelt. Zellen werden auf der Grundlage von Leseanforderungen übermittelt, welche an dem Eingangsschalter von dem Multifunktions-Multiport empfangen werden. Die Datenstruktur, die mit den Zellen assoziiert ist, die von dem globalen Datenpuffer 104 an den Ausgangsschalter 102 übermittelt werden, wird in der
  • 15b gezeigt. Jede Zelle 1510 schließt einen Ausgangsportidentifier 1512 und Zellendaten 1514 ein.
  • Der Ausgangsprozessor 1508 decodiert den Ziel-Funktions-Multiport aus den Zelleninformationen, die von dem Speicher empfangen werden und übermittelt die Zellendaten an die geeigneten Ausgänge 1502. An jedem Zellenschlitz kann der Ausgangsschalter 102 eine Zelle für die Verarbeitung von jeder Bank in dem globalen Datenpuffer 104 empfangen.
  • b) Übermittlungen von dem Ausgangsschalter an die Multifunktions-Multiports
  • Der Ausgangsschalter 102 empfängt eine Nachricht von dem Kontroller 106 an der Kontrollerschnittstelle 1500. Der Ergebnisprozessor 1506 decodiert das Ergebnis (die Route) und bestimmt, welcher Multifunktions-Multiport (welche Multifunktions-Multiports) 150 die Routendaten empfangen soll (sollen). Auf der Grundlage der Maske 1402 in der Nachricht übermittelt der Ergebnisprozessor 1506 die Nachricht an den Ausgangsprozessor 1508 für die Übermittlung zu jedem Multifunktions-Multiport 150, der angezeigt ist. An jedem Zellenschlitz stellt der Ausgangsprozessor 1508 (über die Ausgänge 1504) eine Route zu jedem Multifunktions-Multiport 150 bereit.
  • Die Datenstruktur, die mit den Daten assoziiert ist, die von dem Ausgangsprozessor 1508 an die Multifunktions-Multiports 150 übermittelt werden, ist in der 16 gezeigt. Eine Zelle 1600 schließt einen Header 1602 und ein Datenfeld 1604 ein. Der Header 1602 schließt Speicherbankquelleninformationen 1606 und Routeninformationen 1608 ein. Die Speicherbankquelleninformationen schließen einen Quellenidentifier zum Anzeigen davon, welche Speicherbank die Zelle in dem Datenfeld 1604 bereitgestellt hat, ein. Die Routeninformationen 1608 enthalten Daten von der Nachricht, einschließlich eines nächsten Sprungindexes, der Paketlänge, der vollständigen Adresse und von Offsets.
  • Ausgabeabschnitt eines Multifunktions-Multiports
  • Mit Bezug nun auf die 17a und 17b schließt jeder Multifunktions-Multiport 150 eine Ausgangsschalterschnittstelle 316, eine Eingangsschalterschnittstelle 304, einschließlich von Leseanforderungsqueues 305, einen Head-and-Tail-Queue-Puffer 318, einen Ausgabeanforderungsprozessor 306, eine Leitungsausgangsschnittstelle 308, eine Speichervorrichtung (Speicher) 310, einen Stromausgangspuffer 312 und einen Ausgabeformatierer 314 ein.
  • a) Nachrichtenqueues
  • Ein Multifunktions-Multiport 150 empfängt eine Nachricht, dass ein Paket zu verarbeiten ist, in der Form einer Nachrichtenzelle 1600 (16), die an der Ausgangsschalterschnittstelle 316 empfangen wird.
  • Der Ausgabeanforderungsprozessor 306 verarbeitet die Nachrichten, indem er jede an einem geeigneten Ort in dem Head-and-Tail-Queue 318 speichert und Nachrichtenanforderungen bedient, wie sie durch die verschiedenen Prioritätsqueues in dem Head-and-Tail-Queue-Puffer 318 verlaufen. Das Bedienen der Anforderungen resultiert in der Erzeugung einer Leseanforderung an den Eingangsschalter 100, assoziiert mit der ersten Adresse in dem Speicher, an der das Paket gespeichert ist (assoziiert mit der bestimmten Nachricht).
  • Mit Bezug nun auf 17b schließt einen Head-and-Tail-Queue-Puffer 319 eine Mehrzahl von Nachrichtenqueues Q 1700 ein, wobei Q = 4·s, und wobei s die Anzahl von aktiven Strömen in dem Multifunktions-Multiport ist. Anders als der globale Datenpuffer sind die Queues Q auf einer Pro-Port-Basis implementiert. Die Queues in einem bestimmten Multifunktions-Multiport speichern lediglich jene Nachrichten, die mit Strömen assoziiert sind, die von dem bestimmten Port an den Multifunktions-Multiport auszugeben sind. Jede Queue ist selbst in eine Head-Region 1702, eine Tail-Region 1704 und eine Körper-Region 1706 unterteilt. Die Head- und Tail-Region für eine Queue sind in dem Head-and-Tail-Queue-Puffer 318 gespeichert.
  • Die Größe des Teils des Head-and-Tail-Queue-Puffers, die für jeden Strom bestimmt ist, wird zu der Initialisierungszeit festgelegt und ist proportional zu der Spitzenbandbreite dieses Stroms. Die Partitionen zwischen Teilen sind "hart" in dem Sinne, dass ein Strom nicht mehr als den zu ihm allozierten Speicher verwenden kann. Die Partitionen zwischen Queues, die mit dem selben Strom assoziiert sind, sind "weich". Die Größe einer individuellen Queue ist proportional zu der nominalen Bandbreite, die für die Queue alloziert ist. Die Körper-Region der Nachrichtenqueue wird in dem Nachrichtenbereich 319 (3a) des Speicherbereichs 290 des Multifunktions-Multiports 150 gespeichert. Jedem Strom sind in dem Nachrichtenbereich 319 (3a) vier Queues zugewiesen (die Körperteile der Prioritätsqueues). Die Körper-Region ist auf 1/5 des gesamten Speicherabschnitts dimensioniert.
  • Jede Queue, die mit einem gegebenen Strom assoziiert ist, wird gemäß einem Prioritätsschema bedient. Nachrichten, welche durch den Ausgabeanforderungsprozessor 106 empfangen werden, werden in eine geeignete Queue, die mit einem Strom auf der Grundlage der Priorität der Nachrichten assoziiert ist, geladen. Die Priorität für Nachrichten kann durch eine externe Quelle eingestellt werden und kann in dem Paket, welches von dem Router empfangen wird, enthalten sein. Alternativ kann der Kontroller 106 (3a) die Priorität in Abhängigkeit von der Zeit, die für das Ausführen des Routensuchens erforderlich ist, oder von anderen Kriterien eingestellt werden.
  • Wenn eine Queue 1700 auf der Grundlage der Prioritätsinformation und der Strom-ID identifiziert worden ist, lädt der Ausgabeanforderungsprozessor 306 die Nachricht in die geeignete Tailqueue 1704. Nachrichten werden zwischen den jeweiligen Head-, Tail- und Körper-Teilen einer Queue auf der Grundlage eines verfügbaren Raums durch einen Queuemanager (nicht gezeigt) übermittelt. In einer Ausführungsform beträgt jede Nachricht 16 Bytes und der Nachrichtenbereich 319 ist so dimensioniert, dass er 64 Bytes enthält. Dem gemäß werden aus Gründen der Bandbreiteneffizienz sämtliche Leseoperationen und Schreibeoperationen zu dem Nachrichtenbereich unter Verwendung von 64-Byte-Zellen ausgeführt, welche jeweils vier 16-Byte-Nachrichten enthalten.
  • Der Head und der Tail jeder Queue ist so dimensioniert, dass er lediglich eine kleine Anzahl an Nachrichten speichert, wobei der große Teil des Queuespeichers von dem Nachrichtenbereich in der Multifunktions-Multiport-Speicherbank zur Verfügung gestellt wird. Solange Raum On-Chip (auf dem Multiport) verfügbar ist, um die Nachrichten für eine Queue zu halten, wird der Nachrichtenbereich vollständig umgangen. Wenn der On-Chip-Raum weniger wird, fungiert der Nachrichtenbereich als die große "Mitte" der Queue, wobei einige wenige Nachrichten an dem Head und dem Tail On-Chip gehalten werden.
  • Während die Größe des Nachrichtenbereichs dahin tendiert, die Zahl der verlorenen Pakete zu limitieren, kann es vorkommen, dass die Queue voll wird. Der Ausgabeanforderungsprozessor schließt eine Verlustmaschine (nicht gezeigt) zum Bestimmen ein, welche Einträge in einer bestimmten Queue auf der Grundlage eines vordefinierten Algorithmus fallen gelassen werden sollen. In einer Ausführungsform bildet die Verlustmaschine eine programmierbare zufällige Frühverlustroutine aus. Die Routine ist dahingehend zufällig so programmierbar, dass der Benutzer einen oder mehrere Parameter definieren kann, dass ein Zufallszahlengenerator verwendet wird, um zu bestimmen, ob ein Eintrag fallen gelassen wird. Früh bezieht sich auf das Fallenlassen von dem Head der Queue aus.
  • Die programmierbare Zufallsfrühverlustroutine kann in Software implementiert werden und, wenn sie ausgeführt wird, führt sie die folgende Reihenfolge von Operationen aus. Der Prozess beginnt mit dem Berechnen der Menge von Daten, die in einer bestimmten Queue gespeichert sind. Diese Information wird in der Form eines Anteils (oder eines Prozentsatzes) der Gesamtmenge gespeichert. Danach wird ein Verlustkriterium auf der Grundlage des Anteils an der Gesamtheit bestimmt. In einer Ausführungsform wird eine Tabelle von Verlustkriteriumswerten von null bis eins gegenüber Gesamtheitsanteilwerten abgebildet. Die Verlustmaschine leitet dann eine Zufallszahl von null bis eins her. Die Zufallszahl kann von einem Zufallszahlengenerator oder durch andere Mittel, wie sie in dem Stand der Technik bekannt sind, erzeugt werden. Ein Vergleich erfolgt zwischen der Zufallszahl, die erzeugt worden ist, und dem Verlustkriteriumswert. Danach wird der Eintrag an dem Head der bestimmten Queue fallen gelassen, wenn die erzeugte Zufallszahl größer als das Verlustkriterium ist. Alternativ könnte die Verlustmaschine den Verlust vermeiden, wenn die erzeugte Zufallszahl niedriger als das Verlustkriterium ist. Die Suchmaschine arbeitet in jeder Queue in regulären Intervallen, um zu gewährleisten, dass die Queues nicht überfließen, und eine geeignete Methode des Fallenlassens von Paketen wird erhalten, wenn es erforderlich ist. Dieser Prozess ist extrem hilfreich, wenn Pakete über das Internet übermittelt werden.
  • b) Pro-Bank-Nachrichtenqueues
  • Jeder Strom schließt vier Queues 1700 ein, die unter Verwendung einer gewichteten Round-Robin-Disziplin bedient werden. Die Gewichtung wird verwendet, um die Priorität wiederzugeben, die mit jeder gegebenen Queue assoziiert ist. Zum Beispiel können die vier Queues für einen gegebenen Strom mit den folgenden Verhältnissen bedient werden: Q1 zu 50 %, Q2 zu 25 %, Q3 zu 15 % und Q4 zu 10 %.
  • Die Multifunktions-Multiports behalten vier Zellenzeiger für jede Queue: Start, Ende, Head und Tail. In einer Ausführungsform ist jeder Zeiger 23 Bits lang und kann den gesamten Speicher, der mit dem Multifunktions-Multiport assoziiert ist, adressieren. Die Start- und Endzeiger markieren die Grenzen der Region der Queues, während die Head- und Tailzeiger auf die nächste Zelle (Nachricht) zeigen, die zu lesen ist, bzw. auf die nächste Zelle, die zu schreiben ist. Die Head- und Tailzeiger sind darauf beschränkt, sich innerhalb der Region auszurichten, welche durch die Start- und Endzeiger definiert wird, und es wird eine Standard-Wraparound-Arithmetik ausgeführt, wenn diese Zeiger erhöht werden.
  • Für die oben gegebene Beschreibung sollte es klar sein, dass die Region für eine Queue so klein wie eine Zelle sein kann und so groß wie die gesamte Speicherbank. Es liegt an der Software, die Zeiger zu der Initialisierungszeit so zu konfigurieren, dass sie Größen der Regionen definieren und zu gewährleisten, dass die Regionen nicht miteinander und mit dem Speicher überlappen, der für den globalen Paketpuffer alloziert wird.
  • Typischerweise wird die Software verwendet, um Speicher für einen Strom proportional zu der Bandbreite des Stroms zu allozieren.
  • c) Leseanforderungserzeugung
  • Der Ausgabeanforderungsprozessor 306 bedient die Queues, um aus den Headregionen der Queues 1700 Nachrichten zu extrahieren. Der Ausgabeanforderungsprozessor 306 erzeugt eine erste Leseanforderung auf der Grundlade der vollständigen Adresse, die er von dem Ausgangsschalter 102 empfangen hat. Danach werden folgende Leseanforderungen für die Übermittlung an den Eingangsschalter auf der Grundlage der Offset-Informationen erzeugt, welche in den Anforderungs-(von Zelle 1600) oder indirekten Zellen (wie unten beschrieben wird) zur Verfügung gestellt werden. Leseanforderungen schließen einen Stromidentifier und eine vollständige Adresse ein. Leseanforderungen werden von dem Ausgabeanforderungsprozessor an die geeignete Leseanforderungsqueue 305 gesendet. Eine Leseanforderungsqueue 305 wird für jede Bank des Speichers zur Verfügung gestellt.
  • Wenn die Paketlänge, wie sie aus den Routeninformationen, die von der Zelle 1600 bereitgestellt werden, bestimmt wird, größer als fünf (5) Zellen ist, dann fordert der Ausgabeanforderungsprozessor als erstes die Übermittlung (Leseoperation aus dem Speicher) der ersten indirekten Zelle an, die mit dem Paket assoziiert ist. Dieses wird durch Berechnen der Adresse der indirekten Zelle auf der Grundlage der vollständigen Adresse und der Offsets erreicht, welche in Zelle 1600 zur Verfügung gestellt werden. Nachdem die Anforderung der indirekten Zelle erzeugt worden ist, erzeugt der Ausgabeanforderungsprozessor Leseanforderungen für die verbleibenden Zellen in dem Paket auf der Grundlage der vollständigen Adresse und der Offsets, welche in Zelle 1600 zur Verfügung gestellt werden. Nach Empfang der indirekten Zelle von dem Ausgangsschalter 102 setzt der Ausgabeanforderungsprozessor das Erzeugen von Leseanforderungen für die verbleibenden Zellen in dem Paket auf der Grundlage der Offsetinformationen fort, die in der indirekten Zelle enthalten sind.
  • Die folgenden indirekten Zellen werden auf eine ähnliche Weise erhalten. Das heißt, zu der Zeit des Lesens der nächsten indirekten Zelle wird die Adresse der nächsten indirekten Zelle auf der Grundlage des letzten Offsets berechnet, der in der vorherigen indirekten Zelle gespeichert ist. Der Zeitpunkt des Auslesens der indirekten Zellen wird so gewählt, dass keine Verzögerungen in dem Ausgangsstrom erzeugt werden. Jede folgende indirekte Zelle wird vor dem Ende der Verarbeitung der vorherigen indirekten Zelle erhalten. Auf diese Weise ist, wenn der Ausgangsstrom initialisiert worden ist, kein Puffern von Daten erforderlich, und es treten keine Unterbrechungen aufgrund der Latenz, die mit dem Ausleseprozess assoziiert ist, auf.
  • Ausgabeanforderungen an eine individuelle Speicherbank werden streng der Reihe nach verarbeitet. Das heißt, dass der Multifunktions-Multiport jede Anforderung, die an eine Speicherbank ausgegeben wird (durch die Leseanforderungsqueues), verfolgen kann, und es ist gewährleistet, dass die Daten, die in Reaktion auf eine Reihe von Anforderungen an dieselbe Speicherbank erhalten werden, streng gemäß der Reihenfolge oder dem Muster, in der oder dem sie ausgegeben werden, übermittelt werden. Der Ausgabeanforderungsprozessor 306 verfolgt die Anforderungen, die von jeder Speicherbank erzeugt werden unter Verwendung von Antwortqueues (nicht gezeigt). Die Anforderungsqueue enthält eine Stromnummer und eine Leseadresse. Wenn eine Anforderung an den Speicher ausgegeben wird, wird der Eintrag aus der Ausforderungsqueue entfernt und es wird ein Stromnummerteil in einer assoziierten Antwortqueue positioniert. Wenn eine Antwort erhalten wird, wird der Eintrag an dem Head der Antwortqueue entfernt, und es wird die Antwort an die Stromnummer gesendet (in dem Stromausgangspuffer 312), welche durch die Stromnummer angezeigt wird, die von der Antwortqueue erhalten wird.
  • Wenn Zellen von dem Multifunktions-Multiport 150 (in Reaktion auf die Leseanforderungen) zurückbekommen werden, werden sie in einem assoziierten Stromausgangspuffer 312 gespeichert. Der Stromausgangspuffer 312 schließt eine Mehrzahl von FIFOs ein, einen für jeden Strom. Jede Zelle, die für einen Strom empfangen wird, wird in den mit den Strömen assoziierten FIFOs positioniert. Für ein gegebenes Paket speichert der Multifunktions-Multiport eine festgelegte Anzahl an Zellen (in dem FIFO), die erforderlich ist, um eine gestreamte Ausgabe vor der Initialisierung der Ausgabe des Stroms an die Leitungsausgangsschnittstelle 308 zur Verfügung zu stellen. In einer Ausführungsform der vorliegenden Erfindung werden zwölf Zellen vor dem Beginn der Ausgabe (Stromdaten) von dem Ausgangsport gespeichert. Die Auswahl der Anzahl an Zellen für die Speicherung in dem Ausgangspuffer 312 basiert auf der Latenz in dem Leseprozess (der Anzahl der Taktzyklen zwischen einer Leseanforderung von einem Multifunktions-Multiport und der Ankunft der Zelle, die mit der Leseanforderung an den Ausgangsport assoziiert ist).
  • Der Ausgabeformatierer 314 empfängt die Zellen von dem Ausgangspuffer 312 und koppelt die Daten mit Medienheaderinformationen, die in dem Speicher 310 gespeichert sind. Jede Anforderung (Nachricht), welche von dem Ausgangsschalter 102 empfangen wird, schließt einen nächsten Sprungindex ein. Der nächste Sprungindex zeigt die Startadresse in dem Speicher 310 der Medienheaderinformationen an, die mit einem gegebenen Typ einer Übermittlung assoziiert sind (abgeleitet von dem Ziel des Pakets). Die Medienheaderinformationen, die in dem Speicher 310 gespeichert sind, können nach Initialisierung des Routers geladen und, wie erfordert, durch den Kontroller aktualisiert werden. Der Ausgabeformatierer 314 koppelt die Zellendaten, die von dem Speicher wiedergegeben werden, mit dem geeigneten Medienheader, um ein geeignetes Paket für die Übermittlung aus dem Router 20 heraus auf der Leitungsausgangsschnittstelle 308 zu erzeugen.
  • Paketroutingüberblick
  • Mit Bezug nun auf 18 wird in einem Verfahren zum Routen von Paketen durch einen Schalter ein Paket an einem Multifunktions-Multiport (1800) empfangen. Der Multifunktions-Multiport teilt das Paket in Zellen festgelegter Länge und übermittelt die Zellen an einen Ausgangsschalter (1802). Der Eingangsschalter entfernt die Schlüsselinformationen aus der ersten Zelle in einem Paket und speichert sie zeitweilig in einem Schlüsselpuffer (1804). Danach routet der Eingangsschalter die Zellen zu den Speicherbänken, die in den Multifunktions-Multiports resident sind, auf eine Zeit-Division-Multiplex-Art (1806). Der Eingangsschalter speichert die erste Adresse in dem Speicher, indem die erste Zelle gespeichert ist, und berechnet Offsets für jede zusätzliche Zelle, die mit dem Offset in dem Speicher für die nächste angrenzende Speicherbank, in die die nächste Zelle zu schreiben ist, assoziiert ist (1808). Der Eingangsschalter erzeugt indirekte Zellen, um Linking-Informationen für das Paket zu speichern, wenn die Paketlänge fünf Zellen überschreitet (1810). Wenn die Anzahl der Zellen die Anzahl der verfügbaren Offsets in einer indirekten Zelle übersteigt, dann wird die alte indirekte Zelle in dem Speicher gespeichert, und eine neue indirekte Zelle wird erzeugt und auf der Grundlage der Offsets, die für jede neue Zelle, die an dem Eingangsschalter empfangen wird, berechnet werden, geladen.
  • Wenn das Paket (und seine indirekte Zelle, wenn eine vorhanden ist) in dem Speicher gespeichert worden ist, dann wird der Schlüssel, die vollständige Adresse der ersten Zelle und Offsetinformationen als eine Suchanforderung an einen Kontroller übermittelt (1814). Der Kontroller führt eine beste Passungssuche durch und erzeugt ein Ergebnis der Suche. Das Ergebnis schließt den Zielport (Multifunktions-Multiport), die Adresse, Offsetinformationen und den nächsten Sprungindex ein (1816). Eine Nachricht, die das Ergebnis einschließt, wird an den Ausgangsschalter für die Übermittlung zu dem geeigneten Multifunktions-Multiport übermittelt (1818).
  • Nach Empfang einer Nachricht erzeugt der Multifunktions-Multiport Leseanforderungen einer Zelle zu einer Zeit an den Eingangsschalter für die Daten, die mit dem Paket asso ziiert sind (1820). Der Eingangsschalter gibt die Leseanforderungen in einer Zeit-Divisions-Multiplex-Art aus, die eine einzelne Anforderung an jede Speicherbank pro Zellenschlitz erzeugt (1822). Wenn die Speicherbank die Anforderung von dem Eingangsschalter empfängt, werden Zellendaten und ein Multifunktions-Multiport-Identifier, der mit der Anforderung assoziiert ist, an den Ausgangsschalter übermittelt (1824). Wiederum übermittelt an jedem Zellenschlitz der Ausgangsschalter eine einzelne Zelle an jeden der Multifunktions-Multiports. Nach dem Empfang koppelt der Multifunktions-Multiport die Zellendaten mit Medienheaderinformationen und streamt die Daten zu dem Ziel (1826).
  • Systemniveau-Ansicht
  • Bis zu S-Ströme, wobei S = s·b+1, können in dem System gleichzeitig für b aktive Bänke (+1 steht für den Strom entsprechend dem Steuerkanal; der Steuerkanalstrom wird zur Steuerung der Konfiguration und dem Betrieb von Elementen in dem Router verwendet) in Bearbeitung sein. Der Strom besteht aus einer Reihenfolge von Paketen von willkürlicher Länge L mit willkürlichen Lücken zwischen den Paketen. In einer Ausführungsform ist L kleiner als 64 KBytes. Ein Strom arbeitet bei einer konstanten Rate von R Bytes/s, wenn er ein Paket empfängt, und bei einer Rate von 0 Bytes/s, wenn das nicht der Fall ist. Somit gibt es keine "Löcher" während des Empfangs eines Pakets. Der Wert R für einen Strom wird zur Systeminitialisierungszeit festgelegt, und Rmin und Rmax sind Systemkonstanten, die zur Designzeit definiert werden. In einer Ausführungsform ist Rmin ungefähr 4 MBytes/s, und Rmax ist ungefähr 320 MBytes/s.
  • Wie zuvor beschrieben, wird jedes Paket vor dem Schreiben in dem Speicher in 64-Byte-Zellen geteilt. Wenn sämtliche Pakete verglichen mit 64 Bytes lang sind, dann beträgt die Rate an Zellen, die durch einen Strom erzeugt wird, einfach R/64 oder 0 in Abhängigkeit davon, ob ein Paket empfangen wird oder nicht. Unglücklicherweise hängt die aktuelle Rate der Zellenerzeugung, da wirkliche Pakete nicht diese Annahme erfüllen, von der Länge der Pakete, die empfangen werden, ab, und diese Rate wird typischerweise, wegen nicht besetzter Bytes in den Zellen, größer als R/64 sein. Aufgrund dieser Abhängigkeit ist das äußerste, was wir sagen können, dass ein Strom entweder Zellen zu einer Rate zwischen R/64 und einem kleinen Faktor f mal dieser Rate erzeugt oder nicht. Der Wert für den schlechtesten Fall von f für IP beträgt 128/65, welcher für Pakete von 65 Bytes auftritt, wobei eine Zelle voll ist und die anderen ein einzelnes Bit tragen. Für einen realistischen Netzwerkverkehr sollte jedoch der Mittelwert von f bei um 1,2 herum liegen, wobei Bursts von Paketen mit 40 Bytes dazu führen, dass f für kurze Zeiten so groß wie 1,6 wird.
  • Seien die Zellen, die durch einen gegebenen Strom erzeugt werden, mit l, l+1, l+2,..., usw. nummeriert. Wie oben beschrieben worden ist, werden Zellen zu nacheinander anwachsenden Banknummern l Mod b geschrieben. Die virtuelle Adresse, zu der eine bestimmte Zelle geschrieben wird, wird im wesentlichen durch die Ankunftszeit der Zelle in dem System bestimmt. Für jede aktive Speicherbank behält das System einen Schreibezeiger, der bestimmt, wo die nächste Zelle, die zu der Bank geleitet wird, geschrieben wird. Die Zeiger werden in dem Eingangsschalter gehalten, und Gleiches gilt für die Logik zum Schalten eingehender Zellen zu der geeigneten Bank. Wenn der Eingangsschalter eine Zelle empfängt, weiß er durch die Ordnungsnummer der Zelle, zu welcher Bank die Zelle geschrieben werden sollte. Der Eingangsschalter liest den Schreibezeiger für die Zielbank, schreibt die Zelle und erhöht dann den Bankzeiger, so dass er zu der nächsten Position zeigt.
  • Zur Systeminitialisierung werden alle Bankzeiger in dem Eingangsschalter auf 0 gesetzt, und die S Ströme in dem System werden mit Startbanknummern so initialisiert, dass ungefähr dieselbe Zahl an Strömen zu jeder der b aktiven Bänke zeigt. Auch wenn die Startbanknummern gleichmäßig verteilt sind, muss das doch nicht der Fall sein. Die gleichmäßige Verteilung von diesen macht einfach die Größe des maximalen negativen Offsets ein bisschen kleiner. 19 zeigt die Startkonfiguration für ein System mit b = 8.
  • Über die Zeit bewegen sich die Bankzeiger, wenn die Zellen in den Puffer geschrieben werden, aber sie bewegen sich in einer kompakten Gruppe, da jeder Strom seine Pakete zu aufeinander folgende anwachsende Banknummern Mod b schreibt. Die Gesamtgeschwindigkeit der Gruppe wird durch die Summen der aktuellen Bandbreiten sämtlicher Ströme bestimmt und kann von 0 Zellen/s, wenn keine Pakete empfangen werden, zu einem Maximum von 400/64 = 6,25 M Zellen/s variieren, wenn sämtliche Schnittstellen mit Höchstkapazität betrieben werden.
  • Alternative Ausführungsformen
  • In einer alternativen Ausführungsform kann der Multifunktions-Multiport 150 in separate Funktionsblöcke unterteilt werden und in separaten physikalischen Strukturen enthalten sein. Zum Beispiel kann jeder Multifunktions-Multiport in einen Eingangsport, einen Ausgangsport und einen Speicher unterteilt werden. Der Speicher kann sowohl den globalen Datenpuffer als auch die Nachrichtenqueues enthalten. Alternativ kann der Speicher weiter unterteilt werden, wobei die Nachrichtenqueues physikalisch als ein Teil eines Ausgangsports ausgebildet werden können.
  • Die vorliegende Erfindung ist hinsichtlich spezieller Ausführungsformen beschrieben worden, welche für die Erfindung illustrativ sind und nicht als einschränkend aufzufassen sind. Andere Ausführungsformen liegen innerhalb des Bereichs der folgenden Ansprüche.

Claims (14)

  1. Ein Router (20) zum Schalten von Datenpaketen von einer Quelle (10) zu einem Ziel (30) in einem Netzwerk, wobei der Router einen Eingangsport zum Empfangen eines Datenpakets und einen Ausgangsport zum Übermittelns des Datenpakets zu einem Ziel einschließt, wobei der Router gekennzeichnet ist durch einen physikalisch verteilten Speicher (104), der zwei oder mehr Bänke (105) einschließt, wobei jede Bank einen globalen Datenbereich zum Speichern gleichförmiger Teile des Datenpakets und zum Speichern von Linking-Informationen für das Datenpaket einschließt; einen Kontroller (106) zum Bestimmen eines Paketrouting durch den Router; und einen Ausgangsschalter (102) zum Verwenden der Linking-Informationen, um der Reihe nach die Teile von Paketdaten, die in dem globalen Datenbereich jeder Speicherbank gespeichert sind, zu extrahieren und die Paketdaten an einen geeigneten Ausgangsport weiterzuleiten.
  2. Der Router von Anspruch 1, in dem der physikalisch verteilte Speicher eine Ausgangsqueue zum Speichern einer Nachricht einschließt, die das Routen von dem Datenpaket durch den Router anzeigt.
  3. Der Router von Anspruch 2, in dem die Nachricht die Linking-Informationen enthält.
  4. Der Router von Anspruch 3, in dem die Nachricht Linking-Informationen für die ersten 5 Zellen des Datenpakets enthält.
  5. Der Router von Anspruch 2, in dem die Nachricht eine Adresse für eine indirekte Zelle enthält, wobei die indirekte Zelle in dem verteilten Speicher gespeichert ist und die Linking-Informationen für das Extrahieren von Zellen der Reihe nach aus dem verteilten Speicher enthält.
  6. Der Router von Anspruch 2, in dem jede Speicherbank einen globalen Datenbereich zum Speichern von Teilen von Datenpaketen und einen Nachrichtenbereich zum Speichern von Nachrichten enthält.
  7. Der Router von Anspruch 6, in dem der Nachrichtenbereich auf 1/5 der Größe des globalen Datenbereichs für eine gegebene Speicherbank dimensioniert ist.
  8. Der Router von Anspruch 7, weiterhin eine Mehrzahl von Multifunktions-Multiports (150) einschließend, wobei jeder Multifunktions-Multiport einen oder mehrere Eingangsports und Ausgangsports zum Empfangen und Übermitteln von Datenpaketen durch den Router einschließt.
  9. Der Router von Anspruch 7, in dem sich ein Teil des verteilten Speichers innerhalb jedes Multifunktions-Multiports befindet, so dass jeder Multifunktions-Multiport eine Speicherbank einschließt, die einen globalen Datenbereich und einen Nachrichtenbereich besitzt.
  10. Der Router von Anspruch 9, in dem der Nachrichtenbereich eines gegebenen Multifunktions-Multiports Nachrichten für Datenpakete, die durch einen Ausgangsport des gegebenen Multifunktions-Multiports geroutet werden sollen, speichert.
  11. Der Router von Anspruch 1, in dem Speicherlese- und Speicherschreibeoperationen von dem und auf den verteilten Speicher auf 64 Bytes dimensioniert sind.
  12. Der Router von Anspruch 1, weiterhin Abbildungseinrichtungen zum Abbilden von einem virtuellen Adressraum auf einen physikalischen Adressraum, der mit dem verteilten Speicher assoziiert ist, einschließend, wobei die Abbildungseinrichtungen zum Detektieren von veralteten Paketen in dem Speicher und zum Ermöglichen eines einfachen Überschreibens derselben dienen, so dass keine Ausschussdatensammlung von veralteten Pakete erforderlich ist.
  13. Ein Verfahren zum Routen eines Datenpakets durch einen Router in einem System, das Datenpakete zwischen einer Quelle und einem Ziel über ein Netzwerk, das einen Router einschließt, übermittelt, wobei das Verfahren gekennzeichnet ist durch: Empfangen des Datenpakets; Teilen des Datenpakets in Zellen fester Größe; Speichern der Zellen in einem verteilten Speicher, wobei der verteilte Speicher eine oder mehrere Speicherbänke einschließt, wobei aufeinander folgende Zellen der Datenpakete in aufeinander folgenden Bänken des verteilten Speichers gespeichert werden; und Speichern von Linking-Informationen in einer Bank des Speichers zum Linken von Zellen des Datenpakets, die über den verteilten Speicher verteilt gespeichert sind, wobei die Linking-Informationen zum Extrahieren der Zellen der Reihe nach für die Übermittlung von dem Router zu dem Ziel verwendet werden.
  14. Ein Verfahren zum Speichern eines Datenpakets in einem Router, während eine Suchmaschine den geeigneten Pfad durch den Router für das Datenpaket in einem System bestimmt, das Datenpakete zwischen einer Quelle und einem Ziel über ein Netzwerk, das einen Router einschließt, übermittelt, wobei das Verfahren gekennzeichnet ist durch: Teilen des Datenpakets in Zellen fester Länge; Speichern der Zellen und Linking-Informationen zur Rekonstruktion des Datenpakets über einen globalen Datenpuffer, wobei der globale Datenpuffer zwei oder mehr Speicherbänke einschließt, wobei das Datenpaket unter den Speicherbänken aufgeteilt wird.
DE69737357T 1996-12-16 1997-12-16 Speicherorganisation in einer vermittlungsvorrichtung Expired - Lifetime DE69737357T2 (de)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US767576 1996-12-16
US08/767,576 US5909440A (en) 1996-12-16 1996-12-16 High speed variable length best match look-up in a switching device
US08/844,171 US5905725A (en) 1996-12-16 1997-04-18 High speed switching device
US844171 1997-04-18
US901061 1997-07-24
US08/901,061 US6493347B2 (en) 1996-12-16 1997-07-24 Memory organization in a switching device
PCT/US1997/023407 WO1998027697A1 (en) 1996-12-16 1997-12-16 Memory organization in a switching device

Publications (2)

Publication Number Publication Date
DE69737357D1 DE69737357D1 (de) 2007-03-29
DE69737357T2 true DE69737357T2 (de) 2007-06-21

Family

ID=27419639

Family Applications (2)

Application Number Title Priority Date Filing Date
DE69737361T Expired - Lifetime DE69737361T2 (de) 1996-12-16 1997-12-16 Schnelle vermittlungsvorrichtung
DE69737357T Expired - Lifetime DE69737357T2 (de) 1996-12-16 1997-12-16 Speicherorganisation in einer vermittlungsvorrichtung

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE69737361T Expired - Lifetime DE69737361T2 (de) 1996-12-16 1997-12-16 Schnelle vermittlungsvorrichtung

Country Status (6)

Country Link
US (11) US6493347B2 (de)
EP (3) EP0947078B1 (de)
JP (3) JP3453148B2 (de)
CA (3) CA2274962C (de)
DE (2) DE69737361T2 (de)
WO (3) WO1998027662A2 (de)

Families Citing this family (219)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6046999A (en) * 1996-09-03 2000-04-04 Hitachi, Ltd. Router apparatus using ATM switch
US6791947B2 (en) 1996-12-16 2004-09-14 Juniper Networks In-line packet processing
US6493347B2 (en) 1996-12-16 2002-12-10 Juniper Networks, Inc. Memory organization in a switching device
JPH11167560A (ja) * 1997-12-03 1999-06-22 Nec Corp データ転送システム、このシステムに用いるスイッチング回路、アダプタ及びこのシステムを有する集積回路並びにデータ転送方法
US6590901B1 (en) * 1998-04-01 2003-07-08 Mosaid Technologies, Inc. Method and apparatus for providing a packet buffer random access memory
US6430527B1 (en) * 1998-05-06 2002-08-06 Avici Systems Prefix search circuitry and method
US6580721B1 (en) * 1998-08-11 2003-06-17 Nortel Networks Limited Routing and rate control in a universal transfer mode network
FR2783618B1 (fr) * 1998-09-23 2002-01-04 France Telecom Procede de mise a jour d'une memoire associative de type trie, et routeur mettant en oeuvre un tel procede
US6608816B1 (en) * 1998-11-18 2003-08-19 Nortel Networks Limited Method and apparatus for providing differentiated services using a multi-level queuing mechanism
JP3704438B2 (ja) * 1998-12-09 2005-10-12 株式会社日立製作所 可変長パケット通信装置
US6650637B1 (en) * 1998-12-14 2003-11-18 Lucent Technologies Inc. Multi-port RAM based cross-connect system
US7382736B2 (en) 1999-01-12 2008-06-03 Mcdata Corporation Method for scoring queued frames for selective transmission through a switch
JP4294142B2 (ja) 1999-02-02 2009-07-08 株式会社日立製作所 ディスクサブシステム
FR2789778B1 (fr) * 1999-02-12 2001-09-14 France Telecom Procede pour associer des references d'acheminement a des paquets de donnees au moyen d'une memoire trie, et routeur de paquets appliquant ce procede
US6757791B1 (en) * 1999-03-30 2004-06-29 Cisco Technology, Inc. Method and apparatus for reordering packet data units in storage queues for reading and writing memory
US6748481B1 (en) * 1999-04-06 2004-06-08 Microsoft Corporation Streaming information appliance with circular buffer for receiving and selectively reading blocks of streaming information
JP3570323B2 (ja) * 1999-05-11 2004-09-29 日本電気株式会社 アドレスに関するプレフィクスの格納方法
US6788701B1 (en) * 1999-05-14 2004-09-07 Dunti Llc Communication network having modular switches that enhance data throughput
US7778259B1 (en) 1999-05-14 2010-08-17 Dunti Llc Network packet transmission mechanism
US6618390B1 (en) * 1999-05-21 2003-09-09 Advanced Micro Devices, Inc. Method and apparatus for maintaining randomly accessible free buffer information for a network switch
GB9912129D0 (en) * 1999-05-26 1999-07-28 3Com Corp Communication device with forwarding database having having a trie search facility
US7600131B1 (en) 1999-07-08 2009-10-06 Broadcom Corporation Distributed processing in a cryptography acceleration chip
GB2352145A (en) * 1999-07-16 2001-01-17 Texas Instruments Ltd Prevention of bottlenecking in data transfers
JP2001060967A (ja) * 1999-08-23 2001-03-06 Fujitsu Ltd パケットスイッチ装置
US7102999B1 (en) 1999-11-24 2006-09-05 Juniper Networks, Inc. Switching device
US6681270B1 (en) * 1999-12-07 2004-01-20 Texas Instruments Incorporated Effective channel priority processing for transfer controller with hub and ports
US6643257B1 (en) 2000-01-04 2003-11-04 International Business Machines Corporation Verifying performance of a buffering and selection network device
US7657727B2 (en) * 2000-01-14 2010-02-02 Hitachi, Ltd. Security for logical unit in storage subsystem
US6684209B1 (en) 2000-01-14 2004-01-27 Hitachi, Ltd. Security method and system for storage subsystem
JP4651230B2 (ja) 2001-07-13 2011-03-16 株式会社日立製作所 記憶システム及び論理ユニットへのアクセス制御方法
JP4294821B2 (ja) * 2000-01-26 2009-07-15 株式会社日立製作所 ネットワーク中継装置
DE60110760T2 (de) * 2000-03-10 2006-02-02 Tellabs Operations, Inc., Lisle Auslese-ablaufsteuerung für nicht aufeinander-folgende daten
US6947430B2 (en) * 2000-03-24 2005-09-20 International Business Machines Corporation Network adapter with embedded deep packet processing
US7050437B2 (en) * 2000-03-24 2006-05-23 International Business Machines Corporation Wire speed reassembly of data frames
JP2001292164A (ja) * 2000-04-06 2001-10-19 Nec Corp パケット・スイッチおよびその切替方法
US7688727B1 (en) 2000-04-17 2010-03-30 Juniper Networks, Inc. Filtering and route lookup in a switching device
US7215637B1 (en) 2000-04-17 2007-05-08 Juniper Networks, Inc. Systems and methods for processing packets
US6798777B1 (en) * 2000-04-17 2004-09-28 Juniper Networks, Inc. Filtering and route lookup in a switching device
US7106728B1 (en) 2000-05-01 2006-09-12 Industrial Technology Research Institute Switching by multistage interconnection of concentrators
US7023864B2 (en) * 2000-05-01 2006-04-04 Riverdelta Networks, Inc Data packet discarding
JP4719957B2 (ja) * 2000-05-24 2011-07-06 株式会社日立製作所 記憶制御装置及び記憶システム並びに記憶システムのセキュリティ設定方法
US6957272B2 (en) * 2000-05-24 2005-10-18 Alcatel Internetworking (Pe), Inc. Stackable lookup engines
US6591285B1 (en) * 2000-06-16 2003-07-08 Shuo-Yen Robert Li Running-sum adder networks determined by recursive construction of multi-stage networks
US7111071B1 (en) * 2000-06-29 2006-09-19 Intel Corporation Longest prefix match for IP routers
KR100454336B1 (ko) * 2000-07-07 2004-10-26 엘지전자 주식회사 비동기 전송 모드 스위치에서의 셀 처리 장치 및 방법
US7035267B1 (en) * 2000-08-11 2006-04-25 Marconi Intellectual Property (Ringfence), Inc. Transferring and queueing length and data as one stream
US7224693B1 (en) 2000-08-11 2007-05-29 Ericsson Ab Long packet handling
US6640233B1 (en) * 2000-08-18 2003-10-28 Network Appliance, Inc. Reserving file system blocks
JP3646638B2 (ja) * 2000-09-06 2005-05-11 日本電気株式会社 パケット交換装置及びそれに用いるスイッチ制御方法
US6965615B1 (en) * 2000-09-18 2005-11-15 Cisco Technology, Inc. Packet striping across a parallel header processor
JP2002109885A (ja) * 2000-09-28 2002-04-12 Toshiba Corp 半導体記憶装置
US6745277B1 (en) * 2000-10-04 2004-06-01 Force10 Networks, Inc. Intelligent interleaving scheme for multibank memory
US7006505B1 (en) * 2000-10-23 2006-02-28 Bay Microsystems, Inc. Memory management system and algorithm for network processor architecture
US7596139B2 (en) 2000-11-17 2009-09-29 Foundry Networks, Inc. Backplane interface adapter with error control and redundant fabric
US7236490B2 (en) 2000-11-17 2007-06-26 Foundry Networks, Inc. Backplane interface adapter
US6735218B2 (en) * 2000-11-17 2004-05-11 Foundry Networks, Inc. Method and system for encoding wide striped cells
US7356030B2 (en) 2000-11-17 2008-04-08 Foundry Networks, Inc. Network switch cross point
US6876657B1 (en) * 2000-12-14 2005-04-05 Chiaro Networks, Ltd. System and method for router packet control and ordering
US6741562B1 (en) * 2000-12-15 2004-05-25 Tellabs San Jose, Inc. Apparatus and methods for managing packets in a broadband data stream
US7002980B1 (en) 2000-12-19 2006-02-21 Chiaro Networks, Ltd. System and method for router queue and congestion management
US20020188754A1 (en) * 2001-04-27 2002-12-12 Foster Michael S. Method and system for domain addressing in a communications network
US7206283B2 (en) 2001-05-15 2007-04-17 Foundry Networks, Inc. High-performance network switch
US7609695B2 (en) * 2001-06-15 2009-10-27 Industrial Technology Research Institute Optimizing switching element for minimal latency
US7103059B2 (en) * 2001-06-15 2006-09-05 Industrial Technology Research Institute Scalable 2-stage interconnections
US7418536B2 (en) * 2001-07-30 2008-08-26 Cisco Technology, Inc. Processor having systolic array pipeline for processing data packets
US7382787B1 (en) 2001-07-30 2008-06-03 Cisco Technology, Inc. Packet routing and switching device
US6987775B1 (en) 2001-08-15 2006-01-17 Internet Machines Corp. Variable size First In First Out (FIFO) memory with head and tail caching
US8213322B2 (en) * 2001-09-24 2012-07-03 Topside Research, Llc Dynamically distributed weighted fair queuing
US7046660B2 (en) * 2001-10-03 2006-05-16 Internet Machines Corp. Switching apparatus for high speed channels using multiple parallel lower speed channels while maintaining data rate
US7362751B2 (en) * 2001-10-03 2008-04-22 Topside Research, Llc Variable length switch fabric
US6735604B2 (en) * 2001-10-09 2004-05-11 Arthur O. Miller Method for storing and retrieving data objects
US20030088694A1 (en) * 2001-11-02 2003-05-08 Internet Machines Corporation Multicasting method and switch
US7389360B1 (en) 2001-11-05 2008-06-17 Juniper Networks, Inc. Context switched route lookup key engine
WO2003043272A1 (en) * 2001-11-13 2003-05-22 Transwitch Corporation Overcoming access latency inefficiency in memories for packet switched networks
US7203203B2 (en) * 2001-12-05 2007-04-10 Internet Machines Corp. Message ring in a switching network
US7161950B2 (en) * 2001-12-10 2007-01-09 Intel Corporation Systematic memory location selection in Ethernet switches
JP4153201B2 (ja) * 2001-12-19 2008-09-24 富士通株式会社 通信制御方法、通信システム、およびコンピュータプログラム
US7106740B1 (en) * 2002-01-02 2006-09-12 Juniper Networks, Inc. Nexthop to a forwarding table
US6967951B2 (en) 2002-01-11 2005-11-22 Internet Machines Corp. System for reordering sequenced based packets in a switching network
US7420987B1 (en) 2002-01-17 2008-09-02 Juniper Networks, Inc. Arbiter for multiple mutually exclusive vectors
US7135508B2 (en) * 2002-02-20 2006-11-14 The University Of Chicago Coatings and films derived from clay/wax nanocomposites
US7009989B2 (en) * 2002-03-05 2006-03-07 Hewlett-Packard Development Company, L.P. Forwarding ordered data packets with less delay
US7352766B2 (en) * 2002-03-12 2008-04-01 Alcatel Lucent High-speed memory having a modular structure
US20120155466A1 (en) 2002-05-06 2012-06-21 Ian Edward Davis Method and apparatus for efficiently processing data packets in a computer network
US7468975B1 (en) 2002-05-06 2008-12-23 Foundry Networks, Inc. Flexible method for processing data packets in a network routing system for enhanced efficiency and monitoring capability
US7649885B1 (en) * 2002-05-06 2010-01-19 Foundry Networks, Inc. Network routing system for enhanced efficiency and monitoring capability
US7266117B1 (en) 2002-05-06 2007-09-04 Foundry Networks, Inc. System architecture for very fast ethernet blade
US7187687B1 (en) 2002-05-06 2007-03-06 Foundry Networks, Inc. Pipeline method and system for switching packets
US20030214949A1 (en) * 2002-05-16 2003-11-20 Nadim Shaikli System for reordering sequenced based packets in a switching network
KR100442627B1 (ko) * 2002-05-20 2004-08-02 삼성전자주식회사 네트워크 프로세서에서의 패킷 리디랙션 방법
US7525904B1 (en) 2002-06-20 2009-04-28 Cisco Technology, Inc. Redundant packet routing and switching device and method
US7450438B1 (en) 2002-06-20 2008-11-11 Cisco Technology, Inc. Crossbar apparatus for a forwarding table memory in a router
US7710991B1 (en) 2002-06-20 2010-05-04 Cisco Technology, Inc. Scalable packet routing and switching device and method
WO2004002081A1 (en) * 2002-06-21 2003-12-31 Thomson Licensing S.A. Routing engine for a broadcast router
WO2004004190A2 (en) * 2002-06-27 2004-01-08 Tellabs Operations, Inc. Apparatus and method to switch packets using a switch fabric with memory
US8051176B2 (en) 2002-11-07 2011-11-01 Hewlett-Packard Development Company, L.P. Method and system for predicting connections in a computer network
US7363347B2 (en) * 2002-11-07 2008-04-22 Hewlett-Packard Development Company, L.P. Method and system for reestablishing connection information on a switch connected to plural servers in a computer network
US20040098509A1 (en) * 2002-11-14 2004-05-20 Vic Alfano System for reordering sequenced based packet segments in a switching network
US20040103086A1 (en) * 2002-11-26 2004-05-27 Bapiraju Vinnakota Data structure traversal instructions for packet processing
US7782885B1 (en) * 2002-12-10 2010-08-24 Cisco Technology, Inc. System and method for queue management using queue sets
US20040123123A1 (en) * 2002-12-18 2004-06-24 Buer Mark L. Methods and apparatus for accessing security association information in a cryptography accelerator
US7434043B2 (en) 2002-12-18 2008-10-07 Broadcom Corporation Cryptography accelerator data routing unit
US7568110B2 (en) 2002-12-18 2009-07-28 Broadcom Corporation Cryptography accelerator interface decoupling from cryptography processing cores
US7536476B1 (en) 2002-12-20 2009-05-19 Cisco Technology, Inc. Method for performing tree based ACL lookups
JP3865748B2 (ja) * 2003-01-20 2007-01-10 富士通株式会社 ネットワークスイッチ装置およびネットワークスイッチ方法
US20050216770A1 (en) * 2003-01-24 2005-09-29 Mistletoe Technologies, Inc. Intrusion detection system
JP2004287475A (ja) * 2003-01-27 2004-10-14 Fujitsu Ten Ltd 電子制御装置および電子駆動装置
US7242684B2 (en) * 2003-02-07 2007-07-10 Fujitsu Limited Architecture for switching packets in a high-speed switching environment
US7990987B2 (en) 2003-02-25 2011-08-02 Topside Research, Llc Network processor having bypass capability
US20040206470A1 (en) * 2003-04-18 2004-10-21 William Marsh Rice University Containerless infiltration with electromagnetic levitation
EP2077648A1 (de) * 2003-04-22 2009-07-08 Agere Systems, Inc. Verfahren und Vorrichtung für einen gemeinsamen Multi-Bank-Speicher
US6901072B1 (en) 2003-05-15 2005-05-31 Foundry Networks, Inc. System and method for high speed packet transmission implementing dual transmit and receive pipelines
JP2004364109A (ja) * 2003-06-06 2004-12-24 Canon Inc テンポラリアドレス通信装置、プログラム、記録媒体、および方法
US7167942B1 (en) * 2003-06-09 2007-01-23 Marvell International Ltd. Dynamic random access memory controller
US7149842B2 (en) * 2003-07-17 2006-12-12 Sun Microsystems, Inc. Efficient utilization of shared buffer memory and method for operating the same
US7412454B2 (en) 2003-09-03 2008-08-12 International Business Machines Corporation Data structure supporting random delete and timer function
US7483901B1 (en) * 2003-09-10 2009-01-27 Nextaxiom Technology, Inc. System and method for data transfer between two or more connected software services
US7584454B1 (en) 2003-09-10 2009-09-01 Nextaxiom Technology, Inc. Semantic-based transactional support and recovery for nested composite software services
US7533387B1 (en) 2003-09-10 2009-05-12 Nextaxiom Technology, Inc. Guaranteed invocation/consumption of nested, composite software services
US7581205B1 (en) 2003-09-30 2009-08-25 Nextaxiom Technology, Inc. System and method of implementing a customizable software platform
US7454552B2 (en) * 2003-11-18 2008-11-18 Topside Research, Llc Switch with transparent and non-transparent ports
US7421532B2 (en) * 2003-11-18 2008-09-02 Topside Research, Llc Switching with transparent and non-transparent ports
US8225282B1 (en) 2003-11-25 2012-07-17 Nextaxiom Technology, Inc. Semantic-based, service-oriented system and method of developing, programming and managing software modules and software solutions
US20050141434A1 (en) * 2003-12-24 2005-06-30 Linden Cornett Method, system, and program for managing buffers
US20050198361A1 (en) * 2003-12-29 2005-09-08 Chandra Prashant R. Method and apparatus for meeting a given content throughput using at least one memory channel
US7539190B2 (en) * 2004-01-05 2009-05-26 Topside Research, Llc Multicasting in a shared address space
US7426602B2 (en) * 2004-01-08 2008-09-16 Topside Research, Llc Switch for bus optimization
US7817659B2 (en) 2004-03-26 2010-10-19 Foundry Networks, Llc Method and apparatus for aggregating input data streams
US7292591B2 (en) * 2004-03-30 2007-11-06 Extreme Networks, Inc. Packet processing system architecture and method
US7385984B2 (en) * 2004-03-30 2008-06-10 Extreme Networks, Inc. Packet processing system architecture and method
US8161270B1 (en) 2004-03-30 2012-04-17 Extreme Networks, Inc. Packet data modification processor
US8730961B1 (en) 2004-04-26 2014-05-20 Foundry Networks, Llc System and method for optimizing router lookup
US7917932B2 (en) 2005-06-07 2011-03-29 Sling Media, Inc. Personal video recorder functionality for placeshifting systems
US7975062B2 (en) 2004-06-07 2011-07-05 Sling Media, Inc. Capturing and sharing media content
US9998802B2 (en) * 2004-06-07 2018-06-12 Sling Media LLC Systems and methods for creating variable length clips from a media stream
US7769756B2 (en) 2004-06-07 2010-08-03 Sling Media, Inc. Selection and presentation of context-relevant supplemental content and advertising
US8458453B1 (en) 2004-06-11 2013-06-04 Dunti Llc Method and apparatus for securing communication over public network
US7660310B1 (en) * 2004-06-23 2010-02-09 Emc Corporation Index processing
DE112005002084T5 (de) * 2004-08-25 2007-07-26 MeshNetworks, Inc., Maitland Nicht-802.11-Wellenformen bei Vorhandensein von 802.11
US7657703B1 (en) 2004-10-29 2010-02-02 Foundry Networks, Inc. Double density content addressable memory (CAM) lookup scheme
JP4622490B2 (ja) * 2004-12-02 2011-02-02 株式会社日立製作所 データ転送装置
US8050280B2 (en) * 2004-12-02 2011-11-01 Electronics And Telecommunications Research Institute Efficient switching device and method for fabricating the same using multiple shared memories
US20060136717A1 (en) 2004-12-20 2006-06-22 Mark Buer System and method for authentication via a proximate device
US8295484B2 (en) 2004-12-21 2012-10-23 Broadcom Corporation System and method for securing data from a remote input device
US7889712B2 (en) 2004-12-23 2011-02-15 Cisco Technology, Inc. Methods and apparatus for providing loop free routing tables
US7555681B2 (en) * 2005-05-13 2009-06-30 Texas Instruments Incorporated Multi-port trace receiver
US7672304B2 (en) * 2005-06-16 2010-03-02 Samsung Electronics Co., Ltd. Method and system for switching frames in a switching system
US20070041392A1 (en) * 2005-08-22 2007-02-22 Aaron Kunze Adaptive message buffering
US7609707B2 (en) 2005-08-31 2009-10-27 Alcatel Lucent Communication traffic management systems and methods
TWI543185B (zh) 2005-09-30 2016-07-21 考文森智財管理公司 具有輸出控制之記憶體及其系統
US7747833B2 (en) * 2005-09-30 2010-06-29 Mosaid Technologies Incorporated Independent link and bank selection
US7652922B2 (en) 2005-09-30 2010-01-26 Mosaid Technologies Incorporated Multiple independent serial link memory
US8448162B2 (en) 2005-12-28 2013-05-21 Foundry Networks, Llc Hitless software upgrades
US8020006B2 (en) * 2006-02-10 2011-09-13 Cisco Technology, Inc. Pipeline for high-throughput encrypt functions
SG163590A1 (en) 2006-03-31 2010-08-30 Qualcomm Inc Memory management for high speed media access control
JP4992296B2 (ja) * 2006-05-30 2012-08-08 株式会社日立製作所 転送処理装置
JP2008042504A (ja) * 2006-08-04 2008-02-21 Nec Corp スイッチ装置、スイッチ方法、及びプログラム
US7903654B2 (en) 2006-08-22 2011-03-08 Foundry Networks, Llc System and method for ECMP load sharing
US8238255B2 (en) 2006-11-22 2012-08-07 Foundry Networks, Llc Recovering from failures without impact on data traffic in a shared bus architecture
US7978614B2 (en) 2007-01-11 2011-07-12 Foundry Network, LLC Techniques for detecting non-receipt of fault detection protocol packets
US7680117B1 (en) * 2007-03-30 2010-03-16 Juniper Networks, Inc. Forwarding packets using next-hop information
CA2636833C (en) * 2007-06-21 2011-08-30 Maged E. Beshai Large-scale packet switch
US7822915B2 (en) * 2007-06-30 2010-10-26 Alcatel-Lucent Usa Inc. Memory controller for packet applications
US8037399B2 (en) 2007-07-18 2011-10-11 Foundry Networks, Llc Techniques for segmented CRC design in high speed networks
US8271859B2 (en) * 2007-07-18 2012-09-18 Foundry Networks Llc Segmented CRC design in high speed networks
US8509236B2 (en) 2007-09-26 2013-08-13 Foundry Networks, Llc Techniques for selecting paths and/or trunk ports for forwarding traffic flows
US8190881B2 (en) 2007-10-15 2012-05-29 Foundry Networks Llc Scalable distributed web-based authentication
US8683572B1 (en) 2008-01-24 2014-03-25 Dunti Llc Method and apparatus for providing continuous user verification in a packet-based network
US9178785B1 (en) 2008-01-24 2015-11-03 NextAxiom Technology, Inc Accounting for usage and usage-based pricing of runtime engine
US7852486B2 (en) * 2008-02-07 2010-12-14 Board Of Regents, The University Of Texas System Wavelength and intensity monitoring of optical cavity
GB2458952B (en) * 2008-04-04 2012-06-13 Micron Technology Inc Queue processing method
US8195774B2 (en) 2008-05-23 2012-06-05 Vmware, Inc. Distributed virtual switch for virtualized computer systems
US8625624B1 (en) * 2008-06-13 2014-01-07 Cisco Technology, Inc. Self-adjusting load balancing among multiple fabric ports
JP4988674B2 (ja) * 2008-09-08 2012-08-01 株式会社日立製作所 ネットワーク監視装置、ネットワーク監視方法、および、ネットワーク監視プログラム
JP5332430B2 (ja) * 2008-09-11 2013-11-06 富士通株式会社 共有メモリシステム
US8171148B2 (en) 2009-04-17 2012-05-01 Sling Media, Inc. Systems and methods for establishing connections between devices communicating over a network
US8090901B2 (en) 2009-05-14 2012-01-03 Brocade Communications Systems, Inc. TCAM management approach that minimize movements
US8179898B2 (en) * 2009-06-11 2012-05-15 Alcatel Lucent Packet processing using braided tries
US8599850B2 (en) 2009-09-21 2013-12-03 Brocade Communications Systems, Inc. Provisioning single or multistage networks using ethernet service instances (ESIs)
US8621099B2 (en) * 2009-09-21 2013-12-31 Sling Media, Inc. Systems and methods for formatting media content for distribution
US9015225B2 (en) 2009-11-16 2015-04-21 Echostar Technologies L.L.C. Systems and methods for delivering messages over a network
US9178923B2 (en) 2009-12-23 2015-11-03 Echostar Technologies L.L.C. Systems and methods for remotely controlling a media server via a network
US9275054B2 (en) 2009-12-28 2016-03-01 Sling Media, Inc. Systems and methods for searching media content
US8208484B2 (en) * 2010-01-11 2012-06-26 Telefonaktiebolaget L M Ericsson (Publ) Forwarding a packet within a router using fragments over an interconnect
WO2011136796A1 (en) * 2010-04-30 2011-11-03 Hewlett-Packard Development Company, L.P. Management data transfer between processors
US8665727B1 (en) * 2010-06-21 2014-03-04 Xilinx, Inc. Placement and routing for a multiplexer-based interconnection network
US9113185B2 (en) 2010-06-23 2015-08-18 Sling Media Inc. Systems and methods for authorizing access to network services using information obtained from subscriber equipment
US8954664B1 (en) 2010-10-01 2015-02-10 Western Digital Technologies, Inc. Writing metadata files on a disk
US8756361B1 (en) * 2010-10-01 2014-06-17 Western Digital Technologies, Inc. Disk drive modifying metadata cached in a circular buffer when a write operation is aborted
US8565092B2 (en) * 2010-11-18 2013-10-22 Cisco Technology, Inc. Dynamic flow redistribution for head of line blocking avoidance
US8605732B2 (en) 2011-02-15 2013-12-10 Extreme Networks, Inc. Method of providing virtual router functionality
US8646013B2 (en) 2011-04-29 2014-02-04 Sling Media, Inc. Identifying instances of media programming available from different content sources
US8756382B1 (en) 2011-06-30 2014-06-17 Western Digital Technologies, Inc. Method for file based shingled data storage utilizing multiple media types
US8769533B2 (en) * 2011-07-18 2014-07-01 International Business Machines Corporation Check-point based high availability: network packet buffering in hardware
US8944159B2 (en) * 2011-08-05 2015-02-03 Cameron International Corporation Horizontal fracturing tree
US20130060795A1 (en) * 2011-09-07 2013-03-07 Unisys Corp. Prepared statements to improve performance in database interfaces
US8706736B2 (en) * 2011-09-30 2014-04-22 Broadcom Corporation Extended width entries for hash tables
WO2013068862A1 (en) * 2011-11-11 2013-05-16 International Business Machines Corporation Memory module and memory controller for controlling a memory module
US8612706B1 (en) 2011-12-21 2013-12-17 Western Digital Technologies, Inc. Metadata recovery in a disk drive
US8923298B2 (en) * 2012-05-04 2014-12-30 Futurewei Technoligies, Inc. Optimized trie-based address lookup
US9037670B2 (en) * 2012-09-18 2015-05-19 Cisco Technology, Inc. Ultra low latency network buffer storage
US9552327B2 (en) 2015-01-29 2017-01-24 Knuedge Incorporated Memory controller for a network on a chip device
US10061531B2 (en) * 2015-01-29 2018-08-28 Knuedge Incorporated Uniform system wide addressing for a computing system
US20170017414A1 (en) 2015-07-15 2017-01-19 Innovium, Inc. System And Method For Implementing Hierarchical Distributed-Linked Lists For Network Devices
US20170017420A1 (en) 2015-07-15 2017-01-19 Innovium, Inc. System And Method For Enabling High Read Rates To Data Element Lists
US20170017419A1 (en) * 2015-07-15 2017-01-19 Innovium, Inc. System And Method For Enabling High Read Rates To Data Element Lists
US20170017567A1 (en) 2015-07-15 2017-01-19 Innovium, Inc. System And Method For Implementing Distributed-Linked Lists For Network Devices
US10642815B2 (en) * 2015-10-14 2020-05-05 Paxata, Inc. Step editor for data preparation
US11169978B2 (en) 2015-10-14 2021-11-09 Dr Holdco 2, Inc. Distributed pipeline optimization for data preparation
US11288447B2 (en) 2015-10-14 2022-03-29 Dr Holdco 2, Inc. Step editor for data preparation
US10027583B2 (en) 2016-03-22 2018-07-17 Knuedge Incorporated Chained packet sequences in a network on a chip architecture
US10346049B2 (en) 2016-04-29 2019-07-09 Friday Harbor Llc Distributed contiguous reads in a network on a chip architecture
CN106027422B (zh) 2016-05-13 2020-05-08 上海兆芯集成电路有限公司 交换器及数据访问方法
US9832072B1 (en) * 2016-05-31 2017-11-28 128 Technology, Inc. Self-configuring computer network router
US10659353B2 (en) 2016-11-03 2020-05-19 International Business Machines Corporation Dynamic scriptable routing
US10680977B1 (en) * 2017-09-26 2020-06-09 Amazon Technologies, Inc. Splitting data into an information vector and a control vector and processing, at a stage of a control pipeline, the control vector and a data block of the information vector extracted from a corresponding stage of a data pipeline
US11270032B1 (en) * 2018-12-27 2022-03-08 Thales E-Security, Inc. Tamper switch assembly and installation method thereof
CN113785536A (zh) 2019-05-23 2021-12-10 慧与发展有限责任合伙企业 用于在数据驱动的智能网络中促进跟踪器分组的系统和方法
US11252030B2 (en) * 2019-10-02 2022-02-15 Cisco Technology, Inc. Network scale emulator

Family Cites Families (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870474A (en) * 1995-12-04 1999-02-09 Scientific-Atlanta, Inc. Method and apparatus for providing conditional access in connection-oriented, interactive networks with a multiplicity of service providers
US4058672A (en) 1976-11-10 1977-11-15 International Telephone And Telegraph Corporation Packet-switched data communications system
US4596010A (en) 1984-05-03 1986-06-17 At&T Bell Laboratories Distributed packet switching arrangement
US5199106A (en) * 1986-09-19 1993-03-30 International Business Machines Corporation Input output interface controller connecting a synchronous bus to an asynchronous bus and methods for performing operations on the bus
EP0606102A1 (de) * 1986-09-19 1994-07-13 International Business Machines Corporation Ein-Ausgabeschnittstellensteuerung zum Verbinden eines synchronen Busses mit einem asynchronen Bus und Verfahren zur Operationsausführung auf den Bussen
US5293597A (en) * 1987-03-09 1994-03-08 At&T Bell Laboratories Concurrent context memory management unit
ZA883232B (en) * 1987-05-06 1989-07-26 Dowd Research Pty Ltd O Packet switches,switching methods,protocols and networks
FR2616604B1 (fr) 1987-06-15 1989-09-22 Lespagnol Albert Equipement de reconstitution et multiplexage de trames d'origines diverses constituees de paquets de longueur fixe en nombre variable
FR2618624B1 (fr) 1987-07-24 1992-04-30 Michel Servel Systeme de commutation de multiplex temporels hybrides a memoire tampon optimisee
DE3742939A1 (de) 1987-12-18 1989-07-06 Standard Elektrik Lorenz Ag Verfahren zur hybriden paketvermittlung und einrichtungen hierzu
FR2625392B1 (fr) 1987-12-24 1993-11-26 Quinquis Jean Paul Circuit de gestion de pointeurs d'ecriture de files tampons notamment pour commutateur temporel de paquets auto-acheminables
US5155834A (en) * 1988-03-18 1992-10-13 Wang Laboratories, Inc. Reference and change table storage system for virtual memory data processing system having a plurality of processors accessing common memory
JP2667868B2 (ja) 1988-04-06 1997-10-27 株式会社日立製作所 セル・スイッチング・システム
DE3824849A1 (de) * 1988-07-21 1990-01-25 Kempten Elektroschmelz Gmbh Unter druck gesinterte, polykristalline mischwerkstoffe auf basis von hexagonalem bornitrid, oxiden und carbiden
US5860136A (en) * 1989-06-16 1999-01-12 Fenner; Peter R. Method and apparatus for use of associated memory with large key spaces
US5490258A (en) * 1991-07-29 1996-02-06 Fenner; Peter R. Associative memory for very large key spaces
WO1991002420A1 (en) 1989-08-09 1991-02-21 Alcatel N.V. Communication switching element and method for transmitting variable length cells
EP0422910A3 (en) * 1989-10-10 1991-11-06 American Telephone And Telegraph Company High capacity memory based packet switches
US5130983A (en) * 1990-03-27 1992-07-14 Heffner Iii Horace W Method of polling to determine service needs and the like
US5265207A (en) * 1990-10-03 1993-11-23 Thinking Machines Corporation Parallel computer system including arrangement for transferring messages from a source processor to selected ones of a plurality of destination processors and combining responses
US5367643A (en) * 1991-02-06 1994-11-22 International Business Machines Corporation Generic high bandwidth adapter having data packet memory configured in three level hierarchy for temporary storage of variable length data packets
US5168492A (en) * 1991-04-11 1992-12-01 Northern Telecom Limited Rotating-access ATM-STM packet switch
EP0520116A1 (de) * 1991-06-28 1992-12-30 International Business Machines Corporation Verfahren und Gerät um Mustersuchfunktionen auszuführen
US5623489A (en) * 1991-09-26 1997-04-22 Ipc Information Systems, Inc. Channel allocation system for distributed digital switching network
US5241536A (en) * 1991-10-03 1993-08-31 Northern Telecom Limited Broadband input buffered atm switch
JP2839060B2 (ja) * 1992-03-02 1998-12-16 インターナショナル・ビジネス・マシーンズ・コーポレイション データ処理システムおよびデータ処理方法
IL101623A (en) * 1992-04-16 1997-06-10 Fortress U & T 2000 Ltd Digital signature device
AU4661793A (en) * 1992-07-02 1994-01-31 Wellfleet Communications Data packet processing method and apparatus
CA2144953A1 (en) * 1992-09-29 1994-04-14 Paul Baran Cell based wide area network alternative access telephone and data system
FR2701180B1 (fr) * 1993-01-29 1995-03-10 Cit Alcatel Dispositif de cellulisation et dispositif de décellulisation de voies numériques synchromes, centre de commutation de voies numériques synchrones, et centre de commutation de voies numériques asynchrones.
US5448702A (en) 1993-03-02 1995-09-05 International Business Machines Corporation Adapters with descriptor queue management capability
US5530902A (en) * 1993-06-14 1996-06-25 Motorola, Inc. Data packet switching system having DMA controller, service arbiter, buffer type managers, and buffer managers for managing data transfer to provide less processor intervention
FR2707775B1 (fr) * 1993-07-12 1996-04-12 Duret Chrsitian Procédé et dispositif d'analyse d'informations contenues dans des structures de données.
US5515376A (en) * 1993-07-19 1996-05-07 Alantec, Inc. Communication apparatus and methods
US5408469A (en) * 1993-07-22 1995-04-18 Synoptics Communications, Inc. Routing device utilizing an ATM switch as a multi-channel backplane in a communication network
US5457687A (en) 1993-09-02 1995-10-10 Network Equipment Technologies, Inc. Method and apparatus for backward explicit congestion notification (BECN) in an ATM network
JPH0795525A (ja) * 1993-09-17 1995-04-07 Canon Inc ディジタル信号記録装置
CA2134061A1 (en) * 1993-10-28 1995-04-29 Aaron William Ogus Frame buffering of network packets
US5384568A (en) * 1993-12-02 1995-01-24 Bell Communications Research, Inc. Data compression
US5485455A (en) 1994-01-28 1996-01-16 Cabletron Systems, Inc. Network having secure fast packet switching and guaranteed quality of service
GB2291561B (en) * 1994-05-21 1998-09-23 Northern Telecom Ltd Communications system
JP3059639B2 (ja) * 1994-07-14 2000-07-04 古河電気工業株式会社 経路選択情報の検索装置
US5627970A (en) * 1994-08-08 1997-05-06 Lucent Technologies Inc. Methods and apparatus for achieving and maintaining optimum transmission rates and preventing data loss in a processing system nework
JP3224963B2 (ja) * 1994-08-31 2001-11-05 株式会社東芝 ネットワーク接続装置及びパケット転送方法
JP3269273B2 (ja) * 1994-09-02 2002-03-25 三菱電機株式会社 セル交換装置及びセル交換システム
US5537403A (en) * 1994-12-30 1996-07-16 At&T Corp. Terabit per second packet switch having distributed out-of-band control of circuit and packet switching communications
US5539815A (en) 1995-02-24 1996-07-23 At&T Corp. Network call routing controlled by a management node
US5956751A (en) * 1995-06-28 1999-09-21 Industrial Technology Research Institute Computer memory management system using physical segmentation space allocation
US5796944A (en) 1995-07-12 1998-08-18 3Com Corporation Apparatus and method for processing data frames in an internetworking device
US5719864A (en) * 1995-08-11 1998-02-17 International Business Machines Corp. Logical channel resolution in asynchronous transmission mode communication systems
US5745837A (en) * 1995-08-25 1998-04-28 Terayon Corporation Apparatus and method for digital data transmission over a CATV system using an ATM transport protocol and SCDMA
JPH0983535A (ja) * 1995-09-14 1997-03-28 Toshiba Corp セルデータ交換方法及び交換装置
US6085233A (en) * 1995-12-29 2000-07-04 Pankosmion, Inc. System and method for cellular network computing and communications
US5689505A (en) * 1996-01-16 1997-11-18 Lucent Technologies Inc. Buffering of multicast cells in switching networks
US5859835A (en) * 1996-04-15 1999-01-12 The Regents Of The University Of California Traffic scheduling system and method for packet-switched networks
US5872787A (en) * 1996-05-15 1999-02-16 Gte Laboratories Incorporated Distributed switch buffer utilizing cascaded modular switch chips
US6308148B1 (en) * 1996-05-28 2001-10-23 Cisco Technology, Inc. Network flow data export
US5946716A (en) * 1996-05-30 1999-08-31 Hewlett-Packard Company Sectored virtual memory management system and translation look-aside buffer (TLB) for the same
US5802052A (en) 1996-06-26 1998-09-01 Level One Communication, Inc. Scalable high performance switch element for a shared memory packet or ATM cell switch fabric
US5802054A (en) * 1996-08-15 1998-09-01 3Com Corporation Atomic network switch with integrated circuit switch nodes
US5924091A (en) * 1996-08-28 1999-07-13 Sybase, Inc. Database system with improved methods for radix sorting
US5987034A (en) * 1996-08-30 1999-11-16 Cisco Technology, Inc. ATM cells within frame relay technology
US6101543A (en) * 1996-10-25 2000-08-08 Digital Equipment Corporation Pseudo network adapter for frame capture, encapsulation and encryption
US5912889A (en) * 1996-11-21 1999-06-15 Xerox Corporation ATM switch with output port clustering for dynamically allocating bandwidth between ports
US6493347B2 (en) * 1996-12-16 2002-12-10 Juniper Networks, Inc. Memory organization in a switching device
US5909440A (en) * 1996-12-16 1999-06-01 Juniper Networks High speed variable length best match look-up in a switching device
US5905725A (en) * 1996-12-16 1999-05-18 Juniper Networks High speed switching device
US6091705A (en) * 1996-12-20 2000-07-18 Sebring Systems, Inc. Method and apparatus for a fault tolerant, software transparent and high data integrity extension to a backplane bus or interconnect
DE69719934T2 (de) * 1996-12-20 2003-11-27 Ibm Verfahren und Vorrichtung zur schnellen und sicheren Datensammlung
US6108342A (en) * 1997-02-14 2000-08-22 Advanced Micro Devices, Inc. Management information base (MIB) accumulation processor
US6229821B1 (en) * 1997-04-22 2001-05-08 At&T Corp. Serial data transmission of variable length mini packets using statistical multiplexing
US6075787A (en) * 1997-05-08 2000-06-13 Lucent Technologies Inc. Method and apparatus for messaging, signaling, and establishing a data link utilizing multiple modes over a multiple access broadband communications network
US6151638A (en) * 1997-06-25 2000-11-21 Unisys Corp. System and method for performing external procedure calls from a client program to a server program to a server program and back to the client program while both are running in a heterogenous computer
US6014380A (en) * 1997-06-30 2000-01-11 Sun Microsystems, Inc. Mechanism for packet field replacement in a multi-layer distributed network element
US6201813B1 (en) * 1997-06-30 2001-03-13 Cisco Technology, Inc. Method and apparatus for using ATM queues for segmentation and reassembly of data frames
US6212183B1 (en) * 1997-08-22 2001-04-03 Cisco Technology, Inc. Multiple parallel packet routing lookup
US6553002B1 (en) * 1997-08-29 2003-04-22 Ascend Communications, Inc. Apparatus and method for routing data packets through a communications network

Also Published As

Publication number Publication date
JP3459652B2 (ja) 2003-10-20
EP0940025A4 (de) 2001-08-29
US20090109975A1 (en) 2009-04-30
US20010010692A1 (en) 2001-08-02
CA2274966A1 (en) 1998-06-25
US20140181235A1 (en) 2014-06-26
JP3459653B2 (ja) 2003-10-20
US20050201396A1 (en) 2005-09-15
EP0947078B1 (de) 2007-02-14
US6493347B2 (en) 2002-12-10
US20130215886A1 (en) 2013-08-22
US20060023719A1 (en) 2006-02-02
DE69737361D1 (de) 2007-03-29
JP2001509978A (ja) 2001-07-24
WO1998027660A2 (en) 1998-06-25
EP0940025B1 (de) 2007-02-14
US6917620B1 (en) 2005-07-12
US20090268740A1 (en) 2009-10-29
US8761180B2 (en) 2014-06-24
WO1998027662A3 (en) 1998-09-03
CA2274966C (en) 2003-10-28
US7903659B2 (en) 2011-03-08
US7116660B2 (en) 2006-10-03
US7545808B2 (en) 2009-06-09
CA2274962C (en) 2002-08-06
US9411776B2 (en) 2016-08-09
US8477784B2 (en) 2013-07-02
DE69737361T2 (de) 2007-06-21
CA2274964C (en) 2003-08-19
US20110164618A1 (en) 2011-07-07
EP0948849A2 (de) 1999-10-13
US20030108056A1 (en) 2003-06-12
EP0947078A2 (de) 1999-10-06
JP2000516424A (ja) 2000-12-05
US8681796B2 (en) 2014-03-25
CA2274964A1 (en) 1998-06-25
US8189605B2 (en) 2012-05-29
EP0947078A4 (de) 2001-08-29
US20120219001A1 (en) 2012-08-30
US7489699B2 (en) 2009-02-10
JP2000516423A (ja) 2000-12-05
DE69737357D1 (de) 2007-03-29
WO1998027662A2 (en) 1998-06-25
WO1998027660A3 (en) 1998-10-15
CA2274962A1 (en) 1998-06-25
JP3453148B2 (ja) 2003-10-06
EP0948849A4 (de) 2006-06-14
EP0940025A1 (de) 1999-09-08
WO1998027697A1 (en) 1998-06-25

Similar Documents

Publication Publication Date Title
DE69737357T2 (de) Speicherorganisation in einer vermittlungsvorrichtung
DE69726995T2 (de) Mehrfachsende-Leitweglenkung in mehrstufigen Netzen
DE60214341T2 (de) Vermittlungsanordnung und -verfahren mit getrennten ausgangspuffern
DE69733703T2 (de) Puffer von Mehrfachsendezellen in Vermittlungsnetzen
DE69915704T2 (de) Ampic dram
US5905725A (en) High speed switching device
DE69637462T2 (de) ATM-Vermittlungsstelle mit Eingangs- und Ausgangsanschlussstellen
WO1998027660A9 (en) High speed switching device
DE10196135B4 (de) Port-Paket-Warteschlangenbildung
DE60217685T2 (de) System und verfahren zum vermitteln von daten unter verwendung eines gemeinsamen koppelfeldes
US7991926B1 (en) Scalable memory architecture for high speed crossbars using variable cell or packet length
DE69626679T2 (de) Vermittlungseinrichtung
EP0443672B1 (de) Asynchrones Zeitvielfachübermittlungssystem
US20030204482A1 (en) Data search system
Khani et al. A Configurable Packet Switch Core

Legal Events

Date Code Title Description
8364 No opposition during term of opposition