-
Diese
Anmeldung beansprucht Priorität
aus der am 7. März
2001 mit der laufenden Eingangsnummer 60/273,516 eingereichten,
vorläufigen US-amerikanischen
Anmeldung mit dem Titel "Pointer
based binary table search" (Zeigerbasierte
binäre Tabellensuche).
-
HINTERGRUND DER ERFINDUNG
-
Gebiet der Erfindung
-
Die
Erfindung betrifft eine Netzwerkvorrichtung und ein Verfahren zum
Filtern eines Datenpakets in einer Netzwerkvorrichtung. Insbesondere
betrifft die Erfindung zeigerbasierte binäre Tabellensuchsysteme und
Verfahren zum Durchsuchen von Speicher innerhalb einer Netzwerkvorrichtung,
wie beispielsweise einem Hochleistungs-Netzwerk-Switch.
-
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. 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
ist. 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-Netz werke 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 Protokollregeln 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. Somit werden neue und verbesserte
Systeme und Verfahren zum Durchsuchen von Speicherbänken innerhalb
von Netzwerkvorrichtungen, wie beispielsweise innerhalb eines Hochleistungs-Switches,
benötigt,
um Hochleistungs-Netzwerklösungen
zu unterstützen.
-
Das
Dokument WO 0056024 A bezieht sich auf einen Netzwerk-Switch zum
Vermitteln von Paketen von einer Quelle zu einem Ziel, mit einem Quell-Port
zum Empfangen eines ankommenden Paketes von einer Quelle, einem
Ziel-Port, der einen Pfad zu einem Ziel für das Paket enthält, einer
Filtereinheit zum Aufbauen und Anwenden eines Filters auf ausgewählte Felder
des ankommenden Pakets, einer Regeltabelle, die eine Vielzahl von
Regeln enthält.
Eine Filterlogik, die Teil der Filtereinheit ist, ist so konfiguriert,
dass sie einen Feldwert auf der Grundlage der ausgewählten Felder
aufbaut und Suchvorgänge
in der Regeltabelle durchführt,
um Aktionen zu bestimmen, die auf der Grundlage des Ergebnisses eines
Vergleichs zwischen einem Feldwert und den gespeicherten Filtermasken
sowie der Suche in der Regeltabelle durchgeführt werden müssen.
-
Das
Dokument
US 06061712
A beschreibt einen Hochgeschwindigkeits-Router zum Bestimmen des besten Leitwegs
für ein
IP-Datenpaket mit wenigstens einer IP-Adresse mit X Bits, wobei
der Router ein Radix-Baumverfahren mit Hashing verwendet, um die
Suchoperationen für
den IP-Leitweg durchzuführen.
-
Erfindungsgemäß wird eine
Netzwerkvorrichtung bereitgestellt, wie im unabhängigen Anspruch 1 definiert,
sowie ein Verfahren zum Filtern eines Datenpakets in einer Netzwerkvorrichtung,
wie im unabhängigen
Anspruch 8 definiert.
-
Weitere
vorteilhafte Merkmale der Erfindung sind in den Unteransprüchen definiert.
-
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 ein
Blockdiagramm eines schnellen Filterprozessors gemäß einem
Ausführungsbeispiel der
vorliegenden Erfindung;
-
10 ein
Ablaufdiagramm für
die Programmierung eines schnellen Filterprozessors gemäß der vorliegenden
Erfindung;
-
11 eine
zu durchsuchende Beispieltabelle, bei der es sich um jede beliebige
der auf dem Chip befindlichen Tabellen gemäß der vorliegenden Erfindung
handeln könnte;
-
12 ein
Blockdiagramm von auf dem Chip befindlicher Logik zum Durchführen von
Suchvorgängen
gemäß der vorliegenden
Erfindung;
-
13 ein
Ablaufdiagramm eines Verfahrens zum Aktualisieren von Zeigern für einen
Suchvorgang gemäß der vorliegenden
Erfindung; und
-
14 ein
Ablaufdiagramm eines Verfahrens zum Durchführen einer zeigerbasierten
Suche gemäß der vorliegenden
Erfindung.
-
DETAILLIERTE
BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSBEISPIELE
-
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, die 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
sein, 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 er mö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
den geeigneten Tabellen für
die Adressauflösungslogik
und den Schicht-3-Vermittlungs-tabellen 21a, 21b, 21c, 31a, 31b,
den Regeltabellen 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-, Glasfaserka bel,
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 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) wird verwendet, um diese Aufgabe 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.
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 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 ihm zugeordnetes, 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 bereitstellen.
Die CPU 52 ist durch den CMIC 40 in der Lage,
auf zahlreiche Ressourcen auf dem SOC 10 zuzugreifen, einschließlich MIB-Zähler, programmierbarer
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-PCI64 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-SDRAMs 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 im Zusammenhang 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 damit den vollständigen
Zugriff darauf erhalten. Wenn alle Anforderungen aktiv sind, ist
das SOC 10 so konfiguriert, dass der PMMU in jedem zweiten
Zyklus 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 – Gibt an,
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
Nach richtentypen 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 wird. 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 wird. 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-Kanal 83 wird von der CPU 52 zur Verwaltung,
zur internen Flusssteuerung des SOC 10 und zum Versenden
von Nachrichten zwischen den Modulen des SOC 10 verwendet.
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 im 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 im Zusammenhang 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 83 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. Selbstverständlich ist
das Teilen nicht notwendigerweise wesentlich für die vorliegende Erfindung,
wird aber im Hinblick auf das vorliegende Ausführungsbeispiel behandelt. Wie
weiter unten noch erörtert
wird, erfolgt, im Hinblick auf die Suche auf Schicht 2 und Schicht
3, gemäß der vorliegenden
Erfindung eine erhebliche Anzahl von gleichzeitigen Such- und Filtervorgängen, wenn
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 Anforderung vorhanden ist, 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 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 I/O-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 I/O-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 der 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-Speicherzuwei-sung 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, 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 im 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 vom 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
Speicher für
das Speichern und Identifizieren des ankommenden Datenpakets ver fü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 im Speicher platziert worden ist. Im Beispiel von 6 kommen
Pakete am 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 verbundenen 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
zu werden, wird der Wert des Budget-Registers, das dem verbundenen
Austritts-Manager 76 entspricht, um die Anzahl der Datenzellen 112a, 112b der
empfangenen neuen Datenzellen erhöht. Das Budget-Register stellt
somit 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. 14 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,
wird eine Anforderung zur Adressauflösung an die ARL-Maschine 143 gesendet;
dies leitet die Suche in den ARL-/S3-Tabellen 21 ein.
-
Es
folgt eine Beschreibung der Felder einer ARL-Tabelle der ARL-/S3-Tabellen
21:
Mac Address (MAC-Adresse) – Länge 48 Bit – MAC-Adresse;
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 sollte. Nur die CPU 52 kann diesen Eintrag
löschen.
Ht
Bit (Treffer-Bit) – Länge 1 Bit – Treffer-Bit.
Dieses Bit wird 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.
S C P (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 Vielzahl von
Tabellenformaten aufweisen; 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 ein 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. 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.
-
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 des EPIC 20c bestimmt
ist, teilt das Eintritts-Submodul 14a das Datenpaket 112 in die
Zellen 112a und 112b. 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. Eine Suche nach der
Quelle und eine Suche nach dem Ziel 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
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 des EPIC 20a gesendet und dann an
die Zielstation B geleitet wird; es ist jedoch davon auszugehen,
dass die Station B auf 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 auf einem anderen VLAN befindet, und das alleinige Senden
des Pakets an alle Ports im 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 wird
somit mittels der Versandeinheit 18a an den CPS-Kanal 80 gesendet
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 wird mittels der Unterstützung durch
die CPU 52 erlernt, welche eine Adressauflö sungsprotokoll-Anforderung
(ARP) 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 MAC-Adresse erlernen.
Durch den Bestätigungs-
und Lernvorgang wird allerdings 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
können.
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 64 (vierundsechzig) Byte des Pakets in der 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 einschließende und ausschließende Filter auf
jedes beliebige Feld eines Pakets von Schicht 2 bis Schicht 7 des
OSI-7-Schichtenmodells 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. Der SOC 10 kann
einen geeigneten Wert für
die Service-Klasse für
das Paket zuweisen, der als Entsprechung zu einer gewichteten Priorität angesehen
werden kann, 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. Wie in der Erörterung
des ARL-Tabellenformats in diesem Dokument bereits angemerkt, ist
das 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 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 durch den 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 ist über den CMIC 40 vollständig von
der CPU 52 programmierbar. 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.
-
Eine
Filterdatenbank innerhalb des FFP 141 umfasst eine Anzahl
von einschließenden
Maskenregistern und ausschließenden
Maskenregistern, derart, dass die Filter auf der Grundlage der Regeln
in der Regeltabelle 22 gebildet werden, und die Filter daher
im Wesentlichen eine 64 Byte lange Maske bzw. ein Bitmuster bilden,
das auf das ankommende Paket angewendet wird. Masken und Regeln
stehen so miteinander in Beziehung, dass jede Maske null, eine oder
mehrere Regeln aufweisen kann. Eine Regel kann sich auf eine oder
mehrere Masken beziehen. Die Masken und die Regeln können durch
einen Schlüssel
miteinander in Beziehung stehen, so können beispielsweise die ersten
vier Bit der Maske in den ersten vier Bit der entsprechenden Regeln
enthalten sein. Nachfolgend kann dieser Schlüssel als Maskenschlüssel bezeichnet
werden.
-
Wenn
der Filter als ausschließender
Filter bezeichnet wird, schließt
er alle Pakete aus, es sei denn, es liegt eine Übereinstimmung vor. Anders ausgedrückt erlaubt
es der ausschließende
Filter einem Paket nur dann, das Weiterleitungsverfahren zu durchlaufen,
wenn eine Übereinstimmung
mit dem Filter vorliegt. Wenn keine Übereinstimmung mit dem Filter
vorliegt, wird das Paket gelöscht.
Wenn es bei einem einschließenden
Filter keine Übereinstimmung
gibt, wird keine Aktion durchgeführt,
aber das Paket wird auch nicht gelöscht. Damit eine Aktion bei einem
ausschließenden
Filter durchgeführt
werden kann, muss bei allen Feldern des Filters eine exakte Übereinstimmung
vorliegen. Wenn bei einem ausschließenden Filter eine exakte Übereinstimmung vorliegt,
wird daher die Aktion durchgeführt,
die in dem Aktionsfeld angegeben ist; welche Aktionen durchgeführt werden
können,
wurde bereits weiter oben erörtert.
Wenn keine vollständige
oder exakte Übereinstimmung
aller Felder des Filters vorliegt, sondern eine Teilübereinstimmung,
wird das Paket gelöscht.
Eine Teilübereinstimmung
ist definiert als eine Übereinstimmung
im Eintrittsfeld, im Austrittsfeld oder in den Filterauswahlfeldern.
Wenn zwischen dem Paket und dem ausschließenden Filter weder eine vollständige Übereinstimmung
noch eine Teilübereinstimmung
vorliegt, erfolgt keine Aktion, und das Paket durchläuft das
Weiterleitungsverfahren. Die FFP-Konfiguration, die Aktionen auf
der Grundlage der ersten 64 Byte eines Pakets vornimmt, verbessert
die Handhabung des Echtzeit-Daten-verkehrs, da im laufenden Betrieb
Pakete gefiltert und Aktionen durchgeführt werden können. Ohne
einen erfindungsgemäßen FFP
müssten
die Pakete zu der CPU übertragen
werden, damit eine geeignete Aktion interpretiert und vorgenommen
wird. Bei einschließenden
Filtern wird, wenn eine Übereinstimmung
mit dem Filter vorliegt, eine Aktion durchgeführt, und wenn keine Übereinstimmung
mit dem Filter vorliegt, wird keine Aktion durchgeführt; die
Pakete werden jedoch bei einschließenden Filtern nicht auf der
Grundlage einer Übereinstimmungs-
bzw. Nicht-Übereinstimmungssituation
gelöscht.
-
Zusammenfassend
weist der FFP eine Filterdatenbank mit Sätzen von einschließenden und
ausschließenden
Filtern als getrennten Filtermasken auf. Wenn ein Paket in den FFP
gelangt, werden die Filtermasken auf das Paket angewendet; anders
ausgedrückt
wird eine logische UND-Operation mit der Maske und dem Paket durchgeführt. Wenn
das entstehende Produkt einer Regel entspricht, werden die passenden
Einträge
auf die Regeltabellen 22 angewendet, um zu bestimmen, welche
spezifischen Aktionen durchgeführt
werden sollen. Wie zuvor bereits erwähnt, umfassen die Aktion das
Einfügen
von Tags gemäß 802.1p,
das Zuordnen von Prioritäten
gemäß 802.1p,
das Einfügen
von IP-TOS-Tags (für
den Service-Typ), das Senden des Pakets an die CPU, das Verwerfen
bzw. Löschen
des Pakets, das Weiterleiten des Pakets an einen Austritts-Port
und das Senden des Pakets an den gespiegelten Port. Da die Regeltabelle
nur eine begrenzte Anzahl von Feldern enthält und da bestimmte Regeln
auf verschiedene Pakettypen angewendet werden müssen, können die Anforderungen bezüglich der
Regeltabellen in der vorliegenden Erfindung dadurch verringert werden, dass
die vorliegende Erfindung alle ankommenden Pakete als Pakete mit
Tags festlegt; alle Pakete ohne Tags werden daher einer Einfügung von
Tags gemäß 802.1p
unterzogen, um die Anzahl der erforderlichen Einträge in der
Regeltabelle zu verringern. Durch diese Aktion entfällt die
Notwendigkeit von Einträgen
bezüglich
der Behandlung von Paketen ohne Tags. Es sei angemerkt, dass spezifische
Pakettypen in verschiedenen IEEE-Standards und anderen Netzwerk-Standards
definiert sind und deshalb in diesem Dokument nicht definiert werden.
-
Unter
Bezugnahme auf 9 ist gezeigt, dass der FFP 141 die
Filterdatenbank 1410 umfasst, die Filtermasken enthält, und
mit der Logikschaltung 1411 kommuniziert, um die Pakettypen
zu bestimmen und geeignete Filtermasken anzuwenden. Nachdem die
Filtermaske wie oben angemerkt angewendet wurde, wird das Ergebnis
der Anwendung auf die Regeltabelle 22 angewendet, damit
die geeignete Suche und Aktion durchgeführt werden können. Es sei
angemerkt, dass die Filtermasken, Regeltabellen und Logik zwar durch
die CPU 52 programmierbar sind, aber bei ihrer Verarbeitung
und Berechnung nicht auf die CPU 52 zurückgreifen. Nach der Programmierung
wird eine Hardware-Konfiguration bereitgestellt, die eine Filteranwendung
und Suche mit Leitungsgeschwindigkeit ermöglichen.
-
Unter
nochmaliger Bezugnahme auf 8 bestimmt
die Logik 1411 im FFP 141, nachdem der FFP 141 geeignete,
konfigurierte Filter angewendet hat und von den geeigneten Regeltabellen 22 Ergebnisse
erhalten werden, die geeignete Aktion und führt diese durch. Die Filterlogik
kann das Paket verwerfen, das Paket an die CPU 52 senden,
den Paket-Header oder den IP-Header verändern und IP-Prüfsummenfelder
neu berechnen, oder sie führt andere
geeignete Aktionen bezüglich
der Header durch. Die Änderung
erfolgt beim Puffer-Teiler 144, und das Paket wird auf
dem C-Kanal 81 platziert. Die Steuernachricht und die Nachrichten-Header-Informationen
werden von dem FFP 141 und der ARL-Maschine 143 angewendet,
und der Nachrichten-Header wird auf dem P-Kanal 82 platziert.
Die Versandeinheit 18, die auch unter Bezugnahme auf 8 allgemein
erörtert
wurde, koordiniert alle Versandvorgänge an den C-Kanal, P-Kanal
und S-Kanal. Wie zuvor bereits angemerkt, sind alle EPIC-Module 20,
GPIC-Module 30, die PMMU 70 usw. einzeln so konfiguriert,
dass sie über
den CPS-Kanal kommunizieren. Jedes Modul kann unabhängig von
den übrigen
geändert
werden, solange die CPS-Kanal-Schnittstellen beibehalten werden,
interne Änderungen
an jeglichen Modulen wie beispielsweise EPIC 20a sollten
andere Module, wie beispielsweise den EPIC 20b oder die
GPICs 30, nicht beeinträchtigen.
-
Wie
zuvor bereits erwähnt,
kann der FFP 141 über
die CPU 52 vom Benutzer auf der Grundlage der spezifischen
Funktionen programmiert werden, die von jedem FFP 141 gehandhabt
werden sollen. Unter Bezugnahme auf 10 ist
ersichtlich, dass in Schritt 10-1 ein Schritt zur Programmierung
des FFP vom Benutzer eingeleitet wird. Sobald die Programmierung
eingeleitet worden ist, identifiziert der Benutzer in Schritt 10-2 die
Protokollfelder des Pakets, die für den Filter von Interesse
sind. In Schritt 10-3 werden der Pakettyp und die Filterbedingungen
bestimmt, und in Schritt 10-4 wird auf der Grundlage des
identifizierten Pakettyps und der gewünschten Filterbedingungen eine
Filtermaske aufgebaut. Bei der Filtermaske handelt es sich im Wesentlichen
um ein Bitmuster, das auf die ausgewählten Felder des Pakets angewendet
bzw. durch eine UND-Operation mit diesem verknüpft wird. Nach dem Aufbau der
Filtermaske wird dann abhängig
von den zu lösenden Problemen,
den weiterzuleitenden Paketen, den durchzuführenden Aktionen, usw. bestimmt,
ob es sich bei dem Filter um einen einschließenden oder ausschließenden Filter
handeln soll. In Schritt 10-6 wird bestimmt, ob der Filter
sich an dem Eintritts-Port befindet oder nicht, und in Schritt 10-7 wird
bestimmt, ob der Filter sich an dem Austritts-Port befindet oder nicht. Wenn sich
der Filter an dem Eintritts-Port befindet, wird in Schritt 10-8 eine
Eintritts-Port-Maske verwendet. Wenn bestimmt wird, dass sich der
Filter an dem Austritts-Port befindet, wird in Schritt 10-9 eine Austrittsmaske
verwendet. Auf der Grundlage dieser Schritte wird dann ein Regeltabelleneintrag
für die Regeltabellen 22 aufgebaut,
und der Eintrag bzw. die Einträge
wird bzw. werden in die geeignete Regeltabelle aufgenommen (Schritte 10-10 und 10-11).
Diese Schritte werden durchgeführt,
indem der Benutzer bestimmte Sätze
von Regeln oder Informationen über
eine geeignete Eingabevorrichtung in die CPU 52 eingibt,
und die CPU 52 führt
die geeignete Aktion im Hinblick auf das Erstellen der Filter über den
CMIC 40 und die geeigneten Eintritts- oder Austritts-Submodule
auf einem geeigneten EPIC-Modul 20 oder GPIC-Modul 30 durch.
-
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 weist allerdings seine eigene Regeltabelle 22 auf.
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.
Die 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 Durchführen der oben beschriebenen
schnellen Filterverarbeitung auf. Insbesondere ist der FFP 141 so
konfi guriert, dass er die ARL-Tabellen 21, die Regeltabelle 22 und die
VLAN-Tabelle 23 unter Verwendung einer zeigerbasierten
binären
Suche durchsucht. Binäre
Suchvorgänge
stellen ein effektives und schnelles Verfahren zum Durchsuchen innerhalb
eines Hochleistungs-Switches dar. Eine kurze Erörterung von binären Suchvorgängen gemäß der vorliegenden
Erfindung wird zum besseren Verständnis der weiter unten noch
eingehend erörterten
parallelen Suchvorgänge
zur Verfügung
gestellt.
-
Unter
Bezugnahme auf 11 wird eine beispielhafte zu
durchsuchende Tabelle 1100 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 1100 in einer
Reihenfolge sortiert 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 128 weist zum Beispiel
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, 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 zwei 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. Dies führt
dazu, dass die übersprungene Strecke
bei jedem Schritt halbiert wird.
-
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, zeigt sich, dass eine binäre Suche viel effizienter ist.
-
Unter
nochmaliger Bezugnahme auf 8 kann der
EPIC auch eine Zeigertabelle 221 aufweisen, um die Maximum-
(MAX) und die Minimum-Adresse (MIN) von Regeln für entsprechende Masken zu halten.
Wie bereits oben beschrieben, können
Masken (Filter) über
einen Schlüssel
mit den Regeln in Beziehung stehen. Demgemäß kann beispielshalber die
Zeigertabelle 221 erstellt werden, um die MAX- und die
MIN-Adresse (Grenze) für
die Regeln für
jede Maske zu halten. Die Zeigertabelle 221 kann weitere
nützliche
Daten enthalten, wie beispielsweise die Anzahl der Schritte, die
Anfangsadresse, die Inkrementgröße, usw.
Um dann die Leistung des Switches zu erhöhen, kann der FFP 141 so konfiguriert
sein, dass er die Regeltabelle innerhalb der durch die Zeigertabelle 221 für jede Maske
definierten Grenzen durchsucht. Demgemäß würde eine binäre Suche
nur in dem Bereich der Tabelle eingeleitet, der der angegebenen
Maske entspricht, und würde
weniger Schritte erfordern. Die Anzahl der Schritte, der Anfangspunkt
und das Delta für
jeden Sprung können
unter Verwendung derselben Formeln berechnet werden, die unter Bezugnahme
auf 11 beschrieben wurden, indem der MAX- und der
MIN-Zeiger verwendet werden. So ist beispielsweise die Anzahl der
Schritte gleich log2(MAX – MIN) +
1, und die zu springende Strecke = 2(5–aktueller Schritt). Die Regel- und Zeigertabellen können während der Programmierung
oder Einleitung, wie oben beschrieben, eingerichtet werden. Ein
Verfahren zum Erstellen und Verwalten der Zeigertabelle 221 ist
unten unter Bezugnahme auf 13 beschrieben.
-
12 ist
ein Blockdiagramm von auf dem Chip befindlicher Logik (das heißt Siliziumkomponenten
oder -schaltungen), die in dem FFP 141 enthalten sein kann,
zum Durchführen
von Suchvorgängen
gemäß der vorliegenden
Erfindung. Insbesondere wird, um eine Suche in einer Schaltung 300 zu
beginnen, ein new_mask-Signal
(neue Maske) oder ein next_mask-Signal (nächste Maske) in dem Addierer 314 über eine
UND-Operation mit einem Zeitsteuerungssignal verknüpft. Das
new_mask-Signal bzw. das next_mask-Signal wird in die Maskentabelle 302 und
die Zeigertabelle 306 eingegeben. Als Reaktion auf das
Signal gibt die Maskentabelle 302 die erste Maske in das
UND-Gatter 308 aus, wo ein Datenpaket und die Maske über eine
UND-Operation miteinander verknüpft
werden, dann wird das Produkt im Komparator 310 mit Regeln
für eine Übereinstimmung
verglichen. Die Ausgabe der Zeigertabelle 306 wird in den
MUX 312 eingegeben, der ein von dem Komparator 310 über ein
Flip-Flop 320 ausgegebenes Steuersignal empfängt. Der
MUX 312 empfängt außerdem als
Eingaben eine Rückkopplungsschleife über ein
Flip-Flop 322, das die vorherige Adresse bereitstellt,
sowie die Adressen für
die nächste
binäre Suche
für einen
Vergleich vom Typ "," oder "+" als durch den Addierer 316 oder
den Subtraktor 318, der das nächste Inkrement für den Schritt
der binären
Suche addiert bzw. subtrahiert. Beim Einleiten, beispielsweise wenn
der FFP 141 ein zu filterndes Datenpaket empfängt, ist
die Ausgabe des MUX 312 die mittlere Adresse der Grenze,
die durch den Zeiger wie oben beschrieben erstellt wurde. Diese
Adresse wird in die Regeltabelle 304 eingegeben, und die
Regel mit dieser Adresse wird an den Komparator 310 ausgegeben
und mit dem Produkt der Maske und des Datenpakets aus dem UND-Gatter 308 verglichen. Die
Ausgabe des Komparators 310 ist ein Signal, das als Ergebnis
des Vergleichs entweder ",", "+" oder "=" darstellt.
Der MUX 312 ist so konfiguriert, dass er das Steuersignal ",", "+" oder "=" empfängt und die geeignete nächste Adresse
auf der Grundlage des Vergleichs und der Eingaben des Addierers 316,
des Subtraktors 318 und des Flip-Flop 322 ausgibt.
So werden, wie oben beschrieben, bei einer binären Suche beispielsweise auf
der Grundlage der Ermittlung, ob der Datensatz größer oder
kleiner als die jeweilige gelesene Zeile ist, eine Reihe von Sprüngen nach oben
und unten in einer Tabelle durchgeführt. Die Schaltung 300 ist
so konfiguriert, dass sie die Anzahl der Schritte für eine bestimmte
Suche auf der Grundlage des Zeigers durchläuft und dann ein nächstes Maskensignal
generiert, um die nächste
Maske einzuleiten. Wenn in dem Komparator 310 eine Übereinstimmung
ermittelt wird, bevor alle Schritte einer bestimmten Suche durchlaufen
wurden, gibt der Komparator 310 ein "="-Signal
an den MUX 312 aus. Der MUX 312 ist so konfiguriert,
dass er die vorherige Adresseneingabe von dem Flip-Flop 322 ausgibt,
so dass es sich bei der Ausgabe an eine andere FFP-Logik um die
Regeladresse der Übereinstimmung
handelt. Diese Ausgabe bleibt konstant, bis alle Schritte für eine bestimmte
Suche abgeschlossen sind, da beim Komparator 310 anschließend in jedem
Zyklus eine Übereinstimmung
auftritt, bis eine neue Maske in die Schaltung 300 eingegeben
wird. Demgemäß ist die
Schaltung in der Lage, alle Masken aus der Maskentabelle 302 zu
durchlaufen und innerhalb der Regeltabelle 304 eine binäre Suche durchzuführen, die
durch die in der Zeigertabelle 306 gespeicherten Grenzdaten
definiert ist, und die Adressen aller Übereinstimmungen an die übrige Logik
des Switches auszugeben. Wie oben bereits beschrieben, ist der SOC 10 so
konfiguriert, dass er Vermittlungsfunktionen auf der Grundlage der
Regeln ausführt,
für die
eine Übereinstimmung
vorhanden ist, und die Regeln auf das Datenpaket anwendet.
-
13 ist
ein Ablaufdiagramm, das ein Verfahren zum Aktualisieren einer Zeigertabelle
gemäß der vorliegenden
Erfindung zeigt. Der Prozess beginnt bei Schritt S13-1 und wird
sofort bei Schritt S13-2 fortgesetzt. Bei Schritt S13-2 wird der
Minimum-Zeiger (MIN) für
jede Maske (bzw. für
eine neue Maske) auf die Anzahl der Zeilen in der Tabelle gesetzt.
Wenn die Tabelle beispielsweise, wie bereits weiter oben beschrieben,
256 Zeilen aufweist, wird MIN auf 255 gesetzt.
-
Als
Nächstes
wird in Schritt S13-3 der Maximum-Zeiger (MAX) für alle Masken auf null gesetzt. In
Schritt S13-4 wird bei einem Einfüge- oder Aktualisierungsvorgang
der Tabelle die aktualisierte bzw. eingefügte Zeile mit den Zeigern verglichen,
um die Zeigertabelle zu aktualisieren. Wie oben beschrieben, ist
beispielsweise die CPU 52 so konfiguriert, dass sie die
Tabellenverwaltung und das Einfügen
in die Masken und Regeltabelle durchführt. Bei einem Einfüge- oder
Aktualisierungsvorgang an der Regeltabelle wird die Zeilennummer
in Schritt S13-5 mit dem MIN-Zeiger verglichen, und wenn der MIN-Wert größer ist
als die gerade eingefügte
Zeile, wird in Schritt S13-6 die Zeigertabelle mit einem neuen MIN-Zeiger
für die
Maske bzw. Regel aktualisiert. Analog dazu wird in Schritt S13-7
der MAX-Wert mit der Zeile verglichen, und wenn der MAX-Wert geringer
ist als die Zeile, wird der MAX-Zeiger für die betreffende Maske bzw.
Regel in Schritt S13-8 mit der Zeilennummer aktualisiert.
-
Bei
der Einleitung wird beispielsweise der MAX-Wert auf 0 gesetzt und
der MIN-Wert auf 255. Bei einem Einfügevorgang in Zeile 0 wird daher
der MIN-Zeiger auf 0 gesetzt, und der MAX-Zeiger bleibt bei 0. Wenn
dann eine weitere Zeile in Zeile 1 eingefügt wird, bleibt der MIN-Zeiger
bei 0, aber der MAX-Zeiger wird auf 1 aktualisiert.
-
In
Schritt S13-9 schleift der Prozess durch alle Aktualisierungsvorgänge, und
die Schritte S13-4 bis S13-9 werden für jede Aktualisierung gemeldet. Der
Prozess endet bei Schritt S13-10. Es sei angemerkt, dass der in 13 gezeigte
Prozess eine Schleife aufweist. Die vorliegende Erfindung ist allerdings
nicht solchermaßen
beschränkt,
und die Aktualisierungen an den Zeigertabellen können jederzeit erfolgen, wenn
eine Maske oder Regel in die Tabelle eingefügt bzw. dort aktualisiert wird.
-
14 ist
ein Ablaufdiagramm eines Verfahrens zum Durchsuchen der Regeltabelle
als Teil einer schnellen Filter-Verarbeitung gemäß der vorliegenden Erfin dung.
Die Verarbeitung beginnt bei Schritt S14-1 und wird bei Schritt
S14-2 fortgesetzt, bei dem ein Paket vom Switch empfangen wird.
Wie bereits weiter oben beschrieben, kann der Switch ein Paket an
einem Port empfangen, und der Eintritt an diesem Port kann das Paket
zu dem FFP 141 übertragen.
In Schritt S14-3 wird die erste Maske empfangen, beispielsweise
von der Maskentabelle. Wie bereits weiter oben unter Bezugnahme
auf 12 beschrieben wurde, kann ein next_mask-Signal
(nächste
Maske) oder ein new_mask-Signal (neue Maske) verwendet werden, um
eine Maske aus der Maskentabelle anzustoßen. Dann wird die Maske in
Schritt S14-4 mit dem Datenpaket multipliziert (mit einer UND-Operation
verknüpft),
um die Daten herauszufiltern, die mit den Regeln verglichen werden
sollen.
-
Als
Nächstes
werden in Schritt 14-5 der MAX- und der MIN-Zeiger für die Regeltabelle
für die betreffende
Maske empfangen. Wie bereits weiter oben unter Bezugnahme auf 10 beschrieben wurde,
kann beispielsweise das next_mask-Signal in die Zeigertabelle eingegeben
werden, um den MIN- und den MAX-Zeiger für die Regeltabelle für die betreffende
Maske zu empfangen. Als Nächstes
wird in Schritt S14-6 eine binäre
Suche auf der Grundlage der Zeiger eingeleitet. Wie bereits weiter
oben beschrieben, ist die Grenze für die binäre Suche durch die Zeiger definiert,
und die Anzahl der Schritte und die Delta-Werte werden ebenfalls
von den Zeigern abgeleitet. Durch dieses Verfahren werden für jede Maske
nur entsprechende Regeln durchsucht.
-
Als
Nächstes
erhält
die binäre
Suche in Schritt S14-7 eine Regel und vergleicht sie mit dem gefilterten
Paket, um eine Übereinstimmung
zu ermitteln. Wenn eine Übereinstimmung
vorliegt, wird die Regel in Schritt S14-8 gespeichert, um durch
die interne Logik des Switches verarbeitet zu werden, und die Verarbeitung
wird von Schritt S14-8 aus direkt bei Schritt S14-10 fortgesetzt.
Andernfalls, wenn keine Übereinstimmung
vorliegt, wird in Schritt S14-9 geprüft, ob in der binären Suche
noch Schritte übrig sind.
Wenn die binäre
Suche noch nicht abgeschlossen wurde, kehrt die Verarbeitung zu
Schritt S14-7 zurück,
und die binäre
Suche führt
den nächsten Schritt
durch und nimmt eine Prüfung
auf Übereinstimmung
mit einer weiteren Regel vor. Wenn die binäre Suche abgeschlossen ist
oder für
eine Regel eine Übereinstimmung
gefunden wurde, wird die Suche bei Schritt S14-10 beendet. Bei Schritt
S14-11 wird eine nächste
Maske erhalten, und die Schritte S14-3 bis S14-11 werden wiederholt, bis keine weiteren
Masken mehr vorhanden sind, nach denen gesucht werden soll. Bei
Schritt S14-12 wendet die interne Logik des Switches die gespeicherten
Regeln auf geeignete Weise an. Die Verarbeitung endet bei Schritt
S14-13.
-
Demgemäß werden
Systeme und Verfahren bereitgestellt, um zeigerbasierte binäre Tabellensuchvorgänge innerhalb
einer Netzwerkvorrichtung, wie beispielsweise einem Hochleistungs-Switch, durchzuführen. Gemäß der vorliegenden
Erfindung wird die Leistung der Netzwerkvorrichtung durch die koordinierte
Verwendung von Zeigern und Schlüsseln
verbessert, um den Umfang der Suchvorgänge zu verringern, damit die
Suchvorgänge
schneller durchgeführt
werden können.
Die Fachleute mit normalen Kenntnissen auf diesem Gebiet werden
leicht verstehen, dass die vorgenannten Systeme und Verfahren auf
viele auf dem Chip ablaufende Suchprozesse anwendbar sind und dass
nicht beabsichtigt ist, sie auf die oben beschriebenen Ausführungsbeispiele
oder Netzwerk-Switches zu beschränken.
-
Jede
beliebige Hochleistungsvorrichtung kann beispielsweise Nutzen aus
dem beschriebenen Verfahren zum Durchsuchen paralleler Speicherbänke ziehen.
Außerdem
könnten
andere Switch-Konfigurationen verwendet werden, um die Erfindung
in vorteilhafter Weise zu nutzen. Die Warteschlangenverwaltungs-Einheit,
die Speicherverwaltungseinheit und die Such-Vermittlungseinheit
können
alle getrennte Funktionsblöcke
sein, Bestandteile desselben Funktionsblocks oder eine Kombination
davon. Um die Grenzen der Erfindung zu bestimmen, ist daher Bezug
auf die angehängten
Ansprüche
zu nehmen.