DE69834823T2 - Paketvermittlungsvorrichtung und -verfahren mit zentraler Speicherarchitektur - Google Patents

Paketvermittlungsvorrichtung und -verfahren mit zentraler Speicherarchitektur Download PDF

Info

Publication number
DE69834823T2
DE69834823T2 DE69834823T DE69834823T DE69834823T2 DE 69834823 T2 DE69834823 T2 DE 69834823T2 DE 69834823 T DE69834823 T DE 69834823T DE 69834823 T DE69834823 T DE 69834823T DE 69834823 T2 DE69834823 T2 DE 69834823T2
Authority
DE
Germany
Prior art keywords
data
path
packet
bit wide
interface
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
DE69834823T
Other languages
English (en)
Other versions
DE69834823D1 (de
Inventor
R. Stephen Cupertino HADDOCK
N. Justin Cupertino CHUEH
K. David Cupertino PARKER
Extreme Networks Herb Cupertino SCHNEIDER
Steven R. Cupertino SMITH
R. Erik Cupertino SWENSON
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.)
Extreme Networks Inc
Original Assignee
Extreme 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
Application filed by Extreme Networks Inc filed Critical Extreme Networks Inc
Application granted granted Critical
Publication of DE69834823D1 publication Critical patent/DE69834823D1/de
Publication of DE69834823T2 publication Critical patent/DE69834823T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2416Real-time traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/6215Individual queue per QOS, rate or priority
    • 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/625Queue scheduling characterised by scheduling criteria for service slots or service orders
    • H04L47/627Queue scheduling characterised by scheduling criteria for service slots or service orders policing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/351Switches specially adapted for specific applications for local area network [LAN], e.g. Ethernet switches
    • 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/3018Input queuing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/351Switches specially adapted for specific applications for local area network [LAN], e.g. Ethernet switches
    • H04L49/352Gigabit ethernet switching [GBPS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/354Switches specially adapted for specific applications for supporting virtual local area networks [VLAN]

Description

  • HINTERGRUND DER ERFINDUNG
  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft das Gebiet des Schaltens (switching) von lokalen Netzwerken (LAN). Insbesondere betrifft die vorliegende Erfindung eine skalierbare Datenpfad-Architektur und eine Datenvergleichs-Engine, die beim Filtern und Weiterleiten von Datenpaketen mit einem LAN-Switch verwendet wird, der in Hochgeschwindigkeit-LANs, wie z. B. Gigabit Ethernet LANs arbeitet.
  • Beschreibung der verwandten Technik
  • Anfänglich oder in der ersten Generation lösten LRN-Switches Stauungsprobleme, die im Zusammenhang mit herkömmlichen LANs auftraten, als Arbeitsgruppen und Netzwerke, wie z. B. ein Ethernet (welches bei 10 Mio Bits pro Sekunde (10 Mb/s) betrieben wird) wuchsen. (Der Begriff Ethernet-LAN oder einfach Ethernet, soll hier so verstanden werden, daß er sich auf LANs bezieht, welche gemäß dem CSMA-Zugriffsverfahren (Vielfachzugriffsverfahren mit Abtasten des Trägers) mit Kollisionserfassung (CSMA/CD) Standard arbeiten und im allgemeinen bei einer Signalrate von 10 Mb/s über verschiedene Medienarten betrieben werden und Datenpakete im Ethernetformat oder im Standard 802.3 Format des Institute of Electrical and Electronic Engineers (IEEE) übertragen. Ein Hinzufügen neuer Benutzer und Einsetzen neuer Anwendungen erforderten größere Bandbreiten (d. h. Datenübertragungsmöglichkeiten, soweit der Begriff auf Netzwerke angewendet wird) als Ethernet-LANs in vernünftiger Weise bereitstellen konnten. Das Ergebnis war eine verlangsamte Leistungsfähigkeit, insbesondere aufgrund von Netzwerk-Stauungen. Ursprüngliche Ethernet-Switches verringerten die Stauungen, indem Arbeitsgruppen in verschiedene LANs mit einzelnen Kollisionsdomänen aufgeteilt wurden und der Verkehr, d. h. die Datenpakete, zwischen den Arbeitsgruppen mit hohen Geschwindigkeiten geschaltet wurden.
  • Der Einsatz von Ethernet-Switchen der ersten Generation und das Wachstum des Client-Server Computermodells verschob den ursprünglichen Flaschenhals der Netzwerkleistungen von den End-Stationen zu dem Ethernet-Switch-Port, der beispielsweise mit einem Hochleistungsserver verbunden war. Ethernet-Switche der zweiten Generation fügten einen Port hinzu, der mit einem verhältnismäßig hochgeschwindigkeitsfähigen Kommunikationsmedium, allgemein bezeichnet als Backbone, verbunden war. Das Verbinden eines Ports am Ethernet-Switch zu einem Backbone, der gemäß einer Hochgeschwindigkeitstechnologie betrieben wird, wie z. B. Datenschnittstellen an Glasfaser-Verteilnetzen (FDDI), asynchronen Transfermodus (ATM) oder schnellem Ethernet, öffneten den Flaschenhals und ermöglichten Verkehr von mehreren mit dem Ethernet-Switch verbundenen Clients, die effizient an der Verbindung zu dem Server oder Backbone geschaltet wurden. (Der Begriff Fast Ethernet LAN oder einfach Fast Ethernet soll hierbei so verstanden werden, daß er LANs betrifft, die sich nach dem Vielfachzugriffsverfahren mit Abtasten des Trägers mit Kollisionserfassung (CSMA/CD) Standard richten, allgemein mit einer Signalrate von 100 Mb/s über verschiedene Medientypen arbeiten und Datenpakete gemäß dem Ethernetformat oder dem Standard 802.3 Format des Institute of Electrical and Electronic Engineers (IEEE) übertragen).
  • Bis vor kurzem waren Netzwerk-Verkehrsmuster in Client-Server Netzwerkmodellen im allgemeinen vorhersagbar. Der meiste Verkehr blieb in einem lokalen LAN, da die Clients auf lokale Server zugriffen. Gelegentlich bewegte sich ein geringer Prozentsatz des Verkehrs, z.B. elektronische Nachrichten, aus der Arbeitsgruppe heraus, die mit einem gemeinsam genutzten Kommunikationsmedium verbunden war. Heute haben Intranet, Internet und das World Wide Web (www) die Verkehrsmuster wesentlich verändert. Daten können nun überall vorliegen und es kann zufällig zugegriffen werden, im Gegensatz zu Verkehrsmustern in herkömmlichen Client-Server-Netzwerken. Zusätzlich forcieren leistungsfähigere Anwendungen und Computer, welche beispielsweise Video und Multimedia am Desktop einer End-Sta tion darstellen können, den Bedarf für größere Netzwerkgeschwindigkeiten und Bandbreiten.
  • Die Signalraten, die mit äußerst hochgeschwindigkeitsintensiven Technologien wie z. B. Gigabit Ethernet und der schnellen Assimilation leistungsfähiger Anwendungen und Computer verbunden sind und sich auf Intranet oder Internetkommunikation stützen, erhöhen den Bedarf für eine nächste Generation von LAN-Switchen. (Der Begriff Gigabit Ethernet LAN oder einfach Gigabit Ethernet soll hier so verstanden werden, daß er LANs gemäß dem Vielfachzugriffsverfahren mit Abtasten des Trägers mit Kollisionserfassung (CSMA/CD) Standard betrifft, die im allgemeinen bei einer Signalrate von 1000 Mb/s über verschiedene Medientypen betrieben werden und Datenpakete im Ethernetformat oder im 802.3 Standard des Institute of Electrical and Electronic Engineers (IEEE) übertragen).
  • Es besteht Bedarf für einen hoch-skalierbaren LAN-Switch, der die heutigen Stauungsprobleme lösen kann, Verzögerungssensitive und Real-Time Daten verarbeiten kann, die Netzwerkgröße zur Unterstützung von tausenden von Benutzern skaliert und die verschiedenen Geschwindigkeiten des Verkehrs durch das Netzwerk vereinigen. Ein LAN-Switch der dritten Generation erstreckt die evolutionäre Migration von 10 Mb/s CSMA/CD (Ethernet) nach 100 Mb/s CSMA/CD zu (Fast Ethernet) bis 1000 Mb/s CSMA/CD (Gigabit Ethernet) Backbones. Solch eine Skalierbarkeit eines Netzwerks ist für die Planung und Migration von LANs wichtig, sie erlaubt die Optimierung des Netzwerks durch Bereitstellung von Hochgeschwindigkeitsverbindungen für Kanalbündelungen und Serververbindungen während die Leistungsfähigkeit am Desktop erhalten bleibt.
  • Daher sollten LAN-Switche der dritten Generation in der Lage sein, ausreichende Bandbreite innerhalb des Switches bereitzustellen, um jede Möglichkeit auszuräumen, zu Stauungen im Netzwerk beizutragen. Der Switch sollte in der Lage sein, eine Mehrzahl von Hochgeschwindigkeits- und Niedergeschwindigkeitsports gleichzeitig zu schalten, ohne den Durchsatz durch einen der Ports zu blockieren. Ferner sollte der Switch gewährleisten, daß zu jeder Zeit volle Bandbreite verfügbar ist. Die Kapazität des Switches, insbesondere die Backplane Kapazität des Switches, sollte größer als die Summe aller seiner Ports sein, so daß Datenpakete niemals wegfallen oder verlorengehen, selbst wenn es die Netzwerklast erfordert, daß alle Ports unterstützt werden müssen, z. B. im Full-Duplex Gigabit Bandbreite. Zusätzlich sollte der Switch in der Lage sein, Datenpakete wenigstens in der Datenübertragungsgeschwindigkeit der angeschlossenen Kommunikationsmedien zu bridgen (in der Media Access Control (MAC) Schicht) oder zu routen (in der Netzwerkschicht).
  • Verschiedene LAN-Switch Architekturen der dritten Generation haben mehrere Schlüsselunterschiede bei der Umsetzung von LAN-Switches. Z. b. kann ein sogenannter Gigabit Ethernet Switch einfach eine Anzahl von Fast Ethernet Ports, z. B. sechs Fast Ethernet Ports verwenden und einen einzelnen Gigabit Ethernet Port. Ein derartiger Switch braucht nur interne Bandbreitenkapazitäten im Bereich von 1–2 Gigabit pro Sekunde bereitzustellen, was im allgemeinen innerhalb der Kapazitäten jedes LAN-Switches liegt, unabhängig von der Switch-Architektur, jedoch nicht die erwünschte Skalierbarkeit bereitstellt, auf die oben Bezug genommen wurde oder die Verfügbarkeit von Bandbreiten garantiert.
  • Was benötigt wird, ist eine Switch-Architektur, welche in einfacher Weise eine Mehrzahl von Fast Ethernet Ports und/oder eine Anzahl von Gigabit Ethernet Ports unterstützt, z. B. 64 Fast Ethernet Ports oder 8 Gigabit Ethernet Ports oder eine Kombination davon. Herkömmliche LAN-Switch Architekturen, wie z. B. zentrale gemeinsame Speicher-, Crossbar-Switch-, oder Bus-basierte Architekturen haben im allgemeinen eine maximale interne Bandbreitenkapazität von zwei Gigabits pro Sekunde (Gb/s). 2 Gb/s Bandbreite scheint ein Schwellwert zu sein, über welchem eine Skalierung solcher herkömmlicher Switch-Architekturen im allgemeinen nicht möglich ist. Nimmt man beispielsweise einen LAN Switch mit 8 Gigabit Ethernet Ports, können diese herkömmlichen Architekturen im allgemeinen nicht ausreichend Bandbreite innerhalb des Switches zur Verfügung stellen, um jede Möglichkeit des Beitrags zu Stauungen im Netzwerk zu beseitigen, eine Mehrzahl von Hochgeschwindigkeits- und Niedriggeschwindigkeitsports gleichzeitig zu schalten, ohne einen Durchsatz auf einem Port zu blockieren und zu jeder Zeit die volle Bandbreite verfügbar zu haben.
  • Beispielsweise verwenden einige Bus-basierte-Switche gemäß dem Stand der Technik einen Backplane Bus-Betrieb gemäß dem wohlbekannten Peripheral Component Interconnect (PCI) lokalen Busstandard. Der PCI-Bus kann Daten entweder bei 32 oder 64 Bits pro Taktzyklus austauschen, abhängig von der Implementierung. Wird er bei einer Geschwindigkeit von 33 MHz betrieben, kann ein 32-Bit breiter PCI-Bus daher im allgemeinen eine Bandbreite von 1 Gb/s erreichen, während ein 64-Bit breiter PCI-Bus allgemein in der Lage ist, 2 Gb/s Bandbreite zu erreichen. Eine Skalierung der Taktgeschwindigkeit des PCI-Bus' auf 66 MHz zum Erzielen einer Bitrate von 4 Gb/s ist möglich, wird aber allgemein als die Maximalfrequenz angesehen, bei der ein PCI-Bus betrieben werden kann. Daher ist eine andere Architektur erforderlich, um größere interne Bandbreiten für einen Switch bereitzustellen, als mit einem PCI-Bus basierten Architektur erreicht werden können.
  • Eine Architektur mit zentralem gemeinsamen Speicher verleiht größere interne Bandbreiten als eine Bus-basierte Architektur und ermöglicht eine größere Flexibilität bei der Zuordnung von Puffern unter den Ports und eine vernünftige Steuerung der Zuordnung von Speicherressourcen. Jedoch sind gegenwärtig Switch-Implementierungen, die auf einer herkömmlichen Architektur mit zentralem gemeinsamen Speicher beruhen, inakzeptabel teuer, wenn sie derart skaliert werden, daß sie den Anforderungen eines Switches genügen der eine signifikante Anzahl von Gb/s Ports unterstützt.
  • Ein Verfahren, um signifikant größere interne Bandbreiten zu erreichen erfordert die Skalierung der Architektur des zentralen gemeinsamen Speichers, so daß der Zugriff auf den Speicher bereitstellenden Datenbus bis zu sehr großen Busbreiten skalierbar ist, in der Größenordnung von z. B. 256 Bits, 512 Bits oder auch größer. Datenpfadschaltungen mit solch breiten Datenbussen zur Übertragung von Daten zwischen den Ports und dem zentralen gemeinsamen Speicher sind in der Implementierung in einer einzelnen integrierten Schaltung (IC) Chip aufgrund der Anzahl von Pins schwierig und teuer. Z. B. ergibt die Implementierung einer Datenpfadschaltung, die eine Mehrzahl von Ports und einen 512-Bit breiten Datenpfad auf einer einzelnen IC unterstützt, eine Pinanzahl von mehr als 1000 Pins auf dem IC. Mit den gegenwärtig verfügbaren Herstellungstechnologien für ICs sind eine Mehrzahl von IC-Chips mit jeweils weniger Pins deutlich kostengünstiger in der Herstellung als ein monolithischer IC-Chip mit einer großen Anzahl von Pins. Was dann gebraucht wird, ist eine skalierbare Datenpfad-Architektur für einen LAN-Switch mit einer Architektur mit zentralem gemeinsamen Speicher, der für die Implementierung auf einer Anzahl von IC-Chips geeignet ist.
  • Weitere Beispiele für Anordnungen gemäß dem Stand der Technik sind in der EP 0537743 , US 5 313 624 , US 5 495 679 , US 5 189 666 und Flik Th., Liebig H., „16-Bit-Mikroprozessorsysteme", 1982, Seiten 121–122, Springer Verlag, Hedelberg, Deutschland, XP864264 offenbart.
  • KURZE ZUSAMMENFASSUNG DER ERFINDUNG
  • Der Gegenstand der vorliegenden Erfindung ist in den beiliegenden Ansprüchen bestimmt.
  • KURZBESCHREIBUNG DER VERSCHIEDENEN ANSICHTEN DER ABBILDUNGEN
  • Die vorliegende Erfindung wird in beispielhafter und nicht beschränkender Weise in den nachfolgenden Figuren dargestellt. Gleiche Referenzbezeichnungen kennzeichnen gleiche Elemente, wobei:
  • 1 ein Diagramm einer Paketvermittlungseinrichtung (packet switch) zeigt, die in einer Ausführungsform der vorliegenden Erfindung verwendet werden kann.
  • 2A ein Blockdiagramm einer Ausführungsform zum Empfangen von Datenpaketen an einer Medium-Zugriffssteuerung und übertragen dieser an einen zentralen gemeinsamen Speicher eines LAN-Switches gemäß der vorliegenden Erfindung zeigt.
  • 2B ein Blockdiagramm einer Ausführungsform zum Übertragen von Datenpaketen von einem zentralen gemeinsamen Speicher zu einer Medium-Zugriffssteuerung eines LAN-Switches zur Übertragung auf ein Kommunikationsmedium gemäß der vorliegenden Erfindung zeigt.
  • 2C ein Diagramm einer anderen Ausführungsform zum Empfangen von Datenpaketen an einer Medium-Zugriffssteuerung und übertragen dieser an einen zentralen gemeinsamen Speicher eines LAN-Switches gemäß der vorliegenden Erfindung zeigt.
  • 2D ein Diagramm einer Ausführungsform zum Empfangen von Datenpaketen an einer Medium-Zugriffssteuerung und Übertragung dieser an einen zentralen gemeinsamen Speicher eines LAN-Switches gemäß der vorliegenden Erfindung zeigt.
  • 3 ein detailliertes Blockdiagramm zeigt, welches die hierarchische Auswahllogik für den Empfang von Datenpaketen an einer Medium-Zugriffssteuerung und Übertragung dieser an einen zentralen gemeinsamen Speicher eines LAN-Switches gemäß einer Ausführungsform der vorliegenden Erfindung zeigt.
  • 4 ein detalliertes Blockdiagramm zeigt, welches eine hierarchische Selektionslogik zum Empfangen von Datenpaketen an einer Medium-Zugriffssteuerung zum Übertragen dieser an einen zentralen gemeinsamen Speicher eines LAN-Switches gemäß einer Ausführungsform der vorliegenden Erfindung wiedergibt.
  • 5 ein Diagramm von Datenauswahl und Vergleichslogik zeigt, welches bei der Weiterleitung von an einem LAN-Switch empfangenen Datenpaketen gemäß einer Ausführungsform der vorliegenden Erfindung zeigt.
  • AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG
  • Die vorliegende Erfindung betrifft eine skalierbare aufgeteilte (sliced) Datenpfadarchitektur und eine aufgeteilte (sliced) Datenvergleichs-Engine für die Weiterleitung von Datenpaketen durch einen LAN-Switch, der in Hochgeschwindigkeits LANs wie z. B. Gigabit Ethernat LANs betrieben wird. In der nachfolgenden Beschreibung sind viele bestimmte Details beschrieben, um ein tiefgehendes Verständnis der vorliegenden Erfindung zu vermitteln. Es dürfte dem durchschnittlichen Fachmann der Technik klar sein, daß die vorliegende Erfindung ohne diese bestimmten Details ausgeführt werden kann. In anderen Fällen werden wohlbekannte Architekturen, Schaltungen und Methoden nicht dargestellt, um die vorliegende Erfindung nicht unnötig kompliziert darzustellen.
  • Überblick über die Architektur des LAN-Switches Unter Bezug auf 1 ist ein Blockdiagramm einer LAN-Paketvermittlungseinrichtung (paket-switch) 100 bereitgestellt, in der die vorliegende Erfindung verkörpert ist. Die LAN-Paketvermittlungseinrichtung, oder einfach der Switch, implementiert eine Architektur mit zentralem gemeinsamen Speicher, der eine Mehrzahl von Hochgeschwindigkeitsports oder Medien-Zugriffssteuerungen (MACs) 110a110n unterstützt. In einer Ausführungsform arbeiten die MACs jeweils bei Halb-Duplexdatentransferraten von 1,000,000,000 Bits pro Sekunde oder ein Gigabit pro Sekunde (Gb/s) gemäß dem IEEE Entwurfsstandard 802.3z/D3.1, welcher das wohlbekannte 802.3 Protokoll und die MAC Spezifikation auf eine Betriebsgeschwindigkeit von 1000 Mb/s über ein Basisband/Kommunikationsmedium erstreckt, hier bezeichnet als Gigabit Ethernet. In anderen Ausführungsformen arbeitet jede MAC bei einer Datentransferrate von 100,000,000 Bits pro Sekunde oder 100 Mb/s gemäß dem IEEE Standard 802.3u, welches das wohlbekannte 802.3 Protokoll und die MAC Spezifikation zu einer Betriebsgeschwindigkeit von 100 Mb/s über ein Basisbandkommunikationsmedium erstreckt, was hier als Fast Ethernet bezeichnet wird. Es ist klar, daß die MACs gemäß anderen Kommunikationsprotokollen arbeiten können, wie z. B. dem der Datenschnittstelle an Glasfaser-Verteilnetzen (FDDI) oder Asynchronen Übermittlungsmodus (ATM) Kommunikationsprotokollen.
  • Der in 1 gezeigte Switch 100 ist für die Unterstützung der MACs 110a bis 110n konfiguriert, wobei n im allgemeinen von der Betriebsgeschwindigkeit und den Bandbreitenanforderungen jedes MACs relativ zu der internen Bandbreitenkapazität des Switches abhängt. Insbesondere unterstützt der Switch 16 Gb/s interne Bandbreite in einer Ausführungsform, skalier bar bis 32 Gb/s interne Bandbreite in einer anderen Ausführungsform, wobei letzteres mehr als ausreicht, um 8 Voll-Duplex Gigabitkanäle bei jeweils 2 Gb/s Bandbreite zu unterstützen. Jeder Kanal ist daher in der Lage, ein Voll-Duplex Gigabit Ethernet MAC zu unterstützen, wobei ein Empfangs-Datenpfad, z. B. 111a, Daten bei einer Rate von 1 Gb/s von einem Gigabit Ethernet MAC empfängt und ein Übertragungs-Datenpfad, z. B 111b, Daten bei einer Rate von 1 Gb/s zu dem Gigabit Ethernet MAC überträgt. Jeder Kanal ist alternativ dazu in der Lage, 8 Fast Ethernet MACs, 8 FDDI-Ports, 6 OC-3 ATM Ports oder einen OC-12 ATM Port zu unterstützen. (Theoretisch ist jeder Kanal in der Lage, 10 Fast Ethernet (FE) MACs zu unterstützen, in der Praxis werden jedoch nur 8 FE MACs in einer Ausführungsform der vorliegenden Erfindung aufgrund von zeitlichen Zwängen verwendet). Die Pfade sind ferner in mehrere Unterpfade aufgeteilt, über welche Daten durch den Pfad-Controller 120 in den zentralen gemeinsamen Speicher geleitet werden, der in der Figur als Paketspeicher 130 bezeichnet ist, gemäß den vom Paket-Queue-Manager (PQM) 160 empfangenen Anweisungen. Wie erkennbar ist, können Ausführungsformen der vorliegenden Erfindung die Pfade in 1, 2, 4, 8 oder 16 Unterpfade aufteilen, um Switch-Konfigurationen mit 2 bis 32 Gb/s interner Bandbreite an dem Paketspeicher 130 bereitzustellen und 1 bis 16 Voll-Duplexpfade, die bei einer Datenübertragungsgeschwindigkeit von 2 Gb/s betrieben werden.
  • Wie unten ausführlicher beschrieben wird, enthält eine Weiterleitungsdatenbank 140 Tabellen, die sich auf die Paket- oder Flußidentifizierung, die Weiterleitung und Filterung beziehen und speichert in den Tabellen Adressen und andere wohlbekannte Felder, die aus Paketen erhalten werden, die von dem Pfadcontroller 120 übertragen werden. Ein Paket-Weiterleitungscontroller 150 hält die Tabellen in der Weiterleitungsdatenbank 140 und entscheidet, welche Pakete oder Flüsse identifiziert, gefiltert oder weitergeleitet werden, unter Verwendung einer Vergleichsmaschine, die gemäß der jeweiligen Anzahl von Unterpfad-Controllern aufgeteilt und diesen zugeordnet ist.
  • Switch-Architektur, welche eine aufgeteilte Datenpfad-Architektur verwendet
  • Unter Bezug auf 2A ist ein Blockdiagramm einer Ausführungsform der Datenpfad-Architektur, welche von einem LAN Switch gemäß der vorliegenden Erfindung verwendet wird, dargestellt.
  • In der dargestellten Ausführungsform koppeln m-Bit breite Empfangsdatenpfade („Pfade") 111a bis 114a die MACs 110a bis 110n mit dem Pfadcontroller 120, wobei m gleich 16 Bits ist. In einer Ausführungsform arbeiten die Datenpfade bei 66,7 MHz, und stellen daher etwas mehr als 1 Gb/s in der Empfangsrichtung bereit. Der Pfadcontroller 120 ist in eine Anzahl von Unterpfad-Controller aufgeteilt, in diesem Fall 4 Unterpfad-Controllern. In gleicher Weise sind die Pfade 111a bis 114a in eine gleiche Anzahl von n-Bit breiten Empfangsdaten-Unterpfaden („Unterpfaden") aufgeteilt, wobei n gleich 4 ist und wobei n multipliziert mit der Anzahl von Unterpfad-Controllern gleich m ist.
  • Jeder Unterpfad, der zu einem bestimmten Pfad gehört, wird zu einem unterschiedlichen Unterpfad-Controller geroutet. Daher ist z. B. der 16-Bit Empfangsdatenpfad 111a in 4-Bit Unterpfade 111a1, 111a2, 111a3 und 111an aufgeteilt, die jeweils zu einzelnen Unterpfad-Controllern 120a, 120b, 120c und 120n verbunden sind. In der gleichen Weise ist der 16-Bit Empfangsdatenpfad 112a in 4-Bit Unterpfade 112a1 bis 112an aufgeteilt, die mit den Unterpfad-Controllern 120a bis 120n verbunden sind. Daher empfangen die Unterpfad-Controller 120a bis 120n jeweils einzelne Aufteilungen (slices) von Datenpaketen von jedem der MACs 110a, 110b, 110c und 110n.
  • Die Unterpfad-Controller 120a bis 120n sind jeweils mit dem Paketspeicher 130 über jeweilige X-Bit breite Empfangsdatenbusse 121a bis 121n verbunden, gemeinsam Datenbus 121 bildend. In einer Ausführungsform der vorliegenden Erfindung ist die Breite des Datenbus 121, der die Unterpfad-Controller mit dem Paketspeicher 130 verbindet, gleich der doppelten Summe der Breite der Empfangs- und Übertragungsdatenpfade, welche die MACs mit dem Pfad-Controller 120 koppeln. Daher ist in der 4-Unterpfad (4-Aufteilung/Slice) Ausführungsform, welche in 2A dargestellt ist, der Datenbus 121 256 Bit breit, während unter Bezug auf 2C der Datenbus 121 in der 8-Unterpfad (8-Aufteilungen/Slice) Ausführungsform 512 Bit breit ist. Es ist anzumerken, daß in einer 16-Unterpfadkonfiguration, ein 1024 Bit breiter Datenbus die Unterpfad-Controller mit dem Paketspeicher 130 verbinden.
  • Die Unterpfad-Controller weisen jeweils einzelne Empfangspuffer auf, die mit jedem Unterpfad zum Empfang von Daten gekoppelt sind. In der Empfangsrichtung (von dem MAC – zum Paketspeicher), akkumuliert jeder Unterpfad-Controller wenigstens x Bits von Daten in den Empfangspuffern von den zugeordneten Empfangsdaten-Unterpfaden, bis er die Bits der Daten an den Paketspeicher 130 übertragen kann, wobei x ein Vielfaches von n ist, d. h. ein Vielfaches der Anzahl von Bits in dem Empfangs-Datenunterpfad (in einer hier beschriebenen Ausführungsform ist x = 64 Bits). Z. B. enthält der Unterpfad-Controller 120a den Puffer 210, der in die Empfangspuffer 210a, 210b, 210c und 210d aufgeteilt ist, die jeweils Aufteilungen von Datenpaketen von den MACs 110a, 110b, 110c und 110n über die Unterpfade 111a1, 112a1, 113a1 und 114a1 empfangen. In gleicher Weise empfängt der Unterpfad-Controller 120b Aufteilungen von Datenpaketen von den MACs 110a, 110b, 110c und 110n in die Empfangspuffer 220a bis 220d über die Unterpfade 111a2, 112a2, 113a2 und 114a2.
  • Die Empfangspuffer arbeiten als seriell-nach-parallel Bitstrom-Konverter und leiten x Bits von Daten parallel in den Paketspeicher. Die x bits enthalten n-Bit Aufteilungen von Datenpaketen, die von einem MAC empfangen wurden, der mit dem entsprechenden Unterpfad verbunden ist. Die Datenströme jedes Unterpfads werden unter Steuerung des Paket-Queue-Managers (PQM) 160 in den Speicher geschrieben. Der PQM 160 erzeugt die Speicher-Adress-Positionen, an denen die Aufteilung der von den MACs empfangenen Daten in dem Paketspeicher 130 gespeichert werden, insbesondere in den Speicherbänken 130a, 130b, 130c und 130n. Ein Selektor 215, 225, 235 und 245 in den jeweiligen Unterpfad-Controllern 120a, 120b, 120c und 120n wählt gleichzeitig Empfangspuffer aus, die Unterpfaden des gleichen Pfads entsprechen und leitet die Aufteilungen der darin gehaltnen Daten an den Paketspeicher 130 über den Datenbus 121 weiter.
  • Z. B. gibt der PQM 160 eine Offsetspeicheradresse über den Adressbus 255 frei, um die Position innerhalb jeder Speicherbank 130a bis 130n anzuzeigen, an welcher die x Bits eines Datenpakets gespeichert werden sollen. PQM 160 gibt ebenfalls ein Signal über die Steuerleitung 252 an, welches die Selektoren 215, 225, 235 und 245 veranlaßt, gleichzeitig Bitströme von x Bits weiterzuleiten, welche in den Empfangspuffern gehalten werden, die den Unterpfaden jedes Pfades zugeordnet sind, z. B. Empfangspuffern 210a, 220a, 230a und 240a, welche den Unterpfaden 111a1, 111a2, 111a3 und 111an entsprechen. Die Unterpfade 111a1, 111a2, 111a3 und 111a4 enthalten den Pfad 111a von dem MAC 110a. Die Bitströme werden gemeinsam und gleichzeitig über den Datenbus 121 weitergeleitet, wobei jeder Bitstrom in unzusammenhängenden Speicherbereichen gespeichert wird. Der PQM wählt dann einen anderen Satz von Unterpfaden aus, die einem anderen Pfad zugeordnet sind, von welchem Aufteilungen von Datenpaketen von anderen MACs erhalten werden, MAC 110b, gefolgt vom Auswählen und Schreiben von Aufteilungen von MACs 110c und 110n.
  • Unter Bezug auf 2B koppeln m-Bit breite Übertragungsdatenpfade („Pfade") 111b bis 114b die Pfad-Controller 120 mit den MACs 110a bis 110n, wobei m gleich 16 Bit ist. Wie in dem oben unter Bezug auf 2A beschriebenen Fall der Empfangsdatenpfade, arbeiten die Übertragungs-Datenpfade bei 66,7 MHz, und stellen daher etwas mehr als 1 Gb/s in der Übertragungsrichtung bereit, für eine Gesamtgröße von 2 Gb/s Vollduplex Datenübertragungsrate pro Vollduplexpfad. In der Übertragungsdatenrichtung arbeitet der Switch in einer ähnlichen, jedoch entgegengesetzten Weise wie oben unter Bezug auf die Empfangs-Datenrichtung beschrieben. Die Unterpfad-Controller lesen jeweils x-Bit (z. B 64-Bit) Übertragungen von dem Paketspeicher 130 über den Datenbus 121, wobei jede Übertragung eine Mehrzahl von Aufeilungen von Datenpaketen darstellt. Die Unterpfad-Controller senden Daten auf den Unterpfaden, die zu einem bestimmten MAC gehören. Die Speicheradressen für die Speicherpositionen von denen der Speicher Leseoperationen durchführt, werden durch den PQM 160 erzeugt und über den Adressbus 260 übertragen, in Beantwortung von Status und Steuersignalen von den Unterpfad-Controllern und den Pfaden (nicht gezeigt).
  • Unter Bezug auf die 2C wird nun eine alternative Ausführungsform des Datenpfad-Controllers 120 beschrieben. Die Figur zeigt nur die Empfangs-Datenpfade; Schaltungen und Datenpfade sind nicht gezeigt, sind jedoch ähnlich zu denen der 2B, existieren in dieser Ausführungsform also auch für die Übertragungsrichtung. Die Ausführungsform teilt den Datenpfad-Controller 121 in eine Anzahl von Unterpfad-Controllern 120a bis 120n auf, in diesem Fall 8 Unterpfad-Controller. Die Datenpfade sind jeweils m Bit breit (wobei m gleich 16) und in gleicher Weise in eine gleiche Anzahl von n Bit breiten Empfangsdatenpfaden aufgeteilt, wobei n gleich 2 ist und n multipliziert mit der Anzahl von Unterpfad-Controllern gleich m ist. Die einem bestimmten Pfad entsprechenden Unterpfade sind mit verschiedenen Unterpfad-Controllern verbunden, so daß jeder Unterpfad-Controller mit jedem MAC über einzelne Unterpfade verbunden ist und Aufteilungen von Daten erhält. Z. B. empfängt der Unterpfad-Controller 120 Aufteilungen von Daten von MAC 110 über den Unterpfad 111a1, Aufteilungen von Daten von MAC 110b über den Unterpfad 112a1, Aufteilungen von Daten von MAC 110c über Unterpfad 113a1 usw. Während also die „Vier Aufteilungen (four slices)"-Ausführungsformen aus 2a, d. h. die Vier-Unterpfad-Controller Ausführungsform, 4-Bit breite Unterpfade, jeweils von einem anderen MAC, zu demselben Unterpfad-Controller routet, routet die 8-Aufteilungen Ausführungsform aus 2C acht 2-Bit breite Unterpfade, jeweils von einem anderen MAC, zu demselben Unterpfad-Controller.
  • Zwei-Bit Aufteilungen von Daten werden über jeden Unterpfad empfangen und in einem Empfangspuffer gespeichert, der dem Unterpfad zugeordnet ist. Die Empfangspuffer konvertieren die Bit-Aufteilungen mit einem x-Bit breiten parallelen Bitstrom zum Übertragen in den Paketspeicher 130 zu geeigneter Zeit, wie durch den PQM 160 gesteuert wird. Der PQM 160 steuert die Selektoren 216 bis 222, um die Aufteilungen des gleichen Datenpakets von jedem Unterpfad-Controller zur gleichen Zeit zu gaten. Daher wählt der Selektor beispielsweise Aufteilungen von dem ersten Unterpfad und jedem Unterpfad-Controller aus und leitet diese weiter, und dann von dem zweiten Unterpfad usw. Die Aufteilungen werden in einzelnen Positionen in den Paketspeicher 130 bei Speicheradressen gespeichert, die durch den PQM 160 identifiziert und auf den Adressbus 255 gegeben werden, um die Datenübertragung in den Speicher aufzusetzen.
  • 2D zeigt eine Ausführungsform eines Datenpfad-Controllers, bei dem der Datenpfad-Controller in zwei Unterpfad-Controller aufgeteilt ist. Nur die Empfangs-Datenpfade und entsprechende Unterpfad-Controller Architektur ist dargestellt. Die Datenpfade und Unterpfad-Controller, die gleich zu denen der 2B sind, sind nicht gezeigt. Die Ausführungsform arbeitet entsprechend der gleichen Schritte, die oben unter Bezug auf die Vier- und Acht-Aufteilungs-Implementierungen beschrieben wurden. Eine Beschreibung der Zwei-Aufteilungs-Ausführungsform wird daher dem Leser überlassen.
  • Es ist anzumerken, daß in jeder hier beschriebenen Ausführungsform keiner der Unterpfad-Controller ein vollständiges Datenpaket empfängt oder überträgt und auch der Speicher nicht ein gesamtes Datenpaket in zusammenhängenden Positionen in dem Paketspeicher speichert. Solange jedoch entsprechende Empfangs- und Übertragungs-Datenunterpfade und symmetrische Übertragungsoperationen beim Empfangen von Aufteilungen von Daten in den Speicher oder Übertragungen von Aufteilungen von Daten aus dem Speicher wie oben beschrieben verwendet werden, können Datenpakete in jeder denkbaren Weise aufgeteilt und übertragen werden. Daher können gemäß der vorliegenden Erfindung Aufteilungen von Datenpaketen in einzelnen Puffern gespeichert werden die einzelnen Unterpfaden zugeordnet sind und dann in einzelne Speicherbereiche in einer zeitaufgeteilten Weise über tragen werden. Der Datenpfad-Controller und der Paket-Queue-Manager stellen sicher, daß die Aufteilungen von demselben Datenpaket, die von einer bestimmten MAC empfangen werden, zur gleichen Zeit in den Speicher geschrieben werden.
  • Im allgemeinen sind die verschiedenen Ausführungsformen der Datenpfad-Controller-Architekturen bei der Verarbeitung von Datenpaketen gleich effizient. Wie jedoch beschrieben werden wird, worden Pakete mit geringer Länge, z. B. ein minimales Paket von 65 Bytes Länge oder Pakete mit ungrader Länge, bei denen beispielsweise Bytes zur Übertragung in den Paketspeicher verbleiben, nachdem gleichzeitig Aufteilungen von Datenpaketen durch den Datenpfad-Controller in den Speicher übertragen wurden, in effizienterer Weise durch die Viergegenüber der Acht-Aufteilungs-Ausführungsform verarbeitet.
  • Ein Paket mit 65 Bytes, welches 520 Bits enthält, benötigt 32,5 Taktzyklen zur Übertragung über einen 16-Bit Bus, wie z. B. den Empfangs-Datenpfad oder den Übertragungs-Datenpfad, der jeden MAC mit dem Datenpfad-Controller verbindet. Unter Verwendung der Vier-Aufteilungs-Ausführungsform gemäß der vorliegenden Erfindung kann jedoch ein LAN-Switch 512 der 520 Bits von/zu jedem Paketspeicher in zwei Taktzyklen über den Datenbus 121 lesen, s wobei 8 Bits für die Übertragung in einem dritten Taktzyklus verbleiben. In gleicher Weise kann eine Acht-Aufteilungs-Ausführungsform 512 Bits eines Datenpakets in einem einzigen Taktzyklus übertragen und läßt ebenfalls 8 Bits zur Übertragung in einem nachfolgenden Taktzyklus. Der Vorgang der Übertragung der verbleibenden 8 Bits wird nun unter Bezug auf detailliertere Darstellungen des Unterpfad-Controllers in sowohl der Vier- als auch der Acht-Aufteilungs-Ausführungsform der vorliegenden Erfindung beschrieben.
  • 4 zeigt zwei Empfangs-Daten-Unterpfade 111a1 und 112a1 in einem Unterpfad-Controller gemäß der Acht-Aufteilungs-Ausführungsform, die oben beschrieben ist und in 2C gezeigt ist. Jeder Unterpfad hat einen getrennten Puffer für jede Einzelbitleitung, welche der Unterpfad enthält. Beispielsweise hat in der Acht-Aufteilungs-Ausführungsform jeder Empfangs- oder Übertragungs-Daten-Unterpfad 2-Bit Breite.
  • Daher sind zwei Puffer bereitgestellt. 4 zeigt die zwei Einzelbitleitungen 402 und 404 der Empfangs-Datenpfade 111a1, die mit dem MAC 110a verbunden sind, um gemeinsam 2-Bit Aufteilungen der Datenpakete zu empfangen, welche bei MAC 110a empfangen werden. In gleicher Weise empfangen die Bitleitungen 406 und 408 gemeinsam 2-Bit Aufteilungen der Datenpakete, die bei MAC 110b empfangen werden. Wie gezeigt, ist ein seriellnach-parallel Konverter, z. B. Konverter 410a mit jeder Einzelbitleitung verbunden, z. B. empfängt die Bitleitung 402 Bits in einer seriellen Weise und leitet (bursts) 32 Bit parallel in einen First In First Out (FIFO) Puffer, z. B. Puffer 422. In der Ausführungsform ist jeder FIFO-Puffer 32 Bit breit mit 4 Bit Tiefe. Jedoch können auch FIFOs anderer Breite und/oder Tiefe verwendet werden.
  • Aus Gründen der Darstellung wird angenommen, daß die Bitleitung 402 die Bitposition 0 von dem Unterpfad 111a1 und Bitleitung 404 die Bitposition 1 von dem Unterpfad 111a1 empfängt (es ist jedoch klar, daß die beiden Bit-Unterpfade beliebige Zwei Bit-Positionen aufweisen können, ohne von der vorliegenden Erfindung abzuweichen).
  • Der FIFO 422 empfängt daher die Bits 0, 16, 32, 64 und 96 etc. eines Datenpakets, das von MAC 110a empfangen wird und FIFO 424 empfängt die Bits 1, 17, 33, 65 und 97 etc. desselben Datenpakets. Dies wird in gleicher Weise fortgesetzt, so daß ein FIFO (nicht gezeigt), der mit der ersten Bitleitung des Unterpfades 111a2 gekoppelt ist, die Bits 2, 34, 66 und 98 etc. empfängt und ein FIFO, der mit der zweiten Bitleitung des Unterpfads 111a2 gekoppelt ist, die Bits 3, 35, 67 und 99 etc. empfängt.
  • Die in jedem der FIFOs gehaltenen Bits für einen umgebenden Unterpfad sind verschachtelt (interleaved), um einen x-Bit breiten Bitstrom zu bilden, der dann für die Übertragung in den Paketspeicher über eine jeweilige x-Bit breiten Anteil des Datenbusses 121 ausgewählt ist, z. B. Datenbus 121a. Beispielsweise werden die Inhalte der Zelle d in FIFOs 422 und 424 jeweils auf 32-Bit breiten Leitungen 432 und 434 übertra gen und über die 64-Bit breite Leitung 438 verschachtelt (interleaved).
  • Eine hierarchische Zwei-Ebenenauswahlschaltung wird verwendet, um die Unterpfade 111a1 oder Unterpfad 112a1 auszuwählen, in Abhängigkeit davon, welches Datenpaket von MAC 110a oder 110b empfangen wird und in den Paketspeicher 130 unter Steuerung des PQM 160 geschrieben wird. In der ersten Ebene der Auswahl wählt der Selektor 445 entweder Unterpfad 111a1 oder 112a1 aus. In der Acht-Aufteilungs-Ausführungsform, wählen drei andere Selektoren in gleicher Weise wie der Selektor 445 von den übrigen 3 Paaren von Unterpfaden aus, die durch den Unterpfad-Controller 120a geroutet werden. Die Ausgabe des Selektors 445 wird dann zu einem Zweite-Ebene Selektor 215 übertragen, wobei der Selektor 215 einen der vier Unterpfade auswählt, die in der ersten Auswahlebene ausgewählt wurden. Die Aufteilung von Datenpaketen des Unterpfades, der in der zweiten Ebene ausgewählt wird, wird gleichzeitig mit anderen Aufteilungen desselben Datenpakets von anderen Unterpfaden übertragen, die mit demselben Pfad in Beziehung stehen, jedoch durch die anderen sieben Unterpfad-Controller geroutet werden. Auf diese Weise wird ein Datenpaket an dem MAC empfangen, partitioniert und durch unabhängige Controller geroutet und gleichzeitig in einzelne Speicherbereiche in dem Paketspeicher 130 gegatet.
  • In der Acht-Aufteilung-Ausführngsform wird ein verbleibendes Byte durch vier der acht Unterpfad-Controller verteilt, 2 Bits pro Unterpfad. Wenn also PQM 160 die Inhalte dieser Unterpfade durch die hierarchische Auswahlschaltung gatet, die in 4 gezeigt ist, werden 504 der 512 über den Bus 121 übertragenen Bits verschwendet. Die in 3 dargestellte 4-Aufteilungs-Ausführungsform behandelt diese Situation in effizienterer Weise, indem die 32-Bit parallele Ausgabe des seriell-nach-parallel Konverters in 16-Bit FIFOs geteilt wird.
  • In der Ausführungsform mit vier Aufteilungen weist beispielsweise Unterpfad 111a1 einen 4-Bit breiten Unterpfad auf. Jede Bitleitung des Unterpfades ist mit einem einzelnen der seriell-nach-parallel Konverter 210a1 bis 210a4 in dem Unter pfad-Controller 120a verbunden. Jeder der seriell-nach-parallel Konverter ist wiederum über einen 32-Bit Parallelbus mit einzelnen 4-Bit von 32-Bit FIFOs 320 bis 335 gekoppelt. Jedoch sind die FIFOs jeweils in zwei 16-Bit FIFOs geteilt, beispielsweise ist FIFO 320 in die FIFOs 320d1 und 320d2 geteilt. Nur die jeweiligen Hälften jedes FIFO in dem Unterpfad sind verschachtelt (interleaved), so daß statt vier 32-Bit FIFOs zu verschachteln tatsächlich nur vier 16-Bit FIFOs verschachtelt werden. Daher wird in der 4-Aufteilung-Ausführungsform ein verbleibendes Byte über zwei der vier Unterpfad-Controller verteilt, 4 Bits pro Unterpfad. Wenn der PQM 160 die Inhalte dieser Unterpfade durch die hierarchische Auswahlschaltung in den Paketspeicher gatet, werden nur 248 Bits verschwendet, aufgrund der FIFO-Struktur und der Verschachtelung wie oben beschrieben.
  • Aufgeteilte Vergleichsmaschine
  • Ein LAN-Switch, welche die Architektur des aufgeteilten Datenpfad-Controllers gemäß der beschriebenen vorliegenden Erfindung implementiert, steigert die Leistungsfähigkeit der Datenpfad-Architektur, um in effizienter und rascher Weise eine Identifizierung von Datenpaketen, eine Filterung, Weiterleitung und andere mit der Paketverarbeitung zusammenhängende Operationen auszuführen, wie z. B. das Einreihen von Datenpaketen in einzelne Warteschlangen gemäß der Quality of Service-Parameter, insbesondere Richtlinienbasierte Quality of Service-Parameter und Durchführen von statistischen Analysen oder Netzwerk-Managementfunktionen, die Datenpakete betreffen. Eine LAN-Switch Architektur, welche die Datenpfad Architektur und aufgeteilte Vergleichsmaschinen-Architektur der vorliegenden Erfindung verwendet, unterstützt eine Mehrzahl von Ebenen der Paketfilterung, Weiterleitung und Netzwerkebenen-Routing und unterstützt ferner Netzwerk-Management, statistische Analyse und Quality of Service Anwendungen. Diese Funktionalität basiert auf den nachfolgenden wohlbekannten Informationsfelder, die in der Datenverbindung, dem Netzwerk, dem Transport oder anderen Protokollebenen gespeichert sind, ist jedoch nicht auf diese beschränkt:
    MAC Zieladresse;
    MAC Quelladresse;
    MAC Zieladresse und virtuelles LAN (VLAN);
    MAC Quelladresse und VLAN;
    IP Zieladresse;
    IP Zieladresse, IP Quelladresse und VLAN;
    TCP Fluß (IP Quelladresse, TCP Quell-Port, IP Zieladresse, TCP Ziel-Port); und
    IP Zieladresse und IP Quelladresse
  • Mit Bezug auf die 1, 2C, 4 und 5 überträgt jeder Datenpfad-Controller in jedem Taktzyklus Aufteilungen (slices) von Datenpaketen in den Paketspeicher 130, wie oben beschrieben. Während die Aufteilungen der Datenpakete den Datenpfad-Controller passieren, sendet der Paketweiterleitungs-Controller 150 Anweisungen an den Datenpfad-Controller über den Anweisungs-Bus 555, um nach einem bestimmten Feld oder einer Gruppe von Feldern zu suchen. (Es ist anzumerken, daß obwohl diese Ausführungsform im wesentlichen den Betrieb der Vergleichs-Maschine unter Steuerung und zugunsten des Weiterleitungs-Controllers betrachtet, dem Fachmann klar ist, daß andere Controller, welche die Steuerung anderer Operationen betreffen, wie z. B. Quality of Service Warteschlangen, Netzwerkmanagement, statistische Analysen und ähnliches die hier beschriebene Vergleichs-Engine benutzen können). Da jedoch der Datenpfad-Controller in einer Anzahl von Unterpfad-Controllern gemäß der Datenpfad-Architektur der vorliegenden Erfindung aufgeteilt ist, weist der Paketweiterleitungs-Controller die Datenunterpfad-Controller an, für bestimmte Aufteilungen ein oder mehrere Felder in einem Datenpaket zu suchen. In alternativer Weise empfangen die Unterpfad-Controller von dem Paket-Weiterleitungscontroller Anweisungen, welche die zu suchenden Felder anzeigen und bestimmte Aufteilungen eines Feldes kennzeichnen, nach dem gesucht werden soll, basieren auf Informationen die ihnen bekannt sind, wie z. B. der Position eines gegebenen Unterpfad-Controllers bzgl. anderen Unterpfad-Controllern in der Datenpfad-Architektur, den Bitpositionen eines wohlbekannten Feldes in einem Datenpaket oder anderen Informationen, welche die Aufteilung eines bestimmten Feldes betreffen, für dessen Verarbeitung der Unterpfad-Controller verantwortlich ist.
  • Man erinnere sich, daß unter Bezug auf 4 jeder Unterpfad-Controller eine Mehrzahl von Unterpfaden aufweist, in Abhängigkeit davon, zu welchem Grad der Datenpfad-Controller in mehrere Unterpfad-Controller aufgeteilt ist. In der Acht-Aufteilungs-Ausführungsform beispielsweise, welche in 4 gezeigt ist, implementiert jeder Unterpfad-Controller acht Unterpfade, jeweils abgeleitet von einem mit einem einzelnen MAC verbundenen Datenpfad. Jeder dieser Datenpfade wiederum, ist in eine Anzahl von Einzelbit-Übertragungsleitungen aufgeteilt, in Abhängigkeit von der Breite des Datenpfades, welches mit jedem MAC verbunden ist und der Anzahl der Unterpfad-Controller. In der Acht-Aufteilungs-Konfiguration mit einer Datenpfad-Breite von 16-Bit, trägt jeder Unterpfad zwei einzelne Bitübertragungsleitungen, wie in 4 gezeigt. Datenbits werden in serieller Weise über die Einzelbit-Übertragungsleitungen empfangen und in einem 4 zu 32-Bit parallel FIFO gepuffert, wie bereits beschrieben. Gemäß der Vergleichsmaschine der vorliegenden Erfindung ist jeder 4 zu 32-Bit FIFO in jedem Unterpfad-Controller mit einem Selektor verbunden, um einen der vier 32-Bit Puffer in dem FIFO auszuwählen. Beispielsweise sind in der Acht-Aufteilungs-Ausführungsform der Datenpfad-Architektur gemäß der vorliegenden Erfindung und wie in 5 gezeigt, die FIFOs 422 und 424 jeweils mit den entsprechenden zwei Einzelbit-Übertragungsleitungen 412 und 414 in dem Unterpfad 210a gekoppelt. Die Selektoren 502 und 504 sind jeweils mit den FIFOs 422 und 424 gekoppelt, um die Puffer in dem FIFO als Eingabe zu empfangen. Die Puffer enthalten jeweils 32 diskontinuierliche Ein-Bit-Aufteilungen von Datenpaketen. Die Selektoren haben jeweils vier Eingänge, entsprechend jedem Eintrag in dem FIFO, so daß die Selektoren eine bestimmte Aufteilung oder Aufteilungen von Datenpaketen von dem zugeordneten FIFO empfangen können, unabhängig davon, wo die Aufteilung zu dem Zeitpunkt in dem FIFO angeordnet ist, zu dem der Selektor die Aufteilung zu der Vergleichsmaschinenlogik überträgt, gemäß einem Steuersignal, welches durch den Paketweiterleitungs-Controller bereitgestellt wird. Während die in 5 gezeigte Ausführungsform Aufteilungen von Datenpaketen unmittelbar von dem in der Datenpfadarchitektur verwendeten FIFOs erhält, ist für den durchschnittlichen Fachmann klar, daß ein Duplikatsatz von FIFO-Puffern für den Empfang von Aufteilungen von Datenpaketen zur Paketidentifizierung und Filterungszwecken bereitgestellt sein kann, wobei der Kompromiß zwischen Speicherverwendung gegenüber Datenpfad-Controller Durchsatz besteht.
  • Die Aufteilungen von Datenpaketen werden als nächstes durch den Selektor zu einem Puffer weitergeleitet. Zum Beispiel leitet der Selektor 512 Aufteilungen, die von einem der Einträge a, b, c oder d in dem FIFO 422 erhalten wurden, an den Puffer 508 weiter. Der Selektor 516 wählt dann Anteile einer Aufteilung aus, die sich auf ein wohlbekanntes Feld beziehen. In einer Ausführungsform hat der Selektor 516 eine Eingabe für jedes Feld, für das eine Filterung oder ähnliches unterstützt wird. Daher hat der Selektor 516 einen Eingang zum Empfang dieses Anteils der Aufteilungen in Puffer 508, welcher sich beispielsweise auf eine MAC-Zieladresse bezieht und ein anderer Eingang empfängt den Anteil der Aufteilungen in Puffer 508, welcher sich beispielsweise auf eine IP-Zieladresse oder einen TCP-Fluß etc. bezieht. Der Paketweiterleitungs-Controller 150 stellt ein Steuersignal an den Selektor 516 zur Verfügung, um anzuzeigen, welches Feld auszuwählen ist. Der Selektor 502, der Puffer 508 und der Selektor 516, deren Kombination in 5 gezeigt und soweit beschrieben ist, ist für jeden FIFO jedes Unterpfades dupliziert. Tatsächlich ist, wie gezeigt, FIFO 424 auch zur Übertragung von Aufteilungen von Datenpaketen durch Selektor 504 an Puffer 510 gekoppelt, wobei Anteile der Aufteilungen, die sich auf ein oder mehrere Felder beziehen, ausgewählt und durch den Selektor 518 weitergeleitet werden.
  • Der Selektor 520 wählt die Anteile der Aufteilungen aus, die sich auf ein Feld (eine „Feldaufteilung" Field-Slices) Ausgabe von entweder dem Selektor 516 von dem FIFO 422 oder dem Selektor 580 von FIFO 424 beziehen. Die Feldaufteilung wird als Hash-Schlüssel verwendet und durch eine Hashing-Funktion bei 522 zur Berechnung eines Index in die Weiterleitungsdatenbank 140 bearbeitet, in der eine Tabelle gleichartiger Felder angeordnet ist, aus der die Feldaufteilungen zu vergleichen sind. Wenn beispielsweise die an der Ausgabe von Selektor 520 erhaltene Feldaufteilung einen Anteil einer MAC-Zieladresse ist, berechnet die Hashing-Funktion einen Index in die MAC-Adreßtabelle in der Weiterleitungsdatenbank 140. Wenn jedoch die Feldaufteilung ein Teil einer IP-Quelladresse ist, berechnet die Hashing-Funktion einen Index in die IP-Adreßtabelle in der Weiterleitungsdatenbank.
  • In einer Ausführungsform stellt die Hashing-Funktion einen Index für einen Hash-Sammler (hash bucket) in der Tabelle in der Weiterleitungsdatenbank 140 bereit. Die Größe des Hash-Sammlers in der Ausführungsform, die in 5 gezeigt ist, beträgt vier Einträge. Daher wird jeder der Einträge in einem Hash-Sammler von der Weiterleitungsdatenbank gelesen und in eine ähnliche Anzahl von Komparatoren geladen, beispielsweise Komparatoren 526a bis 526n. Die Feldaufteilung ist dann Eingang für jeden der Komparatoren und wird mit den aus der Tabelle geladenen Einträge verglichen. Die Ergebnisse des Vergleichs werden dann an den Paketweiterleitungs-Controller zurückgeliefert, der die Ergebnisse durchgeführter Vergleiche an zugehörigen Feldaufteilungen für das gleiche Feld in dem gleichen Datenpaket in diesen oder anderen Unterpfad-Controllern ansammelt. Dieser Vorgang kann für jedes Feld wiederholt werden, mit dem das Datenpaket verglichen wird. Beispielsweise kann die Vergleichslogik die Inhalte eines MAC-Zieladressenfelds in einem Datenpaket mit Einträgen in der Weiterleitungsdatenbank suchen und vergleichen. Wenn die MAC-Zieladresse gefunden wird, d. h. wenn eine Übereinstimmung der MAC-Zieladresse in der Weiterleitungsdatenbank gefunden wird, kann die Vergleichslogik nach Inhalten anderer Felder in dem Datenpa ket, wie z. B. MAC-Quelladressen suchen und diese vergleichen. Dann kann der Vorgang in dieser iterativen Weise für eine beliebige Anzahl von Feldern in dem Datenpaket fortgesetzt werden, nach dem gesucht wird.
  • In alternativer Weise können die bei den Selektoren 516 und 518 erhaltenen Feldaufteilungen zunächst kombiniert werden und dann gegen Einträge verglichen werden, welche in die Komparatoren aus der entsprechenden Tabelle in der Weiterleitungsdatenbank geladen werden. Die Ergebnisse werden dann entweder in der Logik (nicht gezeigt) oder durch den Weiterleitungs-Controller 150 gesammelt, um zu bestimmen, ob ein bestimmtes Feld nach dem gesucht wurde, tatsächlich durch die Vergleichsmaschine gefunden wurde. Der Weiterleitungs-Controller führt dann die geeignete Funktion durch, wie sie in dem LAN-Switch für das identifizierte Paket eingestellt ist, z. B. Filtern oder Weiterleiten des Datenpakets. Zusätzlich können die Feldaufteilungen, die an der Ausgabe der Selektoren 516 und 518 erhalten werden, kombiniert werden und die Kombination wiederum mit der Ausgabe einer gleichartigen Logik oder anderen Unterpfad-Controllern kombiniert werden. Das sich ergebende Feld kann dann durch eine Hashing-Funktion zur Erstellung eines Schlüssels verwendet werden, der als Index für die Weiterleitungsdatenbank verwendet wird. Ein Eintrag in der Datenbank auf die der Index verweist ist dann Eingabe an die Komparatoren und in der gleichen Weise wie oben beschrieben, kann ein Vergleich mit den Feldern durchgeführt werden und das Ergebnis an den Weiterleitungs-Controller gesendet werden.

Claims (15)

  1. Eine Paketvermittlungseinrichtung mit wenigstens einer ersten Schnittstelle (110a) und einer zweiten Schnittstelle (110b), die mit einem externen Datenbus zum Empfang eines ersten Datenpakets und eines zweiten Datenpakets gekoppelt sind, einem Datenpfad-Controller (120), der mit der ersten Schnittstelle und der zweiten Schnittstelle über separate m-Bit breite Datenpfade (111a, 112a, ...) gekoppelt ist, wobei der Datenpfad-Controller (120) ferner eine Anzahl von zusätzlichen Daten-Unterpfad-Controllern (120a ... 120n) aufweist, wobei jeder Daten-Unterpfad-Controller jeweils mit einem separaten n-Bit breiten Abschnitt des m-Bit breiten Datenpfads gekoppelt ist, der einer der Schnittstellen zugeordnet ist, um n-Bits des Datenpakets zu empfangen, wobei n multipliziert mit der Anzahl der Daten-Unterpfad-Controller m ergibt, wobei mit jeder Schnittstelle zur Aufteilung der Datenpakete in wenigsten einen ersten Abschnitt und einen zweiten Abschnitt ein Splitter gekoppelt ist, wobei der erste Abschnitt aus der Menge von Bits des Datenpakets besteht, die von der Schnittstelle übertragen werden, welche das Paket an einen ersten Daten-Unterpfad-Controller (120a) über einen bestimmten Unterpfad (xxxa1) empfängt und wobei der zweite Abschnitt aus der Menge von Bits des Datenpakets besteht, welche von der Schnittstelle übertragen werden, die das Paket an einem zweiten Daten-Unterpfad-Controller (120b) über einen anderen bestimmten Unterpfad (xxxa2) empfangen hat mit und einem mit dem Datenpfad-Controller (120) über einen y-Bit breiten Datenpfad gekoppelten Speicher (130), aufweisend: einen Daten-Unterpfad-Controller (120a), ferner aufweisend: einen ersten Puffer (422), der mit der ersten Schnittstelle (110a) über eine einzelne Bitleitung (402) gekoppelt ist, die mit dem n-Bit breiten Abschnitt des m-Bit breiten Datenpfads gekoppelt ist, der der ersten Schnittstelle zuge ordnet ist, um einen ersten Unterabschnitt des ersten Abschnitts des ersten Datenpakets zu empfangen und zu halten; einen zweiten Puffer (424), der mit der ersten Schnittstelle (110a) über eine einzelne Bitleitung (404) gekoppelt ist, die mit dem n-Bit breiten Abschnitt des n-Bit breiten Datenpfads gekoppelt ist, der der ersten Schnittstelle zugeordnet ist, um einen zweiten Unterabschnitt des ersten Abschnitts des ersten Datenpakets zu empfangen und zu halten; einen dritten Puffer (426), der mit der zweiten Schnittstelle (110b) über eine einzelne Bitleitung (406) gekoppelt ist, die mit dem n-Bit breiten Abschnitt des n-Bit breiten Datenpfads gekoppelt ist, der der zweiten Schnittstelle zugeordnet ist, um einen ersten Unterabschnitt des ersten Abschnitt des zweiten Datenpakets zu empfangen und zu halten; einen vierten Puffer (428), der mit der zweiten Schnittstelle (110b) über eine einzelne Bitleitung (408) gekoppelt ist, die mit dem n-Bit breiten Abschnitt des n-Bit breiten Datenpfads gekoppelt ist, der der zweiten Schnittstelle zugeordnet ist, um einen zweiten Unterabschnitt des ersten Abschnitts des zweiten Datenpakets zu empfangen und zu halten; einem mit dem ersten (422), dem zweiten (424), dem dritten (426) und dem vierten (428) Puffern gekoppelten Selektor (445), um zunächst die ersten und zweiten Unterabschnitte des ersten Datenpakets von dem ersten (422) und zweiten (424) Puffer für die gleichzeitige Übertragung in den Speicher (130) auszuwählen und nachfolgend die ersten und zweiten Unterabschnitte des zweiten Datenpakets von den dritten (426) und vierten (428) Puffern für die gleichzeitige Übertragung in den Speicher (130) auszuwählen; und wobei y größer als m ist, m größer oder gleich n ist und n größer oder gleich zwei ist.
  2. Die Paketvermittlungseinrichtung (100) gemäß Anspruch 1, ferner gekennzeichnet durch einen ersten Daten-Unterpfad-Controller, aufweisend die ersten (422) und dritten (426) Puffer und mit einem zweiten Daten-Unterpfad-Controller mit den zweiten (424) und vierten (428) Puffern.
  3. Die Paketvermittlungseinrichtung (100) gemäß Anspruch 2, wobei der erste und zweite Daten-Unterpfad-Controller in separaten integrierten Schaltungen implementiert sind.
  4. Die Paketvermittlungseinrichtung (100) gemäß Anspruch 1, ferner dadurch gekennzeichnet, daß der Datenpfad-Controller (120) mit der ersten Schnittstelle und der zweiten Schnittstelle über einen m-Bit breiten Datenpfad gekoppelt ist, wobei der Datenpfad-Controller (120) ferner eine Anzahl von zusätzlichen Daten-Unterpfad-Controllern (120a ... 120n) aufweist, wobei jeder Daten-Unterpfad-Controller mit jeweils einem separaten n-Bit breiten Abschnitt des m-Bit breiten Datenpfads zum Empfang von n-Bits des Datenpakets gekoppelt ist, wobei n multipliziert mit der Anzahl der Daten-Unterpfad-Controller m ergibt, wobei die Daten-Unterpfad-Controller (120a ... 120n) jeweils einen Puffer zum Halten von x Bits der Datenpakete aufweisen, wobei x ein Vielfaches von n ist; und wobei der Speicher (130) mit dem Datenpfad-Controller (120) über einen y-Bit breiten Datenpfad gekoppelt ist, wobei die Daten-Unterpfad-Controller (120a ... 120n) jeweils mit einem separaten x-Bit breiten Abschnitt des y-Bit breiten Datenpfads gekoppelt sind, um gleichzeitig x-Bits des Datenpakets an den Speicher (130) zu übertragen.
  5. Die Paketvermittlungseinrichtung (100) gemäß Anspruch 4, ferner dadurch gekennzeichnet, daß die Daten-Unterpfad-Controller (120a ... 120n) in wenigstens zwei separaten integrierten Schaltungen implementiert sind.
  6. Die Paketvermittlungseinrichtung (100) gemäß Anspruch 4, ferner dadurch gekennzeichnet, daß die Anzahl der Daten-Unterpfad-Controller (120a ... 120) gleich acht ist.
  7. Die Paketvermittlungseinrichtung (100) gemäß Anspruch 6, ferner dadurch gekennzeichnet, daß die acht Daten-Unterpfad-Controller (1201 ... 1208 ) in zwei integrierten Schaltungen implementiert sind, jeweils vier Daten-Unterpfad-Controller in jeder integrierten Schaltung.
  8. Die Paketvermittlungseinrichtung (100) gemäß Anspruch 6, ferner dadurch gekennzeichnet, daß die acht Daten-Unterpfad-Controller (1201 ... 1208 ) in vier integrierten Schaltungen implementiert sind, jeweils zwei Daten-Unterpfad-Controller in jeder integrierten Schaltung.
  9. Die Paketvermittlungseinrichtung (100) gemäß Anspruch 6, ferner dadurch gekennzeichnet, daß die acht Daten-Unterpfad-Controller (1201 ... 1208 ) in acht integrierten Schaltungen implementiert sind, jeweils ein Daten-Unterpfad-Controller in jeder integrierten Schaltung.
  10. Die Paketvermittlungseinrichtung (100) gemäß Anspruch 4, ferner dadurch gekennzeichnet, daß der y-Bit breite Datenpfad die zweifache Breite des m-Bit breiten Datenpfads aufweist.
  11. Ein Verfahren zum Verarbeiten von Datenpaketen in einer Paketvermittlungseinrichtung (100), die zumindest eine erste Schnittstelle (110a) und eine zweite Schnittstelle (110b) aufweist, die mit einem externen Datenbus gekoppelt sind, wobei ein Datenpfad-Controller (120) mit der ersten Schnittstelle und der zweiten Schnittstelle über separate m-Bit breite Datenpfade gekoppelt ist, wobei der Datenpfad-Controller (120) ferner eine Anzahl von zusätzlichen Daten-Unterpfad-Controllern (120a ... 120n) aufweist, wobei jeder Daten-Unterpfad-Controller jeweils mit einem separaten n-Bit breiten Abschnitt des m-Bit breiten Datenpfads gekoppelt ist, der einer der Schnittstellen zugeordnet ist, um n Bits eines Datenpakets zu empfangen, wobei n multipliziert mit der Anzahl von Daten-Unterpfad-Controllern m ergibt und wobei ein Speicher (130) mit dem Datenpfad-Controller (120) über einen y-Bit breiten Datenpfad gekoppelt ist, wobei y größer als m ist, wo bei m gröber oder gleich n ist und n größer oder gleich zwei ist, wobei das Verfahren aufweist Empfangen eines ersten Datenpaket an einer ersten Schnittstelle der Paketvermittlungseinrichtung (100), aufteilen des ersten Datenpakets in wenigstens einen ersten Abschnitt und einen zweiten Abschnitt, Übertragen des ersten Abschnitts des ersten Datenpakets auf einem ersten der ersten Schnittstelle zugeordneten n-Bit breiten Abschnitt (111a1) des m-Bit breiten Datenpfads (111a) in die Paketvermittlungseinrichtung (100), Übertragen des zweiten Abschnitts des ersten Datenpakets auf einem zweiten n-Bit breiten Abschnitt (111a2) des m-Bit breiten Datenpfads (111a) in die Paketvermittlungseinrichtung (100), aufweisend die Schritte: Empfangen über einen aus einer Mehrzahl einzelner Leitungen (402, 404) bestehenden bestimmten Unterpfad (111a1) des ersten Abschnitts des ersten Datenpakets an einem ersten Daten-Unterpfad-Controller (120a) mit einem ersten Puffer (422), einem zweiten Puffer (424), einem dritten Puffer (426) und einem vierten Puffer (428), wobei der erste Daten-Unterpfad-Controller (120a) mit dem ersten Empfangsdatenpfad (111a1) gekoppelt ist, gleichzeitig mit dem Empfangen über einen anderen bestimmten Unterpfad (111a2), bestehend aus einer Mehrzahl einzelner Leitungen, des zweiten Abschnitts des ersten Datenpakets an dem zweiten Daten-Unterpfad-Controller (120b), der mit dem zweiten n-Bit breiten Abschnitt des m-Bit breiten Datenpfads (111a2) gekoppelt ist; Empfangen eines zweiten Datenpakets an der zweiten Schnittstelle der Paketvermittlungseinrichtung (100), Aufteilen des zweiten Datenpakets in wenigstens einen ersten Abschnitt und einen zweiten Abschnitt, Übertragen des ersten Abschnitts des zweiten Datenpakets auf einem der zweiten Schnittstelle zugeordneten ersten n-Bit breiten Abschnitt (112a1) des m-Bit breiten Datenpfads (112a) in die Paketvermittlungseinrichtung (100), Übertragen des zweiten Abschnitts des zweiten Datenpakets auf einem zweiten n-Bit breiten Abschnitt (112a1) des m-Bit breiten Datenpfads (112a) in die Paketvermittlungseinrichtung (100); Empfangen über eine erste einzelne Leitung (402) und Halten eines ersten Unterabschnitts des ersten Abschnitts des ersten Datenpakets in dem ersten Puffer (422), Empfangen über eine zweite einzelne Leitung (404) und Halten eines zweiten Unterabschnitts des ersten Abschnitts des ersten Datenpakets in dem zweiten Puffer (424); Empfangen über eine dritte einzelne Leitung (406) und Halten eines ersten Unterabschnitts des ersten Abschnitts des zweiten Datenpakets in dem dritten Puffer (426); Empfangen über eine vierte einzelne Leitung (408) und Halten eines zweiten Unterabschnitts des ersten Abschnitts des zweiten Datenpakets in dem vierten Puffer (428); Auswählen der ersten und zweiten Unterabschnitte des ersten Datenpakets für die gleichzeitige Übertragung in den Speicher (130); gleichzeitiges Übertragen der ersten und zweiten Unterabschnitte des ersten Datenpakets aus den ersten und zweiten Puffern in den Speicher (130); nachfolgendes Auswählen der ersten und zweiten Unterabschnitte des zweiten Datenpakets für die gleichzeitige Übertragung in den Speicher (130); und gleichzeitiges Übertragen der ersten und zweiten Unterabschnitte des zweiten Datenpakets von den dritten und vierten Puffern in den Speicher (130).
  12. Das Verfahren gemäß Anspruch 11, ferner gekennzeichnet durch: nachfolgendes Übertragen des ersten Abschnitts und des zweiten Abschnitts des Datenpakets aus dem Speicher (130) über den Datenpfad (121a, 121b); Empfangen über den Datenpfad (121a, 121b) des ersten Abschnitts des Datenpakets an den ersten Daten-Unterpfad-Controller (260) gleichzeitig mit dem Empfangen über den Datenpfad des zweiten Abschnitts des Datenpakets an dem zweiten Daten-Unterpfad-Controller (270); Übertragen des ersten Abschnitts des Datenpakets auf einem ersten Übertragungs-Datenpfad (111b1) an die erste Schnitt stelle, die mit dem ersten Übertragungs-Datenpfad (111b1) gekoppelt ist; Übertragen des zweiten Abschnitts des Datenpakets auf einem zweiten Übertragungs-Datenpfad (111b2) an die erste Schnittstelle, die mit dem zweiten Übertragungs-Datenpfad (111b2) gekoppelt ist; Kombinieren der ersten und zweiten Abschnitte des Datenpakets an der ersten Schnittstelle; und Übertragen des Datenpakets von der ersten Schnittstelle der Informationsverarbeitungseinrichtung (100).
  13. Das Verfahren gemäß Anspruch 11, ferner gekennzeichnet durch: Übertragen von jeweils m Bits des Datenpakets über einen m-Bit breiten Datenpfad (111a1); Routing von separaten n-Bit-Abschnitten der m Bits über p n-Bit breite Datenpfade (402, 404), die mit dem m-Bit breiten Datenpfad (111a1) gekoppelt sind, wobei m geteilt durch n gleich p ist; Puffern von x Bits an jedem n-Bit breiten Datenpfad, wobei x ein Mehrfaches von n ist; und gleichzeitiges weiterleiten von y Bits von den p n-Bit breiten Datenpfaden, wobei y gleich x multipliziert mit p ist.
  14. Das Verfahren gemäß Anspruch 13, wobei Übertragen von m Bits des Datenpakets über einen m-Bit breiten Datenpfad ein gleichzeitiges Übertragen von n Bits des Datenpakets über den n-Bit breiten Datenpfad enthält.
  15. Das Verfahren gemäß Anspruch 13, wobei gleichzeitiges Weiterleiten von y Bits von den p n-Bit breiten Datenpfaden ein Auswählen und gleichzeitiges Weiterleiten der y Bits von den p n-Bit breiten Datenpfaden in nicht zusammenhängende Speicherbereiche enthält.
DE69834823T 1997-08-29 1998-08-28 Paketvermittlungsvorrichtung und -verfahren mit zentraler Speicherarchitektur Expired - Lifetime DE69834823T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US5740297P 1997-08-29 1997-08-29
US57402P 1997-08-29
US09/016,017 US6295299B1 (en) 1997-08-29 1998-01-30 Data path architecture for a LAN switch
US16017 1998-01-30
PCT/US1998/017974 WO1999011036A1 (en) 1997-08-29 1998-08-28 Data path architecture for a lan switch

Publications (2)

Publication Number Publication Date
DE69834823D1 DE69834823D1 (de) 2006-07-20
DE69834823T2 true DE69834823T2 (de) 2006-12-21

Family

ID=26688064

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69834823T Expired - Lifetime DE69834823T2 (de) 1997-08-29 1998-08-28 Paketvermittlungsvorrichtung und -verfahren mit zentraler Speicherarchitektur

Country Status (6)

Country Link
US (2) US6295299B1 (de)
EP (1) EP1016247B1 (de)
JP (1) JP4435974B2 (de)
AU (1) AU9211398A (de)
DE (1) DE69834823T2 (de)
WO (1) WO1999011036A1 (de)

Families Citing this family (91)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6665285B1 (en) * 1997-10-14 2003-12-16 Alvarion Israel (2003) Ltd. Ethernet switch in a terminal for a wireless metropolitan area network
US6590901B1 (en) * 1998-04-01 2003-07-08 Mosaid Technologies, Inc. Method and apparatus for providing a packet buffer random access memory
US7100020B1 (en) * 1998-05-08 2006-08-29 Freescale Semiconductor, Inc. Digital communications processor
JP3141850B2 (ja) * 1998-07-10 2001-03-07 日本電気株式会社 時分割スイッチング装置および時分割スイッチング方法、並びに記録媒体
US6266705B1 (en) * 1998-09-29 2001-07-24 Cisco Systems, Inc. Look up mechanism and associated hash table for a network switch
US6226332B1 (en) * 1998-11-13 2001-05-01 Broadcom Corporation Multi-pair transceiver decoder system with low computation slicer
US7031324B1 (en) * 1999-03-22 2006-04-18 Cisco Technology, Inc. Local area network/wide area network switch
US6567379B1 (en) * 1999-06-09 2003-05-20 Cisco Technology, Inc. Traffic monitor using leaky bucket with variable fill
US6697873B1 (en) * 1999-12-20 2004-02-24 Zarlink Semiconductor V.N., Inc. High speed MAC address search engine
US6757742B1 (en) * 2000-05-25 2004-06-29 Advanced Micro Devices, Inc. Computer-based system for validating hash-based table lookup schemes in a network switch
EP1162797B1 (de) * 2000-06-09 2010-12-08 Broadcom Corporation Flexibler Protokoll-header für Netzwerk-switch
US7725558B2 (en) * 2000-07-26 2010-05-25 David Dickenson Distributive access controller
US7373425B2 (en) * 2000-08-22 2008-05-13 Conexant Systems, Inc. High-speed MAC address search engine
JP3897994B2 (ja) * 2001-05-31 2007-03-28 富士通株式会社 スイッチ装置およびデータ転送システム
US7151774B1 (en) * 2001-06-13 2006-12-19 Advanced Micro Devices, Inc. Method and apparatus for trunking links having different transmission rates
US7142557B2 (en) * 2001-12-03 2006-11-28 Xilinx, Inc. Programmable logic device for wireless local area network
US7362751B2 (en) * 2001-10-03 2008-04-22 Topside Research, Llc Variable length switch fabric
US6914901B1 (en) * 2001-12-05 2005-07-05 Cisco Technology, Inc. System and method for communicating using multiple memory banks
US7584262B1 (en) 2002-02-11 2009-09-01 Extreme Networks Method of and system for allocating resources to resource requests based on application of persistence policies
US7814204B1 (en) 2002-02-11 2010-10-12 Extreme Networks, Inc. Method of and system for analyzing the content of resource requests
US7447777B1 (en) 2002-02-11 2008-11-04 Extreme Networks Switching system
US7000052B2 (en) * 2003-02-24 2006-02-14 Cisco Technology, Inc. System and method for configuring and deploying input/output cards in a communications environment
US7571287B2 (en) * 2003-03-13 2009-08-04 Marvell World Trade Ltd. Multiport memory architecture, devices and systems including the same, and methods of using the same
US7272672B1 (en) 2003-04-01 2007-09-18 Extreme Networks, Inc. High speed bus with flow control and extended burst enhancements between sender and receiver wherein counter is maintained at sender for free buffer space available
US7366935B1 (en) 2003-04-01 2008-04-29 Extreme Networks, Inc. High speed bus with alignment, re-timing and buffer underflow/overflow detection enhancements
US8861515B2 (en) 2003-04-22 2014-10-14 Agere Systems Llc Method and apparatus for shared multi-bank memory in a packet switching system
US20050021658A1 (en) * 2003-05-09 2005-01-27 Nicholas Charles Kenneth Network switch with shared memory
US7590124B2 (en) * 2003-09-30 2009-09-15 Intel Corporation Encapsulation technique
US8250295B2 (en) 2004-01-05 2012-08-21 Smart Modular Technologies, Inc. Multi-rank memory module that emulates a memory module having a different number of ranks
US7916574B1 (en) 2004-03-05 2011-03-29 Netlist, Inc. Circuit providing load isolation and memory domain translation for memory module
US7289386B2 (en) 2004-03-05 2007-10-30 Netlist, Inc. Memory module decoder
US7453874B1 (en) 2004-03-30 2008-11-18 Extreme Networks, Inc. Method and system for incrementally updating a checksum in a network data packet
US7463628B2 (en) * 2004-03-30 2008-12-09 Extreme Networks, Inc. Packet data modification processor command instruction set
US8161270B1 (en) 2004-03-30 2012-04-17 Extreme Networks, Inc. Packet data modification processor
US7385984B2 (en) * 2004-03-30 2008-06-10 Extreme Networks, Inc. Packet processing system architecture and method
US7606263B1 (en) 2004-03-30 2009-10-20 Extreme Networks, Inc. Packet parser
US7613209B1 (en) 2004-03-30 2009-11-03 Extreme Networks, Inc. System and method for egress packet marking
US7292591B2 (en) * 2004-03-30 2007-11-06 Extreme Networks, Inc. Packet processing system architecture and method
US7649879B2 (en) * 2004-03-30 2010-01-19 Extreme Networks, Inc. Pipelined packet processor
US7822032B1 (en) 2004-03-30 2010-10-26 Extreme Networks, Inc. Data structures for supporting packet data modification operations
US7539750B1 (en) 2004-03-30 2009-05-26 Extreme Networks, Inc. System and method for packet processor status monitoring
US7304996B1 (en) 2004-03-30 2007-12-04 Extreme Networks, Inc. System and method for assembling a data packet
US7889750B1 (en) 2004-04-28 2011-02-15 Extreme Networks, Inc. Method of extending default fixed number of processing cycles in pipelined packet processor architecture
US8464093B1 (en) 2004-09-03 2013-06-11 Extreme Networks, Inc. Memory array error correction
WO2006042155A2 (en) * 2004-10-08 2006-04-20 E-Klone, Inc. Floating vector scrambling methods and apparatus
US7606249B1 (en) 2004-12-21 2009-10-20 Extreme Networks, Inc. Methods and systems for caching packets to be written to or read from packet memory
US8560795B2 (en) * 2005-06-30 2013-10-15 Imec Memory arrangement for multi-processor systems including a memory queue
US7843927B1 (en) 2006-12-22 2010-11-30 Extreme Networks, Inc. Methods, systems, and computer program products for routing packets at a multi-mode layer 3 packet forwarding device
US7894451B2 (en) * 2005-12-30 2011-02-22 Extreme Networks, Inc. Method of providing virtual router functionality
US7817633B1 (en) 2005-12-30 2010-10-19 Extreme Networks, Inc. Method of providing virtual router functionality through abstracted virtual identifiers
US7822033B1 (en) * 2005-12-30 2010-10-26 Extreme Networks, Inc. MAC address detection device for virtual routers
US7802296B2 (en) * 2006-08-23 2010-09-21 Cisco Technology, Inc. Method and system for identifying and processing secure data frames
US8004961B1 (en) * 2006-09-28 2011-08-23 National Semiconductor Corporation Independently configurable port redirection in a multi-port ethernet physical layer
US8234425B1 (en) 2007-06-27 2012-07-31 Marvell International Ltd. Arbiter module
US7949817B1 (en) 2007-07-31 2011-05-24 Marvell International Ltd. Adaptive bus profiler
US9083609B2 (en) 2007-09-26 2015-07-14 Nicira, Inc. Network operating system for managing and securing networks
US8131915B1 (en) 2008-04-11 2012-03-06 Marvell Intentional Ltd. Modifying or overwriting data stored in flash memory
US8516185B2 (en) 2009-07-16 2013-08-20 Netlist, Inc. System and method utilizing distributed byte-wise buffers on a memory module
US8154901B1 (en) * 2008-04-14 2012-04-10 Netlist, Inc. Circuit providing load isolation and noise reduction
US8787060B2 (en) 2010-11-03 2014-07-22 Netlist, Inc. Method and apparatus for optimizing driver load in a memory package
US8683085B1 (en) 2008-05-06 2014-03-25 Marvell International Ltd. USB interface configurable for host or device mode
US8423710B1 (en) 2009-03-23 2013-04-16 Marvell International Ltd. Sequential writes to flash memory
WO2010115060A2 (en) 2009-04-01 2010-10-07 Nicira Networks Method and apparatus for implementing and managing virtual switches
US8213236B1 (en) 2009-04-21 2012-07-03 Marvell International Ltd. Flash memory
US9128632B2 (en) 2009-07-16 2015-09-08 Netlist, Inc. Memory module with distributed data buffers and method of operation
US20110216769A1 (en) * 2010-03-08 2011-09-08 Brocade Communications Systems, Inc. Dynamic Path Selection
US8688922B1 (en) * 2010-03-11 2014-04-01 Marvell International Ltd Hardware-supported memory management
US8331373B2 (en) 2010-03-15 2012-12-11 Extreme Networks, Inc. Methods, systems, and computer readable media for automatically selecting between internet protocol switching modes on a per-module basis in a packet forwarding device
US10103939B2 (en) 2010-07-06 2018-10-16 Nicira, Inc. Network control apparatus and method for populating logical datapath sets
US9525647B2 (en) 2010-07-06 2016-12-20 Nicira, Inc. Network control apparatus and method for creating and modifying logical switching elements
US8817621B2 (en) 2010-07-06 2014-08-26 Nicira, Inc. Network virtualization apparatus
US9680750B2 (en) 2010-07-06 2017-06-13 Nicira, Inc. Use of tunnels to hide network addresses
US8964528B2 (en) 2010-07-06 2015-02-24 Nicira, Inc. Method and apparatus for robust packet distribution among hierarchical managed switching elements
US8756394B1 (en) 2010-07-07 2014-06-17 Marvell International Ltd. Multi-dimension memory timing tuner
US8605732B2 (en) 2011-02-15 2013-12-10 Extreme Networks, Inc. Method of providing virtual router functionality
US9043452B2 (en) 2011-05-04 2015-05-26 Nicira, Inc. Network control apparatus and method for port isolation
CN106850878B (zh) 2011-08-17 2020-07-14 Nicira股份有限公司 逻辑l3路由
US9288081B2 (en) 2011-08-17 2016-03-15 Nicira, Inc. Connecting unmanaged segmented networks by managing interconnection switching elements
US8913611B2 (en) 2011-11-15 2014-12-16 Nicira, Inc. Connection identifier assignment and source network address translation
JP5833246B2 (ja) * 2011-10-25 2015-12-16 ニシラ, インコーポレイテッド ユニバーサルフローを変換するためのシャーシコントローラ
US9178833B2 (en) 2011-10-25 2015-11-03 Nicira, Inc. Chassis controller
AU2013249154B2 (en) 2012-04-18 2015-12-10 Nicira, Inc. Exchange of network state information between forwarding elements
CN102833591B (zh) * 2012-08-09 2015-08-12 中兴通讯股份有限公司 交互式网络电视系统中点播服务不中断的方法及装置
US9923760B2 (en) 2015-04-06 2018-03-20 Nicira, Inc. Reduction of churn in a network control system
US10204122B2 (en) 2015-09-30 2019-02-12 Nicira, Inc. Implementing an interface between tuple and message-driven control entities
CN106776405A (zh) * 2015-11-20 2017-05-31 英业达科技有限公司 输入/输出端口切换方法及其电子装置及系统
US11019167B2 (en) 2016-04-29 2021-05-25 Nicira, Inc. Management of update queues for network controller
CN107256363B (zh) * 2017-06-13 2020-03-06 杭州华澜微电子股份有限公司 一种由加解密模块阵列组成的高速加解密装置
WO2021146964A1 (zh) * 2020-01-21 2021-07-29 华为技术有限公司 一种交换网芯片及交换设备
US11599649B2 (en) * 2020-06-29 2023-03-07 Rockwell Automation Technologies, Inc. Method and apparatus for managing transmission of secure data packets
US11606346B2 (en) 2020-06-29 2023-03-14 Rockwell Automation Technologies, Inc. Method and apparatus for managing reception of secure data packets

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4698802A (en) * 1986-03-07 1987-10-06 American Telephone And Telegraph Company And At&T Information Systems Inc. Combined circuit and packet switching system
US5365519A (en) * 1991-03-05 1994-11-15 Hitachi, Ltd. ATM switch1ng system connectable to I/O links having different transmission rates
DE3878647D1 (de) * 1987-11-11 1993-04-01 Siemens Ag Vermittlungsknoten fuer die vermittlung von in datenpaketen uebertragenen datensignalen.
JPH01177239A (ja) * 1988-01-06 1989-07-13 Nec Corp パケット集線装置及びパケット交換機
CA2015514C (en) * 1989-08-22 1996-08-06 Mitsuru Tsuboi Packet switching system having bus matrix switch
US5475680A (en) * 1989-09-15 1995-12-12 Gpt Limited Asynchronous time division multiplex switching system
JPH03220836A (ja) * 1990-01-25 1991-09-30 Nec Corp 非同期伝送モード交換装置
JPH07112181B2 (ja) * 1991-04-18 1995-11-29 松下電器産業株式会社 データ多重化回路
US5313624A (en) * 1991-05-14 1994-05-17 Next Computer, Inc. DRAM multiplexer
FI88840C (fi) * 1991-10-18 1993-07-12 Nokia Oy Ab Foerfarande foer att utfoera en koppling i ett pao centralminne baserat kopplingsfaelt samt kopplingsfaelt
EP0544964B1 (de) * 1991-11-29 1997-02-19 International Business Machines Corporation Vorrichtung zur Speicherung und Durchschaltung und Verfahren zur Datensicherung während der Speicherung
US5742760A (en) * 1992-05-12 1998-04-21 Compaq Computer Corporation Network packet switch using shared memory for repeating and bridging packets at media rate
JP2655481B2 (ja) * 1994-04-28 1997-09-17 日本電気株式会社 出力バッファ型atmスイッチにおける優先制御方法
US5412646A (en) * 1994-05-13 1995-05-02 At&T Corp. Asynchronous transfer mode switch architecture
US5475679A (en) * 1994-12-08 1995-12-12 Northern Telecom Limited Large capacity ATM switch
JP2856104B2 (ja) * 1995-04-18 1999-02-10 日本電気株式会社 Atmスイッチ
US5774543A (en) * 1995-11-13 1998-06-30 Flowers; Calvin Telephone jack security device
US5724358A (en) * 1996-02-23 1998-03-03 Zeitnet, Inc. High speed packet-switched digital switch and method
US5781549A (en) * 1996-02-23 1998-07-14 Allied Telesyn International Corp. Method and apparatus for switching data packets in a data network
US5790545A (en) * 1996-03-14 1998-08-04 Motorola Inc. Efficient output-request packet switch and method

Also Published As

Publication number Publication date
EP1016247B1 (de) 2006-06-07
AU9211398A (en) 1999-03-16
US6295299B1 (en) 2001-09-25
EP1016247A4 (de) 2000-10-04
US20020034189A1 (en) 2002-03-21
US7130308B2 (en) 2006-10-31
JP2001514464A (ja) 2001-09-11
JP4435974B2 (ja) 2010-03-24
WO1999011036A1 (en) 1999-03-04
EP1016247A1 (de) 2000-07-05
DE69834823D1 (de) 2006-07-20

Similar Documents

Publication Publication Date Title
DE69834823T2 (de) Paketvermittlungsvorrichtung und -verfahren mit zentraler Speicherarchitektur
DE69817328T2 (de) Warteschlangenstruktur und -verfahren zur prioritätszuteilung von rahmen in einem netzwerkkoppelfeld
DE69832884T2 (de) Wegesucheinheit mit zuteilung von virtuellen kanälen
DE69936966T2 (de) Kommunikationseinrichtung mit variabler Paketlänge
DE60214341T2 (de) Vermittlungsanordnung und -verfahren mit getrennten ausgangspuffern
DE69737361T2 (de) Schnelle vermittlungsvorrichtung
DE60005993T2 (de) Verfahren und netzwerkvermittlungsstelle mit datenserialisierung durch gefahrlose mehrstufige störungsfreie multiplexierung
DE69917555T2 (de) Vermittlungseinrichtung mit mehrstufiger Warteschlangeschema
DE69820084T2 (de) Netzwerkvorrichtung und Verfahren zur Reduzierung der System-Latenz
DE60120790T2 (de) Methode und gerät zum durchsuchen von tabellen in hoher geschwindigkeit
DE60029879T2 (de) System zur mehrschichtigen Bereitstellung in Computernetzwerken
DE69819303T2 (de) Verfahren und vorrichtung zur übertragung von mehrfachkopien durch vervielfältigung von datenidentifikatoren
DE60031596T2 (de) Zeitmultiplex-Vermittlungssystem (TDM) mit sehr breitem Speicher
DE69823483T2 (de) Mehrfachkopiewarteschlangestruktur mit einem suchbaren cachespeicherbereich
DE69926109T2 (de) Paketversendegerät mit einer Flussnachweistabelle
DE60120847T2 (de) Mehrprotokollvermittler und Verfahren dazu
DE60026676T2 (de) Paketklassifizierungsautomat
DE69733703T2 (de) Puffer von Mehrfachsendezellen in Vermittlungsnetzen
DE60126934T2 (de) Vermittlungssystem
DE60116401T2 (de) Netzwerkvermittlung mit der Möglichkeit Anschlüsse zu blockieren
DE10011667A1 (de) Hochgeschwindigkeits-Router
DE60215416T2 (de) Zeigerbasierte binäre Suchmaschine und dafür geeignetes Verfahren
DE602005005291T2 (de) Erweiterbare Pipelinearchitektur für ein Netzwerkgerät
EP0351014A2 (de) Koppelfeld für ein Vermittlungssystem
DE102021207394A1 (de) Zusammenführen von paketen auf der grundlage von hinweisen, die vom netzwerkadapter erzeugt werden

Legal Events

Date Code Title Description
8364 No opposition during term of opposition