-
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) 110a–110n 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.