-
Die Erfindung betrifft ein Verfahren
und eine Vorrichtung zum Hochleistungsvermitteln von Datenpaketen
in lokalen Kommunikationsnetzwerken, wie beispielsweise Token-Ring,
ATM-, Ethernet-, Fast Ethernet- und Gigabit-Ethernet-Umgebungen,
welche alle im allgmeinen als LANs bekannt sind. Insbesondere betrifft
die Erfindung eine neue Switch-Architektur in einer integrierte,
modularen Ein-Chip-Lösung,
welche auf einem Halbleitersubstrat, wie beispielsweise einem Siliciumchip
implementiert werden kann.
-
Der Artikel „Architecture for a 10-Gigabit
Ethernet Standard" von
Shimon Muller, IEEE802.3 High Speed Study Group, 1. Juni 1999, diskutiert
die Erfordernisse, die erfüllt
sein müssen,
um einen Hochgeschwindigkeitsstandard (10-Gigabit) zu erzielen.
-
Die vorliegende Erfindung treibt
die Netzwerkvermittlungstechnologie in einem Switch voran, der zur Verwendung
in Ethernet-, Fast Ethernet-, Gigabit-Ethernet- und andersartigen
Netzwerk-Umgebungen geeignet ist, welches eine Hochleistungsvermittlung
von Datenpaketen oder Datenzellen erfordert. Ein Switch, der die
offenbarten Elemente verwendet, und ein System, das die offenbarten
Schritte durchführt,
schafft gegenüber
dem Stand der Technik Vorteile im Bezug auf die Kosten und den Betrieb.
-
Die vorliegende Erfindung richtet
sich auf eine Switch-On-Chip-Lösung
für einen
Netzwerk-Switch,
der zur Verwendung wenigstens in Ethernet-, Fast Ethernet- und Gigabit-Ethernet-Systemen geeignet
ist, wobei die gesamte Vermittlungshardware auf einem einzigen Microchip
angeordnet ist. Die vorliegende Erfindung ist zum Maximieren der
Fähigkeit
der Paketweiterleitung bei der Leitungsgeschwindigkeit und ebenso
zum Schaffen einer modularen Konfiguration konfiguriert, wobei eine
Mehrzahl von separaten Modulen auf einem gemeinsamen Chip konfiguriert
sind, und wobei individuelle Konstruktionsveränderungen an bestimmten Modulen
nicht die Beziehung dieser bestimmten Module auf andere Module in
dem System beeinträchtigen.
-
Die vorliegende Erfindung betrifft
daher einen Netzwerk-Switch mit einem Internet-Port-Schnittstellen-Controller,
wobei der Internet-Port-Schnittstellen-Controller einen Speicher
und eine Hochleistungsschnittstelle zum Kommunizieren mit anderen
Switches und Komponenten durch die Übertragung von Datenpaketen aufweist,
die in dem Speicher enthalten sind. Die Hochleistungsschnittstelle
beinhaltet einen Datenverbindungsbus, bei dem Daten sowohl bei einer
steigenden Flanke als auch bei einer fallenden Flanke eines Taktsignals übertragen
werden und wobei der Datenverbindungsbus Ausgangstreiber und eine
Multiplex-Schaltung aufweist, die mit den Ausgangstreibern verbunden
ist. Die Multiplex-Schaltung weist zwei Ebenen von störimpulsfreien
bzw. keinen Glitch aufweisenden Multiplexern, wobei wenigstens ein
Ausgangssignal einer anfänglichen
ersten Ebene von störimpulsfreien
Multiplexern in eine zweite Ebene von störimpulsfreien Multiplexern
eingegeben wird, die wenigstens einen störimpulsfreien Multiplexer enthält, um die über die
Hochleistungsschnittstelle übertragenen
Daten zu Serialisieren.
-
Der Switch beinhaltet zusätzlich Konfigurationen
der störimpulsfreien
Multiplexer, bei denen das Ausgangssignal der ersten Ebene von störimpulsfreien
Multiplexern in einen störimpulsfreien
Multiplexer eingegeben wird, der die zweite Ebene bildet. Die Multiplex-Schaltung kann ebenso
zusätzliche
Multiplexer enthalten, die nicht störimpulsfrei sein müssen, um
Daten zu der ersten Ebene von störimpulsfreien
Multiplexern zu liefern.
-
Die vorliegende Erfindung richtet
sich ebenso auf ein Verfahren zum Serialisieren von Daten, die über eine
Hochleistungsschnittstelle eines Netzwerk-Switchess gesendet worden
sind, wobei das Verfahren die Schritte des Empfangens von parallelen
Daten, die über
die Hochleistungsschnittstelle gesendet werden sollen, und des Multiplexen
der parallelen Daten beinhaltet. Dann wird ein Teil der parallelen
Daten in einem ersten Register gespeichert, das auf einer steigenden
Flanke eines Taktsignal getaktet wird, und wird ein anderer Teil
in einem zweiten Register gespeichert, das auf einer fallenden Flanke
des Taktsignals getaktet wird. Die Teile werden dann in störimpulsfreie
Multiplexer der ersten Ebene eingegeben und die Teile werden auf
der Grundlage eines Multiplexerauswahlsignals gemultiplext, das
in die störimpulsfreien
Multiplexer der ersten Ebene eingegeben wird. Die Ausgangssignale
der störimpulsfreien
Multiplexer der ersten Ebene werden zu einem störimpulsfreien Multiplexer der
zweiten Ebene ausgegeben und die Daten werden dann durch abwechselndes
Auswählen
von Eingängen
auf der Grundlage des Multiplexerauswahlsignals gemultiplext, das
in den störimpulsfreien
Multiplexer der zweiten Ebene eingegeben wird. Jeder der störimpulsfreien
Multiplexer der ersten Ebene erzeugt ein Funktionsrisiko, wenn mehr
als ein Eingang zu dem störimpulsfreien
Multiplexer der ersten Ebene sich gleichzeitig verändert. Das
Multiplexen der Daten mittels des störimpulsfreien Multiplexers der
zweiten Ebene wird zeitlich so geplant, dass der störimpulsfreie
Multiplexer der zweiten Ebene nur Eingaben von einem der Multiplexer
der ersten Ebene auswählt,
der kein Funktionsrisiko erzeugt.
-
Die Aufgaben und Merkmale der Erfindung
werden schneller unter der Bezugnahme auf die folgende Beschreibung
und die beigefügten
Zeichnungen verstanden werden, in denen:
-
1 ein
allgemeines Blockdiagramm von Elementen eines Netzwerk-Switchess
ist, wie es hier erörtert
ist;
-
2 ein
detaillierteres Blockdiagramm des Netzwerk-Switchess ist;
-
3 den
Datenfluß auf
dem CPS-Kanal des Netzwerk-Switchess zeigt;
-
4A eine
Anforderungspriorität-Round-Robin-Entscheidung
für den
Zugang zu dem C-Kanal des Netzwerk-Switchess zeigt;
-
4B den
Zugang zu dem C-Kanal auf der Grundlage der in 4A gezeigten Round-Robin-Entscheidung
zeigt;
-
5 Typen
von P-Kanal-Nachrichten zeigt;
-
6 ein
Nachrichtenformat für
Typen von S-Kanal-Nachrichten zeigt;
-
7 eine
Darstellung des OSI-7-Schicht-Referenzmodells ist;
-
8 ein
Betriebsdiagramm eines EPIC-Moduls zeigt;
-
9 das
Unterteilen eines Datenpakets bei dem Eingang zu einem EPIC-Modul
zeigt;
-
10 eine
detaillierte Ansicht von Elementen der MMU ist;
-
11 das
CBM-Zellen-Format zeigt;
-
12 ein
Zulassungsflußdiagramm
für internen/externen
Speicher zeigt;
-
13 ein
Blockdiagramm eines Ausgangsmanagers 76 zeigt, der in 10 gezeigt ist;
-
14 mehr
Details eines EPIC-Moduls zeigt;
-
15 ein
Blockdiagramm eines Schnell-Filter-Prozessors (FFP) ist;
-
16 ein
Blockdiagramm der Elemente des CMIC 40 ist;
-
17 eine
Reihe von Schritten zeigt, die zur Programmierung eines FFP verwendet
werden;
-
18 ein
Flußdiagramm
ist, das den Alterungsvorgang für
ARL-(L2)-und L3-Tabellen
zeigt;
-
19 Kommunikation
unter Verwendung einer Trunk-Gruppe zeigt;
-
20 eine
Tabelle ist, die zahlreiche Felder für verschiedene Pakettypen auflistet;
-
21A und 21B ein Filtermaskenformat
bzw. ein Feldmaskenformat zeigen;
-
22 ein
Flußdiagramm
ist, das die Bildung und Anwendung einer Filtermaske zeigt;
-
23 ein
Beispiel eines Formats für
eine Regeltabelle zeigt;
-
24 ein
Format für
eine IP-Multicast-Tabelle zeigt;
-
25 ein
Flußdiagramm
ist, das die Bearbeitung eines IP-Multicast-Pakets zeigt;
-
26 gestapelte
SOC-Switches 10 zeigt;
-
27A und 27B alternative Konfigurationen
des gestapelten SOC 10 zeigen;
-
28 eine
detaillierte Ansicht der Funktionsmodule des IPIC 90 ist;
-
29 die
Paketverarbeitung für
Pakete zeigt, die bei der Hochleistungsschnittstelle des IPIC 90 eingehen;
-
30 eine
diffserv-zu-COS-Zuordnungstabelle ist;
-
31 die
Konfiguration der Offsets zeigt;
-
32 ein
primäres
Flußdiagramm
der Filter-/Meßlogik
ist;
-
33 ein
Flußdiagramm
der partiellen Übereinstimmung-Logik
ist;
-
34 ein
Flußdiagramm
der In-Profil-Vorgang-Logik ist;
-
35 ein
Flußdiagramm
der Vorgangs-Logik für
teilsweise Übereinstimmung
für die
Bits 3-6;
-
36 ein
Flußdiagramm
der Vorgangslogik für
teilweise Übereinstimmung
für die
Bits 1,0 und 10;
-
37 ein
Flußdiagramm
der In-Profil-Vorgang-Logik für
die Bits 2, 8 und 9 ist;
-
38 eine
erste Konfiguration einer Adresstabelle und einer Suchmaschine zeigt;
-
39 eine
zweite Konfiguration von zwei Adresstabellen und zwei Suchmaschinen
zeigt;
-
40a ein
erstes Beispiel von Adresseinträgen
zeigt, die in einer einzigen Adresstabelle gespeichert sind;
-
40b ein
zweites Beispiel von Adresseinträgen
zeigt, die in zwei getrennten sortierten Adresstabellen gespeichert
sind;
-
41a ein
drittes Beispiel von Adresseinträgen
zeigt, die in einer einzigen Adresstabelle gespeichert sind;
-
41b ein
viertes Beispiel von Adresseinträgen
zeigt, die in zwei getrennten sortierten Adresstabellen gespeichert
sind;
-
42 ein
Flußdiagramm
der In-Profil-Vorgang-Logik für
die Bits 11-13 ist;
-
43 ein
Flußdiagramm
der gespiegelten Port-/Abschluss-FFP-Vorgänge ist;
-
44 ein
Flußdiagramm
der Aus-Profil-Vorgang-Logik ist;
-
45 ein
Flußdiagramm
des Datenflusses eines eingehenden Pakets ist;
-
46 ein
Flußdiagramm
der Logik für
differenzierte Dienste ist; und
-
47 ein
Flußdiagramm
ist, das den Schritt 46-4 expandiert.
-
48 ist
ein Logikdiagramm, das zum Implementieren der risikofreien DDR-Vermittlung verwendet wird;
-
49 ist
ein Timing-Diagramm, das die entstehenden Kurvenformen des in 48 dargestellten Logikdiagramms
zeigt.
-
Die folgende Erörterung betrachtet unter Bezugnahme
auf die 1 bis 47 Hintergrundwissen, das beim
Verständnis
der vorliegenden Erfindung nützlich
sein wird.
-
Da die Computerleistung in den vergangenen
Jahren angestiegen ist, haben sich die Anforderungen an Computernetzwerke
signifikant erhöht;
schnellere Computerprozessoren und größere Speicherkapazitäten benötigen Netzwerke
mit hohen Bandbreitenkapazitäten,
um eine Hochgeschwindigkeitsübertragung
von umfangreichen Datenmengen zu ermöglichen. Die wohlbekannte Ethernet-Technologie,
die auf zahlreichen IEEE-Ethernet-Standards gegründet ist, ist ein Beispiel
einer Computernetzwerktechnologie, die modifiziert und verbessert
werden konnte, um eine überlebensfähige Computertechnolgie
zu bleiben. Eine vollständiger Erörterung
von Netzwerksystemen kann beispielsweise in SWITCHESS AND FAST Ethernet
von Breyer und Riley (Ziff-Davis, 1996) und zahlreichen IEEE-Veröffentlichungen
in Verbindung zu den IEEE-802-Standards gefunden werden. Auf der
Grundlage des Open Systems Interconnect (OSI)7-Schichten Referenzmodells, sind
die Netzwerkkapazitäten
durch die Entwicklung von Repeatern, Bridges, Routern und eher kürzlich Switchess
gewachsen, die mit verschiedenen Typen von Kommunikationsmedien
arbeiten. Thickwire, thinwire, twisted pair und optische Fasern
sind Beispiele von Medien, die für
Computernetzwerke verwendet worden sind. Switchess, insoweit sie
sich auf Computernetzwerke und Ethernet beziehen, sind hardwarebasierte
Einrichtungen, die den Fluß von
Datenpaketen oder Zellen auf der Grundlage einer Zieladressinformation
steuern, die in jedem Paket verfügbar
ist. Ein auf geeignete Weise konstruierter und implementierter Switch
sollte in der Lage sein, ein Paket zu empfangen und das Paket an
einen geeigneten Ausgangs-Port bei einer Geschwindigkeit zu vermitteln,
auf die als Leitungsgeschwindigkeit oder Kabelgeschwindigkeit Bezug
genommen wird, welches die höchste
Geschwindigkeitskapazität
des bestimmten Netzwerks ist. Die Kabelgeschwindigkeit von dem Basis-Ethernet
ist bis zu 10 Megabit pro Sekunde und die des Fast-Ethernet ist
bis zu 100 Megabit pro Sekunde. Gigabit-Ethernet ist in der Lage,
Daten über
ein Netzwerk bei einer Rate von bis zu 1000 Megabit pro Sekunde
zu übertragen.
Da die Geschwindigkeit sich erhöht,
sind die Konstruktionszwänge
und Konstruktionserfordernisse mehr und mehr komplex im Bezug auf
das Befolgen einer geeigneten Konstruktion und der Protokollregeln
und das Bereitstellen einer kommerziell funktionsfähigen Lösung bei
geringen Kosten geworden. Beispielsweise erfordert die Hochgeschwindigkeitsvermittlung
einen Hochgeschwindigkeitsspeicher, um geeignetes Puffern der Paketdaten
zur Verfügung
zu stellen; herkömmlicher
dynamischer Schreib-Lese-Speicher (DRAM) ist relativ langsam und
erfordert hardwaregetriebenen Refresh. Die Geschwindigkeit von DRAMs als
Pufferspeicher bei der Netzwerkvermittlung führt daher dazu, dass wertvolle
Zeit verloren wird und es nahezu unmöglich wird, den Switch oder
das Netzwerk bei Leitungsgeschwindigkeit zu betreiben. Weiterhin
sollte das Einbeziehen der externen CPU vermieden werden, da das
Einbeziehen der CPU es ebenso unmöglich macht, den Switch bei
Leitungsgeschwindigkeit zu betreiben. Da Netzwerk-Switches immer
komplizierter dahingehend geworden sind, dass sie Regeltabellen
und eine Speichersteuerung benötigen,
wird zusätzlich
eine komplexe Multichip-Lösung
benötigt,
welches eine Logikschaltung erfordert, auf die manchmal als Verbindungslogikschaltung
Bezug genommen wird, um den verschiedenen Chips die Kommunikation
untereinander zu ermöglichen.
Zusätzlich
sind Kosten-Nutzen-Kompromisse im Bezug auf teure aber schnelle
SRAMs gegenüber
billigen aber langsamen DRAMs notwendig. Weiterhin erfordern DRAMs
aufgrund deren dynamischer Natur das Refreshen der Speicherinhalte,
um deren Verlust zu vermeiden. SRAMs leiden nicht an dem Erfordernis
des Refresh und besitzen einen verringerten Betriebs-Overhead im
Vergleich zu den DRAMs, wie beispielsweise die Beseitigung von Seitenverlusten
usw. Auch wenn DRAMs eine geeignete Geschwindigkeit beim Zugriff
auf Bereiche auf der gleichen Seite besitzen, wird die Geschwindigkeit
verringert, wenn auf andere Seiten zugegriffen werden muss.
-
Unter Bezugnahme auf das zuvor erörterte OSI
7-Schichten Referenzmodell und wie es in 7 dargestellt ist, besitzen die höheren Schichten üblicherweise
mehr Informationen. Zahlreiche Typen von Produkten sind erhältlich,
um die vermittlungsbezogenen Funktionen bei verschiedenen Ebenen
des OSI-Modells durchzuführen.
Hubs oder Repeater arbeiten bei Layer 1 und kopieren und
senden eingehende Daten zu einer Mehrzahl von Speichen bzw. Zweigen
des Hubs. Vermittlungsbezogene Vorrichtungen bei Schicht zwei werden üblicherweise
als Multi-Port-Bridges bezeichnet und sind in der Lage, zwei getrennte
Netzwerke miteinander zu verbinden. Bridges können eine Tabelle von Weiterleitungsregeln
aufbauen, die darauf gründen,
welche MAC-(media access controller)-Adressen an welchen Ports der
Bridge existieren, und können
Pakte weiterleiten, die für
eine Adresse bestimmt sind, die auf einer entgegengesetzten Seite
der Bridge angeordnet sind. Bridges verwenden üblicherweise einen als überspannender-Baum-Alogrithmus
bekannten Algorithmus, um mögliche
Datenschleifen zu entfernen; eine Datenschleife ist eine Situation,
in der ein Paket bei der Suche nach einer bestimmte Adresse endlos
in einem Netzwerk Schleifen dreht. Der überspannende-Baum-Algorithmus
definiert ein Protokoll zum Verhindern von Datenschleifen. Schicht-3-Switches,
auf die manchmal als Router Bezug genommen wird, können Pakte
auf der Grundlage der Zielnetzwerkadresse weiterleiten. Schicht-3-Switches
sind in der Lage, Adressen zu lernen und Tabellen davon aufrecht
zu erhalten, die Port-Zuordnungen
entsprechen. Die Verarbeitungsgeschwindigkeit für Schicht-3-Switches kann verbessert
werden, indem spezialisierte Hochleistungshardware verwendet wird
und indem die Host-CPU ausgelagert wird, sodass Anweisungsentscheidungen
nicht die Weiterleitung von Paketen verzögern.
-
1 zeigt
eine Konfiguration, in der ein Switch-On-Chip (SOC) 10 funktional
an externe Einrichtungen 11, einem externen Speicher 12,
Fast-Ethernet-Ports 13 und Gigabit-Ethernet-Ports 15 gekoppelt
ist. Die Fast-Ethernet-Ports 13 werden als langsame Ethernet-Ports
betrachtet, da sie in der Lage sind, bei Geschwindigkeiten zwischen
10 Megabit pro Sekunde und 100 Megabit pro Sekunde zu funktionieren,
wohingegen die Gigabit-Ethernet-Ports 15, die schnelle
Ethernet-Ports sind, in der Lage sind, bei 1000 Megabit pro Sekunde zu funktionieren.
Externe Einrichtungen 11 können andere Vermittlungseinrichtungen
zum Ausdehnen der Vermittlungsfähigkeiten
oder andere Einrichtungen sein, die von einer besonderen Anwendung
erfordert werden. Der externe Speicher 12 ist zusätzlicher
Off-Chip-Speicher,
welches zusätzlich
zu einem internen Speicher ist, der auf dem SOC 10 angeordnet
ist, wie es nachstehend erörtert
wird. Die CPU 52 kann nach Notwendigkeit verwendet werden,
um das SOC 10 mit Regeln zu programmieren, die zur Steuerung
der Paketverarbeitung geeignet sind.
-
Sobald jedoch das SOC 10 geeignet
programmiert oder konfiguriert ist, arbeitet das SOC 10 soweit
es geht auf eine frei laufende Weise, ohne mit der CPU 52 zu
kommunizieren. Da die CPU 52 nicht jeden Aspekt des Betriebs
des SOCs 10 steuert, sind die Leistungsanforderungen an
die CPU 52 wenigstens im Bezug auf das SOC 10 ziemlich
niedrig. Eine leistungsschwächere
und daher günstigere
CPU 52 kann daher im Vergleich zu bekannten Netzwerk-Switchess
verwendet werden. Wie es ebenso nachstehend erörtert werden wird, benutzt
das SOC 10 externen Speicher 12 auf eine effiziente
Weise, sodass die Anforderungen an die Kosten und die Leistung des
Speichers 12 verringert werden können. Der interne Speicher
auf dem SOC 10 ist, wie es nachstehend erörtert werden
wird, ebenso zur Maximierung des Vermittlungsdurchsatzes und zur
Minimierung der Kosten konfiguriert.
-
Es soll angemerkt werden, dass jede
beliebige Anzahl von Fast-Ethernet-Ports 13 und Gigabit-Ethernet-Ports 15 bereitgestellt
werden können.
In einem Ausführungsbeispiel
kann ein Maximum von 24 Fast-Ethernet-Ports 13 und 2 Gigabit-Ports 15 bereitgestellt
werden. Auf ähnliche
Weise können
zusätzliche Zwischenverbindungen
zu zusätzlichen
externen Einrichtungen 11, externem Speicher 12 und CPUs 52 nach Notwendigkeit
bereitgestellt werden.
-
Die 1 zeigt
ebenso, dass das SOC 10 zahlreiche interne modulare Komponenten
beinhaltet, wie beispielsweise wenigstens einen Ethernet-Port-Schnittstellen-Controller
(EPIC) 20, von denen mehrere als 20a, 20b,... 20x bezeichnet
werden, eine Mehrzahl von Gigabit-Port-Schnittstellen-Controller
(GPIC) 30, auf die hier als 30a, 30b,... 30x Bezug
genommen wird, einen Internet-Port-Schnittstellen-Controller (IPIC) 90,
einen gemeinsamen Puffer-Pool (CBP) 50, eine Speicher-Management-Einheit
(MMU) 70 und einen CPU-Management-Schnittstellen-Controller
(CMIC) 40. Der CPS-Kanal 80 verläuft durch
das SOC 10 und ermöglicht die
Kommunikation zwischen den modularen Elementen des SOC 10.
-
Die 2 zeigt
ein detaillierteres Blockdiagramm der Funktionselemente des SOG 10.
Wie aus 2 ersichtlich
ist und wie oben bemerkt worden ist, beinhaltet das SOC 10 eine
Mehrzahl von modularen Systemen auf dem Chip, wobei jedes modulare
System funktionell von den anderen modularen Systemen getrennt ist,
auch wenn es auf dem gleichen Chip ist. Daher kann jedes Modul effizient
parallel mit den anderen Modulen arbeiten und ermöglicht diese
Konfiguration ein beträchtliches
Maß an
Freiheit beim Aktualisieren und Verändern der Konstruktion des
SOC 10.
-
Das SOC 10 beinhaltet eine
Mehrzahl von Ethernet-Port-Schnittstellen-Controllern 20a, 20b, 20c,
etc., eine Mehrzahl von Gigabit-Port-Schnittstellen-Controllern 30a, 30b,
usw., einen CPU-Management-Schnittstellen-Controller 40,
einen gemeinsamen Pufferspeicherpool 50, eine Speichermanagementeinheit 70 einschließlich eines
gemeinsamen Puffermanagers CBM (71) und eine systemweite
Bus-Struktur, auf die als CPS-Kanal 80 Bezug genommen wird.
Die MMU 70 kommuniziert mit dem externen Speicher 12,
welcher einen externen Globel-Puffer-Speicher-Pool (GBP) 60 umfasst.
Der CPS-Kanal 80 umfasst einen C-Kanal 81, einen
P-Kanal 82 und einen S-Kanal 83. Auf dem CPS-Kanal
wird ebenso als Zellen-Protokoll-Seitenwand-Kanal
Bezug genommen und ist ein 70 Gigabit pro Sekunde/Kanal, der die
verschiedenen Module miteinander verbindet bzw. ankoppelt. Wie es
ebenso in 2 dargestellt
ist, ist ebenso ein Internet-Port-Schnittstellen-Controller (IPIC) 90 umfasst,
der eine Mehrzahl von Tabellen 91 und einen Netzwerk-Puffer-Pool
(NBP) 92 darauf aufweist. Ebenso ist in dem IPIC 90 wie
später
erörtert
eine Mehrzahl von Komponenten beinhaltet, die der Befähigung des
IPIC 90 zugeordnet sind, mit anderen Switchess oder anderen
Komponenten durch eine Hochgeschwindigkeitsschnittstelle zu kommunizieren.
Der IPIC 90 ermöglicht
die Erzeugung von hocheffizienten Stapelkonfigurationen.
-
Wie nachstehend erörtert werden
wird, ist jeder EPIC 20a, 20b und 20c,
auf dem im gemeinen als EPIC 20 Bezug genommen wird und
der GPIC 30a und 30b, auf die im allgemeinen als
GPIC 30 Bezug genommen wird, eng verknüpft mit geeigneter Adress-Auflösungs-Logik
und Layer-3-Vermittlungstabellen 21a, 21b, 21c, 31a und 31b,
Regeltabellen 22a, 22b, 22c, 31a und 31b und
VLAN-Tabellen 23a, 23b, 23c, 31a, 31b.
Auf diese Tabellen wird im allgemeinen als 21, 31, 22, 32, 23 bzw. 33 Bezug
genommen. Diese Tabellen sind wie andere Tabellen auf dem SOC 10 in
Silicium als zwei dimensionale x-mal- y-Arrays implementiert, wobei
jedes Array (x–y)
Speicherablageorte darauf aufweist.
-
In einer beispielhaften Ausführungsform
unterstützt
jeder IPIC 20 acht Fast-Ethernet-Ports 13 und
vermittelt Pakete zu und/oder von diesen Ports nach Notwendigkeit.
Die Ports sind daher an das Netzwerkmedium angeschlossen (koaxial,
twisted-pair, Faser, usw.), wobei bekannte Medienverbindungstechnologie
angewendet wird, und kommunizieren mit dem CPS-Kanal 80 an
dessen anderer Seite. Die Schnittstelle von jedem EPIC 20 zu
dem Netzwerkmedium kann über
eine interne Reduced-Media-Schnittstelle (RMII) bereitgestellt werden,
die die direkte Medienverbindung zum SOC 10 ermöglicht.
Wie es im Stand der Technik bekannt ist, ist die Selbstauswahl ein
Aspekt von Fast-Ethernet, bei dem das Netzwerk in der Lage ist,
die höchste
Kommunikationsgeschwindigkeit zwischen einer Quelle und einem Ziel
auf der Grundlage der Fähigkeiten
der entsprechenden Vorrichtungen auszuwählen. Die Kommunikationsgeschwindigkeit
kann wie zuvor erwähnt
zwischen 10 Megabit pro Sekunde und 100 Megabit pro Sekunde variieren;
die Fähigkeit
zur Selbstauswahl ist daher direkt in jedes EPIC-Modul eingebaut.
Die Adressauflösungslogik
(ARL) und die Schicht-3-Tabellen (ARL/L3) 21a, 21b, 21c,
die Regeltabellen 22a, 22b und 22c und
die VLAN-Tabellen 23a, 23b und 23c sind so
konfiguriert, dass sie Teil von oder Schnittstelle zu dem zugeordneten
EPIC in einer effizienten und zweckmäßigen Weise sind und ebenso
Paketfluß bei
Leitungsgeschwindigkeit unterstützen.
-
Jeder EPIC 20 besitzt getrennte
Eingangs- und Ausgangsfunktionen. Auf der Eingangsseite kann selbstinitiiertes
und CPU-initiiertes Lernen der Ebene-2-Adressinformation auftreten.
Die Adressauflösungslogik
(ARL) wird zur Unterstützung
dieser Aufgabe verwendet. Die Adressalterung ist als ein Merkmal
eingebaut, um die Speicherung von Adressinformationen zu verhindern,
die nicht mehr länger
gültig
oder nützlich
sind. Der EPIC 20 führt
ebenso Ebene-2-Spiegeln durch, ein schneller Filterprozessor (FFP) 141 (vgl. 14) ist in jedem EPIC und
GPIC eingefügt,
um die Weiterleitung der Pakete zu beschleunigen und den Paketfluß zu verbessern.
Die Eingangsseite von jedem EPIC und GPIC, die in 8 als Eingangs-Submodul 14 dargestellt
ist, besitzt ein beträchtliches
Maß an
Komplexität,
um in der Lage zu sein, eine beträchtliche Anzahl von verschiedenen
Typen von Paketen geeignet zu verarbeiten, die an dem Port eingehen,
um bei Leitungsgeschwindigkeit zu Puffern und dann auf geeignete
Weise zu dem Ausgang zu übertragen.
Funktionell weist jeder Port auf jedem Modul des SOC 10 ein
getrenntes Eingangs-Submodul 14 auf, das diesem zugeordnet
ist. Aus der Perspektive der Implementierung jedoch werden, um das
Ausmaß an
auf dem Single-Chip-SOC 10 implementierter Hardware zu
minimieren, gemeinsame Hardware-Elemente auf dem Silicium verwendet,
um eine Mehrzahl von Eingangs-Sub-Modulen auf jedem bestimmten Modul zu
implementieren. Die Konfiguration des SOC 10, die hier
erörtert
wird, ermöglicht
Look-Up-Vorgänge
und Filtern gleichzeitig, und ermöglicht daher die Verarbeitung
von bis zu 6,6 Millionen Paketen pro Sekunde. Schicht-2-Look-Up-Vorgänge, Schicht-3-Look-Up-Vorgänge und
das Filtern geschehen gleichzeitig, um dieses Ausmaß an Leistung
zu erzielen. Auf der Ausgangsseite ist der EPIC in der Lage, Paket-Polling zu unterstützen, das
entweder als Ausgangsmanagement oder als Klasse-von-Diensten-(COS)-Funktion
basiert ist. Es kann das Rerouting/die zeitliche Planung der zu übermittelnden
Pakete vorgenommen werden, genauso wie die Mitteilung einer Head-Of-Line-(HOL)-Blockierung,
die Paketalterung, das Wiederzusammensetzen von Zellen und andere
Funktionen, die mit der Ethernet-Port-Schnittstelle zusammen hängen.
-
Jeder GPIC 30 ist ähnlich zu
jedem EPIC 20, aber unterstützt nur einen Gigabit-Ethernet-Port und verwendet
eine port-spezifische ARL Tabelle anstelle der Verwendung einer
ARL Tabelle, die mit anderen Ports geteilt wird. Zusätzlich ist
jeder GPIC-Port im Gegensatz zu einem RMII mit dem Netzwerkmedium
unter Verwendung einer unabhängigen
Gigabit-Medium-Schnittstelle
(GMII) verbunden.
-
Der CMIC 40 arbeitet als
Gateway zwischen dem SOC 10 und der Host-CPU. Die Kommunikation kann
beispielsweise entlang eines PCI-Buses oder eines anderen akzeptierbaren
Kommunikationsbuses sein. Der CMIC 40 kann sequenzielle
direkt zugeordnete Zugriffe zwischen der Host-CPU 52 und
dem SOC 10 bereitstellen. Die CPU 52 ist über den
CMIC 40 in der Lage, auf zahlreiche Resourcen auf dem SOC 10 zuzugreifen,
einschließlich
MIB-Zählern,
programmierbaren Registern, Status- und Steuerregistern, Konfigurationsregistern,
ARL-Tabellen, port-basierten VLAN-Tabellen, IEEE 802.1q-VLAN-Tabellen, Schicht-3-Tabellen, Regeltabellen,
CBP-Adress- und Datenspeicher sowie GBP-Adress- und Datenspeicher. Optional
kann der CMIC 40 eine DMA-Unterstützung, eine DMA-Verkettung
und -Zerstreuen/-Sammeln, sowie Master- und Ziel-PCI 64.
-
Der gemeinsame Pufferspeicherpool
oder CBP 50 kann als On-Chip-Datenspeicher betrachtet werden.
Der CBP 50 ist ein Ebene-1-Hochgeschwindigkeitsspeicher
des Typs SRAM, um die Leistung zu maximieren und die Anforderungen
an den Hardware-Overhead zu minimieren. Die CBP 50 kann
beispielsweise eine Größe von 720
Kilobyte aufweisen und bei einer Geschwindigkeit von 132 MHZ funktionieren.
Die in dem CBP 50 gespeicherten Pakete sind üblicherweise
als Reihen von verketteten Zellen, anstelle von Paketen, gespeichert.
Die Pakete werden innerhalb des SOC 10 als Zellen gespeichert
und verschoben und als Pakete wieder zusammengefügt, bevor sie an geeignete
Ausgangsports ausgesendet werden. Wie in der Figur dargestellt ist,
beinhaltet die MMU 70 ebenso den gemeinsamen Puffer-Manager
(CBM) 71 darauf. Der CBM 71 behandelt das Schlangen-Managmement und ist
verantwortlich für
die Zuordnung von Zellen-Zeigern für eingehende Zellen, genauso
wie das Zuordnen von gemeinsamen Paket-Ids (CPIDs) sobald das Paket
vollständig
in den CBP geschrieben ist. Der CBM 71 behandelt ebenso
das Management von einem freien Adresszeigerpool auf dem Chip, kann
aktuelle Datentransfer zu und von dem Datenpool steuern und kann
das Management des Speicherbudgets zur Verfügung stellen.
-
Der globale Speicherpufferpool oder
GBP 60 arbeitet als Ebene-2-Speicher und kann auf dem Chip oder
außerhalb
des Chips angeordnet sein. Der GBP 60 ist außerhalb
des Chips in Bezug auf das SOC 10 angeordnet. Wenn er außerhalb
des Chips angeordnet ist, wird der GBP 60 als Teil des
gesamten externen Speicher 12 angesehen. Als Ebene-2-Speicher
muss der GBP nicht ein teuerer Hochgeschwindigkeits-SRAM sein und
kann ein langsamerer kostengünstiger
Speicher wie beispielsweise DRAM sein. Der GBP ist eng mit der MMU 70 gekoppelt
und arbeitet ähnlich
zu der GBP dahingehend, dass Pakete als Zellen gespeichert werden.
Zum Senden und Mehrfachsenden von Nachrichten, wird nur eine Kopie
des Pakets in dem GBP 60 gespeichert.
-
Wie in den Figuren dargestellt ist,
ist die MMU 70 zwischen dem GBP 60 und dem CPS-Kanal 80 angeordnet
und wirkt als Schnittstelle des externen Speichers. Um die Verwendung
des Speichers zu optimieren, beinhaltet die MMU 70 mehrfache
Lese- und Schreibpuffer und unterstützt zahlreiche Funktionen einschließlich des
globalen Schlangen-Managements, welches allgemein die Zuordnung
von Zellenzeigern für
umgeleitete eingehende Pakete die Wartung der globalen FAP, das
zeitoptimierte Zellenmanagement, das globale Speicherbudgetmanagement,
die GPID-Zuordnung und die Ausgangsmanagerbenachrichtigung, das
Schreibpuffermanagement, das Lesen von Vorabrufen auf der Grundlage
des Ausgangsmanagers/der Art von Dienstanforderungen und die Smart-Speicher-Steuerung
umfassen.
-
Wie in 2 dargestellt ist, besteht der CPS-Kanal 80 derzeit
aus drei getrennten Kanälen,
auf die als C-Kanal, P-Kanal und S-Kanal Bezug genommen wird. Der
C-Kanal ist 128 Bit breit und läuft
bei 132 MHZ. Der Pakettransport zwischen Ports geschieht auf dem
C-Kanal. Nachdem dieser Kanal nur für den Datentransfer verwendet
wird, gibt es keinen Overhead, der mit seiner Benutzung in Beziehung
steht. Der P-Kanal oder Protokoll-Kanal ist synchron oder mit dem
C-Kanal gerastet. Während
der Zellentransfers wird der Nachrichten-Header über den P-Kanal mittels der
MMU geschickt. Der P-Kanal ist 64 Bit breit und läuft bei
132 MHZ.
-
Der S- oder Seitenbandkanal läuft bei
132 MHZ und ist 32 Bit breit. Der S-Kanal wird für Funktionen verwendet, wie
beispielsweise zum Überbringen
des Port-Verbindungs-Status zum Empfangen des Signals Port-voll,
der Port-Statistiken, der ARL-Tabellen-Synchronisation, Speicher- und Registerzugriff
zur CPU und anderen CPU-Management-Funktionen, und dem Signal globaler-Speicher-voll
und gemeinsamer-Speicher-voll.
-
Ein geeignetes Verständnis des
Betriebs des SOC 10 erfordert ein geeignetes Verständnis des
Betriebs des CPS-Kanals 80. Unter Bezugnahme auf 3 kann ersehen werden,
dass in dem SOC 10 an dem Eingang Pakete, die an dem EPIC
oder GPIC ankommen, von der EPIC 20 oder dem GPIC 30 in
64-Byte-Zellen unterteilt werden. Die Verwendung von Zellen auf
dem Chip anstelle von Paketen erleichtert es, das SOC so anzupassen,
dass es mit zell-basierten Protokollen arbeitet, wie beispielsweise
der asynchrone Transfermodus (ATM). Derzeit verwendet ATM jedoch
Zellen, die 53 Byte lang sind, wobei 58 Byte für die Nutzdaten und 5 Byte
für den
Header sind. In dem SOC werden eingehende Pakete in Zellen unterteilt,
die 64 Byte lang sind, wie es oben erörtert worden ist, und die Zellen
werden weiterhin in 4 separate 16 Byte Zellbläcke Cn0... Cn3 unterteilt.
Mit dem C-Kanal gerastet ist der P-Kanal, der den Betriebs-Code
synchronisiert mit Cn0 rastet. Ein Port-Bitmap wird in dem P-Kanal während der
Phase Cn1 eingefügt.
Das unmarkierte Bitmap wird in den P-Kanal während der Phase Cn2 eingeführt und
ein Zeitstempel wird auf dem P-Kanal in Cn3 angeordnet. Unabhängig von
Vorgängen
auf dem C- und P-Kanal wird der S-Kanal als Seitenband verwendet
und ist daher von den Aktivitäten
auf dem C- und P-Kanal entkoppelt.
-
Der IPIC 90 kommuniziert
mit dem CPS-Kanal 80 und funktioniert im wesentlichen wie
ein Port. Pakete, die in den IPIC von außerhalb des SOC 10 kommen,
kommen entweder von einem anderen IPIC-Modul von einem anderen SOC 10 kommen
oder von anderen Verbindungen über
eine Hochleistungsschnittstelle. Der IPIC ist daher von einem EPIC-Modul 20 unterscheidbar,
da jeder EPIC üblicherweise
eine Mehrzahl von Ports aufweist, wohingegen der IPIC einen einzigen
Port hat. Wie detaillierter erörtert
werden wird, beinhaltet der IPIC einen internen Speicherpuffer,
der Netzwerkpufferpool oder NBP genannt wird, und der in den 1 und 2 als NBP 92 dargestellt ist.
Der IPIC 90 beinhaltet ebenso eine Mehrzahl von Tabellen
91 zum Bearbeiten der Pakete, wie beispielsweise eine VLAN-Tabelle
802.1q, Trunkierungstabellen usw.. Der IPIC 90 hat keine ARL-Tabellen,
da die Zielportnummer in dem Modul-Header verfügbar ist. Pakete, die im SOC 10 über entweder
einen EPIC 20 oder einen GPIC 30 eingehen und
für den
IPIC 90 bestimmt sind, werden nicht in dem CBP oder GBP
gespeichert, sondern werden stattdessen zu dem NBP 92 innerhalb
des IPIC 90 selbst geleitet und dort gespeichert.
-
Zelle oder
C-Kanal
-
Die Entscheidungen für den CPS-Kanal
geschehen außerhalb
des Bandes. Jedes Modul (EPIC, GPIC, IPIC, usw.) überwacht
den Kanal und das Zuordnen von Zielports entspricht den geeigneten
Transaktionen. Der Entscheidungsvorgang für den C-Kanal ist ein Round-Robin-Entscheidungsmechanismus
mit Anforderungspriorität.
Wenn keine Anforderungen aktiv sind, kann jedoch das Default-Modul,
das während
der Konfiguration des SOC 10 ausgewählt werden kann, auf dem Kanal
parken und vollständigen
Zugriff darauf haben. Wenn alle Anfragen aktive sind, ist die Konfiguration
des SOC 10 so, dass der MMU jedem anderen Zellzyklus Zugriff
gewährt
wird, und der EPIC 20, der GPIC 30 und der IPIC 90 gleichen
Zugriff auf den C-Kanal auf einer Round-Robin-Basis teilen. Die 4A und 4B zeigen einen Entscheidungsmechanismus
für den C-Kanal,
bei dem der Bereich A die MMU ist und der Bereich B aus zwei GPICs,
drei EPICs und einem IPIC besteht. Die Teile wechseln den Zugriff
ab und da die MMU das einzige Modul in dem Bereich A ist, gewinnt er
jeden anderen Zykluszugriff. Die Module im Bereich B erhalten Zugriff
auf einer Round-Robin-Basis,
wie zuvor ausgeführt.
-
Das Entscheidungsschema für den C-Kanal 81,
lautet Round-Robin mit Anforderungspriorität, wie es zuvor erörtert worden
ist und in den 4A und 4B gezeigt ist. Jedes I/O-Modul,
EPIC 20, GPIC 30, CMIC 40 und IPIC 90 neben
der MMU 70 können
eine Anforderung für
Zugriff auf den C-Kanal auslösen.
Wenn keine Anforderungen zu keiner beliebigen gegebenen Zeit herrschen,
bekommt das Default-Modul, das mit einer hohen Priorität ausgestattet
worden ist, vollständigen
Zugriff auf den C-Kanal 81. Wenn ein beliebiges einzelnes I/O-Modul
oder die MMU 70 Zugriff auf den C-Kanal 81 anfordert,
bekommt das einzelne Modul auf Anfrage Zugriff auf den C-Kanal 81.
-
Wenn die EPIC-Module 20a, 20b, 20c und
die GPIC-Module 30a und 30b, der IPIC 90 und
der der CMIC 40 gleichzeitig Zugriff auf den C-Kanal anfordern,
wird der Zugriff in der Art eines Round-Robin gewährt. Für einen
bestimmten Entscheidungszeitraum würde jedem der I/O-Module Zugriff
auf den C-Kanal 81 gewährt werden.
Beispielsweise würde
jedem GPIC-Modul 30a und 30b Zugriff
gewährt
werden, gefolgt von den EPIC-Modulen und schließlich von der CMIC 40.
Nach jedem Entscheidungszeitraum würde dem nächsten I/O-Modul mit einer
gültigen
Anforderung der Zugriff auf den C-Kanal 81 gegeben werden.
Dieses Muster würde
so lange fortfahren, wie die I/O-Module eine aktive Anforderung
auf Zugriff auf den C-Kanal 81 liefern.
-
Protokoll
oder P-Kanal
-
Unter Bezugnahme noch einmal auf
den Protokoll- oder P-Kanal können
eine Mehrzahl von Nachrichten auf dem P-Kanal angeordnet werden,
um auf geeignete Weise den Datenstrom zu leiten, der auf dem C-Kanal
fließt.
Da der P-Kanal 82 64 Bit breit ist und eine Nachricht üblicherweise
128 Bit erfordert, sind zwei kleinere 64-Bit-Nachrichten zusammengefügt, um eine
komplette P-Kanal-Nachricht zu bilden. Die folgende Liste zeigt
die Felder, die Funktion und die verschiedenen Bit-Zähler der
128 Bit-Nachricht auf dem Bit-Kanal an.
IP/IPX-Bits – 2 Bit
lang – IP/IPX-Bits – Enthalten
Informationen über
den Pakettyp. Wert 0 ist L2-geschaltetes Paket. Wert 1 – das Paket
ist ein IP-geschaltetes Paket. Wert 2 – das Paket ist ein IPX-geschaltetes
Paket. Wert 3 – das
Paket ist ein IP-Multicast-Paket.
Nächste Zelle – 2 Bit
lang – Nächste Zelle
hat das einzige Erfordernis, den Zellen-Header zu erfüllen: Wert
01 – wenn
die gültigen
Bytes in dieser Zelle zwischen 1 und 16 liegen. Wert 02 – wenn die
gültigen
Bytes in dieser Zelle zwischen 17 und 32 sind. Wert 03 – wenn die
gültigen
Bytes in dieser Zelle zwischen 33 und 48 sind. Wert 00 – wenn die
gültigen
Bytes in dieser Zelle zwischen 49 und 64 sind. Für die erste Zelle sind alle
vier Zyklen gültig.
Quell-Ziel-Port – 6 Bit
lang – Die
Port Nummer, die die Nachricht sendet oder die Nachricht empfängt. Die
Auslegung der Quelle oder des Ziels hängt von dem Betriebs-Code ab.
Cos – 3 Bit
lang – COS – Art des
Dienstes für
dieses Paket.
-
J Bit – 1 Bit lang – J Bit
in der Nachricht identifiziert, dass das Paket ein Jumbo-Paket ist.
S
Bit – 1
Bit lang – S
Bit wird verwendet, um anzuzeigen, dass dieses die erste Zelle des
Pakets ist. Wenn S Bit gesetzt ist, sind alle vier Zyklen gültig.
E
Bit – 1
Bit lang – E
Bit wird verwendet, um anzuzeigen, dass dieses die letzte Zelle
des Pakets ist. Wenn das E Bit gesetzt ist, enthält das Längenfeld die Anzahl der gültigen Bytes
bei der Übertragung.
CRC
Bits – 2
Bit Lang – Wert
0x01 – ist
Zusatz zum CRC Bit. Wenn es gesetzt ist, sollte der Ausgangsport
das CRC zu dem Paket anhängen.
Wert 0x02 – ist
das Regenerations-CRC-Bit.
Wenn dieses Bit gesetzt ist, sollte der Ausgangsport das CRC regenerieren.
Wert 0x00 – keine
Veränderung
beim CRC. Wert 0x03 – nicht
verwendet.
P Bit – 1
Bit lang – Wenn
dieses Bit gesetzt ist, sollte die MMU das gesamte Paket entfernen.
Len – 7 Bit
lang – Die
Len-Bits werden verwendet, um die gültige Anzahl von Bytes bei
dieser Übertragung anzuzeigen.
Dieses Feld ist für
jede Zelle gültig.
O
Bits – 2
Bit lang – Optimierungsbits
werden für
die CPU bereitgestellt, sodass diese das Paket effizienter verarbeiten
kann. Wert 0 – nicht
verwendet. Wert 1 – wird
gesetzt, wenn das Paket zu der CPU als Ergebnis gesendet wird, dass
das C-Bit in der Default-Router-Tabelle
gesetzt ist. Wert 2 – fehlende Übereinstimmung des
Frame-Typs – wenn
dieses Bit gesetzt ist, stimmt der IPX-Frame-Pakettyp nicht mit
dem Pakettyp in der IPX-L3-Tabelle überein. Wert 3 – reserviert.
Bx/Mx
Bitmap – 31
Bit lang – Sende-
und Multicast-Bitmap. Dieses Feld identifiziert alle Ausgangsports,
an die die Pakete gesendet werden sollen.
Unmarkierte Bits/Quellport
(bit 0..5) – 31/5
Bit lang. Wenn der Betriebs-Code 0x02 ist, d. h. das Paket wird
von dem Port zur MMU übertragen,
dann wird dieses Feld als nicht markiertes Bitmap interpretiert.
Aber wenn der Betriebs-Code 0x01 ist, d. h., dass das Paket von
der MMU zum Ausgangsport überfragen
wird, dann werden die letzten sechs Bit dieses Feldes als Quell-Port-Feld
interpretiert. Unmarkierte Bits – diese Bits identifizieren alle
Ausgangsports, welche anzunehmenderweise den Markierungs-Header
entfernen.
Quellport (Bit 0..5) – die Quell-Port-Nummer, d.
h. die Port-Nummer, an den das Paket in den Switch gelangt ist.
U
Bit – 1
Bit lang – U
Bit – Dieses
Feld besitzt nur eine Bedeutung, wenn der Betriebs-Code 0x01 ist,
d. h. das Paket wird von der MMU zum Ausgang übertragen. Wenn dieses Bit
gesetzt ist, dann soll das Paket aus dem Port als nicht markiert
ausgehen, d. h. die MAC muss die Markierung entfernen.
Zeitstempel – 14 Bit
lang – Der
Zeitstempel ist ein 14 Bit breiter, laufender Zähler, den das System in dieses Feld
packt, wenn das Paket ankommt. Der Zeitstempel wird mit der Auflösung von
einer Mikrosekunde implementiert.
Vlan Id – 12 Bit lang – VLAN-Identifizierer.
Anmerkung: Bei Orion-SA werden alle Pakete auf dem CP-Kanal als
markierte Pakete übertragen,
d. h., die VLAN Id wird mit dem Paket geschickt, wohingegen in dem
Orion-SM die VLAN Id auf dem P-Kanal weitergeleitet wird. Das bedeutet,
dass jedes Paket (nicht markiert oder markiert) so wie es ist auf
den Zellkanal geht.
Übereinstimmende
Filter – 4
Bit lang – Regeln
für übereinstimmende
Filter – Dieses
Feld identifiziert das übereinstimmende
Filter, wenn das Paket zu der CPU als Ergebnis einer Filterübereinstimmung
gehen soll. Dieses Feld ist nur gültig, wenn das Bit 0 des CPU-Betriebscodes gesetzt
ist. Wenn das MSB (Bit 4) 0 ist, dann ist es Filtersatz 1, aber
wenn das MSB (Bit 4) 1 ist, dann ist es der Filtersatz 2.
CPU
Betriebscodes – 18
Bit lang – CPU
Betriebscodes: Wir haben diese Bits zum effizienten Verarbeiten
des Pakets durch die CPU zur Verfügung gestellt. Diese Bits werden
gesetzt, wenn das Paket aus verschiedenen Gründen zu der CPU geschickt wird.
Die folgenden Betriebscodes sind definiert: Bit 0 – Filterübereinstimmungsbit – Dieses
Bit wird als Ergebnis einer Filterübereinstimmung gesetzt und
eine der Aktionen des Filters ist es, das Paket zu der CPU zu senden.
Bit 1 – Dieses
Bit wird gesetzt wenn 1) das CPU-Lern-Bit in der portbasierten VLAN-Tabelle
gesetzt ist und die Quell-MAC-Adresse in der ARL-Tabelle gelernt ist oder 2) das CM Bit
in der PVLAN-Tabelle gesetzt ist und es ein SLF ist oder 3) die
eingehende VLAN Id nicht in der 802.1Q VLAN-Tabelle gefunden worden
ist. Bit 2 – Dieses
Bit ist gesetzt, wenn das Quellroutingbit Bit 40 der Quell-MAC-Adresse
ist. Bit 3 – dieses
Bit wird gesetzt, wenn 1) es ein Ziel-Look-Up-Fehler ist oder 2)
es eine L3-Stations- Bewegung
gibt. Bit 4 – Steuerframe
Bit; dieses Bit ist gesetzt, wenn das Paket ein BPDU, GVRP, GMRP
ist oder eine der reservierten Adressen. Bit 5 – IP-Paket-Bit – Dieses
Bit ist gesetzt, wenn das Paket IP-geschaltet werden muß. Bit 6 – IPX-Paket-Bit – Dieses
Bit ist gesetzt, wenn Paket IPX-geschaltet werden muß. Bit 7 – IP-Optionen-Vorhanden-Bit – Dieses
Bit ist gesetzt, wenn die IP-Optionen vorhanden sind. Bit 8 – Dieses
Bit ist gesetzt, wenn das Paket ein Klasse-D-IP-Multicast-Paket
ist. Bit 9 – Dieses
Bit ist gesetzt, wenn die TTL nach der Decrementierung 0 oder weniger
ist. Bit 10 – Sendebit – Wenn dieses
Bit gesetzt ist, dann ist das Paket ein Sende-Paket. Bit 11 – Multicast-Paket – Dieses
Bit ist gesetzt, wenn das Paket ein Multicast-Paket ist.
Neue-IP-Prüfsumme – 16 Bit
lang – Neue-IP-Prüfsumme – Diese
Feld wird nur für
Ebene-3-vermittelte-IP-Multicast-Pakete verwendet. Dieses Feld enthält die neue
IP-Prüfsumme,
die beim Eingang nach dem Dekrementieren des TTL-Feldes berechnet
wird.
L3-Port-Bitmap – 31
Bit lang – L3
Port-Bitmap – identifiziert
alle L3-vermittelten Ports für
ein IP-Multicast-Paket.
-
MODULSPEZIFISCHE FELDER
-
- C Bit – 1
Bit lang – Steuerbit – Das Steuerbit
zeigt an, ob dies ein Steuerframe oder ein Datenframe ist. Das Bit
ist für
einen Steuerframe zu 1 gesetzt und für einen Datenframe zu 0 gesetzt.
- Mod Betriebscodes – 3
Bit lang – Mod
Betriebscodes – werden
verwendet um den Pakettyp zu identifizieren. Wert 00 – identifiziert,
dass das Paket ein Paket mit einem einzigen Adressaten ist und der
Ausgangsport einzig von dem Modul-Id-Bitmap (in diesem Feld wird
nur ein Bit gesetzt) und der Ausgangs-Port-Nummer identifiziert wird.
Wert 01 – identifiziert,
dass das Paket ein Sendungs- oder Ziel-Look-Up-Fehler (DLF) ist
und an mehrfache Ports auf dem gleichen Modul oder mehrfache Ports
auf verschiedenen Modulen adressiert ist. Der Ausgangsport ist in
diesem Fall kein gültiges
Feld. Wert 02 – identifiziert,
dass das Paket ein Multicast-Paket ist und an mehrfache Ports adressiert
ist. Wert 03 – identifiziert,
dass das Paket ein IP-Multicast-Paket ist und an mehrfache Ports
adressiert ist.
- TGID – 3
Bit lang – TGID
Bits – TGID
identifiziert den Trunk-Gruppen-Identifizierer des Quellports. Dieses
Feld ist nur gültig,
wenn T Bit gesetzt ist.
- T – 1
Bit lang – Wenn
dieses Bit gesetzt ist, ist TGID ein gültiges Feld.
- MT-Modul-Id – 5
Bit lang – MT-Modul-Id
ist die „gespiegelt
zu"-Modul-Id. Dieses
Feld wird verwendet, um das Paket an einen gespiegelten Port zu
schicken, der auf einem entfernten Modul angeordnet ist. Diese Feld
ist nur gültig,
wenn M-Bit gesetzt ist.
- M Bit – 1
Bit lang – M
Bit – Wenn
dieses Bit gesetzt ist, ist die MT-Modul-Id ein gültiges Feld.
- Entfernter Port – 6
Bit lang – Entfernter
Port ist die Portnummer des entfernten Moduls, welches anzunehmender
Weise dieses Paket empfängt.
- Quellport – 6
Bit lang – Quellport
ist der Quellport des Pakets.
- PFM Bits – 2
Bit lang – PFM
Bits ist der Port-Filter-Modus des Quellports. Diese Bits sind nur
gültig
für Multicast-Pakete.
- Mod Id Bitmap – 32
Bit lang – Das
Bitmap aller Module, die dieses Paket bekommen sollen.
-
Das Betriebscodefeld der P-Kanal-Nachrichten
definiert den Typ der aktuell gesendeten Nachricht. Während der
Betriebscode derzeit so dargestellt ist, als ob er eine Breite von
2 Bit hat, kann das Betriebscodefeld wie gewünscht erweitert werden, um
neue Arten von Nachrichten in der Zukunft definieren zu können. Der
oben definierte P-Kanal-Nachrichten-Typ ist jedoch graphisch in 5 dargestellt.
-
Eine frühe Abbruch-Nachricht wird verwendet,
um dem CBM 71 anzuzeigen, dass das aktuelle Paket abzuschließen ist.
Während
des Betriebs, wie es nachstehend detailliert erörtert werden wird, ist das
Statusbit (S)-Feld in der Nachricht gesetzt, um den Wunsch anzuzeigen,
das aktuelle Paket von dem Speicher zu entfernen. In Abhängigkeit
des Status-Bits
würden
ebenso alle anwendbaren Ausgangsports das aktuelle Paket vor der Übertragung
entfernen.
-
Das Quell-Ziel-Port-Feld der P-Kanal-Nachricht
definiert, wie oben ausgeführt,
die Zielportadresse bzw. die Quellportadresse. Jedes Feld ist sechs
Bit breit und erlaubt daher die Adressierung von 64 Ports.
-
Das CRC-Feld der Nachricht ist zwei
Bit breit und definiert die CRC-Aktionen. Bit 0 des Felds liefert eine
Anzeige, ob der zugeordnete Ausgangsport eine CRC an das aktuelle
Paket anhängen
soll. Ein Ausgangsport würde
dann eine CRC an das aktuelle Paket anhängen, wenn Bit 0 des CRC-Felds
zu logisch 1 gesetzt ist. Bit 1 des CRC-Felds liefert eine Anzeige,
ob der zugeordnete Ausgangsport eine CRC für das aktuelle Paket regenerieren
soll. Ein Ausgangsport würde
eine CRC regenerieren, wenn Bit 1 des CRC-Felds zu logisch 1 gesetzt
ist. Das CRC-Feld ist nur für
die letzte übertragene
Zelle gültig,
wie es von dem E-Bit-Feld der P-Kanal Nachricht definiert ist, das
zu logisch 1 gesetzt ist.
-
So wie das CRC Feld sind auch das
Statusbitfeld (st), das Len Feld und das Zellenzählfeld für die Nachrichten nur für die letzte
Zelle eines Paket gültig,
das gesendet wird, wie es durch das E-Bit-Feld der Nachricht definiert
wird.
-
Da das SOC 10 zum effizienten Stapeln
von Konfigurationen eingerichtet ist, sind auf den Protokollkanalnachrichten
32 Bit für
ein Modul-Id-Bitmap vorgesehen, welches ein Bitmap aller Module
eines Stapels sind, die das Paket bekommen sollen. Aufgrund der
Wichtigkeit der Modul-Id im SOC 10 sind die Modul-Id und
die Portnummer (aus dem Entferne-Port-Feld bestimmbar) wichtig für einen
richtigen Paketfluß in
einem Stapel.
-
Das Zeitstempelfeld der Nachricht
hat eine Auflösung
von einer Mikrosekunde und ist nur für die ersten Zelle des Pakets
gültig,
das von dem S-Bit-Feld der Nachricht definiert wird. Eine Zelle
wird als erste Zelle eines empfangenen Pakets definiert, wenn das
S-Bit-Feld der Nachricht auf einen logischen 1-Wert gesetzt ist.
-
Wie nachstehend detaillierter beschrieben
werden wird, sind der C-Kanal 81 und der P-Kanal 82 synchron
derart miteinander verbunden, dass Daten auf dem C-Kanal 81 über den
CPS-Kanal 80 übertragen
werden, während
eine entsprechende P-Kanal-Nachricht gleichzeitig übertragen
wird.
-
S-Kanal oder
Seitenbandkanal
-
Der S-Kanal 83 ist ein 32
Bit breiter Kanal, der einen getrennten Kommunikationspfad innerhalb
des SOC schafft. Der S-Kanal 83 wird zur Steuerung mittels
der CPU 52, der internen Flußsteuerung des SOC 10 und
der Zwischenmodulbenachrichtigung im SOC 10 verwendet.
Der S-Kanal 83 ist ein Seitenbandkanal des CPS-Kanal 80 und
ist elektrisch und physikalisch von dem C-Kanal 81 und
dem P-Kanal 82 isoliert. Es ist wichtig anzumerken, dass
da der S-Kanal getrennt und verschieden von dem C-Kanal 81 und
dem P-Kanal 82 ist, der Betrieb auf dem S-Kanal 83 ohne
Leistungsverschlechterung bezogen auf den Betrieb des C-Kanals 81 und
des P-Kanals 82 fortgesetzt werden kann. Da umgedreht der
C-Kanal nicht zur Übertragung
von Systemnachrichten verwendet wird, sondern nur für Daten,
gibt es keinen Overhead, der dem C-Kanal 81 zugeordnet ist
und daher ist der C-Kanal 81 in der Lage, wie benötigt frei
zu laufen, um eingehende und ausgehende Paketinformation zu bearbeiten.
-
Der S-Kanal 83 des CPS-Kanals 80 schafft
einen systemweiten Kommunikationspfad zum Übertragen von Systemnachrichten,
beispielsweise um der CPU 52 Zugang zu der Steuerstruktur
des SOC 10 zu verschaffen. Systemnachrichten beinhalten
Port-Status-Informationen
einschließlich
Portverbindungsstatus, Empfangsport-voll und Portstatistiken, die
Synchronisation der ARL-Tabelle, Zugang der CPU 52 auf
den GBP 60 und den CBP 50 Speicherpuffer und die
SOC 10-Steuerregister und Speichervollbenachrichtigung entsprechend
dem GBP 60 und/oder CBP 50.
-
6 zeigt
ein Nachrichtenformat für
eine S-Kanal Nachricht auf dem S-Kanal 83. Die Nachricht
wird aus vier 32-Bit Worten gebildet; die Bits der Felder der Wörter sind
wie folgt definiert:
Betriebscode – 6 Bit lang – Identifiziert
den Typ der Nachricht, der auf dem S-Kanal vorliegt;
Ziel-Port – 6 Bit
lang – Definiert
die Portnummer, an die die aktuelle S-Kanal Nachricht adressiert
ist;
Quellport – 6
Bit lang – Definiert
die Portnummer, von dem die aktuelle S-Kanal Nachricht stammt;
COS – 3 Bit
lang – Definiert
die Klasse des Dienstes, die der aktuellen S-Kanal-Nachricht zugeordnet
ist; und
C-Bit – 1
Bit lang – Definiert
logisch, ob die aktuelle S-Kanal Nachricht für die CPU 52 gedacht
ist.
Fehlercode – 2
Bit lang – Definiert
einen gültigen
Fehler, wenn das E-Bit gesetzt ist;
Datenlänge – 7 Bit lang – Definiert
die Gesamtanzahl von Datenbytes in dem Data-Feld;
E-Bit – 1 Bit
lang – zeigt
logisch an, ob ein Fehler bei der Ausführung des aktuellen Befehls
aufgetreten ist, wie er durch den Betriebscode definiert ist;
Adresse – 32 Bit
lang – Definiert
die Speicheradresse, die dem aktuellen Befehl zugeordnet ist, wie
er im Betriebscode definiert ist;
Daten –0–127 Bit lang – Enthält die Daten,
die dem aktuellen Betriebscode zugeordnet sind.
-
Mit der Konfiguration des CPS-Kanals 80,
wie sie oben ausgeführt
worden ist, ist die Entkopplung des S-Kanals von dem C-Kanal und
dem P-Kanal derart, dass die Bandbreite auf dem C-Kanal für den Zellentransfer
reserviert werden kann und ein Überladen
des C-Kanals nicht
die Kommunikation auf dem Seitenbandkanal beeinträchtigt.
-
SOC-Betrieb
-
Die Konfiguration des SOC 10 unterstützt Fast-Ethernet-Ports,
Gigabit-Ports und erweiterbare Zwischenverbindungen, wie es zuvor
ausgeführt
worden ist. Die SOC-Konfiguration
kann ebenso wie zuvor angemerkt gestapelt sein, wobei auf diese
Weise eine signifikante Portausdehnungs-Fähigkeit ermöglicht wird. Wenn einmal Pakete
von dem SOC 10 empfangen worden sind, in Zellen unterteilt
worden sind und auf den CPS-Kanal 80 gesetzt worden sind,
können
die SOC-Module mit dem CPS-Kanal eine Schnittstelle bilden, den Kanal
beobachten und die geeigneten Informationen nach Notwendigkeit extrahieren.
Wie nachstehend erörtert
wird, tritt ein signifikantes Ausmaß von gleichzeitigen Look-Ups
und Filterungen auf, sowie die Pakete in die Eingangssubmodule 14 einer
EPIC 20 oder GPIC 30 eintreffen, bezüglich Ebene-2
und Ebene-3 Look-Ups und schneller Filterung.
-
Unter Bezugnahme nun auf die 8 und 9 wird die Verarbeitung eines Datenpakets
beschrieben. Zum Zwecke der Erklärung
wird angenommen, dass die zu empfangenden Ethernet-Daten an einen
der Ports 24a des EPIC 20a eintreffen. Es wird
angenommen, dass das Paket zu einem User an einem der Ports 24c des
EPIC 20c weitergeleitet werden soll. Alle EPIC 20 (20a, 20b, 20c,
usw.) besitzen ähnliche
Merkmale und Funktionen, wobei jedes individuell auf der Grundlage
des Paketflusses arbeitet.
-
Ein Eingangsdatenpaket 112,
das auf den Port 24a angewendet wird, ist dargestellt.
Das Datenpaket 112 ist in diesem Beispiel durch die aktuellen
Standards für
10/100 Mbps-Ethernet-Übertragung
definiert und kann jede beliebige Länge oder Struktur aufweisen,
die von diesem Standard definiert wird. Diese Erörterung wird annehmen, dass
die Länge
des Datenpakets 112 1024 Bit oder 128 Byte ist.
-
Es soll angemerkt werden, dass jeder
EPIC 20 und jeder GPIC 30 ein Eingangssubmodul 14 und
ein Ausgangssubmodul 16 aufweist, die die portspezifischen
Eingangs- und Ausgangsfunktionen zur Verfügung stellen. Die gesamte Verarbeitung
von eingehenden Paketen geschieht in dem Eingangs-Submodul 14 und Merkmale
wie beispielsweise der Prozessor für schnelles Filtern, die Ebene
2 (L2)- und Ebene 3 (L3)-Look-Ups, das Ebene-2-Lernen, sowohl das selbstinitiierte
als auch das von der CPU 52 initiierte Ebene-2-Tabellenmanagement,
die Ebene 2 Vermittlung, das Unterteilen der Pakete, die
Anwendung eines Off-Sets und das Kanalabsenden geschieht in dem
Eingangssubmodul 14. Nach den Look-Ups, der Verarbeitung
der schnellen Filterung und dem Unterteilen in Zellen, wie es oben
erwähnt
und nachstehend erörtert
werden wird, wird das Paket von dem Eingangssubmodul 14 in
die Absendeeinheit 18 gesetzt und dann auf den CPS-Kanal 80 gesetzt,
wobei das Speichermanagement von der MMU 70 besorgt wird.
In der Sendeeinheit 18 sind eine Anzahl von Eingangspuffern
vorgesehen, um die richtige Bearbeitung der Pakete/Zellen sicherzustellen.
Wenn einmal die Zellen oder die in Zellen umgewandelten Pakete auf
den CPS-Kanal 80 gesetzt worden sind, hat das Eingangssubmodul
mit dem Paket abgeschlossen. Der Eingang ist nicht an der dynamischen
Speicherzuordnung oder dem spezifischen Pfad beteiligt, den die
Zellen zu deren Ziel nehmen werden. Das Ausgangssubmodul 16,
das in 8 als Submodul 16a des
EPIC 20a dargestellt ist, beobachtet den CPS-Kanal 80 und
sucht kontinuierlich nach Zellen, die für einen Port des bestimmten
EPIC 20 bestimmt sind. Wenn die MMU 70 ein Signal
empfängt,
dass ein Ausgang, der einem Ziel eines Pakets im Speicher zugeordnet
ist, bereit zum Empfangen von Zellen ist, ruft die MMU 70 Zellen
aus dem Speicher ab, die dem Paket zugeordnet sind, wie nachstehend
erörtert
werden wird, und setzt die Zellen auf den CPS-Kanal 80,
mit dem Ziel des geeigneten Ausgangssubmoduls. Ein FIFO in dem Ausgangssubmodul 16 sendet
kontinuierlich ein Signal auf den CPS-Kanal 80, dass er
bereit zum Empfangen von Paketen ist, wenn es Platz in dem FIFO
für zu
empfangende Pakete oder Zellen gibt. Wie zuvor erwähnt, ist
der CPS-Kanal 80 zum Bearbeiten von Zellen konfiguriert, es werden
jedoch Zellen von einem bestimmten Paket immer zusammen bearbeitet,
um zu vermeiden, dass die Pakete beschädigt oder durcheinander gebracht
werden.
-
In einer beispielhaften Ausführungsform,
wenn das Datenpaket 112 von dem EPIC Modul 20a empfangen
wird, bestimmt das Eingangssubmodul 14a innerhalb des EPIC 20a als
Eingangsfunktion das Ziel des Pakets 112. Spezifisch werden
die ersten 64 Byte des Datenpakets 112, die die Headerinformation
bilden, von dem Eingangs-Submodul 14a gepuffert und mit
Daten verglichen, die in den ARL/L3-Tabellen 21a gespeichert sind,
um den Zielport 24c des Datenpakets 112 zu bestimmen.
Ebenso als Eingangsfunktion unterteilt das Eingangsmodul 14a das
Datenpaket 112 in eine geeignete Anzahl von 64 Byte Zellen.
In diesem Fall ist das beispielhafte 128 Byte Paket in zwei 64 Byte
Zellen 112a und 112b unterteilt. Auch wenn das
beispielhafte Datenpaket 112, das in diesem Beispiel gezeigt
ist, exakt zwei 64 Byte Zellen 112a und 112b ist,
kann ein aktuelles eingehendes Datenpaket – und das geschieht oft – eine beliebige
Anzahl von Zellen beinhalten, wobei wenigstens eine dieser Zellen
eine Länge
von weniger als 64 Byte hat. In diesen Fällen werden Stopfbytes zu den
unvollständigen
Zellen hinzugefügt,
um die vollständigen
64 Byte der Zelle zu füllen.
In derartigen Fällen läßt das Eingangs-Submodul 14a die
Stopfbytes innerhalb der Zelle außer Betracht und verarbeitet
das Paket wie jedes beliebige andere. Weitere Erörterungen der Paketbearbeitung
nehmen auf das Paket 112 und/oder Zellen 112a und 112b Bezug.
Ein typisches Zellformat ist in 11 dargestellt.
-
Um Probleme bei der Verschlechterung
des Datenflusses zu überwinden,
die mit der Overhead-Benutzung des C-Kanals 81 in Zusammenhang
stehen, wird das gesamte L2-Lernen
und L2-Tabellenmanagement durch Verwendung des S-Kanals 83 erreicht.
Selbstinitiiertes L2-Lernen wird erreicht, indem die Quelladresse
eines Benutzers an einem gegebenen Eingangsport 24 entschlüsselt wird,
wobei die Paket=s-zugeordnete Adresse verwendet wird. Sobald die
Identität
des Benutzers an dem Eingangsport 24 bestimmt ist, werden
die ARL/L3-Tabellen 21a aktualisiert, um die neue Benutzer-Identifikation
wiederzuspiegeln. Die ARL/L3-Tabellen 21 von jedem anderen
EPIC 20 und GPIC 30 werden aktualisiert, um die
neu erworbene Benutzer-Identifikation in einem Synchronisierungsschritt
zu reflektieren, wie es nachstehend erörtert werden wird. Als Ergebnis
kann, während
der Eingang des EPIC 20a bestimmen kann, dass ein bestimmter
Benutzer an einem bestimmten Port 24a ist, der Ausgang
des EPIC 20b, dessen Tabelle 21b mit der Benutzer
= s-Identifikation am Port 24a aktualisiert worden ist,
Informationen an den Benutzer an Port 24a liefern, ohne
erneut lernen zu müssen,
an welchem Port der Benutzer angeschlossen war, welches die Effizienz
beim Look-Up der ARL des SOC 10 erhöht.
-
Das Tabellenmanagement kann auch
durch die Benutzung der CPU 52 erreicht werden. Die CPU 52 kann
mittels des CMIC 40 dem SOC 10 Softwarefunktionen
zur Verfügung
stellen, die zu der Bezeichnung der Identifikation eines Benutzers
an einem bestimmten Port 24 führen. Wie es zuvor ausgeführt worden
ist, ist es jedoch nicht wünschenswert
für die
CPU 52, kontinuierlich Zugriff auf die gesamten Paketinformationen
zu haben, da dies zu einer Verschlechterung der Leistung führen würde. Vielmehr
wird das SOC 10 im allgemeinen von der CPU 52 mit
Identifikationsinformation programmiert, die den Benutzer betreffen.
Danach kann das SOC 10 den Datenstrom in Echtzeit aufrechterhalten,
da die Tabellen-Daten-Kommunikation
zwischen der CPU 52 und dem SOC 10 ausschließlich auf
dem S-Kanal 83 stattfindet. Obwohl das SOC 10 die
CPU 52 mit direkten Paketinformationen mittels des C-Kanals 81 versorgen
kann, ist eine solche Organisation des Systems aus den oben genannten
Gründen
nicht wünschenswert.
Wie oben ausgeführt,
wird als eine Eingangsfunktion ein Adress-Auflösungs-Look-Up durch Untersuchung
der ARL-Tabelle 21a durchgeführt. Wenn das Paket an einen
der Ebene-drei(L3)-Switchess des SOC 10 adressiert ist,
führt dann
das Eingangssubmodul 14a den L3- und Default-Look-Up durch.
Wenn einmal der Zielport bestimmt worden ist, setzt der EPIC 20a ein
Fertig-Flag in der Sendeeinheit 18a, welches dann für den C-Kanal 81 entscheidet.
-
Wenn alle der I/O-Module einschließlich der
MMU 70, einen Zugriff auf den C-Kanal 81 anfordern,
wird die MMU 70 wie in 4B der
Zugriff gewährt,
da die MMU einen kritischen Datenpfad für alle Module auf dem Switch
schafft. Nach dem Erhalt des Zugriffs auf dem Kanal 81 fährt die
Sendeeinheit 18a (9)
fort, indem das empfangene Paket 112, jeweils eine Zelle
gleichzeitig, an dem C-Kanal 81 weitergeleitet wird.
-
Unter Bezugnahme wieder auf 3 sind die individuellen
C-, P- und S-Kanäle
des CPS-Kanals 80 dargestellt.
Wenn einmal der Sendeeinheit 18a die Erlaubnis zum Zugriff
auf den CPS-Kanal 80 während
des ersten Zeitraums Cn0 erteilt worden ist, setzt die Sendeeinheit
18a die
ersten 16 Byte der ersten Zelle 112a des empfangenen Pakets 112 auf
den C-Kanal 81. Gleichzeitig setzt die Sendeeinheit 18a die
erste P-Kanal-Nachricht ab, die der aktuell gesendeten Zelle entspricht.
Wie oben ausgeführt,
definiert die erste P-Kanal-Nachricht u. a. den Nachrichtentyp.
Daher ist dieses Beispiel so, dass die erste P-Kanal-Nachricht die
aktuelle Zelle als eine Nachricht des Typs Unicast bzw. Einfachsendung
definiert, die zu dem Zielausgangsport 21c geleitet werden
soll.
-
Während
des zweiten Taktzyklusses Cn1 werden die zweiten 16 Byte (16:31)
der aktuell übermittelten Datenzelle 112a auf
den C-Kanal 81 gesetzt. Ebenso wird während des zweiten Taktzyklusses
Cn1 das Bc/Mc-Port-Bitmap auf den P-Kanal 82 gesetzt.
-
Wie bei der Darstellung der S-Kanal 83 Daten
während
der Zeiträume
Cn0 bis Cn3 in 3 angegeben,
ist der Betrieb des S-Kanal 83 von dem Betrieb des C-Kanal 81 und
des P-Kanal 82 entkoppelt.
Beispielsweise kann die CPU 52 mittels des CMIC 40 Nachrichten
auf Systemebene an nicht aktive Module weiterleiten, während ein
aktives Modul Zellen auf dem C-Kanal 81 weiterleitet. Wie
zuvor ausgeführt,
ist dies ein wichtiger Aspekt des SOC 10, da der Betrieb
des S-Kanals eine parallele Aufgaben-Verarbeitung erlaubt, wobei
die Übertragung
von Zellendaten auf den C-Kanal 81 in Echtzeit ermöglicht wird.
Wenn einmal die erste Zelle 112a des eingehenden Pakets 112 auf
den CPS Kanal 80 gesetzt worden ist, bestimmt die MMU 70,
ob die Zelle an einen Ausgangsport 81 gesendet werden soll,
der lokal auf der SOC 10 ist.
-
Wenn die MMU 70 bestimmt,
dass die aktuelle Zelle 112a auf den C-Kanal 81 für einen
Ausgangsport auf dem SOC 10 bestimmt ist, übernimmt
die MMU 70 die Steuerung des Zellendatenflusses.
-
Die 10 zeigt
detaillierter die funktionalen Ausgangs-Gesichtspunkte der MMU 70.
Die MMU 70 beinhaltet den CBM 71 und bildet eine
Schnittstelle zwischen dem GBP 60, dem CBP 50 und einer
Mehrzahl von Ausgangsmanager (EgM) 76 von Ausgangs-Submodulen 18,
wobei ein Ausgangsmanager 76 für jeden Ausgangsport vorgesehen
ist. Die CBM 71 ist mit jedem Ausgangsmanager 76 in
einer parallelen Konfiguration mittels des R-Kanal-Datenbuses 77 verbunden.
Der R-Kanal-Datenbus 77 ist ein 32 Bit breiter Bus, der
von dem CBM 71 und den Ausgangsmanagern 76 bei
der Übertragung
von Speicher-Zeigern und Systemnachrichten verwendet wird. Der Ausgangsmanager 76 ist
ebenso mit dem CPS-Kanal 80 für den Transfer
von Datenzellen 112a und 112b verbunden.
-
Zusammenfassend führt die CBM 71 die
Funktionen des On-Chip FAP-(freier Adresspool)-Managment, des Transfers von Zellen
zum CBP 50, das Paket-Zusammenfügen und die Benachrichtigung
des entsprechenden Ausgangsmanagers, das Umleiten von Paketen zum
GBP 60 mittels eines globalen Puffer-Managers sowie das
Bearbeiten des Paketflusses von dem GBP 60 zum CBP 50 durch.
Das Aufräumen
des Speichers, das Speicherbudgetmanagement, die Kanalschnittstelle
und die Zuordnung von Zellzeigern sind ebenso Funktionen des CBM 71.
Im Bezug auf den freien Adresspool verwaltet der CBM 71 den
freien Adresspool und weist eingehenden Zellen freie Zellzeiger
zu. Der freie Adresspool wird ebenso mittels dem CBM 71 zurückgeschrieben,
sodass die frei werdenden Zellzeiger der verschiedenen Ausgangsmanager
auf geeignete Weise gelöscht
werden. Unter der Annahme, dass es genügenden im CBP 50 verfügbaren Speicher
und genügend
freie Adresszeiger gibt, hält
der CBM 71 wenigstens zwei Zellenzeiger pro Ausgangsmanager 76,
der verwaltet wird. Die erste Zelle des Pakets trifft an einem Ausgangsmanager 76 an
und der CBM 71 schreibt diese Zelle zu der CBM-Speicherzuteilung
an der Adresse, auf die der erste Zeiger zeigt. In dem nächsten Zellen-Header-Feld
ist der zweite Zeiger geschrieben. Das Format der Zelle wird in
dem CBP 50 gespeichert, wie es in 11 dargestellt ist; wobei jede Zeile
18 Bit breit ist. Die Zeile 0 enthält die geeigneten Informationen im
Bezug auf die Information zur ersten Zelle und zur letzten Zelle,
zu Broadcast/Multicast, zur Anzahl von Ausgangsports für Broadcast
oder Multicast, zur Zellenlänge
im Bezug auf die Anzahl von gültigen
Bites in der Zelle, dem nächsten
Zellenzeiger, der gesamten Zellenanzahl in dem Paket und zum Zeitstempel.
Die verbleibenden Zeilen enthalten die Zellendaten als 64 Byte Zellen.
Der freie Adresspool innerhalb der MMU 70 speichert alle
freien Zeiger für
den CBP 50. Jeder Zeiger in dem freien Adresspool zeigt
auf eine 64 Byte Zelle in dem CBP 50; wobei die aktuelle
in dem CBP gespeicherte Zelle insgesamt 72 Byte aufweist, wobei
64 Byte Daten sind und 8 Byte Steuerinformationen sind. Funktionen
wie beispielsweise HOL-Blockierungen,
welche obere und untere Grenzwerte blockiert, Out-Queue-Budget-Register,
die Zuteilung von CPID und andere Funktionen werden wie erklärt wird
in dem CBM 71 bearbeitet.
-
Wenn die MMU 70 bestimmt,
dass die Zelle 112a für
einen geeigneten Ausgangsport auf dem SOC 10 bestimmt ist,
steuert die MMU 70 den Zellenfluß von dem CPS-Kanal 80 zum
CBP 50. Sowie das Datenpaket 112 von der MMU 70 vom
CPS 80 empfangen worden ist, bestimmt der CBM 71,
ob oder ob nicht genügend
Speicher im CBP 50 für
das Datenpaket 112 verfügbar
ist. Ein freier Adresspool (nicht dargestellt) kann wenigstens zwei
Zellenzeiger pro Ausgangsmanager 76 pro Dienstklasse speichern.
Wenn genügend
Speicher im CBP 50 zum Speichern und zur Identifikation
des eingehenden Datenpakets verfügbar
ist, setzt der CBM 71 die Datenzelleninformationen auf
den CPS-Kanal 80. Die Datenzelleninformationen werden von
dem CBM 71 an den CBP 50 bei einer zugeteilten
Adresse geliefert. Sowie neue Zellen von der MMU 70 empfangen werden,
teilt der CBM 71 Zellzeiger zu. Der anfängliche Zeiger für die erste
Zelle 112a zeigt auf den Ausgangsmanger 76, der
dem Ausgangsport entspricht, an dem das Datenpaket 112 gesendet
werden wird, nachdem es im Speicher abgelegt worden ist. Bei dem
Beispiel der 8 kommen
Pakete an dem Port 24a des EPIC 20a an und sind
für den
Port 24c des EPIC 20c bestimmt. Für jede zusätzliche
Zelle 112b teilt der CBM 71 einen entsprechenden
Zeiger zu. Der entsprechende Zellzeiger wird als zwei Byte oder
16 Bit-Wert-NC_Header an einem geeigneten Ort einer Steuernachricht
gespeichert, zusammen mit dem ursprünglichen Zeiger auf den entsprechenden
Ausgangsmanager 76 und nachfolgenden Zellzeigern als Teil
jedes Zellheaders, wobei eine verbundene Liste von Speicherzeigern
gebildet wird, die das Paket 112 definiert, wenn das Paket
mittels des geeigneten Ausgangsports übertragen wird; in diesem Fall
der Port 24c. Sobald das Paket vollständig in den CBP 50 geschrieben
ist, wird ein entsprechender CBP-Paketidentifizierer (CPID) an den
geeigneten Ausgangsmanager 76 geliefert; wobei dieser CPID
auf den Speicherort der anfänglichen Zelle 112a zeigt.
Der CPID für
das Datenpaket wird dann verwendet, wenn das Datenpaket 112 zu
dem Zielausgangsport 24c gesendet wird. Aktuell hält der CBM 71 zwei
Puffer, die CBP-Zellenzeiger
enthalten, wobei der Zugang zu dem CBP sich nach einer Anzahl von
Faktoren richtet. Ein Beispiel der Zugangslogik zum CBP 50 wird
nachstehend unter Bezugnahme auf 12 erörtert.
-
Da der CBM 71 den Datenstrom
innerhalb des SOC 10 steuert, kann der Datenstrom, der
jedem beliebigen Eingangsport zugeordnet ist, beliebig gesteuert
werden. Wenn das Paket 112 in dem CBP 50 empfangen
und gespeichert worden ist, wird ein CPID an den zugeordneten Ausgangsmanager 76 geliefert.
Die Gesamtanzahl von Datenzellen, die dem Datenpaket zugeordnet
sind, wird in einem Budgetregister (nicht dargestellt) gespeichert.
Je mehr Datenpakete empfangen werden und zum Senden an den gleichen
Ausgangsmanager 76 bestimmt werden, umso öfter wird
der Wert des Budgetregisters, der dem zugeordneten Ausgangsmanager 76 entspricht,
mittels der Datenzellen 112a, 112b der neuen empfangenen
Datenzellen erhöht.
Das Budgetregister stellt daher dynamisch die Gesamtanzahl von Zellen
dar, die zum Senden von einem bestimmten Ausgangsport auf einem
EPIC 20 bestimmt sind. Der CBM 71 steuert den
Eingangsstrom von zusätzlichen Datenpaketen,
in dem das Budgetregister für
den gleichen Ausgang mit einem oberen Grenzwert des Registerwerts
oder einem unteren Grenzwert des Registerwerts verglichen wird.
-
Wenn der Wert des Budgetregisters
den oberen Grenzwert übersteigt,
wird der zugeordnete Eingangsport disabled. Auf ähnliche Weise wird, wenn Datenzellen
eines Ausgangsmanagers 76 mittels des Ausgangsports gesendet
werden und das entsprechende Budgetregister sich auf einen Wert
unter dem unteren Grenzwert verringert, der Eingangsport wieder
enabled. Wenn der Ausgangsmanager 76 die Sendung des Paket 112 initiiert,
teil der Ausgangsmanager 76 dies dem CBM 71 mit,
der dann das Budgetregister um die Anzahl der gesendeten Datenzellen
verringert. Die spezifischen oberen Grenzwerte und unteren Grenzwerte können von
dem Benutzer mittels der CPU 52 programmiert werden. Dies
verleiht dem Benutzer die Steuerung über den Datenstrom eines jeden
beliebigen Ports von jedem beliebigen EPIC 20 oder GPIC 30 und
des IPIC 90.
-
Der Ausgangsmanager 76 ist
ebenso in der Lage, den Datenstrom zu steuern. Jeder Ausgangsmanager 76 besitzt
die Fähigkeit,
die Paketidentifikationsinformation in einem Paketzeigerbudgetregister
zu verfolgen; sowie ein neuer Zeiger von dem Ausgangsmanager 76 empfangen
wird, wird das zugeordnete Paketzeigerbudgetregister erhöht. Sowie
der Ausgangsmanager 76 ein Datenpaket 112 aussendet,
wird das Paketzeigerbudgetregister verringert. Wenn eine Speichergrenze,
die dem Register zugeordnet ist, erreicht wird, entsprechend einem
vollen Paketidentifikationspool, wird eine Anzeigenachricht an alle
Eingangsports des SOC 10 geschickt, wobei angezeigt wird,
dass der Zielausgangsport nicht erreichbar ist, der von diesem Ausgangsmanager
gesteuert wird. Wenn das Paketzeigerbudgetregister unterhalb des
oberen Grenzwerts für
den Paketpool verringert wird, wird eine Anzeigenachricht gesendet,
dass der Zielausgangsport nun verfügbar ist. Die Anzeigenachrichten
werden von dem CBM 71 auf dem S-Kanal 83 gesendet.
-
Wie zuvor ausgeführt, wird die Flußsteuerung
von dem CBM 71 und ebenso von dem Eingangssubmodul 14 von
entweder einem EPIC 20, einem GPIC 30 oder dem
IPIC 90 zur Verfügung
gestellt. Die Eingangssubmodule 14 überwachen die Zellenübertragung
in den Port 24. Wenn ein Datenpaket 112 an einem Port 24 empfangen
wird, erhöht
das Eingangssubmodul 14 ein Empfangen-Budget-Register um
die Zellenanzahl des eingehenden Datenpakets. Wenn ein Datenpaket 112 gesendet
wird, verringert der entsprechende Eingang 14 das Empfangen-Budget-Register
um die Zellenanzahl des ausgehenden Datenpakets 112. Das Budgetregister 72 wird
von dem Eingang 14 in Abhängigkeit einer Verringere-Zellen-Anzahl-Nachricht
verringert, die von dem CBM 71 initiiert wird, wenn ein
Datenpaket 112 erfolgreich von dem CBP 50 übertragen
worden ist.
-
Eine effiziente Behandlung des CBP 50 und
des CBP 60 ist erforderlich, um den Durchsatz zu maximieren,
ein Knappwerden der Ports und einen Underrun der Ports zu verhindern.
Für jeden
Eingang gibt es einen unteren Grenzwert und einen oberen Grenzwert;
wenn die Zellenanzahl unterhalb des unteren Grenzwerts ist, wird
das Paket von dem CBP zugelassen, wobei auf diese Weise ein knapp
werden der Ports verhindert wird, indem dem Port ein geeigneter
Anteil am Raum des CBP gegeben wird.
-
Die 12 zeigt
im allgemeinen die Bearbeitung bzw. Handling eines Datenpakets 112,
wenn es an einem geeigneten Eingangsport empfangen wird. Die Figur
zeigt die dynamische Speicherzuordnung an einem einzelnen Port und
ist für
jeden Eingangsport des SOC 10 anwendbar. Im Schritt 12-1 wird
die länge
des eingehenden Pakets ermittelt, indem die Zellenanzahl auf der
Grundlage der Eingangsmanageranzahl zuzüglich der eingehenden Zellenanzahl
ermittelt wird. Nachdem diese Zellenanzahl ermittelt ist, wird im
Schritt 12-2 die aktuelle Zellenanzahl des GBP 60 überprüft, um zu
ermitteln, ob der GBP 60 leer ist oder nicht. Wenn die
Zellenanzahl des GBP 0 ist, wobei auf diese Weise angezeigt wird,
dass der GBP 60 leer ist, geht das Verfahren zu Schritt 12-3 über, bei
dem ermittelt wird, ob oder nicht die ermittelte Zellenanzahl von
Schritt 12-2 geringer als der Zulassungsgrenzwert des CBP 50 ist.
Der untere Zulassungsgrenzwert ermöglicht den Empfang von 9 Paketen 112 in
dem CBP 50, wenn die gesamte Anzahl von Zellen in dem zugeordneten
Ausgang unterhalb des unteren Zulassungsgrenzwerts ist. Wenn die
Zellenanzahl geringer als der untere Zulassungsgrenzwert des CBP 50 ist,
wird das Paket in den CBP 50 im Schritt 12-5 aufgenommen.
Wenn die ermittelte Zellenanzahl nicht unter dem unteren Zulassungsgrenzwert
ist, muß der
CBM 71 zur Zuordnung von CBP-Speicher im Schritt 12-4 mit
anderen Eingangsports von anderen EPIC oder GEPIC entscheiden bzw.
als Schiedsrichter fungieren. Wenn der Entscheidungsvorgang nicht
erfolgreich war, wird das eingehende Paket zu einem Weitervermittlungsvorgang
geschickt, auf den in 12 als
A Bezug genommen wird, welcher das (Paket zu dem GBP 60 umleitet.
Wenn alternativ der Entscheidungsvorgang erfolgreich war, wird das
Paket zum CBP 50 in Schritt 12-5 zugelassen. Die
Zulassung des Pakets 112 zum CBP 50 ist bevorzugt,
um die Kommunikation bei Leitungsgeschwindigkeit zu erleichtern.
-
Die obige Diskussion richtet sich
auf die Situation, in der die GBP-Zellenanzahl als 0 bestimmt wird, welches
einen leeren externen Speicher darstellt. Wenn in Schritt 12-2 die
GBP Zellenanzahl nicht zu 0 bestimmt wird, fährt das Verfahren mit dem Schritt 12-6 fort,
indem die in Schritt 12-1 ermittelte Zellenanzahl mit dem
oberen Zulassungsgrenzwert des CBP 50 verglichen wird.
Wenn die ermittelte Zellenanzahl größer als der obere Grenzwert
des CBP 50 ist, wird das Paket im Schritt 12-7 zu
GBP 60 umgeleitet. Wenn die ermittelte Zellenanzahl geringer
als der obere Zulassungsgrenzwert ist, wird die ermittelte Zellenanzahl
mit dem unteren Zulassungsgrenzwert des CBP 50 im Schritt 12-8 verglichen.
Wenn bestimmt wird, dass die ermittelte Zellenanzahl größer als
der untere Zulassungsgrenzwert ist, welches bedeutet, dass die ermittelte
Zellenanzahl zwischen dem oberen Grenzwert und dem unteren Grenzwert
liegt, wird das Paket zum GBP 60 in Schritt 12-7 umgeleitet.
Wenn die ermittelte Zellenanzahl unterhalb des unteren Zulassungsgrenzwerts
ist, wird die aktuelle GBP Anzahl mit einem Umleitungszellengrenzwert
in Schritt 12-9 verglichen. Dieser Umleitungs-Zellen-Grenzwert
ist über
die CPU 52 von einem Benutzer programmierbar. Wenn die
GBP-Anzahl kleiner oder gleich dem Umleitungs-Zellen-Grenzwert bei
Schritt 12-9 ist, wird die ermittelte Zellenanzahl und
die GBP-Anzahl mit einem ermittelten unteren Zellenanzahlgrenzwert
verglichen. Wenn die Kombination der ermittelten Zellenanzahl und
der GBP-Anzahl geringer als der ermittelte untere Zellenanzahlgrenzwert
ist, wird das Paket in Schritt 12-5 zum GBP 50 zugelassen.
Wenn die Summe größer ist
als der ermittelte untere Zellenanzahlgrenzwert, wird das Paket
in Schritt 12-7 zum GBP 60 umgeleitet. Nach dem
Umleiten zu dem GBP 60 wird die GBP Zellenanzahl aktualisiert
und die Paketverarbeitung ist abgeschlossen. Es soll erwähnt werden,
dass sowohl wenn der CBP 50 als auch der GBP 60 voll
sind, das Paket fallengelassen wird. Fallengelassene Pakete werden
gemäß den bekannten
Ethernet oder Netzwerkkommunikationsverfahren behandelt und wirken
sich in einer Verzögerung
der Kommunikation aus. Die Konfiguration sorgt jedoch für einen
geeigneten Rückdruck,
in dem die Grenzwerte über
die CPU 52 auf geeignete Pufferwerte auf einer Pro Port
Grundlage gesetzt werden, um die Speicherverwendung zu maximieren
und die Anzahl der fallengelassenen Pakete zu minimieren. Diese CBP/GBP-Zulassungslogik führt zu einer
verteilten, hierarchischen Konfiguration geteilten Speichers, mit
einer Hierarche des CBP 50 und dem GBP 60 und
Hierarchien innerhalb des CBP 50.
-
Wenn das Paket 112, das
oben in Bezug auf 12 erörtert worden
ist, für
den IPIC bestimmt ist und daher über
die Hochleistungsschnittstelle ausgesendet werden soll, dann wird
das Paket unmittelbar zu dem IPIC Modul vermittelt, und muß weder
von dem CBP 50 oder dem GBP 60 angenommen werden.
Nachdem ermittelt ist, dass die Zieladresse dem EPIC zugeordnet
ist, wird das Paket auf dem C-Kanal 81 besetzt, wie es
in 8 dargestellt ist,
und wird von dem IPIC 90 aufgenommen, indem es in dem NBP 92 angeordnet
wird. Nachdem die Zieladresse für
Ziele auf dem IPIC 90 gelernt worden ist, wird dann ein
in den Port 24 eingehendes Paket, das an einen Port an
dem IPIC 90 gerichtet ist, in Zellen unterteilt und auf
dem CPS-Kanal 80 mit dem direkten Ziel zum NBP 92 und
IPIC 90 gesetzt. Die dem Paket zugeordneten Zellen werden
nicht von der MMU 70 bearbeitet und sind daher nicht der
CBB/GBP-Zulassungslogik unterworfen, wie sie oben erörtert worden
ist. Wenn die Zieladresse jedoch noch nicht gelernt worden ist,
wird das Paket an alle Ports über
die CPB/GBP-Zulassungslogik geschickt und ebenso über den
NBP 92. Eine detailliertere Erörterung des NBP 92 und
des IPIC 90 wird später
zu finden sein.
-
Adressauflösung (L2)
+ (L3)
-
14 zeigt
einige der gleichzeitigen Filter- und Look-Up-Details eines Pakets,
das an dem Eingang eines EPIC 20 eingegangen ist. Die 12 zeigt, wie zuvor diskutiert,
die Bearbeitung eines Datenpakets in Bezug auf die Zulassung zu
dem verteilten, hierarchischen und geteilten Speicher. Die 14 richtet sich auf die
Segmente des SOC 10 zur Anwendung des Filterns, der Flußsteuerung,
der Adressauflösung
und der Anwendung der Regeln. Diese Funktionen werden gleichzeitig
in Bezug auf die Zulassung zum CBP 50 und GBP 60 durchgeführt, wie
es oben erörtert
worden ist. Wie in der Figur dargestellt ist, wird das Paket 112 an
einem Eingangsport 24 des EPIC 20 empfangen und
wird dann zum Eingangsfifo 142 geleitet. Sobald die ersten
16 Bytes des Datenpakets in dem Inputfifo 142 ankommen,
wird eine Adress-Auflösungs-Anforderung
an die ARL-Maschine 143 geschickt,
die einen Adress-Look-Up in den ARL/L3-Tabellen 21 initiiert.
-
Eine Beschreibung der Felder innerhalb
der ARL/L3-Tabellen 21 ist wie folgt:
MAC Adresse – 48 Bit
lang – Mac
Adresse;
VLAN Tag – 12
Bit lang – VLAN
TAG-Identifizierer wie es in den IEEE 802.1q-Standard für markierte
Pakete beschrieben ist. Für
ein nicht markiertes Paket wird dieser Wert von der portbasierten
VLAN-Tabelle aufgenommen.
CosDst – 3 Bit lang – Dienstart
auf der Grundlage der Zieladresse. Die COS identifiziert die Priorität dieses Pakets.
Acht Ebenen von Prioritäten,
wie es in dem IEEE 802.1p Standard beschrieben ist.
Portnummer – 6 Bit
lang – Portnummer
ist der Port, an dem die Mac-Adresse gelernt worden ist.
SD_Disc
Bits – 2
Bit lang – Diese
Bits identifizieren, ob das Paket auf der Grundlage der Quelladresse
oder der Zieladresse fallengelassen werden soll. Wert 1 bedeutet
das Fallenlassen wegen der Quelle. Wert 2 bedeutet das Fallenlassen
wegen dem Ziel.
C Bit – 1
Bit lang – Das
C Bit zeigt an, dass das Paket zu dem CPU-Port gegeben werden soll.
St
Bit – 1
Bit lang – Das
St Bit zeigt an, dass dies ein statischer Eintrag ist (der nicht
dynamisch gelernt worden ist) und dies bedeutet, dass er nicht ausgealtert
werden soll. Nur die CPU 52 kann diesen Eintrag löschen.
Ht
Bit – 1
Bit lang – Trefferbit – Dieses
Bit wird gesetzt, wenn es eine Übereinstimmung
zwischen der Zieladresse gibt. Es wird für den Alterungsmechanismus
verwendet.
CosSrc – 3
Bit lang – Art
der Dienste auf der Grundlage der Quelladresse. Die COS zeigt die
Priorität
dieses Pakets an.
L3 Bit – 1
Bit lang – L3
Bit – identifiziert,
dass dieser Eintrag als Ergebnis der L3 Schnittstellenkonfiguration erzeugt
worden ist. Die Mac-Adresse in diesem Eintrag ist die L3-Schnittstellen-Mac-Adresse
und dass jedes Paket, das an diese Mac-Adresse gerichtet ist, gerutet
werden soll.
T Bit – 1
Bit lang – Das
T Bit zeigt an, dass diese Mac-Adresse von einem der Trunk-Ports
gelernt worden ist. Wenn es eine Übereinstimmung bei der Zieladresse
gibt, wird der Ausgangsport nicht auf der Grundlage der Port-Nummer
in diesem Eintrag entschieden, sondern von dem Trunk-Identifizierungs-Vorgang
auf der Grundlage der Regeln entschieden, die von den RTAG Bits
und dem Trunk-Gruppen-Identifizierer mittels des TGID entschieden.
TGID – 3 Bit
lang – Der
TGID identifiziert die Trunk-Gruppe, wenn das T Bit gesetzt ist.
Das SOC 10 unterstützt sechs
Trunk-Gruppen pro Switch.
RTAG – 3 Bit lang – RTAG identifiziert
den Trunk-Auswahl-Maßstab,
wenn die Zieladresse mit diesem Eintrag übereinstimmt und das T Bit
in diesem Eintrag gesetzt ist. Wert 1 – basiert auf der Quell-Mac-Adresse.
Wert 2 – basiert
auf der Ziel-Mac-Adresse. Wert 3 – basiert auf Quell- und Zieladresse.
Wert 4 – basiert
auf der Quell-IP-Adresse. Wert 5 – basiert auf der Ziel-IP-Adresse.
Wert 6 – basiert
auf der Quell- und Ziel-IP-Adresse.
SCP – 1 Bit lang – Quell-CoS-Prioritäts-Bit – Wenn dieses
Bit gesetzt ist (bei übereinstimmenden Quell-Mac-Eintrag),
besitzt das Quell-CoS Priorität
gegenüber
der Ziel-CoS.
Modul
ID – 5
Bit lang – Modul
ID identifiziert das Modul, an dem diese Mac-Adresse gelernt ist.
-
Das SOC 10 beinhaltet ebenso
eine Multicast-Tabelle zur geeigneten Bearbeitung von Multicast-Paketen.
Eine Konfiguration der Multicast-Tabelle würde 256 Bit tief und 128 Bit
breit sein. Die Suchfelder der Multicast-Tabelle können wie
folgt sein:
Mac Adresse – 48
Bit lang – Mac
Adresse.
VLAN Tag – 12
Bit lang – ULAN
Tag Identifizierer, wie er im IEE802.1q-Standard beschrieben ist.
CosDst – 3 Bit
lang – Art
der Dienste auf der Grundlage der Zieladresse. COS identifiziert
die Priorität
dieses Pakets. Wir unterstützen
8 Ebenen von Prioritäten,
wie es in IEEE 802.1p-Standard beschrieben ist.
Mc Port Bitmap – 31 Bit
lang – Port
Bitmap identifiziert all die Ausgangsports, an die das Paket gehen
soll.
Untagged Bitmap – 31
Bit lang – Dieses
Bitmap identifiziert die Untagged-Mitglieder des VLAN, d. h., ob
der Frame, der aus diesen Mitgliederports ausgewählt ist, ohne Tag Header übermittelt
werden soll.
Module Id Bitmap – 32 Bit lang – Modul
Id Bitmap identifiziert all die Module, an die die Pakete gehen
sollen.
-
Es soll ebenso angemerkt werden,
dass die VLAN-Tabellen 23 eine Anzahl von Tabellenformaten
beinhalten; wobei nicht alle dieser Tabellen und Tabellenformate
hierin diskutiert werden. Als Beispiel jedoch sind die Port-basierten
VLAN-Tabellenfelder wie folgt beschrieben:
Port VLAN Id – 12 Bit
lang – Der
Port ULAN Identifizierer ist die VLAN Id, die von dem portbasierten
VLAN verwendet wird.
Sp State – 2 Bit lang – Dieses
Feld identifiziert den aktuellen Zustand des überspannenden Baums. Wert 0x00 – Port ist
im deaktivierten Zustand. Keine Pakete werden in diesem Zustand
angenommen, nicht einmal BPDUs. Wert 0x01 – Block ist im blockierenden
oder zuhörenden
Zustand. In diesem Zustand werden von diesem Port keine Pakete angenommen,
mit der Ausnahme von BPDUs. Wert 0x02 – Port befindet sich im Lernzustand.
In diesem Zustand werden die Pakete nicht zu einem anderen Port
weitergeleitet, aber zum Lernen angenommen. Wert 0x03 – Port ist
im Weiterleitungszustand. In diesem Zustand werden die Pakete sowohl zum
Lernen als auch zum Weiterleiten angenommen.
Port-Fallenlaß-Bits – 6 Bit
lang – Es
gibt sechs Felder in diesem Bit und jedes Bit identifiziert den
Maßstab
zum Fallenlassen von Paketen, die an diesem Port eingehen. Bemerkung:
Bit 0 bis 3 wird nicht verwendet. Bit 4 – Wenn dieses Bit gesetzt ist,
werden alle Frames, die an diesem Port eingehen, fallengelassen.
Bit 5 – Wenn dieses
Bit gesetzt ist, wird jeder auf diesen Port kommende Frame fallengelassen,
der 802.1q-Priorität-markiert
(vid = 0) und untagged ist.
J Bit – 1 Bit lang – J Bit
bedeutet Jumbo Bit. Wenn dieses Bit gesetzt ist, soll dieser Port
Jumbo-Frames annehmen.
RTAG – 3 Bit lang – RTAG identifiziert
den Trunk-Auswahl-Maßstab,
wenn die Zieladresse mit diesem Wert übereinstimmt und das T Bit
in diesem Eintrag gesetzt ist. Wert 1 – basiert auf der Quell-Mac-Adresse.
Wert 2 – basiert
auf der Ziel-Mac-Adresse. Wert 3 – basiert auf Quell- und Zieladresse.
Wert 4 – basiert
auf der Quell-IP-Adresse. Wert 5 – basiert auf der Ziel-IP-Adresse.
Wert 6 – basiert
auf der Quell- und Ziel-IP-Adresse.
T Bit – 1 Bit lang – Dieses
Bit zeigt an, dass der Port ein Mitglied der Trunk-Gruppe ist.
C-Lern-Bit – 1 Bit
lang – CPU-Lernbit – Wenn dieses
Bit gesetzt ist, wird das Paket zu der CPU gesendet, wann immer
die Quelladresse gelernt wird.
PT – 2 Bit lang – Port Typ
identifiziert den Port Typ. Wert 0 – 10 Mbit Port. Wert 1 – 100 Mbit
Port. Wert 2 – 1 Gbit
Port. Wert 3 – CPU-Port.
VLAN-Port-Bitmap – 28 Bit
lang – VLAN-Port-Bitmap
identifiziert all die Ausgangsports, an die das Paket gehen soll.
B-Bit – 1 Bit
lang – B-Bit
ist das BPDU-Bit. Wenn dieses Bit gesetzt ist, dann weist der Port
BPDUs zurück. Dieses
Bit wird für
Trunk-Ports gesetzt, die nicht BPDUs akzeptieren sollen.
TGID – 3 Bit
lang – TGID – Dieses
Feld identifiziert die Trunk-Gruppe, zu der dieser Port gehört.
Untagged
Bitmap – 28
Bit lang – Dieses
Bitmap identifiziert die untagged Mitglieder des VLAN, d. h., ob
der Frame, der aus diesen Mitgliederports ausgewählt ist, ohne Tag Header übertragen
werden soll.
M Bits – 1
Bit lang – M
Bits wird für
die Spiegelungsfunktionalität
verwendet. Wenn dieses Bit gesetzt ist, ist das Spiegeln des Eingangs
ermöglicht.
-
Das SOC 10 kann ebenso eine
Mehrzahl von 802.1Q-Tagged-VLAN-Tabellen aufweisen, die verwendet
werden können,
um alle Mitgliederports des explixit markierten bzw. getaggten VLANs
zu bekommen. Diese Tabelle kann beispielsweise 65 Einträge tief
und 68 Bit breit sein. Die Felder können wie folgt sein:
VLAN
Tag – 12
Bit lang – VLAN-Tag-Identifizierer,
wie es im IEEE 802.1q-Standard beschrieben ist.
VLAN Port Bitmap – 28 Bit
lang – Das
VLAN Port Bitmap identifiziert alle die Ausgangsports, an die das
Paket gesendet werden soll.
Untagged Bitmap – 28 Bit
lang – Dieses
Bitmap identifiziert die Untagged-Mitglieder des VLAN. Daher identifziert
dieses Bitmap, ob der Frame von diesen Mitgliederports mit oder
ohne Tag-Header übertragen
werden soll.
-
Unter Bezugnahme auf die Erörterung
der Adressauflösung
und ebenso unter Bezugnahme auf 14,
liest die ARL-Maschine 143 die Pakete; wenn das Paket ein
VLAN-Tag gemäß dem IEEE-Standard 802.1q
aufweist, führt
die ARL-Maschine 143 einen Look-Up auf der Grundlage der
getaggten VLAN-Tabelle 231 durch, die Teil der VLAN-Tabelle 23 ist.
Wenn das Paket dieses Tag nicht enthält, führt die ARL-Maschine das VLAN-Look-Up
auf der Grundlage der Port-basierten VLAN-Tabelle 232 durch.
Wenn einmal das VLAN für
das eingehende Paket identifiziert worden ist, führt die ARL-Maschine 143 eine
ARL-Tabellen-Suche
auf der Grundlage der Quell-Mac-Adresse und der Ziel-Mac-Adresse
durch. Wenn die Ergebnisse der Zielsuche eine L3-Schnittstellen-Mac-Adresse
ist, wird eine L3-Suche einer L3-Tabelle innerhalb der ARUL3-Tabelle 21 durchgeführt. Wenn
die L3-Suche erfolgreich ist, dann wird das Paket gemäß den Paketroutingregeln
modifiziert.
-
Zum bessern Verständnis des Look-Ups, des Lernens
und des Vermittelns, kann es ratsam sein, noch einmal das Handling
des Pakets 112 mit Bezug auf die 8 zu erörtern. Wenn das Datenpaket 112 von
einer Quellstation A in den Port 24a des EPIC 20a gesendet
wird und an eine Zielstation B an dem Port 24c des EPIC 20c gerichtet
ist, unterteilt das Eingangssubmodul 14a das Datenpaket 112 in
die Zellen 112a und 112b. Das Eingangssubmodul
liest dann das Paket, um die Quell-Mac-Adresse und die Ziel-Mac-Adresse zu ermitteln.
Wie zuvor erörtert
worden ist, führt
das Eingangssubmodul 14a insbesondere die ARL-Maschine 143 das Look-Up
der geeigneten Tabellen innerhalb der ARL/L3-Tabellen 21a und
der VLAN-Tabelle 23a durch, um zu sehen, ob die Ziel-Mac-Adresse in den ARL/L3-Tabellen 21a existiert.
Wenn die Adresse nicht gefunden wird, aber die VLAN-IDs die gleichen
für die
Quelle und das Ziel sind, sendet das Eingangssubmodul 14a das
zu sendende Paket an alle Ports auf dem VLAN. Das Paket wird dann
an die geeignete Zieladresse weitergeleitet. Eine Quellsuche und
eine Zielsuche geschieht parallel. Wenn die Quelladresse nicht in
einem Quell-Look-Up gefunden wird, tritt ein Quell-Look-Up-Fehler (SLF) auf.
Nach dem Auftreten eines SLF wird die Quell-Mac-Adresse des eingehenden
Pakets „gelernt" und somit zu einer
ARL-Tabelle innerhalb der ARL/L3- Tabellen 21a hinzugefügt. Nachdem
das Paket von dem Ziel empfangen worden ist, wird eine Bestätigung von
der Zielstation D an die Quellstation A geschickt. Da die Quell-Mac-Adresse des eingehenden
Pakets von der geeigneten Tabelle von B gelernt worden ist, wird
die Bestätigung
auf geeignete Weise an den Port gesendet, an dem sich A befindet.
Die Zieladresse für
das Bestätigungs-Paket
oder die Bestätigungs-Pakete
ist bekannt, da es zuvor die Quelladresse war, die als Ergebnis
des ursprünglichen
SLF gelernt worden ist. Wenn die Bestätigung an Port 24a empfangen
wird, lernt daher die ARL-Tabelle die Quell-Mac-Adresse von B von dem Bestätigungs-Paket.
Es soll angemerkt werden, dass solange die VLAN-Ids (für getaggte
Pakete) der Quell-Mac-Adressen und der Ziel-Mac-Adressen die gleichen
sind, eine Ebene-2-Vermittlung, wie zuvor erörtert durchgeführt wird.
L2-Vermittlung und -Look-Up gründet
sich daher auf die ersten 16 Byte eines eingehenden Pakets. Für nicht
getaggte Pakete wird das Portanzahlfeld in dem Paket auf die port-basierte VLAN-Tabelle
innerhalb der VLAN-Tabelle 23a indexiert und die VLAN-ID
kann dann bestimmt werden. Wenn die VLAN-IDs jedoch unterschiedlich
sind, ist eine L3-Vermittlung notwendig, bei der die Pakete an verschiedene
VLANs geschickt werden. Die L3-Vermittlung jedoch basiert auf dem
IP-Header-Feld des Pakets. Der IP-Header beinhaltet die Quell-IP-Adresse,
die Ziel-IP-Adresse
und die TTL (time-to-live).
-
Wenn das Datenpaket 112 von
einer Quellstation A in den Port 24a des EPIC 20a geschickt
worden ist und an den IPIC 90 gerichtet worden war, würde der
gleiche Lernprozeß bei
Auftreten eines SLF und das gleiche Senden des Pakets an alle Ports
bei einem Auftreten eines DLF geschehen. Der IPIC 90 wird
im wesentlichen wie jeder andere Port auf dem SOC 10 behandelt,
mit merklichen Ausnahmen in Bezug auf das Vorhandensein des NBP 92,
wie es oben erörtert
worden ist und wie es nachstehen erörtert werden wird.
-
Um die Ebene-3-Vermittlung auf dem
SOC 10 klarer zu verstehen, wird das Datenpaket 112 von
der Quellstation A auf den Port 24a des EPIC 20a gesendet
und ist an die Ziel-Station B gerichtet; es wird jedoch angenommen,
dass die Station B auf einem verschiedenen VLAN angeordnet ist,
wie es von der Quell-Mac-Adresse und der Ziel-Mac-Adresse angezeigt
wird, die verschiedene VLAN-IDs haben. Das Look-Up für B würde nicht
erfolgreich sein, da B auf einem verschiedenen VLAN angeordnet ist
und das einfache Senden des Pakets an alle Ports des gleichen VLANs
würde dazu
führen,
dass B nie das Paket erhält. Die
Ebene-3-Vermittlung
ermöglicht
daher das Überbrücken von
VLAN-Grenzen, aber erfordert das Auslesen von mehr Paketinformation,
als die Mac-Adressen beim L2-Vermitteln. Zusätzlich zum Lesen der Quell-
und Ziel-Mac-Adressen liest daher der Eingang 14a ebenso
die IP- Adressen
der Quelle und des Ziels. Wie zuvor erwähnt worden ist, sind die Pakettypen
von IEEE und anderen Standards definiert und im Stand der Technik bekannt.
Durch Lesen der IP-Adresse für
das Ziel ist das SOC 10 in der Lage, das Paket an eine
geeignete Router-Schnittstelle
zu richten, die mit der Ziel-IP-Adresse übereinstimmt. Das Paket 112 wird
daher auf dem CPS-Kanal 80 über die Sendeeinheit 18a geschickt
und an einen Port gerichtet, der an eine geeignete Router-Schnittstelle
(nicht dargestellt und nicht Teil des SOC 10) angeschlossen
ist, bei dem das Ziel B sich befindet. Steuer-Frames, die als solche
von deren Zieladresse identifiziert werden, werden an die CPU 52 mittels des
CMIC 40 geschickt. Die Ziel-Mac-Adresse ist daher die Router-Mac-Adresse
für B.
Die Router-Mac-Adresse
wird durch Mitwirkung der CPU 52 gelernt, die eine ARP-(Adress-Auflösungs-Protokoll)-Anforderung
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 daher das SOC 10 die Mac-Adresse lernen.
Durch den Vorgang des Betätigens
und des Lernens jedoch ist es nur das erste Paket, das dieser aufgrund
der Beteiligung der CPU 52 „langsamen" Behandlung unterworfen ist. Nachdem
die geeigneten Mac-Adressen gelernt worden sind, kann die Vermittlung
bei Leitungsgeschwindigkeit über
die Verwendung der gleichzeitigen Tabellen-Look-Ups stattfinden,
da die erforderliche Information von diesen Tabellen gelernt wird.
Das Implementieren der Tabellen im Silicium als zweidimensionale
Arrays ermöglicht
solche schnellen gleichzeitigen Look-Ups. Wenn einmal die Mac-Adresse
für B gelernt
worden ist, wechselt, wenn Pakete mit einer IP-Adresse für B eintreffen,
der Eingang 14a die IP-Adresse zu der Ziel-Mac-Adresse,
um eine Vermittlung bei Leitungsgeschwindigkeit zu ermöglichen.
Ebenso wird die Quelladresse des eingehenden Pakets zu der Router-Mac-Adresse für A im Gegensatz
zu der IP-Adresse für
A gewechselt, sodass die Bestätigung
von B an A in einer schnellen Weise behandelt werden kann, ohne
die Verwendung einer CPU auf den Zielzweck zu erfordern, um die Quell-Mac-Adresse
zu identifizieren, die das Ziel für die Bestätigung sein soll. Zusätzlich wird
ein TTL-(time-to-live) bzw. Lebenszeit)-Feld auf geeignete Weise
gemäß dem IETF
(Internet Engineering Task Force) Standard verändert. Ein einzigartiger Gesichtspunkt
des SOC 10 ist, dass die gesamte Vermittlung, die Paketverarbeitung
und die Tabellen-Look-Ups in Hardware durchgeführt werden, statt dass erfordert
wird, dass die CPU 52 oder eine andere CPU Zeit zum Verarbeiten
aufwendet. Es soll angemerkt werden, dass die Ebene-3-Tabellen für den EPIC 20 verschiedene
Größen haben
können;
in einem bevorzugten Ausführungsbeispiel
sind diese Tabellen in der Lage, bis zu 2000 Adressen zu halten
und sind dem Fallenlassen und Löschen von
gealterten Adressen unterworfen, wie es hier erklärt ist.
-
Wie zuvor erwähnt, wird wenn ein Datenpaket 112 in
das SOC 10 über
einen Port 24 eintrifft und zu dem Eingangssubmodul 14 geschickt
wird, ein Adressen-Look-Up in der ARUL3-Tabelle 21 durchgeführt, um zu
ermitteln, ob diese Adresse bereits gelernt worden ist. Das Look-Up
wird logisch auf eine geeignete Tabelle 21 mittels einer Suchmaschine 210 durchgeführt, wie
es in 38 dargestellt
ist. Look-Ups werden üblicherweise
von der Tatsache ermöglicht,
dass die Tabellen in einer sortierten Weise gespeichert sind und
die Adressen gesucht werden, indem ein binäres Suchverfahren oder ein
Suchverfahren des Gleichschritttyps.
-
Es wird ein Verfahren und eine Struktur
zum Beschleunigen von Suchen innerhalb einer Adresstabelle 21,
wie beispielsweise eine Ebene-2-Tabelle zur Verfügung gestellt. Unter Bezugnahme
auf 39 wird eine detailliertere
Ansicht einer beschleunigten Look-Up-Konfiguration mit Bezug auf die Adresstabelle 21 und
die Suchmaschine 210 offenbart. In einem Beispiel kann
die Adresstabelle 21 eine einzelne sortierte 8K-Tabelle sein,
die von einer einzigen Suchmaschine 210 durchsucht wird.
In dem beschleunigten Beispiel, das in 38 dargestellt ist, wird die einzelne
Adresstabelle 21 in zwei Tabellen 211 und 212 mit
der halben Größe unterteilt, die
jeweils eine Tabelle halber Größe mit 4K-Einträgen haben.
Diese Tabelle kann geteilt werden, indem die Tabelle 210 alle
geraden Adresseinträge
von der ursprünglichen
Adresstabelle 21 enthält
und die Tabelle 212 alle ungeraden Adresseinträge von der
ursprünglichen
Adresstabelle 21 enthält.
Durch Aufteilen der ursprünglichen
Adresstabelle 21 in zwei unterschiedliche Tabellen auf
der Grundlage des letzten Bits der Tabellenadresse, bleibt jede
der Tabellen 211 und 212 in sortierter Reihenfolge
und enthalten die Einträge
von dem gesamten Adressbereich der ursprünglichen Tabelle 21.
Die Suchmaschine 210 kann dann in zwei getrennte Suchmaschinen
unterteilt werden, die erste Suchmaschine 213 und die zweite
Suchmaschine 214, wie es in 38 dargestellt
ist, die dazu konfiguriert sind, gleichzeitig Adress-Look-Ups für zwei Datenpakete
durchzuführen. Im
SOC 10 werden die Pakete für das Look-Up in Schlagen gereiht,
da jedes EPIC-Modul 20 und/oder GPIC-Modul-30 eine Mehrzahl
von Ports aufweist. Gleichzeitige Look-Ups sind möglich, da
der Suchalgorithmus der in den SOC 10 implementiert ist,
bis zum allerletzten Suchzyklus keinen Unterschied macht zwischen ungeraden
und geraden Adresseinträgen.
Diese Optimierung ermöglicht
es daher, dass ein beträchtliches Ausmaß an Suchen
für zwei
getrennte Paketadressen gleichzeitig parallel durchgeführt werden,
wobei auf diese Weise der Durchsatz nahezu verdoppelt wird, auch
wenn die derzeitige Zeit sich nicht verändert, die zur Vervollständigung
jedes einzelnen Look-Ups erfordert wird.
-
Wenn daher zwei Paketen in einem
EPIC-Modul 20 für
den Adress-Look-Up kommen, werden der Quell- und der Ziel-Adressen-Look-Up
ineinander geschachtelt, wobei auf diese Weise die Resourcen des SOC 10 für eine höchste Effizienzzeit
gemultiplext werden. Die Verwendung von zwei Suchmaschinen 213 und 214 ermöglichen
es den Suchmaschinen, gleichzeitig zu arbeiten, da deren Suchtabellen 211 und 212 unterschiedliche
Suchschlüssel
verwenden. Nur der letzte Vergleich bei der binären Suche wird einen Unterschied zwischen
geraden und ungeraden Adressen machen. Daher werden für eine 8K
tiefe Adressetabelle 21, die in zwei 4K tiefe Tabellen 211 und 212 unterteilt
worden ist, die ersten 12 Suchzyklen für die Adressen des eingehenden
Pakets parallel durchgeführt,
wohingegen der 13. und abschließende
Suchzyklus, der nur durchgeführt
wird, wenn die entsprechende Suchmaschine noch nicht eine Übereinstimmung
für eine
gewünschte Adresse
in der Adresstabelle gefunden hat, einen Zugriff auf die andere
Adresstabelle erfordert, um die gewünschte Adresse aufzufinden.
Unter Bezugnahme auf die 40a ist
eine ursprüngliche,
nicht geteilte Tabelle als 21 dargestellt. Die 40b zeigt, die die Tabelle 21 in
zwei Tabellen 211 und 212 unterteilt wird, in denen
die Tabelle 211 gerade Adress-Orte enthält, und die Tabelle 212 ungerade
Adress-Orte enthält,
wobei beide in sortierter Reihenfolge verbleiben.
-
Für
ein erstes Beispiel wird angenommen, dass ein erstes Datenpaket
und ein zweites Datenpaket an einem einzigen GPIC 20 auf
dem SOC 10 ankommen und zu den Adress-Look-Ups geschickt werden. Es wird angenommen,
dass das erste Paket von der Mac-Adresse
D kommt und an eine Mac-Adresse AE gerichtet ist. Das zweite Paket
kommt von der Mac-Adresse C und ist an die Mac-Adresse AH gerichtet.
In einem Switch, der einen Overhead mit vier Taktzyklen benötigt, beginnen
die Adress-Look-Ups im wesentlichen gleichzeitig bei Taktzyklus
vier, wobei das erste Paket von der ersten Suchmaschine 213 behandelt
wird, und das zweite Paket von der zweiten Suchmaschine 214 behandelt
wird. Die erste Suchmaschine 213 sucht anfänglich die geraden
Adress-Speicher-Orte in der Tabelle 211, wohingegen die
zweite Suchmaschine 214 die ungeraden Adress-Speicher-Orte in der Tabelle 212 sucht,
wie es durch die 40b dargestellt
ist. Die Suchmaschinen sind so konfiguriert, dass sie binäres Suchen
initiieren, welches auf eine Gleichschrittweise oder parallele Weise
durchgeführt
wird, wobei bei dem Mitteleintrag der jeweiligen Tabelle begonnen
wird und die Tabellen auf geeignete Weise sortiert sind. Daher beginnt
die erste Suchmaschine 213 die Durchsuchung der Tabelle
211 bei dem Speicher-Adress-Ort 16 und vergleicht die Quelladresse
D des ersten Datenpakets als Quell-Such-Schlüssel mit dem Eintrag Q, der
an dem Speicher-Adress-Ort 16 gespeichert ist, wie es in 40b gezeigt ist. Das Ergebnis
dieses Vergleichs ist die Bestimmung, dass die erste Suchmaschine 213 fortfahren
soll, die gewünschte
Adresse bei niedrigeren Speicher-Adress-Orten zu suchen, da der
Adresseintrag Q numerisch größer als
die gewünschte
Adresse D ist, welches anzeigt, dass die gewünschte Adresse, sofern sie
in der Tabelle ist, an einem darunter liegenden Speicher-Adress-Ort
gespeichert sein muß.
Wie zuvor erörtert,
muß sowohl
ein Quell-Adress- als auch ein Ziel-Adress-Look-Up für jedes
Datenpaket durchgeführt
werden. Daher vergleicht beim Taktzyklus 5 die erste Suchmaschine 213 die
Ziel-Adresse AE des ersten Datenpakets als Suchschlüssel mit
dem Eintrag Q, der an dem mittleren Speicher-Adress-Ort 16 gespeichert ist
und bestimmt, dass die Suche bei höheren Speicher-Adress-Orten weitergeführt werden
soll, da der Eintrag Q numerisch in Hexadeximal ausgedrückt geringer
als die gewünschte
Adresse AE ist. Dies zeigt an, dass die gewünschte Zieladresse, sofern
sie in der Tabelle ist, an einem darüberliegenden Speicher-Adress-Ort
gespeichert sein muß.
Bei Taktzyklus 6 schaut die erste Suchmaschine 213 in
den Speicher-Adress-Ort 8,
wobei der Suchschlüssel
D mit dem Eintrag E verglichen wird, und bestimmt, dass die Suche
bei der darunterliegenden Speicher-Adress-Orten fortgesetzt werden
soll, auf ähnliche
Weise wie die oben erörterte.
Bei Taktzyklus 7 schaut die erste Suchmaschine 213 in
den Speicher-Adress-Ort 24, wobei sie den Ziel-Such-Schlüssel AE
mit dem Eintrag Y vergleicht, und bestimmt, dass die Suche bei höheren Speicher-Adress-Orten
fortgesetzt werden soll. Bei Taktzyklus 8 schaut die erste
Suchmaschine 213 in den Speicher-Adress-Ort 4, wobei sie den Quell-Such-Schlüssel D mit
dem Eintrag E vergleicht, der an diesem Ort gespeichert ist. Als
Ergebnis dieses Vergleichs wird bestimmt, dass die Suche an darunter
liegenden Speicher-Adress-Orten fortgesetzt werden soll. Bei Taktzyklus 9 schaut
die erste Suchmaschine 213 in den Speicher-Adress-Ort 28,
wobei der Ziel-Such-Schlüssel
AE mit dem Adresseintrag AC verglichen wird, und bestimmt, dass
die Suche bei höheren bzw.
darüberliegenden
Speicher-Adress-Orten fortgesetzt werden soll. Bei Taktzyklus 10 schaut
die erste Suchmaschine 213 in den Speicher-Adress-Ort 2 und
vergleicht den Such-Schlüssel D mit
dem Eintrag C und bestimmt, dass die Suche in der ungeraden Adresstabelle 112 bei
dem Speicher-Adress-Ort 3 fortgesetzt werden soll. Diese
Bestimmung ist ein Ergebnis der ersten Suchmaschine 213,
die bestimmt, dass die gewünschte Adresse
D in keinem der Speicher-Adress-Orte 2 oder 4 gefunden
worden ist, die aufeinanderfolgende Einträge sind, die die gewünschte Adresse
numerisch umgeben. Angesichts dieser Situation ist es daher bekannt, dass
die gewünschte
Adresse nicht in der ersten Tabelle 211 abgelegt ist und
daher die erste Suchmaschine 213 versuchen muß, in die
zweite Adresstabelle 212 bei dem Speicher-Adress-Ort 3 zu
sehen, da dieser Speicher- Adress-Ort
im Zwischenraum zwischen den zuvor durchsuchten Speicher-Adress-Orten 2 und 4 angeordnet
ist. Bei Taktzyklus 11 schaut die erste Suchmaschine 213 in
den Speicher-Adress-Ort 30,
den letzten Speicher-Adress-Ort in der geraden Adresstabelle 211,
wobei sie den Zielsuchschlüssel
AE mit dem Eintrag AE vergleicht und bestimmt bei Takt 12,
dass das Ergebnis ein Treffer ist. Da ein Treffer bestimmt worden
ist, fährt
die erste Suchmaschine 213 nicht fort, nach dem Eintrag
AE in der ungeraden Adresstabelle 212 zu suchen, da das
Ziel-Adress-Look-Up für
das erste Paket vollständig
ist. Es ist jedoch die Quelladresse noch nicht gefunden und daher
schaut im Taktzyklus 12 die erste Suchmaschine 213 in
die ungerade Adresstabelle 212 bei dem Speicher-Adress-Ort 3,
wobei sie den Quell-Such-Schlüssel D mit
dem Eintrag D vergleicht und bei Taktzyklus 13 bestimmt,
dass das Ergebnis ein Treffer ist. So ist das Adress-Look-Up für das erste
Paket vollständig,
da sowohl die Quell- und Zieladresse innerhalb der entsprechenden
Adress-Look-Up-Tabellen gefunden worden sind.
-
Während
die Suchmaschine 213 die zuvor genannten Look-Ups durchführt, die
der Quell- und der Zieladresse des ersten Datenpakets zugeordnet
sind, führt
die zweite Suchmaschine 214 gleichzeitig die Look-Ups für die Quell-
und Zieladresse des zweiten Datenpakets durch. Beim Taktzyklus 4,
gleichzeitig zu dem Vergleich der ersten Suchmaschine 213 des
geraden Speicher-Adress-Orts 16 schaut die zweite Suchmaschine 214 in
den ungeraden Speicher-Adress-Ort 16,
der die Mitte der ungeraden Adresstabelle 212 darstellt.
Die zweite Suchmaschine 214 vergleicht den Quell-Such-Schlüssel Z mit
dem Adresseintrag R und bestimmt, dass die Suche bei höheren Speicher-Adress-Orten
weitergeführt
werden soll, da R numerisch kleiner als die gewünschte Adresse ist. Bei Taktzyklus 5 schaut
die zweite Suchmaschine 214 in die Speicheradresse 17,
wobei sie den Ziel-Adress-Suchschlüssel AH mit dem Eintrag R vergleicht,
und bestimmt, dass die Suche bei höhreren Speicher-Adress-Orten fortgeführt werden
soll, da die gewünschte
Adresse numerisch kleiner als der an dem Speicher-Adress-Ort 17 gespeicherte
Eintrag ist. Bei Taktzyklus 6 schaut die zweite Suchmaschine 214 in
den Speicher-Adress-Ort 25, wobei sie den Quell-Such-Schlüssel Z mit
dem Eintrag Z vergleicht, und bestimmt bei Takt 7, dass
das Ergebnis ein Treffer ist. Der Quell-Adress-Look-Up für das zweite
Datenpaket ist somit vollständig.
Bei Taktzyklus 7 fährt
die zweite Suchmaschine 214 fort, nach der Zieladresse
zu suchen, indem sie in den Speicher-Adress-Ort 25 schaut
und den Ziel-Such-Schlüssel
AH mit dem Eintrag Z vergleicht. Dieser Vergleich bestimmt, dass
die Suche bei höheren
Speicher-Adress-Orten fortgesetzt werden soll. Bei Taktzyklus 9 wertet
die zweite Suchmaschine 214 die Inhalte des Speicher-Adress-Orts 29 aus,
indem sie den Ziel-Such-Schlüssel
AH mit dem Eintrag AD vergleicht, und bestimmt, dass die Suche bei
höheren
Speicher-Adress-Orten fortgesetzt werden soll. Bei Taktzyklus 11 schaut
die zweite Suchmaschine 214 in den Speicher-Adress-Ort 31,
vergleicht den Ziel-Such-Schlüssel
AH mit dem Eintrag AF und bestimmt bei Takt 12, dass das
Ergebnis verfehlt wurde. Der Ziel-Adress-Look-Up für das zweite
Paket ist somit vollständig.
Der Ziel-Adress-Look-Up für
das zweite Paket benötigt
kein abschließendes
Lesen aus der geraden adressierten Tabelle 213; die Suchmaschine 214 bestimmt
einen Fehler, wenn das Ergebnis der abschließenden Suche keinen Zeiger
von der Tabelle 212 auf die Tabelle 211 liefert.
-
Als zweites Beispiel wird angenommen,
dass ein erstes Datenpaket in einen Port an dem EPIC 20 auf dem
SOC 10 von der Mac-Adresse A kommt, das an eine Mac-Adresse
JJ gerichtet ist, während
ein zweites Datenpaket gleichzeitig in einen anderen Port auf dem
EPIC 20 des SOC 10 von der Mac-Adresse G kommt und
an die Mac-Adresse CC gerichtet ist. In einem Switch, der wieder
einen Overhead von vier Taktzyklen benötigt, beginnen die Adress-Look-Ups
bei Taktzyklus 4, wobei das erste Datenpaket von der ersten
Suchmaschine 213 behandelt wird und das zweite Datenpaket
von der zweiten Suchmaschine 214 behandelt wird. Die erste
Suchmaschine 213 durchsucht anfänglich die gerade Adess-Ort-Tabelle 211 und
die zweite Suchmaschine 214 durchsucht die ungerade Adress-Ort-Tabelle 212.
Die Suchmaschinen sind wieder so konfiguriert, dass sie einen binären Suchvorgang
oder einen Suchvorgang des Gleichschritt-Typs bei dem mittleren
Adressport der jeweiligen Tabelle zu starten, wobei die Tabellen 211 und 212 von
der primären
Adresstabelle auf geeignete Weise geteilt und sortiert sind, wie
es in den 41a und 41b gezeigt ist. Daher vergleicht
bei Taktzyklus 4 die erste Suchmaschine 213 den
Quell-Adress-Suchschlüssel
A mit dem Eintrag Y, der an dem Speicher-Adress-Ort 16 gespeichert
ist, und bestimmt, dass die Suche bei niedrigeren bzw. darunterliegenden Speicher-Adress-Orten
fortgesetzt werden soll, da der hexadezimale numerische Wert der
gewünschten Adresse
größer als
der Eintrag ist. Bei Taktzyklus 5 vergleicht die erste
Suchmaschine 213 den Ziel-Adress-Suchschlüssel JJ
mit dem Eintrag Y und bestimmt, dass die Suche bei höheren Speicher-Adress-Orten
fortgesetzt werden soll, da der hexadezimale numerische Wert der
gewünschten
Adresse geringer als der Eintrag ist. Bei Taktzyklus 6 vergleicht
die erste Suchmaschine 213 den Quell-Adress-Suchschlüssel mit
dem Eintrag M, der an dem Speicher-Adress-Ort 8 gespeichert
ist, und bestimmt, dass die Suche bei niedrigeren Speicher-Adress-Orten
fortgesetzt werden soll. Bei Taktzyklus 9 vergleicht die
erste Suchmaschine 213 den Ziel-Adress-Suchschlüssel mit
dem Eintrag KK, der an dem Speicher-Adress-Ort 28 gespeichert
ist, und bestimmt, dass die Suche bei niedrigeren Speicher-Adress-Orten
fortgesetzt werden soll. Bei Taktzyklus 10 vergleicht die
erste Suchmaschine 213 den Quell-Adress-Suchschlüssel mit
dem Eintrag D, der an dem Speicher-Adress-Ort 2 gespeichert
ist, und bestimmt, dass die Suche bei niedrigeren Speicher-Adress-Orten
fortgesetzt werden soll. Bei Taktzyklus 11 vergleicht die
erste Suchmaschine 213 den Ziel-Adress-Suchschlüssel mit
dem Eintrag GH, der an dem Speicher-Adress-Ort 26 gespeichert
ist, und bestimmt, dass die Suche in der ungeraden Adresstabelle 212 bei
dem Speicher-Adress-Ort 27 fortgesetzt werden soll. Diese
Bestimmung gründet
sich auf die Tatsache, dass die Suchmaschine 213 die Einträge in benachbarten
Speicher-Adress-Orten 26 und 28 mit dem Ziel-Suchschlüssel verglichen
hat und bestimmt hat, dass die gewünschte Adresse, falls sie in
der Tabelle ist, in einem Speicher-Adress-Ort zwischen diesen beiden
Speicher-Adress-Orten gespeichert sein würde. Als solche ist der einzige
verbleibende Speicher-Adress-Ort, der zum Suchen in dem Vorgang
nach dem Gleichschritt-Typ verfügbar
ist, der Speicher-Adress-Ort 27 in der ungeraden Adresstabelle 212.
Bei Taktzyklus 12 vergleicht die erste Suchmaschine 213 den
Quell-Adress-Suchschlüssel
mit dem Eintrag B, der bei dem Speicherort 0 gespeichert
ist und bestimmt, dass die Suche einen Fehler geliefert hat. Insofern
als der Eintrag B die niedrigste numerische Adresse in den Tabellen
ist, wird ein Fehler bestimmt und danach muss die Quell-Mac-Adresse
A gelernt und in die Tabelle an dem geeigneten Ort eingegeben werden,
um die sortierte Reihenfolge der Tabelle aufrecht zu erhalten, welches
hierin erörtert
werden wird. Bei Taktzyklus 13 vergleicht die erste Suchmaschine 213 den Ziel-Adress-Suchschlüssel JJ
mit dem Eintrag JJ, der an dem Speicher-Adress-Ort 27 der
ungeraden Adresstabelle 212 gespeichert ist, und bestimmt,
dass ein Treffer aufgetreten ist.
-
Zur Vervollständigung der oben genannten
Schritte wurde daher die Quelladresse des ersten Datenpakets nicht
gefunden und musste daher gelernt und in den Adresstabellgen gespeichert
werden. Die Zieladresse des ersten Datenpakets jedoch wurde bei
dem Speicherort 27 in der ungeraden Adresstabelle 212 gefunden
und daher wurde für
diese Adresse ein Treffer erklärt.
Als solches wurde der Suchvorgang für die Quell- und Zieladresse
für das
erste Datenpaket abgeschlossen. Wie bei dem ersten Beispiel müssen jedoch ebenso
die Quell- und die Zieladresse des zweiten Datenpakets innerhalb
der Adresstabellen gesucht werden.
-
Daher unternimmt die zweite Suchmaschine 214 gleichzeitig
mit den zuvor genannten Schritten, die der ersten Suchmaschine 213 bei
der Durchsuchung der geraden Adresstabelle 211 zugeordnet
sind, eine Durchsuchung der ungeraden Adresstabelle 212 nach
der Quell- und Zieladresse des zweiten Datenpakets. Die zweite Suchmaschine 214 beginnt
bei Taktzyklus 4 mit dem Vergleich des Quell-Adress-Suchschlüssels G mit
dem Adresseintrag AA, der an dem Speicher-Adress-Ort 17 in
der ungeraden Adresstabelle 212 gespeichert ist. Der Vergleich
führt zu
der Bestimmung, dass die Suche bei niedrigeren Speicher-Adress-Orten
fortgeführt
werden sollte, da der Eintrag G numerisch kleiner als der Adresseintrag
AA ist. Bei Taktzyklus 5 vergleicht die zweite Suchmaschine 214 den
Ziel-Adress-Suchschlüssel CC
mit dem Eintrag AA, der an dem Speicher-Adress-Ort 17 gespeichert
ist. Dieser Vergleich führt
zur Bestimmung, dass die Suche bei höheren Speicher-Adress-Orten
fortgeführt
werden soll. Bei Taktzyklus 6 vergleicht die zweite Suchmaschine 214 den Quell-Adress-Suchschlüssel G mit
dem Eintrag N, der an dem Speicher-Adress-Ort 9 gespeichert
ist. Die zweite Suchmaschine 214 bestimmt, dass der Eintrag
N numerisch größer als
die gewünschte
Adresse ist und daher muß die
Suche bei niedrigeren Speicher-Adress-Orten fortgesetzt werden.
Bei Taktzyklus 7 vergleicht die zweite Suchmaschine 214 den
Ziel-Adress-Suchschlüssel
CC mit dem Eintrag CF, der in dem Speicher-Adress-Ort 25 gespeichert
ist, und bestimmt, dass die Suche bei niedrigeren Speicher-Adress-Orten
fortgesetzt werden soll. Bei Taktzyklus 8 vergleicht die
zweite Suchmaschine 214 den ursprünglichen Adress-Suchschlüssel G mit
dem Eintrag J, der an dem Speicher-Adress-Ort 5 gespeichert
ist, und bestimmt, dass die Suche bei niedrigeren Speicher-Adress-Orten
fortgesetzt werden soll. Bei Taktzyklus 9 vergleicht die Suchmaschine 214 den
Ziel-Such-Adress-Suchschlüssel
mit dem Eintrag BC, der an dem Speicher-Adress-Ort 21 gespeichert
ist, und bestimmt, dass die Suche bei höheren Speicher-Adress-Orten
fortgesetzt werden soll. Bei Taktzyklus 10 vergleicht die
Suchmaschine 214 den Quell-Adress-Suchschlüssel G mit dem
Eintrag E, der an dem Speicher-Adresss-Ort 3 gespeichert
ist, und bestimmt, dass die gewünschte
Adresse numerisch größer als
der Eintrag E ist. Da zuvor während
des Taktzyklusses C bestimmt worden ist, dass die gewünschte Adresse
größer als
der Eintrag am ungeraden Speicher-Adress-Ort 3 ist, und bei Taktzyklus 8 bestimmt
worden ist, dass er geringer als der Eintrag bei dem ungeraden Speicher-Adress-Ort 5 ist,
bestimmt daher die zweite Suchmaschine 214, dass der nächste Vergleich
in der geraden Adresstabelle 211 bei dem Speicher-Adress-Ort 4 sein
wird. Bei Taktzyklus 11 vergleicht die zweite Suchmaschine 214 den Ziel-Adress-Suchschlüssel CC
mit dem Eintrag BE und bestimmt, dass die Suche bei höheren Speicher-Adress-Orten fortgesetzt
werden soll. Die zweite Suchmaschine 214 hat jedoch bereits
den benachbarten höheren
Speicher-Adress-Ort, der der Speicher-Adress-Ort 25 war,
in Taktzyklus 7 durchsucht. Daher bestimmt die zweite Suchmaschine 214,
dass der nächste
Vergleich für
die Zieladresse in der geraden Adresstabelle 211 bei dem
Speicher-Adress-Ort
24 sein wird. Bei Taktzyklus 12 versucht
die zweite Suchmaschine 214, die gerade Adresstabelle 211 nach
dem Quell-Adress-Suchschlüssel
G zu durchsuchen; wobei jedoch, wie zuvor erörtert, die erste Suchmaschine 213 einen
Look-Up für
den Quell-Adress-Schlüssel A bei
dem Speicher-Adress-Ort 0 in der geraden Adresstabelle 211 während dieses
bestimmten Taktzyklusses durchführt
und somit die zweite Suchmaschine 214 während dieses Taktzyklusses
still steht und nicht in der Lage ist, den Vergleich durchzuführen. Bei
Taktzyklus 13 hat die erste Suchmaschine 213 ihren
Look-Up in der geraden Adresstabelle 211 abgeschlossen
und es wird der zweiten Suchmaschine 214 erlaubt, mit dem
zuvor ausgesetzten bzw. gestoppten Adress-Look-Up in der geraden
Adresstabelle 211 fortzufahren. Daher vergleicht bei Taktzyklus 13 die
zweite Suchmaschine 214 den Eintrag G, der in dem Speicherort 4 der
geraden Adresstabelle gespeichert ist, mit dem Quell-Adress-Suchschlüssel G.
Bei Taktzyklus 14 wird ein Treffer für die Quelladresse bestimmt
und die zweite Suchmaschine 214 führt die Suche nach der Zieladresse
des zweiten Datenpakets fort, indem der Ziel-Adress-Suchschlüssel CC
mit dem Eintrag CC verglichen wird, der in dem Speicher-Adress-Ort 24 in
der geraden Adresstabelle 211 gespeichert ist. Bei Taktzyklus 15 wird
ein Treffer für
die Zieladresse bestimmt.
-
Nach Vervollständigung des Taktzyklusses 15 sind
sowohl der Quell- als auch Ziel-Adress-Look-Up für das erste und das zweite
Datenpaket abgeschlossen. Die Quelladresse des ersten Datenpakets
wurde nicht innerhalb der Tabellen gefunden und mußte daher
gelernt und auf geeignete Weise in die Tabellen eingefügt werden.
Die verbleibenden Adressen, einschließlich der Zieladresse des ersten
Datenpakets und die Quell- und Ziel-Adresse des zweiten Datenpakets
wurden innerhalb der Adresstabellen gefunden.
-
In Fällen, in denen wie oben erwähnt eine
Adresse gelernt werden muß,
folgt ein spezifisches Betriebsverfahren. Als ein Beispiel wird
die primäre
Adresstabelle, wie in 42 gezeigt,
wieder in die erste und zweite Adresstabelle 211 und 212 aufgeteilt,
wie es in 240a dargestellt ist. Es
wird angenommen, dass die Adresse F als Ergebnis eines Suchvorganges
erlernt werden soll, der die Adresse nicht innerhalb der Tabellen findet.
Insofern die in den Tabellen gespeicherten Adresseinträge sortiert
sind, wird die Adresse F logisch an den Speicher-Adress-Ort 4 gehören, wenn
die sortierte Reihenfolge bei Einfügung aufrecht erhalten werden soll.
Der Speicher-Adress-Ort 4 ist derzeit jedoch von dem Eintrag
G belegt. Um daher Platz zu schaffen, damit die Adresse F gelernt
und richtigerweise an dem Speicher-Adress-Ort 4 gespeichert
werden kann, muß jeder der
Einträge
in den Speicher-Adress-Orten 4 bis 26 bewegt oder
nach oben zu den benachbarten Speicher- Adress-Orten verschoben werden, wobei
auf diese Weise der Speicher-Adress-Ort 4 geöffnet wird.
Um diese Verschiebung dieser Adresseinträge zu erreichen, liest eine
Lernzustandsmaschine den Adresseintrag GH von dem Speicher-Adress-Ort 26 und
den Adresseintrag CF von dem Speicher-Adress-Ort 25 in
einem einzigen Taktzyklus. Wieder in dem gleichen Taktzyklus werden
der Adresseintrag GH in den Speicher-Adress-Ort 27 geschrieben,
wohingegen der Adresseintrag CF in den Speicher-Adress-Ort 26 geschrieben
wird. Diese gleichzeitige paarweise Lese-/Schreib-Vorgang wird nach
unten durch die Speicher-Adress-Orte innerhalb der Tabellen fortgesetzt,
bis die Einträge
K und J von den Speicher-Adress-Orten 6 und 5 gelesen
werden und in die Speicher-Adress-Orte 7 bzw. 6 gespeichert
werden. Zu diesem Zeitpunkt wird der Eintrag G von dem Speicher-Adress-Ort 4 gelesen
und in den Speicher-Adress-Ort 5 geschrieben, der in der
vorangegangenen Schiebeoperation von der Adresse 9 geräumt worden
ist. Dies führt
zu dem gewünschten
Leerstand an dem Speicher-Adress-Ort 4, wodurch so Platz
für die
gelernte Speicher-Adresse
F geschaffen wird, die in den Speicher-Adress-Ort 4 geschrieben
werden soll. Als ein Ergebnis dieser bestimmten Tabellenkonfiguration
ist die Lernrate nahezu doppelt so hoch wie die eines Schemas mit
einer einzigen Tabelle.
-
In dem Fall, in dem ein einziges
Datenpaket von einem Eingang ankommt und eine Adressauflösung benötigt und
es keine anderen in der Schlage befindlichen Datenpakete gibt, die
auf einen Adress-Look-Up warten, behandelt die Suchmaschine den
Adress-Look-Up für das Datenpaket
einzeln. Wenn unmittelbar nachdem der Look-Up für das einzelne Datenpaket gestartet
worden ist, eine Flut von Datenpaketen von anderen Eingängen ankommt,
müssen
in dem schlimmsten Fall die neu angekommenen Datenpakete für 30 Taktzyklen
warten, während
die Quell- und Zieladresse des einzelnen Datenpakets in den Tabellen
gesucht wird, bevor die Suchmaschinen den Look-Up für die neu
angekommen Datenpakete beginnen können. Wenn ein beliebiges der
neu angekommenen Datenpakete von den Gigabit-Ports sind, muß das Entscheidungsschema
so konfiguriert sein, dass es diesen Datenpaketen eine höhere Priorität zuteilt,
da deren Adress-Look-Ups alle innerhalb von 90 Taktzyklen abgeschlossen
sein muß,
nachdem die Adress-Look-Ups der einzelnen Datenpakete abgeschlossen
sind. Die vorliegende Offenbarung schafft einen klaren Vorteil gegenüber Schemas mit
einer einzelnen Adresstabelle, da die große Mehrheit der gleichzeitigen
Suchen parallel durchgeführt
wird. In dem Fall, indem beide Suchen nur Vergleiche erfordern,
wird daher die Leistung verdoppelt, unabhängig von Adress-Einfügungen und
-löschungen,
da diese Vorgänge
von geringerer Priorität
sind und keine Auswirkung auf die Leistung haben. Als ein bestimmtes
Beispiel wird die Leistung für
die parallele Bearbeitung berechnet, indem die Anzahl der Zyklen
pro Suche mit der Anzahl der Taktzyklen pro Suchzyklus multipliziert
wird und dann der Taktoverhead addiert wird. Diese Rechnung wird
durch die folgende Gleichung dargestellt:
Leistung = (#Parallelzyklen)
A (2 Takte/Suchzyklus) + Overhead (1)
-
Daher wird die Leistung für eine 8K-Tabelle
folgendermaßen
dargestellt:
(13)A(2)+4 = 30 Taktzyklen für 2 Pakete oder 15 Taktzyklen
für ein
einzelnes Datenpaket (2)
-
Die Leistung für eine 16K-Tabelle wird folgendermaßen dargestellt:
(14)A(2)+
4 = 32 Taktzyklen für
2 Pakete oder
16 Taktzyklen für ein einzelnes Paket (3)
-
Wenn nur ein einzelnes Datenpaket
einen Adress-Look-Up benötigt,
stellt das Folgende die Suchzeit zum Durchführen des Look-Ups dar:
(13)A(2)+4
= 30 Taktzyklen pro Paket (4)
(14)A(2)+4 = 32 Taktzyklen pro
Paket (5)
-
Das Verfahren schafft daher eine
wesentliche Erhöhung
bei der Leistung der Adress-Look-Up-Zeit
gegenüber
einer einzigen Tabelle ARL, während
nicht die Benutzung von beliebigen zusätzlichen Speicher erfordert
wird. Weiterhin wird die Look-Up- und Lern-Latenzzeit gegenüber einer
einzigen Tabelle ARL nahezu halbiert, da die Mehrheit der Lesevorgänge und
Schreibvorgänge,
die damit verbunden sind, parallel durchgeführt werden kann, wobei auf
diese Weise die Anzahl der Taktzyklen verringert wird, die zum Vervollständigen des Verschiebens
der Speicheradressen und zum Einsetzen einer gelernten Adresse erforderlich
sind. Zusätzlich verringert
sich die Leistung in dem schlimmsten Fall nur um zwei Taktzyklen,
da die Tabellengröße von 8k
auf 16k erhöht
wird. Weiterhin kann das oben beschriebene Beispiel physikalisch
auf mehreren Arten implementiert werden. Beispielsweise können die
Adresstabellen und die Suchmaschinen in Hardware implementiert werden,
wie beispielsweise auf einem einzigen Halbleitersubstrat zusammen
mit verschiedenen Komponenten des SOC 10. Alternativ können die
Adresstabellen und die Suchmaschinen als separate diskrete Hardwarekomponenten
implementiert werden, die elektrisch mit den Komponenten des SOC 10 verbunden
sind. Weiterhin können
die Tabellen und die Suchmaschinen, die dem SOC 10 zugeordnet
sind, durch Software implementiert und durchsucht werden, beides
exklusiv oder teilweise. Auch wenn die vorliegende Vorrichtung und das
vorliegende Verfahren im Zusammenhang mit der Adressauflösung in
einem Netzwerk-Switch beschrieben ist, wird zusätzlich die Vorrichtung und
das Verfahren zum Suchen einer sortierten Tabelle die hier erwähnt sind,
dahingehend betrachtet, dass sie auf zahlreiche alternative Anwendungen
anwendbar sind.
-
Filterung
-
Unter Bezugnahme wieder auf die Diskussion
der 14, wird eine Filteranforderung
an den FFP 141 geschickt, sobald die ersten 64 (vierundsechzig)
Bytes des Pakets in dem Eingangs-FIFO 142 ankommen. Der FFP 141 beinhaltet
einen umfassenden Filtermechanismus, der das SOC 10 in
die Lage versetzt, Paketfilter auf jedes beliebige Feld eines Pakets
von der Ebene 2 bis zur Ebene 7 des OSI-7-Schichten-Modells
zu setzen. Die Filter werden zur Paketklassifikation auf der Grundlage
von verschiedenen Protokollfeldern innerhalb der Pakete selbst verwendet.
Verschiedene Aktionen können
auf der Grundlage der Paketklassifikation durchgeführt werden,
einschließlich
des Fallenlassen des Pakets, des Senden des Pakets an die CPU, des
Senden des Pakets an andere Ports, das Senden des Pakets an bestimmte
COS-Prioritäts-Schlangen
und des Wechselns der Diensttyp-(TOS)-Präzedenz,
beispielsweise. Filter werden ebenso weit verbreitet verwendet,
um Sicherheitsmerkmale zu implementieren, da sie so konfiguriert
werden können,
dass sie einem Paket die weitere Übermittlung nur dann erlauben
können,
wenn einem Filter entsprochen wird. Wenn es keine Übereinstimmung
gibt, können
Maßnahmen
getroffen werden, die ausschließlichen
Filtern zugeordnet sind. Eine weitere Erörterung von Filtern, sowohl
einschließliche
als auch ausschließliche,
wird später
vorgestellt werden.
-
Es soll erwähnt werden, dass das SOC 10 die
Fähigkeit
hat, sowohl tagged als auch untagged bzw. markierte und unmarkierte
Pakete zu behandeln, die in dem Switch eingehen. Markierte Pakete
sind gemäß den IEEE-Standards
markiert und beinhalten ein spezifisches IEEE 802.1p-Prioritätsfeld für das Paket.
Nicht markierte Pakete haben keine Markierung und beinhalten daher
kein 802.p-Prioritätsfeld.
Das SOC 10 kann einen geeigneten Prioritätswert für ein Paket
auf der Grundlage entweder des eingehenden Ports oder der Zieladresse
zuteilen. Wie bei dem hier erörterten
ARL-Tabellenformat erwähnt,
ist ein SCP-(Quell-TOS-Prioritäts)-Bit
als eines dieser Felder in der Tabelle enthalten. Wenn dieses SCP-Bit
gesetzt ist, ordnet das SOC 10 eine Gewichtung auf der
Grundlage eines Quell-COS-Werts in der ARL-Tabelle zu. Wenn das
SCP nicht gesetzt ist, wird das SOC 10 einen COS für das Paket
auf der Grundlage des Ziel-COS-Felds in der ARL-Tabelle zuordnen.
Diese COS-Werte sind 3-Bit-Felder in der ARL-Tabelle, wie zuvor
in den Beschreibungen des ARL-Tabellenfelds erwähnt worden ist.
-
Der FFP 141 ist im wesentlichen
eine programmierbare, von einer Zustandsmaschine angetriebene Regelmaschine.
Die Filter, die von dem FFP verwendet werden, sind 64 (vierundsechzig)
Byte breit und werden auf ein eingehendes Paket angewendet. In einigen
Ausführungsformen
kann eine 64-Byte-Filtermaske verwendet werden und auf beliebige
ausgewählte
64 Byte oder 512 Bit eines Pakets angewendet werden. Ein Filter
kann erzeugt werden, indem ausgewählte Felder eines eingehenden
Pakets so analysiert werden, dass eine 64-Byte-Filtermaske erzeugt
wird, die selektiv auf interessierende Felder eines eingehenden
Pakets angewendet wird. Ein Filter kann erzeugt werden, indem eine
vorbestimmte Anzahl von Offsets auf das eingehende Datenpaket 112 angewendet
wird, wobei eine vorbestimmte Anzahl an Bytes unmittelbar im Anschluss an
jeden einzelnen Offset von dem Paket analysiert werden und danach
zusammengefügt
werden, um einen Filterwert zu bilden, der in dem Filtervorgang
verwendet wird.
-
Wie zuvor ausgeführt, werden Filter hauptsächlich zur
Paketklassifikation auf der Grundlage von ausgewählten Protokollfeldern in dem
Paket verwendet. Auf der Grundlage der Paketklassifikation kann
eine Vielzahl von Aktionen durchgeführt werden. Die Aktionen können das
Außerachtlassen
der Pakete, das Senden der Pakete an die CPU, das Senden der Pakete
an einen gespiegelten Port, das Zuordnen einer Priorität, die Veränderung
des TOS-Kennzeichens usw. beinhalten. Der FFP 141 beinhaltet
eine Filterlogik 1411, die in 15 dargestellt ist und selektiv vorbestimmte
Felder der eingehenden Datenpakete analysiert, wobei auf diese Weise
effektiv die Werte der gewünschten
Felder von den Mac-, IP-, TCP- und UDP-Headern erhalten werden.
Die 20 ist eine Tabelle,
die die verschiedenen wichtigen Felder und deren entsprechende Offsets für verschiedene
Pakettypen darstellt. Andere Felder, die im Bezug zu IPX und/oder
anderen Feldern stehen können,
können
ebenso in diesem Filterschema durch Auswahl dieser bestimmten Felder
verwendet werden, die von dem Paket bei der Filterung analysiert
werden.
-
Das SOC 10 beinhaltet eine
Filterdatenbank, die eine Mehrzahl von Filtersätzen enthält. In einem Beispiel können zwei
Filtersätze
vorgesehen sein, wobei jeder acht Filter und eine zugeordnete Regeltabelle
aufweist, die 512 Einträge
tief ist. Die 21A zeigt
das Format für
eine Filtermaske, wobei die verschiedenen Felder davon gezeigt werden,
einschließlich
des Feldmaskenfelds. Die spezifischen Felder der Filtermaske sind
wie folgt:
Feldmaske – 512
Bit lang – Die
Feldmaske besteht aus verschiedenen Protokollmasken. Für die Felder,
die interessant sind, ist die Maske gesamt zu 1 gesetzt und für andere
Felder ist die Maske zu Null gesetzt.
Ausgangsportmaske – 6 Bit
lang – Ausgangsportmaske – Diese
Ausgangsportmaske wird nur gesamt zu 1 gesetzt, wenn der Ausgangsport
Teil des Filters ist.
Ausgangs-ModId-Maske – 5 Bit lang – Ausgangs-Modul-Id-Maske – Diese
Modul-Id-Maske wird nur gesamt zu 1 gesetzt, wenn die Ausgangs-Modul-Id
Teil des Filters ist.
Eingangs-Port-Maske – 6 Bit lang – Die Eingangs-Port-Maske
wird nur gesamt zu 1 gesetzt, wenn der Eingangs-Port Teil des Filters
ist.
Datenoffset 1 – 7
Bit lang – Datenoffset
1 – Der
7 Bit-Daten-Offset wird verwendet, um die Datenmaske für 8 Byte
der Daten 1 irgendwo in den ersten 128 Byte des Pakets zu setzen.
Datenoffset
2 – 7
Bit lang – Datenoffset
2 – Der
7 Bit-Daten-Offset wird verwendet, um die Datenmaske für 8 Byte
der Daten 2 irgendwo in den ersten 128 Byte des Pakets zu setzen.
Datenoffset
3 – 7
Bit lang – Datenoffset
3 – Der
7 Bit-Daten-Offset wird verwendet, um die Datenmaske für 8 Byte
der Daten 3 irgendwo in den ersten 128 Byte des Pakets zu setzen.
Datenoffset
4 – 7
Bit lang – Datenoffset – Der 7
Bit-Daten-Offset wird verwendet, um die Datenmaske für 8 Byte der
Daten 4 irgendwo in den ersten 128 Byte des Pakets zu setzen.
Nichtübereinstimmungsaktion – 13 Bit
lang – Nichtübereinstimmungsaktion – Dieses
Feld ist nur gültig,
wenn das Enable-Bit für
die Nichtübereinstimmungsaktion
zu 1 gesetzt ist. Die Nichtübereinstimmungsaktion
wird nur angewendet, wenn das Filter mit keinem der Einträge in der
Regeltabelle übereinstimmt.
Die folgenden Aktionen sind definiert: Bit 0 – Wenn dieses Bit gesetzt ist,
dann wechselt die 802.1p-Priorität
in dem Paket. Die Priorität
wird aus dem 802.1p-Prioritätsfeld
aufgenommen. Bit 1 – Wenn
dieses Bit gesetzt ist, dann kategorisiere dieses Feld zum Senden
an eine Prioritäts-COS-Schlange,
aber modifiziere nicht das 802.1p-Prioritätsfeld in dem Paketmarkierungsheader.
Wieder wird die Priorität
von dem 802.1p-Prioritätsfeld
aufgenommen. Bit 2 – Wenn
dieses Bit gesetzt ist, dann wechselt die IP-TOS-Präzedenz in
dem IP-Header. Der neue TOS-Präzedenz-Wert
wird von dem TOS_P-Feld aufgenommen. Bit 3 – Wenn dieses Bit gesetzt ist,
dann sende das Paket an die CPU. Bit 4 – Wenn dieses Bit gesetzt ist,
dann lasse das Paket außer
Acht. Bit 5 – Wenn dieses
Bit gesetzt ist, dann wähle
den Ausgangsport von dem Portfeld. Wenn das Paket ein Broadcast,
Multicast oder ein DLF ist, dann wird diese Aktion nicht angewendet.
Bit 6 – Wenn
dieses Bit gesetzt ist, dann wird das Paket zu dem gespiegelten
Port gesendet. Bit 7 – Ist
ein reserviertes Bit. Bit 8 – Wenn
dieses Bit gesetzt ist, dann wird der Wert des 802.1 p-Prioritätsfeld von
dem TOS-Präzedenzfeld
in dem IP-Header aufgenommen (TOS_P → COS). Bit 9 – Wenn dieses
Bit gesetzt ist, dann wird der Wert des TOS-Präzedenzfelds in dem IP-Header
von dem 802.1 p-Prioritätsfeld
aufgenommen (TOS_P → COS).
Bit 10 – Wenn
dieses Bit gesetzt ist, dann wird der Wert der differenzierten Dienste
(DS) von dem Feld für
differenzierte Dienste aufgenommen. Bit 11 – Wenn dieses Bit gesetzt ist,
dann wähle
den Ausgangsport und die Ausgangs-Modul-Id von der Filtermaske unabhängig vom
Pakettyp. Bit 12 – Reserviert.
NMA-Enable – 1 Bit
lang – Nichtübereinstimmungsaktions-Enable – Wenn dieses
Bit gesetzt ist, dann ist das Nichtübereinstimmungsaktionsfeld
ein gültiges
Feld. Auch ist die Weise, auf die die Suche in der Regeltabelle durchgeführt wird,
ein wenig verschieden.
802.1p-Prioritätsbits – 3 Bit lang – 802.1p-Prioritätsbits – Der Wert
in diesem Feld wird verwendet, um dem Paket die Priorität zuzuweisen.
Der 802.1 p-Standard definiert 8 Ebenen von Prioritäten von
0 bis 7. Das Feld wird nur verwendet, wenn Bit 0 oder Bit 1 des
Aktionsfelds gesetzt ist.
TOS_P-Feld – 3 Bit lang – TOS_P-Feld – Der Wert
in diesem Feld wird verwendet, um dem TOS-Präzedenzfeld in dem IT-Header
den neuen Wert zuzuweisen. Dieses Feld wird nur verwendet, wenn
Bit 2 des Aktionsfelds gesetzt ist.
Differenzierte Dienste – 6 Bit
lang – Differenzierte
Dienste – Der
Wert in diesem Feld wird verwendet, um dem Feld für differenzierte
Dienste in dem IP-Header den neuen Wert zuzuweisen.
Ausgangsport – 6 Bit
lang – Dieses
Feld identifiziert die Ausgangs-Port-Nummer. Dieser Port hat Vorrang
vor dem Ausgangsport, der von der ARL ausgewählt wird.
Ausgangs-Modul-Id – 5 Bit
lang – Dieses
Feld identifiziert die Ausgangs-Modul-Nummer. Die Kombination des Ausgangs-Moduls
mit dem Ausgangsport hat Vorrang vor dem Ausgangsport und der Modul-Id,
die von der ARL ausgewählt
worden sind. Dieses Feld ist nur gültig, wenn das Remote-Port-Bit
bzw. das Bit für
den entfernten Port gesetzt ist.
Remote-Port-Bit – 1 Bit
lang – Wenn
dieses Bit gesetzt ist, dann ist der Ausgangsport auf dem entfernten
Modul und der Port wird von der Kombination von Ausgangs-Modul-Id
und Ausgangsport identifiziert.
Filter-Enable-Bit – 1 Bit
lang – Wenn
dieses Bit gesetzt ist, dann ist der Filter enabled bzw. aktiviert.
Zähler – 5 Bit
lang – Zählerindex – Dies ist
der Zähler,
der implementiert werden muß.
-
22 ist
ein Flußdiagramm,
das das Filtern im SOC 10 unter Verwendung des FFP 141 und
der oben erörterten
Filterkonfiguration zeigt. Ein eingehendes Paket, das an einem Eingang
eines EPIC 20 oder GPIC 30 eingeht, wird durch
die Adress-Auflösungs-Logik,
die bei Schritt 22-1 gezeigt ist, der Adressauflösung unterzogen.
Nachdem die Adressauflösung
vollständig
ist, analysiert der FFP 141 selektiv das Paket des Schritts 22-2 und
erhält
die Werte der vorausgewählten
Felder, die dem Paket zugeordnet sind. In Abhängigkeit von dem Pakettyp,
ob es ein Ethernettyp II, 802.3, IP, IPX, TCP, UDP, usw. ist, können die
oben aufgelisteten Felder ebenso in dem Analysierungsvorgang gewonnen
werden. Ein Feldwert wird bei Schritt 22-3 konstruiert,
indem die gewonnenen Felder in der gleichen Reihenfolge aneinander
gehängt
werden, wie sie in der Feldmaske aufgelistet sind, einschließlich des
Eingangsports und des Ausgangsports. Wenn der Ausgangsport nicht
bestimmt oder bekannt ist, wird der Portwert auf einen unzulässigen Wert
gesetzt, der beispielsweise 0x3f sein kann. Bei Schritt 22-4 geht
die Logik 1411 durch alle Filter, bei denen das Filter-Enable-Bit gesetzt ist,
und wendet den Maskenteil des Filters auf das Feld an. Das Ergebnis
dieses Vorgangs wird bei Schritt 22-5 mit der Filternummer
aneinandergehängt,
um einen Suchschlüssel
zu erzeugen. Der Suchschlüssel
wird verwendet, um eine Übereinstimmung
zu dem Schlüssel
in den Regeltabellen 22 bei Schritt 22.6 zu suchen. Wenn
das Nichtübereinstimmungsaktions-(NMA)-Bit
zu 0 gesetzt ist, wird das Filter als ein einschließliches
Filter betrachtet. Für
einschließliche
Filter, wie nachstehend erörtert
werden wird, muß es
eine exakte Übereinstimmung
geben, damit die Aktionen ausgeführt
werden, die in dem Eintrag der Regeltabelle definiert sind. Wenn
es keine exakte Übereinstimmung
gibt, wird für
dieses bestimmte Filter keine Aktion durchgeführt. Wenn das NMA-Bit zu 1
gesetzt ist, dann ist das Filter ein ausschließliches Filter. Dieser Vorgang
wird für
jedes einzelne Filter wiederholt, bis alle ausgewählten Filter
auf das Paket angewendet worden sind.
-
Wenn eine binäre Suche auf die Regeltabelle 22 durchgeführt wird,
wird ein zusätzlicher
Vergleich durchgeführt,
indem Filterauswahl-, Quellport- und Zielport-Felder verwendet werden,
um zu bestimmen, ob ein teilweise Übereinstimmung existiert. Wenn
es eine vollständige Übereinstimmung
gibt, dann werden die Aktionen von dem Eintrag der Übereinstimmungs-Regel-Tabelle
angewendet. Wenn es keine vollständige Übereinstimmung,
aber eine teilweise Übereinstimmung
gibt, dann werden Aktionen aus dem „Nichtübereinstimmungsaktion"-Feld in der Filtermaske
bei Schritt 22-7 angewendet. Wenn es keine vollständige Übereinstimmung
und keine teilweise Übereinstimmung
gibt, dann wird keine Filteraktion vorgenommen.
-
Die Regeltabelle 22 ist
vollständig
von der CPU 52 über
den CMIC 40 programmierbar. Die Regeltabelle kann beispielsweise
256 tief sein. Die Einträge
in der Regeltabelle sind wiederum als Beispiel in aufsteigender
Reihenfolge mit dem Filterwert + Ausgangsport + Ausgangsmodul-Id
+ Eingangsport + Filterauswahl als Schlüssel gespeichert. Der Eingangsport
oder Ausgangsport wird nur gesetzt, wenn es die Absicht gibt, das
Filtern auf der Portbasis durchzuführen und in dem Fall, dass
die zugeordnete Eingangs- und/oder Ausgangsmaske zu den zuvor genannten
unzulässigen
Wert von 0x3F gesetzt werden soll.
-
Die FFP-Konfiguration verbessert
die Behandlung von Echtzeitverkehr, da on-the-fly die Pakete gefiltert
und Aktionen durchgeführt
werden können.
Ohne den FFP 141, müssten
die Pakete zu der CPU übertragen
werden, damit die geeignete Aktion ausgewertet und durchgeführt wird.
Für einschließliche Filter
wird eine Aktion durchgeführt,
wenn es eine Filterübereinstimmung
gibt und es wird keine Aktion durchgeführt, wenn es keine Filterübereinstimmung
gibt/wobei jedoch bei einschließlichen
Filtern Pakete nicht in Abhängigkeit
fallengelassen werden, ob es einen Übereinstimmungs- oder Nichtübereinstimmungsfall
gibt.
-
Die 23 zeigt
ein Beispiel eines Formats für
die Regeltabelle 22. Die Felder dieser Regeltabelle sind
wie folgt:
Filterwert – 512
Bit lang – Für jedes
eingehende Paket wird die Filtermaske angewendet und das Ergebnis
mit dem Filterwert verglichen. Da das eingehende Paket selbst üblicherweise
im Big-Endian-Format ist, sollte der Filterwert im Big-Endian-Format
erstellt werden.
Eingangsport – 6 Bit lang – Eingangsportnummer:
Dieses Feld wird nur gesetzt, wenn jemand dieses Filter auf einen
bestimmten Eingangsport setzt. Wenn dieses Feld gesetzt ist, dann
sollte die Eingangsportmaske in dem Filterregister gesetzt sein.
Ausgangsport – 6 Bit
lang – Ausgangs-Port-Nummer:
Dieses Feld ist nur gesetzt, wenn jemand das Filter auf einen bestimmten
Ausgangsport setzt. Wenn dieses Feld gesetzt ist, dann sollte die
Ausgangsportmaske in dem Filterregister gesetzt sein. In dem Fall
von Broadcast, Multicast oder DLF sollte der Filtermechanismus eine
unzulässige
Portnummer (0x3f) verwenden, sodass es keine Übereinstimmung bei dem Eintrag
gibt.
Ausgangsmodul-Id – 5
Bit lang – Ausgangsmodul-Id – Dieses
Feld wird nur gesetzt, wenn jemand das Filter auf einen bestimmten
Ausgangsport + Modul-Id setzt. Wenn dieses Feld gesetzt ist, dann
sollte die Ausgangsportmaske + Ausgangsmodul-Id in dem Filterregister
gesetzt sein. In dem Fall von Broadcast, Multicast oder DLF sollte
der Filtermechanismus eine unzulässige
Portnummer (0x3f) verwenden, sodass es keine Übereinstimmung bei dem Eintrag
gibt. Bemerkung: Remote-Ausgangsport ist eine Kombination des Ausgangsports +
Modul-Id. Der einzige Weg, den Remote-Port unzulässig zu machen, ist eine unzulässige Portnummer
zu verwenden.
Filterauswahl – 3 Bit lang – Filterauswahl – Diese
Bits werden verwendet, um die Filternummer zu identifizieren, die
verwendet wird, um mit diesen Einträgen übereinzustimmen.
Aktionsbits – 14 Bit
lang – Aktionsbits
definieren die Aktionen, die im Fall eines übereinstimmenden Eintrags ausgeführt werden
müssen.
Bit 0 – Wenn
dieses Bit gesetzt ist, dann wechselt die 802.1p-Priorität in dem
Paket. Die Priorität
wird aus dem 802.1 p-Prioritätsfeld aufgenommen.
Bit 1 – Wenn
dieses Bit gesetzt ist, dann kategorisiere dieses Paket, um es an
die Prioritäts-COS-Schlange
zu senden, aber verändere
nicht das 802.1p-Prioritätsfeld in
dem Paketmarkierungs-Header. Wiederum wird die Priorität von dem
802.1 p-Prioritätsfeld aufgenommen.
Bit 2 – Wenn
dieses Bit gesetzt ist, dann verändere
die IP-COS-Präzedenz in
dem ID-Header. Der neue TOS-Präzedenzwert
wird von dem TOS P-Feld aufgenommen. Bit 3 – Wenn dieses Bit gesetzt ist,
dann sende das Paket an die CPU. Bit 4 – Wenn dieses Bit gesetzt ist,
dann lasse das Paket außer Acht.
Bit 5 – Wenn
dieses Bit gesetzt ist, dann wähle
den Ausgangsport und die Ausgangsmodul-Id aus dem Regeleintrag.
Wenn das Paket ein Broadcast, Multicast oder ein DLF ist, dann wird
dieser Vorgang nicht angewendet. Bit 6 – Wenn dieses Bit gesetzt ist,
dann sendet das Paket zu dem „gespiegelten" Port. Bit 7 – Wenn dieses
Bit gesetzt ist, dann erhöhe
den in dem Zählerwert
angegebenen Zähler.
Der Zählerindex
wird von dem Zählerfeld
aufgenommen. Bis zu 32 Zähler
werden unterstützt.
Bit 8 – Wenn
dieses Bit gesetzt ist, dann wird der Wert des 802.1p-Prioritätsfeld von
dem TOS-Präzedenzfeld
in dem IP-Header aufgenommen (TOS_P → COS). Bit 9 – Wenn dieses
Bit gesetzt ist, dann wird der Wert des TOS-Präzedenzfelds
im IP-Header von dem 802.1p-Prioritätsfeld aufgenommen (COS → TOS_P).
Bit 10 – Wenn
dieses Bit gesetzt ist, dann wird der Wert für die differenzierten Dienste
(DS) von dem Feld für
differenzierte Dienste aufgenommen. Bit 11 – Wenn dieses Bit gesetzt ist,
dann wähle
den Ausgangsport und die Ausgangs-Modul-Id aus dem Regeleintrag.
Bit 12 – Resenriert.
Bit 13 – Wenn
dieses Bit gesetzt ist, dann wird das Paket nicht fallengelassen.
Wenn Bit 4 und Bit 13 beide gesetzt sind, dann wird das Paket nicht
fallengelassen.
802.1p Prioritäts-Bits – 3 Bit lang – Der Wert
in diesem Feld wird verwendet, um dem Paket eine Priorität zuzuordnen.
Der 802.1p-Standard definiert 8 Stufen von Prioritäten von
0 bis 7. Das Feld wird nur verwendet, wenn Bit 0 oder Bit 1 des
Aktionsfelds gesetzt ist.
Differenzierte Dienste – 6 Bit
lang – Differenzierte
Dienste – Der
Wert in diesem Feld wird verwendet, um dem Feld für differenzierte
Dienste in dem IP-Header den neuen Wert zuzuordnen.
TOS_P-Feld – 4 Bit
lang – Der
Wert in diesem Feld wird verwendet, um dem TOS-Präzedenzfeld
in dem IP-Header den neuen Wert zuzuordnen. Dieses Feld wird nur
verwendet, wenn Bit 2 des Aktionsfelds gesetzt ist.
Ausgangsport – 6 Bit
lang – Ausgangsport – Dieses
Feld identifiziert die Ausgangs-Port-Nummer. Dieser Port hat Vorrang gegenüber dem
Ausgangsport, der von der ARL ausgewählt worden ist.
Ausgangsmodul
ID – 5
Bit lang – Ausgangsmodul-Id – Dieses
Feld identifiziert die Ausgangsmodulnummer. Die Kombination von
Ausgangsmodul und Ausgangsport hat Vorrang gegenüber dem Ausgangsport und der Modul-Id,
die von der ARL ausgewählt
worden sind. Dieses Feld ist nur gültig, wenn das Remote-Port-Bit
gesetzt ist.
Zähler – 5 Bit
lang – Zählerindex
ist der Zähler,
der implementiert werden muß.
-
In anderen Worten wird eine logische
UND-Operation mit der Filtermaske und dem Paket durchgeführt, wobei
die ausgewählten
Felder aktiviert sind. Wenn es keine Übereinstimmung gibt, werden
die übereinstimmenden
Einträge
auf die Regeltabellen 22 angewendet, um zu bestimmen, welche
bestimmte Aktion durchgeführt
wird. Da es eine begrenzte Anzahl von Feldern in der Regeltabelle
gibt und bestimmte Regeln für verschiedene
Typen von Paketen angewendet werden müssen, sind die Anforderungen
der Regeltabelle minimiert, indem alle eingehenden Pakete als „markierte" Pakete gesetzt werden;
alle nicht markierten Pakete werden daher der Einfügung einer
802.1Q-Markierung unterworfen, um die Anzahl von Einträgen zu verringern,
die in der Regeltabelle erforderlich sind. Diese Aktion führt dazu,
dass keine Einträge
betreffend die Behandlung von nicht markieren Paketen erforderlich
sind. Es soll angemerkt werden, dass bestimmte Pakettypen von verschiedenen
IEEE-Standards und
anderen Netzwerkstandards definiert sind und hierin nicht definiert
werden.
-
Wie zuvor angemerkt, sind ausschließliche Filter
als Filter definiert, die Pakete ausschließen, für die es keine Übereinstimmung
gibt; für
ausgeschlossene Pakete werden Aktionen durchgeführt, die den ausschließlichen
Filtern zugeordnet sind. Mit einschließlichen Filtern jedoch werden
einschließliche
Aktionen durchgeführt.
Wenn es eine Übereinstimmung
gibt, wird die Aktion wie oben erörtert durchgeführt; wenn
es keine Übereinstimmung
gibt, wird keine Aktion durchgeführt
und das Paket läuft
auf dem Weiterleitungsprozeß weiter.
Unter Bezugnahme auf 15 ist
gezeigt, dass der FFP 141 eine Filterdatenbank 1410 umfaßt, die darin
Filtermasken enthält,
mit einem Logikschaltkreis 1411 zum Bestimmen von Pakettypen kommuniziert
und geeignete Filtermasken anwendet. Nachdem die Filtermaske wie
oben erwähnt
angewendet worden ist, wird das Ergebnis der Anwendung auf die Regeltabelle 22 für den geeigneten
Look-Up und die geeignete Aktion angewendet. Es soll angemerkt werden,
dass die Filtermasken, die Regeltabellen und die Logik zwar von
der CPU 52 programmierbar sind, aber für die Verarbeitung und deren
Berechnung nicht auf die CPU 52 angewiesen sind. Nach dem
Programmieren wird eine Hardwarekonfiguration geschaffen, die die
Filteranwendung und den Look-Up bei Leitungsgeschwindigkeit ermöglicht.
-
Unter Bezugnahme wiederum auf 14 bestimmt die Logik 1411 in
dem FFP 141 die geeignete Aktion und führt sie aus, nachdem der FFP 141 die
auf geeignete Weise konfigurierten Filter angewendet hat, und von
der geeigneten Regeltabelle 22 die Ergebnisse erzielt worden
sind. Die Filterlogik kann das Paket außer Acht lassen, das Paket
zur CPU 52 schicken, den Paket-Header oder IP-Header verändern und
jede beliebigen IP-Prüfsummenfelder
erneut berechnen oder eine andere geeignete Aktion im Bezug auf
die Header vornehmen. Die Veränderung
geschieht bei dem Pufferunterteiler 144 und das Paket wird
auf den C-Kanal 81 gesetzt. Die Steuernachricht- und Nachricht-Header-Information
wird von dem FFP 141 und der ARL-Maschine 143 angewendet
und der Nachrichten-Header wird auf den P-Kanal 82 gesetzt.
Die Sendeeinheit 18, die im allgemeinen mit Bezug auf 8 erörtert worden ist, koordiniert
alle Sendungen auf den C-Kanal, den P-Kanal und den S-Kanal. Wie
zuvor erwähnt,
ist jedes EPIC-Modul 20, GPIC-Modul 30, jede MMU 70,
jeder IPIC 90 usw. individuell zur Kommunikation mittels
des CPS-Kanals konfiguriert. Jedes Modul kann unabhängig modifiziert
werden, und so lange die CPS-Kanal-Schnittstellen bleiben, sollten
interne Modifikationen für jedes
beliebige Modul, wie beispielsweise den EPIC 20a, nicht
andere Module wie beispielsweise den EPIC 20b, die GEPICs 30 oder
den IPIC 90 betreffen.
-
Wie zuvor erwähnt, wird der FFP 141 durch
die CPU 52 von dem Benutzer auf der Grundlage der spezifischen
Funktionen programmiert, bei denen gewünscht ist, dass sie von dem
FFP behandelt werden. Unter Bezugnahme auf die 17 kann gesehen werden, dass in Schritt 17-1 ein
FFP-Programmierschritt von dem Benutzer initiiert wird. Wenn das
Programmieren einmal initiiert worden ist, identifiziert der Benutzer
in Schritt 17-2 die Protokollfelder des Pakets, die für das Filter
interessant sein sollen. In Schritt 17-2 werden der Pakettyp
und die Filterbedingungen bestimmt und in Schritt 17-4 wird
eine Filtermaske auf der Grundlage des identifizierten Pakettyps
und der gewünschten
Filterbedingungen konstruiert. Die Filtermaske ist im wesentlichen ein
Bitmap, welches angewendet und mit den ausgewählten Feldern des Pakets UND-
verknüpft
wird. Nachdem die Filtermaske konstruiert worden ist, wird bestimmt,
ob das Filter ein einschließliches
oder ein ausschließliches
Filter sein wird, abhängig
von den Problemen, die gelöst
werden sollen, den Paketen, die weitergeleitet werden sollen, den
Aktionen, die unternommen werden sollen, usw. In Schritt 17-6 wird
bestimmt, ob das Filter auf dem Eingangsport ist oder nicht, und
in Schritt 17-7 wird bestimmt, ob das Filter auf dem Ausgangsport
ist oder nicht. Wenn das Filter auf dem Eingangsport ist, wird in
Schritt 17-8 eine Eingangsportmaske verwendet. Wenn bestimmt
wird, dass das Filter auf dem Ausgangsport ist, wird in Schritt 17-9 eine
Ausgangsmaske verwendet. Auf der Grundlage dieser Schritte wird
dann ein Regeltabelleneintrag für
die Regeltabellen 22 konstruiert und der Eintrag oder die
Einträge
werden in der geeigneten Regeltabelle angeordnet (Schritte 17-10 und 17-11).
Diese Schritte werden durchgeführt,
indem der Benutzer bestimmte Sätze
von Regeln und Informationen in die CPU 52 mittels einer
geeigneten Eingabevorrichtung vorgibt und die CPU 52 die geeignete
Aktion in Bezug auf das Erzeugen des Filters vornimmt, über den
CMIC 40 und die geeigneten Eingangs- oder Ausgangssubmodule
auf einem geeigneten EPIC-Modul 20 oder GPIC-Modul 30.
-
In einem anderen Beispiel wird die
Filterlogik des vorigen Beispiels modifiziert. In diesem Beispiel,
welches rückwärts kompatibel
im Bezug auf die Implementierung mit der zuvor erörterten
ist, sind vier 16-Byte-Felder speziell innerhalb des Paket-Headers
definiert, wobei jedes dieser Felder dessen eigenen konfigurierbaren Offset
hat. Diese vier 16-Byte-Felder werden kombiniert, um die zuvorgenannte
64 Byte/512 Bit-Feldmaske zu bilden. In diesem Ausführungsbeispiel
jedoch sind die Offsets auf so eine Weise konfiguriert, dass die
Filtermaske effektiv in den Paket-Header bis zu 120 Byte tief schauen
kann. Auch wenn die 20 zeigt,
dass ein wesentlicher Teil der relevanten Filterinformationen innerhalb
der ersten 64 Byte des Paket-Headers enthalten ist, wird, wenn der
Produkt- und Technologiefortschritt dafür sorgt, dass die Bytes 64
bis 120 des Paket-Headers substantielle Relevanz für das Filtern
bekommen, das Verfahren so konfiguriert, dass es unter Verwendung
dieses Header-Formats filtert.
-
Wie zuvor ausgeführt, wird der 64 Byte-Paket-Schlüssel in
eine vorbestimmte Anzahl von Subfeldern aufgeteilt. Als ein Beispiel
kann der 64 Byte-Paket-Schlüssel
in bis zu 4 16 Byte-Subfelder
geteilt werden. Jedes Subfeld hat eine 3 Bit-Maske, die ihr zugeordnet
ist und ein Mehrfaches von 8 Byte für den Offset von jedem Subfeld
anzeigt, wie es in 31 dargestellt
ist. Wenn daher beispielsweise die ersten 64 Byte des Pakets interessant
sind, dann würde
ein Offsetfeld von 000 für
alle vier der 16 Byte-Subfelder verwendet werden.
-
Dies würde bewirken, dass der erste
Offset die 16 Byte beginnend mit Byte 0 und fortlaufend
bis Byte 15 ausliest/überprüft. Der
zweite Offset würde
die 16 Byte beginnend mit Byte 16 und fortlaufend bis Byte 31 auslesen
und auf ähnliche
Weise würde
der dritte Offset die Bytes 32 bis 47 auslesen und der vierte Offset würde die
Bytes 48 bis 63 auslesen, wobei auf diese Weise die vollständigen ersten
64 Byte umfaßt
sind. Als zweites Beispiel würden
die Subfelder wie folgt definiert werden, wenn die Offsets als erster
Offset bei 001, zweiter Offset bei 011, dritter Offset bei 100 und
vierter Offset bei 110 gesetzt sind. Der erste Offset bei 001 würde das
erste Subfeld als beginnend mit der Bytenummer 8 in dem Paketheader
und fortlaufend für
16 Byte bis Byte 23 definieren. Der zweite Offset bei 011 würde das
zweite Subfeld als beginnend bei Byte 40 und für 16 Byte fortlaufend bis Byte
55 definieren. Der dritte Offset bei 100 würde das dritte Subfeld als
beginnend mit Byte 64 und fortlaufend bis Byte 79 definieren. Schließlich würde der
vierte Offset das vierte Subfeld als beginnend bei Byte 96 und fortlaufend
bis Byte 111 definieren. Danach werden die vier einzelnen 16 Byte-Subfelder,
die durch die Anwendung der vier Offsets erzeugt worden sind, in
einem einzigen 64-Byte-Feld-Wert aneinandergehängt. Wieder muß das Aneinanderhängen des
Feldwerts das Eingangsport-, Ausgangsport- und Ausgangsmodul-Id-Feld
beinhalten, wenn das Ausgangs-Modul-Id-Feld oder das Ausgangsportfeld
nicht bestimmt sind, dann werden diese Felder wieder auf einen unzulässigen Wert
gesetzt, wie beispielsweise 0x3f. Die Filterlogik geht dann durch
all die Filter, die gesetzt sind, und wendet den Maskenteil des
Filters auf den Filterwert und die Filtermaske an. Das Ergebnis
dieses Vorgangs wird wieder mit der Filternummer aneinandergehängt, um
den Suchschlüssel
zu erzeugen, der dann verwendet wird, um nach einer Übereinstimmung in
den Regeltabellen 22 zu suchen. Wenn alle Nicht-Übereinstimmungsaktionsbits
zu Null gesetzt sind, dann wird das Filter als ein einschließliches
Filter betrachtet, welches anzeigt, dass es eine exakte Übereinstimmung geben
muß, damit
die Aktionen durchgeführt
werden, die in dem Regeltabelleneintrag definiert sind. Wenn irgend
etwas geringeres als eine vollständige Übereinstimmung
vorliegt, dann wird keine Aktion unter einem einschließlichen
Filter ausgeführt.
Wenn jedoch wenigstens eines der Aktionsbits zu 1 gesetzt ist, dann
wird das Filter als ein ausschließliches Filter angenommen.
-
Beim Ausführen von Aktionen von den Regeltabelleneinträgen und
den Nichtübereinstimmungsaktionen
von dem Filter, wird speziellen Regeln gefolgt, um ein geeignetes
Filter und eine geeignete Ausführung der
Aktionen sicherzustellen. Die relevanten Regeln zum Ausführen von
Aktionen von Regeltabelleneinträgen und
Nichtübereinstimmungsaktionen
von den Filtern sind wie folgt.
- – Wenn eine
binäre
Suche in der Regeltabelle durchgeführt wird, wird ein zusätzlicher
Vergleich durchgeführt,
in dem { Filterauswahl + Ausgangsmodul-Id + Eingangsport + Ausgangsport
}-Felder zum Bestimmen einer teilweisen Übereinstimmung verwendet werden.
- – Eine
vollständige Übereinstimmung
tritt auf, wenn die Filterauswahl + Ausgangsmodul-Id + Eingangsport +
Ausgangsport + Paketformat + Filterwert mit einem Eintrag in der
Regeltabelle übereinstimmen.
Wenn daher eine vollständige Übereinstimmung
vorliegt, dann werden die zugeordneten Aktionen von dem übereinstimmenden
Regeltabelleneintrag angewendet.
- – Wenn
es keine vollständige Übereinstimmung
und keine teilweise Übereinstimmung
gibt, dann wird keine Aktion durchgeführt
- – Wenn
es keine vollständige Übereinstimmung
gibt, aber eine teilweise Übereinstimmung,
dann werden die Aktionen von dem Nichtübereinstimmungsaktionsfeld
angewendet. Diese Nichtübereinstimmungsaktion
wird von dem Filtermaskenfeld abgeleitet
- – Wenn
es eine teilweise Übereinstimmung
mit einem Filter gibt, werden die Aktionen durchgeführt, die
der Filtermaske zugeordnet sind. Wenn es eine vollständige Übereinstimmung
mit einem höheren
Filterwert gibt, dann werden die Aktionen durchgeführt, die
dem Regeleintrag zugeordnet sind. Wenn ein bestimmtes Aktionsbit
von dem Nichtübereinstimmungsaktionsfeld
gesetzt ist und die volle Übereinstimmung
auf eine andere Filtermaske nicht das gleiche Aktionsbit setzt,
dann wird die Aktion durchgeführt,
da die teilweise Übereinstimmung
und die volle Übereinstimmung
bei verschiedenen Filtern sind.
- – Wenn
es eine teilweise Übereinstimmung
und eine vollständige Übereinstimmung
gibt, werden die Zähler nur
für die
vollständige Übereinstimmung
gemäß der Regeltabelle
aktualisiert. Wenn es nur eine teilweise Übereinstimmung gibt, dann werden
die Zähler
gemäß der Aktion
in der Filtermaske aktualisiert. Wenn alle Filter eine vollständige Übereinstimmung
in der Regeltabelle haben und die Aktion das Inkrementieren des gleichen
Zählers
ist, dann wird der Zähler
nur einmal inkrementiert. Wenn alle Filter eine teilweise Übereinstimmung
haben und die Aktion das Inkrementieren des gleichen Zählers ist,
dann wird der Zähler
nur einmal inkrementiert.
-
Paketflußsteuerung
-
Zusammen mit den Filterfunktionen
ermöglicht
die Konfiguration des SOC 10 eine Verkehrs-Konditionierungs-Funktion,
die Datenpakete messen, formen, überwachen,
fallenlassen oder erneut markieren kann, wenn es notwendig ist,
um sicherzustellen, dass die Pakete oder der Datenverkehr, der in
die Domäne
der differenzierten Dienste (diffserv) eintritt, den vorbestimmten
Erfordernissen für
die bestimmte Implementierung entspricht. Die Messfunktionen messen
im allgemeinen die zeitlichen Eigenschaften, im allgemeinen die
Rate oder den Durchfluß des
Stroms an Paketen, die von einem Klassifizierer ausgewählt worden
sind. Ein Ratenzählerfeld
für einen
Codepunkt in einer diffserv-zu-COS-Zuordnungstabelle wird jedes Mal implementiert, wenn
ein Paket in den Switch mit dem bestimmten Codepunkt eintrifft,
wobei auf diese Weise ein Bestimmen der Rate des Verkehrs ermöglicht wird.
Eine Formfunktion dient zum Verzögern
von einigen oder allen der Pakete in einem Verkehrsstrom, um dem
Verkehrsstrom in Übereinstimmung
mit einem vorbestimmten Verkehrsprofil zu bringen. Das vorliegende
Verfahren implementiert eine Formfunktionalität für jede COS-Schlange, die von
dem COS-Manager an jedem individuellen Ausgang behandelt wird. Die
Funktion des Fallenlassens der Meßlogik ist zum außer Acht
lassen von einigen oder allen der Pakete in einem Datenstrom verantwortlich, um
den Datenstrom in Übereinstimmung
mit einem vorbestimmten Verkehrsprofil zu bringen. Einfach ausgedrückt wird,
wenn der vorgenannte Ratenzähler
für einen
bestimmten Codepunktwert die Ratenzählerschwelle überschreitet,
die in der diftserv-zu-COS-Tabelle gesetzt ist, die Option zur Verfügung gestellt,
unter Verwendung der neuen Codepunkt-Aktions-Bits das Paket von dem Datenstrom
zu entfernen. Die Funktion des erneuten Markierens erlaubt es, den
Codepunkt eines Pakets in Abhängigkeit
der Charakteristiken des Verkehrsprofils zurückzusetzen. Die Vorrichtung
zum erneuten Markieren kann zum erneuten Markieren aller Pakete zu
einem einzigen Codepunkt konfiguriert sein, oder kann zum Markieren
eines Pakets zu einem von einem Satz von Codepunkten konfiguriert
sein. Spezifisch wird, wenn der zuvor genannte Ratenzähler für einen
Codepunkt die Ratenzählerschwelle
in der diffserv-zu-COS-Tabelle überschreitet,
die Option zur Verfügung
gestellt, dass der Codepunkt unter Verwendung der neuen Codepunkt-Aktons-Bits
erneut markiert wird und eine neue COS-Schlange für das Paket
ausgewählt
wird, zusätzlich
zum Verändern
der 802.1p-Priorität
des Pakets, wobei beides eine direkte Auswirkung auf die Flußgrenze
des Pakets hat.
-
Auch wenn das Verfahren mehrfache
Steueralternativen für
den Paketstrom bereitstellt, wird das Messen im allgemeinen von
dem Zählerfeld
der Regeltabelle 22 zur Verfügung gestellt. Unter Verwendung
des Zählers
und der COS-Schlagen können
Pakete in einem bestimmten Verkehrsstrom wie benötigt verzögert werden, um den Verkehrsstrom
in Übereinstimmung
mit dem gewünschten
Verkehrsprofil zu bringen. Dies kann durch die Verwendung des COS-Managers 133 und
die Transaktions-FIFO 132 gesteuert werden, wie es in 13 dargestellt ist. Paketzeiger,
die von dem Codepunkt der differenzierten Dienste (DSCP) abhängen, werden
in einer der COS-Schlagen in der Transaktions-FIFO 132 angeordnet
und die Planungseinrichtung 134 nimmt das nächste Paket
in Abhängigkeit
der Prioritätsbestimmung
des COS-Managers 133 auf. Die Algorithmen zur Schlagenplanung
können
in dem COS-Manager 133 wie es für die bestimmte Anwendung geeignet
ist programmiert sein. Es kann ein streng prioritätsbasiertes
Planen implementiert werden, wobei Pakete in der COS-Schlange mit
einer hohen Priorität
zuerst zum Senden aufgenommen werden. Dies kann jedoch zu einem
Knappwerden der COS-Schlangen mit geringer Priorität führen. Eine
Option zum Beheben dieser Schwierigkeit ist daher das Implementieren
eines Planungsschemas auf der Grundlage einer gewichteten Priorität, bei dem
eine minimale Bandbreite für
alle COS-Schlangen zur Verfügung
gestellt wird, sodass keine Schlange als Ergebnis einer Prioritätszuordnung
knapp wird. Die Bandbreite ist ein programmierbarer Parameter in
dem COS-Manager 133 und kann auf der Grundlage der Switch-Anwendung
programmiert werden. Echtzeitanwendungen können mittels eines Parameters
zur maximal erlaubten Latenzzeit implementiert werden, der es dem
COS-Manager 133 ermöglicht,
die Paketübertragung
so zu planen, dass die Pakete auf einer bestimmten COS-Schlange
nicht für
mehr als die maximal erlaubbare Latenzzeit verzögert werden.
-
MESSUNG UNTER
VERWENDUNG DER DSCP
-
Der allgemeine Fluß eines
eingehenden Pakets, wie er durch die verschiedenen Funktionen des
SOC 10 in Bezug auf die differenzierten Dienste ist, ist
in 45 dargestellt.
Eine Verbesserung der differenzierten Dienste für das Internetprotokoll wird
verwendet, um eine skalierbare Dienstunterscheidung zu ermöglichen, ohne
Operationen pro Flußzustand
und des Anzeigens bei jedem Satz bzw. Hop zu erfordern. Daher können verschiedene
Dienste von einem kleinen, gut definierten Satz von Aufbaublöcken aufgebaut
werden, die bereits innerhalb der Netzwerk-Switch-Konfiguration
eingesetzt sind. Die differenzierten Dienste können konstruiert werden durch
eine Kombination von: Erstens, zu setzenden Bits in dem IP-Headerfeld
bei Netzwerkgrenzen; zweitens, unter Verwendung dieser Bits zu bestimmen,
wie Pakete von dem Knoten innerhalb des Netzwerks weitergeleitet
werden; und drittens, durch Konditionieren der markierten Pakete
bei Netzwerkgrenzen gemäß den vorbestimmten
Erfordernissen oder Regeln des Dienstes. Das Verfahren verwendet
den Codepunkt der differenzierten Dienste, um den Verkehr zu klassifizieren
und weiterzuleiten, der in den Switchströmen auf der Grundlage von vorbestimmten
Verfahrensweisen, die direkt im Bezug mit dem DSCP stehen, das nachstehend
erörtert
ist.
-
Die Paketklassifikation wählt Pakete
in einem Verkehrsstrom auf der Grundlage der Inhalte von speziellen
Feldern in dem Paket-Protokoll-Header aus. In dem Aufbau der differenzierten
Dienste gibt es zwei Typen von Paketklassifizierern: erstens, die
Mehrfach-Feld-Klassifizierer;
und zweitens die Verhaltens-Sammel-Klassifizierer. Die Mehrfach-Feld-Klassifizierer klassifizieren
die Pakete, die in den Switch gelangen, auf der Grundlage der Inhalte
von speziellen Feldern in dem Protokoll-Header. Die interessierenden
speziellen Felder sind wie folgt:
- 1) Quell-IP-Adresse
- 2) Ziel-IP-Adresse
- 3) DS-Feld
- 4) Protokoll-ID
- 5) Quell-TCP-Port
- 6) Ziel-TCP-Port
- 7) Quell-UDP-Port
- 8) Ziel-UDP-Port
- 9) Eingangsschnittstellennummer
- 10) Anwendungstyp, d. h. Telnet, HTTP, FTP, RTP, RTCP, usw.
-
Bei der Verwendung von Mehrfachfeldklassifizierern
verwendet das SOC 10 den FFP-Mechanismus 141, um die Mehrfachfeld-(MF)-Klassifikationen
zu implementieren, die bei den Netzwerkgrenzen erreicht werden.
Die Fähigkeit
für MF-Klassifizierer
wird unter Verwendung der FFP-Maschine 141 implementiert,
wobei die Filtermaske und die entsprechende Regeltabelle gemäß den Vorgehensweisen,
die im Bezug zu den entsprechenden differenzierten Diensten stehen,
programmiert, um einen neuen Codepunkt zuzuordnen oder den Wechsel
des Codepunkts des Pakets zuzuordnen. Der gleiche Regeleintrag kann
verwendet werden, um die 802.1p-Priorität des Pakets in Abhängigkeit
der bestimmten Vorgehensweise zu verändern.
-
Alternativ werden die Pakete nur
unter Verwendung des DSCP klassifiziert, wenn ein Verhaltenssammel-(BA)-Klassifizierer
verwendet wird, und die BA-Klassifizierer sind in Switchess, die
nicht nur an den DS-Domänen
Grenzen eingesetzt werden, sondern ebenso innerhalb der DS-Domäne selbst.
Der BA-Klassifizierer wird innerhalb der Eingangslogik implementiert.
Auch wenn zahlreiche komplexere Paketklassifizierer und Vorgehensweisen
mittels der Übereinkunft
zwischen einem Kunden und einem Dienst-Provider definiert werden
können,
ist die folgende Tabelle eine beispielhafte Paketklassifikation.
-
-
Spezifisch ausgedrückt, wenn
das DS-Feld in dem eingehenden Paket nicht Null ist, dann holt die
Eingangslogik den COS-Schlangenwert von dem DS-Feld unter Verwendung
der diffserv-zu-COS-Zuordnungstabelle, wie es in 30 dargestellt ist. Die vorliegenden
Felder sind in 30 dargestellt
und nachstehend detaillierter beschrieben.
COS-Schlangenwert – 3 Bit
lang – COS-Schlangenwert
wird verwendet, wenn das Paket zu dem Ausgangsport gesendet wird.
Verändere-Prioritätsfeld-(CPF)-Bit – 1 Bit
lang – Wenn
das CPF-Bit gesetzt ist, dann wird das 802.1p-Prioritätsfeld in
dem Paket zu einer neuen Priorität
verändert.
Das neue Prioritätsfeld
wird von dem „802.1p-Prioritäts"-Feld aufgenommen.
Neue
Codepunkt-Aktion-(NCA)-Bits – 2
Bit lang – Neue
Codepunkt-Aktionen werden nur ausgeführt, wenn der Ratenzähler die
Ratenzählergrenze überschreitet.
Wert 00 – keine
Aktion. Wert 01 – Ordne
neuen Codepunkt zu. Der neue Codepunkt-Wert wird von dem Feld „neuer
Codepunkt" augenommen.
Wert 02 – Weise
neuen Codepunkt zu und verändere
ebenso die 802.1 p-Priorität
des Pakets. Das neue 802.1 p-Prioritätsfeld wird von dem Feld „neue 802.1
p-Priorität" aufgenommen. Wert
03 – Lasse
das eingehende Paket fallen.
802.p-Priorität – 3 Bit lang – Dieses
Prioritätsfeld
wird nur verwendet, wenn das CPF-Bit gesetzt ist.
Ratenzähler – 12 Bit
lang – Dieser
Zähler
wird jedes Mal implementiert, wenn ein Paket mit diesem Codepunkt ankommt.
Dieser Zähler
wird alle 1 ms zurückgesetzt.
Ratenzähler-Grenze – 12 Bit
lang – Ist
ausgedrückt
als Anzahl von Paketen pro 1 ms. Wenn der Ratenzähler diese Grenze überschreitet,
dann ist das Paket ein Kandidat für einen neuen Codepunkt.
Raten-Verwerf-Schwelle – 12 Bit
lang – Die
Raten-Verwerf-Schwelle ist ausgedrückt als Anzahl von Paketen pro
1 ms. Wenn die Raten-Verwerf-Schwelle überschritten wird, dann werden
die Pakete verworfen bzw. außer Acht
gelassen, wenn der NCA-Bitwert zu 03 gesetzt ist.
Neuer Codepunkt – 6 Bit
lang – Wenn
der Ratenzähler
die Ratenzählerschwelle überschreitet
und der NCA-Bitwert 01 ist, dann wird der neue Codepunktwert von
diesem Feld aufgenommen.
Neue COS-Schlange – 3 Bit lang – Wenn der
Ratenzähler
die Ratenzählerschwelle überschreitet
und der NCA-Bitwert 01 ist, dann wird der neue COS-Schlangenwert
von diesem Feld aufgenommen.
Neue 802.1p-Priorität – 3 Bit
lang – Wenn
der Ratenzähler
die Ratenzählerschwelle überschreitet
und der NCA-Bitwert gleich 01 ist, dann wird der neue 802.1p-Prioritätswert des
Pakets von diesem Feld aufgenommen.
-
Die oben dargestellte Zuordnungstabelle
bietet ebenso die Option der Modifizierung des 802.1p-Prioritätsfeld des
eingehenden Pakets. Für
jedes beliebige Paket, auch markierte oder prioritätsmarkierte
mit einem 802.1p-Prioritätsfeld,
bekommt der COS-Schlangenwert, der als Ergebnis der Zuordnungstabellen
für differenzierte
Dienste ausgewählt
worden ist, Vorrang gegenüber
der Priorität,
die von den 802.1p-Vorgehensweisen ausgewählt worden ist.
-
Ein Flußdiagramm der Logik für differenzierte
Dienste, welches die vorbestimmten Vorgehensweisen darstellt, die
dem DSCP zugeordnet sind, ist die 46 dargestellt.
Das Flußdiagramm
der Logik für
differenzierte Dienste beginnt bei Schritt 46-1, in dem
die Logik nachsieht, ob das Paket ein IP-Paket ist und ob der Pakettyp 4 ist.
Wenn nicht, dann fährt
die Logik zu Schritt 46-4 fort, der hier detaillierter
beschrieben werden wird; wenn schon, dann fährt die Logik zu Schritt 46-2 fort,
in dem, wenn FFP DSCP gesetzt ist, dann der Wert des DSCP von dem
FFP verwendet wird. Wenn FFP DSCP nicht gesetzt ist, und das DSCP-Flag
zu 1 gesetzt ist, dann wird der zugeordnete DSCP-Wert verwendet,
um in der DiffServ-Tabelle zu indexieren, ansonsten wird der DSCP-Wert
von dem IP-Header verwendet. Nach der Durchführung der geeigneten Aktion
bei Schritt 46-2 fährt
die Logik fort zu Schritt 46-3, in dem bestimmt wird, ob
der Ratenzähler
kleiner oder gleich dem DSCP-Schwellwert
ist. Wenn der Ratenzähler
nicht größer oder
gleich der DSCP-Verwerf-Schwelle ist, dann fährt die Flußlogik zu Schritt 46-9 fort.
Wenn der Ratenzähler
größer oder
gleich zu der DSCP-Verwerf-Schwelle ist, dann fährt die Logik zu Schritt 46-5 fort,
indem bestimmt wird, ob der DF-Wert 1 ist. Wenn der DF-Wert 1 ist,
dann wird das Portbitmap zu Null gesetzt, und wenn der C-Zustand
oder eine Kopie des Pakets zu der CPU gehen soll, dann wird das
Portbitmap zu 1 gesetzt, viel geringer als die CPU, und die Logik
springt zu Schritt 46-4. Wenn der DF-Wert nicht gleich
1 ist, dann fährt
die Logik zu Schritt 46-7 fort, indem bestimmt wird, ob
der DF-Wert gleich 2 ist. Wenn herausgefunden wird, dass der DF-Wert gleich
2 ist, dann wird das CNG-Bit in den P-Kanal gesetzt und die Logik
fährt zu
Schritt 46-9 fort. Wenn der DF-Wert nicht gleich 2 ist,
dann fährt die
Logik direkt zu Schritt 42-9 ohne Veränderung des CNG-Bits fort.
Bei Schritt 46-9 bestimmt die Logik, ob der DSCP Ratenzähler geringer
oder gleich zu der DSCP-Schwelle für erneute Markierung ist. Wenn
dies so ist, dann fährt
die Logik zu Schritt 46-10 fort, wohingegen die Logik zu
Schritt 46-11 fortfährt,
wenn dies nicht so ist. Bei Schritt 46-10 bestimmt die
Logik, ob der RMF-Wert gleich 0 oder 3 ist. Wenn dies so ist, dann
fährt die
Logik fort zu Schritt 46-11, und wenn dies nicht so ist,
dann überprüft die Logik
in Schritt 46-12 ob der RMF-Wert gleich 2 ist. Wenn der
RMF-Wert gleich 2 ist, dann holt sich die Logik die 802.1p-Priorität von dem neu
der DSCP zugeordneten 802.1p-Prioritätsfeld. Wenn der RMF-Wert nicht
gleich 2 ist, dann fährt
die Logik direkt zu Schritt 46-17 fort, ohne die Priorität zu verändern. Bei
Schritt 46-17, wird das DSCP-Feld zu dem neuen DSCP-Feld
verändert,
wird die IP-Prüfsumme
erneut berechnet und wird der CRC regeneriert. Nach Vervollständigung
dieser Aktionen fährt
die Logik zu Schritt 46-4 fort.
-
Es wird zurückgekehrt zum Schritt 46-10;
wenn der RMF-Wert nicht gleich 0 oder 3 ist, dann fährt die Logik
zu Schritt 46-11 fort, in dem die Logik überprüft, ob der
NP-Wert gleich 1x ist. Wenn dies so ist, dann holt sich die Logik
die 802.1p-Paketpriorität
von dem 802.1 p-Prioritätsfeld,
bevor sie bei Schritt 46-18 weitermacht. Wenn bei Schritt 46-11 herausgefunden
wird, dass der NP-Wert nicht gleich 1x ist, dann überprüft die Logik
in Schritt 46-15, ob der NP-Wert gleich 1 ist. Wenn der
NP-Wert gleich 1 ist, dann nimmt die Logik den COS-Schlangenwert
von der DSCP-Prioritätsschlange
auf, bevor sie zu Schritt 46-18 fortfährt. Wenn bei Schritt 46-15 der
NP-Wert nicht gleich 1 ist, dann fährt die Logik direkt zu Schritt 46-18 ohne
Veränderung
der COS-Schlange fort. Wenn bei Schritt 46-18 der FFP-DSCP gleich 1 ist
oder das DSCP Flag gleich 1 ist, dann wird das DSCP-Feld verändert, die
IP-Prüfsumme
erneut berechnet und der CRC regeneriert. In diesem Schritt kommt
das DSCP-Feld von der FFP-Logik, wenn FFP DSCP gleich 1 ist, wenn
dies nicht so ist, dann kommt der Wert von der DSCP-Logik. Nach
Vervollständigung
dieser Aktionen fährt
die DSCP-Logik bei Schritt 46-4 fort.
-
Die 47 zeigt
ein detailliertes Flußdiagramm
der Logik, die in dem Schritt 42-4 der 42 enthalten ist. Bei Schritt 47-1 holt
die Logik das Portbitmap und führt
eine logische UND-Verknüpfung mit
diesem Wert und dem Weiterleitungsportregister durch, wobei dieser
Wert ebenso UND-verknüpft
mit dem aktiven Portregister wird, das der ausgewählten COS-Schlange entspricht,
nachdem sie durch die COS-Zuordnung unter Verwendung des COS- Auswahlregisters
gegangen ist. Dieser Wert wird ebenso mit dem HOL-Registerwert UNDverknüpft, der
dem aktiven Portregister 8 entspricht, um das Portbitmap
bei diesem Schritt zu erhalten. Die Logik sucht ebenso in diesem
Schritt auf die M-Bits der portbasierten VLAN. Nach Vervollständigung
der Aktionen von Schritt 47-1 fährt die Logik bei Schritt 47-2 fort.
Wo die Logik überprüft, ob der
Eingangsport gespiegelt wird, d. h., ob das M-Bit 0 ist, oder ob
das Stapelverbindungs- und das M-Bit gesetzt ist. Wenn dies so ist,
dann wird das Paket zu dem entsprechenden gespiegelten Port bei
Schritt 47-3 gesendet, wenn dies dagegen nicht so ist,
dann fährt
die Logik bei Schritt 47-4 fort, ohne jegliche Spiegelportaktion
durchzuführen. Bei
Schritt 47-4 überprüft die Logik,
ob die Spiegelung sich auf die Filterlogik gründet. Wenn dies so ist, dann wird
das Paket in Schritt 47-5 an den geeigneten gespiegelten
Port gesendet, wenn dies hingegen nicht so ist, dann fährt die
Logik zu Schritt 47-6 fort, ohne eine Spiegelportaktion
durchzuführen.
Bei Schritt 47-6 überprüft die Logik,
ob der Ausgangsport gespiegelt ist, indem in das Ausgangsspiegelregister
geschaut wird. Wenn der Ausgangsport gespiegelt ist, dann wird das
Paket zu dem gespiegelten Port gesendet, bevor mit dem Schritt 47-8 fortgefahren
wird. Wenn das Paket nicht gespiegelt ist, dann fährt die
Logik einfach direkt zu Schritt 47-8 fort, ohne jegliche
Spiegelportaktion durchzuführen.
Der Schritt 47-8 fährt
mit der Spiegelportlogik fort und wird daher nicht in dem Teil erörtert werden.
Nichtsdestoweniger wurde das DSCP bei dieser Stufe der Logik entsprechend
derart modifiziert, dass der Paketfluß auf geeignete Weise geformt
und/oder über
den Ausgang gemessen werden kann.
-
MESSEN UNTER
VERWENDUNG DER MESS-ID
-
In einem weiteren Ausführungsbeispiel
ist die Paketflußsteuerlogik
in die Filterlogik eingefügt
und daher arbeitet die Paketflußsteuerlogik
zusammen mit der Filterung. In diesem Ausführungsbeispiel arbeitet die Filter-/Fluß-Logik
in drei Stufen: zuerst führt
die Logik Aktionen aus, die unabhängig von dem Paketprofil sind, d.
h., dass die Aktionen nicht von der Klassifikation des Pakets als
innerhalb des Profils oder außerhalb
des Profils abhängen;
zweitens nimmt die Filter-/Fluß-Logik
die Meß-Id
auf, die eine 6 Bit-Nummer ist, die dem Paket zugeordnet ist und
in der Regeltabelle gespeichert ist, und führt jegliche angezeigte Innerhalb-Des-Profils-Aktionen
durch, die gesetzt sind, und drittens nimmt die Filter-/Fluß-Logik jegliche angezeigte
Außerhalb-Des-Profils-Aktionen
durch. Beginnend mit den vom Profil unabhängigen Aktionen bei Anwendungen
von jeder individuellen Filtermaske, die im allgemeinen in aufsteigender
numerischer Reihenfolge übernommen werden,
wird von der Filter-/Fluß-Logik
eine Bestimmung vorgenommen, ob es eine übereinstimmende Regel gibt, wie
es in 32 dargestellt
ist. Diese Bestimmung bestimmt im wesentlichen, ob es eine volle Übereinstimmung
gibt oder nicht, wie zuvor definiert, welches in der 32 bei Schritt 32-1 gezeigt
ist. Wenn bestimmt wird, dass es eine vollständige Übereinstimmung für die bestimmte
Maske bei Schritt 32-1 gibt, dann wird das erste Aktionsbit
bei Schritt 32-2 überprüft. Wenn
bei Schritt 32-1 eine vollständige Übereinstimmung nicht bestimmt
wird, dann bestimmt die Logik bei Schritt 32-3, ob es eine
teilweise Übereinstimmung
für die
Maske gibt oder nicht. Wenn in Schritt 32-3 eine teilweise Übereinstimmung
gefunden worden ist, dann fährt
die Logik mit dem Verfahren zur teilweisen Übereinstimmung fort, welches
in 33 dargestellt ist
und nachstehend weiter erörtert
wird. Es wird nun zu Schritt 32-2 zurückgekehrt, wenn bestimmt wird,
dass Bit 1 der Aktionsbits gesetzt ist, dann wird bei Schritt 32-4 die
Klasse der Dienste von diesem Regeleintrag ausgewählt. Wenn
Bit 1 der Aktionsbits nicht gesetzt ist, dann fährt die Logik zu Schritt 32-5 fort
und überprüft, ob Bit
0 des Aktionsfelds gesetzt ist. Wenn Bit 0 gesetzt ist, dann wird
die Klasse der Dienste für
diesen Eintrag von dem Regeleintrag erhalten, wird das Paket zum
prioritätsmarkierten
Feld geändert
und das Regeneriere-CRC-Bit bei Schritt 52-5 gesetzt. Wenn
das Bit 0 nicht gesetzt ist, dann fährt die Logik zu Schritt 32-6 fort,
welches im allgemeinen den Beginn der Fluß-Steuer-Logik darstellt, und
das Ende der vom Profil unabhängigen
Aktionen, da das Aktionsbit 0 und das Aktionsbit 1 von der Flußsteuerung
unabhängige
Aktionen sind. Einfach ausgedrückt,
werden die vom Profil unabhängigen
Aktionen bei Schritt 32-1 bis Schritt 32-5 ausgeführt und
beginnen die vom Profil abhängigen
Aktionen beginnend bei Schritt 32-6. Bei Schritt 32-6 wird
die Meß-Id
für die
bestimmte Maske von der Regeltabelle erhalten. Bei Schritt 32-7 bestimmt
die Logik, ob die von der Regeltabelle erhaltene Meß-Id 0 ist.
Wenn die Meß-Id
0 ist, dann wird das Paket automatisch als innerhalb des Profils
bewertet und die geeigneten Aktionen für innerhalb des Profils werden
sofort bei Schritt 32-8 ausgeführt. Wenn die Meß-Id nicht
0 ist, dann erfaßt
die Logik die Meß-Id
in der Meßtabelle
bei Schritt 32-9, um den Profilstatus des Pakets zu bestimmen.
Bei Schritt 32-10 bestimmt die Logik nach dem Indexieren
in der Meßtabelle,
ob das Paket in der Tat innerhalb des Profils ist und es werden,
wenn dies so ist, die Innerhalb-Des-Profils-Aktionen von Schritt 32-8 ausgeführt. Wenn
das Paket nicht als innerhalb des Profils bestimmt wird, dann wird
das Paket als Vorgabe bei Schritt 32-11 als außerhalb
des Profils bestimmt. Nach der Bestimmung, dass das Paket außerhalb
des Profils ist, werden daher die geeigneten Außerhalb-Des-Profils-Aktionen bei Schritt 32-12 durchgeführt.
-
Die Aktionen für teilweise Übereinstimmung,
die bei Schritt 32-3 erörtert
worden sind und Teil der vom Profil unabhängigen Aktionen sind, sind
weiterhin in 33 detailliert angegeben.
Wenn eine teilweise Übereinstimmung
nicht in Schritt 32-3 gefunden worden ist, dann bestimmt
die Logik, ob es andere zu vergleichende Masken gibt. Wenn es andere
zu vergleichende Masken gibt, dann kehrt die Logik zu Schritt 32-1 in 32 zurück. Wenn es keine anderen zu
vergleichenden Masken gibt, dann fährt die Logik fort, gespiegelte
Ports und abschließende
FFP-Aktionen zu überprüfen, wie
es in 34 dargestellt
ist. Wenn jedoch bei Schritt 32-3 eine teilweise Übereinstimmung
gefunden worden ist, dann fährt
die Logik in 33 zu
Schritt 33-1 fort. Bei Schritt 33-1 bestimmt die
Logik, ob Bit 8 der Nicht-Übereinstimmungs-Aktions-Bits
gesetzt ist. Wenn Bit 8 der Nicht-Übereinstimmungs-Aktions-Bits gesetzt ist,
dann nimmt die Logik die IEEE 802.1p-Prioritätswerte von dem TOS-Präzedenzfeld
in den Paket-Header bei Schritt 33-2 auf und fährt zu Schritt 33-3 fort.
Wenn Bit 8 der Nicht-Übereinstimmungs-Aktions-Bits
nicht gesetzt ist, dann fährt
die Logik direkt zu Schritt 33-3 ohne Aktion fort. Bei
Schritt 33-3 wird Bit 9 der Nicht-Übereinstimmungs-Aktions-Bits überprüft. Wenn
Bit 9 der Nicht-Übereinstimmungs-Aktions-Bits
gesetzt ist, dann wird der TOS-Präzedenzwert von dem IEEE 802.1p-Prioritätsfeld aufgenommen,
die IP-Prüfsumme erneut
berechnet und es wird die regenerierte CRC in die Nachricht gesetzt. Danach
fährt die
Logik zu Schritt 33-5 fort. Wenn das Nicht-Übereinstimmungs-Aktions-Bit
9 nicht gesetzt ist, dann fährt
die Logik einfach zu Schritt 33-5 ohne das Ausführen irgendeiner
Aktion fort. Bei Schritt 33-5 überprüft die Logik, ob Bit 2 der
Nicht-Übereinstimmungs-Aktions-Bits gesetzt
ist. Wenn Bit 2 gesetzt ist, dann ersetzt die Logik das TOS-Präzedenzfeld
in dem IP-Header mit dem IP-Header mit dem TOS_P-Feld von der Filtermaske,
wird die IP-Prüfsumme
erneut berechnet und wird die regenerierte CRC in die Nachricht
gesetzt. Nach dem Ausführen
dieser Aktionen fährt
die Logik in 35 zu
Schritt 35-1 fort. Wenn das Nicht-Übereinstimmungs-Aktions-Bit
nicht gesetzt ist, dann fährt
die Logik einfach zu Schritt 35-1 ohne das Ausführen irgendeiner
Aktion fort.
-
Die 35 zeigt
die Fortführung
der Logik für
Aktionen bei teilweiser Übereinstimmung,
die wieder Teil der vom Profil abhängigen Aktionen sind, beginnend
mit Schritt 35-1. Bei Schritt 35-1 überprüft die Logik,
ob das Nicht-Übereinstimmungs-Aktions-Bit
3 gesetzt ist. Wenn das Bit gesetzt ist, dann wird eine Kopie des
Pakets zur CPU geschickt und Bit 0 der CPU-Betriebscodes wird gesetzt, bevor zu
Schritt 35-3 fortgeschritten wird. Wenn das Nicht-Übereinstimmungs-Aktions-Bit
3 nicht gesetzt ist, dann fährt
die Logik einfach zu Schritt 35-3 fort, ohne irgendeine
Aktion durchzuführen.
Bei Schritt 35-3 überprüft die Logik,
ob das Nicht-Übereinstimmungs-Aktions-Bit
6 gesetzt ist. Wenn das Nicht-Übereinstimmungs-Aktions-Bit 6 gesetzt
ist, dann wird eine Kopie des Pakets an den gespiegelten Port bei
Schritt 35-4 geschickt und die Logik fährt zu Schritt 35-5 fort.
Wenn das Nicht- Übereinstimmungs-Aktions-Bit
6 bei Schritt 35-3 nicht gesetzt ist, fährt die Logik einfach zu Schritt 35-5 fort
ohne irgendeine Aktion auszuführen.
Bei Schritt 35-5 überprüft die Logik,
ob das Nicht-Übereinstimmungs-Aktions-Bit
4 gesetzt ist. Wenn das Nicht-Übereinstimmungs-Aktions-Bit 4 gesetzt ist,
dann läßt die Logik
das Paket bei Schritt 35-6 fallen und fährt zu Schritt 35-7 fort.
Wenn das Nicht-Übereinstimmungs-Aktions-Bit
4 bei Schritt 35-5 nicht gesetzt ist, dann fährt die
Logik einfach zu Schritt 35-7 fort, ohne irgendeine Aktion
auszuführen.
Bei Schritt 35-7 überprüft die Logik,
ob Bit 5 der Nicht-Übereinstimmungs-Aktions-Bits gesetzt
ist. Wenn das Nicht-Übereinstimmungs-Aktions-Bit
5 gesetzt ist, dann werden bei Schritt 35-8 der Ausgangs-Port
und die Ausgangs-Modul-Id von dem Feld in der Filtermaske als Ausgangs-Port
und das Ausgangsmodul gesetzt, gemeinsam mit dem entsprechenden
Satz des Port-Bitmaps. Danach fährt
die Logik zu Schritt 36-1 fort, wie es in 36 gezeigt ist. Wenn das Nicht-Übereinstimmungs-Aktions-Bit
5 nicht gesetzt ist, dann fährt
die Logik einfach zu Schritt 36-1 fort, ohne irgendeine
Aktion auszuführen,
die dem Nicht-Übereinstimmungs-Aktions-Bit
5 zugeordnet ist.
-
Die 36 zeigt
die Fortsetzung der Logik für
teilweise Übereinstimmung,
die wiederum Teil der profilunabhängigen Aktionen sind, beginnend
mit Schritt 36-1. Bei Schritt 36-1 überprüft die Logik,
ob Bit 1 der Nicht-Übereinstimmungs-Aktions-Bits
gesetzt ist. Wenn das Nicht-Übereinstimmungs-Aktions-Bit
1 gesetzt ist, dann wählt
die Logik das COS von dem Feld in der Filtermaske bei Schritt 36-2 aus
und fährt
zu Schritt 36-3 fort. Wenn Bit 1 der Nicht-Übereinstimmungs-Aktions-Bits
nicht gesetzt ist, dann fährt
die Logik einfach zu Schritt 36-3 fort, ohne irgendeine
Aktion durchzuführen.
Bei Schritt 36-3 überprüft die Logik,
ob Bit 0 in den Nicht-Übereinstimmungs-Aktions-Bits
gesetzt ist. Wenn Bit 0 gesetzt ist, dann holt die Logik das COS
von dem Feld in der Filtermaske, modifiziert das Paket für das prioritätsmarkierte
Feld, setzt das Bit für
regeneriertes CRC und fährt
zu Schritt 36-5 fort. Wenn Bit 0 nicht gesetzt ist, dann
fährt die
Logik einfach zu Schritt 36-5 fort, ohne irgendeine Aktion
durchzuführen,
die dem Nicht-Übereinstimmungs-Aktions-Bit
0 zugeordnet ist. Bei Schritt 36-5 überprüft die Logik, ob das Nicht-Übereinstimmungs-Aktions-Bit
10 gesetzt ist. Wenn Bit 10 gesetzt ist und wenn die COS nicht von
einer höheren
Filtermaske modifiziert worden ist, dann wird bei Schritt 36-6 der
DSCP von dem Ein-DSCP-Feld der Filtermaske aufgenommen, die IP-Prüfsumme erneut
berechnet und das Bit Regeneriere-CRC in der Nachricht gesetzt.
Nach dem Durchführen
dieser Aktion und wenn bei Schritt 36-5 das Bit 10 der
Nicht-Übereinstimmungs-Aktions-Bits
nicht als gesetzt ermittelt werden konnte, dann fährt die
Logik zu Schritt 36-7 fort. Bei Schritt 36-7 überprüft die Logik,
ob Bit 11 der Nicht-Übereinstimmungs-Aktions-Bits
gesetzt ist. Wenn das Bit 11 gesetzt ist, dann wählt die Logik den Ausgangsport
und das Ausgangsportmodul von der Filtermaske als den Ausgangsport
und das Ausgangsmodul t in Schritt 36-8 aus. Weiter wird
das Port-Bitmap bei Schritt 36-8 dementsprechend gesetzt.
Wenn in Schritt 35-7 das Bit 11 nicht als gesetzt ermittelt
werden konnte oder wenn die Nicht-Übereinstimmungs-Aktionen für Bit 11
vorgenommen worden sind, dann fährt
die Logik fort, zu prüfen,
ob es nicht noch irgendwelche Masken zum Vergleichen gibt und wenn
dies so ist, fährt
sie fort, indem sie mit Schritt 33-1 für die nächste Maske beginnt und jeden
der oben genannten Schritte wiederholt. Wenn es keine weiteren Masken
zu vergleichen gibt, dann fährt
die Logik fort zu Schritt 43-1, wie es in 43 gezeigt ist.
-
Bei Schritt 43-1 wird das
Port-Bitmap zu Null gesetzt, wenn das Paket aufgrund der durchzuführenden Aktionen
fallengelassen werden soll, sowie es von den Filterverfahren bestimmt
ist. Bei Schritt 43-2 holt die Logik das Port-Bitmap und
UND-verknüpft
diesen Wert mit dem Weiterleitungs-Port-Register und UND-verknüpft dies
mit dem Aktiver-Port-Register entsprechend der ausgewählten COS-Schlange
nach dem Durchlaufen der COS-Zuordnung unter Verwendung des COS-Auswahlregisters
und der UND-Verknüpfung
mit dem HOL-Register
um das Ausgangs-Port-Bitmap zu erhalten. Zusätzlich schaut bei Schritt 43-2 die
Logik auf die M-Bits der portbasierten VLAN-Tabelle, bevor sie zu
Schritt 43-3 fortschreitet. Bei Schritt 43-3 bestimmt
die Logik, ob der Eingangsport gespiegelt ist, welches dem M-Bit
0 entspricht, oder ob die Stapel-Verbindungs- und die M-Bits gesetzt
sind. Wenn dies so ist, dann wird das Paket bei Schritt 43-4 zu
dem gespiegelten Port gesendet, bevor mit der Logik bei Schritt 43-5 fortgefahren
wird. Wenn die Bits bei Schritt 43-4 nicht gesetzt sind, dann
fährt die
Logik direkt zu Schritt 43-5 fort, ohne das Paket zu dem
gespiegelten Port weiterzuleiten. Bei Schritt 43-5 bestimmt
die Logik, ob das Spiegeln auf die Filterlogik gegründet ist.
Wenn nicht, dann fährt
die Logik direkt zu Schritt 43-7 fort. Wenn dies so ist,
dann sendet die Logik wieder das Paket zu dem gespiegelten Port,
bevor sie zu Schritt 43-7 fortschreitet. Bei Schritt 43-7 bestimmt
die Logik vom Überprüfen des
Ausgangs-Spiegel-Registers,
ob der Ausgangsport gespiegelt ist. Wenn das Ausgangs-Spiegel-Port-Register
es vorgibt, dann wird das Paket zu dem gespiegelten Port gesendet.
Wenn nicht, fährt
die Logik durch die Spiegelprozesse hindurch fort, die durch Block
M bezeichnet sind, der hier im Detail nicht erörtert werden wird.
-
Sobald einmal die vom Profil unabhängigen Aktionen
durchgeführt
sind, fährt
die Logik durch die vom Profil abhängigen Aktionen hindurch fort,
beginnend bei 32-8 in 32.
Bei Schritt 32-8 wurde bereits bestimmt, dass das zu behandelnde
Paket als innerhalb des Profils klassifiziert worden ist und als
solches ernennt Schritt 32-8 die vom Paket abhängigen Aktionen.
Die spezifischen Innerhalb-Des-Profils-Aktionen, die in Schritt 32-8 angegeben
sind, werden ab 36 detaillierter
dargestellt. Bei Schritt 34-1 in 34 überprüft die Filter-/Fluß-Steuerlogik
das Innerhalb-Des-Profils- bzw. das In-Profil-Aktions-Bit 8, um
zu sehen, ob dieses Bit gesetzt ist. Wenn dieses Bit nicht gesetzt
ist, dann fährt
die Logik einfach zu Schritt 34-3 fort, ohne irgendeine
Aktion auf dieses Paket anzuwenden. Wenn jedoch dieses Bit gesetzt
ist, dann führt
die Logik die In-Profil-Aktionen aus, die diesem Bit zugeordnet
sind. Spezifischer ausgedrückt,
wenn Bit 8 gesetzt ist, dann nimmt bei Schritt 34-2 die
Logik den 802.1p-Prioritätswert
von dem TOC-Präzedenz-Feld
in dem IP-Header auf und das regenerierte CRC-Bit in der Nachricht
wird gesetzt. Nach dem Durchführen
dieser Aktionen schreitet die Logik zu Schritt 34-3 fort,
in dem die Logik überprüft, ob das
In-Profil-Aktions-Bit
9 gesetzt ist. Wenn das Bit nicht gesetzt ist, dann fährt die
Logik zu Schritt 34-5 fort, ohne irgendeine Aktion auf
dieses Paket anzuwenden. Wenn Bit 9 gesetzt ist, dann führt bei
Schritt 34-4 die Logik die geeigneten In-Profil-Aktionen
aus, die dem In-Profil-Aktions-Bit
9 zugeordnet sind. Spezifisch ausgedrückt, wird bei Schritt 34-6 der
TOS-Präzedenzwert von
dem 802.1p-Prioritätsfeld
aufgenommen, die IP-Prüfsummer
erneut errechnet und das regenerierte CRP-Bit in der Nachricht gesetzt.
Danach schreitet die Logik zu Schritt 34-5 fort, in den
das In-Profil-Aktions-Bit 2 geprüft wird. Wenn Bit 2 gesetzt
ist, dann fährt
die Logik zu Schritt 37-1 fort, wie in 37 gezeigt ist.
-
Der Schritt 37-1 zeigt,
wie die Filter-/Fluß-Steuerlogik überprüft, ob das
In-Profil-Aktons-Bit 3 gesetzt ist. Wenn nicht, dann fährt die
Logik zwischen Bit 37-3 fort; wenn dies so ist, dann sendet
die Logik eine Kopie des Pakets an CPU und setzt bei Schritt 37-2 das
Bit 0 der CPU-Betriebscodes, bevor sie zu Schritt 37-3 fortfährt. Bei
Schritt 37-3 überprüft die Filter/Flußlogik das
In-Profil-Aktions-Bit 6. Wenn dieses Bit nicht gesetzt ist, dann
fährt die
Logik zu Schritt 37-5 fort, ohne eine Aktion durchzuführen, jedoch
wenn dieses Bit gesetzt ist, dann wird eine Kopie des Pakets zu
dem gespiegelten Port bei Schritt 37-4 gesendet, bevor
zu Schritt 37-5 fortgefahren wird. Bei Schritt 37-5 überprüft die Filter-/Fluß-Steuer-Logik
ob das Aktionsbit 4 gesetzt ist. Wenn Bit 4 gesetzt ist, dann wird
das Paket bei Schritt 37-6 fallengelassen, jedoch fährt die
Logik fort, die verbleibenden Aktionsbits zu überprüfen. Wenn Bit 4 nicht gesetzt
ist, dann fährt
die Logik zu Schritt 37-7 fort, indem das Aktionsbit 5
zusammen mit dem Zielport überprüft wird.
Wenn das Aktionsbit 5 gesetzt ist, und der Zielport zu 0x3f, dem
von dem SOC 10 gesetzten, unzulässigen Vorgabewert, gesetzt
ist, dann wähle
den Ausgangsport und die Ausgangs-Modul-Id von dem Regeleintrag
als Ausgangsport und Ausgangsmodul und setze das Port-Bitmap entsprechend.
Wenn das Aktionsbit 5 und der Zielport nicht auf die gewünschten
Werte gesetzt ist, dann fährt
die Logik zu Schritt 37-9 fort, indem das Aktionsbit 7 überprüft wird.
Wenn das Aktionsbit 7 gesetzt ist, dann wird der Zähler implementiert,
der in dem Zählerfeld
der Regel angegeben ist, wenn nicht der Zähler bereits für dieses
Paket von einem vorangegangenen Aktionsbit oder einer vorangegangenen
Regel bei Schritt 37-10 implementiert worden ist. Danach
fährt die
Logik zu Schritt 37-11 fort, indem das Aktionsbit 10 überprüft wird.
Wenn das In-Profil-Aktons-Bit
10 gesetzt ist und die COS nicht von einer höheren Filtermaske modifiziert
worden ist, dann wird das DSCP von dem In-DSCP-Feld der Regeltabelle
aufgenommen, die IP-Prüfsumme
erneut berechnet und das regenerierte CRC in dem Paket bei Schritt 37-12 gesetzt.
Danach fährt
die Logik durch die In-Profil-Aktions-Bits fort, wie es in 42 dargestellt ist.
-
Bei Schritt 42-1 überprüft die Filter-/Fluß-Steuer-Logik
das In-Profil-Aktions-Bit 11 und die Zielportadresse. Wenn das Aktionsbit
11 gesetzt ist und die Zielportadresse gleich 0x3f ist, dann werden
der Ausgangsport und das Ausgangsmodul von dem Regeleintrag als
der Ausgangsport und das Ausgangsmodul gesetzt und das Port-Bitmap
entsprechend aktualisiert, all dies in Schritt 42-2. Nach
Vervollständigung
der dem Aktionsbit 11 zugeordneten Aktionen oder wenn das Aktionsbit
nicht gesetzt ist, fährt
die Filter-/Fluß-Steuer-Logik zu Schritt 42-3 fort.
Bei Schritt 42-3 überprüft die Logik
das In-Profil-Aktions-Bit 12. Wenn das Bit gesetzt ist, wird das
Fallenlassen-Präzedenz-Bit
zu 1 gesetzt und das CNG-Bit in dem P-Kanal gesetzt. Nach dem Durchführen dieser
Aktion oder wenn das Aktionsbit 12 nicht ursprünglich gesetzt ist, fährt die
Logik zu Schritt 42-5 fort. Bei diesem Schritt überprüft die Filter-/Fluß-Steuer-Logik
das In-Profil-Aktions-Bit 13. Wenn dieses Bit gesetzt ist, dann
wird das Paket bei Schritt 42-6 fallengelassen. Nach dem
Fallenlassen des Pakets oder wenn Bit 13 nicht ursprünglich gesetzt
ist, dann fährt
die Logik fort, alle nicht überprüften Masken
zu überprüfen, in dem
die Logikschritte für
die nicht markierten Masken beginnend bei Schritt 33-1 wiederholt
werden.
-
Es wird auf 32 zu Schritt 32-12 zurück Bezug
genommen; wenn das zu beurteilende Paket außerhalb des Profils bzw. Aus-Profil
ist, dann werden die Aus-Profil-Aktionen gemäß 44 durchgeführt. Die Aus-Profil-Aktionen
beginnen bei Schritt 44-1, in dem die Filter/Fluß-Steuer-Logik überprüft, ob das
Aus-Profil-Aktions-Bit 0 gesetzt ist. Wenn dieses Bit gesetzt ist,
dann wird das Paket zu der CPU gesendet und das Bit 0 der CPU-Betriebscodeds gesetzt,
bevor die Logik zu Schritt 44-3 fortfährt. Wenn das Aus-Profil-Aktions-Bit 0 nicht
gesetzt ist, dann fährt
die Logik zu Schritt 44-3 fort, ohne irgendeine Aktion
auf das Paket anzuwenden. Bei Schritt 44-3 überprüft die Filter-/Fluß-Steuer-Logik,
ob Bit 1 der Aus-Profil-Aktons-Bits gesetzt ist. Wenn dieses Bit
gesetzt ist, dann wird das Paket fallengelassen, bevor die Logik
durch die verbleibenden Aktionsbits fortfährt. Wenn Bit 1 nicht gesetzt
ist, dann fährt
die Logik einfach zu Schritt 44-5 fort, ohne irgendeine
Aktion auszuführen.
Bei Schritt 44-5 überprüft die Logik
Aktionsbit 2 und wenn dieses Bit gesetzt ist, dann übernimmt die
Logik bei Schritt 44-6 den DSCP von dem Aus-DSCP-Feld der
Regel auf, wenn die COS nicht geändert
ist. Die IP-Prüfsumme
wird ebenso bei Schritt 44-6 erneut berechnet, zusammen
mit dem Setzen des CRC-Regenerierungs-Bit. Nach dem Vervollständigen der
Aktionen, die dem Aktionsbit 2 zugeordnet sind oder wenn Bit 2 nicht
gesetzt ist, fährt
die Logik zu Schritt 44-7 fort, indem das Aktionsbit 3
des Aktionsfelds überprüft wird. Wenn
das Bit gesetzt ist, dann wird in Schritt 44-8 das Fallenlassen-Präzedenz-Bit
und das CNG-Bit in dem P-Kanal gesetzt. Nach dem Durchführen dieser
Aktionen oder wenn Aktionsbit 3 nicht ursprünglich gesetzt ist, dann fährt die
Logik zu Schritt 44-9 fort, in dem das Bit 4 überprüft wird.
Wenn Bit 4 gesetzt ist, dann wird das Paket bei Schritt 44-10 nicht
fallengelassen, trotz vorheriger Aktionsbits. Wenn Bit 4 nicht gesetzt
ist, dann werden alle vorher ausgeführten Aktionsbits, die das
Paket fallenlassen würden,
nicht verändert
und es wird zugelassen, dass das Paket fallengelassen wird. Bei
Schritt 44-11 sind die Aus-Profil-Aktionen für eine Maske vollständig und
die Logik bestimmt, ob es irgendwelche anderen zu vergleichenden
Masken gibt. Wenn es weitere Masken gibt, dann fährt die Logik bei Schritt 32-1 in 32 mit der nächsten Maske
fort. Wenn es keine weiteren zu überprüfenden Masken
gibt, dann fährt
die Logik mit Schritt 43-1 in 43 fort.
-
Allgemein ausgesprochen soll angemerkt
werden, dass das Blockdiagramm des SOC 10 in 2 zeigt, dass jeder GPIC 30 seine
eigene ARL/L3-Tabellen 31, Regeltabellen 32 und VLAN-Tabellen 33 hat
und dass auch jeder EPIC 20 seine eigenen ARL/L3-Tabellen
31, Regeltabellen 22 und VLAN-Tabellen 23 hat.
Es wird jedoch ebenso betrachtet, dass zwei getrennte Module eine
gemeinsame ARUL3-Tabelle und eine gemeinsame VLAN-Tabelle sich teilen
können.
Jedes Modul hat jedoch im allgemeinen seine eigene Regeltabelle 22.
Daher kann beispielsweise der GPIC 30a die ARUL3-Tabelle 21a und
die VLAN-Tabelle 23a mit dem EPIC 20a teilen.
Auf ähnliche
Weise kann der GPIC 30b die ARL-Tabelle 21b und
die VLAN-Tabelle 23b mit dem EPIC 20b teilen.
Dieses Teil von Tabellen verringert die Anzahl von Gates, die erforderlich
sind, um das Verfahren zu implementieren, und vereinfacht das Look-Up
und die Synchronisierung, wie nachstehend erörtert werden wird.
-
Tabellen-Synchronisierung
und -alterung
-
Das SOC 10 verwendet ein
einzigartiges Verfahren der Tabellensynchronisierung und -alterung,
um sicherzustellen, dass nur aktuelle und aktive Adressinformationen
in den Tabellen gehalten werden. Wenn die ARL/L3-Tabellen aktualisiert
werden, um eine neue Quelladresse zu beinhalten, wird ein „Trefferbit" innerhalb der Tabelle
von dem „Besitzer" oder dem sich verschaffenden
Modul gesetzt, um anzuzeigen, dass auf die Adresse zugegriffen worden
ist. Ebenso wenn eine neue Adresse gelernt und in der ARL-Tabelle
angeordnet worden ist, wird eine S-Kanal-Nachricht auf den S-Kanal 83 als
eine ARL-Einfügenachricht
gesetzt, wobei alle ARL/L3-Tabellen auf dem SOC 10 angewiesen
werden, diese neue Adresse zu lernen. Der Eintrag in den ARL/L3-Tabellen
beinhaltet eine Identifizierung des Ports, der ursprünglich das
Paket empfangen hat und die Adresse gelernt hat. Wenn daher der
EPIC 20a den Port enthält,
der ursprünglich
das Paket empfangen hat und daher ursprünglich die Adresse gelernt
hat, wird der EPIC 20a der „Besitzer" der Adresse. Nur der EPIC 20a kann
daher die Adresse von der Tabelle löschen. Die ARL-Einfüge-Nachricht
wird von allen anderen Modulen empfangen und die Adresse wird in
alle anderen ARL/L3-Tabellen auf dem SOC 10 eingefügt. Der
CMIC 40 wird ebenso die Adressinformation zur CPU 52 senden.
Wenn jedes Modul die Adressinformation empfängt und lernt, wird eine Bestätigungs-
oder ACK-Nachricht zurück
zum EPIC 20a gesendet; da dem Besitzer weiterer ARL-Einfüge-Nachrichten
nichts von dem EPIC 20a gesendet werden kann, bis alle
ACK-Nachrichten von all den Modulen empfangen worden sind. Der CMIC 40 sendet
keine ACK-Nachricht, da der CMIC 40 darauf keine Eingangs-/Ausgangsmodule
umfaßt,
sondern nur mit der CPU 52 kommuniziert. Wenn mehrfache SOC 10 Switches
in einer gestapelten Konfiguration bereitgestellt werden, würden alle
ARL/L3-Tabellen aufgrund der Tatsache synchronisiert werden, dass
der CPS-Kanal 80 durch die gestapelten Module hindurch
geteilt wird.
-
Unter Bezugnahme auf 18 wird der ARL-Alterungsvorgang erörtert. Ein
Alterungs-Timer
wird in jedem EPIC-Modul 20 und jedem GPIC Modul 30 bei
Schritt 18-1 bereitgestellt und es wird bestimmt, ob der Alterungs-Timer
abgelaufen ist. Wenn der Timer abgelaufen ist, beginnt der Alterungsprozeß mit dem
Untersuchen des ersten Eintrags in der ARL-Tabelle 21. Bei Schritt 18-2 wird
bestimmt, ob der Port, auf den in dem ARL-Eintrag Bezug genommen
wird, zu dem bestimmten Modul gehört oder nicht. Wenn die Antwort
nein ist, fährt
der Prozeß zu
Schritt 18-3 fort, in dem bestimmt wird, ob der Eintrag
der letzte Eintrag in der Tabelle ist oder nicht. Wenn die Antwort
bei Schritt 18-3 ja ist, dann wird der Alterungs-Timer
erneut gestartet und der Prozeß wird
bei Schritt 18-4 vervollständigt. Wenn dies nicht der
letzte Eintrag in der Tabelle ist, dann wird der Prozeß zum nächsten ARL-Eintrag bei Schritt 18-5 zurückgeführt. Wenn
jedoch bei Schritt 18-2 ermittelt wird, dass der Port zu
diesem bestimmten Modul gehört,
dann wird bei Schritt 18-6 ermittelt, ob das Trefferbit
gesetzt ist oder nicht, oder ob dies ein statischer Eintrag ist.
Wenn das Trefferbit gesetzt ist, wird das Trefferbit bei Schritt 18-7 zurückgesetzt
und das Verfahren fährt
zu Schritt 18-3 fort. Wenn das Trefferbit nicht gesetzt
ist, wird der ARL-Eintrag bei Schritt 18-8 gelöscht und
eine Lösche-ARL-Eintrag-Nachricht
wird auf dem CPS-Kanal zu den anderen Modulen einschließlich des
CMIC 40 gesendet, sodass die Tabelle wie zuvor angemerkt, auf
geeignete Weise synchronisiert werden kann. Dieser Alterungsprozeß kann auf
die ARL(Ebene 2)-Einträge ausgeführt werden,
ebenso wie auf die Ebene-3-Einträge,
um sicherzustellen, dass gealterte Pakete auf geeignete Weise aus
den Tabellen von den Eigentümern
der Einträge
gelöscht
werden. Wie zuvor angemerkt, wird der Alterungsprozeß nur auf
Einträge
angewendet, bei denen der Port, auf den Bezug genommen wird, zu
dem bestimmten Modul gehört,
welches den Alterungsprozeß durchführt. Zu
diesem Zweck wird daher das Trefferbit nur in dem Eigentümer-Modul
gesetzt. Das Trefferbit wird nicht für Einträge in Tabellen von anderen Modulen
gesetzt, die die ARL-Einfüge-Nachricht
empfangen. Das Trefferbit ist daher immer in den synchronisierten
Nicht-Eigentümer-Tabellen zu Null
gesetzt.
-
Der Zweck der Quell- und Zielsuchen
und der gesamten Look-Ups ist es, die Portnummer innerhalb des SOC 10 zu
identifizieren, an die das Paket gerichtet werden soll, nachdem
es entweder bei dem CBP oder dem GBP 60 plaziert worden
ist. Selbstverständlich
entsteht ein Quell-Look-Up-Fehler beim Lernen der Quelle von der
Quell-Mac-Adressinformation in dem Paket; wobei jedoch ein Ziel-Look-Up-Fehler
dazu führt,
dass das Paket zu allen Ports auf dem SOC 10 geschickt
wird, da kein Port identifiziert werden würde. So lange die Ziel-VLAN-ID
die gleiche wie die Quell-VLAN-ID ist, wird das Paket sich in dem
VLAN verbreiten und das letztendliche Ziel erreichen, an welchem
Punkt ein Bestätigungspaket
empfangen wird, wobei auf diese Weise die ARL-Tabelle in die Lage
versetzt wird, den Ziel-Port
zur Verwendung bei folgenden Paketen zu lernen. Wenn die VLAN-Ids
verschieden sind, wird ein L3-Look-Up und -Lernprozeß durchgeführt, wie
zuvor erörtert.
Es soll angemerkt werden, dass jeder EPIC und jeder GPIC eine FIFO-Schlange
enthält,
um die ARL-Einfüge-Nachrichten
zu speichern, da eine Schlange zum geeigneten Behandeln der Nachrichten
bereitgestellt werden muß, wenn
jedes Modul eine Einfüge-Nachricht
sendet, auch wenn jedes Modul nur eine Nachricht gleichzeitig senden
kann.
-
Port-Bewegung
-
Nach dem ARL/L3-Tabellen Einträge in sich
tragen, kann manchmal der Fall eintreten, in dem ein bestimmter
Benutzer oder eine Station den Ort von einem Port zu einem anderen
Port verändert.
Um Übertragungsfehler
zu verhindern, beinhaltet das SOC 10 daher die Fähigkeit
zum Identifizieren einer solchen Bewegung und zum geeigneten Aktualisieren
der Tabelleneinträge.
Wenn beispielsweise Station A, die beispielsweise sich an Port 1 befindet,
mit Station B kommunizieren will, dessen Einträge anzeigen, dass Benutzer
B sich an Port 26 befindet. Wenn Station B dann zu einem
verschiedenen Port, beispielsweise Port 15, bewegt wird,
tritt ein Ziel-Look-Up-Fehler auf und das Paket wird an alle Ports
gesendet. Wenn das Paket von Station B bei Port 15 empfangen
wird, wird Station B eine Bestätigungs-(ACK)-Nachricht
senden, die von dem Eingang des EPIC/GPIC-Moduls daraufhin empfangen
wird, das in Port 1 enthalten ist. Ein Quell-Look-Up (der
Bestätigungs-Nachricht) wird einen
Treffer auf die Quell-Adresse ergeben, aber die Port-Information
wird nicht übereinstimmen.
Der EPIC/GPIC der das Paket von B empfängt, muß daher den alten Eintrag von
der ARL/L3-Tabelle löschen
und ebenso eine ARL/L3-Lösch-Nachricht
auf dem S-Kanal senden, sodass alle Tabellen synchronisiert werden.
Dann wird die neue Quell-Information
mit dem richtigen Port in die ARL/L3-Tabelle eingefügt und eine
ARL/L3-Einfüge-Nachricht wird auf
den S-Kanal gesetzt, wobei auf diese Weise die ARL/L3-Tabellen mit
der neuen Information synchronisiert werden. Die aktualisierte ARL-Einfüge-Nachricht
kann nicht gesendet werden, bis alle Bestätigungs-Nachrichten bezüglich der
ARL-Lösch-Nachricht
gesendet worden sind, um eine richtige Tabellensynchronisierung
sicherzustellen. Wie zuvor ausgeführt, können die typischen ARL-Einfüge- und
Lösch-Befehle
nur von dem Eigentümer-Modul initiiert werden.
In dem Fall jedoch einer Port-Bewegung, können die Lösch- und Einfüge-Nachricht
in Verbindung mit der Port-Bewegung von jedem beliebigen Modul initiiert
werden, da die Port-Bewegung bei jedem beliebigen Modul identifiziert
werden kann, das ein Paket an den bewegten Port sendet.
-
Trunkieren
-
Während
des Konfigurationsvorgangs, bei dem ein lokales bzw. ein Local-Area-Netzwerk
von einem Administrator von einer Mehrzahl von Switchess, usw. konfiguriert
wird, können
zahlreiche Ports „trunkiert" werden, um die Bandbreite
zu erhöhen.
Wenn beispielsweise der Verkehr zwischen einem ersten Switch SW1 und
einem zweiten Switch SW2 voraussehbar hoch ist, kann das LAN so
konfiguriert werden, dass eine Mehrzahl von Ports, beispielsweise
Ports 1 und 2, zusammen verbunden werden können. In
einer Umgebung von 100 Megabit pro Sekunde, schafft das Trunkieren
von zwei Ports effektiv eine erhöhte
Bandbreite von 200 Megabit pro Sekunde zwischen den zwei Ports.
Die zwei Ports 1 und 2 werden daher als Trunk-Gruppe
identifiziert und die CPU 52 wird verwendet, um die Behandlung
der Trunk-Gruppe
richtig zu konfigurieren. Wenn einmal eine Trunk-Gruppe identifiziert
ist, wird sie als Mehrzahl von Ports behandelt, die als ein logischer
Port arbeitet. Die 19 zeigt
eine Konfiguration, in der SW1, der eine Mehrzahl von Ports darauf
enthält,
eine Trunk-Gruppe mit Ports 1 und 2 von SW2 aufweist,
wobei die Trunk-Gruppe 2 Kommunikations-Leitungen sind,
die die Ports 1 und 2 von jedem von SW1 und SW2
verbindet. Dies bildet die Trunk-Gruppe
T. In diesem Beispiel will Station A die an Port 3 von
SW1 angeschlossen ist, mit Station B kommunizieren oder ein Paket
dorthin senden, die sich bei Port 26 von Switch SW2 befindet.
Das Paket muß daher
durch die Trunk-Gruppe T von Port 3 von SW1 zu Port 26 von
SW2 reisen. Es soll angemerkt werden, dass die Trunk-Gruppe jede
beliebige Anzahl von Ports zwischen den Switchess umfassen kann.
Da der Verkehrs-Fluß zwischen
SW1 und SW2 steigt, könnte
die Trunk-Gruppe T von dem Administrator so rekonfiguriert werden,
dass sie mehr Ports umfasst, wobei auf diese Weise effektiv die
Bandbreite erhöht
wird. Zusätzlich
zum Bereitstellen von erhöhter
Bandbreite verschafft das Trunkieren Redundanz im Fall eines Fehlers
von einer der Verbindungen zwischen den Switchess. Wenn einmal die
Trunk-Gruppe erzeugt ist, programmiert ein Benutzer das SOC 10 über die
CPU 52 mit Trunk-Gruppen-Identifikations-(TGID)-Information,
um die geeignete Trunk-Gruppe oder Trunk-Gruppen zu erkennen. Ein
Trunk-Gruppen-Port-Bitmap wird für
jede TGID vorbereitet, und eine Trunk-Gruppen-Tabelle, die für jedes
Modul auf dem SOC 10 bereitgestellt ist, wird zum Implementieren
der Trunk-Gruppe verwendet, die ebenso als Port-Bündel bezeichnet
werden kann. Eine Trunk-Gruppen-Bitmap-Tabelle wird ebenso bereitgestellt.
Diese zwei Tabellen werden pro Modul bereitgestellt und werden wie
die Tabellen 21, 22 und 23 im Silicium als zweidimensionale
Arrays implementiert. In einem Ausführungsbeispiel des SOC 10 können sechs Trunk-Gruppen
unterstützt
werden, wobei jede Trunk-Gruppe bis zu 8 Trunk-Ports darin aufweist.
Für die
Kommunikation jedoch muß der
gleiche Port für
den Paket-Fluß verwendet
werden, um das Out-Of-Order von Paketen oder Frames zu verhindern.
Die Identifikation des Ports, der für die Kommunikation verwendet
wird, wird auf eine der folgenden Informationen gegründet: Quell-Mac-Adresse,
Ziel-Mac-Adresse, Quell-IP-Adresse, Ziel-IP-Adresse
oder Kombinationen der Quell- und Ziel-Adressen. Wenn die Quell-Mac
verwendet wird, wenn beispielsweise Station A an Port 3 von
SW1 ein Paket an die Station B an Port 26 von SW2 senden
will, dann werden die letzten 3 Bits der Quell-Mac- Adresse von Station
A, die in dem Quell-Adressfeld des Pakets sind, verwendet, um einen
Trunk-Port-Index zu erzeugen. Der Trunk-Port-Index wird dann in
der Trunk-Gruppen-Tabelle
von dem Eingangs-Submodul 14 des bestimmten Ports auf dem
Switch eingesehen, um zu bestimmen, welcher Port der Trunk-Gruppe
für die
Kommunikation verwendet wird. In anderen Worten ausgedrückt, wenn ein
Paket von der Station A zu Station B gesendet werden soll, wird
die Adressauflösung
wie oben ausgeführt durchgeführt. Wenn
das Paket über
eine Trunk-Gruppe behandelt werden soll, dann wird ein T-Bit in
dem ARL-Eintrag gesetzt, der mit der Ziel-Adresse übereinstimmt.
Wenn das T-Bit oder Trunk-Bit gesetzt ist, dann wird die Ziel-Adresse
von einem der Trunk-Ports gelernt. Der Ausgangsport wird daher nicht
von der Portnummer gelernt, die von dem ARL-Eintrag erhalten wird,
sondern wird statt dessen von der Trunk-Gruppen-ID und der Regelmarkierung
(RTAG) gelernt, die von dem ARL-Eintrag aufgenommen wird und die
verwendet werden kann, um den Trunk-Port auf der Grundlage des Trunk-Port-Index
zu identifizieren, der in der Trunk-Gruppen-Tabelle enthalten ist.
Die RTAG und TGID, die in dem ARL-Eintrag enthalten sind, definieren
daher, welcher Teil des Pakets zum Erzeugen des Trunk-Port-Index
verwendet wird. Wenn beispielsweise der RTAG-Wert 1 ist, dann werden
die letzten 3 Bits der Quell-Mac-Adresse verwendet, um den Trunk-Port-Index zu
identifizieren; unter Verwendung der Trunk-Gruppen-Tabelle kann der Trunk-Port-Index
dann verwendet werden, um den geeigneten Trunk-Port zur Kommunikation
zu identifizieren. Wenn der RTAG-Wert 2 ist, dann sind es die letzten
3 Bits der Ziel-Mac-Adresse, die zum Erzeugen des Trunk-Port-Index
verwendet werden. Wenn die RTAG 3 ist, dann werden die letzten 3
Bits der Quell-Mac-Adresse XORverknüpft mit den letzten 3 Bits
der Ziel-Mac-Adresse. Das Ergebnis dieses Vorgangs wird zum Erzeugen
des Trunk-Port-Index verwendet. Für IP-Pakete werden zusätzliche
RTAG-Werte verwendet,
sodass die Quell-IP- und Ziel-IP-Adressen für den Trunk-Port-Index verwendet
werden, anstelle der Mac-Adressen.
-
Das SOC 10 wird so konfiguriert,
dass wenn ein Trunk-Port abgeschaltet wird oder aus irgend einem Grund
versagt, eine Benachrichtigung durch den CMIC 40 an die
CPU 52 gesendet wird. Die CPU 52 wird dann so
konfiguriert, dass sie automatisch die Trunk-Gruppen-Tabelle und die VLAN-Tabellen überprüft, um sicherzustellen,
dass die geeigneten Port-Bitmaps geändert werden, um der Tatsache
zu entsprechen, dass ein Port abgeschaltet worden ist und daher
entfernt worden ist. Wenn entsprechenderweise der Trunk-Port oder
die Verbindung wieder hergestellt worden ist, muß das Verfahren umgedreht werden
und eine Nachricht muß an die
CPU 52 gesendet werden, sodass die VLAN-Tabellen, die Trunk- Gruppen-Tabellen,
usw. aktualisiert werden können,
um das Vorhandensein des Trunk-Ports wiederzuspiegeln.
-
Weiterhin soll angemerkt werden,
dass die Trunk-Gruppe zum Empfangen von Steuer-Frames und Steuer-Paketen, die ebenso
als BPDUs bekannt sind, konfiguriert sind, jedoch nur einer der
Trunk-Ports, da die Trunk-Gruppe als eine einzige logische Verbindung
behandelt wird. Die port-basierte VLAN-Tabelle muß daher
so konfiguriert sein, dass sie eingehende BPDUs von nicht spezifizierten
Trunk-Ports zurückweist.
Diese Zurückweisung
kann einfach gesetzt werden, indem ein B-Bit in der VLAN-Tabelle
gesetzt wird. Der IEEE-Standard
802.1d definiert einen Algorithmus, der als Aufgespannter-Baum-Algorithmus
bzw. Spanning-Tree-Algorithmus bekannt ist, um Datenschleifen in
Switchess zu vermeiden, in denen Trunk-Gruppen existieren. Unter
Bezugnahme auf 19 könnte eine
logische Schleife zwischen Ports 1 und 2 der Switchess SW1
und SW2 existieren. Der Spanning-Tree-Algorithmus
definiert vier getrennte Zustände,
wobei diese Zustände
Deaktivieren, Blockieren, Zuhören,
Lernen und Weiterleiten umfassen. Die Port-basierte VLAN-Tabelle ist
so konfiguriert, dass sie die CPU 52 in die Lage versetzt,
die Ports für
einen spezifischen ARL-Zustand zu programmieren, sodass die ARL-Logik
die geeignete Aktion auf die eingehenden Pakete anwendet. Wie zuvor erwähnt, schafft
das B-Bit in der VLAN-Tabelle die Fähigkeit, BPDUs zurückzuweisen.
Das St-Bit in der ARL-Tabelle ermöglicht es der CPU, die statischen
Einträge
zu lernen; wie in 18 erwähnt ist,
werden die statischen Einträge
nicht von dem Alterungsprozeß gealtert.
Das Trefferbit in der ARL-Tabelle ermöglicht es, wie zuvor erwähnt, der
ARL-Maschine 143, zu erfassen, ob es auf diesen Eintrag
einen Treffer gab oder nicht. In anderen Worten verwendet das SOC 10 eine
einzigartige Konfiguration von ARL-Tabellen, VLAN-Tabellen, Modulen,
usw., um effiziente auf Silicium basierte Implementierung der Spanning-Tree-Zustände zu schaffen.
-
In bestimmten Situationen, wie beispielsweise
bei einem Ziel-Look-Up-Fehler (DLF), in dem ein Paket in alle Ports
auf einem VLAN gesendet wird oder bei einem Multicast-Paket, wird
die Trunk-Gruppen-Bitmap-Tabelle so konfiguriert, dass sie die geeignete
Port-Information aufnimmt, sodass das Paket nicht zu den Mitgliedern
der gleichen Quell-Trunk-Gruppe zurückgesetzt wird. Dies verhindert
unnötigen
Verkehr auf dem LAN und erhält
die Effizienz bei der Trunk-Gruppe.
-
IP/PX
-
Unter Bezugnahme wiederum auf 14 kann jeder EPIC 20,
GPIC 30 oder IPIC 90 so konfiguriert werden, dass
sie sowohl die Unterstützung
des IP- als auch des IPX-Protokolls bei Leitungsgeschwindigkeit ermöglichen.
Diese Flexibilität
wird bereitgestellt, ohne irgendeine nachteilige Auswirkung auf
die Systemleistung zu haben und verwendet eine Tabelle, die in Silicium
implementiert ist und für
das IP-Protokoll, das IPX-Protokoll oder eine Kombination von IP-Protokoll
und IPX-Protokoll ausgewählt
werden kann. Diese Fähigkeit
wird innerhalb der Logik-Schaltung 1411 zur Verfügung gestellt
und verwendet einen Cage-Look-Up nach
dem längsten
IP-Präfix
(IP_LPC) und einen Cage-Look-Up nach dem längsten IPX-Präfix (IPS_LPC). Während des
Layer-3-Look-Ups wird eine Anzahl von gleichzeitigen Suchen durchgeführt; ein
schneller L3-Look-Up und der Cage-Look-Up nach dem längsten IP-Präfix werden
gleichzeitig durchgeführt,
wenn das Paket mittels des Paket-Headers als ein IP-Paket identifiziert
worden ist. Wenn der Paket-Header das Paket als ein IPX-Paket identifiziert,
werden der schnelle L3-Look-Up und der Cage-Look-Up nach dem längsten IPX-Präfix gleichzeitig
durchgeführt.
Es soll angemerkt werden, dass die ARL/L3-Tabellen 21/31 der
EPICs 20 und GEPICs 30 eine IP-Vorgabe-Router-Tabelle
beinhalten, die für
einen Cage-Look-Up nach dem längsten IP-Präfix verwendet
wird, wenn das Paket als IP-Paket identifiziert wird, und ebenso
eine IPX-Vorgabe-Router-Tabelle beinhaltet, die verwendet wird,
wenn der Paket-Header das Paket als IPX-Paket identifiziert. Geeignete
Hexadezimalcodes werden verwendet, um die Pakettypen zu bestimmen.
Wenn das Paket weder als IP-Paket noch als IPX-Paket identifiziert
wird, wird das Paket zur CPU 52 mittels des CPS-Kanals 80 und
dem CMIC 40 geleitet. Es soll angemerkt werden, dass wenn
das Paket als ein IPX-Paket identifiziert ist, es jedes beliebige
der vier Typen von IPX-Paketen sein kann. Die vier Typen, wie zuvor
erwähnt,
sind Ethernet 802.3, Ethernet 802.2, Ethernet SNAP und Ethernet
II.
-
Der gleichzeitige Look-Up von L3
und entweder IP oder IPX ist wichtig für die Leistung des SOC 10. In
einem Ausführungsbeispiel
des SOC 10 würde
die L3-Tabelle einen Teil enthalten, der IP-Adress-Information enthält, und
einen anderen Teil, der IPX-Information hat, als Vorgabe-Router-Tabellen.
Diese Vorgabe-Router-Tabellen, wie zuvor erwähnt, werden in Abhängigkeit
davon durchsucht, ob das Paket ein IP-Paket oder ein IPX-Paket ist.
Um diese Tabellen deutlicher zu zeigen, ist das L3-Tabellen-Format
für eine
L3-Tabelle innerhalb der ARL/L3-Tabellen 21 wie folgt:
IP-
oder IPX-Adresse – 32
Bit lang – IP-
oder IPX-Adresse – Ist
eine 32-Bit-IP- oder IPX-Adresse.
Die Ziel-IP- oder -IPX-Adresse in einem Paket wird als Schlüssel beim
Durchsuchen dieser Tabelle verwendet.
Mac-Adresse – 48 Bit
lang – Die
Mac-Adresse ist wirklich die nächste
Hop-Mac-Adresse. Die Mac-Adresse wird als Ziel-Mac-Adresse bei dem
weitergeleiteten IP-Paket verwendet.
Port-Nummer – 6 Bit
lang – Port-Nummer – Ist die
Port-Nummer, an die das Paket auszugehen hat, wenn die Ziel-IP-Adresse
mit der IP-Adresse dieses Eintrags übereinstimmt.
L3-Schnittstellen-Nummer – 5 Bit
lang – L3-Schnittstellen-Nummer – Diese
L3-Schnittstellen-Nummer
wird verwendet, um die Router-Mac-Adresse von der L3-Schnittstellen-Tabelle
zu erhalten.
L3-Trefferbit – 1 Bit lang – L3-Trefferbit – Wird verwendet,
um zu überprüfen, ob
es einen Treffer auf diesen Eintrag gab. Das Trefferbit wird gesetzt,
wenn die Quell-IP-Adress-Suche mit diesem Eintrag übereinstimmt. Der
L3-Alterungsprozeß altert
diesen Eintrag, wenn dieses Bit nicht gesetzt ist.
Frame-Typ – 2 Bit
lang – Frame-Typ
zeigt den Typ des IPX-Frames an (802.2, Ethernet II, SNAP und 802.3), der
von diesem IPX-Knoten angenommen wird. Der Wert 00 – Ethernett
II-Frame. Wert 01 – SNAP-Frame. Wert
02 – 802.2-Frame.
Wert 03 – 802.3-Frame.
Reserviert – 4 Bit
lang – Reserviert
für zukünftige Benutzung.
-
Die Felder in der Vorgabe-IP-Router-Tabelle
sind wie folgt:
IP-Subnet-Adresse – 32 Bit lang – IP-Subnet-Adresse – Ist eine
32 Bit-IP-Adresse des Subnetzes.
Mac-Adresse – 48 Bit
lang – Mac-Adresse
ist wirklich die nächste
Hop-Mac-Adresse und in diesem Fall die Mac-Adresse des Vorgabe-Routers.
Port-Nummer – 6 Bit
lang – Port-Nummer
ist die Port-Nummer, an den das weitergeleitete Paket auszugehen hat.
Modul-ID – 5 Bit
lang – Identifiziert
das Modul in einem Stapel, an das das Paket nach der Übereinstimmung des
längsten
Präfix
gehen muß.
L3-Schnittstellen-Nummer – 5 Bit
lang – L3-Schnittstellen-Nummer
ist die L3-Schnittstellen-Nummer.
IP-Subnetz-Bits – 5 Bit
lang – IP-Subnetz-Bits
ist die gesamte Zahl von Subnetz-Bits in der Subnetz-Maske. Diese
Bits werden UND-verknüpft
mit der Ziel-IP-Adresse, vor dem Vergleich mit der Subnetz-Adresse.
C-Bit – 1 Bit
lang – C-Bit – Wenn dieses
Bit gesetzt ist, dann wird das Paket auch zur CPU gesendet.
-
Die Felder der Vorgabe-IPX-Router-Tabelle
innerhalb der ARL/L3-Tabellen 21 sind wie folgt:
IPX-Subnetz-Adresse – 32 Bit
lang – IPS-Subnetz-Adresse
ist eine 32-Bit-IPX-Adresse des Subnetzes.
Mac-Adresse – 48 Bit
lang – Mac
Adresse ist wirklich die nächste
Hop-Mac-Adresse und ist in diesem Fall die Mac-Adresse des Vorgabe-Routers.
Port-Nummer – 6 Bit
lang – Port-Nummer
ist die Port-Nummer, an den das weitergeleitete Paket auszugehen hat.
Modul-ID – 5 Bit
lang – Identifiziert
das Modul in einem Stapel, an dem das Paket nach der Übereinstimmung mit
dem längsten
Präfix
gehen muß.
L3-Schnittstellen-Nummer – 5 Bit
lang – L3-Schnittstellen-Nummer
ist die L3-Schnittstellen-Nummer.
IPX-Subnetz-Bits – 5 Bit
lang – IPX-Subnetz-Bits
ist die Gesamtanzahl von Subnetz-Bits in der Subnetz-Maske. Diese
Bits werden UND-verknüpft
mit der Ziel-IPX-Adresse vor dem Vergleich mit der Subnetz-Adresse.
C-Bit – 1 Bit
lang – C-Bit – Wenn dieses
Bit gesetzt ist, dann wird das Paket ebenso zur CPU gesendet.
-
Wenn in der L3-Tabelle für die Ziel-IP-Adresse
keine Übereinstimmung
gefunden worden ist und die Übereinstimmung
des längsten
Präfix
für den
Vorgabe-IP-Router fehlschlägt,
dann wird das Paket an die CPU gegeben. Wenn auf ähnliche
Weise in der L3-Tabelle für
eine Ziel-IPX-Adresse keine Übereinstimmung
gefunden wird und die Übereinstimmung
für den
längsten
Präfix
des Vorgabe-IPX-Routers fehlschlägt,
dann wird das Paket an die CPU gegeben. Die Look-Ups werden parallel
durchgeführt,
aber wenn die Ziel-IP- oder IPX-Adresse
in der L3-Tabelle gefunden wird, dann werden die Ergebnisse des
Vorgabe-Router-Tabellen-Look-Ups
aufgegeben.
-
Der Cage-Look-Up nach dem längsten Präfix, sowohl
für IP
als auch IPX beinhaltet wiederholte Übereinstimmungsversuche von
Bits, der IP-Subnetz-Adresse. Die Übereinstimmung für den längsten Präfix besteht
in der UND-Verknüpfung
der Ziel-Adresse mit der Nummer der IP- oder der IPX Subnetzbits
und dem Vergleichen des Ergebnisses mit der IP-Subnetz-Adresse.
Wenn eine Zuordnung des längsten
Präfix
gefunden ist, dann werden, so lange die TTL nicht gleich 1 ist,
die geeigneten IP-Prüfsummen
erneut berechnet, die Ziel-Mac-Adresse mit der nächsten Hop-Mac-Adresse ersetzt
und die Quell-Mac-Adresse mit der Router-Mac-Adresse der Schnittstelle
ersetzt. Die VLAN-ID wird von der L3-Schnittstellen-Tabelle erhalten und
das Paket wird entweder markiert oder unmarkiert gesendet, wie es
angezeigt ist. Wenn das C-Bit gesetzt ist, wird eine Kopie des Pakets
an die CPU gesendet, wie es zum Lernen oder für andere CPU-bezogene Funktionen erforderlich
sein kann.
-
Es soll daher angemerkt werden, dass
wenn ein Paket ankommt, dass an eine Mac-Adresse gerichtet ist,
die einer Ebene-3-Schnittstelle für ein ausgewähltes VLAN
zugeordnet ist, der Eingang nach einer Übereinstimmung auf der IP/IPX-Ziel-Subnetz-Ebene
sucht. Wenn es keine Übereinstimmung
bei dem IP/IPX-Ziel-Subnetz gibt, wird das Paket zur CPU 52 zum
geeigneten Routing weitergeleitet. Wenn jedoch eine IP/IPX-Übereinstimmung
gemacht ist, dann wird die Mac-Adresse des nächsten Hop und die Ausgangs-Port-Nummer
identifiziert und das Paket auf geeignete Weise weitergeleitet.
-
In anderen Worten ausgedrückt wird
der Eingang des EPIC 20 oder GPIC 30 in Bezug
auf die ARL/L3-Tabellen 21 so konfiguriert, dass wenn ein Paket
in das Eingangs-Submodul 14 kommt, der Eingang identifizieren
kann, ob das Paket ein IP-Paket oder ein IPX-Paket ist. IP-Pakete werden zu
einem IP/ARL-Look-Up geleitet und IPX-konfigurierte Pakete werden
zu einem IPX/ARL-Look-Up geleitet. Wenn eine L3-Übereinstimmung während des
L3-Look-Up gefunden worden ist, dann werden die Look-Ups für Zuordnungen
des längsten
Präfix
aufgegeben.
-
IP Multicast
-
Das SOC 10 ist zur Unterstützung von
IP-Multicast-Anwendungen konfiguriert, wie beispielsweise Multimedia-Konferenzen,
Echtzeitvideo, Echtzeitaudio, usw. Diese Anwendungen sind sehr stark
von der Punkt-Zu-Mehrfachpunkt-Lieferung von Diensten abhängig bzw.
der Punkt-Zu-Multipunkt-Lieferung. Einige IP-Protokolle, die zur
Unterstützung
von IP-Multicast eingesetzt worden, beinhalten DVMRP (distance vector multicast
routing protocol), Protokoll-Independent Multicast-Dense Mode, Protokoll-Independent Multicast-Sparse
Mode, Multicast Extensions zu SOSPF, usw. Um solche Konfigurationen
zu implementieren, ist jeder EPIC, GPIC und mögliche andere Module auf dem
SOC 10 mit einer IP-Multicast-Tabelle versehen. Die Eingangslogik 14 und
die Ausgangslogik 16 sind zum Behandeln von IP-Multicast-Paketen
konfiguriert.
-
Jede Multicast-Tabelle kann beispielsweise
256 Einträge
tief und 128 Bit breit sein. Die Tabelle ist sortiert und der Suchschlüssel ist
die Quell-IP-Adresse zuzüglich
der Multicast-IP-Adresse.
Die 24 zeigt das Format
für eine
IP-Multicast-Tabelle. Die Felder für so eine Tabelle können wie
folgt sein:
Quell-IP-Adresse – 32 Bit lang – Quell-IP-Adresse
ist eine 32-Bit-IP-Adresse der Quellstation.
Multicast-IP-Adresse – 32 Bit
lang – Multicast-IP-Adresse – Ist eine
32 Bit-IP-Multicast-Adresse.
Anmerkung: IP-Multicast-Adresse ist eine Klasse-D-Adresse; die ersten
3 MSBs sind alle eins.
L3-Port-Bitmap – 31 Bit lang – L3-Port-Bitmap
identifiziert all die Ports, an die das Paket ausgehen soll.
L3-Modul-Bitmap – 32 Bit
lang – L3-Bit-Modul-Bitmap
identifiziert alle Module, an die das Paket ausgehen soll.
Quell-Port – 6 Bit
lang – Quell-Port
ist der Port, der der nächste
zu der Quell-Station ist. In anderen Worten sendet die Quell-Station,
die von der Quell-IP-Adresse identifiziert wird, den Multicast-Verkehr
durch diesen Port.
TTL-Schwelle – 5 Bit lang – Wenn das
eingehende Multicast-Paket eine TTL unter der TTL-Schwelle hat, dann wird
das Paket fallengelassen.
-
Die 25 zeigt
ein Flußdiagramm,
wie der Eingang 14 eines SOC 20 ein IP-Multicast-Paket behandeln würde, das
an einem Port darauf ankommt. In Schritt 25-1 wird das
Paket untersucht, um festzustellen, ob es ein IP-Multicast-Paket
ohne irgendwelche Optionsfelder ist. Wenn es Optionsfelder gibt,
wird das Paket zur CPU 52 zur weiteren Behandlung gesendet.
In Schritt 25-2 wird die IP-Prüfsumme validiert. In Schritt 25-3 wird
die Ziel-IP-Adresse
untersucht, um zu sehen, ob es eine Klasse-D-Adresse ist. Eine Klasse-D-Adresse
ist eine Adresse, bei der die ersten 3 signifikantesten Bits alle
zu 1 gesetzt sind. Wenn die Ziel-IP-Adresse keine Klasse-D-Adresse
ist, dann wird das Paket fallengelassen. Wenn dies so ist, wird
bei Schritt 25-4 die IP-Multicast-Tabelle mit dem Schlüssel als
die Quell-IP-Adresse
+ die Ziel-IP-Adresse durchsucht. Wenn der Eintrag nicht gefunden
wird, wird das Paket zur CPU 52 gesendet. Wenn bei Schritt 25-5 eine Übereinstimmung
gefunden wird, wird die TTL (time-to-live) gegen den TTL-Grenzwert
in dem IP-Multicast-Eintrag bei Schritt 25-6 geprüft. Wenn
der TTL-Wert kleiner als der Grenzwert ist, wird das Paket fallengelassen.
Wenn der TTL-Wert nicht unter der Schwelle liegt, dann wird der
Quell-Port mit dem Quell-Port in dem Eintrag bei Schritt 25-7 verglichen.
Wenn es keine Übereinstimmung
gibt, dann wird das Paket fallengelassen. Wenn es eine Übereinstimmung
gibt, wird das Paket auf geeignete Weise über den C-Kanal 81 des
CPS-Kanals 80 bei Schritt 25-8 gesendet, wobei
die geeigneten P-Kanal-Nachrichten damit gerastet sind. Das Paket
wird mit dem L2-Port-Bitmap und dem L2-Unmarkiert-Bitmap, das als
Ergebnis von der L2-Suche erhalten worden ist, und dem L3-Port-Bitmap
als ein Ergebnis der IP-Multicast-Suche gesendet. Zusätzlich wird das IP-Multicast-Bit
in der P-Kanal-Nachricht gesetzt, welches anzeigt, dass das Paket
ein IP-Multicast-Paket ist und dass der Ausgang nach Empfang des
Pakets den IP-Header auf geeignete Weise verändern muß. Von dem CPS-Kanal 80 wird
daher das Paket zu dem geeigneten Puffer-Pool gesendet, bis er von
dem geeigneten Ausgangs-Port erhalten wird.
-
Wenn der geeignete Ausgangs-Port
das Paket von dem Speicher erhält,
wenn der Ausgangsport Teil des L3-Port-Bitmaps ist, muß das Paket
dann verändert
werden. Der TTL-Wert
muß verringert
werden und die IP-Header-Prüfsumme
wird erneut berechnet. Die Quell-Mac-Adresse in dem Paket muß verändert werden, um
die L3-Schnittstellen-Mac-Adresse
zu sein. Wenn die L3-Schnittstelle, die dem Port zugeordnet ist,
markiert ist, dann muß der
VLAN-Markierungs-Header mit der VLAN-Id ersetzt werden, die für die Schnittstelle konfiguriert
ist.
-
Es soll angemerkt werden, dass wenn
es mehrfache L3/Schnittstellen gibt, die einem Port zugeordnet sind,
mehrfache Pakete an diesen Port gesendet werden müssen. Das
CPU-Bit in dem IP-Multicast-Eintrag kann in diese Situation gesetzt
sein, sodass das Paket an die CPU zusammen mit dem Port-Bitmap gegeben wird,
auf das das Paket bereits gesendet worden ist. Die CPU kann dann
mehrfache Kopien des Pakets an den Port mit den mehrfachen L3-Schnittstellen
senden. Diese Konfiguration minimiert daher die Komplexität und maximiert
die Geschwindigkeit auf dem SOC 10, aber liefert die erhöhte Flexibilität der Beteiligung
der CPU, wenn es erforderlich ist.
-
Ein anderes wichtiges Feld des Filtermaskenformats
ist der Zählerindex
oder das Zählerfeld.
Dieses 5-Bit-Feld wird jedes mal inkrementiert, wenn es eine Übereinstimmung
mit der bestimmten Filtermaske gibt. Die Zählerdaten werden für eine Anzahl
von verschiedenen Zwecken verwendet, einschließlich dem Finden von Paket-Zählungen
für bestimmte
Typen von Paketen, Paket-Statistiken, usw. Wenn ein Netzwerkadministrator
beispielsweise eine bestimmte Rate eines bestimmten Pakettyps oder
eine Paketfrequenz oder Pakete von einer bestimmten IP-Adresse überwachen
will, kann der Zähler
konfiguriert sein, dass er so incrementiert wird. Schwellen können von
dem Netzwerkadministrator so gesetzt werden, dass vorbestimmte Aktionen durchgeführt werden
können,
nachdem eine ausgewählte
Schwelle überschritten
wird. Eine solche Aktion kann das Wechseln der Prioriät der Pakete,
das Fallenlassen von weiteren Paketen oder eine andere Aktion sein.
-
Bemerkenswerte Aspekte des Regel-Tabellen-Formats
für das
SOC 10 sind Felder von Aktionsbits, die es ermöglichen,
dass die Priorität
oder die Präzedenz
von TOS zu COS gewechselt werden, und umgekehrt. Unter Bezugnahme
auf die in 23 dargestellte
Regeltabelle, und das Filtermaskenformat, ermöglichen Bits 8 und 9 des Aktionsbitfelds
diese Umwandlung. Wenn Bit 8 gesetzt ist, dann wird das 802.1p-Prioritätsfeld von
dem COS-Präzedenz-Feld
in dem IP-Header aufgenommen. Wenn Bit 9 gesetzt ist, dann wird
der Wert des COS-Präzedenz-Felds
von dem 802.1p-Prioritäts-Feld
aufgenommen. Dies schafft den beträchtlichen Vorteil, eine wertvolle
Information zu schaffen, die sowohl von Routern als auch von Switchess
gelesen werden kann. Switchess, die bei Ebene 2 arbeiten, werden
auf das 802.1p-Prioritäts-Feld
(Erfinder – bitte
bestätigen)
schauen, wohingegen Router, die bei Ebene 3 arbeiten, auf das TOS-Präzedenzfeld
schauen. Wenn ein Paket in der Switch-Domäne
von der Router-Domäne
in einem LAN eintrifft, kann die Präzedenz von dem SOC 10 auf
geeignete Weise von dem 802.1p-Prioritätsfeld zu dem TOS-Präzedenz-Feld
und umgekehrt bewegt werden.
-
HOL-Blockierung
-
SOC 10 beinhaltet einige
einzigartige Daten-Fluß-Merkmale,
um die Effizienz und die Schaltgeschwindigkeit zu maximieren. Bei
Netzwerk-Kommunikationen tritt ein Konzept auf, das als Head-Of-Line
oder HOL-Blockierung bekannt ist, wenn ein Port versucht, ein Paket
an einen überfüllten Port
zu senden, und unmittelbar hinter dem Paket ein anderes Paket ist,
das an einen nicht überfüllten Port
gesendet werden soll. Die Überfüllung an
dem Ziel-Port des ersten Pakets würde zu einer Verzögerung der Übertragung
des zweiten Pakets zu dem nicht überfüllten Port
führen.
Jeder EPIC 20, GPIC 30 und IPIC 90 innerhalb
des SOC 10 beinhaltet einen einzigartigen HOL-Blockierungs-Mechanismus,
um den Duchsatz zu maximieren und die negativen Auswirkungen zu
minimieren, die ein einzelner überfüllter Port
auf den Verkehr haben würde,
der zu nicht überfüllten bzw.
verstopften Ports geht. Wenn beispielsweise ein Port auf einem GPIC 30 mit
einer Datenrate von beispielsweise 1000 Megabit versucht, Daten
zu einem anderen Port 24a auf den EPIC 20a zu
senden, würde
der Port 24a sofort verstopft werden. Jeder Port auf jedem
IPIC 90, GPIC 30 und EPIC 20 wird von
der CPU 52 so programmiert, dass er einen oberen Grenzwert
und einen unteren Grenzwert pro Port pro Dienstklasse (COS) hat,
im Bezug auf den Puffer-Raum innerhalb des CBP 50. Die
Tatsache, dass der Head-Of-Line-Blockierungs-Mechanismus per Port
eine per COS-Head-Of-Line-Blockierungs-Verhinderung ermöglicht,
ermöglicht
einen effizienteren Datenfluß,
als er im Stand der Technik bekannt ist. Wenn die Ausgangs-Schlange
für einen bestimmten
Port den vorprogrammierten oberen Grenzwert innerhalb des zugeteilten
Puffers im CBP 50 trifft, sendet die MMU 70 auf
dem S-Kanal 83 eine COS-Schlangen-Status-Benachrichtigung
an das geeignete Eingangsmodul auf dem geeigneten GEPIC 30 oder
EPIC 20. Wenn die Nachricht empfangen wird, wird das Aktive-Port-Register
entsprechend zu dem in der Nachricht angegebenen COS aktualisiert.
Wenn das Port-Bit für
diesen bestimmten Port zu Null gesetzt wird, wird der Eingang so
konfiguriert, dass er alle Pakete fallen läßt, die zu diesem Port gehen.
Auch wenn die fallengelassenen Pakete eine nachteilige Auswirkung
auf die Kommunikation zu dem verstopften Port haben, ermöglicht es
das Fallenlassen der für
die verstopften Ports bestimmten Pakete den Paketen, die zu nicht
verstopften Ports gehen, dass sie prompt dorthin weitergeleitet
werden. Wenn die Ausgangs-Schlange
unter den vorprogrammierten unteren Grenzwert geht, sendet die MMU 70 eine
COS-Schlangen-Status-Benachrichtigungs-Nachricht auf dem Seitenband-Kanal
mit dem Bit, das für
den Port gesetzt ist. Wenn der Eingang diese Nachricht bekommt,
wird das Bit, das dem Port in dem Aktiver-Port-Register entspricht,
für das
Modul gesetzt, sodass das Paket zu der geeigneten Ausgangsschlange
gesendet werden kann. Durch das Warten, bis die Ausgangsschlange
unter den unteren Grenzwert geht, bevor der Port wieder aktiviert
wird, wird eine Hysterese in das System eingebaut, um eine stetige
Aktivierung und Deaktivierung des Ports wegen dem Weiterleiten von
nur einem Paket oder einen kleinen Anzahl von Paketen zu verhindern.
Es soll angemerkt werden, dass jedes Modul ein Aktiver-Port-Register aufweist.
Als ein Beispiel kann jede COS pro Port vier Register zum Speichern
des oberen Grenzwerts und des unteren Grenzwerts aufweisen; diese
Register können
Daten speichern, die in einer Anzahl von Zellen auf der Ausgangsschlange
ausgedrückt
sind oder in einer Anzahl von Paketen auf der Ausgangsschlange ausgedrückt sind.
In dem Fall einer Unicast-Nachricht wird das Paket nur fallengelassen.
In dem Fall Multicast- oder Mehrempfänger-Nachrichten, wird die
Nachricht im Bezug auf die verstopften Ports fallengelassen, aber zu
den nicht verstopften Ports weitergeleitet. Die MMU 70 beinhaltet
die gesamte Logik, die zum Implementieren dieses Mechanismus zum
Verhindern von HOL-Blockieren
im Bezug auf das Budgetieren von Zellen und Paketen erforderlich
ist. Die MMU 70 beinhaltet ein HOL-Blockierungs-Markierungs-Register,
um den Mechanismus auf der Grundlage der Zellen zu implementieren.
Wenn die Zählung
lokaler Zellen zuzüglich
der Zählung
globaler Zellen für
einen bestimmten Ausgangsport den HOL-Blockierungs-Markierungs-Register-Wert übersteigt,
dann sendet die MMU 70 die HOL-Status-Benachrichtigungs-Nachricht. Die MMU 70 kann
ebenso eine frühe
HOL-Benachrichtigung implementieren, durch die Benutzung eines Bits
in dem MMU-Konfigurations-Register, auf welches als Benutzer-Früh-Warnung-Bit
Bezug genommen wird. Wenn dieses Bit gesetzt ist, sendet die MMU
die HOL-Benachrichtigungs-Nachricht, wenn die Zählung lokaler Zellen zuzüglich der
Zählung
globaler Zellen zuzüglich
Einhunderteinundzwanzig (121) größer als der Wert in dem HOL-Blockierungs-Markierungs-Register
ist. 121 ist die Anzahl von Zellen in einem Jumbo-Frame.
-
In Bezug auf die oben erörterte Hysterese
soll angemerkt werden, dass die MMU 70 sowohl eine räumliche
als auch eine zeitliche Hysterese implementiert. Wenn die Zählung lokaler
Zählung
zuzüglich
der Zählung globaler
Zellen unter den Wert in dem HOL-Blockierungs-Markierungs-Register fällt, dann
wird ein Wilderer-Timer-Wert (Poaching-Timer-Wert) von einem MMU-Konfigurations-Register
verwendet, um ihn in einen Zähler zu
laden. Der Zähler
wird alle 32 Taktzyklen dekrementiert. Wenn der Zähler Null
erreicht, sendet die MMU 70 die HOL-Status-Nachricht mit
dem neuen Port-Bitmap. Das Bit entsprechend dem Ausgangsport wird
zu Null gesetzt, um anzuzeigen, dass es keine HOL-Blockierung auf
dem Ausgangsport gibt. Um die Verhinderung der HOL-Blockierung auf
der Grundlage von Paketen durchzuführen, wird ein Rollen-Markierungs-Wert
in dem MMU-Konfigurations-Register definiert. Wenn die Anzahl von
Transaktions-Schlangen-Einträgen
zuzüglich dem
Rollen-Markierungs-Wert
größer als
die maximale Transaktions-Schlange-Größe pro COS ist, dann sendet
die MMU 70 die COS-Schlangen-Status-Nachricht auf dem S-Kanal.
Wenn einmal der Ausgangsport diese Nachricht empfängt, wird
der Eingangsport stoppen, Pakete für diese bestimmte Port- und
COS-Kombination zu senden. In Abhängigkeit der Konfiguration
und der für
den Ausgangsport empfangenen Paketlänge kann entweder die Head-Of-Line-Blockierung für den oberen
Zell-Grenzwert oder die Head-Of-Line-Blockierung für den oberen
Paket-Grenzwert als erstes erreicht werden. Diese Konfiguration
verhindert daher, dass entweder eine kleine Reihe von sehr großen Paketen
oder eine große
Reihe von sehr kleinen Paketen HOL-Blockierungs-Probleme erzeugen.
-
Der untere Grenzwert, der zuvor im
Bezug auf die CBP-Zulassung-Logik erörtert worden ist, ist zu dem Zweck,
um sicherzustellen, dass unabhängig
von den Verkehrsbedingungen jeder Port einen geeigneten Puffer-Raum
hat, der in dem CBP zugeteilt ist, um das Verstopfen des Ports zu
verhindern, und um sicherzustellen, dass jeder Port in der Lage
ist, mit jedem anderen Port bis zu dem Umfang zu kommunizieren,
in dem das Netzwerk eine solche Kommunikation unterstützen kann.
-
Es wird erneut auf die MMU 70 Bezug
genommen, wobei der CBM 71 so konfiguriert ist, dass er
die Verfügbarkeit
der Adress-Zeiger maximiert, die den eingehenden Paketen von einem
freien Adresspool zugeordnet werden. Der CBM 71 speichert,
wie zuvor erwähnt,
den ersten Zell-Zeiger, bis ein eingehendes Paket 112 empfangen
und entweder in dem CBP 50 oder dem GBP 60 zusammengebaut
wird. Wenn das Säuberungs-Flag
für die
entsprechende P-Kanal-Nachricht gesetzt ist, säubert der CBM 71 das
eingehende Datenpaket und bewirkt daher, dass die Adress-Zeiger
GPBI/CPID, die dem eingehenden Paket zugeordnet sind, wieder verfügbar sind.
Wenn das Säuberungs-Flag
gesetzt ist, spült
oder säubert
der CBM 71 im wesentlichen das Paket von der Verarbeitung des SOC 10,
wobei auf diese Weise eine folgende Kommunikation mit dem zugeordneten
Ausgangsmanager 76 verhindert wird, der dem gesäuberten
Paket zugeordnet ist. Der CBM 71 ist so konfiguriert, dass
er mit den Ausgangsmanagern 76 zum Löschen von gealterten und verstopften
Paketen kommuniziert. Gealterte und verstopfte Pakete werden zu
dem CBM 71 auf der Grundlage der zugeordneten Start-Adress-Zeiger
geleitet und die Zurückforderungs-Einheit
innerhalb des CBM 71 befreit die Zeiger, die den zu löschenden
Paketen zugeordnet sind; dies wird im wesentlichen durch Modifizierung
des freien Adresspools zum Wiederspiegeln dieses Wechsels erreicht.
Der Speicher-Budget-Wert wird aktualisiert, indem der aktuelle Wert
des zugeordneten Speichers mittels der Anzahl von Datenzellen decrementiert
wird, die gesäubert
werden.
-
Um es zusammenzufassen, werden aufgeschlüsselte Pakete
auf dem C-Kanal 81 von dem Eingangs-Submodul 14 angeordnet,
wie es mit Bezug auf die 8 erörtert ist.
Der CBM 71 bildet eine Schnittstelle zu dem CPS-Kanal und
jedes Mal, wenn es eine an den Ausgangsport adressierte Zelle/Paket
gibt, weist der CBM 71 Zell-Zeiger zu und verwaltet die
verbundene Liste. Eine Mehrzahl von Maschinen zum gleichzeitigen
Wiederzusammenfügen
ist vorgesehen, mit einer Maschine zum Wiederzusammenfügen für jeden
Ausgangsmanager 76, und zum Verfolgen des Frame-Status.
Wenn einmal eine Mehrzahl von Zellen, die ein Paket darstellen,
vollständig
in den CBP 50 geschrieben ist, sendet der CBM 71 CPIDs
an die entsprechenden Ausgangsmanager aus, wie es oben erörtert ist.
Die CPIDs zeigen auf die erste Zelle des Pakets in dem CBP; der
Paket-Fluß wird
dann von den Ausgangsmanagern 76 zu Transaktions-MACS 140 gesteuert,
wenn einmal die Zuordnung der CPID/GPID durch den CBM 71 abgeschlossen
ist. Das Budgetregister (nicht dargestellt) des entsprechenden Ausgangsmanagers 76 wird
auf geeignete Weise mittels der Anzahl von Zellen dekrementiert,
die dem Ausgang zugeordnet sind, nachdem das vollständige Paket
in dem CBP 50 geschrieben ist. Der EGM 76 schreibt
die geeigneten PIDs in deren Transaktions-FIFO. Da es mehrere Klassen
von Diensten (COSs) bzw. Dienstklassen gibt, schreibt der Ausgangsmanager 76 die
PIDs in die ausgewählte
Transaktions-FIFO entsprechend dem ausgewählten COS. Wie nachstehend
mit Bezug auf 13 erörtert werden wird,
hat jeder Ausgangsmanager 76 seine eigene Planungs-Schnittstelle
zu dem Transaktions-Pool oder der Transaktions-FIFO auf einer Seite,
und dem Paket-Pool oder der Paket-FIFO auf der anderen Seite. Die
Transaktions-FIFO
beinhaltet alle PIDs und der Paket-Pool oder die Paket-FIFO beinhaltet
nur CPIDs. Die Paket-FIFO bildet eine Schnittstelle zu der Transaktions-FIFO
und initiiert die Sendung auf der Grundlage von Anforderungen von
der Sende-MAC. Wenn das Senden einmal gestartet ist, werden Daten
von dem CBP 50 auf der Grundlage der Transaktions-FIFO-Anforderungen mit
einer Zelle auf einmal gelesen.
-
Wie zuvor erwähnt, gibt es einen Ausgangsmanager
für jeden
Port von jedem EPIC 20 und GPIC 30 und er ist
dem Ausgangs-Submodul 18 zugeordnet. Es soll erwähnt werden,
dass der IPIC 90 den Ausgang in einer unterschiedlichen
Weise zu den EPICs 20 und den GPICs 30 verwaltet,
da der IPIC 90 die Pakete von dem NBP 92 holt.
-
Die 13 zeigt
ein Blockdiagramm eines Ausgangsmanagers 76, der mit dem
R-Kanal 77 kommuniziert. Für jedes Datenpaket 112,
das durch ein Eingangssubmodul 14 eines EPIC 20 des
SOC 10 empfangen worden ist, weist der CBM 71 eine
Zeiger-Identifizierung (PID) zu; wenn das Paket 112 zu
dem CBP 50 zugelassen wird, teilt der CBM 71 eine
CPID zu, und wenn das Paket 112 zu dem GBP 60 zugelassen
wird, teilt der CBM 71 eine GPID-Nummer zu. Zu diesem Zeitpunkt benachrichtigt
der CBM 71 den entsprechenden Ausgangsmanager 76,
der das Paket 112 behandeln wird und leitet die PID an
den entsprechenden Ausgangsmanager 76 durch den R-Kanal 77.
In dem Fall eines Unicast-Pakets
würde nur
ein Ausgangsmanager 76 die PID empfangen. Wenn jedoch das
eingehende Paket ein Multicast- oder Rundsende-Paket war, wird jeder
Ausgangsmanager 76, an den das Paket geleitet wird, die
PID empfangen. Aus diesem Grund muß ein Multicast- oder Rundsende-Paket
nur einmal in dem geeigneten Speicher gespeichert werden, entweder
in dem CBP 50 oder dem GBP 60.
-
Jeder Ausgangsmanager 76 beinhaltet
eine R-Kanal-Schnittstellen-Einheit (RCIF) 131, eine Transaktions-FIFO 132,
einen COS-Manager 133, eine Planungs-Einrichtung 134,
eine beschleunigte Paket-Spül-Einheit
(APF) 135, eine Speicher-Lese-Einheit (MRU) 136,
eine Zeit-Stempel-Überprüfungs-Einheit
(TCU) 137 und eine Entmarkierungs-Einheit 128.
Die MRU 136 kommuniziert mit dem CBP-Speicher-Controller
(CMC) 79, der mit dem CPB 50 verbunden ist. Die
Planungseinrichtung 134 ist mit einer Paket-FIFO 139 verbunden. Die RCIF 131 behandelt
alle Nachrichten zwischen dem CBM 71 und dem Ausgangsmanager 76.
Wenn ein Paket 112 in dem SOC 10 empfangen und
gespeichert wird, leitet der CBM 71 die Paketinformation
an die RCIF 131 des zugeordneten Ausgangsmanagers 76.
Die Paketinformation beinhaltet eine Angabe, ob das Paket in dem
CBP 50 oder dem GBP 70 gespeichert ist, die Größe des Pakets
und die PID. Die RCIF 131 reicht die empfangene Paketinformation
an die Transaktions-FIFO 132 weiter. Die Transaktions-FIFO 132 ist
eine FIFO mit einer festen Tiefe mit acht COS-Prioritäts-Schlangen
und ist als eine Matrix mit einer Anzahl von Zeilen und Spalten
eingerichtet. Jede Spalte der Transaktions-FIFO 132 stellt
eine Klasse von Diensten (COS) dar, und die Gesamtanzahl an Reihen
bzw. Zeilen ist gleich der Anzahl von Transaktionen, die für jede Klasse von
Diensten erlaubt ist. Der COS-Manager 133 arbeitet
zusammen mit der Planungseinrichtung 134, um eine Taktik-basierte
Dienstqualität
(QOS) auf der Grundlage der Ethernet-Standards zur Verfügung zu
stellen. Da Datenpakete in eine oder mehrere der COS-Prioritäts-Schlangen
der Transaktions-FIFO 132 ankommen, leitet die Planungseinrichtung 134 einen
ausgewählten
Paketzeiger von einer der Prioritäts-Schlangen zu der Paket-FIFO 139.
Die Auswahl des Paketzeigers gründet
sich auf einen Schlangen-Planungs-Algorithmus, der von einem Benutzer über die
CPU 52 innerhalb des COS-Managers 133 programmiert
ist. Ein Beispiel einer COS-Aufgabe ist Video, welches eine größere Bandbreite
als Textdokumente benötigt.
Ein Datenpaket 112 von Videoinformation kann daher an die
Paket-FIFO 139 vor einem Paket geleitet werden, das einem
Textdokument zugeordnet ist. Der COS-Manager 133 würde daher
die Planungseinrichtung 134 anweisen, den Paketzeiger auszuwählen, der
dem Paket von Videodaten zugeordnet ist.
-
Der COS-Manager 133 kann
ebenso unter Verwendung eines strikt prioritätsbasierten Planungsverfahrens
programmiert sein, oder eines gewichteten prioritätsbasierten
Planungsverfahrens zum Auswählen des
nächsten
Paketzeigers in der Transaktions-FIFO 132. Unter Verwendung
eines strikt prioritätsbasierten Planungsverfahrens
ist jede der acht COS-Prioritäts-Schlangen
mit einer Priorität
im Bezug auf eine andere COS-Schlange versehen. Jegliche Pakete,
die in der COS-Schlange mit der höchsten Priorität sind,
werden von der Transaktions-FIFO 132 zum Senden extrahiert. Unter
Verwendung andererseits eines gewichteten prioritätsbasierten
Planungsverfahrens ist jede COS-Prioritäts-Schlange mit einer programmierbaren
Bandbreite versehen. Nach dem Zuordnen der Schlangen-Priorität von jeder
COS-Schlange wird jeder COS-Prioritäts-Schlange eine minimale und
eine maximale Bandbreite gegeben. Die Werte für die minimale und maximale
Bandbreite sind benutzerprogrammierbar. Wenn einmal die Schlangen
mit höherer
Priorität
ihren minimalen Bandbreitenwert erreichen, teilt der COS-Manager 133 jede
verbleibende Bandbreite zu, auf der Grundlage jedes beliebigen Auftretens
eines Überschreitens
der maximalen Bandbreite für
jegliche Prioritätsschlange. Diese
Konfiguration garantiert, dass eine maximale Bandbreite von den
Schlangen mit hoher Priorität
erreicht wird, wohingegen die Schlangen mit niedriger Priorität mit einer
geringeren Bandbreite bereitgestellt werden.
-
Die programmierbare Natur des COS-Managers
erlaubt es, dass das Planungsverfahren auf der Grundlage der spezifischen
Bedürfnisse
des Benutzers modifiziert werden kann. Beispielsweise kann der COS-Manager 133 einen
Wert für
die maximale Paketverzögerung
in Betracht ziehen, der von einer Transaktions-FIFO-Schlange erfüllt werden
muß. In
anderen Worten ausgedrückt
kann der COS-Manager 133 erfordern, dass ein Paket beim
Senden nicht mit dem maximalen Paket-Verzögerungs-Wert verzögert wird;
dies stellt sicher, dass der Paketfluß von Hochgeschwindigkeitsdaten
wie beispielsweise Audio, Video und andere Echtzeitdaten kontinuierlich
und gleichmäßig übertragen
wird.
-
Wenn das angeforderte Paket sich
in dem CBP 50 befindet, wird die CPID von der Transaktions-FIFO 132 zur
Paket-FIFO 139 geleitet. Wenn das angeforderte Paket sich
in dem GBP 60 befindet, iniziiert die Planungseinrichtung
das Holen des Pakets von dem GBP 60 zum CBP 50; die Paket-FIFO 139 verwendet
nur gültige
CPID-Informationen und verwendet nicht GBIP-Informationen. Die Paket-FIFO 139 kommuniziert
nur mit dem CBP und nicht mit dem GBP. Wenn der Ausgang ein Paket
holen will, kann das Paket nur von dem CBP geholt werden; wenn das
angeforderte Paket sich in dem GBP 50 befindet, holt die
Planungseinrichtung aus diesem Grund das Paket so, dass der Ausgang
das Paket richtigerweise von dem CBP holen kann.
-
Der APF 135 überwacht
den Status der Paket-FIFO 139. Nachdem die Paket-FIFO 139 für eine bestimmte
Zeitdauer voll ist, räumt
der APF 135 die Paket-FIFO aus. Die CBM-Rückforderungs-Einheit
wird von dem APF 135 mit den Paketzeigern versehen, die
in der Paket-FIFO 139 gespeichert sind, und die Rückforderungs-Einheit
wird von dem APF 135 angeweisen, die Paket-Zeiger als Teil
des freien Adresspools freizugeben. Der APF 135 deaktiviert
auch den Eingangsport 21, der dem Ausgangsmanager 76 zugeordnet
ist.
-
Während
die Paket-FIFO 139 die Paket-Zeiger von der Planungseinrichtung 134 empfängt, extrahiert die
MRU 136 die Paket-Zeiger zum Abschicken an den richtigen
Ausgangsport. Nachdem die MRU 136 den Paket-Zeiger empfängt, leitet
sie die Paket-Zeiger-Information an den TMC 79, der jede
Datenzelle von dem CBP 50 holt. Die MRU 136 leitet
die erste Datenzelle 112a, die die Zell-Header-Information
behinhaltet, an die TCU 137 und die Entmarkierungs-Einheit 138.
Die CCU 137 bestimmt, ob das Paket gealtert ist, indem
es die innerhalb der Datenzelle 112a gespeicherten Zeitstempel
und die aktuelle Zeit vergleicht. Wenn die Speicherzeit größer als
eine programmierbare Ablage-Zeit, dann wird das Paket 112 als
gealtertes Paket abgelegt bzw. aufgegeben. Wenn es zusätzlich eine
anhängige
Anforderung zum Entmarkieren der Datenzelle 112a gibt, wird
die Entmarkierungs-Einheit 138 den Markierungs-Header vor
dem Ablegen des Pakets entfernen. Die Markierungs-Header sind in dem
IEEE-Standard 802.1q definiert.
-
Der Ausgangsmanager 76 bildet
durch die MRU 136 Schnittstellen zur der Übertragungs-FIFO 140, welches
eine Übertragungs-FIFO
für einen
geeigneten Medien-Zugangs-Decoder (MAC) ist; Medien-Zugangs-Decoder
sind in dem Ethernet Stand der Technik bekannt. Die MRU 136 holt
vorab das Datenpaket 112 von dem geeigneten Speicher und
sendet das Paket zu der Übertragungs-FIFO 140,
wobei sie den Beginn und das Ende des Pakets markiert bzw. mit einem
Flag versieht. Wenn nötig
wird die Übertragungs-FIFO 140 das
Paket ausstopfen, sodass das Paket eine Länge von 64 Byte hat. Wie in 9 gezeigt ist, wird das
Paket 112 unterteilt oder segmentiert in eine Mehrzahl
von 64-Byte-Datenzellen zum Behandeln innerhalb des SOC 10.
Die Segmentierung des Pakets in Zellen vereinfacht dessen Behandlung
und verbessert die Granularität, genauso
wie sie es vereinfacht, das SOC 10 an Zell-basierte Protokolle
anzupassen, wie beispielsweise ATM. Bevor die Zellen jedoch aus
dem SOC 10 übertragen
werden, müssen
sie in das Paketformat zur richtigen Kommunikation gemäß dem geeigneten
Kommunikationsprotokoll wieder zusammengefügt werden. Eine Maschine (nicht
dargestellt) zum Zusammenfügen
der Zellen ist in jedem Ausgang des SOC 10 beinhaltet,
um die unterteilten Zellen 112a und 112b in ein
auf geeignete Weise verarbeitetes und weitergeleitetes Paket zur
weiteren Kommunikation zusammen zu fügen.
-
Die 16 ist
ein Blockdiagramm, das einige der Elemente der CPU-Schnittstelle
oder des CMIC 40 zeigt. In einem bevorzugten Ausführungsbeispiel
stellt der CMIC 40 eine 32-Bit-66 MHZ-PCI-Schnittstelle
zur Verfügung,
genauso wie eine 12C-Schnittstelle zwischen dem SOC 10 und
der externen CPU 52. Die PCI-Kommunikation wird von dem
PCI-Kern 41 gesteuert, und die 12C-Kommunikation wird von
dem 12C-Kern 42 durchgeführt, über den CMIC-Bus 167.
Wie in der Figur gezeigt ist, kommunizieren viele Elemente des CMIC 40 untereinander über den
CMIC-Bus 167. Die PCI-Schnittstelle wird üblicherweise
zur Konfiguration und Programmierung von Elementen des SOC 10 verwendet,
wie beispielsweise Regeltabellen, Filtermasken, der Paketbehandlung
usw., sowie zum Bewegen von Daten zu und von der CPU oder anderer PCI-Uplink.
Die PCI-Schnittstelle ist geeignet für High-End-Systeme, in denen
die CPU 52 eine leistungsfähige CPU ist und einen ausreichenden
Protokollstapel abarbeitet, wie es zum Unterstützen von Ebene-2 und Ebene-3-Switching-Funktionen
erfordert wird. Die 12C-Schnittstelle ist für Low-End-Systeme geeignet,
bei denen die CPU 52 in erster Linie zur Initialisierung
verwendet wird. Low-End-Systeme
würden
selten die Konfiguration des SOC 10 wechseln, nachdem der
Switch eingeschaltet ist und läuft.
-
Die CPU 52 wird von dem
SOC 10 wie jeder andere Port behandelt. Daher muß der CMIC 40 die
erforderlichen Port-Funktionen ebenso wie andere oben definierte
Port-Funktionen zur Verfügung
stellen. Der CMIC unterstützt
alle S-Kanal-Befehle und -Nachrichten, wobei er auf diese Weise
es der CPU 52 ermöglicht, auf
den gesamten Paketspeicher und den Registersatz zuzugreifen; dies
ermöglicht
ebenso der CPU 52 Einträge
in die ARL/L3-Tabellen
einzufügen
und zu löschen,
CFAP/SFAP-Befehle zu initialisieren, Speicherbefehle und ACKs zu
Lesen/schreiben, Registerbefehle und ACKs zu lesen/schreiben, usw.
Intern in Bezug auf das SOC 10 bildet der CMIC 40 eine
Schnittstelle zu dem C-Kanal 81, dem P-Kanal 82 und dem S-Kanal 83,
und ist in der Lage, als S-Kanal-Master sowie als S-Kanal-Slave zu arbeiten.
Zu diesem Zweck muß die
CPU 52 32-Bit-D-Worte lesen oder schreiben. Zum Einfügen oder
Löschen
in der ARL-Tabelle unterstützt
der CMIC 40 das Puffern von vier Einfüge/Lösch-Nachrichten, die laufend
abgefragt oder von einem Interrupt getrieben werden. Die ARL-Nachrichten
können
ebenso direkt in den CPU-Speicher über einen DMA-Zugang unter Verwendung
eines ARL-DMA-Controllers 161 angeordnet werden. Der DMA-Controller 161 kann
einen Interrupt bei der CPU 52 nach dem Transfer von einer
beliebigen ARL-Nachricht verursachen, oder wenn alle angeforderten
ARL-Pakete in dem CPU-Speicher
angeordnet worden sind.
-
Die Kommunikation zwischen dem CMIC 40 und
dem C-Kanal 81/P-Kanal-82 wird über die
Verwendung von CP-Kanal-Pufferr 162 zum Puffern der C-
und P-Kanal-Nachrichten und die CP-Bus-Schnittstelle 163 durchgeführt. Die
S-Kanal-ARL-Nachricht-Puffer 164 und die S-Kanal-Bus-Schnittstelle 165 ermöglichen
die Kommunikation mit dem S-Kanal 83. Wie zuvor angemerkt,
werden PIO-(programmierbare Eingangs-/Ausgangs-)-Register verwendet,
wie es durch die SCH PIO-Register 166 und die PIO-Register 168 dargestellt
ist, um auf den S-Kanal
zuzugreifen, sowie um andere Steuer-, Status-, Adress- und Daten-Register
zu programmieren. Die PIO-Register 168 kommunizieren mit
dem CMIC-Bus 167 über
die 12C-Slave-Schnittstelle 42a und
die 12C-Master-Schnittstelle 42b. Der DMA-Controller 161 ermöglicht das
Verketten, im Speicher, wobei er es auf dieser Weise der CPU 52 ermöglicht,
mehrfache Pakete von Daten ohne kontinuierliche CPU-Beteiligung
zu übertragen.
Jeder DMA-Kanal kann daher programmiert sein, um eine Lese- oder Schreib-DMA-Operation
durchzuführen.
Spezifische Beschreiberformate können
als geeignet ausgewählt werden,
um eine gewünschte
DMA-Funktion gemäß den Anwendungsregeln
auszuführen.
Zum Empfangen von Zellen von der MMU 70 zum Transfer an
den Speicher, wirkt der CMIC 40 wenn geeignet als Ausgangsport und
folgt dem Ausgangsprotokoll, wie es zuvor erörtert worden ist. Zum Übertragen
von Zellen zur MMU 70 arbeitet der CMIC 40 als
ein Eingangsport und folgt dem Eingangsprotokoll wie es zuvor erörtert worden
ist. Der CMIC 40 überprüft aktive
Ports, die Verfügbarkeit
einer COS-Schlange und andere Eingangsfunktionen, sowie die Unterstützung des
oben erörterten
HOL-Blockierungs-Mechanismus.
Der CMIC 40 unterstützt
Einzel- und Burst-PIO-Vorgänge;
wobei jedoch ein Burst auf die S-Kanal-Puffer und die ARL-Einfüge/Lösch-Nachrichten-Puffer
begrenzt sein sollten. Unter Bezugnahme wieder auf die 12C-Slave-Schnittstelle 42a ist
der CMIC 40 so konfiguriert, dass er eine 12C-Slave-Adresse
aufweist, sodass ein externer 12C-Master auf Register des CMIC 40 zugreifen
kann. Der CMIC 40 kann umgekehrt als ein 12C-Master wirken
und somit auf andere 12C-Slaves zugreifen. Es soll angemerkt werden,
dass der CMIC 40 ebenso MIIM über die MIIM-Schnittstelle 169 unterstützen kann.
MIIM-Unterstützung ist
durch den IEEE-Standard 802.3u definiert und wird hier nicht weiter
erörtert.
Auf ähnliche
Weise sind andere Betriebsaspekte des CMIC 40 außerhalb
des Bereichs dieser Erörterung.
-
Ein einzigartiger und vorteilhafter
Aspekt des SOC 10 ist die Fähigkeit, gleichzeitige Look-Ups im Bezug auf
Ebene 2 (ARL), Ebene 3 und das Filtern durchzuführen. Wenn ein eingehendes
Paket zu einem Eingangs-Submodul 14 von entweder einem
EPIC 20 oder einem GPIC 30 kommt, wie zuvor erörtert, ist
das Modul in der Lage, gleichzeitig einen Adress-Look-Up durchzuführen, um
zu bestimmen, ob die Ziel-Adresse innerhalb des gleichen VLAN wie
die Quell-Adresse ist; wenn die VLAN-IDs die gleichen sind, sollte
ein Ebene-2- oder ARL-Look-Up ausreichend sein, um das Paket richtig
in einer Speicher- und Weiterleitungskonfiguration zu vermitteln.
Wenn die VLAN-IDs verschieden sind, dann muß eine Ebene-3-Vermittlung
auf der Grundlage einer geeigneten Identifikation der Ziel-Adresse
geschehen und das Vermitteln an einen geeigneten Port, um zu dem
VLAN der Ziel-Adresse zu gelangen. Die Ebene-3-Vermittlung muß daher
durchgeführt
werden, um VLAN-Grenzen zu überschreiten.
Sobald einmal das SOC 10 bestimmt, dass L3-Vermittlung
erforderlich ist, identifiziert das SOC 10 die MAC-Adresse
eines Ziel-Routers, auf der Grundlage des L3-Look-Up. Der L3-Look-Up
wird bestimmt auf der Grundlage eines Lesevorgangs in dem beginnenden
Abschnitt des Pakets, abhängig
davon, ob das L3-Bit gesetzt ist oder nicht. Wenn das L3-Bit gesetzt
ist, dann ist ein L3-Look-Up erforderlich, um die geeigneten Routing-Anweisungen
zu identifizieren. Wenn der Look-Up nicht erfolgreich ist, wird
eine Anforderung an die CPU 52 gesendet, und die CPU 52 nimmt
die geeigneten Schritte vor, um das geeignete Routing für das Paket
zu identifizieren. Wenn einmal die CPU die geeigneten Routing-Informationen erhalten
hat, wird die Information in der L3-Look-Up-Tabelle gespeichert und für das nächste Paket
wird der Look-Up erfolgeich sein und das Paket wird in der Speicher-
und Weiterleitungs-Konfiguration vermittelt.
-
Verbindungsfähigkeit
-
Der IPIC 90 des SOC 10 schafft
eine beträchtliche
Funktionalität
in Bezug auf die Verbindbarkeit. Insbesondere ermöglicht der
IPIC 90 ein beträchtliches
Ausmaß an
Flexibilität
und Leistung in Bezug auf das Stapeln einer Mehrzahl von SOC 10 Chips.
Unter Verwendung der zuvor erörterten
Hochleistungsschnittstelle können
zwei SOC 10 Chips oder Switch-Module über deren jeweilige IPIC 90-Module
verbunden werden. Solch eine Konfiguration würde es den SOC-Switch-Modulen
ermöglichen,
deren CMIC 40-Module mit einer gemeinsamen CPU 52 zu verbinden.
In so einer Konfiguration, in der jedes SOC 10 drei EPIC
20-Module umfasst, von denen jedes acht Fast-Ethernet-Ports und
zwei GPIC-Module, jedes mit: einem Gigabit-Ethernet-Port, umfasst,
würde die
entstehende Konfiguration 48 Fast-Ethernet-Ports (24 Ports
pro SOC 10) und vier Gigabit-Ethernet-Ports haben. Die 26 zeigt eine solche Konfiguration,
in der die CPU 52 gemeinsam mit dem CMIC 40(1) und dem
CMIC 40(2) des SOC 10(1) bzw. dem SOC 10(2) verbunden
ist. Der IPIC 90(1) und der IPIC 90(2) sind über die
Hochleistungsschnittstelle 261 verbunden. Die Fast-Ethernet-
und Gigabit-Ports sind gemeinschaftlich als Ports 24(1) bzw. 24(2) dargestellt.
-
Andere Stapelkonfigurationen beinhalten
eine sogenannte Ring-Konfiguration, bei der eine Mehrzahl von SOC
10-Chips über
eine ICM-(Verbindungsmodul)-Schnittstelle mit einem Ring verbunden
sind. Eine weitere dritte Stapel-Verbindung besteht darin, dass
eine Mehrzahl von SOC 10-Chips oder Switchess über eine ICM mit einem Querverbindungs-Switch auf so eine
Weise verbunden ist, dass der Querverbindungs-Switch mit der Mehrzahl von
SOC 10-Switchess verbunden ist. Diese zusätzlichen zwei Stapel-Konfigurationen
sind in der 27A bzw. 27B dargestellt. Die 27A zeigt das SOC 10(1),
das mit dem Ring R über
das ICM 271(1) verbunden ist, sowie das SOC 10(2),
das mit dem Ring R über
das ICM 271(2) verbunden ist. Diese Konfiguration ermöglicht es
einer Mehrzahl von SOC 10-Switchess,
gestapelt zu werden. In einem Ausführungsbeispiel können bis
zu 32 SOC 10-Switchess
an den Ring R angebracht werden. Die 27B zeigt
eine Querverbindungs-Konfiguration,
in der die SOC 10(1) und SOC 10(2) über das
ICM 271(1) bzw. 271(2) mit der Querverbindung
C verbunden sind. Diese Konfiguration ermöglicht es ähnlich zu der von 27A, dass eine beträchtliche
Anzahl von SOC-Switchess gestapelt werden kann. Die Querverbindung
C ist eine bekannte Einrichtung, die als Matrix oder Netz arbeitet,
die in der Lage ist, eine Mehrzahl von Ports über die Aktivierung einer geeigneten
Matrix-Verbindung zu verbinden.
-
Wie in den 1 und 2 dargestellt
ist, bildet der IPIC 90 von jedem SOC 10 eine
Schnittstelle auf der einen Seite zu dem CPS-Kanal 80 und
auf der anderen Seite zu der Hochleistungs-Verbindung 261.
Pakete, die in den IPIC 90 kommen und für andere Ports auf dem SOC 10 bestimmt
sind, werden im wesentlichen als Pakete behandelt, die zu jedem
beliebigen anderen Port auf dem SOC 10 kommen. Aufgrund
der Anwesenheit jedoch des Modul-Headers für gestapelte Kommunikationen
jedoch, beinhaltet der IPIC 90 einen flachen Speicher,
um die eingehenden Pakete zu speichern. Der Modul-Header wird beim
Eingang zerlegt; der Modul-Header wird wie zuvor erwähnt an das
Paket von dem Quell-Modul angehängt.
Der IPIC 90 führt
dann die Adressauflösung
durch. Die Adressauflösung
ist verschieden für
Pakete, die in den IPIC 90 kommen, als für Pakete, die
in die EPICs 20 oder GPICs 30 kommen, und wird
nachstehend erörtert.
Nach der Adressauflösung
werden die Ziel- oder Ausgangsports bestimmt und das Port-Bitmap
konstruiert. Das Paket wird dann in Zellen unterteilt und die Zellen
werden zu der MMU 70 über
den CPS-Kanal 80 gesendet. Die Zellendaten werden über den
C-Kanal 81 gesendet und die geeigneten Nachrichten, einschließlich des
Modul-Headers, werden über den
P-Kanal 82 gesendet.
-
Für
den Fall, in dem Zellen in andere Ports des SOC 10 kommen
und an die Hochleistungsschnittstelle 261 gerichtet sind,
werden die Zellen auf den CPS-Kanal 80 von dem geeigneten
Eingangsport gesetzt, auf den sie von dem IPIC 90 empfangen
werden. Die Zellen werden zurück
in Pakete in dem NBP 92 geschachtelt und werden daher nicht
von der MMU 70 behandelt. Der NBP ist wie zuvor bemerkt
ein On-Chip-Speicher, der für
die Benutzung nur durch den IPIC 90 bestimmt ist. Der NBP
kann getrennt abgetrennter Speicher oder ein reservierter Speicherbereich
innerhalb des CBP 50 sein. Die Modul-Header-Information, die an das Paket
von der Quelle angehängt
wird, wird von dem IPIC 90 von dem P-Kanal empfangen. Der
Modul-Header beinhaltet das Modul-ID-Bitmap, COS, Gespiegelt-Zu-Port-Switch-Information,
Trunk-Gruppen-ID, usw. Das konstruierte Paket wird dann an die Hochleistungsschnittstelle 261 gesendet.
Es soll angemerkt werden, dass üblicherweise
zwei Vorrichtungen einen Zugriff auf die Schnittstelle 261 wünschen.
Beispielsweise zeigt die 26 eine Konfiguration,
in der der IPIC 90(1) und IPIC 90(2) den Zugang
zu der Schnittstelle 261 aushandeln müssen. In diesen Konfigurationen
der 27A und 27B muß der geeignete IPIC 90 über den
Zugriff auf die Schnittstelle 261 mit dem geeigneten ICM 271 entscheiden.
Der Entscheider ist beispielsweise in 28 als Entscheider 93 dargestellt.
-
Die 28 ist
ein Überblick über die
Funktionselemente eines IPIC 90. Zusätzlich zu den Tabellen 91, dem
NBP 92 und dem Entscheider 93, beinhaltet der
IPIC 90 eine Fluß-Steuer-Logik 94,
die mit dem ICM 271 verbunden ist, um es dem IPIC 90 zu
ermöglichen,
bei von dem ICM eingehendem Verkehr den Betrieb aufrecht zu erhalten.
Unter Verwendung eines Pause-/Wiederaufnahme-Signals, tauschen das
ICM und die Fluß-Steuer-Logik 94 Pause-/Wieder-Aufnahme-Signale
aus, um auf geeignete Weise den Fluß zu steuern. In Situationen,
in denen der ICM-Speicher voll ist, wendet der ICM das Pause-/Wieder-Aufnahme-Signal als
Pause an, um dem IPIC 90 mitzuteilen, keine weiteren Pakete
an den ICM 271 zu senden. In den Fällen, in denen der IPIC 90 Pakete
von dem ICM 271 empfängt,
dann wird, wenn der IPIC nicht länger
Pakete empfangen kann, weil beispielsweise der CBP 50 und
der GBP 60 voll sind, der IPIC das Pause-/Wiederaufnahme-Signal als
ein Pause-Signal
für den
ICM anwenden. Sobald es angezeigt ist, den Fluß in eine der Richtungen wieder aufzunehmen,
wird das Signal zurückgenommen,
um den Verkehrs-Fluß wiederaufzunehmen.
Es soll angemerkt werden, dass wenn der ICM voll ist und weiterhin
Pakete von dem CPS-Kanal 80 bei dem IPIC 90 ankommen,
der zuvor erörterte
HOL-Blockierungs-Verhinderungs-Mechanismus
aktiviert wird.
-
Unter Bezugnahme wieder auf die Funktion
des Entscheiders 93, steuert der Entscheider 93 die
Bandbreite auf der Hochleistungsschnittstelle 261. Unter
Verwendung eines Konfigurationsregisters kann die Priorität zur Behandlung
der Pakete von dem IPIC 90 zu dem ICM 271 geschaltet
werden und umgekehrt, nach vorbestimmten Zeitdauern. In Situationen,
in denen es keine ICM gibt und in denen der IPIC 90(1) mit
dem IPIC 90(2) kommuniziert, würde eine Master-CPU, die die
Funktionen in einer gestapelten Konfiguration steuert, den Entscheider 93 und
die Fluß-Steuer-Logik 94 steuern.
Die Master-CPU würde
eine der CPU 52 der Mehrzahl von CPUs 52 sein,
die einer Mehrzahl von SOC-Switchess 10 zugeordnet sind.
-
Es soll ebenso angemerkt werden,
dass der NBP-Manager 95 das Speichermanagment für den NBP 92 steuert.
Der NBP-Manager 95 führt
daher viele Funktionen aus, die spezifisch für den IPIC 90 sind,
aber die ähnlich
zu der Funktion der MMU 70 in Bezug auf das SOC 10 sind.
Es gibt jedoch bemerkenswerte Unterschiede dahingehend, dass es
keine CBP/GBP-Zulassungs-Logik
gibt, da der NBP 92 als ein Speicher-Puffer-Pool behandelt
wird.
-
Pakete, die bei dem IPIC 90 von
der Hochleistungsschnittstelle 261 ankommen, werden darauf
immer einen Modul-Header aufweisen. Der Modul-Header wird von dem
Quell-SOC eingefügt,
wenn das Paket gesendet wird, auf welchen als Source-Switch Bezug
genommen wird. Die Felder des Modul-Headers sind wie folgt:
C
Bit – 1
Bit lang – Steuerbit – Das Steuerbit
identifiziert, ob dies ein Steuerframe oder ein Datenframe ist.
Dieses Bit ist zu 1 für
einen Steuerframe und zu 0 für
einen Datenframe gesetzt.
Betriebscodes – 3 Bit lang – Betriebscodes
werden verwendet, um den Pakettyp zu identifizieren. Wert 00 – identifiziert,
dass das Paket ein Unicast-Paket ist und der Ausgangsport einzig
durch das Modul-Id-Bitmap (nur ein Bit wird in diesem Feld gesetzt
sein) und die Ausgangsportnummer identifiziert ist. Wert 01 – identifiziert, dass
das Paket eine Rundsendung ist oder ein Ziel-Look-Up-Fehler (DLF)
und an mehrere Ports auf dem gleichen Modul oder mehrere Ports auf
verschiedenen Modulen gerichtet ist. Der Ausgansport ist nicht ein
gültiges Feld
in diesem Fall. Wert 02 – identifiziert,
dass das Paket ein Multicast-Paket ist und an mehrere Ports adressiert
ist. Wert 03 – identifiziert,
dass das Paket ein IP-Multicast-Paket ist und an mehrere Ports adressiert
ist.
TGID – 3
Bit lang – TGID-Bits – TGID identifiziert
den Trunk-Gruppen-Identifizierer des Quell-Ports. Dieses Feld ist
nur gültig,
wenn das T-Bit gesetzt ist.
T-Bit – 1 Bit lang – T-Bit – Wenn dieses
Bit gesetzt ist, dann ist TGID ein gültiges Feld.
MT-Modul-Id-Bitmap – 5 Bit
lang – MT-Modul-Id
ist die „gespiegelt
zu"-Modul-Id. Dieses
Feld wird verwendet, um ein Paket zu einem „gespiegelt zu"-Port zu senden,
der sich auf einem entfernten Modul befindet. Dieses Feld ist nur
gültig,
wenn das M-Bit gesetzt ist.
M Bit – 1 Bit lang – M-Bit – Wenn dieses
Bit gesetzt ist, dann ist MT-Modul-Id ein gültiges Feld.
Datenlänge – 14 Bit
lang – Datenlänge – Identifziert
die Datenlänge
des Pakets. CoS – 3
Bit lang – CoS-Bits – Identifizieren
die CoS-Priorität
dieses Frames.
CRM – 1
Bit lang – CoS-Re-Map-Bit – Dieses
Bit wird verwendet, um den CoS erneut zuzuordnen auf der Grundlage
der Quell-Modul-Id + Quell-Port-Nummer. Dieses Merkmal ist für Module
nützlich,
die keine Fähigkeit
zur CoS-Zuordnung haben.
Modul-Id-Bitmap – 32 Bit lang – Modul-Id-Bitmap – Bitmap
von allen Modulen, die anzunehmenderweise das Paket empfangen.
Neue
IP-Prüfsumme – 16 Bit
lang – Neue
IP-Prüfsumme – Dies wird
hauptsächlich
für den
IP-Multicast-Switchesd-Verkehr verwendet.
PFM – 2 Bit
lang – Port-Filter-Mode-Bits;
dies ist der Port-Filter-Modus für
den Quellport.
Quellport – 6
Bit lang – Quellport
ist die Quellport-Nummer des Pakets.
CRC-Bits – 2 Bit
lang – CRC-Bits – Dies sind
die gleichen CRC-Bits von der P-Kanal-Nachricht, die hier kopiert werden.
Wert 0x01 ist das Anhängen-CRC-Bit.
Wenn es gesetzt ist, dann soll der Ausgangsport die CRC an das Paket
anhängen.
Wert 0x02 – Ist
das Regeneriere-CRC-Bit. Wenn dieses Bit gesetzt ist, dann soll
der Ausgangsport den CRC regenerieren. Wert 0x00 – kein Wechsel
beim CRC. Wert 0x03 – nicht
verwendet.
Quell-Mod-Id – 5
Bit lang – Quell-Mod-Id – Ist die
Quellmodul-Id des Pakets.
Daten – N Bit lang – Datenbytes – Die Datenbytes
können
den CRC enthalten. Es müssen
die CRC-Bits untersucht werden, um herauszufinden, ob die Daten
den CRC enthalten. Wenn die CRC-Bits zum Anhängen des CRC gesetzt sind,
dann enthalten die Daten nicht CRC-Bytes. Wenn die CRC-Bits zum
Regenerieren des CRC gesetzt sind, dann enthalten die Daten CRC-Bytes,
aber es ist keine gültige
CRC. Wenn der CRC-Wert 00 ist, dann enthalten die Daten CRC und
es ist ein gültiger
CRC.
CRC von (Modul-Header + Daten) – 4 Bit lang – CRC-Wert
einschließlich
der Daten und des Modul-Headers.
-
Damit der IPIC die Adressauflösung geeignet
durchführen
kann, müssen
zahlreiche Tabellen in die Tabellen 91 eingefügt werden.
Diese Tabellen beinhalten eine 802.1q-VLAN-Tabelle, eine Multicast-Tabelle,
eine IP-Multicast-Tabelle, eine Trunk-Gruppen-Bitmap-Tabelle, eine
Priorität-Auf-COS-Schlangen-Zuordnungs-Tabelle
und eine Port-Zu-COS-Zuordnungs-Tabefle.
Die ARL-Logik für
den IPIC 90 unterscheidet sich von der zuvor erörterten
EPIC/GPIC-Adress-Auflösungs-Logik
aus zahlreichen Gründen.
Zuerst beginnt das Paket nach den 16 Bytes des Modul-Headers; der
Modul-Header enthält
Informationen im Bezug darauf, ob das Paket ein Steuerframe oder
ein Datenframe ist. Steuerframes werden immer an die CPU gesendet,
nachdem der Modul-Header zerlegt worden ist. Der Modul-Header enthält die Trunk-Gruppen-Identifizierungs-Information, die
Gespiegelt-Zu-Port-Information, die Ausgangsportinformation, usw.
Jedes Mal, wenn das C-Bit in dem Modul-Header gesetzt ist, wird
das Paket zu der CPU gesendet. Das C-Bit und die TGID-Bits sind
in dem Modul-Header
vorgesehen, um das Trunkieren quer über die Module zu unterstützen. Das
Spiegeln wird von dem MP-Modul-ID-Bitmap und dem M-Bit gesteuert.
Das CRM- oder COS-Wiederzuordnungs-Bit
ermöglicht
die erneute Zuordnung des COS auf der Grundlage der Quell-Modul-ID
und der Quell-Port-Nummer. Dieses erneute Zuordnen kann in Situationen
erforderlich werden, in denen Switchess von verschiedenen Verkäufern geliefert werden.
-
Unter Bezugnahme auf die 29, ist die Adressauflösung für ein Paket,
das von einer Hochleistungsschnittstelle 271 in den IPIC 90 kommt,
wie folgt:
Das Paket, das von der Schnittstelle 261 zu
dem IPIC 90 kommt, wird in einem flachen Puffer 96 gespeichert, in
dem die IPIC-ARL-Logik 97 bei Schritt 29-1 bestimmt,
ob der GBP 60 voll ist. Wenn dies so ist, dann wird das
Paket bei Schritt 29-2 fallengelassen. Wenn dies nicht
so ist, bestimmt die Logik 97 bei Schritt 29-3,
ob das M-Bit in dem Modul-Header gesetzt ist und überprüft ebenso,
ob die Modul-ID für
das „gespiegelt
zu"-Modul gleich
der vorliegenden Modul-ID ist. Wenn dies so ist, wird der gespiegelte
Port von dem Port-Spiegel-Register
für das
SOC 10 erhalten und ein Bit wird in dem Port-Bitmap gesetzt,
das dem gespiegelten Port entspricht und das Paket wird bei Schritt 29-4 an
den gespiegelten Port gesendet. Wenn im Bezug auf das M-Feld die
Antwort nein ist, prüft
die ARL-Logik 97 nach dem Senden des Pakets an den gespiegelten
Port bei Schritt 29-5, ob das C-Bit gesetzt ist. Wenn dies
so ist, wird das Paket bei Schritt 29-6 zur CPU gesendet.
Das CPU-Bit in dem Port-Bitmap wird ebenso gesetzt, um sicherzustellen,
dass das Paket zu der CPU gesendet wird. Wenn das C-Bit nicht gesetzt
ist oder nachdem das Paket auf geeignete Weise zu der CPU gesendet
worden ist, bestimmt die ARL-Logik 97 bei Schritt 29-7,
ob das Paket ein Unicast-Paket ist oder nicht. Wenn dies so ist,
wird das Paket auf geeignete Weise auf den CPS-Kanal 80 gesetzt,
wobei das Bit, das dem Ausgangsport entspricht, auf geeignete Weise
in dem Port-Bitmap gesetzt wird. Wenn das T-Bit gesetzt ist, dann
wird das letztendliche Bitmap auf der Grundlage des Trunk-Gruppen-Bitmaps
und der TGID gesetzt. Wenn das CRM-Bit gesetzt ist, dann wird die
Port-Zu-COS-Zuordnungs-Tabelle durchsucht, um die geeignete COS-Schlange
zu bekommen. Im anderen Fall wird die COS von dem Modul-Header aufgenommen.
Dieser Sendeschritt geschieht bei Schritt 29-8. Wenn bestimmt
wird, dass das Paket kein Unicast-Paket ist, bestimmt dann die IPIC-ARL-Logik 97 bei
Schritt 29-9, ob das Paket ein Multicast-Paket ist. Diese
Unterscheidung wird wie zuvor erwähnt, durch Untersuchen der
Zieladresse gemacht, um zu sehen, ob es eine Klasse-D-Adresse ist. Die
Klasse-D-Klassifikation ist eine, in der die ersten drei MSBs der
Multicast-IP-Adresse
zu 1 gesetzt sind. Wenn bestimmt wird, dass es in der Tat ein IP-Multicast-Paket
ist, dann werden zwei getrennte und gleichzeitige Verfahren durchgeführt. In
Schritt 29-10 wird eine Suche in der IP-Multicast-Tabelle
mit der Quell-IP-Adresse und der Ziel-IP-Adresse als Suchschlüssel durchgeführt. Wenn
es einen Treffer oder eine Übereinstimmung
gibt, dann wird die TTL in dem IP-Header mit dem TTL-Grenzwert bei
Schritt 29-11 verglichen. Wenn die TTL unter dem Grenzwert
liegt, wird das Paket zu der CPU gesendet. Wenn die TTL nicht unterhalb
des TTL-Grenzwerts ist, dann wird das L3-Port-Bitmap erhalten und
es wird bestimmt, ob das L3-Port-Bitmap ein Mitglied des Aktiver-Port-Registers
entsprechend der COS für
das Paket ist. Die neue IP-Prüfsumme
von dem Modul-Header wird auf dem P-Kanal gesendet und das Paket wird auf
dem C-Kanal gesendet. Dieses Verfahren ist als L3-Switching-Schritt 29-13 dargestellt.
Wenn die Suche von Schritt 29-10 nicht zu einem Treffer
führt,
dann wird das Paket bei Schritt 29-12 zu der CPU gesendet
und Bit 8 der CPU-Betriebscodes
wird gesetzt.
-
Das zweite Verfahren, das nach der
Bestimmung, ob das Paket ein Multicast-Paket ist oder nicht, durchgeführt wird,
beinhaltet eine Ebene-2-Vermittlung. Das SOC 10 ermöglicht daher
eine hybride Multicast-Behandlung. D. h., dass daher das gleiche
Paket auf Ebene 2 und Ebene 3 vermittelt bzw. geSwitchesd werden
kann. Bei Schritt 29-14 wird nach Schritt 29-9 bestimmt,
dass das Paket ein Multicast-Paket ist und untersucht daher die
ARL-Logik 97 die PFM-(Port-Filter-Modus)-Bits des Modul-Headers.
Wenn der PFM zu 0 gesetzt ist, dann wird das Paket an alle Ports
weitergeleitet. Das Port-Bitmap wird von der Port-VLAN-Tabelle erhalten,
der geeignete Ausschluß des
IPIC-Ports wird gemacht, der Trunk-Port wird auf geeignete Weise
identifiziert, die COS wird aufgenommen und das Paket wird bei Schritt 29-15 auf
geeignete Weise weitergleitet. Wenn der PFM nicht zu 0 gesetzt ist,
dann wird die Mulitcast-Tabelle bei Schritt 29-16 unter
Verwendung des Zielschlüssels
durchsucht, der aus der Ziel-Adresse und der VLAN-ID gebildet wird.
Wenn es keine Übereinstimmung
gibt, dann untersucht die Logik 97 noch einmal den PFM
bei Schritt 29-17 für
den Eingangsport. Wenn der PFM zu 2 gesetzt ist, wird das Paket
fallengelassen. Wenn der PFM nicht zu 2 gesetzt ist, wird bei Schritt 29-19 das
Port-Bitmap von der VLAN-Tabelle erhalten und das Paket wird bei
Schritt 29-20 weitergeleitet. Wenn die Zielsuche des Schritts 29-16 ein
Treffer ist, wird das Port-Bitmap von der Multicast-Tabelle bei Schritt 29-18 erhalten
und das Paket bei Schritt 29-20 weitergeleitet. Bei Schritt 29-20 werden
die geeigneten Port-Register auf der Grundlage des T-Bit, des COS,
des Spiegelns usw. gesetzt und das Paket wird zu den geeigneten
Zielen weitergeleitet. Diese Konfiguration ermöglicht wie zuvor erwähnt eine
einzigartige hybride Multicast-Behandlung, sodass ein Multicast-Paket
auf geeignete Weise bei Ebene 2 und/oder Ebene 3 vermittelt werden
kann.
-
Unter Bezugnahme noch einmal auf 28 wird der Zugang zu dem
NBP 92 durch den NBP-Manager 95 gesteuert. Pakete,
die in den IPIC 90 auf der Hochleistungsschnittstelle 261 kommen,
werden wieder als erstes in dem flachen Puffer 96 gespeichert,
der beispielsweise 3 Zellen tief sein kann. Der Modul-Header, der 16
Byte lang ist, und eine vorbestimmte Anzahl von zu Paketen verarbeiteten
Zellen (wie beispielsweise 14 Byte) kommen herein und die oben erörterte Adressauflösung wird
von der ARL-Logik 97 durchgeführt. Die VLAN-Tabelle, die
Multicast-Tabelle und die IP-Multicast-Tabelle, die die Tabellen 91 bilden,
werden für
verschiedene Look-Ups verwendet. Es werden keine ARL-Tabellen zur Verfügung gestellt,
da der Modul-Header über
die Entfernter-Port-Nummer Informationen in Bezug auf Unicast, Multicast,
usw. zur Verfügung
stellt. Die Entfernter-Port-Nummer
ist die Modul-ID zuzüglich
der Ziel-Port-Nummer. Da die Ziel-Port-Nummer verfügbar ist,
ist eine ARL-Tabelle, wie sie in dem EPICs 20 und dem GPICs 30 verwendet
wird, unnötig.
Die PFM-Bits des Modul-Headers werden gemäß dem 802.1p-Standard definiert
und ermöglichen
die Adressauflösung
für Multicast,
wie es oben erörtert
ist. Daher werden Pakete die an der Schnittstelle 261 eingehen,
in dem flachen Puffer zur Adressauflösung angeordnet. Nach der Adressauflösung wird
das Paket auf den CPS-Kanal 80 gesetzt, wo es zu der MMU 70 zur
geeigneten Speicherentscheidung und zur Speicherung gesendet wird,
bevor es von dem geeigneten Ausgang aufgenommen wird. Pakete, die
an den IPIC 90 gerichtet sind und von den EPICs 20 und
dem GPICs 30 kommen, werden direkt auf den CPS-Kanal 80 in
den NBP 92 gesendet. Durch die Verwendung des NBP-Managers 95,
sendet der IPIC 90 geeignete S-Kanal-Nachrichten in Bezug
auf den Betrieb des NBP 92 und des IPIC 90 im
allgemeinen. Solche S-Kanal-Nachrichten
können
enthalten NBP-Voll, GBP-Voll, HOL-Benachrichtigung, COS-Benachrichtigung,
usw. Der NBP-Manager 95 verwaltet daher den FAP (Freie-Adresszeiger-Pool) für den NBP,
behandelt den Zellentransfer für
den NBP, weist Zellenzeiger für die
eingehenden Zellen zu, fügt
die Zellen zu Paketen zusammen, schreibt die Paketzeiger in die
Paket-FIFO 98 und überwacht
die Aktivitäten
der Planungseinrichtung 99. Die Planungseinrichtung 99 arbeitet
zusammen mit dem NBP 92 der Paket-FIFO 98 und
dem Entscheider 93, um das nächste Paket zur Übertragung
auf der Hochleistungsschnittstelle 261 zu planen. Die Planungseinrichtung 99 bewertet
die COS-Schlangen in der Paket-FIFO 98 und wenn Pakete
in der Paket-FIFO existieren, dann wird das Paket für die Übertragung
auf der Hochleistungs-Schnittstelle 261 aufgenommen. Die Übertragung
wird von dem Status des Zuteilungssignals in Bezug auf den ICM gesteuert,
wie es von dem Entscheider 93 gesteuert wird. Wie es in 28 gezeigt ist, muß die Planungseinrichtung 99 auf
geeignete Weise acht COS-Schlangen in der Paket-FIFO 98 behandeln. Geeignetes
COS-Management bestimmt,
welches das nächste
Paket sein wird, das von der Prioritäts-Schlange aufgenommen wird. Die COS-Verwaltung
wird durch einen COS-Manager (nicht dargestellt) durchgeführt, der
ein Teil der Planungseinrichtung 99 ist. Die Planungseinrichtung 99 kann
daher so programmiert sein, dass sie verschiedene Typen von Schlangen-Planungs-Algorithmen
ermöglicht,
soweit erforderlich. Zwei Beispiele von Planungs-Algorithmen, die
verwendet werden können,
sind erstens streng prioritätsbasiertes
Planen und zweitens gewichtetes prioritätsbasiertes Planen. Beide dieser
Algorithmen und zugeordnete Register können auf geeignete Weise programmiert
werden.
-
Wenn die Planungseinrichtung 99 ein
Paket zum Senden aufnimmt, wird der Paketzeiger von der Paket-FIFO 98 erhalten
und auf die erste Zelle des Pakets zeigt der Paketzeiger.
-
Der Zellen-Header enthält all die
erforderlichen Informationen und der Modul-Header ist ein gültiges Feld
darin. Die zu übertragenden
Daten sind von dem 16 Byte an verfügbar und das Modul-Header-Feld
wird nicht als gültiges
Feld betrachtet. Die geeignete Verkettung der Zellen wird sichergestellt,
um sicherzustellen, dass vollständige
Pakete wieder zusammengefügt
werden und auf der Hochleistungsschnittstelle 261 gesendet
werden.
-
Störimpulsfreies
Vermitteln
-
Die HiGig-Schnittstelle 261,
die in 28 gezeigt ist
und oben erörtert
worden ist, ist ein Hochgeschwindigkeitsdatenverbindungsbus zur
Verwendung beim Aufbauen von Desktop-Switchess für mittlere bis große Unternehmen,
die entweder modular (auf der Grundlage eines Chassis) oder stapelbar
sind. Sie ist zur Verwendung von Hochgeschwindigkeits-Serialisierungs/Deserialisierungs-(SerDes)-Chips
bzw. Hochgeschwindigkeits-Seriell-Parallel-Wandler/Parallel-Seriell-Wandler
zu verwenden. Die Datenschnittstelle ist eine 32 Bit Vollduplexverbindung.
Der SerDes-Chip serialisiert die parallelen 32-Bit-Daten in einen
nibble-breiten seriellen Strom, der bis zu 10 Gb/s beträgt. Dieser
serielle Strom wird 8B/10Bcodiert, sodass die 32 Bit breite parallele
Schnittstelle Daten bis zu 312.5MB/s übertragen muß.
-
Um die Frequenzen zu begrenzen, die
auf dem PC-Board bei einer maximalen Übertragungsrate von 312.5MB/s
vorhanden sind, wird ein Double-Data-Rate-Type für den Transfer verwendet. Dies
bedeutet einfach, dass die Daten auf beiden Flanken des Taktsignals
TXCLK übertragen
werden. Die Zeiterfordernisse für die
Einrichtung und das Halten werden dann in Bezug auf beide Flanken
von TXCLK spezifiziert. Der TXCLK ist in 49 dargestellt. TXCLK wird von der HiGig-Logik
von dem SerDes-Chip geliefert. TXCLK besitzt eine Frenquenz von
156.25MHz.
-
Da ein Takt mit der doppelten TXCLK-Frequenz
nicht verfügbar
ist, muß der
312.5MHz-Takt entweder mit einer PLL oder einer anderen Takterzeugungsschaltung
erzeugt werden oder die Daten müssen
direkt von TXCLK an beiden Flanken getaktet werden. PLL- und/oder
Takterzeugungslösungen
führen
zahlreiche Risiken und Komplexitäten
zu der Konstruktion hinzu, sodass die Erfindung ein Verfahren zum
Erzeugen des erforderlichen DDR-Schaltens in einer störimpulsfreien
bzw. glitchfreien Weise ohne Benutzung einer PLL oder anderen komplexen
Takterzeugungsschaltungen schafft.
-
Wenn ein paralleler Bus von einem
Datenwert zu einem anderen schaltet, gibt es die Möglichkeit,
dass die Ausgänge
einen Störimpuls
bzw. Glitch erzeugen, wenn nicht die Ausgänge direkt von den Registern
kommen. Wenn ein Ausgang nicht direkt von einem Register kommt,
dann kann er im allgemeinen durch einen Multiplexer kommen. Multiplexer
können
Störimpulse
erzeugen, wenn sie schalten. Wenn diese Störimpulse durch einen Ausgangstreiber
weitergeführt
werden, kann von dem Betreiber beträchtliches EMI (elektromagnetische
Interferenz)-Rauschen ausgestrahlt werden. Da die Breite der erzeugten
Störimpulse
extrem gering sein kann, ist das Frequenzspektrum dieser Störimpulse
sehr breit. Daher kann ein sehr breitbandiges EMI-Rauschen erzeugt
werden.
-
Da der HiGig-Datenbus auf beiden
Flanken von TXCLK (in einem Verfahren der doppelten Datenrate) betrieben
werden muß,
müssen
die Ausgangsdaten durch eine Multiplexer-Schaltung geleitet werden, bevor sie
zu den letztendlichen Ausgangstreibern geleitet werden. Es gibt
keinen Weg, dass die Daten direkt von den Registern kommen. Somit
muß man
sich der Möglichkeit
der Störimpulse
zuwenden.
-
Um das inherente Störimpulsproblem
besser zu verstehen, das bei Multiplexern auftritt, werden Verfahren
für die
Logik in Multiplexer-Schaltungen im allgemeinen betrachtet. Für einen
gegebenen Multiplexer mit Dateneingängen a und b muß der Multiplexer
ein Auswahlsignal haben, welches später als muxsel bezeichnet wird,
wobei der Ausgang als z bezeichnet wird. Die von dem Multiplexer
implementierte Logik ist:
Z = (muxsel UND a) ODER ((NICHT muxsel)
UND b);
-
Gewöhnliche Implementierungen eines
Multiplexers können
einen Störimpuls
erzeugen, wenn muxsel wechselt, auch wenn a und b statisch sind.
In der Literatur nach dem Stand der Technik wird auf diese Störimpulse
als Risiken Bezug genommen. Diese Art von Risiken werden logische
Risiken genannt, da deren Vorhandensein in einer Schaltung von der
aktuellen Implementierung auf Gate-Ebene abhängt. Es gibt zwei Typen von
Logik-Risiken, die in einer gegebenen Schaltung vorhanden sein können. Die
gewöhnliche
Multiplexer-Implementierung
zeigt statische Logik-Risiken. Diese Risiken werden von dem Phänomen von
zwei Signalen verursacht, die komplementäre Ruhezustandswerte hat, die
vorübergehend
den gleichen Wert haben. In dem Fall des Multiplexers sind die zwei
betreffenden Signale muxsel und (NICHT muxsel).
-
Es wird eine Situation betrachtet,
wenn sowohl a als auch b logisch 1 sind und sich nicht verändern. Dann
geht muxsel von 1 zu 0 über.
Wenn der Übergang
von (NICHT muxsel) von 0 zu 1 geringfügig später als der Übergang
von muxsel geschieht, dann gibt es einen Moment, in dem weder muxsel
noch (NICHT muxsel) 1 ist. Der Ausgang Z wird vorübergehend
von 1 zu 0 gehen, wobei er einen Störimpuls erzeugt.
-
Dieses Logik-Risiko kann entfernt
werden, indem der zusätzliche
Term (a UND b) der Logik-Gleichung für den Multiplexer
hinzugefügt
wird. Die entstehende Multiplexer-Logik-Gleichung ist:
z =
(muxsel UND a) ODER ((NICHT muxsel) UND b) ODER (a UND b);
-
Der entstehende Multiplexer ist eine
allgemein verstandene und verwendete Schaltung. Auf ihn wird üblicherweise
als „störimpulsfreier" Multiplexer Bezug
genommen. In der vorliegenden Anmeldung werden folgende Bezugnahme
auf einen störimpulsfreien
Multiplexer so verstanden, dass sie sich auf diesen Typ von Multiplexer-Schaltung
beziehen, die Logik-Risiken eliminiert.
-
Es gibt jedoch einen zusätzlichen
Typ von Risiken, die diese Schaltung nicht eliminieren kann. Diese Klasse
von Risiken wird Funktionsrisiko genannt. Es tritt auf, wenn mehr
als ein Eingang zu der Schaltung gleichzeitig wechselt. In dem Fall
von sogenannten störimpulsfreien
Multiplexern, deren Logik-Gleichung oben angegeben ist, gibt es
viele möglichen
Funktionsrisiken.
-
Als ein Beispiel soll das folgende
Szenario betrachtet werden. Eingang a ist eine statische 1, b geht von
1 zu 0 über
und muxsel geht von 0 zu 1 über.
In dieser Situation wird der Ausgang z, wenn b geringfügig vor
muxsel übergeht,
vorübergehend
von 1 zu 0 und dann zurück
zu 1 übergehen.
Dieser nach unten gehende Störimpuls
ist ein Funktionsrisiko. Es gibt keine Möglichkeit, diesen Typ von Risiko
aus der Schaltung zu entfernen. Die einzige Option ist es, die Anzahl
von gleichzeitig wechselnden Eingängen auf 1 zu begrenzen.
-
Da die HiGig-Schnittstelle 261 Transfers
vom Typ doppelte Datenrate (DDR) verwendet, müssen die parallelen Datenausgänge aus
Registern kommen, aber durch kombinatorische Logik erreicht werden,
bevor sie die Ausgangstreiber erreichen. Daten müssen sowohl im Bezug auf positive
und negative Flanken von TXCLK getrieben werden. Um dies zu tun, müssen die "geraden" Daten in einem Register
gespeichert werden, das auf der positiven Flanke von TXCLK getacktet
wird und die „ungeraden" Daten müssen in
einem Register gespeichert werden, das mit der negativen Flanke
getaktet wird. Die Logik muß alternativ
gerade und ungerade Daten von den zwei Registern bei aufeinanderfolgenden
Phasen von TXCLK auswählen.
Diese Auswahl kann mit einem störimpulsfreien
2:1-Multiplexer erreicht werden. Ein derartiger Multiplexer ist
jedoch, wie oben beschrieben, anfällig für Funktionsrisiken. Nachdem
sowohl muxsel als auch die Daten zur selben Zeit wechseln, werden
Funktionsrisiken vorhanden sein.
-
Die vorliegenden Erfindung offenbart
eine Schaltung, die jegliche Logik- und Funktions-Risiken bei DDR-geschalteten
Datenausgängen
vermeidet. Der Ansatz verwendet zwei Ebenen von störimpulsfreien 2:1-Multiplexern.
Die Daten fließen
durch die Multiplexer so, dass die zweite Multiplex-Ebene (d. h.
am nächsten
zu den Ausgangstreibern) alternativ Eingänge auswählt, die auf die Ausgänge gemultiplext
werden sollen. Dies ist in 48 dargestellt.
-
Diese Auswahl wird so getimed, dass
der Multiplexer 302a der zweiten Ebene zu jedem gegebenen Moment
nur einen Eingang von dem Multiplexer 300a, 300b der
ersten Ebene auswählt,
dessen Ausgänge keinen
Störimpuls
erzeugen. Zu diesem Moment erzeugt der andere Multiplexer der ersten
Ebene ein Funktionsrisiko. Es wird jedoch nicht der Multiplexer
ausgewählt,
der den Störimpuls
erzeugt, sodass kein Störimpuls zu
den Ausgängen
des Multiplexers der zweiten Ebene geleitet wird. Der Ansatz „maskiert" daher im wesentlichen
die unvermeidbaren Funktionsrisiken und eliminiert Logik-Risiken
unter Verwendung sogenannter störimpulsfreier
Multiplexer in den ersten und zweiten Stufen des Multiplexens.
-
In dem in 48 dargestellten Logik-Diagramm werden
Signalen, die von dem Q der Register 306a bis 306e kommen,
der Präfix
r_(beispielsweise r_cd) gegeben. Signalen, die von dem Ausgang eines
störimpulsfreien
Multiplexers 300a, 300b, 302a kommen,
wird der Präfix
m_(beispielsweise m_cd) gegeben.
-
Die Störimpulse maskierende Funktion
der zwei Ebenen von Mulitplexern ist in dem Timing-Diagramm dargestellt,
das in 49 gezeigt ist.
Potentielle Funktionsrisiken sind bei m_ab und m_cd dargestellt.
Wie es jedoch in dem Timing-Diagramm ersehen werden kann, wählt r_ab_vs_cd,
welches das Multiplexer-Auswahlsignal für den Multiplexer der zweiten
Stufe ist, niemals den Eingang (m_ab oder m_cd) aus, der ein potentielles
Funktionsrisiko hat.
-
Stattdessen wählt der Multiplexer der zweiten
Stufe den Eingang (m_ab oder m_cd) aus, der frei von Risiken ist.
Während
dieser risikofreien Zeit können
von dem Multiplexer der ersten Stufe keine Störimpulse erzeugt werden. Logik-Risiken
können
nicht erzeugt werden, da diese Multiplexer sogenannte störimpulsfreie Multiplexer
sind. Funktionsrisiken können
nicht erzeugt werden, da nur ein Eingang zu dem Multiplexer, d.
h. dem ausgewählten
Multiplexer, r_a_vs_b zu diesem Zeitpunkt gerade wechselt. Die Dateneingänge zu den Multiplexern
(r_a/r_b und r_c/r_d) sind stabil.
-
Als solche sind die Multiplexer zu
dem Punkt immer stabil, an dem sie den Funktionsrisiken ausgesetzt werden.
Das Ergebnis ist, dass der letztendliche Ausgang m_ab_cd immer risikofrei
ist und wechseln wie erfordert bei beiden Flanken von TXCLK. Die
Verwendung der oben beschriebenen Konfiguration eliminiert die Notwendigkeit,
einen intern erzeugten 312.5MHz-Takt oder einen 312.5MHz-Takt auf
dem PC-Port zu erzeugen und schafft eine äquivalente Datenrate im Vergleich
zu einem 312.5MB/s-Takt mit Schaltung nur bei positiver Flanke.
-
Die oben erörterte Konfiguration der Erfindung
ist in einem bevorzugten Ausführungsbeispiel
auf einem Halbleitersubstrat, wie beispielsweise Silicium, mit geeigneten
Halbleiterherstellungstechniken und auf der Grundlage eines Schaltungs-Lay-out
verwirklicht, welches auf der Grundlage der oben erörterten
Ausführungsbeispiele
für Fachmänner auf
diesem Gebiet ersichtlich sind. Ein Fachmann auf dem Gebiet der
Technik des Halbleiter-Designs und der Halbleiter-Herstellung würde in der
Lage sein, die verschiedenen Module, Schnittstellen, Tabellen, Puffer,
usw. der vorliegenden Erfindung auf einem einzigen Halbleitersubstrat
zu implementieren, auf der Grundlage der oben erörterten Architekturbeschreibung.
Es würde
ebenso innerhalb des Umfangs der Erfindung liegen, die offenbarten
Elemente der Erfindung in diskreten Elektronikkomponenten zu implementieren,
wobei auf diese Weise Vorteil von den funtionalen Aspekten der Erfindung
gezogen wird, ohne die Vorteile durch die Verwendung eines einzigen
Halbleitersubstrats zu maximieren.