-
VERWEISE AUF
MIT DIESER ANMELDUNG IN BEZIEHUNG STEHENDE ANMELDUNGEN
-
Diese
Anmeldung beansprucht Priorität
aus der am 7. März
2001 mit der laufenden Eingangsnummer 60/273,515 eingereichten,
vorläufigen US-amerikanischen
Anmeldung mit dem Titel "Slot Based
ARL Table Learning with Concurrent Table Search Using Insertion
Write Snoop" (Zeitschlitzbasierter
ARL-Tabellen-Lernvorgang mit gleichzeitiger Tabellensuche unter
Verwendung von Einfüge-Schreib-Snooping), deren
Inhalt hiermit per Bezugnahme in dieses Dokument aufgenommen wird.
-
HINTERGRUND
DER ERFINDUNG
-
Gebiet der Erfindung
-
Die
Erfindung betrifft Systeme und Verfahren zum gleichzeitigen Durchsuchen
und Aktualisieren eines Speichers in einer Netzwerkvorrichtung.
Insbesondere betrifft die Erfindung Systeme und Verfahren zum gleichzeitigen
Durchsuchen von Speicherbänken,
während
Datensätze
innerhalb einer Netzwerkvorrichtung, wie beispielsweise einem Hochleistungs-Netzwerk-Switch,
aktualisiert, eingefügt
und mit dem Blasensortierverfahren (Bubble Sorting) sortiert werden.
-
Beschreibung
des Stands der Technik
-
Da
sich die Leistungsfähigkeit
von Computern in den letzten Jahren erhöht hat, sind die Anforderungen
an Computer-Netzwerke beträchtlich
gestiegen; schnellere Computer-Prozessoren und höhere Speicherleistungen erfordern
Netzwerke mit hoher Leistungsfähigkeit
hinsichtlich der Bandbreite, um die Hochgeschwindigkeitsübertragung
von bedeutenden Datenmengen zu ermöglichen.
-
Das
Dokument WO 00/56024 bezieht sich auf einen Netzwerk-Switch zum
Vermitteln von Paketen von einer Quelle zu einem Ziel, wobei der
Netzwerk-Switch einen Quell-Port zum Empfangen eines ankommenden
Paketes von einer Quelle, einen Ziel-Port, der einen Pfad zu einem
Ziel für
das Paket enthält,
und eine Filtereinheit zum Aufbauen und Anwenden eines Filters auf
ausgewählte
Felder des ankommenden Pakets umfasst. Die Filtereinheit umfasst
ferner Filterlogik zum Aus wählen
von gewünschten
Feldern des ankommenden Pakets und zum Kopieren ausgewählter Feldinformationen
aus diesen. Der Switch umfasst eine Regeltabelle, die eine Vielzahl
von Regeln enthält.
Die Filterlogik ist so konfiguriert, dass sie Suchvorgänge in der
Regeltabelle durchführt,
um Aktionen zu bestimmen, die auf der Grundlage des Ergebnisses
eines Vergleichs zwischen dem Feldwert und den gespeicherten Filtermasken
sowie der Suche in der Regeltabelle durchgeführt werden sollen. Nach dem
Empfang des Pakets an einem Port des Netzwerk-Switches wird auf
der Grundlage einer Quelladresse und einer Zieladresse in dem ankommenden
Paket eine Adressauflösung
durchgeführt,
wobei wenigstens eine Maske auf einen Feldwert in dem Paket angewendet wird,
um einen Filterwert zu erzeugen. Dann kann, wie durch die Regeltabelle
angegeben, auf der Grundlage einer Übereinstimmung des Suchschlüssels mit
einem Eintrag der Regeltabelle eine Aktion durchgeführt werden.
-
Die
gut bekannte Ethernet-Technologie, die auf zahlreichen IEEE-Ethernet-Standards basiert,
ist ein Beispiel für
Computer-Netzwerktechnologie, die so verändert und verbessert werden
konnte, dass sie weiterhin eine brauchbare Computer-Technologie darstellt.
Eine umfassendere Abhandlung von Netzwerksystemen nach dem Stand
der Technik findet sich beispielsweise in SWITCHED AND FAST ETHERNET
von Breyer und Riley (Ziff Davis, 1996) und in zahlreichen, sich
auf die IEEE 802-Standards beziehenden IEEE-Veröffentlichungen. Die auf dem OSI-7-Schichten-Referenzmodell
basierenden Netzwerkfunktionen wurden durch die Entwicklung von Repeatern,
Bridges, Routern und in jüngster
Zeit "Switches" ausgebaut, die mit
verschiedenen Arten von Kommunikationsmedien funktionieren. Thick-Wire-, Thin-Wire-,
Twisted-Pair- und Glasfaserkabel sind Beispiele für Medien,
die für
Computer-Netzwerke eingesetzt wurden und werden. Unter Switches versteht
man mit Bezug auf Computer-Netzwerke und Ethernet Hardware-gestützte Vorrichtungen,
die den Fluss von Datenpaketen oder Zellen auf der Grundlage von
Zieladresseninformationen steuern, die in jedem Paket zur Verfügung stehen.
Ein in geeigneter Weise konstruierter und implementierter Switch
sollte in der Lage sein, ein Paket zu empfangen und das Paket mit
so genannter Leitungsgeschwindigkeit an einen geeigneten Ausgangs-Port weiterzuvermitteln,
wobei es sich um die maximale Geschwindigkeit handelt, die in dem
betreffenden Netzwerk leistungsmäßig möglich ist.
Aktuelle grundlegende Ethernet-Leitungsgeschwindigkeiten reichen
von 10 Megabit pro Sekunde (Mps) bis zu 10.000 Mps bzw. 10 Gigabit
pro Sekunde. Mit zunehmender Geschwindigkeit sind die Konstruktions-Randbedingungen
und -anforderungen im Hinblick auf das Befolgen geeigneter Konstruktions-
und Protokollre geln und das Bereitstellen einer preisgünstigen,
wirtschaftlich machbaren Lösung
immer komplexer geworden.
-
Der
Wettbewerb und andere marktbedingte Zwänge erfordern die Herstellung
von leistungsfähigeren
Netzwerkvorrichtungen, die weniger kosten. Von den Kunden wird eine
höhere
Geschwindigkeit des Netzwerks und der Vorrichtungen gefordert.
-
Die
Netzwerkleistung, das heißt
erhöhte
Geschwindigkeit der Vorrichtungen und verringerte Latenz der Datenpakete,
steht in direktem Bezug zu der Zeit, die die Vorrichtungen benötigen, um
den Speicher im Zusammenhang mit dem Weiterleiten eines Pakets zu
durchsuchen, beispielsweise wenn ein Switch Speichertabellen nach
Zieladressen, Regeln usw. durchsucht. Zusätzlich kann die Zeit, die benötigt wird,
um die Datensätze
zu aktualisieren, die Leistung beeinträchtigen, indem Suchvorgänge unterbrochen
werden. Folglich werden innerhalb von Netzwerkvorrichtungen, wie
beispielsweise innerhalb eines Hochleistungs-Switches, neue und
verbesserte Systeme und Verfahren benötigt, um Speicherbänke zu durchsuchen,
während
gleichzeitig derselbe Speicher aktualisiert wird, damit Hochleistungs-Netzwerklösungen unterstützt werden
können.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung wird eine Netzwerkvorrichtung bereitgestellt.
Die Netzwerkvorrichtung umfasst wenigstens einen Netzwerk-Port,
einen Taktgeber, Tabellen für
die Adressauflösungslogik
(ARL) und Adressauflösungslogik.
Der Taktgeber generiert ein Zeitsteuerungssignal. Die ARL-Tabellen
sind so konfiguriert, dass sie Netzwerkadressdaten speichern und
verwalten. Die Adressauflösungslogik
ist mit den ARL-Tabellen und dem Taktgeber gekoppelt und so konfiguriert,
dass sie die ARL-Tabellen durchsucht und auf der Grundlage einer
Lernfunktion Aktualisierungen und Einfügungen an den ARL-Tabellen durchführt. Das
Suchen und das Aktualisieren und das Einfügen werden gleichzeitig während alternierender
Zeitschlitze des Zeitsteuerungssignals durchgeführt. Die Adressauflösungslogik
ist so konfiguriert, dass sie die ARL-Tabellen auf der Grundlage
eines an einem Port des wenigstens einen Ports empfangenen Datenpakets
nach einer Zieladresse durchsucht, und wenn der Suchvorgang eine
Zieladresse zurückgibt,
ist die Adressauflösungslogik
so konfiguriert, dass sie einen zugehörigen Datensatz der ARL-Tabellen
auf der Grundlage der Lernfunktion aktualisiert.
-
Gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung wird ein Verfahren bereitgestellt, um
das Durchsuchen und Erlernen innerhalb einer Netzwerkvorrichtung
gleichzeitig durchzuführen.
Das Verfahren umfasst einen Schritt des Bereitstellens einer Netzwerkvorrichtung,
die wenigstens einen Port, ARL-Tabellen, die so konfiguriert sind,
dass sie auf Port-Adressen der Netzwerkvorrichtung bezogene Daten
speichern und verwalten, und eine Adressauflösungslogik umfasst, die so
konfiguriert ist, dass sie auf der Grundlage einer Lernfunktion
Daten in den ARL-Tabellen
aktualisiert und in diese einfügt.
Das Verfahren umfasst außerdem
Schritt des Empfangens eines Zeitsteuerungssignals, des Empfangens eines
Datenpakets an einem Port des wenigstens einen Ports, und des Einleitens
eines Suchvorgangs in den ARL-Tabellen auf der Grundlage des Pakets. Das
Verfahren umfasst außerdem
einen Schritt des Durchführens
des Suchvorgangs gleichzeitig mit Aktualisierungen der auf die Lernfunktion
bezogenen ARL-Tabellen. Die Suchvorgänge und Aktualisierungen werden
dabei während
alternierender Zeitschlitze des Zeitsteuerungssignals durchgeführt.
-
Gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung wird eine Netzwerkvorrichtung bereitgestellt.
Die Netzwerkvorrichtung umfasst wenigstens einen Netzwerk-Port,
ein Taktgebermittel zum Generieren eines Zeitsteuerungssignals,
Tabellenmittel für
die Adressauflösungslogik
(ARL) und Mittel für
die Adressauflösungslogik.
Die ARL-Tabellenmittel dienen zum Speichern und Verwalten von Netzwerkadressdaten.
Die Mittel für
die Adressauflösungslogik
dienen zum Koppeln mit den ARL-Tabellen und dem Taktgeber sowie
zum Durchsuchen der ARL-Tabellen und zum Durchführen von Aktualisierungen und
Einfügungen
an den ARL-Tabellen auf der Grundlage einer Lernfunktion. Das Suchen
und das Aktualisieren und das Einfügen werden gleichzeitig während alternierender
Zeitschlitze des Zeitsteuerungssignals durchgeführt. Die Mittel für die Adressauflösungslogik
sind so konfiguriert, dass sie die ARL-Tabellenmittel auf der Grundlage
eines an einem Port des wenigstens einen Ports empfangenen Datenpakets
nach einer Zieladresse durchsuchen, und wenn der Suchvorgang eine
Zieladresse zurückgibt,
sind die Mittel für
die Adressauflösungslogik
so konfiguriert, dass sie einen zugehörigen Datensatz der ARL-Tabellenmittel
auf der Grundlage der Lernfunktion aktualisieren.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Die
Aufgaben und Merkmale der Erfindung sind unter Bezugnahme auf die
folgende Beschreibung und die beigefügten Zeichnungen besser verständlich.
Es zeigen:
-
1 ein
allgemeines Blockdiagramm einer beispielhaften erfindungsgemäßen Netzwerkvorrichtung;
-
2 ein
detailliertes Blockdiagramm eines erfindungsgemäßen Netzwerk-Switches;
-
3 den
Datenfluss auf dem CPS-Kanal eines Netzwerk-Switches gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung;
-
4 P-Kanal-Nachrichtentypen
gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung;
-
5 ein
Nachrichtenformat für
S-Kanal-Nachrichtentypen gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung;
-
6 eine
Detailansicht von Elementen der PMMU eines Switches gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung;
-
7 das
CBM-Zellenformat gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung;
-
8 ein
Funktionsdiagramm eines EPIC-Moduls;
-
9 einen
zeitschlitzbasierten gleichzeitigen Such- und Lernvorgang unter
Bezugnahme auf ein Zeitsteuerungssignal gemäß der vorliegenden Erfindung;
-
10 ein
Diagramm einer Binärsuche
in einer auf dem Chip befindlichen Tabelle gemäß der vorliegenden Erfindung;
-
11 einen
zeitschlitzbasierten gleichzeitigen Such- und Lernvorgang unter
Bezugnahme auf ein Zeitsteuerungssignal gemäß der vorliegenden Erfindung;
-
12 ein
Diagramm eines Blasensortierverfahrens gemäß der vorliegenden Erfindung;
und
-
13 ein
Ablaufdiagramm eines Verfahrens zum Durchführen eines gleichzeitigen Lern-
und Suchvorgangs innerhalb einer Netzwerkvorrichtung gemäß der vorliegenden
Erfindung.
-
DETAILLIERTE
BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGS-BEISPIELE
-
1 zeigt
ein grundlegendes Blockdiagramm einer beispielhaften Hochgeschwindigkeits-Netzwerkvorrichtung,
auf die die vorliegende Erfindung anwendbar ist. Es wird eine beispielhafte Konfiguration
eines Netzwerk-Switches gezeigt. Ein Switch auf dem Chip (SOC) 10 ist
funktionell mit externen Vorrichtungen 11, externem Speicher 12, Fast-Ethernet-Ports 13 und
Gigabit-Ethernet-Ports 15 verbunden. Zum Zweck dieser Erörterung
werden Fast-Ethernet-Ports 13 als Ethernet-Ports mit niedriger
Geschwindigkeit betrachtet, da sie in der Lage sind, in diesem Beispiel
bei Geschwindigkeiten zwischen 10 Mbps und 100 Mbps betrieben werden
zu können,
während
die Gigabit-Ethernet-Ports 15, bei denen es sich um Hochgeschwindigkeits-Ethernet-Ports
handelt, in diesem Beispiel bei 1.000 Mbps oder mehr betrieben werden
können,
und bevorzugt bei 2.500 Mbps. Externe Vorrichtungen 11 könnten weitere
Vermittlungsvorrichtungen zum Erweitern der Vermittlungsfunktionen
umfassen, oder andere Vorrichtungen, wie sie für eine bestimmte Anwendung erforderlich
sein können.
Bei dem externen Speicher 12 kann es sich um zusätzlichen,
nicht auf dem Chip befindlichen Speicher handeln, der zusätzlich zum
internen Speicher (auf dem Chip) vorhanden ist, der sich auf dem
weiter unten behandelten SOC 10 befindet. Die Zentralrechnereinheit
(CPU) 52 kann nach Wunsch zum Programmieren des SOC 10 mit
Regeln verwendet werden, die zum Steuern der Paketverarbeitung geeignet
sind. Sobald jedoch der SOC 10 in geeigneter Weise programmiert
oder konfiguriert wurde, funktioniert der SOC 10 jedoch,
so weit wie möglich,
in einer ungebundenen Weise, ohne mit der CPU 52 zu kommunizieren.
Die CPU 52 steuert nicht jeden Aspekt des Betriebs des
SOC 10, weil die Leistungsanforderungen an die CPU 52 in
diesem Beispiel, wenigstens im Hinblick auf den SOC 10,
recht niedrig sind. Daher kann eine im Vergleich zu anderen Netzwerk-Switches
weniger leistungsfähige
und somit weniger teure CPU 52 verwendet werden. Wie außerdem nachfolgend
erläutert
wird, nutzt der SOC 10 den externen Speicher 12 auf
effiziente Weise, so dass die Kosten- und Leistungsanforderungen
an den Speicher 12 verringert werden können. Der interne Speicher
auf dem SOC 10 könnte,
wie weiter unten noch ausgeführt
wird, auch so konfiguriert werden, dass der Durchsatz bei der Vermittlung
maximiert und die Kosten minimiert werden.
-
Es
sei angemerkt, dass die beschriebenen Port-Geschwindigkeiten nur
beispielhalber aufgeführt
sind und dass die Ports so konfiguriert werden können, dass sie mit einer Vielzahl
von höheren
und niedrigeren Geschwindigkeiten arbeiten können.
-
2 veranschaulicht
ein detaillierteres Blockdiagramm der Funktionselemente des SOC 10. Wie
aus 2 hervorgeht und oben bereits angemerkt wurde,
umfasst der SOC 10 eine Vielzahl von modularen Systemen
auf dem Chip, wobei jedes modulare System, obwohl es sich auf demselben
Chip befindet, funktional von den übrigen modularen Systemen getrennt
ist. Daher kann jedes Modul auf effiziente Weise parallel mit anderen
Modulen betrieben werden, und diese Konfiguration ermöglicht ein
beträchtliches
Maß an
Freiheit beim Aktualisieren und Re-Engineering des SOC 10.
Es können
jedoch auch andere Switch-Konfigurationen oder Netzwerkvorrichtungs-Konfigurationen
zur Ausführung
der vorliegenden Erfindung verwendet werden.
-
Der
SOC 10 kann eine Vielzahl von Ethernet-Port-Schnittstellen-Controllern
(EPIC) 20a, 20b, 20c, usw., eine Vielzahl
von Gigabit-Port-Schnittstellen-Controllern (GPIC) 30a, 30b,
usw., einen CPU-Verwaltungs-Schnittstellen-Controller (CMIC) 40,
einen gemeinsamen Pufferspeicher-Pool (CBP) 50, eine PMMU
(Speicherverwaltungseinheit mit Pipeline-Technologie) 70,
einschließlich
eines gemeinsamen Puffer-Managers (CBM) 71, und eine systemweite
Busstruktur umfassen, die als CPS-Kanal 80 bezeichnet wird.
Die PMMU 70 weist Speicherverwaltungsmittel auf und kommuniziert
mit dem externen Speicher 12, der einen globalen Pufferspeicher-Pool
(GBP) 60 umfasst. Der CPS-Kanal 80 umfasst den
C-Kanal 81, den P-Kanal 82 und den S-Kanal 83.
Der CPS-Kanal wird auch als "Zellen-Protokoll-Seitenband-Kanal" bezeichnet, und
es handelt sich dabei um einen 17 Gbps-Kanal, der die verschiedenen
Module miteinander verbindet. Wie auch in 2 veranschaulicht,
können
weitere Hochgeschwindigkeits-Interconnect-Verbindungen bereitgestellt
werden, wie hier als erweiterbare Hochgeschwindigkeits-Interconnect-Verbindung
gezeigt ist. In einer Konfiguration kann diese Interconnect-Verbindung
in Form eines Interconnect-Port-Schnittstellen-Controllers (IPIC) 90 vorliegen,
der in der Lage ist, die Schnittstelle zwischen dem CPS-Kanal 80 und den
externen Vorrichtungen 11 über eine erweiterbare Hochgeschwindigkeits-Interconnect-Verbindung zu
bilden. Wie weiter unten noch behandelt wird, stehen der EPIC 20a, 20b und 20c,
die allgemein als EPIC 20 bezeichnet werden, und der GPIC 30a und 30b,
die allgemein als GPIC 30 bezeichnet werden, alle eng mit
geeigneten Tabellen für
die Adressauflösungslogik
und den Schicht-3-Vermittlungstabellen 21a, 21b, 21c, 31a, 31b,
den Re geltabellen 22a, 22b, 22c, 31a, 31b und
den VLAN-Tabellen 23a, 23b, 23c, 31a, 31b in
Beziehung. Diese Tabellen werden allgemein mit 21, 31, 22, 32, 23 bzw. 33 bezeichnet.
Diese Tabellen können,
wie andere Tabellen auf dem SOC 10, als zweidimensionale
Arrays in Silizium implementiert werden.
-
Der
EPIC 20 kann eine Anzahl von Fast-Ethernet-Ports 13 (beispielhalber
sind 8 gezeigt) unterstützen
und vermittelt Pakete nach Bedarf von und/oder zu diesen Ports.
Die Ports sind daher unter Verwendung einer bekannten Medienanschlusstechnologie
an das Netzwerkmedium (Koaxial-, Twisted-Pair-, Glasfaserkabel,
usw.) angeschlossen und kommunizieren mit dem CPS-Kanal 80 auf deren
anderer Seite. Die Schnittstelle jedes EPIC 20 zu dem Netzwerkmedium
kann durch eine reduzierte interne Medienschnittstelle (RMII) bereitgestellt
werden, die den direkten Anschluss des Mediums an den SOC 10 ermöglicht.
Wie nach dem Stand der Technik bekannt ist, ist das automatische
Aushandeln ein Aspekt von Fast Ethernet, wobei das Netzwerk in der Lage
ist, eine höchste
Kommunikationsgeschwindigkeit zwischen einer Quelle und einem Ziel
auf der Grundlage der Leistungsfähigkeit
der jeweiligen Vorrichtungen auszuhandeln. Die Kommunikationsgeschwindigkeit
kann, wie zuvor bereits angemerkt, beispielsweise zwischen 10 Mbps
und 100 Mbps variieren. Die Funktion zum automatischen Aushandeln ist
daher direkt in jedes Modul vom Typ EPIC 20 oder GPIC 30 integriert.
Die Tabellen für
die Adressauflösungslogik
(ARL) und die Schicht-3-Tabellen (ARL/L3) 21a, 21b, 21c,
die Regeltabellen 22a, 22b, 22c und die
VLAN-Tabellen 23a, 23b und 23c sind so konfiguriert,
dass sie auf effiziente und zweckmäßige Weise Bestandteil des
zugehörigen
EPIC sind bzw. eine Schnittstelle zu diesem bilden, um den Paketfluss
mit Leitungsgeschwindigkeit zu unterstützen. Der auf dem Chip befindliche
Speicher, der gemäß der vorliegenden
Erfindung durchsucht wird, kann diese Tabellen umfassen, wie weiter
unten detaillierter beschrieben wird.
-
Jeder
EPIC 20 und jeder GPIC 30 weist getrennte Eintritts-
und Austrittsfunktionen auf. Auf der Eintrittsseite können das
selbst eingeleitete und das von der CPU eingeleitete Erlernen der Schicht-2-Adressinformationen
erfolgen. Die Adressauflösungslogik
(ARL) ist so konfiguriert, dass sie Daten in die ARL-Tabellen einfügt und darin
aktualisiert, um die Lernfunktion zu unterstützen. Die Adressalterung ist
als Merkmal integriert, um das Speichern von Adressinformationen
zu verhindern, die nicht mehr gültig
oder nützlich
sind. Die Alterung wird weiter unten noch eingehend beschrieben.
Der EPIC und der GPIC können
außerdem
das Spiegeln auf Schicht 2 durchführen. Ein schneller Filterprozessor (FFP) 141 (siehe 3)
kann in den EPIC integriert sein, um die Paketweiterleitung zu beschleunigen und
den Paketfluss zu verbessern.
-
Die
Eintrittsseite jedes EPIC und GPIC, die in 8 als Eintritts-Submodul 14 veranschaulicht
ist, weist eine beträchtliche
Komplexität
auf, damit sie in der Lage ist, eine beträchtliche Anzahl von verschiedenen
Pakettypen einwandfrei zu verarbeiten, die am Port ankommen können, um
eine Pufferung bei Leitungsgeschwindigkeit und dann einen geeigneten Transfer
zum Austritt zu erreichen. Funktionell kann jeder Port an jedem
Modul des SOC 10 ein mit ihm verbundenes, gesondertes Eintritts-Submodul 14 aufweisen.
Aus der Sichtweise der Implementierung können jedoch zum Implementieren
einer Vielzahl von Eintritts-Submodulen in jedem einzelnen Modul übliche Hardware-Elemente
in Silizium verwendet werden, um die Menge der auf dem Einzel-Chip-SOC 10 implementierten
Hardware möglichst
gering zu halten. Die in diesem Dokument behandelte Konfiguration
des SOC 10 erlaubt das gleichzeitige Suchen und Filtern.
Das Suchen auf Schicht 2, das Suchen auf Schicht 3 und
das Filtern erfolgen gleichzeitig, um ein hohes Leistungsniveau
zu erreichen, was nachfolgend noch detaillierter beschrieben wird.
Auf der Austrittsseite sind der EPIC und der GPIC in der Lage, das
Abfragen von Paketen entweder als Funktion des Austritts-Managements
oder der Service-Klasse (COS) zu unterstützen. Eine Umleitung/Planung
von zu übertragenden
Paketen kann auftreten, sowie eine Benachrichtigung bei Head-of-Line-Blocking (HOL),
Paketalterung, Neuzusammensetzen der Zellen (Cell Reassembly) und
weitere mit der Ethernet-Port-Schnittstelle
verbundene Funktionen.
-
Jeder
GPIC 30 ähnelt
jedem EPIC 20, allerdings unterstützt er in diesem Ausführungsbeispiel nur
einen 2,5-Gigabit-Ethernet-Port und verwendet eine Port-spezifische
ARL-Tabelle, anstatt eine ARL-Tabelle zu verwenden, die mit anderen
Ports gemeinsam verwendet wird. Außerdem bildet jeder GPIC-Port
unter Verwendung einer medienunabhängigen Gigabit-Schnittstelle
(GMII) anstelle einer RMII eine Schnittstelle zu dem Netzwerkmedium.
-
Ein
CMIC 40 kann als Gateway zwischen dem SOC 10 und
der Host-CPU fungieren. Die Kommunikation kann beispielsweise auf
einem PCI-Bus oder einem anderen akzeptablen Kommunikationsbus erfolgen.
Der CMIC 40 kann sequenzielle, direkte, abgebildete Zugriffe
zwischen der Host-CPU 52 und dem SOC 10 bereitstel len.
Die CPU 52 ist durch den CMIC 40 in der Lage,
auf zahlreiche Ressourcen auf dem SOC 10 zuzugreifen, einschließlich MIB-Zähler, programmierbare
Register, Status- und Steuerregister, Konfigurationsregister, ARL-Tabellen, Port-basierte
VLAN-Tabellen, VLAN-Tabellen nach IEEE 802.1q, Schicht-3-Tabellen,
Regeltabellen, CBP-Adressen- und -Datenspeicher sowie GBP-Adressen-
und -Datenspeicher. Optional kann der CMIC 40 DMA-Unterstützung, DMA-Verkettung und
Scatter/Gather-Operationen sowie Master- und Ziel-PC164 umfassen.
-
Der
gemeinsame Pufferspeicher-Pool bzw. CBP 50 kann als Datenspeicher
auf dem Chip betrachtet werden. In einer Konfiguration kann es sich bei
dem CBP 50 um First-Level-Hochgeschwindigkeits-SRAM-Speicher
handeln, um die Leistung zu optimieren und die Anforderungen für den Hardware-Systemaufwand
möglichst
gering zu halten. Der CBP kann eine Größe von beispielsweise 720 KByte
bei 132 MHz aufweisen. Pakete werden in dem CBP 50 typischerweise
als Zellen anstatt als Pakete gespeichert. Wie in der Figur veranschaulicht, beinhaltet
die PMMU 70 außerdem
den gemeinsamen Puffer-Manager (CBM) 71. Der CBM 71 kann Empfangs-Suchanforderungen
und die Warteschlangenverwaltung handhaben und kann für das Zuweisen
von Zellenzeigern zu ankommenden Zellen zuständig sein, sowie für das Zuweisen
von allgemeinen Paket-IDs (CPID), sobald das Paket vollständig in
den CBP geschrieben wurde. Der CBM 71 kann außerdem für die Verwaltung
des Pools der freien Adresszeiger auf dem Chip zuständig sein,
den tatsächlichen
Datentransfer zum und vom Datenpool steuern und eine Speicher-Budget-Verwaltung
bereitstellen. Die vorgenannte Erörterung zeigt eine beispielhafte
Konfiguration einer beispielhaften Vorrichtung und soll den Schutzumfang
der vorliegenden Erfindung nicht beschränken. Dementsprechend können andere
Funktionen oder Einrichtungen als Einheiten zur Speicherverwaltung
oder Warteschlangenverwaltung gemäß der vorliegenden Erfindung implementiert
werden.
-
Der
globale Speicherpuffer-Pool bzw. GBP 60 kann als Second-Level-Speicher
verwendet werden, und er kann sich auf dem Chip befinden oder Chip-extern
vorliegen. In einer Konfiguration liegt der GBP 60 in Bezug
auf den SOC 10 Chipextern vor. Wenn er Chip-extern vorliegt,
wird der GBP 60 als Teil des externen Speichers 12 oder
als dessen Gesamtheit betrachtet. Als Second-Level-Speicher kann
es sich bei dem GBP um Hochgeschwindigkeits-SRAMs handeln oder um
langsameren, preiswerteren Speicher wie DRAM oder jeden anderen geeigneten
Speichertyp. Der GBP kann eng an die PMMU 70 gekoppelt
sein und funktioniert insofern wie der CBP, als Pakete als Zellen
gespeichert werden. Bei Rundsende- und Mehrfachsende-Nachrichten
wird nur ein Exemplar des Pakets im GBP 60 gespeichert.
-
Die
PMMU 70 kann zwischen dem GBP 60 und dem CPS-Kanal 80 angeordnet
sein und fungiert als Schnittstelle zum externen Speicher. Um die Speicherauslastung
zu optimieren, weist die PMMU 70 mehrere Lese- und Schreibpuffer
auf und unterstützt
zahlreiche Funktionen einschließlich
globaler Warteschlangenverwaltung, was ganz allgemein die Zuweisung
von Zellenzeigern für
umgeleitete ankommende Pakete, die Pflege des globalen FAP, die
zeitoptimierte Zellenverwaltung, die Verwaltung des globalen Speicherbudgets,
die GPID-Zuweisung und die Benachrichtigung des Austrittsmanagers,
die Verwaltung des Schreibpuffers, Lese-Pre-Fetches auf der Grundlage
von Anforderungen des Austrittsmanagers/der Service-Klasse und eine
intelligente Speichersteuerung umfasst.
-
Wie
in 2 gezeigt, kann es sich bei dem CPS-Kanal 80 tatsächlich um
drei getrennte Kanäle handelt,
die als C-Kanal, P-Kanal und S-Kanal bezeichnet werden. Der C-Kanal
kann 128 Bit breit sein und bei 132 MHz laufen. Paketübertragungen
zwischen den Ports erfolgen auf dem C-Kanal. Da dieser Kanal allein
für die
Datenübertragung
genutzt wird, gibt es in Verbindung mit seiner Verwendung keinen Systemaufwand.
Der P-Kanal bzw. Protokollkanal ist mit dem C-Kanal synchron bzw.
mit diesem fixiert. Während
der Übertragung
von Zellen wird der Nachrichten-Header mittels der PMMU über den
P-Kanal gesendet. Der P-Kanal kann 32 Bit breit sein und kann bei
132 MHz laufen.
-
Der
S-Kanal bzw. Seitenbandkanal kann beispielsweise bei 132 MHz laufen
und 32 Bit breit sein. Jede geeignete Breite und Geschwindigkeit
kommen in Frage. Der S-Kanal kann für Funktionen wie das Übermitteln
des Port-Verbindungsstatus, von Empfangs-Port-Überlastungsnachrichten, Port-Statistiken,
ARL-Tabellensynchronisation, Speicher- und Registerzugriff an die
CPU und an andere CPU-Verwaltungsfunktionen dienen, wobei Nachrichten
zur Steuerung der Übertragungsgeschwindigkeit
und Benachrichtigungen bei Überlastung
des globalen Speichers und des gemeinsamen Speichers weitergeleitet
werden.
-
Um
die Funktionsweise des SOC 10 einwandfrei verstehen zu
können,
ist ein einwandfreies Verständnis
der Funktionsweise des CPS-Kanals 80 erforderlich. Unter
Bezugnahme auf 3 ist ersichtlich, dass Pakete
im SOC 10 beim Eintritt durch einen EPIC 20 bzw.
einen GPIC 30 in 64 Byte große Zellen geteilt werden. Die
Verwendung von Zellen auf dem Chip anstelle von Paketen erleichtert
es dem SOC, mit zellengestützten
Protokollen, wie beispielsweise ATM (Asynchronous Transfer Mode)
zu arbeiten. Gegenwärtig
verwendet ATM jedoch Zellen mit einer Länge von 53 Byte, davon 48 Byte
für Nutzdaten
und 5 Byte für
den Header. In diesem Beispiel des SOC 10 werden ankommende
Pakete, wie oben dargelegt, in Zellen mit einer Länge von
64 Byte geteilt, und die Zellen werden weiter in vier getrennte,
16 Byte große
Zellenblöcke
Cn0...Cn3 aufgeteilt. Mit dem C-Kanal ist der P-Kanal fixiert, wodurch
der Befehlscode bzw. Opcode in Synchronisation mit Cn0 fixiert wird.
Ein Port-Bitmuster wird während
der Phase Cn1 in den P-Kanal eingefügt. Das nicht mit Tags versehene
Bitmuster wird während
der Phase Cn2 in den P-Kanal eingefügt, und in Cn3 wird ein Zeitstempel auf
dem P-Kanal platziert. Unabhängig
von den Vorkommnissen auf dem C- und P-Kanal wird der S-Kanal als
Seitenband verwendet und ist somit von den Aktivitäten auf
dem C- und P-Kanal entkoppelt.
-
Zellen- oder
C-Kanal
-
Die
Arbitration für
den CPS-Kanal erfolgt außerhalb
des Bands. Jedes Modul (EPIC, GPIC, usw.) überwacht den Kanal, und übereinstimmende Ziel-Ports
antworten auf geeignete Transaktionen. Bei der C-Kanal-Arbitration
handelt es sich um ein Demand-Priority-Verfahren, welches den Round-Robin-Arbitrationsmechanismus
verwendet. Wenn keine Anforderungen aktiv sind, kann jedoch das
Standard-Modul, das während
der Konfiguration des SOC 10 ausgewählt werden kann, auf dem Kanal
parken und den vollständigen
Zugriff darauf erhalten. Wenn alle Anforderungen aktiv sind, ist
das SOC 10 so konfiguriert, dass der PMMU in jedem zweiten
Zellenzyklus Zugriff gewährt
wird und dass die EPICs 20 und die GPICs 30 gemeinsam
gleichen Zugriff auf den C-Kanal haben, wobei das Round-Robin-Verfahren angewendet
wird. 4A und 4B veranschaulichen einen
C-Kanal-Arbitrationsmechanismus, wobei Abschnitt A die PMMU darstellt
und Abschnitt B aus zwei GPICs und drei EPICs besteht. Die Abschnitte wechseln
sich beim Zugriff ab, und da die PMMU das einzige Modul in Abschnitt
A ist, erhält
sie in jedem zweiten Zyklus Zugriff. Die Module in Abschnitt B erhalten,
wie bereits angemerkt, Zugriff auf der Grundlage des Round-Robin-Verfahrens.
-
Protokoll- oder P-Kanal
-
Unter
nochmaliger Bezugnahme auf den Protokoll- bzw. P-Kanal kann eine
Vielzahl von Nachrichten auf dem P-Kanal platziert werden, um den
auf dem C-Kanal fließenden
Datenfluss ordnungsgemäß zu leiten.
Angenommen, der P-Kanal 82 ist 32 Bit breit, und für eine Nachricht
sind typischerweise 128 Bit erforderlich, so können vier kleinere 32-Bit-Nachrichten
zusammengestellt werden, um eine vollständige P-Kanal-Nachricht zu
bilden. Die folgende Liste nennt einige Beispiele der Felder mit
Funktion sowie Beispiele der verschiedenen Bit-Anzahlen der 128
Bit langen Nachricht auf dem P-Kanal.
- Opcode (Befehlscode)
Länge 2
Bit Gibt den Typ der Nachricht an, die auf dem C-Kanal 81 anliegt;
- IP Bit Länge
1 Bit Dieses Bit wird gesetzt, um anzugeben, dass es sich um ein
IP-vermitteltes Paket handelt;
- IPX Bit Länge
1 Bit Dieses Bit wird gesetzt, um anzugeben, dass es sich um ein
IPX-vermitteltes Paket handelt;
- Next Cell (Nächste
Zelle) Länge
2 Bit Dies ist eine Folge von Werten, um die gültigen Bytes in der entsprechenden
Zelle auf dem C-Kanal 81 zu identifizieren;
- SRC DEST Port (QUELL-ZIEL-Port) Länge 6 Bit Definiert die Nummer
des Ports, der die Nachricht sendet bzw. die Nachricht empfängt, wobei
die Interpretation der Quelle bzw. des Ziels vom Befehlscode abhängt;
- Cos (Service-Klasse) Länge
3 Bit Definiert die Service-Klasse für das aktuelle Paket, das gerade
verarbeitet wird;
- J Länge
1 Bit Beschreibt, ob es sich bei dem aktuellen Paket um ein Jumbo-Paket
handelt;
- S Länge
1 Bit Gibt an, ob es sich bei der aktuellen Zelle um die erste Zelle
des Pakets handelt;
- E Länge
1 Bit Gibt an, ob es sich bei der aktuellen Zelle um die letzte
Zelle des Pakets handelt;
- CRC Länge
2 Bit Gibt an, ob ein Wert für
eine zyklischen Redundanzprüfung
(CRC) an das Paket angehängt
werden soll und ob ein CRC-Wert neu generiert werden soll;
- P Bit Länge
1 Bit Bestimmt, ob die MMU das gesamte Paket löschen soll;
- Len (Länge)
Länge 7
Bit Gibt die gültige
Anzahl von Byte bei der aktuellen Übertragung an;
- O Länge
2 Bit Definiert eine Optimierung für die Verarbeitung durch die
CPU 52; und
- Bc/Mc Bitmap (Bitmuster für
Rundsenden/Mehrfachsenden) Länge
28 Bit Definiert das Rundsende- oder Mehrfachsende-Bitmuster. Gibt
Austritts-Ports an, auf die das Paket bezüglich der Rundsende- oder Mehrfachsende-Nachrichten
gesetzt werden soll.
- Untag Bits/Source Port (Bits ohne Tags/Quell-Port) Länge 28/5
Bit Je nach Befehlscode wird das Paket vom Port zur MMU übertragen,
und dieses Feld wird als Bitmuster ohne Tags interpretiert. Ein
anderer ausgewählter
Befehlscode gibt an, dass das Paket von der MMU zum Austritts-Port übertragen
wird, und die letzten sechs Bit dieses Felds werden als Quell-Port-Feld
interpretiert. Die Bits ohne Tags geben die Austritts-Ports an,
welche den Tag-Header entfernen, und die Quell-Port-Bits geben die
Nummer des Ports an, auf dem das Paket in den Switch gelangt ist;
- U Bit Länge
1 Bit Bei Auswahl eines bestimmten Befehlscodes (0 × 01) bedeutet
das Setzen dieses Bits, dass das Paket den Port ohne Tags verlassen
soll; in diesem Fall wird das Entfernen der Tags vom geeigneten
MAC vorgenommen;
- CPU Opcode (CPU-Befehlscode) Länge 18 Bit Diese Bits werden
gesetzt, wenn das Paket aus irgendeinem Grund an die CPU gesendet
wird. Befehlscodes werden auf der Grundlage einer Übereinstimmung mit
einem Filter, gesetzten Lern-Bits, Weiterleitungs-Bits, dem Scheitern
der Zielsuche (DLF), der Verlagerung einer Station, usw. definiert;
- Time Stamp (Zeitstempel) 14 Bit Das System setzt einen Zeitstempel
in diesem Feld, wenn das Paket ankommt, wobei eine Detailgenauigkeit
von 1 μs
gilt.
-
Das
Feld "Opcode" der P-Kanal-Nachricht definiert
den Typ der aktuell gesendeten Nachricht. Während der Befehlscode aktuell
mit einer Länge von
2 Bit gezeigt wird, kann das Feld "Opcode" nach Bedarf erweitert werden, um neue
Nachrichtentypen zu berücksichtigen,
die gegebenenfalls in der Zukunft definiert werden. In 4 ist
jedoch der oben definierte P-Kanal-Nachrichtentyp grafisch gezeigt.
-
Eine
Nachricht für
eine vorzeitige Beendigung wird verwendet, um dem CBM 71 anzugeben, dass
das aktuelle Paket beendet werden soll. Während des Betriebs wird, wie
weiter unten noch detaillierter behandelt wird, das Statusbitfeld
(P) in der Nachricht gesetzt, um anzugeben, dass das gesamte Paket
aus dem Speicher gelöscht
werden soll. Außerdem
würden
alle betroffenen Austritts-Ports als Reaktion auf das Statusbit
das aktuelle Paket vor der Übertragung
löschen.
-
Das
Feld "Src Dest Port" der P-Kanal-Nachricht
gibt, wie oben angegeben, die Adresse des Ziel- bzw. des Quell-Ports
an. Jedes dieser Felder ist 6 Bit lang und ermöglicht daher die Adressierung
von vierundsechzig Ports.
-
Das
Feld "CRC" der Nachricht ist
zwei Bit lang und definiert CRC-Aktionen. Bit 0 des Felds stellt
eine Angabe bereit, ob der zugehörige
Austritts-Port einen CRC an das aktuelle Paket anhängen soll.
Ein Austritts-Port würde
einen CRC an das aktuelle Paket anhängen, wenn Bit 0 des Felds "CRC" auf eine logische
Eins gesetzt ist. Bit 1 des Felds "CRC" stellt
eine Angabe bereit, ob der zugehörige
Austritts-Port einen CRC für
das aktuelle Paket neu generieren soll. Ein Austritts-Port würde einen
CRC neu generieren, wenn Bit 1 des Felds "CRC" auf
eine logische Eins gesetzt ist. Das Feld "CRC" ist
nur für
die letzte übertragene
Zelle gültig, wie
sie durch das auf eine logische Eins gesetzte E-Bit-Feld der P-Kanal-Nachricht
definiert ist.
-
Wie
beim Feld "CRC" sind das Statusbitfeld (st),
das Feld "Len" und das Feld "Cell Count" der Nachricht in
diesem Beispiel nur für
die letzte Zelle eines übertragenen
Pakets gültig,
wie es durch das E-Bit-Feld der Nachricht definiert ist.
-
Schließlich weist
das Feld "Time Stamp" der Nachricht in
diesem Beispiel eine Auflösung
von 1 μs auf
und ist nur für
die erste Zelle des Pakets gültig, die
durch das S-Bit-Feld der Nachricht definiert ist. Eine Zelle wird
als erste Zelle eines empfangenen Pakets definiert, wenn das S-Bit-Feld
der Nachricht auf eine logische Eins gesetzt ist.
-
Der
C-Kanal 81 und der P-Kanal 82 sind synchron so
miteinander verknüpft,
dass Daten auf dem C-Kanal 81 über den CPS-Kanal 80 übertragen
werden, während
gleichzeitig eine entsprechende P-Kanal-Nachricht übertragen
wird.
-
S-Kanal oder
Seitenbandkanal
-
Bei
dem S-Kanal 83 kann es sich um einen 32 Bit breiten Kanal
handeln, der einen getrennten Kommunikationspfad innerhalb des SOC 10 bereitstellt.
Der S-Ka nal 83 wird für
die Verwaltung durch die CPU 52 verwendet, ferner zur internen
Datenfluss-Steuerung im SOC 10 und zur Nachrichtenübermittlung
zwischen den Modulen des SOC 10. Der S-Kanal 83 ist
ein Seitenbandkanal des CPS-Kanals 80 und elektrisch und
physisch von dem C-Kanal 81 und dem P-Kanal 82 isoliert.
Da der S-Kanal von dem C-Kanal 81 und von dem P-Kanal 82 getrennt
und unterschiedlich ist, ist es wichtig, darauf hinzuweisen, dass
der Betrieb des S-Kanals 83 ohne Leistungseinbußen in Bezug
auf den Betrieb des C-Kanals 81 und des P-Kanals 82 fortgesetzt
werden kann. Da umgekehrt der C-Kanal nicht für die Übertragung von Systemnachrichten
verwendet wird, sondern nur für
Daten, gibt es in Verbindung mit dem C-Kanal 81 keinen Systemaufwand,
und somit ist der C-Kanal 81 in der Lage, wie erforderlich
ungebunden zu laufen, um die ankommenden und abgehenden Paketinformationen zu
handhaben.
-
Der
S-Kanal 83 des CPS-Kanals 80 stellt einen systemweiten
Kommunikationspfad zum Übertragen
von Systemnachrichten bereit, beispielsweise, indem er für die CPU 52 den
Zugriff auf die Steuerstruktur des SOC 10 bereitstellt.
Die Systemnachrichten umfassen Port-Statusinformationen, einschließlich Port-Verbindungsstatus,
Empfangs-Port-Überlastungsnachrichten
und Port-Statistiken, Synchronisation der ARL-Tabelle 22,
Zugriff der CPU 52 auf die Speicherpuffer des GBP 60 und des
CBP 50 und die Steuerregister des SOC 10, und Benachrichtigungen
bei Überlastung
des Speichers, der dem GBP 60 und/oder dem CBP 50 entspricht.
-
5 veranschaulicht
ein beispielhaftes Nachrichtenformat für eine S-Kanalnachricht auf
dem S-Kanal 83. Die Nachricht wird aus vier 32-Bit-Datenwörtern gebildet;
die Bits der Felder der einzelnen Wörter sind wie folgt definiert:
- Opcode (Befehlscode) Länge
6 Bit Gibt den Typ der Nachricht an, die auf dem S-Kanal anliegt;
- Dest Port (Ziel-Port) Länge
6 Bit Gibt die Nummer des Ports an, an den die aktuelle S-Kanalnachricht adressiert
ist;
- Src Port (Quell-Port) Länge
6 Bit Definiert die Nummer des Ports, von dem die aktuelle S-Kanalnachricht
stammt;
- COS (Service-Klasse) Länge
3 Bit Definiert die Service-Klasse, die mit der aktuellen S-Kanalnachricht verbunden
ist; und
- C Bit Länge
1 Bit Definiert logisch, ob die aktuelle S-Kanalnachricht für die CPU 52 gedacht
ist.
- Error Code (Fehlercode) Länge
2 Bit Definiert einen gültigen
Fehler, wenn das E-Bit gesetzt ist.
- DataLen (Datenlänge)
Länge 7
Bit Definiert die Gesamtanzahl der Datenbytes im Feld Data;
- E Bit Länge
1 Bit Gibt logisch an, ob bei der Ausführung des durch den Befehlscode
definierten, aktuellen Befehls ein Fehler aufgetreten ist;
- Address (Adresse) Länge
32 Bit Definiert die Speicheradresse, die mit dem durch den Befehlscode
definierten, aktuellen Befehl verbunden ist;
- Data (Daten) Länge
0 bis 127 Bit Enthält
die mit dem aktuellen Befehlscode verbundenen Daten.
-
Durch
die oben erläuterte
Konfiguration des CPS-Kanals 80 ist der S-Kanal so von
dem C-Kanal und dem P-Kanal entkoppelt, dass die Bandbreite auf dem
C-Kanal für die Übertragung
von Zellen reserviert werden kann und die Überladung des C-Kanals keine
Auswirkungen auf die Kommunikation auf dem Seitenbandkanal hat.
-
Betrieb des
SOC
-
Die
Konfiguration des SOC 10 kann, wie oben erörtert, Fast-Ethernet-Ports,
Gigabit-Ports und erweiterbare Interconnect-Verbindungen unterstützen. Die
Konfiguration des SOC kann auch "gestapelt" oder "verbunden" sein, wodurch eine
erhebliche Leistungsfähigkeit
hinsichtlich der Port-Erweiterung ermöglicht wird. Sobald Datenpakete
vom SOC 10 empfangen, in Zellen geteilt und auf dem CPS-Kanal 80 platziert
wurden, können
gestapelte SOC-Module eine Schnittstelle mit dem CPS-Kanal bilden und
den Kanal überwachen
und nach Bedarf die geeigneten Informationen extrahieren. Wie weiter
unten noch erörtert
wird, erfolgen im Hinblick auf die Suche auf Schicht 2 und
Schicht 3 und eine schnelle Filterung gemäß der vorliegenden
Erfindung eine erhebliche Anzahl von gleichzeitigen Such- und Filtervorgängen, sowie
das Paket an dem Eintritts-Submodul 14 eines EPIC 20 oder
GPIC 30 ankommt.
-
Die
Tabellenverwaltung kann auch durch die Verwendung der CPU 52 erreicht
werden. Die CPU 52 kann, über den CMIC 40, dem
SOC 10 Softwarefunktionen bereitstellen, was in der Bezeichnung
der Identifikation eines Benutzers an einem bestimmten Port 24 resultiert.
Wie oben bereits erörtert,
ist es nicht wünschenswert,
dass die CPU 52 auf die Paketinformationen in ihrer Gesamtheit
zugreift, da dies zu Leistungseinbußen führen würde. Vielmehr wird der SOC 10 durch
die CPU 52 mit Identifikationsinformationen bezüglich des
Benutzers programmiert. Der SOC 10 kann einen Echtzeit-Datenfluss
aufrechterhalten, da die Kommunikation bezüglich der Tabellendaten zwischen
der CPU 52 und dem SOC 10 ausschließlich auf
dem S-Kanal 83 erfolgt.
Während der
SOC 10 der CPU 52 direkte Paketinformationen über den
C-Kanal 81 bereitstellen kann, ist eine solche Systemeinrichtung
aus den vorgenannten Gründen
nicht wünschenswert.
Wie oben erwähnt,
wird als Eintrittsfunktion eine Adressauflösungs-Suche durchgeführt, indem
die ARL-Tabelle 21a untersucht wird. Wenn das Paket an
einen der Schicht-3-Switches (S3) des SOC 10 adressiert
ist, führt
das Eintritts-Submodul 14a die S3- und die Standardtabellensuche
durch. Sobald der Ziel-Port bestimmt wurde, setzt der EPIC 20a ein
Fertig-Flag in der Versandeinheit 18a, die dann für den C-Kanal 81 eine
Vereinbarung trifft.
-
Bei
dem Arbitrations-Schema des C-Kanals 81 kann es sich, wie
zuvor bereits erörtert,
um ein Demand-Priority-Verfahren nach dem Round-Robin-Mechanismus
handeln. Jedes E/A-Modul, jeder EPIC 20, GPIC 30 und
CMIC 40 kann zusammen mit der PMMU 70 eine Anforderung
für den
Zugriff auf den C-Kanal 81 einleiten. Wenn zu einem bestimmten
Zeitpunkt keine Anforderungen vorhanden sind, wird einem Standard-Modul,
das mit einer hohen Priorität
definiert wurde, vollständiger
Zugriff auf den C-Kanal 81 erteilt. Wenn irgendein einzelnes E/A-Modul
oder die PMMU 70 Zugriff auf den C-Kanal 81 anfordert,
erhält
dieses einzelne Modul den Zugriff auf den C-Kanal 81 nach
Anforderung (on Demand).
-
Wenn
die EPIC-Module 20a, 20b, 20c und die
GPIC-Module 30a und 30b sowie der CMIC 40 gleichzeitig
Zugriff auf den C-Kanal anfordern, wird dieser Zugriff mittels des
Round-Robin-Verfahrens gewährt.
Während
eines bestimmten Arbitrations-Zeitraums würde jedem E/A-Modul Zugriff
auf den C-Kanal 81 gewährt.
So würde
beispielsweise jedem der GPIC-Module 30a und 30b Zugriff
gewährt, anschließend den
EPIC-Modulen und schließlich dem
CMIC 40. Nach jedem Arbitrations-Zeitraum würde dem
nächsten
E/A-Modul mit einer gültigen Anforderung
Zugriff auf den C-Kanal 81 gewährt. Dieses Muster würde so lange
fortgesetzt, wie jedes der E/A-Module eine aktive Anforderung zum
Zugriff auf den C-Kanal 81 bereitstellt.
-
Wenn
alle E/A-Module einschließlich
der PMMU 70 Zugriff auf den C-Kanal 81 anfordern,
wird der PMMU 70 der Zugriff wie in 4B gezeigt
gewährt,
da die PMMU einen wesentlichen Datenpfad für alle Module auf dem Switch
bereitstellt. Wenn die Versandeinheit 18a Zugriff auf den
Kanal 81 erhält, fährt sie
fort, das empfangene Paket 112 jeweils zellenweise an den
C-Kanal 81 zu übergeben.
-
Unter
nochmaliger Bezugnahme auf 3 sind die
einzelnen Kanäle
C, P und S des CPS-Kanals 80 gezeigt. Sobald die Versandeinheit 18a die Erlaubnis
erhalten hat, auf den CPS-Kanal 80 zuzugreifen, platziert
die Versandeinheit 18a während des ersten Zeitraums
Cn0 die ersten 16 Byte der ersten Zelle 112a des empfangenen
Pakets 112 auf dem C-Kanal 81. Gleichzeitlich
platziert die Versandeinheit 18a die erste P-Kanalnachricht,
die der aktuell übertragenen
Zelle entspricht. Wie oben bereits erwähnt, definiert die erste P-Kanalnachricht
unter anderem den Nachrichtentyp. Daher würde in diesem Beispiel die
erste P-Kanalnachricht definieren, dass es sich bei der aktuellen
Zelle um eine Nachricht vom Typ "Unicast" handelt, die zum
Ziel-Austritts-Port 21c geleitet werden soll.
-
Während des
zweiten Takts Cn1 werden die zweiten 16 Byte (16:31) der aktuell übertragenen
Datenzelle 112a auf dem C-Kanal 81 platziert.
Analog wird während
des zweiten Takts Cn1 das Bc/Mc-Port-Bitmuster auf dem P-Kanal 82 platziert.
-
Wie
durch die Schraffur des S-Kanals 83 während der Zeiträume Cn0
bis Cn3 in 3 angegeben, ist der Betrieb
des S-Kanals 83 von dem Betrieb des C-Kanals 81 und
des P-Kanals 82 entkoppelt. So kann beispielsweise die
CPU 52 über
den CMIC 40 Nachrichten auf Systemebene an nicht aktive
Module weiterleiten, während
ein aktives Modul Zellen auf dem C-Kanal 81 weiterleitet.
Wie zuvor bereits erwähnt,
ist dies ein wichtiger Aspekt des SOC 10, weil der Betrieb
des S-Kanals eine parallele Aufgabenverarbeitung erlaubt, wodurch
die Übertragung von
Zellendaten auf dem C-Kanal 81 in Echtzeit ermöglicht wird.
Sobald die erste Zelle 112a des ankommenden Pakets 112 auf
dem CPS-Kanal 80 platziert wird, bestimmt die PMMU 70,
ob die Zelle an einen Austritts-Port 21 übertragen
werden soll, der sich lokal auf dem SOC 10 befindet.
-
Wenn
die PMMU 70 bestimmt, dass die aktuelle Zelle 112a auf
dem C-Kanal 81 für
einen Austritts-Port des SOC 10 bestimmt ist, übernimmt
die PMMU 70 die Steuerung des Zelldatenflusses.
-
7 veranschaulicht
auf detailliertere Weise die funktionalen Austrittsmerkmale der
PMMU 70. Die PMMU 70 umfasst den CBM 71 und
bildet eine Schnittstelle zwischen dem GBP, dem CBP und einer Vielzahl
von Austritts-Managern (EgM) 76 des Austritts-Submoduls 18,
wobei für
jeden Austritts-Port ein Austritts-Manager 76 bereitgestellt wird.
Der CBM 71 ist in einer Parallelkonfiguration über den
R-Kanal-Datenbus 77 mit jedem Austritts-Manager 76 verbunden.
Der R-Kanal-Datenbus 77 ist
ein 32 Bit breiter Bus, der vom CBM 71 und den Austritts-Managern 76 bei
der Übertragung
von Speicherzeigern und Systemnachrichten verwendet wird. Jeder
Austritts-Manager 76 ist außerdem zur Übertragung der Datenzellen 112a und 112b mit
dem CPS-Kanal 80 verbunden.
-
Zusammenfassend
lässt sich
sagen, dass der CBM 71 die Funktionen einer auf dem Chip
befindlichen Verwaltung des Pools der freien Adressen (FAP), die Übertragung
von Zellen an den CBP 50, die Zusammenstellung von Paketen
und die Benachrichtigung an die jeweiligen Austritts-Manager, die Weiterleitung
von Paketen an den GBP 60 über einen globalen Puffer-Manager
sowie die Handhabung des Paketflusses von dem GBP 60 zu
dem CBP 50 vornimmt. Speicherbereinigung, Speicherbudgetverwaltung,
Kanalschnittstelle und Zellenzeiger-Zuweisung sind ebenfalls Funktionen
des CBM 71. Im Hinblick auf den Pool der freien Adressen
verwaltet der CBM 71 den Pool der freien Adressen und weist
ankommenden Zellen freie Zellenzeiger zu. Der Pool der freien Adressen
wird auch von dem CBM 71 zurückgeschrieben, so dass die
von verschiedenen Austritts-Managern 76 freigegebenen Zellenzeiger
auf geeignete Weise gelöscht
werden. Ausgehend davon, dass in dem CBP 50 genügend Speicherplatz verfügbar ist
und dass genügend
freie Adresszeiger verfügbar
sind, verwaltet der CBM 71 wenigstens zwei Zellenzeiger
pro Austritts-Manager 76,
der gerade verwaltet wird. Die erste Zelle eines Pakets kommt an
einem Austritts-Manager 76 an, und der CBM 71 schreibt
diese Zelle in die CBM-Speicherzuweisung an der Adresse, auf die
der erste Zeiger gezeigt hat. Der zweite Zeiger wird in das Header-Feld "Next Cell" geschrieben. Das
Format der Zelle, wie sie in dem CBP 50 gespeichert wird,
ist in 7 gezeigt; jede Zeile ist 18 Byte lang. Zeile
0 enthält
geeignete Informationen im Hinblick auf Informationen zur ersten und
zur letzten Zelle, zum Rundsenden/Mehrfachsenden, die Anzahl der
Austritts-Ports für
das Rundsenden oder Mehrfachsenden, die Zellenlänge bezüglich der Anzahl von gültigen Bytes
in der Zelle, den Zeiger auf die nächste Zelle, die Gesamtanzahl der
Zellen in dem Paket und den Zeitstempel. Die übrigen Zeilen enthalten Zellendaten
als 64-Byte-Zellen. Der Pool der freien Adressen innerhalb der PMMU 70 speichert alle
freien Zeiger für
den CBP 50. Jeder Zeiger in dem Pool der freien Adressen zeigt
auf eine 64-Byte-Zelle in dem CBP 50; die tatsächlich in
dem CBP gespeicherte Zelle weist insgesamt 72 Byte auf, wobei 64
Byte Bytedaten sind und 8 Byte Steuerinformationen. Funktionen wie HOL-Blocking,
Hinweis auf Hoch- und Niedrigstände, Budget-Register
für Ausgangswarteschlangen, CPID-Zuweisung
und weitere Funktionen werden in dem CBM 71 innerhalb der
PMMU 70 behandelt.
-
Wenn
die PMMU 70 beispielsweise durch eine Tabellensuche (das
heißt
eine weiter unten näher
beschriebene Suche) bestimmt, dass Zelle 112a für einen
geeigneten Austritts-Port im SOC 10 bestimmt ist, steuert
die PMMU 70 den Fluss der Zellen von dem CPS-Kanal 80 zu
dem CBP 50. Wenn das Datenpaket 112 von dem CPS-Kanal 80 an
der PMMU 70 ankommt, bestimmt der CBM 71, ob in dem
CBP 50 genügend
Speicher für
das Datenpaket 112 verfügbar
ist. Ein (nicht gezeigter) Pool der freien Adressen kann pro Service-Klasse
Speicherplatz für wenigstens
zwei Zellenzeiger pro Austritts-Manager 76 bereitstellen.
Wenn in dem CBP 50 genügend Speiher
für das
Speichern und Identifizieren des ankommenden Datenpakets verfügbar ist,
platziert der CBM 71 die Datenzelleninformationen auf dem CPS-Kanal 80.
Die Datenzelleninformationen werden dem CBP 50 von dem
CBM 71 an der zugewiesenen Adresse bereitgestellt. Wenn
neue Zellen von der PMMU 70 empfangen werden, weist der
CBM 71 Zellenzeiger zu. Der anfängliche Zeiger für die erste Zelle 112a zeigt
auf den Austritts-Manager 76, der dem Austritts-Port entspricht,
an den das Datenpaket 112 gesendet wird, nachdem es in
dem Speicher platziert worden ist. Im Beispiel von 6 kommen Pakete
an dem Port 24a des EPIC 20c an und sind für Port 24c des
EPIC 20c bestimmt. Für
jede zusätzliche
Zelle 112b weist der CBM 71 einen entsprechenden
Zeiger zu. Dieser entsprechende Zellenzeiger wird als NC_Header
mit einem Wert von zwei Byte bzw. 16 Bit an einer geeigneten Stelle
in einer Steuernachricht gespeichert, wobei der anfängliche Zeiger
auf den entsprechenden Austritts-Manager 76 und die folgenden
Zellenzeiger Teil jedes Zellen-Headers sind, und es wird eine verknüpfte Liste
von Speicherzeigern ausgebildet, die das Paket 112 definiert, wenn
das Paket über
den geeigneten Austritts-Port übertragen
wird, in diesem Fall 24c. Sobald das Paket vollständig in
den CBP 50 geschrieben worden ist, wird dem geeigneten
Austritts-Manager 76 eine entsprechende CBP-Paket-ID (CPID)
bereitgestellt; diese CPID zeigt auf die Speicherposition der anfänglichen
Zelle 112a. Die CPID für
das Datenpaket wird dann verwendet, wenn das Datenpaket 112 an den
Ziel-Austritts-Port 24c gesendet wird. Tatsächlich verwaltet
der CBM 71 zwei Puffer, die einen CBP-Zellenzeiger enthalten,
wobei die Zulassung zu dem CBP auf der Grundlage einer Reihe von
Faktoren erfolgt.
-
Da
der CBM 71 den Datenfluss innerhalb des SOC 10 steuert,
kann der Datenfluss, der mit jedem beliebigen Eintritts-Port verbunden
ist, gleichermaßen
gesteuert werden. Wenn das Paket 112 empfangen und in dem
CBP 50 gespeichert wurde, wird dem zugehörigen Austritts-Manager 76 eine
CPID bereitgestellt. Die Gesamtzahl von Datenzellen, die mit dem
Datenpaket verbunden sind, wird in einem Budget-Register (nicht
gezeigt) gespeichert. Wenn weitere Datenpakete 112 empfangen
werden und so bezeichnet werden, dass sie zu demselben Austritts-Manager 76 gesendet
werden sollen, wird der Wert des Budget-Registers, das dem zugehörigen Austritts-Manager 76 entspricht,
um die Anzahl der Datenzellen 112a, 112b der empfangenen
neuen Datenzellen erhöht.
Das Budget-Register stellt daher dynamisch die Gesamtanzahl der
Zellen dar, die so bezeichnet sind, dass sie von einem beliebigen
speziellen Austritts-Port auf einem EPIC 20 gesendet werden
sollen. Der CBM 71 steuert den eingehenden Strom von zusätzlichen
Datenpaketen, indem er das Budget-Register mit einem Höchststand-Registerwert
bzw. einem Niedrigststand-Registerwert
für denselben
Austritt vergleicht.
-
8 veranschaulicht
einige der Details für gleichzeitiges
Filtern und Suchen eines auf der Eintrittsseite eines EPIC 20 ankommenden
Pakets gemäß der vorliegenden
Erfindung. 8 behandelt die Anwendung von
Filterungs-, Adressauflösungs- und Regelanwendungs-Segmenten
des SOC 10. Diese Funktionen werden hinsichtlich der Zulassung zum
CBP gleichzeitig durchgeführt.
Das Paket 112 wird am Eingangs-Port 24 des EPIC 20 empfangen. Es
wird dann an den Eingangs-FIFO 142 geleitet. Sobald die
ersten sechzehn Byte des Pakets im Eingangs-FIFO 142 ankommen,
führt die
Adressauflösungslogik
eine Suche in den ARL-/S3-Tabellen 21 durch. Die Adressauflösungslogik
kann eine ARL-Maschine 143 umfassen, die eine Anforderung zur
Adressauflösung
empfängt,
um eine Suche in den ARL-/S3-Tabellen 21 einzuleiten.
-
Es
folgt eine Beschreibung der Felder, die in einer ARL-Tabelle der
ARL-/S3-Tabellen 21 enthalten sein
können:
- Mac Address (MAC-Adresse) Länge
48 Bit Mac-Adresse, eine Adresse, die zum Vermitteln, Erlernen und
für andere
Netzwerkadressfunktionen verwendet wird;
- VLAN Tag Länge
12 Bit VLAN-Tag-ID, wie in dem Standard IEEE 802.1q für Pakete
mit Tags beschrieben. Bei einem Paket ohne Tags wird dieser Wert
der Port-basierten VLAN-Tabelle entnommen.
- CosDst (Ziel-Service-Klasse) Länge 3 Bit Service-Klasse auf
der Grundlage der Zieladresse. Die Service-Klasse gibt die Priorität dieses
Pakets an. In dem Standard IEEE 802.1q sind 8 Prioritätsebenen beschrieben.
- Port Number (Port-Nummer) Länge
6 Bit Die Port-Nummer bezeichnet den Port, auf dem diese MAC-Adresse
erlernt wird.
- SD_Disc Bits (Bits zum Verwerfen Quelle/Ziel) Länge 2 Bit
Diese Bits geben an, ob das Paket auf der Grundlage der Quelladresse
oder der Zieladresse verworfen werden soll. Der Wert 1 bedeutet,
dass das Paket anhand der Quelle verworfen werden soll. Der Wert
2 bedeutet, dass das Paket anhand des Ziels verworfen werden soll.
- C Bit Länge
1 Bit Das C-Bit gibt an, dass das Paket an den CPU-Port geleitet
werden soll.
- St Bit (Statik-Bit) Länge
1 Bit Das St-Bit gibt an, dass es sich um einen statischen Eintrag
handelt (er wird nicht dynamisch erlernt) und bedeutet, dass er
nicht durch Alterung verworfen werden darf. Nur die CPU 52 kann
diesen Eintrag löschen.
- Ht Bit (Treffer-Bit) Länge
1 Bit Treffer-Bit, dieses Bit wird jedes Mal gesetzt, wenn es eine Übereinstimmung
mit der Quelladresse gibt. Es wird im Alterungsmechanismus verwendet.
- CosSrc (Quell-Service-Klasse) Länge 3 Bit Service-Klasse auf
der Grundlage der Quelladresse. Die Service-Klasse gibt die Priorität dieses
Pakets an.
- L3 Bit (Schicht-3-Bit) Länge
1 Bit Das Schicht-3-Bit gibt an, dass dieser Eintrag als Ergebnis
der Konfiguration der Schicht-3-Schnittstelle erstellt wurde. Die MAC-Adresse
in diesem Eintrag ist die MAC-Adresse der Schicht-3-Schnittstelle,
und alle Pakete, die an diese MAC-Adresse adressiert sind, müssen weitergeleitet
werden.
- T Bit Länge
1 Bit Das T-Bit gibt an, dass diese MAC-Adresse von einem der Trunk-Ports
erlernt wurde. Wenn es eine Übereinstimmung
bezüglich
der Zieladresse gibt, erfolgt die Entscheidung über den Ausgabe-Port nicht
anhand der Port-Nummer in diesem Eintrag, sondern über den
Trunk-Identifikationsprozess
auf der Grundlage der von den RTAG-Bits angegebenen Regeln und der
durch die TGID angegebenen Trunk-Gruppe.
- TGID Länge
3 Bit Die TGID gibt die Trunk-Gruppe an, wenn das T-Bit gesetzt
ist. Der SOC 10 unterstützt
6 Trunk-Gruppen pro Switch.
- RTAG Länge
3 Bit Mit RTAG wird das Kriterium zur Trunk-Auswahl angegeben, wenn
die Zieladresse mit diesem Eintrag übereinstimmt und das T-Bit
in diesem Eintrag gesetzt ist. Wert 1 – auf der Grundlage der Quell-MAC-Adresse. Wert
2 – auf
der Grundlage der Ziel-MAC-Adresse. Wert 3 – auf der Grundlage der Quell-
und der Zieladresse. Wert 4 – auf
der Grundlage der Quell-IP-Adresse. Wert 5 – auf der Grundlage der Ziel-IP-Adresse.
Wert 6 – auf
der Grundlage der Quell- und der Ziel-IP-Adresse.
- SCP (Quell-Service-Klassen-Priorität) Länge 1 Bit Quell-Service-Klassen-Prioritäts-Bit – Wenn dieses Bit
gesetzt ist (in dem übereinstimmenden Quell-MAC-Eintrag),
hat die Service-Klasse der Quelle Priorität gegenüber der Service-Klasse des Ziels.
-
Es
sei außerdem
angemerkt, dass die VLAN-Tabellen 23 eine Reihe von Tabellenforrnaten aufweisen
können;
in diesem Dokument werden nicht alle Tabellen und Tabellenformate
behandelt. Als Beispiel werden jedoch die Felder der Port-basierten
VLAN-Tabelle wie folgt beschrieben:
- Port VLAN Id Länge 12 Bit
Hierbei handelt es sich um die Port-VLAN-ID, die vom Port-basierten VLAN verwendet
wird.
- Sp State (SP-Status) Länge
2 Bit Dieses Feld gibt den aktuellen Spanning-Tree-Status an. Wert
0 × 00 – Der Port
ist im Status "Deaktiviert". In diesem Status
werden keine Pakete angenommen, nicht einmal BPDUs. Wert 0 × 01 – Der Port
ist im Status "Blockiert" oder "Empfangsbereit". In diesem Status
werden außer
BPDUs keine Pakete vom Port angenommen. Wert 0 × 02 – Der Port ist im Status "Lernen". In diesem Status
werden die Pakete nicht an einen anderen Port weitergeleitet, werden
aber zum Lernen angenommen. Wert 0 × 03 – Der Port ist im Status "Weiterleiten". In diesem Status
werden die Pakete sowohl zum Lernen als auch zum Weiterleiten angenommen.
- Port Discard Bits (Bits für
das Verwerfen am Port) Länge
6 Bit Dieses Feld umfasst 6 Bit, von denen jedes das Kriterium zum
Verwerfen der Pakete angibt, die an diesem Port ankommen. Hinweis:
Die Bits 0 bis 3 werden nicht verwendet. Bit 4 – Wenn dieses Bit gesetzt ist,
werden alle an diesem Port ankommenden Rahmen verworfen. Bit 5 – Wenn dieses
Bit gesetzt ist, werden alle Rahmen mit Prioritäts-Tag gemäß 802.1q (vid = 0) und Rahmen
ohne Tags, die an diesem Port ankommen, verworfen.
- J Bit Länge
1 Bit Das J-Bit steht für
Jumbo-Bit. Wenn dieses Bit gesetzt ist, sollte dieser Port Jumbo-Rahmen
annehmen.
- RTAG Länge
3 Bit Mit RTAG wird das Kriterium zur Trunk-Auswahl angegeben, wenn
die Zieladresse mit diesem Eintrag übereinstimmt und das T-Bit
in diesem Eintrag gesetzt ist. Wert 1 – auf der Grundlage der Quell-MAC-Adresse. Wert
2 – auf
der Grundlage der Ziel-MAC-Adresse. Wert 3 – auf der Grundlage der Quell-
und der Zieladresse. Wert 4 – auf
der Grundlage der Quell-IP-Adresse. Wert 5 – auf der Grundlage der Ziel-IP-Adresse.
Wert 6 – auf
der Grundlage der Quell- und der Ziel-IP-Adresse.
- T Bit Länge
1 Bit Dieses Bit gibt an, dass der Port ein Mitglied der Trunk-Gruppe
ist.
- C Learn Bit (C-Lern-Bit) Länge
1 Bit CPU-Lern-Bit – Wenn
dieses Bit gesetzt ist, wird das Paket jedes Mal, wenn die Quelladresse
erlernt wird, an die CPU gesendet.
- PT Länge
2 Bit Dieses Bit gibt den Port-Typ an. Wert 0–10 MBit-Port. Wert 1–100 MBit-Port.
Wert 2–1 GBit-Port.
Wert 3 – CPU-Port.
- VLAN Port Bitmap (VLAN-Port-Bitmuster) Länge 28 Bit Das VLAN-Port-Bitmuster
gibt alle Austritts-Ports an, an denen das Paket abgehen soll.
- B Bit Länge
1 Bit Das B-Bit ist ein BPDU-Bit. Wenn dieses Bit gesetzt ist, weist
der Port BPDUs zurück. Dieses
Bit wird für
Trunk-Ports gesetzt, die keine BPDUs annehmen sollen.
- TGID Länge
3 Bit Dieses Feld gibt die Trunk-Gruppe an, zu der dieser Port gehört.
- Untagged Bitmap (Bitmuster ohne Tags) Länge 28 Bit Dieses Bitmuster
gibt die Mitglieder des VLAN ohne Tag an, das heißt ob der
Rahmen, der aus diesen Mitglieds-Ports heraus gesendet werden soll,
ohne Tag-Header übertragen
werden soll.
- M Bit Länge
1 Bit Das M-Bit wird für
die Spiegelungs-Funktionalität
verwendet. Wenn dieses Bit gesetzt ist, wird das Spiegeln am Eintritt
aktiviert.
-
Die
ARL-Maschine 143 liest das Paket; wenn das Paket einen
VLAN-Tag gemäß dem Standard IEEE
802.1q aufweist, führt
die ARL-Maschine 143 eine Suche auf der Grundlage der Tag-VLAN-Tabelle 231 durch,
die Bestandteil der VLAN-Tabelle 23 ist. Wenn das Paket
dieses Tag nicht enthält,
führt die ARL-Maschine
eine VLAN-Suche auf der Grundlage der Port-basierten VLAN-Tabelle 232 durch.
Sobald das VLAN für
das ankommende Paket identifiziert wurde, führt die ARL-Maschine 143 eine
ARL-Tabellensuche auf der Grundlage der Quell-MAC-Adresse und der
Ziel-MAC-Adresse durch. Bei dieser Suche kann es sich um eine binäre Suche
handeln. Wenn das Ergebnis der Zielsuche eine S3-Schnittstellen-MAC-Adresse
ist, wird eine S3-Suche in einer S3-Tabelle innerhalb der ARL-/S3-Tabellen 21 durchgeführt. Wenn
die S3-Suche erfolgreich ist, wird das Paket entsprechend den Paket-Weiterleitungsregeln geändert, und
die ARL-Tabellen werden entsprechend der vorgenannten Beschreibung
aktualisiert.
-
Um
die Vorgänge
des Suchens, Lernens und Vermittelns besser zu verstehen, erscheint
es ratsam, nochmals die Handhabung des Pakets 112 unter
Bezugnahme auf 6 zu erörtern. Wenn das Datenpaket 112 von
einer Quellstation A an den Port 24a von EPIC 20a gesendet
wird und für
eine Zielstation B an Port 24c von EPIC 20c bestimmt
ist, teilt das Eintritts-Submodul 14a das Datenpaket 112 in die
Zellen 112a und 112b auf. Das Eintritts-Submodul liest
dann das Paket, um die Quell-MAC-Adresse und die Ziel-MAC-Adresse
zu bestimmen. Wie zuvor bereits erwähnt, führt das Eintritts-Submodul 14a,
insbesondere die ARL-Maschine 143, die Suche in den geeigneten
Tabellen innerhalb der ARL-/S3-Tabellen 21a und der VLAN-Tabelle 23a durch,
um festzustellen, ob die Ziel-MAC-Adresse in den ARL-/S3-Tabellen 21a vorhanden
ist; wenn die Adresse nicht gefunden wird, aber die VLAN-IDs für die Quelle
und das Ziel identisch sind, legt das Eintritts-Submodul 14a fest,
dass das Paket an alle Ports gesendet wird. Das Paket wird dann
an die geeignete Zieladresse weitergegeben. Bei einer Suche nach
der Quelle und einer Suche nach dem Ziel kann es sich um binäre Suchen handeln,
und sie können
parallel durchgeführt
werden. Gleichzeitig kann die Quell-MAC-Adresse des ankommenden
Pakets erlernt und daher zu einer ARL-Tabelle innerhalb der ARL-/S3-Tabellen 21a hinzugefügt (in diese
eingefügt)
werden. Nachdem das Paket vom Ziel empfangen wurde, wird eine Bestätigung von
der Zielstation B an die Quellstation A gesendet. Da die Quell-MAC-Adresse des ankommenden
Pakets von der geeigneten Tabelle von B erlernt wird, wird die Bestätigung auf
geeignete Weise an den Port gesendet, auf dem sich A befindet. Wenn die
Bestätigung
am Port 24a empfangen wird, erlernt daher die ARL- Tabelle die Quell-MAC-Adresse
von B aus dem Bestätigungspaket.
Es sei angemerkt, dass die vorgenannte Schicht-2-Vermittlung durchgeführt wird,
solange die VLAN-IDs (für
Pakete mit Tags) der Quell-MAC-Adressen und der Ziel-MAC-Adressen identisch
sind. Die S2-Vermittlung und -Suche werden daher auf der Grundlage
der ersten 16 Byte eines ankommenden Pakets durchgeführt. Bei
Paketen ohne Tags wird das Feld für die Port-Nummer in dem Paket
anhand der Port-basierten VLAN-Tabelle innerhalb der VLAN-Tabelle 23a indiziert,
und die VLAN-ID kann dann bestimmt werden. Wenn die VLAN-IDs voneinander
abweichen, ist jedoch eine S3-Vermittlung erforderlich, wobei die
Pakete zu einem anderen VLAN gesendet werden. Die S3-Vermittlung
basiert jedoch auf dem Feld für
den IP-Header des Pakets. Der IP-Header umfasst die Quell-IP-Adresse,
die Ziel-IP-Adresse und die TTL (Lebenszeit).
-
Um
die Schicht-3-Vermittlung besser zu verstehen, wird im Folgenden
beschrieben, wie das Paket 112 von der Quellstation A an
den Port 24a von EPIC 20a gesendet und dann an
die Zielstation B geleitet wird; es ist jedoch davon auszugehen,
dass die Station B in einem anderen VLAN angeordnet ist, was dadurch
deutlich wird, dass die Quell-MAC-Adresse und die Ziel-MAC-Adresse
unterschiedliche VLAN-IDs aufweisen. Die Suche nach B würde scheitern,
weil sich B in einem anderen VLAN befindet, und das alleinige Senden
des Pakets an alle Ports in dem VLAN würde dazu führen, dass B das Paket niemals
empfangen würde.
Durch die Schicht-3-Vermittlung wird daher das Überbrücken der VLAN-Grenzen ermöglicht,
es erfordert allerdings das Lesen von mehr Paketinformationen als nur
der MAC-Adressen für
die S2-Vermittlung. Zusätzlich
zum Lesen der Quell- und der Ziel-MAC-Adresse liest daher der Eintritt 14a außerdem die
IP-Adresse der Quelle und des Ziels. Wie zuvor bereits angemerkt,
sind Pakettypen durch IEEE-Standards und andere Standards definiert
und nach dem Stand der Technik bekannt. Durch das Lesen der IP-Adresse
des Ziels ist der SOC 10 in der Lage, das Paket zu einer
geeigneten Router-Schnittstelle zu leiten, die mit der Ziel-IP-Adresse
konsistent ist. Das Paket 112 kann daher mittels der Versandeinheit 18a an
den CPS-Kanal 80 gesendet werden und ist für eine geeignete
Router-Schnittstelle bestimmt (nicht gezeigt, kein Teil des SOC 10),
auf der sich das Ziel B befindet. Steuerrahmen, die durch ihre Zieladresse
als solche identifiziert sind, werden über den CMIC 40 an
die CPU 52 gesendet. Die Ziel-MAC-Adresse ist daher die
Router-MAC-Adresse für
B. Die Router-MAC-Adresse
kann mittels Hardware oder der Unterstützung durch die CPU 52 erlernt
werden, welche eine Adressauflösungsprotokoll-Anforderung
(ARP-Anforde rung) verwendet, um die Ziel-MAC-Adresse für den Router
für B auf
der Grundlage der IP-Adresse von B anzufordern. Durch die Verwendung
der IP-Adresse kann der SOC 10 daher die Ziel-MAC-Adresse
erlernen. Wenn die CPU 52 zum Erlernen verwendet wird,
wird allerdings durch den Bestätigungs-
und Lernvorgang nur das erste Paket dieser "langsamen" Behandlung aufgrund der Einbindung
der CPU 52 unterzogen. Nachdem die geeigneten MAC-Adressen
erlernt wurden, kann das Vermitteln bei Leitungsgeschwindigkeit durch
die Verwendung von gleichzeitigen Tabellen-Suchvorgängen erfolgen,
da die erforderlichen Informationen von den Tabellen erlernt werden.
Das Implementieren der Tabellen in Silizium als zweidimensionale
Arrays ermöglicht
solche schnellen, gleichzeitigen Suchvorgänge. Sobald die MAC-Adresse
für B erlernt
wurde, ändert
daher der Eintritt 14a, wenn Pakete mit der IP-Adresse
für B ankommen,
die IP-Adresse in die Ziel-MAC-Adresse, um die Vermittlung bei Leitungsgeschwindigkeit
zu ermöglichen.
Außerdem
wird die Quelladresse des ankommenden Pakets in die Router-MAC-Adresse für A und
nicht in die IP-Adresse für
A geändert,
so dass die Bestätigung
von B an A schnell erfolgen kann, ohne dass hierzu eine CPU auf
der Ziel-Seite verwendet zu werden braucht, um die Quell-MAC-Adresse
als Ziel für
die Bestätigung
zu identifizieren. Außerdem
wird ein TTL-Feld (Lebenszeit) in dem Paket auf geeignete Weise
entsprechend dem Standard der IETF (Internet Engineering Task Force)
geändert.
Ein einzigartiges Merkmal des SOC 10 besteht darin, dass
alle Vermittlungs-, Paketverarbeitungs- und Tabellensuchvorgänge in der
Hardware durchgeführt
werden, anstatt zu erfordern, dass die CPU 52 oder eine
andere CPU Zeit mit der Verarbeitung von Anweisungen verbringt.
Es sei angemerkt, dass die Schicht-3-Tabellen für den EPIC 20 sich ändernde
Größen aufweisen
können.
-
Unter
nochmaliger Bezugnahme auf die Erörterung von 8 wird,
sobald die ersten vierundsechzig Byte des Pakets in dem Eingangs-FIFO 142 ankommen,
eine Filteranforderung an den FFP 141 gesendet. Bei dem
FFP 141 handelt es sich um einen umfassenden Filtermechanismus,
mit dem der SOC 10 auf jedes beliebige Feld eines Pakets
von Schicht 2 bis Schicht 7 des OSI-7-Schichtenmodells
einschließende
und ausschließende
Filter setzen kann. Filter werden zur Klassifikation von Paketen
auf der Grundlage eines Protokollfelds in den Paketen verwendet.
Verschiedene Aktionen können
auf der Grundlage der Paketklassifikation durchgeführt werden,
hierzu gehören
das Verwerfen von Paketen, das Senden des Pakets an die CPU, das
Senden des Pakets an andere Ports, das Senden des Pakets an bestimmte
Warte schlangen entsprechend der Priorität der Service-Klasse, das Ändern des
Vorrangs des Service-Typs (TOS).
-
Ein
ausschließender
Filter wird hauptsächlich
zum Implementieren von Sicherheitsmerkmalen verwendet und erlaubt
es einem Paket nur dann weiterzukommen, wenn eine Übereinstimmung
mit dem Filter vorhanden ist. Wenn keine Übereinstimmung besteht, wird
das Paket verworfen.
-
Es
sei angemerkt, dass der SOC 10 eine einzigartige Funktion
zum Behandeln von ankommenden Paketen sowohl mit als auch ohne Tags
aufweist. Pakete mit Tags weisen Tags gemäß den IEEE-Standards auf und
enthalten ein spezielles Prioritätsfeld für das Paket
gemäß IEEE 802.1p.
Pakete ohne Tags hingegen weisen kein Prioritätsfeld gemäß IEEE 802.1p auf. Auf der
Grundlage entweder der Zieladresse oder der Quelladresse des Pakets,
je nachdem, was für
eine Übereinstimmung
in einem der Tabellensuchvorgänge
gefunden wurde, kann der SOC 10 einen geeigneten Wert für die Service-Klasse
für das
Paket zuweisen, der als Entsprechung zu einer gewichteten Priorität angesehen
werden kann. Wie in der Erörterung
des ARL-Tabellenformats in diesem Dokument bereits angemerkt, ist
ein SCP-Bit (Quell-Service-Klassen-Prioritäts-Bit) als eines der Felder
in der Tabelle enthalten. Wenn dieses SCP-Bit gesetzt ist, kann
der SOC 10 auf der Grundlage eines Quellen-Service-Klassen-Werts
in der ARL-Tabelle eine gewichtete Priorität zuweisen. Wenn das SCP-Bit
nicht gesetzt ist, weist der SOC 10 eine Service-Klasse
für das
Paket auf der Grundlage des Felds für die Ziel-Service-Klassen
in der ARL-Tabelle zu. Bei diesen Service-Klassen-Werten handelt
es sich um drei Bit lange Felder in der ARL-Tabelle, wie bereits
weiter oben in der Beschreibung der ARL-Tabellenfelder angemerkt.
-
Bei
dem FFP 141 handelt es sich im Wesentlichen um eine programmierbare
Regel-Maschine, die durch einen Zustandsautomaten angesteuert wird.
Die von dem FFP verwendeten Filter können beispielsweise 64 (vierundsechzig)
Byte lang sein, und sie werden auf ein ankommendes Paket angewendet;
es kann ein beliebiger Offset verwendet werden, bei einem bevorzugten
Ausführungsbeispiel wird
jedoch ein Offset von null verwendet, und daher wirkt er auf die
ersten 64 Byte bzw. 512 Bit eines Pakets. Die von dem Filter durchgeführten Aktionen können das
Einfügen
von Tags, das Zuordnen von Prioritäten, das Einfügen von
TOS-Tags, das Senden des Pakets an die CPU, das Löschen des
Pakets, das Weiterleiten des Pakets an einen Austritts-Port und
das Senden des Pakets an einen gespiegelten Port umfassen. Die von
dem FFP 141 verwendeten Filter sind durch die Regeltabelle 22 definiert.
Die Regeltabelle 22 kann über den CMIC 40 von
der CPU 52 programmierbar sein. Die Regeltabelle kann beispielsweise
256 Einträge
lang sein und kann in einschließende
und ausschließende
Filter unterteilt sein, mit, wiederum beispielsweise, 128 Einträgen für einschließende Filter
und 128 Einträgen
für ausschließende Filter.
-
Es
sei außerdem
angemerkt, dass das Blockdiagramm des SOC 10 in 2 veranschaulicht,
dass jeder GPIC 30 seine eigenen ARL-/S3-Tabellen 31,
Regeltabelle 32 und VLAN-Tabellen 33 aufweist
und dass außerdem
jeder EPIC 20 ebenfalls seine eigenen ARL-/S3-Tabellen 21,
Regeltabelle 22 und VLAN-Tabellen 23 aufweist.
In einem bevorzugten Ausführungsbeispiel
der Erfindung können
jedoch zwei getrennte Module eine ARL-/S3-Tabelle und eine VLAN-Tabelle
gemeinsam verwenden. Jedes Modul kann allerdings seine eigene Regeltabelle 22 aufweisen.
Daher kann beispielsweise der GPIC 30a die ARL-/S3-Tabelle 21a und
die VLAN-Tabelle 23a mit
dem EPIC 20a gemeinsam verwenden. Analog dazu kann der
GPIC 30b die ARL-/S3-Tabelle 21b und die VLAN-Tabelle 23b mit
dem EPIC 20b gemeinsam verwenden. Diese gemeinsame Verwendung
von Tabellen verringert die Anzahl der Gatter, die zum Implementieren
der Erfindung erforderlich sind, und ermöglicht vereinfachte Such- und
Synchronisationsvorgänge,
wie weiter unten noch erörtert
wird.
-
Zur
Unterstützung
der Hochgeschwindigkeitsvermittlung weist die vorliegende Erfindung
verbesserte Systeme und Verfahren zum gleichzeitigen Durchführen des
Such- und des Lernvorgangs auf. Der Tabellensuchvorgang hat typischerweise
Vorrang vor dem Lernvorgang. Um jedoch die Leistung bei der Vermittlung
zu optimieren, ist es erwünscht, etwas
Bandbreite für
den Lernvorgang sicherzustellen. Somit wird gemäß der vorliegenden Erfindung der
Tabellenzugriff unter Verwendung von Zeitschlitzen delegiert. Unter
Bezugnahme auf 9 kann beispielsweise ein Zeitsteuerungssignal
(zum Beispiel ein Taktgebersignal, eine Rechteckschwingung, usw.)
auf drei Zeitschlitze aufgeteilt sein. Jeder Zeitschlitz kann für das Suchen
oder Lernen reserviert sein. So kann beispielsweise der Zugriff
auf die Regeltabelle 22 auf der Grundlage von Zeitschlitzen
des Zeitsteuerungssignals begrenzt sein. SA0 und SB0 stellen die
ersten Schritte von zwei binären
Suchvorgängen
SA und SB dar. L0 stellt einen oben beschriebenen Lernschritt dar,
wie beispielsweise einen Aktualisierungs- oder Einfügevorgang.
Jeder der drei Zeitschlitze stellt einen einzelnen Zyklus dar. Wie
gezeigt, besteht jeder vollständige
Zyklus aus einem Lern- und einem Such zyklus. Somit ist ein Teil
(Zeitschlitz) jedes Zyklus für
das Durchführen
von Suchfunktionen reserviert, und ein Teil jedes Zyklus ist für Lernfunktionen
reserviert.
-
Wenn
jedoch erlaubt wird, dass das Lernen erfolgt, während Suchvorgänge durchgeführt werden,
werden dadurch einige Probleme verursacht, die nicht vernachlässigt werden
dürfen
(das heißt Probleme,
die durch den gemeinsamen Tabellenzugriff verursacht werden). Um
die Beziehung zwischen dem Lernvorgang und dem Suchvorgang besser
zu verstehen, folgt als Nächstes
eine kurze Erörterung der
binären
Suche gemäß der vorliegenden
Erfindung.
-
Unter
Bezugnahme auf 10 wird eine beispielhafte zu
durchsuchende Tabelle 1000 gezeigt, wobei es sich um eine
beliebige der bereits weiter oben beschriebenen, auf dem Chip befindlichen
Tabellen handeln könnte.
Wenn davon ausgegangen wird, dass die Tabelle 1000 in einer
Reihenfolge sortiert ist und mit einem Index oder Schlüssel versehen ist,
ist eine binäre
Suche äußerst effizient.
Die Schritte bei der binären
Suche sind durch gekrümmte
Pfeile veranschaulicht. Zunächst
beginnt eine Suche in der Mitte einer Speicherbank (es sei denn,
sie ist indiziert). Die Tabelle weist zum Beispiel 128 Zeilen bzw.
Speichereinheiten auf (Wortzeilen, usw.). Daher beginnt die Suche
bei Zeile 64. Die Suchmaschine oder Einrichtung, die die
Suche steuert, wie beispielsweise der FFP 141, die PMMU 70 oder
der CBM 71 oder die ARL-Logik vergleicht den in Zeile 64 gespeicherten
Wert mit dem Suchkriterium. Wenn der Wert größer oder kleiner als das Suchkriterium ist,
springt die Suche um eine Anzahl von Zeilen gleich 2(m-n) nach
oben bzw. unten, wobei m der Logarithmus der Anzahl von Zeilen in
der Tabelle ist und n die Nummer des aktuellen Suchschritts. So
beginnt beispielsweise in einer Tabelle mit 128 Zeilen
Schritt 1 bei Zeile 64 = 2(m-n) =
27-1 = 26. Bei Schritt 2 ist
der nächste
Sprung plus oder minus 25 = 32, daher springt
die Suche, je nach Ergebnis des Vergleichs nach unten zu 32 oder
nach oben zu 96.
-
Die
Suche springt weiter, bis eine Übereinstimmung
gefunden wird, das heißt,
bis der Wert nicht größer oder
kleiner als das Suchkriterium ist. Wenn sich beispielsweise die Übereinstimmung
in einer Zeile 21 befindet, springt der Prozess in Schritt 1 von 64 zu 32,
weil 21 kleiner ist als 64. Als Nächstes springt
die Suche in Schritt 2 von 32 zu 16.
Da 21 größer ist
als 16, springt die Suche dann von 16 zu 20, dann
von 20 zu 22 und schließlich in Schritt 6 von 22 zurück zu 21.
Es ist zu beachten, dass die Suche insgesamt sechs Schritte benötigt. Wenn
man in Betracht zieht, dass die Speicherbank 128 Zeilen
enthält,
wobei ein voller Durchlauf von 128 Schritten erforderlich
sein könnte,
um eine Übereinstimmung
zu finden, ist eine binäre
Suche viel effizienter.
-
Wie
oben beschrieben, umfasst die ARL-/S3-Tabelle zu Alterungszwecken
ein Treffer-Bit. Sowie bei Tabellensuchen Übereinstimmungen gefunden werden,
werden die geeigneten Treffer-Bits in den ARL-Tabellen zu Alterungszwecken aktualisiert
(Aktualisierungen von Treffer-Bits können als Teil der Suchfunktion
und während
der Such-Zeitschlitze durchgeführt
werden). Daher können
mehrere potenzielle Probleme auftreten, wenn Lernfunktionen und
Suchfunktionen gleichzeitig in denselben Tabellen durchgeführt werden.
Beispielsweise können Lernaktualisierungen,
wie weiter unten noch beschrieben wird, Datensätze verschieben, wodurch der
Suchvorgang einschließlich
der Aktualisierungen von Treffer-Bits unterbrochen wird. Dies führt dazu, dass
Aktualisierungen von Treffer-Bits möglicherweise nicht stimmen
oder scheitern, oder dass das Erlernen möglicherweise tote Bereiche
in den Suchvorgängen
bewirkt. Um diese Probleme zu überwinden, ist
eine spezielle Handhabung erforderlich.
-
Das
erste Problem, das auftreten kann, wenn versucht wird, Such- und
Lernvorgänge
gleichzeitig durchzuführen,
wird durch das Einfügen
eines Datensatzes in die ARL-Tabelle verursacht, während gleichzeitig
versucht wird, einen Datensatz in der ARL-Tabelle zu aktualisieren.
Wenn beispielsweise bei einer Suche, wie zum Beispiel einer Tabellensuche
für ein
ankommendes Paket, eine Übereinstimmung
gefunden wird, wird das Treffer-Bit für den übereinstimmenden Datensatz
zu Alterungszwecken aktualisiert. Wenn jedoch während desselben Zyklus eine
neue Adresse erlernt wird und daher ein neuer Datensatz in die ARL-Tabelle
eingefügt
wird, was wiederum dazu führen
könnte,
dass der aktualisierte Datensatz verschoben wird, kann die Aktualisierung des
Treffer-Bits an der falschen Zeile bzw. dem falschen Datensatz erfolgen.
Um dies zu verhindern, können
die Lernfunktionen für
den Zyklus, nachdem für
eine Suche eine Übereinstimmung
gefunden wurde, blockiert werden, so dass die Aktualisierung des Treffer-Bits
an genau dem Datensatz vorgenommen werden kann, bei dem die Übereinstimmung
aufgetreten ist.
-
Unter
Bezugnahme auf 11 könnte beispielsweise während des
ersten Zyklus einer Suche ein Treffer bei der Suche SA0 oder SB0
erfolgen. Daher wird während
des zweiten Zyklus eine Aktualisierung des Treffer-Bits in der ARL-Tabelle durchgeführt. Während des
zweiten Zyklus gibt es keine Lernaktivität, weil das Lernen blockiert
ist, um zu verhindern, dass ein Einfügevorgang in die ARL-Tabelle die
Aktualisierung des Treffer-Bits beeinflusst. Nach der Aktualisierung
im dritten Zyklus kann der Lernvorgang fortgesetzt werden.
-
Es
sei angemerkt, dass das Lernen blockiert werden kann, bis die Aktualisierung
des Treffer-Bits beendet ist, oder, falls weitere Aktualisierungen
für eine Übereinstimmung
durchgeführt
werden, bis alle auf die Suche bezogenen Aktualisierungen beendet sind.
ARL-Logik oder andere Logik des Switches kann verwendet werden,
um das Erlernen und die Aktualisierungen von Treffer-Bits zu überwachen,
damit die Funktionen gemäß der vorliegenden
Erfindung blockiert oder priorisiert werden. Interne Logik des Switches
wird der Verwendung der CPU 52 vorgezogen, weil durch die
Verwendung der CPU 52 zum Durchführen von Funktionen, die sich
auf die Netzwerkleistung beziehen, die Gesamtleistung deutlich herabgesetzt
wird. Des Weiteren kann die ARL-Logik so konfiguriert werden, dass
sie Lese- und Schreibvorgänge
in den verschiedenen Tabellen steuert, um Blockierungs- und Priorisierungsfunktionen
gemäß der vorliegenden
Erfindung durchzuführen.
-
Ein
zweites Problem, das auftreten kann, wenn Such- und Lernvorgänge gleichzeitig
durchgeführt
werden, wird durch die Blasensortierung einer Tabelle nach einem
Einfügevorgang
bei gleichzeitig laufender Suche verursacht. Die Blasensortierung wird
im Folgenden unter Bezugnahme auf 12 kurz
beschrieben.
-
Wie
oben beschrieben, können
Suchvorgänge
mittels binärer
Suche durchgeführt
werden, die es erfordert, dass die zu durchsuchenden Tabellen vor der
Suche in einer Sortierreihenfolge vorliegen (oder dass die Tabelle
vor der Suche vorsortiert wird). Daher müssen neue Datensätze, die
in eine Tabelle eingefügt
werden, an der in Sortierreihenfolge richtigen Stelle eingefügt werden.
Alle Datensätze
müssen nach
oben oder unten verschoben werden, damit der neue Datensatz aufgenommen
werden kann und die Sortierung der Tabelle beibehalten wird. Dies
wird im Allgemeinen über
eine Blasensortierung (Bubble Sort) erreicht.
-
Wenn
beispielsweise während
des Lernvorgangs ein neuer Datensatz in die Tabelle 1000 eingefügt wird,
zum Beispiel nachdem eine neue mit dem SOC 10 verbundene
Adresse gefunden wurde, wird eine Blasensortierung durchgeführt, um
stufenweise alle Zeilen zu aktualisieren, um die Sortierung der
Tabelle 1000 beizubehal ten. Wenn eine neue Adresse in Zeile 20 der
Tabelle 1000 eingefügt
werden soll, wird Zeile 20 ausgelesen und in Zeile 19 eingefügt. Außerdem wird
Zeile 19 ausgelesen und in Zeile 18 eingefügt, usw.
Um die Blasensortierung erfolgreich durchzuführen wird aus praktischen Gründen die Sortierung
oben in der Tabelle begonnen und nach unten bis zu dem neu eingefügten Datensatz
fortgesetzt. Demgemäß wird Zeile 2 ausgelesen
und in Zeile 1 geschrieben, Zeile 3 wird ausgelesen
und in Zeile 2 geschrieben, und so weiter bis zu Zeile 20.
Nachdem Zeile 20 ausgelesen und in Zeile 19 geschrieben wurde,
wird der neue Datensatz in Zeile 20 eingefügt. Die
Fachleute mit normalen Kenntnissen auf diesem Gebiet werden eine
Blasensortierung leicht verstehen und erkennen, dass viele Ausbildungen
der Blasensortierung mit der vorliegenden Erfindung verwendet werden
können.
Da die Datensätze
in der Tabelle wie Blasen nach oben bewegt werden, wird dieser Vorgang
oft als Blasensortierung bzw. Bubbling bezeichnet.
-
Im
Folgenden wird ein Beispiel dafür
genannt, wie die Blasensortierung das Suchen und Erlernen gemäß der vorliegenden
Erfindung beeinträchtigt.
Unter nochmaliger Bezugnahme auf 10 springt
die Suche während
einer binären
Suche in Abhängigkeit
von dem aktuellen Schritt eine Anzahl von Zeilen nach oben oder
nach unten. Die Fachleute mit normalen Kenntnissen auf diesem Gebiet
werden verstehen, dass die Datensätze bei einer Blasensortierung
nach einer Einfügung
in die Tabelle von der Einfügestelle
aus oder zu der Einfügestelle
hin wie Blasen nach oben bzw. unten sortiert werden. Wenn eine Blasensortierung
gleichzeitig mit einer Suche in derselben Tabelle erfolgt, kann
dies daher zu toten Bereichen führen.
Wenn beispielsweise davon ausgegangen wird, dass bei Schritt 1 die
Bestimmung erfolgt, dass ein zu suchender Datensatz sich unterhalb von
Zeile 64 befindet, springt die Suche von 64 auf 32.
Als Nächstes
wird in Schritt 2 bestimmt, dass sich der zu suchende Datensatz
oberhalb von Zeile 32 befindet, und deshalb springt die
Suche zu Zeile 16. Wenn sich der zu suchende Datensatz
jedoch während
des Zyklus, in dem in dem Suchvorgang bestimmt wurde, wohin der
Sprung für
Schritt 3 ausgeführt
werden soll, in Zeile 17 befunden hat, dann aber durch
die Blasensortierung in Zeile 16 verschoben wurde, wird
die Suche den Datensatz niemals finden können. Dies liegt daran, dass
eine binäre
Suche nicht in der Lage ist, mathematisch in eine Zeile zurückzukehren,
die bereits geprüft
worden ist. In dem soeben genannten Beispiel würde in dem Suchvorgang versucht,
von Zeile 16 zu Zeile 24 zu springen, dann wieder
nach unten in Zeile 28, dann nach unten in Zeile 30 und
dann die Suche bei Zeile 31 beenden, ohne jemals tatsächlich zu
Zeile 32 zurückzukehren. Daher
kann eine Blasensortierung, die gleichzeitig mit einer binären Suche
durchgeführt
wird, tote Bereiche verursachen und bewirken, dass eine Suche fehlschlägt.
-
Um
zu verhindern, dass die Suche fehlschlägt, können Vorsichtsmaßnahmen
getroffen werden. Eine Möglichkeit,
um zu verhindern, dass die Blasensortierung eine binäre Suche
stört,
besteht darin, die Schreibvorgänge
der Blasensuche mittels Snooping zu überwachen. ARL-Logik kann so
konfiguriert werden, dass sie Suchtreffer und Aktualisierungen an
der ARL-Tabelle überwacht.
Treffern bei der Überwachung
(Lesevorgängen)
kann eine höhere
Priorität
eingeräumt
werden als regulären
Treffern bei der binären
Suche. Wenn ein bei der Suche erfolgter Treffer und ein bei der
Blasensortierung erfolgter Treffer gleichzeitig für denselben
Datensatz vorkommen, bedeutet dies, dass die mit dem Treffer aus der
Blasensortierung in Beziehung stehenden Daten von der ARL-Logik
für beide
Funktionen verwendet werden, weil diese Daten korrekt sein werden
(das heißt,
weil die Daten dabei sind, verschoben zu werden). Wenn die Trefferergebnisse
der regulären
Suche verwendet werden, könnte
weitere Logik in dem Switch, welcher die Daten empfängt, beeinträchtigt werden,
weil die Daten über
einen Blasensortier-Schreibvorgang dabei sind, verschoben zu werden.
Die toten Bereiche einer Suche sind bei jedem Suchschritt nur einen
Zyklus weit entfernt. Daher brauchen Aktualisierungen für eine bestimmte
Suche immer nur einen Schritt weiter überwacht zu werden. Wenn beispielsweise
die Suche im nächsten
Schritt bei Zeile 32 ankommt, brauchen nur die Zeilen 31, 32 und 33 überwacht
zu werden.
-
Wie
oben beschrieben, werden während
einer Blasensortierung durch den Lernvorgang Lese- und Schreibvorgänge in alternierenden
Zyklen durchgeführt,
bis die Tabelle nach einer Einfügung
wieder ordnungsgemäß sortiert
ist. Wenn wie oben beschrieben ein Schreibvorgang zu einer Stelle
geht, den eine Suchanfrage zu treffen versucht, wird der Schreibvorgang
blockiert. Um den Schreibvorgang zu blockieren, kann der Schreibvorgang
einfach in einen Lesevorgang geändert
werden, und der Schreibvorgang kann in dem nächsten Zyklus durchgeführt werden.
Demgemäß kann die
ARL-Logik des SOC 10 so konfiguriert sein, dass sie Überwachungs-
und Blockiervorgänge
durchführt,
wie in diesem Dokument beschrieben.
-
Unter
Bezugnahme auf 13 ist ein Ablaufdiagramm eines
Verfahrens zum Durchführen
eines gleichzeitigen Such- und Lernvorgangs innerhalb einer Netzwerkvorrichtung,
wie einem Switch, gezeigt. Die Verarbeitung beginnt bei Schritt
S131 und wird als Nächstes
bei Schritt S132 in einer Netzwerkvorrichtung fortgesetzt. In einer
Netzwerkvorrichtung, wie dem oben unter Bezugnahme auf 1 bis 8 beschriebenen
Switch SOC 10, wird ein Datenpaket an einem Netzwerk-Port
empfangen. Wie oben beschrieben, muss das Datenpaket behandelt werden.
In Schritt S133 kann eine Reihe von Suchvorgängen in ARL-Tabellen eingeleitet
werden, um eine Position zu finden. Der Switch SOC 10 ist
so konfiguriert, dass er, während
Datenpakete empfangen und an Netzwerkvorrichtungen vermittelt werden,
außerdem
einen Lernvorgang durchführt.
Wie bereits weiter oben beschrieben, können Such- und Lernvorgänge gleichzeitig
durchgeführt
werden, indem für
jede Funktion Zeitschlitze eines Zeitsteuerungssignals reserviert
werden. Beispielsweise kann jede dritte Rechteckschwingung eines
Zeitsteuerungssignals für
den Lernvorgang reserviert sein, während zwei von drei Schwingungen
für die
parallelen Suchvorgänge
reserviert sein können.
In diesem Fall würde
ein vollständiger
Zyklus drei Zeitschlitze umfassen, von denen zwei für den Suchvorgang
reserviert wären
und einer für
den Lernvorgang.
-
In
Schritt S134 werden Aktualisierungen mittels Snooping überwacht.
Wie oben beschrieben, kann die ARL-Logik oder weitere Logik innerhalb
des Switches so konfiguriert werden, dass sie Aktualisierungen in
der Tabelle einschließlich
Aktualisierungen durch Treffer-Bits und Aktualisierungen durch Blasensortierung überwacht.
In Schritt S135 können
Aktualisierungen blockiert werden, nachdem ein Suchvorgang eine Übereinstimmung
geliefert hat. Sobald ein Suchvorgang, wie bereits weiter oben beschrieben,
eine Übereinstimmung
liefert (das heißt
eine Zieladresse für
ein Datenpaket findet), wird im nächsten Zyklus das Treffer-Bit
für die Übereinstimmung aktualisiert.
Demgemäß wird,
nachdem eine Übereinstimmung
gefunden wurde, der Lernvorgang in dem Zyklus blockiert, um zu verhindern,
dass die Aktualisierung des Treffer-Bits fehlschlägt.
-
Als
Nächstes
werden in Schritt S136 Aktualisierungen blockiert, wenn sie Zeilen
betreffen, die sich innerhalb eines Suchzyklus für einen beliebigen, derzeit
durchgeführten
Suchvorgang befinden. Wie bereits weiter oben beschrieben, springt
eine binäre Suche
beispielsweise in der Tabelle nach oben und nach unten, und die
Blasensortierung kann tote Bereiche verursachen, wenn der Datensatz
während des
nächsten
Suchzyklus an den Rand verschoben wird. Deshalb werden Aktualisierungen überwacht, und
wenn bestimmt wird, dass eine Aktualisierung einer Zeile inner halb
eines Suchzyklus (das heißt
im nächsten
Sprung) erfolgen soll, wird die Aktualisierung einen Zyklus lang
blockiert. Die Verarbeitung endet dann bei Schritt S137.
-
Die
Fachleute mit normalen Kenntnissen auf diesem Gebiet werden leicht
verstehen, dass das vorgenannte System und Verfahren zum Durchführen einer
schlüsselbasierten
binären
Suche gemäß der vorliegenden
Erfindung auf viele auf dem Chip ablaufende Suchvorgänge anwendbar
sein können. Demgemäß soll die
vorliegende Erfindung nicht auf die oben beschriebenen Ausführungsbeispiele
oder Netzwerk-Switches beschränkt
sein.
-
Obwohl
die Erfindung auf der Grundlage dieser bevorzugten Ausführungsbeispiele
beschrieben wurde, sollte es für
Fachleute auf diesem Gebiet offensichtlich sein, dass bestimmte
Modifikationen, Variationen und Alternativkonstruktionen offensichtlich wären. Um
die Grenzen der Erfindung zu bestimmen, ist daher Bezug auf die
angehängten
Ansprüche
zu nehmen.