-
TECHNISCHES
SACHGEBIET
-
Die
vorliegende Erfindung bezieht sich allgemein auf Datenverarbeitungssysteme
und, insbesondere, auf ein Weiterleiten und Filtern von Netzwerk-Paketen
in einer vernetzten Computerumgebung.
-
HINTERGRUND
DER ERFINDUNG
-
Computersysteme
sind oftmals in sehr großen
Computer-Netzwerken miteinander verbunden. Die Computersysteme,
verbunden in solchen Netzwerken, kommunizieren miteinander, indem
Informationen über
deren elektronische Verbindungen gesendet werden. Die Netzwerke
können
in verschiedenen Typen von Topologien organisiert sein. 1 stellt
eine solche Topologie dar. Ein Netzwerk 100 weist mehrere
lokale Bereichsnetze (Local Area Network) 101-102 auf,
die mit einem Routing-System 103 verbunden sind. Die Computersysteme
jedes lokalen Bereichsnetzes sind mit der Kommunikations-Verbindung 101a-102a verbunden.
Wenn ein Quellen-Computersystem an einem Local Area Network Informationen
zu einem Bestimmungs-Computersystem an denselben Local Area Network
sendet, präpariert
das Quellen-Computersystem ein Paket, das die Adresse des Bestimmungs-Computersystems
umfasst, und sendet das Paket auf der Kommunikations-Verbindung.
Die anderen Computersysteme auf demselben Local Area Network (d.h.
verbunden mit der Kommunikations-Verbindung) lesen das Paket, das
gesendet wurde. Das Bestimmungs-Computersystem erfasst, dass diese
Adresse in diesem Paket umfasst ist, und es verarbeitet das Paket
entsprechend. Aufgrund geografischer und Geschwindigkeits-Betrachtungen
umfassen Local Area Networks typischerweise nur eine begrenzte Anzahl
von Computersystemen, die sich in enger Nähe zueinander befinden. Zum
Beispiel kann eine Firma mit Büros
an mehreren Orten ein Local Area Network an jedem Ort haben. Allerdings
kann es erforderlich sein, dass Benutzer der Computersysteme Pakete
zu einem anderen ungeachtet davon, mit welchen der Local Area Networks
des Benutzers die Computersysteme verbunden sind, schicken müssen.
-
Um
zu ermöglichen,
dass Pakete von einem Local Area Network zu einem anderen Local
Area Network geschickt werden, sind Routing-Systeme entwickelt worden.
Ein Routing-System ist typischerweise ein dazu zugeordnetes Computersystem
für spezielle Zwecke,
mit dem jedes Local Area Network verbunden ist. Das Routing-System
hält eine
Querreferenz zwischen Adressen des Computersystems und dem Local
Area Network, mit dem jedes Computersystem verbunden ist, aufrecht.
Das Routing-System überwacht
die Pakete, die auf jedem Local Area Network geschickt sind, um
zu erfassen (unter Verwendung der Querreferenz), wenn ein Computersystem
an einem Local Area Network ein Paket zu einem Computersystem auf
einem anderen Local Area Network schickt. Wenn das Routing-System
ein solches Paket erfasst, führt
es dieses Paket auf der Kommunikations-Verbindung für das Local Area Network, mit dem
das Bestimmungs-Computersystem verbunden ist, weiter. Auf diese
Art und Weise bindet das Routing-System jedes der Local Area Networks
in einem gesamten Netzwerk miteinander. Ähnliche Routing-Techniken werden
dazu verwendet, Netzwerke, andere als Local Area Networks, miteinander
zu verbinden. Zum Beispiel können
solche Routing-Techniken auf Wide Area Network und in dem Internet
verwendet werden.
-
Viele
unterschiedliche Protokolle sind entwickelt worden, um zwei Computersystemen
zu ermöglichen,
Informationen auszutauschen. Falls zwei Computersysteme dasselbe
Protokoll unterstützen, dann
können
sie Informationen austauschen. Bestimmte Protokolle sind so zugeschnitten
worden, um den Austausch von bestimmten Typen von Informationen
effektiv zu unterstützen.
Zum Beispiel wurde das Internet Protokoll („IP") durch das Department auf Defense spezifiziert,
um den Austausch von Informationen zwischen geografisch getrennten
Computersystemen zu erleichtern. Das IP spezifiziert eine Bestimmung
in einem Paket-Format, das eine Quelle und Bestimmungs-Computersysteme
für Daten,
um sie auszutauschen, identifiziert, allerdings nicht das Format
der Daten selbst spezifiziert. Verschiedene zusätzliche Protokolle können in
Verbindung mit dem IP verwendet werden, um das Format der Daten
zu spezifizieren. Zum einen ist ein solches zusätzliches Protokoll das Übertragungs-Steuerprotokoll
(Transmission Control Protocol – „TCP"). Das TCP spezifiziert
weiterhin Unterprotokolle, wie beispielsweise das Hyper-Text-Sende-Protokoll
(Hyper-Text Transmission Protocol – „HTTP") und das Datei-Übertragungs-Protokoll
(File Transfer Protocol – „FTP"), die das Format
der Daten des Pakets spezifizieren.
-
2 zeigt
ein Diagramm, das ein typisches Paket, gesendet auf einem Local
Area Network, darstellt. Das Paket umfasst einen Netzwerk-Routing-Header,
gefolgt durch protokoll-spezifische Daten. Der Netzwerk-Routing-Header
kann die Bestimmungs- Computer-Adresse,
die Quellen-Computer-Adresse und die Länge des Pakets umfassen. Die protokoll-spezifischen
Daten umfassen eine Identifikation des Protokolls, und umfassen,
in dem Fall des IP, die IP- Bestimmungs-Adresse, die IP-Quellen-Adresse
und die Länge
des IP-Teils des Pakets. Der Datenteil des Pakets enthält die Unterprotokoll-Identifikation plus
andere Daten des Pakets.
-
Herkömmliche
Routing-Systeme verwenden oftmals einen Caching-Mechanismus, um
das Routing der Pakete zu beschleunigen. Wenn ein Paket empfangen
wird, greift das Routing-System auf seine Querreferenz der Local
Area Networks zu und bestimmt, zu welchem Local Area Network das
Paket weitergeführt
werden soll. Das Routing-System speichert dann diese Routing-Informationen
in einem Cache-Speicher. Wenn darauf folgende Pakete empfangen werden,
prüft das
Routing-System seinen Cache-Speicher und falls die Routing-Informationen
für das
Paket in dem Cache-Speicher vorhanden sind, dann führt das
Routing-System das Paket entsprechend den Informationen in dem Cache-Speicher weiter.
Obwohl eine solche Caching-Technik dabei helfen kann, das Weiterführen von
Paketen zu beschleunigen, werden solche Caching-Techniken nicht durch
Routing-Systeme verwendet, wenn eine Paket-Filterung angewandt wird.
-
Eine
Paket-Filterung wird oftmals durch einen Netzwerk-Administrator
angewandt, um den Typ und die Zeitabstimmung von Paketen, die über das Netzwerk
gesendet werden, zu beschränken.
Zum Beispiel kann ein Netzwerk-Administrator wünschen, Pakete, die durch ein
Computerspiel erzeugt werden, dahingehend zu beschränken, dass
sie über
das Netzwerk während
normaler Geschäftsstunden übertragen
werden. Ein Paket für
ein Computerspiel kann, zum Beispiel, durch eine TCP- Bestimmungs-Adresse
identifizierbar sein, die anzeigt, welche Anwendung auf dem Computersystem,
identifiziert durch die IP-Bestimmungs-Adresse,
diejenige ist, um das Paket zu empfangen. Demzufolge würde der
Netzwerk-Administrator das Routing-System so konfigurieren, um nicht
irgendwelche solche Pakete während
normaler Geschäftsstunden
weiterzuleiten. Auch kann der Netzwerk-Administrator wünschen, Pakete, basierend auf
deren Quellen- und Bestimmungs-Adressen,
herauszufiltern. Zum Beispiel kann eine Firma CEO wünschen,
nur Pakete von bestimmten Quellen-Computersystemen und nicht von
jedem Computersystem auf dem Netzwerk zu empfangen. Wenn eine Filterung
in herkömmlichen
Routing-Systemen angewandt wird, wird ein Caching gesperrt und ein
langsamerer Vorgang einer Prüfung
der Querreferenz-Informationen und der Filter-Informationen wird
für jedes
Paket verwendet.
-
Demzufolge
wird die Verarbeitung nicht nur bei solchen gefilterten Paketen
verlangsamt, sondern es werden auch alle Pakete verlangsamt, da
der Cache-Speicher gesperrt ist.
-
Das
Dokument WO-A-96/35988 offenbart ein Netzwerk-Brücken/Router-System, das einen zentralen
Steuerkasten und eine Vielzahl von Eingangs/Ausgangs-Modulen umfasst.
Die Module umfassen zwei, fünf
oder acht Netzwerk-Verbindungen. Die Module und der zentrale Steuerkasten
sind miteinander durch Busse verbunden. Die Module unterstützen eine
Verarbeitung mit unterschiedlichen Niveaus einer Intelligenz, wobei
einige Module Schnittstellen-Vorrichtungen von einem relativ passiven
Typ sind, andere Module halbintelligente Verarbeitungs-Vorrichtungen
auf einem Zwischen-Niveau sind, und Module einer dritten Art leistungsvollere Verarbeitungs-Module
sind. Diese leistungsstärkeren Verarbeitungs-Module
sind als Karten ausgeführt.
-
Im
Betrieb werden Pakete für
eine Durchsicht nach den Bestimmungen der Pakete analysiert. Pakete
können
an demselben Modul empfangen und versendet werden. In anderen Fällen wird
das empfangene Paket zu dem zentralen Prozessor geschickt. Das bedeutet,
dass bestimmte Klassen von Paketen lokal auf dem Modul weitergeführt werden, während andere
zu der zentralen Maschine weitergeführt werden. Für diesen
Zweck können
Module Cache-Speicher umfassen.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Die
Erfindung schafft ein Verfahren in einem Mehrzweck-Computersystem
zum Weiterleiten eines Netzwerk-Pakets, wie es in dem unabhängigen Anspruch
1 beansprucht ist. Die Erfindung schafft weiterhin ein entsprechendes
Mehrzweck-Computersystem,
wie es in dem unabhängigen
Anspruch 10 beansprucht ist.
-
Bevorzugte
Ausführungsformen
sind in den abhängigen
Ansprüchen
definiert. Gemäß einem
ersten Aspekt der vorliegenden Erfindung wird ein Verfahren für eine schnelle
Weiterleitung eines Netzwerk-Pakets in einem Mehrzweck-Computersystem durchgeführt. „Schnelles
Weiterleiten" bezieht
sich auf eine Netzwerk-Karte, die das Routing durchführt, im
Gegensatz dazu, dass eine Haupt-CPU das Routing durchführt. Das
Computersystem besitzt eine Haupt-Zentral-Verarbeitungseinheit und
eine Netzwerk-Karte zum schnittstellenmäßigen Verbinden des Computersystems
mit der Vielzahl von Netzwerken. Das Netzwerk-Paket wird in der
Netzwerk-Karte empfangen und wird zu einem ausgewählten einen der
Netzwerke zugeführt.
Das empfangene Netzwerk-Paket wird durch die Netzwerk-Karte analysiert, um
zu bestimmen, ob das Netzwerk-Paket schnell zu seinem Bestimmungs-Netzwerk
durch die Netzwerk-Karte weitergeleitet werden sollte, oder, alternativ,
durch die Haupt-CPU weitergeführt
werden sollte. Wenn bestimmt ist, dass ein Netzwerk-Paket schnell
zu dem Bestimmungs-Netzwerk durch die Netzwerk-Karte weitergeführt werden soll, wird es ohne
Einwendung der Haupt-CPU schnell weitergeleitet.
-
Gemäß einem
anderen Aspekt der vorliegenden Erfindung wird eine Netzwerk-Karte für ein schnittstellenmäßiges Verbinden
eines Computersystems mit mehreren Netzwerken geschaffen. Die Netzwerk-Karte
umfasst einen schnell weiterleitenden Mechanismus und mehrere Ports
für ein
schnittstellenmäßiges Verbinden
mit der Vielzahl der Netzwerke. Der schnell weiterleitende Mechanismus
leitet schnell ein Netzwerk-Paket, das in einer Netzwerk-Karte empfangen
ist, zu einem Bestimmungs-Netzwerk ohne Intervention durch die Haupt-CPU
des Computersystems weiter.
-
Gemäß einem
weiteren Aspekt der vorliegenden Erfindung kann ein schnelles Weiterleiten und
Filtern gleichzeitig aktiv sein. Insbesondere wird ein Verfahren
zum Verarbeiten von Netzwerk-Paketen, die an einer Netzwerk-Karte
empfangen sind, an einem Computersystem praktiziert. Ein schnelles Weiterleiten
ist so aktiv, dass ausgewählte
Netzwerk-Pakete, die in der Netzwerk-Karte empfangen sind, schnell
zu zumindest einem Bestimmungs-Netzwerk durch die Netzwerk-Karte
weitergeleitet werden, und zwar ohne Intervention der Haupt-CPU.
Eine Filterung ist gleichzeitig aktiv mit der schnellen Weiterleitung,
so dass die Haupt-CPU ein Filtern bei zumindest einigen der Netzwerk-Paketen,
empfangen in der Netzwerk-Karte, anwendet, um zu bestimmen, ob die
Netzwerk-Pakete anzunehmen oder abzuweisen sind.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
1 stellt
eine Topologie von miteinander verbundenen Netzwerken dar.
-
2 zeigt
ein Diagramm, das ein typisches Paket, geschickt auf einem Local
Area Network, darstellt.
-
3 zeigt
ein Blockdiagramm eines Mehrzweck-Computersystems 10, auf
dem das schnelle Weiterleitungssystem arbeitet.
-
4 zeigt
ein Blockdiagramm, das Komponenten der Netzwerk-Karte in größerem Detail
darstellt.
-
5A-5D stellen
die Inhalte des schnell weiterleitenden Cache-Speichers dar, wenn Pakete
empfangen und gesendet werden.
-
6A-6E zeigen
die Felder in einer Anzahl von unterschiedlichen Typen von Paketen.
-
7 zeigt
ein Flussdiagramm des Programms der Netzwerk-Karte, die ein Paket
von dem Netzwerk empfängt.
-
8 zeigt
ein Flussdiagramm eines Programms für die Netzwerk-Karte, um ein
Paket von dem NDIS-Treiber zu empfangen.
-
9 zeigt
ein Flussdiagramm eines Programms der Betriebssysteme, um ein Paket,
das von dem NDIS-Treiber empfangen wird, zu verarbeiten.
-
10 zeigt
ein Flussdiagramm eines Betriebssystem-Programms, um die Routing-Tabellen zu
aktualisieren.
-
DETAILLIERTE
BESCHREIBUNG DER ERFINDUNG
-
Die
vorliegende Erfindung schafft ein Verfahren und ein System für ein Routing
bzw. ein Weiterleiten von Paketen unter Verwendung eines Caching-Mechanismus,
gerade dann, wenn ein Filtern bei einigen der Pakete angewandt wird.
Das Routing-System der vorliegenden Erfindung, auch bezeichnet als
ein schnelles Weiterleitungssystem, wird auf einem Mehrzweck-Computersystem
in einer Art und Weise ausgeführt,
die ein Caching von Routing-Informationen ermöglicht, und in einer Art und Weise,
die das Overhead, das der Haupt-CPU des Computersystems auferlegt
ist, minimiert. Demzufolge ermöglicht
das schnelle Weiterleitungssystem nicht nur ein Caching, wenn gefiltert
wird, sondern ermöglicht
auch dem Mehrzweck-Computersystem, einen Caching-Mechanismus einzusetzen.
-
Das
schnell weiterleitende System wird nachfolgend in Bezug auf eine
Ausfüh
rungsform beschrieben, die Internet-Protokoll-(IP)-Pakete ebenso wie
Internet-Protocol-Extented
(IPX) Pakete weiterleitet. Allerdings werden Fachleute auf dem betreffenden
Fachgebiet erkennen, dass die vorliegende Erfindung nicht auf Ausführungsformen
beschränkt ist,
die nur mit diesen Typen von Netzwerk-Paketen arbeiten; im Gegensatz
dazu kann die vorliegende Erfindung auch in Verbindung mit anderen
Typen von Netzwerk-Paketen
praktiziert werden.
-
3 zeigt
ein Blockdiagramm eines Mehrzweck-Computersystems 10, auf
dem das schnell weiterleitende System arbeitet. Das Computersystem
ist mit einer Anzahl von unterschiedlichen Computer-Netzwerken 20 verbunden.
Das Computersystem umfasst eine zentrale Verarbeitungseinheit (CPU) 12,
die mit einer Netzwerk-Karte 14 über einen Bus 16 verbunden
ist. Die Netzwerk-Karte umfasst mehrere Ports, die als Netzwerk-Schnittstellen-Verbindungen
(Network Interface Connections – „NICs") bezeichnet werden.
Jede NIC ist mit einer Kommunikations-Verbindung eines Netzwerks
verbunden und kann auch dazu verwendet werden, Pakete auf dem Netzwerk
zu senden und zu empfangen. Typische Typen von Netzwerk-Karten umfassen
802.3, DIX, TR, Fast Ethernet und FDDI Karten. Das Computersystem
läuft auf
einem Betriebssystem 18, wie beispielsweise einem Netzwerk-Betriebssystem.
Zu Zwecken der Diskussion nachfolgend wird angenommen, dass das
Betriebssystem das Microsoft® Windows® NT
Netzwerk-Betriebssystem, vertrieben durch Microsoft Corporation,
Redmond, Washington, ist. Das Betriebssystem umfasst eine Anzahl
von unterschiedlichen Komponenten: eine IP-Filter-Komponente 22 zum
Durchführen
einer Filterung der IP-Netzwerk-Pakete und eine IP-Weiterleitungs-Komponente 24 zum
Weiterleiten von IP-Netzwerk-Paketen. Das Betriebssystem umfasst
auch eine IPX-Filter-Komponente 26 und eine IPX-Weiterleitungs-Komponente 28,
um IPX-Netzwerk-Pakete weiterzuleiten. Das Betriebssystem besitzt
auch eine Netzwerk-Treiber-Schnittstellen-Spezifikation-(NDIS)-Treiber-Komponente 30.
Die NDIS-Treiber-Komponente
bildet eine Schnittstelle zwischen dem Betriebssystem und der Netzwerk-Karte. Das Betriebssystem
ruft Dienste des NDIS-Treibers auf, um Netzwerk-Pakete zu senden
und zu empfangen.
-
4 zeigt
ein Blockdiagramm, das Komponenten der Netzwerk-Karte in weiterem
Detail darstellt. Die Netzwerk-Karte umfasst Komponenten zum schnittstellenmäßigen Verbinden
des Routing-Systems mit einer Anzahl von unterschiedlichen Computer-Netzwerken. Die Netzwerk-Karte
umfasst eine Anzahl von NICs. Diese NICs sind als NIC1, NIC2, NIC3
und NIC4 bezeichnet. Die Netzwerk-Karte umfasst auch einen Mikroprozessor 32,
einen Ethernet-Chip 34 und einen Speicher 36,
wie beispielsweise einen Random Access Memory (RAM). Der Speicher
enthält
einen schnell weiterleitenden Cache-Speicher 76 und einen
Cache-Speicher 80 für ankommende
Pakete. Obwohl ein schnell weiterleitender Cache-Speicher und ein
Cache-Speicher für ankommende
Pakete dargestellt sind, werden Fachleute auf dem betreffenden Fachgebiet
erkennen, dass separate Versionen dieser Cache-Speicher für IP-Netzwerk-Pakete
und IPX-Netzwerk-Pakete verwendet werden können. Der schnell weiterleitende Cache-Speicher
hält Informationen,
die das schnelle Weiterleiten von Netzwerk-Paketen durch die Netzwerk-Karte
erleichtern. Wie in weiterem Detail nachfolgend diskutiert werden
wird, dient der schnell weiterleitende Cache als eine Durchsichts-Tabelle,
mit der ankommende Netzwerk-Pakete verglichen werden können, um
zu bestimmen, ob sie durch die Netzwerk-Karte schnell weitergeleitet
werden sollen.
-
In
einer alternativen Ausführungsform,
in der mehrere Netzwerk-Karten eingesetzt sind, können die
Cache-Speicher in einem gemeinsam geteilten Speicher an dem Computersystem 10 gespeichert sein.
Wenn eine Netzwerk-Karte ein Paket empfängt, greift sie auf den gemeinsam
geteilten Speicher zu, um auf den schnell weiterleitenden Cache-Speicher zuzugreifen,
ohne die Haupt-CPU zu unterbrechen. Auch besitzt jede Netzwerk-Karte einen Zugang
zu einer Auflistung zwischen den Local Area Networks, die mit jeder
Netzwerk-Karte verbunden sind. Auf diese Art und Weise kann jede
Netzwerk-Karte Pakete zu Local Area Networks, verbunden mit anderen Netzwerk-Karten,
weiterleiten.
-
Die 5A-5D stellen
die Inhalte des schnell weiterleitenden Cache-Speichers dar, wenn Pakete
empfangen und gesendet werden. Der Cache-Speicher enthält eine
Reihe für
jeden eindeutigen Paket-Identifizierer der Pakete, die schnell weitergeleitet
werden sollen. Jede Reihe enthält
einen Paket-Identifizierer, der Pakete identifiziert, die schnell
weitergeleitet werden sollen, eine Netzwerk-Adresse, die das Bestimmungs-Computersystem anzeigt,
und ein einrahmendes Feld, das anzeigt, dass der Typ einer Rahmung
bzw. eines Framing, der auf das Paket angewandt werden soll, anzeigt,
und eine NIC-Port-Nummer, die den Port der Netzwerk-Karte identifiziert, über den
die Pakete mit diesem Paket-Identifizierer gesendet werden sollen. Der
Paket-Identifizierer ist eine Kombination von Feldern von dem Paket,
das Pakete identifiziert, die schnell weitergeleitet werden sollen,
und zwar in derselben Art und Weise. Wie durch 5A dargestellt ist,
ist der schnell weiterleitende Cache-Speicher zu Anfang leer. Wenn
die Netzwerk-Karte ein Paket empfängt, prüft sie den Cache-Speicher,
um zu bestimmen, ob eine Reihe mit dem entsprechenden Paket-Identifizierer
in dem Cache-Speicher vorhanden ist. In diesem Fall sind, da der
Cache-Speicher leer ist, keine Reihen vorhanden, und die Netzwerk-Karte leitet
das Paket über
den NDIS-Treiber zu dem Betriebssystem weiter. Die Netzwerk-Karte
speichert auch das Paket in dem Cache-Speicher für ankommende Pakete. Wenn das
Betriebssystem das Paket empfängt,
bestimmt es, ob irgendeine Filterung Anwendung findet und ob das
Paket auf einem anderen Netzwerk weitergeleitet werden soll. Falls
keine Filterung Anwendung findet und das Paket weitergeleitet werden
soll, dann führt
das Betriebssystem das Paket zu der Netzwerk-Karte über den
NDIS-Treiber zum Weiterleiten auf dem geeigneten Local Area Network
zurück.
Wenn die Netzwerk-Karte das Paket empfängt, speichert sie einen Eintritt
in den schnell weiterleitenden Cache-Speicher, wie dies in 5B dargestellt
ist. In diesem Fall zeigt der Paket-Identifizierer „<A5, B2, TCP, 14,
25>" an, dass die IP-Quelle Adresse „A5" ist, die IP-Bestimmung
die Adresse „B2" ist, das Protokoll „TCP" ist, die TCP-Quelle
Port 14 ist und die TCP-Bestimmung Port 25 ist. Die Netzwerk-Adresse,
zu der die Pakete mit diesem Paket-Identifizierer weitergeleitet
werden sollen, ist „E7". Das abgehende Paket
muss entsprechend zu dem 802.3 Protokoll gerahmt werden und die
Pakete sollten über
die NIC-Port-Zahl 3 geführt
werden. Die Netzwerk-Karte sucht dann das Paket von dem Cache-Speicher
für ankommende
Pakete auf, präpariert das
Paket für
eine Weiterleitung und sendet das Paket über den NIC-Port. Wenn die
Netzwerk-Karte das nächste
Paket mit diesem Paket-Identifizierer empfängt, erzeugt sie den Paket-Identifizierer
und bestimmt, ob eine Reihe mit diesem Paket-Identifizierer in dem schnell weiterleitenden
Cache-Speicher vorhanden ist. Falls dies der Fall ist, sucht die
Netzwerk-Karte die Reihe auf und aktualisiert die Netzwerk-Adresse
für das
Paket, stellt die Rahmung entsprechend zu dem 802.3 Protokoll ein
und sendet das Paket auf dem NIC-Port Nummer 3. Als Teil einer Verarbeitung
dekrementiert die Netzwerk-Karte auch das Time-To-Live Zeichen des
Pakets. Das Time-To-Live Zeichen wird zu Anfang auf die Zahl von Malen
eingestellt, für
die das Paket auf diese Art und Weise zu dem Bestimmungsort weitergeleitet
werden kann. Falls das Time-To-Live Zeichen unterhalb von Null absinkt,
dann kann das Paket nicht erneut weitergeleitet werden, und die
Netzwerk-Karte sondert das Paket aus, indem es nicht weitergeleitet
wird. Auch sondert, falls die Prüfsumme
in dem Paket nicht korrekt ist, die Netzwerk-Karte das Paket aus.
-
Schließlich wird
die Netzwerk-Karte ein Paket mit einer unterschiedlichen Paket-Identifikation empfangen.
Die Netzwerk-Karte erzeugt einen Paket-Identifizierer für dieses
Paket und bestimmt, dass dort keine Reihe in dem Cache für diesen
Paket-Identifizierer vorhanden ist. Die Netzwerk-Karte leitet dann
das Paket zu dem Betriebssystem weiter. Das Betriebssystem wendet
die geeignete Filterung an. In diesem Fall bestimmt das Betriebssystem, dass
das Paket nicht weitergeleitet werden sollte. Demzufolge leitet
das Betriebssystem nicht das Paket zu der Netzwerk-Karte weiter.
Die Netzwerk-Karte aktualisiert demzufolge nicht den Cache-Speicher, um
eine Reihe für
den Paket-Identifizierer zu erhalten. Demzufolge erzeugt, wenn das
nächste
Paket mit diesem Paket-Identifizierer empfangen wird, die Netzwerk-Karte
den Paket-Identifizierer und bestimmt, dass dort kei ne Reihe in
dem Cache-Speicher für
diesen Paket-Identifizierer vorhanden ist, und schickt das Paket
zu dem Betriebssystem. 5C stellt die Inhalte des Cache-Speichers
dar, nachdem ein Paket für
ein anderes Paket empfangen worden ist, und der schnell weiterleitende
Cache-Speicher für
dieses Paket aktualisiert worden ist. In diesem Fall ist der Paket-Identifizierer „<E1, B2, UDP, 36,
97>", die Netzwerk-Cache-Adresse
ist „A5", das Framing ist
Ethernet und die NIC-Port-Adresse ist 1. Gelegentlich kann das Betriebssystem
Anforderungen empfangen, um seine Routing-Informationen zu ändern. Zum
Beispiel kann ein Computersystem von einem Local Area Network entfernt
werden und kann in einem anderen Local Area Network installiert werden.
In einem solchen Fall müssten
Pakete, weitergeführt
zu diesem Computersystem, über
einen unterschiedlichen NIC-Port gesendet werden. Wenn das Betriebssystem
seine Routing-Informationen aktualisiert, weist es auch die Netzwerk-Karte
an, ihren schnell weiterleitenden Cache-Speicher zu löschen, da
die Informationen in dem Cache-Speicher nicht länger gültig sein können: Die Netzwerk-Karte löscht ihren
Cache-Speicher durch Entfernen aller Eingänge von ihrem Cache-Speicher,
wie dies in 5D dargestellt ist.
-
In
bestimmten Situationen kann das Betriebssystem spezifische Informationen
aktualisieren müssen,
die nicht den gesamten, schnell weiterleitenden Cache-Speicher beeinflussen.
In einer solchen Situation kann das Betriebssystem die Netzwerk-Karte
anweisen, nur den Teil ihres schnell weiterleitenden Cache-Speichers
zu löschen,
der sich auf den aktualisierten Teil der Routing-Informationen bezieht.
Zum Beispiel kann das Betriebssystem eine Auflistung von IP-Adressen
zu Ethernet-Adressen aufrechterhalten. Falls ein Paket nicht zu
einer bestimmten Ethernet-Adresse für eine bestimmte Zeitperiode
geschickt wird, kann das Betriebssystem die Auflistungen, die sich
auf diese Ethernet-Adresse
beziehen, löschen,
und kann die Netzwerk-Karte anweisen, nur Teile des schnell weiterleitenden
Cache-Speichers, die sich auf diese Ethernet-Adresse beziehen, zu
löschen.
Auf diese Art und Weise kann die Netzwerk-Karte ein schnelles Weiterleiten
von Paketen basierend auf den Bereichen des Cache-Speichers, die
nicht gelöscht
sind, fortführen.
-
Die 6A-6E zeigen
die relevanten Felder einer Zahl von unterschiedlichen Typen von Paketen
an. 6A zeigt die Felder, die bei einer schnellen Weiterleitung
von einem IP-Paket-Header 38 verwendet werden. Ein Offset
12 innerhalb des IP-Paket-Headers 38 ist
ein Quellen-Adressen-Feld 40, das eine Adresse für die Quelle
hält, von der
das Paket stammte. An dem Offset 16 ist ein Bestimmungs-Adressen-Feld 42 vorhanden,
das eine Adresse für
die Bestimmung hält,
zu der das Paket hin bestimmt ist. Das Protokoll-Feld 44 ist
ein Offset 9 innerhalb des IP-Paket-Headers 38 und zeigt
ein Protokoll an, wie beispielsweise TCP. 6B stellt Felder
eines TCP-Paket-Headers 44 dar. Ein Quellen-Port-Feld 46 wird
bei einem Offset von 0 vorgefunden und hält einen Wert, der den Quellen-Port
der Anwendung, die das Paket schickte, identifiziert. Ein Bestimmungs-Port-Feld 48 wird
bei einem Offset 2 vorgefunden und hält einen Wert, der den Bestimmungs-Port
der Anwendung identifiziert, zu der das Paket geschickt wird. 6C zeigt
einen Bereich eines UPD-Paket-Headers 50, der ein Quellen-Port-Feld 52 bei
einem Offset von 0 und ein Bestimmungs-Port-Feld 54 bei
einem Offset von 2 umfasst. 6D zeigt
ein ICMP-Paket 56, das ein Typ-Feld 58 bei einem
Offset von 0 und ein Code-Feld 60 bei einem Offset von
1 hält.
Als letztes zeigt 6E einen IPX-Paket-Header 62,
der ein Bestimmungs-Adressen-Feld 66 bei einem Offset,
ein Quellen-Adressen-Feld 68 bei einem Offset 18 und ein
Paket-Feld 64 bei einem Offset 5 besitzt.
-
Manchmal
kann ein Paket selbst in Paket-Fragmente unterteilt werden, die
einzeln gesendet werden. Wenn die Paket-Fragmente empfangen werden,
werden sie zu dem Paket wieder zusammengestellt. Allerdings enthalten
Paket-Fragmente nicht alle Informationen über den Paket-Identifizierer, der
verwendet wird, um eindeutig Informationen in dem schnell weiterleitenden
Cache-Speicher zu identifizieren. Im Gegensatz dazu enthält ein Paket-Fragment
ein fragmentiertes Zeichen und ein Identifizierer-Feld. Wenn ein
Paket fragmentiert ist, wird ein eindeutiger Paket-Identifizierer
in jedem Paket-Fragment platziert, und das fragmentierte Zeichen
wird eingestellt. Wenn ein fragmentiertes Paket empfangen wird,
prüft die
Netzwerk-Karte zuerst, ob der Identifizierer in dem Fragment-Cache-Speicher vorhanden
ist. Falls dies der Fall ist, führt
die Netzwerk-Karte schnell das Paket weiter, auch führt sie das
Fragment zu dem Betriebssystem weiter und fügt es zu dem Fragment-Cache-Speicher
hinzu, wenn es gesendet wird. Auf diese Art und Weise kann die Netzwerk-Karte
schnell Paket-Fragmente weiterleiten.
-
Die 7-10 zeigen
Flussdiagramme, die die Verarbeitung darstellen, die durch die Netzwerk-Karte
und das Betriebssystem, wenn Pakete verarbeitet werden, durchgeführt wird. 7 zeigt ein
Flussdiagramm des Programms der Netzwerk-Karte, die ein Paket von
dem Netzwerk empfängt.
Dieses Programm empfängt
Pakete und bestimmt, ob schnell weiterleitende Informationen für das Paket
in dem schnell weiterleitenden Cache- Speicher vorhanden sind. Falls die schnell
weiterleitenden Informationen in dem Cache-Speicher vorhanden sind, leitet das
Programm das Paket schnell weiter, ansonsten schickt das Programm
das Paket zu dem NDIS-Treiber. In dem Schritt 701 extrahiert
das Programm den Paket-Identifizierer von dem empfangenen Netzwerk-Paket.
Im Schritt 702 fährt, falls
eine Reihe in dem schnell weiterleitenden Cache-Speicher zu dem
extrahierten Paket-Identifizierer passt, dann das Programm am Schritt 704 fort, auch
führt das
Programm an dem Schritt 703 fort. In dem Schritt 703 speichert
das Programm das Paket in dem ankommenden Cache-Speicher und leitet
das Paket zu dem NDIS-Treiber weiter, der das Paket weiter zu dem
Betriebssystem weiterleitet und beendet. In den Schritten 704-706 leitet
das Programm das Paket schnell weiter. Im Schritt 705 aktualisiert das
Programm die Netzwerk-Quelle und die Bestimmungs-Adresse in dem
Paket mit den Informationen von dem schnell weiterleitenden Cache-Speicher.
In dem Schritt 706 stellt das Programm das Framing des
Pakets, falls notwendig, ein. In dem Schritt 707 sendet
das Programm das aktualisierte Paket zu dem NIC-Port, angegeben
in dem Cache-Speicher, und endet. Zusätzlich aktualisiert das Programm
das Time-To-Live-Feld in dem Paket. Falls der Wert des Time-To-Live-Felds
unterhalb von Null abfällt,
dann sondert das Programm das Paket aus. Das Programm aktualisiert
auch die Prüfsumme
des Pakets so, wie dies geeignet ist. Zum Beispiel berechnet das Programm
erneut die IP-Header-Prüfsumme
basierend auf dem aktualisierten Wert des Time-To-Live-Felds. Falls
irgendwelche Options-Felder
in dem Paket eingestellt sind, dann schickt das Programm das Paket
zu dem Betriebssystem, im Gegensatz dazu, das Paket schnell weiterzuleiten.
Das Options-Feld zeigt an, dass eine weitere Verarbeitung benötigt wird,
bevor das Paket weitergeleitet werden kann. Falls aus irgendeinem
Grund die Netzwerk-Karte nicht das Paket verarbeiten kann, schickt sie
das Paket zu dem Betriebssystem für eine weitere Verarbeitung.
Zum Beispiel leitet, falls die IP-Header-Prüfsumme nicht korrekt ist, oder
das IP-Header-Time-To-Live
Null ist, die Netzwerk-Karte das Paket zu dem Betriebssystem weiter.
-
8 zeigt
ein Flussdiagramm eines Programms für die Netzwerk-Karte, um ein
Paket von dem NDIS-Treiber zu empfangen. Wenn das Programm ein Paket
von dem NDIS-Treiber empfängt, aktualisiert
es den schnell weiterleitenden Cache-Speicher entsprechend und leitet
das Paket weiter. Im Schritt 801 erzeugt das Programm eine
Reihe und fügt
die Reihe zu dem schnell weiterleitenden Cache-Speicher hinzu. Im
Schritt 802 sucht das Programm das Paket von dem Cache-Speicher
für die ankommenden
Pakete auf und stellt das Framing des Pakets so ein, wie dies notwendig
ist. Im Schritt 803 sendet das Programm das Paket zu dem
NIC-Port, angezeigt durch die Reihe, und endet.
-
9 zeigt
ein Flussdiagramm eines Programms der Betriebssysteme, um ein Paket
zu verarbeiten, das von dem NDIS-Treiber empfangen wird. Dieses
Programm prüft
seine verschiedenen Filter-Kriterien, um zu bestimmen, ob ein Paket
auszusondern ist. Falls das Paket nicht ausgesondert ist, dann unterdrückt das
Programm das Weiterleiten des Pakets zu der Netzwerk-Karte. Im Schritt 901 wendet das
Programm die verschiedenen Filter-Kriterien auf das empfangene Paket
an. Die Filter-Kriterien können
ein Aussondern von Paketen, die zu einer bestimmten IP-Bestimmungs-Adresse
geschickt sind, oder ein Aussondern von Paketen, die zu einem bestimmten
TCP-Bestimmungs-Port gerichtet sind, umfassen. Die Filter-Informationen
werden typischerweise durch einen Netzwerk-Administrator gewartet. Im Schritt 902 endet,
falls das empfangene Paket herausgefiltert worden ist, dann das
Programm, auch endet das Programm am Schritt 903. Durch
Beenden bewirkt, wenn das Paket herausgefiltert ist, das Programm
das Aussondern des Pakets. Im Schritt 903 sucht das Programm
die neue Netzwerk-Quelle und Bestimmungs-Adressen für das Paket von den Routing-Tabellen
auf. Im Schritt 905 sendet das Programm das Paket zu dem
NDIS-Treiber, der das Paket zu der Netzwerk-Karte weiterleitet.
Das Programm ist dann erledigt.
-
10 zeigt
ein Flussdiagramm eines Betriebssystem-Programms, um die Routing-Tabellen zu
aktualisieren. Das Programm empfängt
neue Routing-Anweisungen, aktualisiert seine Routing-Tabelle und
weist den NDIS-Treiber darauf hin, den schnell weiterleitenden Cache-Speicher
zu löschen.
Der NDIS-Treiber weist daraufhin die Netzwerk-Karte an, ihren schnell weiterleitenden
Cache-Speicher zu löschen.
-
Während die
vorliegende Erfindung unter Bezugnahme auf eine bevorzugte Ausführungsform davon
beschrieben worden ist, werden Fachleute auf dem betreffenden Fachgebiet
erkennen, dass verschiedene Änderungen
der Form und des Details vorgenommen werden können, ohne den vorgesehenen
Schutzumfang der vorliegenden Erfindung, wie er in den beigefügten Ansprüchen definiert
ist, zu verlassen. Zum Beispiel können die schnell weiterleitenden
Techniken der vorliegenden Erfindung alternativ durch den NDIS-Treiber, im Gegensatz
zu der Netzwerk-Karte, ausgeführt
werden. Unter einer solchen Ausführung
können
Standard-Netzwerk-Karten ohne Modifikation verwendet werden. Der
NDIS-Treiber würde
den schnell weiterleitenden Cache-Speicher aufrechterhalten und
das schnelle Weiterleiten von Paketen steuern. Wenn der NDIS-Treiber
ein Paket von einer Netzwerk-Karte empfängt, würde er seinen Cache-Speicher
prüfen,
um zu bestimmen, ob das Paket schnell weitergeleitet werden sollte.
Falls das Paket schnell weitergeleitet werden soll, würde der NDIS-Treiber
die geeignete Netzwerk-Karte so anweisen, das Paket weiterzuleiten.
Ansonsten schickt der NDIS-Treiber das Paket zu dem Betriebssystem. Auch
können,
obwohl die Techniken der Erfindung dahingehend beschrieben sind,
dass sie als Software ausgeführt
sind, die auf eine Netzwerk-Karte mit einem Prozessor läuft, die
Techniken auch fest verdrahtet sein unter Verwendung von logischen
Schaltungen, im Gegensatz zu der Verwendung einer Software. Auch
können
unterschiedliche Felder von den Paketen ausgewählt werden, um einen Paket-Identifizierer
für Pakete
zu bilden, die dazu in Bezug stehen, das bedeutet um schnell in
derselben Art und Weise weitergeleitet zu werden.