-
Technisches Gebiet
-
Die
vorliegende Erfindung bezieht sich im Allgemeinen auf Switches und
Router und im Besonderen auf eine Übermittlungsnachschlagestruktur
für Netzwerkdatenpakete
mit einer reduzierten Anzahl von Speicherzugriffen.
-
Hintergrund der Erfindung
-
Computernetzwerke
sind typischerweise so betrachtet worden, dass sie in mehrere Schichten
aufteilbar sind. Das von der International Standards Organization
(ISO) eingerichtete Open Systems Interconnection (OSI) Referenzmodell
definiert, dass ein Computernetzwerk sieben Schichten aufweist. 1 beschreibt
die sieben Schichten, die durch das OSI Referenzmodell definiert
sind. Schicht eins ist der Physical Layer, der für das Übertragen unstrukturierter
Bits von Information über
eine Verbindung verantwortlich ist. Layer zwei ist der Data Link
Layer. Der Data Link Layer ist verantwortlich für das Übertragen von Stücken von
Information über eine
Verbindung. Schicht drei ist der Network Layer. Der Network Layer
ist dafür
verantwortlich, einem beliebigen Paar von Anordnungen im Computernetzwerk
zu ermöglichen,
mit einander zu kommunizieren. Schicht vier ist der Transport Layer.
Der Transport Layer ist dafür
verantwortlich, einen zuverlässigen
Kommunikationsdatenstrom zwischen einem Paar von Anordnungen einzurichten.
Schicht fünf
ist der Session Layer, der dafür verantwortlich
ist, Dienste wie zum Beispiel Dialogkontrolle und Verkettung anzubieten.
Schicht sechs ist der Presentation Layer, der ein Mittel zur Verfügung stellt,
durch welches Anwendungen sich auf Darstellungen für Daten
einigen können.
Schicht sieben ist der Application Layer, in dem Anwendungen wie
zum Beispiel Dateiübertragungsdienste
und Managementdienste ablaufen.
-
Das
Internet Protocol (IP) ist ein Netzwerkprotokoll der Schicht drei.
Das IP Protokoll ist ein Botenprotokoll, das Teil der Transmission
Control Protocol (TCP)/IP Protokollsuite ist. TCP ist ein Transport
Layer Protokoll, das eine zuverlässige
Kommunikation in Byte-Datenströmen
erleichtert. IP schreibt ein Adressierungsschema vor, das nützlich ist
beim Nachverfolgen von Internet-Adressen für unterschiedliche Knoten,
für das Erkennen
eingehender Nachrichten und das Übermitteln
ausgehender Nachrichten. Jedes IP Datenpaket ist ein Datenpaket,
das Headerinformation und eine Nutzlast enthält.
-
IP
Adressen sind weltweit eindeutige 32 Bit Adressen, die im Allgemeinen
in einer durch Punkte getrennte Dezimalschreibweise dargestellt
werden, wobei die Punkte (das heißt Perioden) die vier Byte
der Adresse von einander trennen. Ein Beispiel für eine IP Adresse in einer
durch Punkte getrennten Dezimalschreibweise ist "1.2.3.4". Obwohl eine IP Adresse ein einzelner
32 Bit enthaltender Wert ist, enthält jede IP Adresse zwei Stücke von
Informationen. Wie in 2 gezeigt, enthält jede
IP Adresse 10 einen Netzwerkkennzeichner 12 und
einen Hostkennzeichner 14. Der Hostkennzeichner kennzeichnet
das Hostsystem, dem die IP Adresse zugeteilt ist. Der Netzwerkkennzeichner
kennzeichnet das Netzwerk, in dem sich das Hostsystem befindet.
-
Um
zu verstehen, wie IP Adressen verwendet werden, ist es hilfreich,
ein Beispiel in Betracht zu ziehen. 3 zeigt
einem Beispiel für
ein Computernetzwerk, in dem IP Datenpakete zwischen Host 20 und
Host 24 gesandt werden. In diesem Beispiel ist Host 20 Teil
des Netzwerks 1, und Host 24 ist Teil des Netzwerks 2. Eine
Anzahl von Switchingknoten 22 verbinden Netzwerk 1 und
Netzwerk 2 miteinander. Diese Switchingknoten können Switches
sein und/oder Router, die IP Datenpakete zwischen Netzwerk 1 und
Netzwerk 2 übermitteln.
Der Host 24 weist die Hostnummer 97 innerhalb
des Netzwerks 2 auf. Daher ist, wenn man die Adresse des
Hosts 24 in <Netzwerk,
Host> ausdrückt, die
IP Adresse für
den Host 24 <2.97>. IP Datenpakete werden auf
einer Sprung auf Sprung Basis von ihrer Quelle an ihren Zielort übermittelt.
Jeder Switchingknoten 22, auf den ein IP Datenpaket auf
dem Weg von Host 20 zu Host 24 stößt, repräsentiert
einen separaten Sprung. Das IP Datenpaket weist einen Header auf,
der eine IP Zieladresse enthält.
Die IP Zieladresse gibt Host 24 als den Zielort an. Jeder
Switchingknoten 22 auf dem Weg zwischen Host 20 und
Host 24 verwendet dabei die Zieladresse, um einen nächsten Sprung
festzulegen.
-
IP
Adressen wurden bisher in drei Klassen eingeteilt: Klasse A, Klasse
B und Klasse C. Die Anzahl der an den Netzwerkkennzeichner 12 in
der IP Adresse vergebenen Bits und die Anzahl der an den Hostkennzeichner
in der IP Adresse vergebenen Bits wurde ursprünglich durch die Klasse der
IP Adresse festgelegt. Bei IP Adressen der Klasse A wurden dem Hostkennzeichner
drei Byte zugewiesen; bei IP Adressen der Klasse B wurden dem Hostkennzeichner
zwei Byte zugewiesen; und bei IP Adressen der IP Klasse C wurde
dem Hostkennzeichner ein einzelnes Byte zugewiesen. Viele Parteien
lehnten diese starre Bitzuweisung zwischen Hostkennzeichner und
Netzwerkkennzeichner ab. Als Ergebnis wurde ein flexibleres Schema
entwickelt, bei dem Masken verwendet wurden, um zu identifizieren,
welche Bits in einer IP Adresse an den Hostkennzeichner vergeben
wurden und welche Bits an den Netzwerkkennzeichner vergeben wurden.
Eine Anzahl von beliebten IP Routingprotokollen macht Gebrauch von
solchen Masken.
-
Router
umfassen im Allgemeinen Routingtabellen, um dabei zu helfen, IP
Datenpakete an ihre richtigen Zielorte weiterzuleiten. Die Einträge in der
Routingtabelle enthalten Übermittlungsinformation
für IP
Adressenpräfixe
(das heißt
Teilbereiche der IP Adressen, die die höchstwertigen Bits enthalten),
für die
die Routinginformation bekannt ist. Zum Beispiel kann es bekannt
sein, dass alle IP Datenpakete, die für das Netzwerk 1.2 bestimmt
sind, über
die Schnittstelle des Knotens A heraus übermittelt werden sollten;
daher kodiert der Eintrag dieses Wissen.
-
4A zeigt
ein Beispiel für
vier Routingtabelleneinträge 30, 32, 34 und 36.
Jeder Routingtabelleneintrag enthält eine Adresse 40,
eine Präfixlänge 42 und
eine Schnittstelle 44. Das Feld der Adresse 40 enthält ein Präfix einer
IP Adresse. Die Präfixlänge 42 kennzeichnet
die Länge
des Präfixes
innerhalb des Adressfelds 40. Für den Eintrag 30 ist
der Präfix
nur ein einzelnes Byte (das heißt
8 Bits) lang. Die Schnittstelle 44 kennzeichnet die Schnittstelle,
zu der Datenpakete, die mit dem vorgegebenen Präfix beginnen, geleitet werden können. Die
Schnittstelle ist eine logische Abstraktion von einem Port (oder
einer anderen Information), die identifiziert, wohin ein Bereich
von IP Adressen (das heißt
die Adressen in dem durch den Präfix
definierten Bereich) geleitet werden sollte.
-
4B zeigt
ein Beispiel für
die Topologie eines Teilbereichs eines Computernetzwerks, wobei
von den Übermittlungstabelleneinträgen 30, 32, 34 und 36 Gebrauch
gemacht wird. Im Besonderen weist der Knoten 50 drei Schnittstellen
auf: A, B und C. Die Schnittstelle C führt zu Netzwerk 1.
Die Schreibweise 1/8 in 4B zeigt
an, dass die IP Adresse für
das Netzwerk einen Präfixwert
von 1 aufweist, und dass sie 8 Bits in der Länge ist. Die Schnittstelle
B führt
zu einem Teilbereich des Computer-netzwerks, der die IP Adressen
aufweist, die mit den Präfixen
1.2.3 beginnen. Die Schnittstelle A führt zu Zielorten, die die IP
Adressen aufweisen, die mit dem Präfix 1.2.4 und 1.2 beginnen.
Im Besonderen führt
die Schnittstelle A zu Knoten 52, der wiederum zu den anderen
Zielorten 1.2.4 und 1.2 führt.
-
Für jedes
von einem Knoten empfangene IP Datenpaket wird das längste übereinstimmende,
in der Routingtabelle gefundene Präfix verwendet, um das IP Datenpaket
zu leiten. Betrachten wir ein IP Datenpaket, das eine Zieladresse
von 1.2.4.7 aufweist. In solch einem Fall enthalten die Einträge 30, 34 und 36 übereinstimmende
Präfixe
für diese
IP Adresse. Präfix
1.2.4 ist jedoch der längste
Präfix,
und der Eintrag 34 wird daher verwendet, um das IP Datenpaket
aus der Schnittstelle A heraus in Richtung des Zielorts 1.2.4 zu
leiten.
-
In
herkömmlichen
Routern wird die Routingtabelle typischerweise als ein PATRICIA
Baum dargestellt. Ein PATRICIA (Practical Algorithm To Retrieve
Information Coded In Alphanumeric) Baum ist eine Datenanordnung
in Baumstruktur, die verwendet wird, um das Durchsuchen der Routingtabelle
zu vereinfachen. Der PATRICIA Baum wendet eine binäre Vertretung
von Schlüsseln
an, ohne Schlüssel
in den Knoten zu speichern. 5 zeigt
ein Beispiel für
einen Teilbereich eines PATRICIA Baums 60. Jeder Knoten
wird mit einem bestimmten Teilbereich eines IP Adressenpräfixes verknüpft. Zum
Beispiel wird der Knoten b0 mit Bit 0 eines IP
Adressenpräfixes
(das heißt,
des ersten Bits in einem IP Adressenpräfix) verknüpft. Jeder Knoten kann Hinweise
auf Tochterknoten oder auf Beendigungen enthalten. Weiterhin kann
jeder Knoten einen Verweis auf einen Routingtabelleneintrag für das Präfix aufweisen,
das der Knoten repräsentiert.
Jeder von einem Knoten führende
Zeiger ist verbunden mit einem Bitwert für das nächste Bit im Präfix für den Knoten.
Die Anordnung ist organisiert als ein Baum, so dass jede Ebene des
Baums eine darauf folgende Bitfolge darstellt. Daher stellt der
Knoten b1 gemäß 5 eine Folge
mit zwei Bit Länge
im Präfix
dar, wobei das erste Bit einen Wert von 0 hat. Die Tabelleneinträge sind
mit dem letzten Knoten des Präfixes
verknüpft.
Im Beispiel gemäß 5,
wird auf den Eintrag 62 für den Präfix 1, das ein Byte
in der Länge
ist (oder 8 Bits in der Länge),
durch den Knoten b8 für die Präfixbitfolge von "00000001" verwiesen. Auf ähnliche
Weise wird auf den Eintrag 64 durch den Knotens b16 verwiesen. Beendigungen, wie zum Beispiel
die Beendigung 65, werden im PATRICIA Baum zur Verfügung gestellt,
um Präfixe
darzustellen, für
die es keinen zugehörigen Übermittlungstabelleneintrag
gibt.
-
Der
PATRICIA Baum kann auch auf eine davon abweichende Art implementiert
werden. Der PATRICIA Baum kann die Tabelleneinträge abspeichern, so dass die
Zeiger auf die Tabelleneinträge
zeigen (das heißt, die
Tabelleneinträge
liegen im Baum als Knoten vor). Daher wird für einen vorgegebenen Knoten
ein Zeiger zugeordnet.
-
Der
PATRICIA Baum stellt einen zweckmäßigen Suchmechanismus für das Ausführen einer
binären Suche
zur Verfügung,
um festzustellen, ob irgendwelche Einträge mit einem bestimmten Präfix oder
Teilen von einem Präfix
verbunden sind. Eine Schwierigkeit bei der Verwendung eines PATRICIA
Baums betrifft jedoch die Anzahl von Speicherzugriffen, die ausgeführt werden
müssen,
um vom PATRICIA Baum Gebrauch zu machen. Einen Knoten im PATRICIA
Baum anzusprechen, erfordert einen Speicherzugriff. Daher erfordert
es, auf die Ebene 8 des Baums hinunter zu suchen, 8 Speicherzugriffe
auszuführen.
Solche Speicherzugriffe können ziemlich
kostspielig sein in Bezug auf den Zeitbedarf und den Berechnungsoverhead.
Geht man davon aus, dass Router häufig äußerst große Volumina von IP Datenpaketen
handhaben, sind Zeit und Berechnungsoverhead knappe Ressourcen,
die geschont werden müssen.
-
In "Memory Organization
Scheme for the Implementation of Routing Tables in High Performance
IP Routers", Technical
Disclosure Bulletin, Vol. 36, Nr. 2, 1. Februar, 1993, Seiten 151-153,
ist ein Verfahren offenbart, das die Identifizierung des nächsten Sprungs,
dessen IP Adresse und des entspre chenden Ausgabesports über eine
Tabellensuche einschließt.
Das Verfahren verwendet inhaltsadressierbare Datenspeicher und ein
statisches RAM, um eine Übereinstimmung
innerhalb einer feststehenden Anzahl von Datenspeicherzyklen zu
finden.
-
Im
US Patent Nr. 5,032,987 ,
erteilt an Andrei Z. Broder et al., wird eine lokale Netzwerkanordnung
einschließlich
einer Hash-Anordnung zur Verfügung
gestellt, die eine Vielzahl von lokalen Netzwerken aufweist, die
durch eine Brücke
zusammengeschaltet sind. Die Brücke
umfasst einen Prozessor, einen Programmdatenspeicher, einen Adressdatenspeicher
und einen Datenpaketspeicher. Die Datenspeicher sind durch einen Bus
mit dem Prozessor verbunden. Jede einer Vielzahl von Schnittstellen
verbindet den Bus mit einem der lokalen Netzwerke. Der Adressdatenspeicher
ist in eine Vielzahl von Hashtabellen eingeteilt. Schlüssel (Netzwerkadressen)
werden mit Hilfe einer unterschiedlichen zufälligen Hashfunktion für jede der
Tabellen in jede der Hashtabellen abgebildet. Jede Tabelle enthält auch
einen Suchmechanismus, um zu bestimmen, ob ein neuer Schlüssel (in
diesem Fall eine Netzwerkadresse), der in die Tabellenhashes eingefügt wird,
sich auf eine besetzte Adresse in dieser Tabelle bezieht. Wenn dem
so ist, wird der Schlüssel
von der nächsten
Tabelle verarbeitet, bis der Schlüssel in eine unbesetzte Adresse
in einer der Hashtabellen abgebildet ist. Wenn ein Schlüssel in
keine der Hashtabellen eingefügt
werden kann, werden neue Hashfunktionen erprobt, bis der Schlüssel in
eine unbesetzte Adresse (oder einen unbesetzten Ort) in einer der
Hashtabellen eingefügt
ist. Abgespeicherte Schlüssel
werden abgerufen durch paralleles Berechnen der Hashfunktionen für alle Hashtabellen
und Ausführen
eines parallelen Lesens aus den Tabellen.
-
Zusammenfassung der Erfindung
-
Die
vorliegende Erfindung spricht die oben erörterte Beschränkung von
herkömmlichen
IP Datenpaketroutingschemen an durch Bereitstellen eines Ansatzes
zur Datenpaketübermittlung,
der pro Zieladresse höchstens
drei Zugriffe auf Übermittlungsnachschlagetabellen
erfordert. Durch die Reduzierung der Anzahl der Suchzugriffe vermindert
die vorliegende Erfindung den Overhead bei der Berechnung und die
Zeit, die erforderlich ist um zu bestimmen, wie ein Datenpaket korrekt
zu leiten ist. In einer Ausführungsform
verwendet die vorliegende Erfindung drei Arten von Nachschlagearrays.
Eine erste Art des Nachschlagearrays wird durch die ersten zwei
Byte einer IP Zieladresse für
ein IP Datenpaket indiziert. In einigen Ausführungsformen wird nicht allein
die Zieladresse für
die Suche verwendet; vielmehr werden während der Suche andere Felder,
wie zum Beispiel die Quelladresse, der Zielport und der Quellport
in Verbindung mit der Zieladresse verwendet. Dennoch ist es sinnvoll,
den Fall zu betrachten, in dem nur die Zieladresse verwendet wird.
Die zweite Art des Nachschlagearrays wird durch das dritte Byte
der IP Zieladresse indiziert. Es enthält Einträge für Präfixe im Bereich von größer als
zwei Byte und kleiner gleich drei Byte. Jeder Eintrag im ersten
Nachschlagearray kann ein separates zugehöriges zweites Nachschlagearray
aufweisen. Wenn das zweite keinen übereinstimmenden Eintrag enthält, gibt
es keine Einträge,
die mit dem aus den ersten drei Byte der IP Zieladresse ausgeformten Präfix übereinstimmen;
daher muss die dritte Art des Nachschlagearrays verwendet werden.
Das letzte Byte der IP Zieladresse wird als Index zu dieser Tabelle
verwendet. Ein separates drittes Nachschlagearray kann für jeden
Eintrag in einem zweiten Nachschlagearray zur Verfügung gestellt
werden. Auf diese Weise werden die Nachschlagearrays in einer Ausführungsform
der vorliegenden Erfindung als Baum aus Nachschlagearrays organisiert.
-
Entsprechend
einem Beispiel wird ein Verfahren in einem digitalen Logikgerät für das Übermitteln
von Datenpaketen ausgeübt.
Die Anordnung umfasst ein Speicherelement, das adressierbare Speicherplätze aufweist.
Mehrere Bits der Headerdaten eines Datenpakets für die Netzwerkschicht werden
als Index verwendet, um einen ausgewählten der Speicherplätze aufzufinden.
Dieser ausgewählte
Speicherplatz stellt Information zur Verfügung bezüglich dessen, wie die Anordnung
das IP Datenpaket übermitteln
sollte. Von dieser Information wird Gebrauch gemacht, um das Datenpaket
in Richtung des Zielorts zu übermitteln.
-
Entsprechend
einem Aspekt der vorliegenden Erfindung gemäß Anspruch 1, werden eine erste
und eine zweite Übermittlungsnachschlagestruktur
in einer Anordnung für
das Übermitteln
eines IP Datenpakets in Richtung eines Zielorts zur Verfügung gestellt,
wobei der Zielort eine Zieladresse aufweist, die eine Folge von Bits
umfasst. Ein Präfix
von mehreren Bits für
die Zieladresse wird als Index verwendet, um einen ersten Eintrag
in der ersten Übermittlungs-nachschlagestruktur
aufzufinden. Der erste Eintrag stellt der zweiten Übermittlungsnachschlagestruktur
eine Anweisung zur Verfügung.
Der nächste
nachfolgende Satz von Bits, der dem Präfix der Zieladresse folgt,
wird als Index verwendet, um einen zweiten Eintrag in der zweiten Übermittlungsnachschlagestruktur
zu lokalisieren. Der Inhalt des zweiten Eintrags wird beim Übermitteln
des IP Datenpakets in Richtung der Zieladresse verwendet.
-
Entsprechend
einem weiteren Beispiel weist eine Übermittlungsnachschlagestruktur
Positionen auf, die von mehrfachen Bits indiziert werden, die innerhalb
eines Switches zur Verfügung
gestellt. Der Switch befindet sich in einem Netzwerk, das ein verbindungsloses
Netzwerkprotokoll anwendet. Für
jedes Datenpaket, das an eine Zieladresse weitergeleitet werden
soll, werden Bits in der Zieladresse verwendet, um mindestens eine Position
in der Übermittlungsnachschlagestruktur
zu lokalisieren und auf diese zuzugreifen. Die Position, auf die
zugegriffen wird, wird verwendet, um das Datenpaket zu übermitteln.
Es werden weniger Positionen in der Übermittlungsnachschlagestruktur
zur Verfügung
gestellt als Bits, die in der zugehörigen Zieladresse zur Verfügung gestellt
werden.
-
Entsprechend
einem weiteren Beispiel umfasst eine Anordnung zur Übermittlung
von Datenpaketen einer Netzwerkschicht an Zielorte (wobei die Datenpakete
zugehörige
Headerdaten aufweisen) eine erste Suchanordnung. Die erste Suchanordnung
hält Einträge, die
Information zur Verfügung
stellen, wie man Datenpakete an ihre Zielorte weiterleiten kann.
Die Einträge
werden von mehrfachen Bits indiziert. Die Anordnung umfasst auch
eine Übermittlungssteuereinheit
zur Verwendung von mehrfachen Bits der Headerdaten als Indexe, um
Einträge
in der ersten Übermittlungsanordnung
zu lokalisieren. Die Übermittlungssteuereinheit
verwendet auch die Einträge
in der ersten Suchanordnung, um das Übermitteln der Datenpakete
an die Zielorte zu steuern.
-
Entsprechend
einem weiteren Aspekt der vorliegenden Erfindung gemäß Anspruch
4 leitet ein Switch/Router Netzwerk-IP Datenpakete auf Zielorte.
Der Switch/Router umfasst ein erstes Nachschlagearray das Einträge enthält, die
durch führende
Bits von Zieladressen für
IP Datenpakete indiziert werden. Jeder Eintrag enthält eine
Anweisung um dabei zu unterstützen,
ein IP Datenpaket in Richtung eines Zielorts zu übermitteln. Der Switch/Router
umfasst auch ein zweites Nachschlagearray das Einträge enthält, die
von einem nachfolgenden Satz von Bits indiziert werden, die den
führenden
Bits in den Zieladressen für
IP Datenpakete folgen. Jeder Eintrag enthält eine Anweisung um dabei
zu unterstützen,
ein IP Datenpaket in Richtung eines Zielorts zu übermitteln. Der Switch/Router
umfasst außerdem
ein drittes Nachschlagearray das Einträge enthält, die von einem Satz von
nachfolgenden Bits indiziert werden, die dem nachfolgenden Satz
von Bits in den Zieladressen für
IP Datenpakete folgten. Jeder Eintrag im dritten Nachschlagearray
enthält
eine Anweisung dafür,
bei der Übermittlung
eines IP Datenpakets zu unterstützen.
Der Switch/Router umfasst eine Übermittlungsmaschine
dafür,
dass er IP Datenpakete an die Zielorte weiterleitet. Die Übermittlungsmaschine
greift auf mindestens einen Eintrag in den Nachschlagearrays zu,
der von einer Zieladresse für
das IP Datenpaket indiziert wird, dass übermittelt wird. Die Übermittlungsmaschine
führt die
Anweisung aus, die in dem Eintrag enthalten ist, auf den zugegriffen
wird.
-
Die
Erfindung richtet sich auch auf ein computerlesbares Medium, das
computerausführbare
Anweisungen gemäß Anspruch
5 enthält.
-
Kurze Beschreibung der Zeichnungen
-
Eine
veranschaulichende Ausführungsform
der vorliegenden Erfindung wird unten in Bezug auf die folgenden
Zeichnungen beschrieben.
-
1 beschreibt
die sieben im OSI Referenzmodell zu findenden Schichten.
-
2 beschreibt
die größte logische
Komponente einer IP Adresse.
-
3 zeigt
ein Beispiel für
ein herkömmliches
Computernetzwerk, in dem eine IP Adresse angewandt wird.
-
4A beschreibt
ein Beispiel für
herkömmliche
Routingtabelleneinträge.
-
4B beschreibt
ein Beispiel für
ein herkömmliches
Computernetzwerk, für
das die Routingtabelleneinträge
gemäß 4A zur
Verfügung
gestellt werden.
-
5 beschreibt
ein Beispiel für
einen Teilbereich eines PATRICIA Baums, der benutzt wird, um Übermittlungstabelleneinträge in einer
herkömmlichen
Anordnung ausfindig zu machen.
-
6 ist
ein Blockdiagramm, das die Rolle des Switch/Routers beim Ausüben der
veranschaulichenden Ausführungs-form
der vorliegenden Erfindung veranschaulicht.
-
7 ist
ein Blockdiagramm, das wesentliche Bauelemente des Switch/Routers
der 6 veranschaulicht.
-
8 beschreibt
wesentliche Komponenten einer in der veranschaulichenden Ausführungsform
gemäß der 6 und 7 verwendeten
Anschlusssteckkarte.
-
9 ist
ein Flussdiagramm, das die Schritte veranschaulicht, die beim Verarbeiten
von einem eingehenden Frame von Daten ausgeführt werden, um ein IP Datenpaket
in der veranschaulichenden Ausführungsform
gemäß der 6 und 7 korrekt
zu übermitteln.
-
10 veranschaulicht
die Manipulation von Daten in der veranschaulichenden Ausführungsform
der vorliegenden Erfindung.
-
11 veranschaulicht
das Format eines SONST Frames.
-
12 veranschaulicht
die wesentlichen Komponenten eines IP Datenpakets.
-
13 veranschaulicht
das Format von Headerdaten, die bei der IP Übermittlungsnachschlagestruktur
verwendet werden.
-
14 veranschaulicht
im Datenspeicher gehaltene Strukturen, die dabei verwendet werden,
eine IP Suche in der veranschaulichenden Ausführungsform der vorliegenden
Erfindung auszuführen.
-
15 veranschaulicht
eine Schnittstellenanordnung.
-
16 veranschaulicht
eine DANET Struktur.
-
17 ist
ein Flussdiagramm, das die Schritte veranschaulicht, die während einer
IP Suche entsprechend der veranschaulichenden Ausführungsform
der vorliegenden Erfindung ausgeführt werden.
-
18 beschreibt
die Verwendung eines Nachschlageelements in der veranschaulichenden
Ausführungsform
der vorliegenden Erfindung.
-
19A veranschaulicht ein Beispiel, in dem ein erstes
Nachschlagearray auf ein zweites Nachschlagearray verweist.
-
19B veranschaulicht ein Beispiel, in dem ein "Nachzieheffekt" verwendet wird,
so dass ein Bereich von Einträgen
auf eine gemeinsame DANET Struktur verweist.
-
19C veranschaulicht ein Beispiel, in dem ein erstes
Nachschlagearray auf einen Eintrag im zweiten Nachschlagearray verweist,
das auf einen Eintrag in einem dritten Nachschlagearray verweist.
-
20 veranschaulicht
das logische Format eines Nachschlageelements.
-
21 ist
ein Blockdiagramm, das die Verwendung eines Rotorzeigers und eines
TOS Arrayzeigers veranschaulicht um ein Zielhandle für ein IP
Datenpaket zu erzielen.
-
Detaillierte Beschreibung
der Erfindung
-
Die
veranschaulichende Ausführungsform
der vorliegenden Erfindung stellt einen Switch/Router zur Verfügung, der
Datenpakete des Network Layer in Richtung ihres Zielorts übermittelt
mit im Durchschnitt weniger Speicherzugriffen während des Übermittlungsnachschlagens auf
Ebene des Network Layer als herkömmliche
Switchingknoten. Der Begriff "Network
Layer Datenpaket" verweist
auf ein Datenpaket, das einem OSI Layer 3 Protokoll entspricht.
Obwohl die veranschaulichende Ausführungsform der vorliegenden
Erfindung nachstehend zur Verwendung mit IP Datenpaketen beschrieben
wird, kann die vorliegende Erfindung auch für andere Arten der Netzwerkadresssuche,
wie zum Beispiel mit CLNP und anderen Protokollen verwendet werden.
Der Switch/Router wendet eine erste Übermittlungsnachschlagestruktur
an, die von den führenden
sechzehn Bits der Zieladresse für
ein IP Datenpaket indiziert werden kann. Eine zweite Übermittlungsnachschlagestruktur
wird ebenfalls innerhalb des Switch/Routers zur Verfügung gestellt.
Die zweite Übermittlungsnachschlagestruktur
kann von den nächsten
darauf folgenden acht Bits in der Zieladresse indiziert werden,
die den ersten sechzehn Bits folgen. Schließlich wird eine dritte Übermittlungsnachschlagestruktur
im Switch/Router zur Verfügung
gestellt. Die dritte Übermittlungsnachschlagestruktur
kann von den letzten 8 Bits der Zieladresse eines IP Datenpakets
indiziert werden. Einträge
in der dritten Übermittlungsnachschlagestruktur
werden verwendet, wenn Einträge
in der ersten Übermittlungsnachschlagestruktur
und in der zweiten Übermittlungsnachschlagestruktur
nicht ausreichen, um das IP Datenpaket in Richtung eines Zielorts
zu übermitteln.
-
Die
veranschaulichende Ausführungsform
wird im Vergleich zu einer Implementierung beschrieben, die die
IP Version 4 verwendet. Dennoch werden jene, die in der Technik
ausgebildet sind, verstehen, dass die vorliegende Erfindung auch
ausgeübt werden
kann mit anderen Versionen des IP, einschließlich Version 6.
-
Die
Analyse von IP Datenpaketadressen und Datenverkehrsmustern ergibt,
dass die Mehrheit der IP Datenpakete nur eine einzelne Suche in
der ersten Übermittlungsnachschlagestruktur
benötigen
(das heißt, die
meisten IP Datenpakete können
auf Grundlage von den ersten zwei Byte ihrer IP Zieladressen richtig
geleitet werden). Daher benötigt
die Mehrheit der IP Datenpakete nur einen einzelnen Speicherzugriff.
Ein überwältigender
Prozentsatz von IP Datenpaketen benötigt entweder nur eine Suche
in der ersten Übermittlungsnachschlagestruktur
oder eine Suche in sowohl der ersten Übermittlungsnachschlagestruktur
als auch in der zweiten Übermittlungsnachschlagestruktur.
Daher kann ein überwältigender
Prozentsatz von IP Datenpaketen mit nur zwei Speicherzugriffen für die IP
Suche übermittelt
werden. Als Ergebnis stellt die veranschaulichende Ausführungsform
eine wesentliche Ersparnis an Zeit und bei der Berechnung zur Verfügung.
-
In
der veranschaulichenden Ausführungsform
enthält
jeder Eintrag im Nachschlagearray oder jedes Element eine Anweisung.
Die Anweisung wird von einer Suchmaschine ausgeführt, die im Switch/Router zur Verfügung gestellt
ist. Die Anweisung sagt der Suchmaschine, was während des Suchverfahrens als
nächstes zu
tun ist. Zum Beispiel kann es sein, dass eine Anweisung in einem
Element in der ersten Übermittlungsnachschlagestruktur
die Suchmaschine anweist, auf ein Element in der zweiten Übermittlungsnachschlagestruktur zuzugreifen.
Das Element, auf das in dem zweiten Übermittlungsnachschlagearray
zugegriffen wird, kann eine Anweisung enthalten, die anordnet, dass
die Suchmaschine eine bestimmte Datenanordnung verwendet, die Information
enthält
bezüglich
dessen, welcher Ausgabeport bei der Übermittlung des IP Datenpakets
zu verwenden ist.
-
Vom
Switch/Router der veranschaulichenden Ausführungsform wird angenommen,
dass er in einem Computernetzwerk platziert ist, in dem IP Datenpakete
in Richtung von Zielorten weitergeleitet werden müssen. Der
Switch/Router der veranschaulichenden Ausführungsform ist für die Verwendung
in Computernetzwerken, wie zum Beispiel dem Internet, einem Intranet
oder einem Extranet geeignet. 6 beschreibt
die grundlegende Rolle des Switch/Routers 66 in der veranschaulichenden
Ausführungsform.
Im Besonderen tritt ein IP Datenpaket 64 über einen
Inputport 68 in den Switch/Router 66 ein. Der
Switch/Router 66 bestimmt, welcher Port 70 dabei
zu verwenden ist, um das IP Datenpaket 64 auszugeben, und
um so sicherzustellen, dass das IP Datenpaket in Richtung des gewünschten
Zielorts geleitet wird. Das IP Datenpaket 64 kann in Frames
gekapselt sein und kann zusammen mit anderen IP Datenpaketen in
den Switch/Router 66 eintreten. Die Entscheidung bezüglich dessen,
wie das IP Datenpaket 64 innerhalb des Switch/Routers 66 weiterzuleiten
ist, schließt
einen IP Übermittlungsnachschlagevorgang
ein, der detaillierter weiter unten beschrieben wird.
-
7 veranschaulicht
ein Beispiel für
einen Teilbereich des grundlegenden Layouts für den Switch/Router 66.
Die in 7 gezeigten Komponenten können sich in einer einzelnen
Box (das heißt,
untergebracht innerhalb eines einzelnen Gehäuses) befinden. Der Switch/Router 66 ist
in der Lage, mehrfache Eingangsdatenströme gleichzeitig zu empfangen
und zu verarbeiten. Diese Inputströme kommen am Switch/Router 66 über separate
Verbindungen an. In der veranschaulichenden Ausführungsform sind diese Eingangsdatenströme SONST
Datenströme
(SONST ist ein Akronym für
synchrone optische Netzwerke). SONST ist ein Standard, der eine
synchrone Ebene eins Transportsignal mit 51,84 Megabits pro Sekunde
spezifiziert. Dieser Standard definiert eine Familie von faseroptischen Übertragungsraten,
die das Zusammenarbeiten von Übertragungsprodukten über Netzwerk grenzen
hinweg für
eine Vielzahl von Herstellern erleichtert.
-
Der
Standard definiert eine physische Schnittstelle, optische Übertragungsraten,
bekannt als Optical Carrier (OC) Signale und ein Frameformat. Die
optischen SONST Übertragungsraten
sind wie folgt definiert:
OC
Ebene | Übertragungsrate | Kapazität |
OC-1 | 51,84
Mbps | 28
DS1 oder 1 DS3 |
OC-3 | 155,52
Mbps | 84
DS1 oder 3 DS3 |
OC-9 | 466,56
Mbps | 252
DS1 oder 9 DS3 |
OC-12 | 622,08
Mbps | 336
DS1 oder 12 DS3 |
OC-18 | 933,12
Mbps | 504
DS1 oder 18 DS3 |
OC-24 | 1,244
Gbps | 672
DS1 oder 24 DS3 |
OC-36 | 1,866
Gbps | 1008
DS1 oder 36 DS3 |
OC-48 | 2,488
Gbps | 1344
DS1 oder 48 DS3 |
OC-96 | 4,976
Gbps | 2688
DS1 oder 96 DS3 |
OC-192 | 9,953
Gbps | 5376
DS1 oder 192 DS3 |
OC-255 | 13,21
Gbps | |
-
In
der oben stehenden Tabelle bezieht sich DS auf eine bekannte standardisierte
Hierarchie von digitalen Signalgeschwindigkeiten, die verwendet
wird, um Kapazitäten
von Leitungen und Anschlusskabeln zu klassifizieren. Der Grundgeschwindigkeitsgrad
ist DS-0, was 64 Kilobits pro Sekunde entspricht. DS-1 entspricht
1,544 Megabits pro Sekunde, und DS 3 entspricht 44,736 Megabits
pro Sekunde.
-
Jede
Anschlusssteckkarte 76, 78, 80 und 82 ist
dafür entworfen,
einen OC-48 Inputdatenstrom zu empfangen, der den 2,488 Gigabits
pro Sekunde (Gbps) entspricht. Multiplexer 72 und 74 werden
zur Verfügung
gestellt, um vier OC-12 Eingangsdatenströme zu multiplexen, um so einen
OC-48 Eingangsdatenstrom an den Anschlusssteckkarten 82 beziehungsweise 76 zu
erzeugen. In dem in 7 beschriebenen Beispiel wird
angenommen, dass separate OC-48 Eingangsdatenströme von den Anschlusssteckkarten 78 beziehungsweise 80 empfangen
werden.
-
Die
Anschlusssteckkarten 76, 78, 80 und 82 enthalten
Intelligenz für
das Empfangen und das Übertragen
von IP Datenpaketen. Jede Anschlusssteckkarte 76, 78, 80 und 82 ist
auf einem gemeinsamen Chassis innerhalb des Switch/Routers 66 platziert.
Jede Anschlusssteckkarte 76, 78, 80 und 82 enthält mindestens eine
anwendungsspezifische integrierte Schaltung (ASIC) 84, 86, 88 und 90,
die den IP Übermittlungsnachschlagevorgang
ausführt. 8 beschreibt
wesentliche Komponenten einer Anschlusssteckkarte 100 detaillierter.
Die Anschlusssteckkarte 100 umfasst einen Mikroprozessor 102 und
einen Datenspeicher 104. Die Anschlusssteckkarte 100 umfasst
auch ein ASIC 106, das eine Suchmaschine 108 aufweist.
Die Suchmaschine 108 kann in einer Anzahl von unterschiedlichen
Formen ausgeführt
werden, und kann einen separaten Prozessor umfassen.
-
Obwohl
das ASIC eine Hardwareimplementierung für die IP Übermittlungsnachschlagestruktur
zur Verfügung
stellt, erkennen jene, die in der Technik ausgebildet sind, dass
die vorliegende Erfindung auch eine Softwareimplementierung umfasst.
Anderes ASICs können
auf der Anschlusssteckkarte 100 zur Verfügung gestellt
werden, um andere Funktionalitäten
auszuführen.
-
Das
ASIC 84, 86, 88 und 90 auf jeder
der Anschlusssteckkarten 76, 78, 80 und 82 ist
dafür verantwortlich,
eingehende IP Datenpakete zu empfangen, das entsprechende Zielhandle
für die
IP Datenpakete festzulegen und die IP Datenpakete über die
Verbindung zur entsprechenden Ausgangsanschlusssteckkarte zu übermitteln.
Das Zielhandle zeigt der Ausgangsanschlusssteckkarte an, wie das
IP Datenpaket übermittelt werden
sollte. Die Verbindung 92 ist ein Verbindungsmittel, das
die Anschlusssteckkarten 76, 78, 80 und 82 zusammenschaltet.
Ein Steuerungsprozessor 94 überwacht und verwaltet Operationen
innerhalb des Teilbereichs des in 7 gezeigten
Switch/Routers 66.
-
Jene,
die in der Technik ausgebildet sind, erkennen, dass die vorliegende
Erfindung nicht mit einer wie in den 6 und 7 gezeigten
Switch-/Routerkonfiguration ausgeübt werden muss. Es wird beabsichtigt, dass
die in 6 gezeigte Darstellung veranschaulichend und für die vorliegende
Erfindung nicht einschränkend
ist. Zum Beispiel könnte
das IP Übermitteln
in einem Rechnersystem, wie zum Beispiel einem Personalcomputer
ausgeführt
werden. Außerdem
muss das IP Übermittlungsnachschlagen
nicht von einem ASIC ausgeführt
werden, sondern kann vielmehr von einem dedizierten Übermittlungsmikroprozessor
oder von einem Zustandsautomaten ausgeführt werden. Wie weiter oben
erwähnt,
kann die IP Übermittlungsnachschlagestruktur
einzig durch Software implementiert werden. Außerdem muss sich die Intelligenz
nicht in den Anschlusssteckkarten befinden, sondern beansprucht
vielmehr Anschlusssteckkarten mit einem intelligenten Prozessor,
die verwendet werden können,
um das IP Übermittlungsnachschlagen
auszuführen.
Weiterhin muss der Switch/Router keine vier Anschlusssteckkarten
aufweisen, sondern kann vielmehr eine unterschiedliche Anzahl von
Anschlusssteckkarten aufweisen. Die Eingangsdaten müssen keine
SONST Datenströme sein,
die Daten in SONST Frames halten. Andere Ar ten von Datenformaten
und Datenströmen
können
beim Ausüben
der vorliegenden Erfindung empfangen werden.
-
Ein
Beispiel ist hilfreich, um den Betrieb des Switch/Routers 66 beim Übermitteln
eines IP Datenpakets zu veranschaulichen. Nehmen wir an, dass ein
IP Datenpaket vom SONST Multiplexer 74 empfangen wird. Das
IP Datenpaket wird dann von der Anschlusssteckkarte 76 empfangen
und vom ASIC 84 verarbeitet. Das ASIC 84 leitet
das IP Datenpaket über
die Verbindung 92 zu Anschlusssteckkarte 82. Die
Anschlusssteckkarte 82 leitet das IP Datenpaket anschließend aus
auf den SONST mux 72, so dass das IP Datenpaket in Richtung des
entsprechenden Zielorts ausgegeben werden kann.
-
9 ist
ein Flussdiagramm, das einen Überblick über die
Verarbeitung zur Verfügung
stellt, die über die
Daten ausgeführt
wird, die vom Switch/Router 66 empfangen werden. Es wird
vorausgesetzt, dass diese Daten mindestens ein IP Datenpaket enthalten.
Anfangs beginnen die Daten im Zustand 128 (10),
wo ein SONST Frame 130 von einer der Verbindungen empfangen
wird. Der SONST Frame 130 verkapselt einen Frame von Daten,
die in dem durch den SONST Standard festgelegten Format übertragen
werden. 11 stellt ein Blockdiagramm
zur Verfügung,
das das Format eines SONST Frames 130 veranschaulicht.
Ein SONST Frame 130 umfasst 90 Oktette (8 Bit Bytes) in
der Breite und 9 Reihen nach unten. Die Nutzlast ist im Synchronous
Payload Envelope (SPE) enthalten. Der SPE enthält 9 Byte, die dem Wegeoverhead
(OH) zugeordnet sind. Der SONST Frame 130 enthält auch
Streckenoverhead 146 und Anschlussoverhead 148.
Der Streckenoverhead 146 und der Anschlussoverhead 148 sind
Teil des SONST Transportoverheads. In diesem Zusammenhang bezieht
sich "Overhead" auf die Headerinformation,
die für
verschiedene Schichten des Computernetzwerks zur Verfügung gestellt
wird.
-
Wie
aus 10 ersehen werden kann, verkapselt der SONST Frame 130 eine
Layer zwei Struktur (das heißt
eine durch ein Protokoll gemäß Layer
zwei zur Verfügung
gestellte Struktur, wobei Layer zwei durch das OSI Modell definiert
ist). Mindestens ein IP Datenpaket 134 wird innerhalb des
SONST Frames 130 und der Ebene zwei Struktur 132 gehalten.
Der SONST Frame wird dann vom Switch/Router 66 enkapselt
(Schritt 112 in 9). Der Switch/Router 66 enthält Hardware,
die für
das Entkapseln des SONST Frame entworfen ist. Nach der Entkapselung
wird die Layer zwei Struktur 132, die das IP Datenpaket 134 enthält, offengelegt (wie
durch den Zustand 136 in 10 angezeigt).
-
Der
Switch/Router 66 öffnet
dann die Layer zwei Struktur 134 durch Entfernen des Layer
zwei Headers, um so den Zugriff auf ein oder mehrere IP Datenpakete 134 zu
erlangen (Schritt 114 in 9). Die
Layer zwei Struktur kann zum Beispiel ein Punkt-zu-Punkt Protokoll-(PPP)Frame,
eine ATM Zelle oder ein Framerelais Frame sein.
-
Die
Suchmaschine 108 des ASIC 106 erhält ein einzelnes
IP Datenpaket von der Layer zwei Struktur (Schritt 116 in 9).
Das ASIC 106 weiß,
dass die Layer zwei Struktur IP Datenpakete basierend auf Schnittstelleninformation
enthält.
Der Switch/Router 66 erhält Schnittstelleninformation
bezüglich
Schnittstellen aufrecht, in denen eingehende Daten empfangen werden.
Jede Schnittstelle ist mit einer bestimmten Anschlusssteckkarte
und einem bestimmten Port verbunden. Die Schnittstelleninformation
kennzeichnet die Eigenschaften der Daten, die empfangen werden.
Zum Beispiel können
die Daten als eingehende IP Datenpakete enthaltend identifiziert
werden.
-
Der
IP Header 152 (10) des
IP Datenpakets 134 wird zusammen mit einer Portinformation 141 vom
Transportheader 143 kopiert, um Headerdaten 153 zu
erzeugen (Schritt 118 in 9). Wie
in 12 gezeigt, umfasst das IP Datenpaket 134 ei nen
Header 152 und Daten 154. Auf diese Weise gehen
in Schritt 119 die Daten, die verarbeitet werden, von Zustand 138 in
Zustand 139 über
(siehe 10).
-
13 zeigt
einem Beispiel für
die Headerdaten 152, die für das Übermittlungsnachschlagen für IP Version
4 verwendet werden. Alle Felder in den Headerdaten 153,
außer
den Feldern 184 und 186 (die vom Transportheader 143 kopiert
sind) sind vom IP Header 152 kopiert. Die Headerdaten 153 umfassen
ein Versionsfeld 160, das Information bezüglich der
Version des IP Protokolls enthält,
das verwendet wird. Für
Datenpakete der IP Version 4 enthält dieses Feld 160 einen
Wert von 4. Das Internet Header Length (IHL) Feld 162 kennzeichnet
die Länge
des Headers in Vielfachen von 4 Oktetten. Der Differential Service
(DF) 164 enthält eine
Zahl, die eine bestimmte Handhabung oder Behandlung für das Datenpaket
kennzeichnet. Das Gesamtlängenfeld 166 hält Information
bezüglich
der Gesamtlänge
eines Datenpakets, bevor irgendeine Fragmentierung auftritt. Das
Identifikationsfeld stellt einen Identifikationswert für das Datenpaket
zur Verfügung,
der verwendet werden kann, wenn das Datenpaket später fragmentiert
ist, um die Fragmente mit dem ursprünglichen Datenpaket zu verbinden.
-
Die
Headerdaten 153 umfassen Flags 170. Die Flags 170 umfassen
ein DF Flag und ein MF Flag. Das DF ("don't
fragment") Flag
zeigt an, ob ein Datagramm (das mindestens zum Teil vom Datenpaket
transportiert wird) fragmentiert werden soll. Das MF ("more fragment") Flag kennzeichnet,
ob es mehrere Fragmente gibt oder ob das Datenpaket das letzte Fragment
des Datagramms enthält.
Das Fragmentversatzfeld 172 enthält einen Versatzwert, der den
Versatz kennzeichnet, in dem das Fragment zu dem wieder zusammengesetzten Datenpaket
gehört.
Das Lebensdauerfeld 174 kennzeichnet die Zeitperiode für die das
Datenpaket gültig
ist und nach welcher das Datenpaket verworfen werden sollte. Das
Protokollfeld 176 enthält
einen Wert, der es dem Zielendknoten des Network Layer ermöglicht zu
wissen, welches innerhalb des Endknotens ablaufende Protokoll das
Datenpaket empfangen sollte. Ein Headerprüfsummenfeld 178 wird
zur Verfügung
gestellt. Die Headerdaten 153 umfassen auch eine Quelleadresse 180,
die die Quelle kennzeichnet, für
die das Datenpaket entstanden ist. Ein Zieladressefeld 182 enthält eine
Zieladresse für
den Zielort, an den das IP Datenpaket weitergeleitet werden soll.
Die Headerdaten 153 umfassen auch ein Quellportfeld 184 und
ein Zielportfeld 186, die vom Transportheader zur Kennzeichnung
von entsprechenden Ports kopiert werden. Die Portfelder 184 und 186 können in
der Dienstgüte-
(QOS – Quality
Of Service) Verarbeitung oder auf andere Art und Weise, wie zum
Beispiel Zugangskontrollfilterung verwendet werden.
-
Sobald
die Headerdaten 153 gesammelt worden sind, kann die Zieladresse 182 verwendet
werden, um ein Übermittlungsnachschlagen
innerhalb der Übermittlungsnachschlagearrays
auszuführen
(Schritt 120 in 9). Das IP Übermittlungsnachschlagen muss
sich nicht einzig auf die Zieladresse verlassen; vielmehr können zusätzliche
Felder in den Headerdaten 153 in Verbindung mit der Zieladresse
verwendet werden. Zum Beispiel können
die Quelladresse, der Quellport und der Zielport zusammen mit der
Zieladresse verwendet werden. Diese anderen Felder können dabei
verwendet werden, um bestimmte QOS zur Verfügung zu stellen. Zum Zweck
der Einfachheit richtet sich die untenstehende Diskussion anfangs
auf den Fall, in dem man sich nur auf die Zieladresse verlässt. Diese
Suche kennzeichnet, wo das IP Datenpaket vom Switch/Router 66 ausgegeben
werden sollte. Das Suchverfahren wird weiter unten detaillierter
beschrieben. Das IP Datenpaket wird dann über die Verbindung 92 zu
einer Anschlusssteckkarte übermittelt,
um so vom Switch/Router 66 ausgegeben zu werden (Schritt 122 in 9).
-
Datenpakete
können
eine QOS Verarbeitung erfordern oder nicht. Datenpakete, die eine
QOS Verarbeitung erfordern, können
einer anderen QOS Verarbeitung unterworfen werden als andere Arten
von Datenpaketen. Die QOS Verarbeitung bewertet zusätzliche
Felder in den Headerdaten 153, um zu bestimmen, ob ein
Datenpaket in einen bestimmten QOS Datenfluss klassifiziert werden
soll oder nicht. Eine QOS Verarbeitung kennzeichnet diese Datenflüsse und
trennt solche Datenpakete für
die spezielle Verarbeitung ab. Eine Filterspezifikation kennzeichnet,
welche Felder beurteilt werden und die Werte, die die Felder für eine vorgegebene
Art von QOS aufweisen sollten. Als ein Ergebnis können bestimmte
Datenpakete auf Grundlage von den während der QOS Verarbeitung
bewerteten Feldern statt auf Grundlage der Zieladresse allein geleitet
werden. Der Zieladressfall wird hier als der grundsätzliche
Ansatz erörtert
und kann in Verbindung mit QOS Verarbeitung verwendet werden, um
zu bestimmen, wie ein IP Datenpaket zu übermitteln ist.
-
Beim
Ausführen
des Übermittlungsnachschlagens
verwendet die Suchmaschine 108 eine Anzahl von internen
Strukturen, umfassend Tabellen, Arrays und andere Datenstrukturen. 14 beschreibt
mehrere der wesentlichen Varianten von Strukturen, von denen während eines Übermittlungsnachschlagens
für IP
Datenpakete Gebrauch gemacht wird. Die Schnittstellenanordnungen 210 enthalten
Information bezüglich
der Schnittstellen. Eine Schnittstelle bezieht sich im Allgemeinen
auf eine Verbindung mit einem anderen Switchingknoten in einem Computernetzwerk. 15 zeigt
ein Beispiel für
eine Schnittstellenanordnung 210 für eine vorgegebene Schnittstelle.
Die Schnittstellenanordnung 210 enthält auch ein Anfangsnachschlageelement 220.
Das Anfangsnachschlageelement 220 ist ein Arraynachschlageelement,
das eine Anfangsanweisung enthält,
die am Anfang des Übermittlungsnachschlagens
für ein
IP Datenpaket ausgeführt
wird. Die Verwendung dieses Anfangsnachschlageelements 220 wird
weiter unten detaillierter beschrieben. Die Schnittstellenanordnung 210 kann
auch eine Anzahl von Zählern 221 enthal ten,
die Zähler
enthalten, die beim Sammeln von Statistiken betreffend den Verkehr über die
Schnittstelle nützlich
sind.
-
Die Übermittlungsnachschlagestruktur
verwendet auch Nachschlagearrays 212, die aus Nachschlageelementen
zusammengesetzt sind. Das Format und die Verwendung dieser Nachschlageelemente
werden weiter unten detaillierter beschrieben. Die Übermittlungsnachschlagestruktur
kann auch auf ein SANFT 214 oder ein DANET 216 zugreifen.
Ein SANFT 214 ist eine Datenstruktur, die eine Anzahl von
Strukturen für
entsprechende Quelladressen hält.
Die Strukturen enthalten nützliche
Information bezüglich
der Quelladressen, die für
QOS und TOS ausgenutzt werden können.
Das DANET 216 enthält
DANET Strukturen, die Informationen bezüglich der Zieladressen enthalten,
die bei der Bestimmung des nächsten
Sprungs verwendet werden. Die DANET Strukturen weisen ein Format
wie das in 16 gezeigte auf. Im Besonderen
enthält
jede DANET Struktur 222 ein Feld 224, das ein
Zielhandle, einen Zeiger auf ein TOS Array oder einen Zeiger auf
einen Rotor enthalten kann. Wie weiter oben erwähnt, ist ein Zielhandle eine
zusammengesetzte Datenstruktur, die verwendbare Informationen enthält bezüglich dessen
wohin ein vorgegebenes IP Datenpaket geleitet werden sollte, so
dass es korrekt in Richtung eines Zielorts ausgegeben wird. Der
Switch/Router 66 verwendet das Zielhandle auf der Übertragungsseite,
um zu bestimmen, wohin ein IP Datenpaket zu senden ist (das heißt, welche Anschlusssteckkarte
und welcher Ausgangsport verwendet werden sollte). Das Feld 224 kann
stattdessen einen Zeiger auf einen Rotor enthalten, der eine Reihe
von Zielhandles oder einen Zeiger auf ein Type Of Service (TOS)
Array enthalten, das einen Satz von Zielhandles enthält. Die
Zielhandles im TOS Array werden von einem TOS Parameter indiziert.
Die DANET Struktur 222 enthält eine Anzahl von Zählern 225,
umfassend Datenpaketzähler
und Bytezähler.
Diese Zähler 225 sind
verwendbar beim Überwachen
des Datenverkehrs zu einem Zielort und können bei der QOS Verarbeitung
verwendet werden. Die DANET Struktur 222 kann auch andere
Daten 226 enthalten.
-
17 stellt
ein Flussdiagramm der Schritte zur Verfügung, die während eines Übermittlungsnachschlagens
bester Bemühung
(best effort) für
ein Unicast IP Datenpaket ausgeführt
werden. Die Suche bestimmt, wie das IP Datenpaket an den nächsten Sprung
in Richtung des Zielorts zu senden ist. Der Switch/Router 66 kennt
die Schnittstelle, an der das IP Datenpaket angekommen ist. Auf
die Schnittstellenanordnung für
die zugehörige
Schnittstelle wird zugegriffen, und die Suchmaschine 108 verarbeitet
das in der Schnittstellenanordnung (Schritt 230 in 17)
enthaltene Anfangsnachschlageelement. Wie in 15 gezeigt,
umfasst die Schnittstellenanordnung 210 ein Nachschlagearrayelement 220,
das eine Anweisung enthält.
Die Anweisung ist eine Arraynachschlageanweisung die das Array kennzeichnet,
auf das das Nachschlagen angewandt werden soll. Das Nachschlageelement 220 (18)
enthält
einen Befehlscode 256 für
die Arraysuche. Das Nachschlageelement 220 enthält auch
eine Arrayadresse 252 und eine Headerhalbbyteauswahl 254.
Ein Halbbyte umfasst 4 Bits, und verschiedene Halbbytes innerhalb
des Headers können
verwendet werden, um einen Index zu einem Arraynachschlageelement
in einem Nachschlagearray zu erzeugen. Informationen im Header außer der
Zieladresse können
für die
Suche verwendet werden, und die Headerhalbbyteauswahl 254 kennzeichnet,
welche Information für
die Suche zu verwenden ist. Die Arrayadresse 252 kennzeichnet
den Ort des Nachschlagearrays 264 und kann mit den 16 Adressbits 260 kombiniert
werden, um das Nachschlageelement 266 innerhalb des Nachschlagearrays 264 ausfindig
zu machen. Auf diese Weise wird anfangs auf den Eintrag 266 im
ersten Nachschlagearray 264 zugegriffen und dieser wird
verarbeitet (Schritt 232 in 17).
-
Wie
in 20 gezeigt, enthält dieses Nachschlageelement
im ersten Übermittlungsnachschlagearray 264 eine
Arrayadresse, eine Headerhalbbyteauswahl und Befehlscode. Der Befehlscode
kann die Suchmaschine 108 auf ein anderes Übermittlungsnachschlagearray
richten. Daher muss auf das nächste
nachfolgende Nachschlagearray zugegriffen werden. 19A zeigt ein Beispiel, wobei ein Nachschlageelement 272 im Nachschlagearray 264 eine
Arrayadresse für
ein zweites Nachschlagearray 274 kennzeichnet. Das zweite Nachschlagearray 274 wird
durch das dritte Byte innerhalb der Zieladresse indiziert. Die Nachschlageelemente
im zweiten Nachschlagearray 274 umfassen die Nachschlageelemente 276 und 278 für die Präfixe 1.2.3 beziehungsweise
1.2.4.
-
19A zeigt auch ein Beispiel, in dem ein Nachschlageelement 273 einen
Befehlscode enthält,
der die Suche an ein anderes acht Bit Nachschlagearray 275 richtet.
Das dritte Byte der Zieladresse wird als ein Index in dieses acht
Bit Nachschlagearray 275 verwendet, um ein Nachschlageelement 277 aufzufinden.
Wie weiter oben erwähnt
wurde, sind die Nachschlagearrays als Baum organisiert, wobei die
höchste
Ebene des Baums Verweise auf die nächste Ebene des Baums enthält. Daher
kann es eine wesentliche Anzahl von acht Bit Nachschlagearrays geben,
auf die von dem sechzehn Bit Nachschlagearray in der für die veranschaulichende
Ausführungsform
der vorliegenden Erfindung beschriebenen Implementierung verwiesen
wird.
-
In
der oben beschrieben Beschreibung wurde angenommen, dass die im
ersten Nachschlagearray enthaltene Anweisung im Nachschlageelement
eine Arraynachschlageanweisung für
ein zweites Nachschlagearray ist. In einigen Fällen kann das erste Nachschlageelement
eine gesetzte DANET Anweisung enthalten, die eine vorgegebene DANET
Struktur mit dem IP Datenpaket verbindet. Diese DANET Struktur enthält ein Zielhandle
oder einen Zeiger auf einen Rotor oder ein TOS Array, von denen
ein Ziel handle abgeleitet werden kann. In solch einem Fall ist das
Nachschlageelement mit einem Präfix
verbunden, der mit den ersten 16 Bits der Zieladresse für das IP
Datenpaket übereinstimmt,
und die bekannte Übermittlungsinformation
kann verwendet werden, um das IP Datenpaket zu übermitteln. Solch eine gesetzte
DANET Anweisung kann in jeder der unterschiedlichen Schichten von
Tabellen von Übermittlungsnachschlagearrays
gefunden werden, in Abhängigkeit
davon, wo eine Übereinstimmung
gefunden wird.
-
Mehrfache
Nachschlageelemente können
auf dasselbe Array der nächsten
Ebene verweisen oder können
auf dieselbe DANET Struktur verweisen. 19B zeigt
einen Fall, in dem durch ein Nachschlagearrayelement 279 im
sechzehn Bit Nachschlagearray 264 auf ein acht Bit Nachschlagearray 278 verwiesen
wird. Das acht Bit Nachschlagearray 278 enthält 256 Einträge, die
den 256 Möglichkeiten
von möglichen
Werten entsprechen, die das dritte Byte der Zieladresse annehmen
kann. Die Einträge
im Bereich für
die Präfixe 1.2.128
bis 1.2.255 zeigen alle auf die DANET Struktur 282 als
die zu verwendende DANET Struktur, außer dem Eintrag für 1.2.129.
Der Eintrag für
1.2.129 zeigt an, dass eine andere DANET Struktur 280 verwendet werden
soll. Die DANET Struktur 280 gehört zu Präfix 1.2.129/25, und die DANET
Struktur 28 gehört
zu Präfix 1.2.1.128/17
für. Dieser
Nachzieheffekt stellt eine Optimierung zur Verfügung, so dass keine große Anzahl
von Kopien von einer vorgegebenen DANET Struktur verwendet werden
muss und der Nachzieheffekt auf diese Weise Speicherplatz einspart.
Dieser Ansatz berücksichtigt
auch Fälle,
in denen das übereinstimmende
Präfix eine
Länge zwischen
17 und 23 Bits aufweist.
-
In
Schritt 234 bestimmt die Suchmaschine 238 ob die
Aufgabe ausgeführt
worden ist oder nicht. Die Anweisung, die von der Suchmaschine in
Schritt 232 ausgeführt
wird, informiert die Suchmaschine ob die Aufgabe ausgeführt worden
ist oder nicht. Dort wo eine Übereinstimmung
gefunden wird, wird die DANET Struktur, die durch die gesetzte DANET
Anweisung gesetzt wird, zur Übermittlung
des Datenpakets verwendet und die IP Suche ist vollständig (Schritt 242 in 17).
In anderen Fällen
gibt es kein übereinstimmendes
Präfix
von 16 Bits oder weniger und die Suche muss mit dem zweiten Übermittlungsnachschlagearray
weitergehen, das 28 Elemente enthält und vom
dritten Byte der Zieladresse veranlasst wird.
-
Wenn
die Suchmaschine 108 dazu angewiesen wird, auf das zweite Übermittlungsnachschlagearray zu
sehen, greift die Suchmaschine auf das entsprechende Nachschlageelement
zu, und das zweite Nachschlagearray verarbeitet den Eintrag dann
(Schritt 236 in 17). Dieses
Nachschlageelement kann eine Anweisung derselben Vielfalt enthalten
wie von jenen, die weiter oben in Bezug auf das erste Nachschlagearray erörtert worden
sind. In Schritt 238 bestimmt die Suchmaschine 108,
ob die Aufgabe ausgeführt
worden ist oder nicht. Wenn die Suchmaschine die Aufgabe nicht ausgeführt hat,
weist die Anweisung, die verarbeitet wurde, die Suchmaschine dazu
an, auf das dritte Nachschlagearray zu blicken, um zu bestimmen,
wie das IP Datenpaket zu verarbeiten ist. Dies bedeutet, dass es
kein übereinstimmendes
Präfix
von 24 Bit in der Länge oder
weniger gab. Daher muss auf das dritte und endgültige Übermittlungsnachschlagearray,
das 28 Einträge enthält, zugegriffen werden. Auf
diese Weise greift die Suchmaschine 108 auf ein Nachschlageelement
im dritten Nachschlagearray zu und verarbeitet das Element (Schritt 240 in 17).
Die gekennzeichnete DANET Struktur wird dann dabei verwendet, um
das Datenpaket (Schritt 242 in 17) zu übermitteln.
-
19C zeigt ein Beispiel, in dem von Nachschlageelementen
von allen drei Ebenen der Übermittlungsnachschlagearrays
Gebrauch gemacht wird. Im Besonderen wird ein Nachschlageelement 272 im
16 Bit oder ersten Nachschlagearray 264 verarbei tet und
weist die Suchmaschine 108 dazu an, auf das Nachschlageelement 282 im
zweiten Nachschlagearray 274 zuzugreifen. Das Nachschlageelement 282 enthält eine
Anweisung darüber,
eine Arraysuche über
Nachschlageelement 292 innerhalb des dritten Übermittlungsnachschlagearrays
auszuführen.
Die Anweisung im Nachschlageelement 292 wird ausgeführt, um
die entsprechende DANET Struktur zu setzen, so dass diese mit dem
IP Datenpaket verbunden wird.
-
Wie
weiter oben erwähnt
wurde, muss die DANET Struktur, die zur Verwendung beim Übermitteln
eines IP Datenpakets angewendet wird, nicht direkt das Zielhandle 215 umfassen
(siehe 21), sondern kann vielmehr einen
indirekten Verweis darauf umfassen, das Zielhandle zu erhalten.
Zum Beispiel kann die DANET Struktur 222 ein Feld umfassen,
das einen Zeiger auf ein TOS Array 310 enthält, das
ein Zielhandlearray ist. Das TOS Array 310 wird von einem
TOS Parameter indiziert. Das einem Datenpaket angebotene TOS kann variieren
und kann ausgedrückt
werden als ein TOS Parameterwert. Dieser Wert kann zum Beispiel
aus dem Feld 164 der Headerdaten 153 entnommen
werden. Der TOS Parameterwert wirkt als Index zum TOS Array 310,
um ein Zielhandle für
das IP Datenpaket zu wählen.
Die DANET Struktur 222 kann auch einen Verweis auf einen
Rotor 314 enthalten, der wiederum auf ein Zielhandle 315 verweist.
Das TOS Array 310 kann auch einen Verweis auf einen Rotor 314 statt
einen direkten Verweis auf ein Zielhandle 314 enthalten.
Der Rotor 314 ist eine Struktur, die einen Satz von Zielhandles
enthält,
und in der veranschaulichenden Ausführungsform verwendet wird,
um eine Zusammenfassung von mehrfachen Verbindungen mit niedriger
Geschwindigkeit zu erleichtern, um so eine virtuelle Verbindung
mit hoher Geschwindigkeit darzustellen. Der Rotorschenkel (das heißt, welcher
Eintrag im Rotor verwendet wird) kann programmgesteuert ausgewählt werden,
durch entweder einen zufällig
erzeugten Index oder basierend auf einem Hash der Felder, die den
QOS Datenfluss für
das Datenpaket kennzeichnen.
-
Während die
vorliegende Erfindung mit Bezug auf eine veranschaulichende Ausführungsform
davon beschrieben worden ist, erkennen jene, die in der Technik
ausgebildet sind, dass verschiedene Änderungen in der Form und im
Detail gemacht werden können,
ohne vom beabsichtigten Schutzumfang der vorliegenden Erfindung
abzuweichen, wie dieser in den anhängenden Ansprüchen definiert
ist. Zum Beispiel kann eine unterschiedliche Anzahl von Nachschlagearrays
verwendet werden, und die Nachschlagestrukturen müssen keine
Arrays sein, sondern können
unterschiedlich organisiert sein, wie zum Beispiel in Listen, Tabellen
usw. Weiterhin müssen
die Arrays nicht entlang von Byte-Grenzen indiziert werden. Zum
Beispiel kann das erste Übermittlungsnachschlagearray
durch 15 Bits statt 16 Bits indiziert werden. Außerdem müssen die Arrayelemente keine
Anweisungen umfassen, sondern können
vielmehr Daten oder Zeiger enthalten.