-
HINTERGRUND
-
Gebiet der
Erfindung
-
Die
vorliegende Erfindung bezieht sich auf Computernetze und auf verteilte
Rechensysteme. Insbesondere bezieht sich die vorliegende Erfindung auf
ein Verfahren und auf eine Vorrichtung zum Weiterleiten eines Paketfragments
zu einem Zielknoten, wobei der Zielknoten anhand von Informationen
in einem ersten Fragment des Pakets bestimmt wird.
-
Verwandtes
Gebiet
-
Das
jüngste
heftige Wachstum des elektronischen Handels hat zu einer starken
Zunahme von Web-Sites im Internet geführt, die so verschiedenartige
Produkte wie Spielzeug, Bücher
und Kraftfahrzeuge verkaufen und Dienste wie etwa Versicherung und
Aktienhandel bereitstellen. Millionen von Verbrauchern surfen derzeit
durch Web-Sites, um Informationen zu sammeln, Käufe vorzunehmen oder lediglich
zur Unterhaltung.
-
Der
zunehmende Verkehr im Internet übt eine
gewaltige Last auf die Server aus, die Web-Sites hosten. Einige
beliebte Web-Sites empfangen über eine
Million "Treffer" pro Tag. Um so viel
Verkehr zu verarbeiten, ohne die Web-Surfer störenden Verzögerungen beim Wiedergewinnen
von Web-Seiten auszusetzen, ist es vorteilhaft, den Verkehr auf
mehrere Server-Knoten zu verteilen, so dass die mehreren Server-Knoten
parallel arbeiten können,
um den Verkehr zu verarbeiten.
-
Beim
Entwurf eines solchen Systems zur Verteilung des Verkehrs auf mehrere
Server-Knoten sind zahlreiche Eigenschaften erwünscht. Es ist erwünscht, dass
ein solches System effizient ist, damit es mit einer minimalen Reaktionszeit
so viel Verkehr wie möglich
versorgt. Es ist erwünscht,
dass ein solches System "skalierbar" ist, so dass zusätzliche
Server-Knoten hinzugefügt
werden können,
während
der Bedarf für
einen Dienst steigt. Dabei ist es wichtig, dass sichergestellt ist,
dass die Reaktionszeit nicht zunimmt.
-
Ein
solches System ist aus JP11027320 bekannt, wo TCP-Informationen,
somit im TCP-Segment, anhand einer Hash-Codierung der Informationen über eine
virtuelle Verbindung an Server weitergeleitet werden. In dem Verfahren,
in dem computerlesbaren Speicher und in der Vorrichtung, die durch dieses
Dokument offenbart sind, erscheint keine Bestimmung eines Zielknotens
anhand von Informationen in einem ersten Fragment eines Pakets.
-
Ein
System, das Verkehr auf mehrere Server-Knoten verteilt, führt typisch
eine Anzahl von Aufgaben aus. Beim Empfang eines Pakets, das Daten von
einem anderen Computersystem enthält, schlägt das System einen Dienst
nach, zu dem das Paket gerichtet ist. Wenn der Dienst festgestellt
worden ist, teilt das System die an der Bereitstellung des Dienstes
beteiligten Arbeitslasten auf die Server-Knoten auf, die den Dienst bereitstellen
können.
-
Aus
Effizienzgründen
ist es wichtig sicherzustellen, dass Pakete, die von demselben Client
ausgehen, zu demselben Server gerichtet werden. Diese Anforderung
wird durch die Tatsache verkompliziert, dass ein Paket zur Übertragung über ein
Netz typisch in eine Anzahl von Fragmenten geteilt wird; diese Fragmente
werden bei dem Server-Knoten erneut zusammengefügt, um das ursprüngliche
Paket wieder herzustellen. Leider ist die Client-Adresse (die zum
Identifizieren des Clients verwendet werden kann) typisch in einem
Kopfsatz des Pakets gespeichert, der nur in dem ersten Fragment
des Pakets erscheint. Darüber
hinaus können
die Fragmente eines Pakets in irgendeiner Reihenfolge empfangen
werden. Somit muss ein Weiterleitungsmechanismus irgendwie verfolgen,
wie Paketfragmente Zielknoten zugeordnet sind.
-
Dies
kann dadurch erfolgen, dass ein Paket bei dem Weiterleitungsknoten
erneut zusammengefügt
wird, um die Client-Adresse zu erhalten. Dies ermöglicht,
dass der Weiterleitungsknoten bestimmt, wohin das Paket zu senden
ist. Allerdings kann das Weiterleiten von Paketfragmenten auf diese
Seite sehr ineffizient sein, da das Paket wahrscheinlich zur Übertragung
von dem Weiterleitungsknoten zu dem Zielknoten erneut in Fragmente
geteilt wird.
-
Es
werden ein Verfahren und eine Vorrichtung zum Weiterleiten von Paketfragmenten
zu einem Zielknoten benötigt,
wobei der Zielknoten aus einem ersten Fragment eines Pakets bestimmt
werden kann.
-
ZUSAMMENFASSUNG
-
Eine
Ausführungsform
der vorliegenden Erfindung schafft ein System, das das Weiterleiten
von Fragmenten eines von einem Quellknoten empfangenen Pakets zu
einem Zielknoten erleichtert, wobei der Zielknoten anhand von Informationen
in einem ersten Fragment des Pakets bestimmt wird. Das System arbeitet
so, dass es bei einem Schnittstellenknoten wenigstens ein Fragment
des Pakets von dem Quellknoten empfängt. Das System verwendet einen Paketidentifizierer
aus dem Fragment, um in einer Paketweiterleitungs-Datenstruktur
nach einem Eintrag für
das Paket zu suchen. Falls dieser Eintrag den Zielknoten spezifiziert,
leitet das System das Fragment zu dem Zielknoten weiter. Falls der
Eintrag den Zielknoten nicht spezifiziert und falls das Fragment nicht
das erste Fragment des Pakets ist, verknüpft das System das Fragment
mit dem Eintrag für
das Paket in der Paketweiterleitungs-Datenstruktur, so dass das
Fragment zu dem Zielknoten weitergeleitet werden kann, wenn der
Zielknoten später
bekannt wird.
-
Falls
der Eintrag für
das Paket den Zielknoten nicht spezifiziert und falls das Fragment
das erste Fragment des Pakets ist, führt das System in einer Ausführungsform
der vorliegenden Erfindung Folgendes aus: Bestimmen des Zielknotens
aus den in dem ersten Fragment enthaltenen Informationen; Initialisieren
des Eintrags für
das Paket, um den Zielknoten zu spezifizieren; und Weiterleiten
irgendwelcher mit dem Eintrag verknüpfter Fragmente sowie des ersten
Fragments zu dem Zielknoten.
-
Falls
ein Eintrag für
das Paket in der Paketweiterleitungs-Datenstruktur nicht vorhanden
ist, erzeugt das System in einer Ausführungsform der vorliegenden
Erfindung einen Eintrag für
das Paket. In einer Abwandlung dieser Ausführungsform umfasst das Erzeugen
des Eintrags für
das Paket das Starten eines Zeitgebers für den Eintrag. Wenn dieser
Zeitgeber abläuft,
entfernt das System den Eintrag aus der Paketweiterleitungs-Datenstruktur.
-
Falls
ein Eintrag für
das Paket in der Paketweiterleitungs-Datenstruktur nicht vorhanden
ist und falls das Fragment das erste Fragment des Pakets ist, bestimmt
das System in einer Ausführungsform der
vorliegenden Erfindung aus den in dem ersten Fragment enthaltenen
Informationen den Zielknoten; initialisiert es den Eintrag für das Paket,
um den Zielknoten zu spezifizieren; und leitet es das erste Fragment
zu dem Zielknoten weiter.
-
Falls
außerdem
ein Eintrag für
das Paket in der Paketweiterleitungs-Datenstruktur nicht vorhanden
ist und falls das Paket nicht das erste Fragment des Pakets ist,
verknüpft
das System in einer Ausführungsform
der vorliegenden Erfindung das Fragment mit dem Eintrag für das Paket
in der Paketweiterleitungs-Datenstruktur, so dass das Fragment später zu dem
Zielknoten weitergeleitet werden kann, wenn der Zielknoten bekannt
wird.
-
In
einer Ausführungsform
der vorliegenden Erfindung enthält
das Paket einen Identifizierer für ein
Internetprotokoll-Paket (IP-Paket); und enthält der Nutzlastabschnitt des
ersten Fragments des Pakets einen Übertragungssteuerprotokoll-/Anwenderdatagrammprotokoll-Kopfsatz
(TCP/UDP-Kopfsatz), der verwendet wird, um den Zielknoten zu bestimmen.
-
KURZBESCHREIBUNG
DER FIGUREN
-
1 veranschaulicht
ein clusterartiges Rechensystem, das über ein Netz mit Client-Rechensystemen
gekoppelt ist, in Übereinstimmung
mit einer Ausführungsform
der vorliegenden Erfindung.
-
2 veranschaulicht
die interne Struktur eines Schnittstellenknotens und von zwei Server-Knoten
in einem clusterartigen Rechensystem in Übereinstimmung mit einer Ausführungsform
der vorliegenden Erfindung.
-
3 veranschaulicht
die Struktur eines Paketfragments in Übereinstimmung mit einer Ausführungsform
der vorliegenden Erfindung.
-
4 veranschaulicht
eine Paketweiterleitungs-Datenstruktur in Übereinstimmung mit einer Ausführungsform
der vorliegenden Erfindung.
-
5 ist
ein Ablaufplan, der den Prozess des Weiterleitens eines Paketfragments
in Übereinstimmung
mit einer Ausführungsform
der vorliegenden Erfindung veranschaulicht.
-
AUSFÜHRLICHE
BESCHREIBUNG
-
Die
folgende Beschreibung wird dargestellt, um zu ermöglichen,
dass der Fach mann auf dem Gebiet die Erfindung herstellt und verwendet
und wird im Kontext einer besonderen Anwendung und ihrer Anforderungen
gegeben. Für
den Fachmann auf dem Gebiet sind verschiedene Änderungen an den offenbarten
Ausführungsformen
leicht sichtbar, wobei die hier definierten allgemeinen Prinzipien
können
auf andere Ausführungsformen
und Anwendungen angewendet werden können, ohne von dem wie durch die
Ansprüche
definierten Umfang der vorliegenden Erfindung abzuweichen. Somit
soll die vorliegende Erfindung nicht auf die gezeigten Ausführungsformen beschränkt sein,
sondern mit dem weitesten Umfang in Einklang stehen, der mit den
hier offenbarten Prinzipien und Merkmalen übereinstimmt.
-
Die
Datenstrukturen und der Code, die in dieser ausführlichen Beschreibung beschrieben
sind, sind typisch in einem computerlesbaren Speichermedium gespeichert,
das irgendeine Vorrichtung oder irgendein Medium sein kann, das
Code und/oder Daten zur Verwendung durch ein Computersystem speichern
kann. Dies enthält,
ist aber nicht beschränkt auf,
magnetische und optische Speichervorrichtungen wie etwa Diskettenlaufwerke,
Magnetband, CDs (Compact Discs) und DVDs (Digital Versatile Discs oder
Digital Video Discs) sowie Computeranweisungssignale, die in einem Übertragungsmedium (mit
oder ohne eine Trägerwelle,
auf der die Signale moduliert sind) verkörpert sind. Das Übertragungsmedium
kann z. B. ein Kommunikationsnetz wie etwa das Internet enthalten.
-
Clusterartiges
Rechensystem
-
1 veranschaulicht
ein mit Clients 121–123 gekoppeltes
clusterartiges Rechensystem 100 in Übereinstimmung mit einer Ausführungsform der
vorliegenden Erfindung. Die Clients 121–123 können irgendeinen
Knoten im Netz 120 enthalten, der Rechenfähigkeit
und einen Mechanismus für
die Kommunikation über
das Netz 120 enthält.
Die Clients 121–123 kommunizieren
dadurch mit dem clusterartigen Rechensystem 100, dass sie
Pakete (in Form von Fragmenten) an das clusterartige Rechensystem 100 senden,
um Dienste vom clusterartigen Rechensystem 100 anzufordern.
-
Das
Netz 120 kann irgendeinen Typ eines Drahtkommunikationskanals
oder drahtlosen Kommunikationskanals enthalten, der Rechenknoten
miteinander koppeln kann. Dies umfasst, ist aber nicht beschränkt auf,
ein lokales Netz, ein Weitverkehrsnetz oder eine Kombination von
Netzen. In einer Ausführungsform
der vorliegenden Erfindung enthält
das Netz 120 das Internet.
-
Das
clusterartige Rechensystem 100 enthält eine Menge von Knoten, die über eine
private Zusammenschaltung 119 miteinander gekoppelt sind. Diese
Knoten enthalten Server-Knoten 102 und 104 sowie
einen Schnittstellenknoten/Server-Knoten 103.
-
Die
Knoten 102–104 sind über eine
private Zusammenschaltung 119 miteinander gekoppelt, die allgemein
irgendeinen Typ eines Kommunikationsmechanismus enthalten kann.
In einer Ausführungsform
der vorliegenden Erfindung folgt die private Zusammenschaltung 119 der
Ethernet-Norm. In einer weiteren Ausführungsform folgt die private
Zusammenschaltung 119 der Norm für skalierbare kohärente Zusammenschaltungen
(SCI-Norm).
-
Es
wird angemerkt, dass der Schnittstellenknoten 103 eine
oder mehrere gemeinsam genutzte IP-Adressen für das clusterartige Rechensystem 100 hosten
kann. Außerdem
wird angemerkt, dass für
einen gegebenen Dienst mehr als ein Knoten im clusterartigen Rechensystem 100 als
ein Schnittstellenknoten wirken kann. Dies ermöglicht, dass für einen Schnittstellenknoten,
der ausfällt,
ein Sicherungsschnittstellenknoten übernimmt. Es wird angemerkt, dass
die Knoten 102–104 im
clusterartigen Rechensystem 100 skalierbare Dienste bereitstellen
können. Vom
Standpunkt der Clients 121–123 aus verhält sich jeder
skalierbare Dienst als eine einzelne logische Entität. Außerdem wird
angemerkt, dass die Clients 121–123 über eine Übertragungssteuerprotokoll-Verbindung
(TCP-Verbindung) oder über
eine Anwenderdatagrammprotokoll-Sitzung (UDP-Sitzung) mit dem clusterartigen
Rechensystem 100 kommunizieren können.
-
Das
clusterartige Rechensystem 100 arbeitet allgemein wie folgt.
Während
Pakete von den Clients 121–123 am Schnittstellenknoten 103 ankommen,
wird anhand der Zieladresse in dem Paket ein Dienst für das Paket
ausgewählt.
Nachfolgend wird anhand der Quelladresse des Pakets sowie der Zieladresse
des Pakets eine Dienstinstanz für
das Paket ausgewählt.
Es wird angemerkt, dass das System sicherstellt, dass Pakete, die
zu derselben TCP-Verbindung oder UDP-Instanz gehören, zu derselben Dienstinstanz
gesendet werden. Schließlich
wird das Paket zu der ausgewählten
Dienstinstanz gesendet.
-
Außerdem wird
angemerkt, dass die Server-Knoten 102–104 Mechanismen zum Weiterleiten und
Zusammenfügen
von Paketfragmenten zu Paketen enthalten. Genauer enthält der Server-Knoten 104 einen
Paketzusammenfügungsmechanismus 130,
enthält
der Server-Knoten 102 einen Paket-Zusammenfügungsmechanismus 132 und
enthält
der Server-Knoten 103 einen Paketweiterleitungs- und Paketzusammenfügungsmechanismus 133.
-
Während des
Betriebs empfängt
der Paketweiterleitungs- und Paketzusammenfügungsmechanismus 133 von
den Clients 121–123 Fragmente
von Paketen und leitet die Paketfragmente anhand der Zieladresse
der Pakete zu den Server-Instanzen 201–203 weiter.
Dieser Prozess wird im Folgenden anhand der 3–5 ausführlicher
beschrieben.
-
Außerdem wird
angemerkt, dass die vorliegende Erfindung, obgleich sie im Kontext
einer spezifischen clusterartigen Computersystemarchitektur beschrieben
wird, allgemein auf irgendein Computersystem angewendet werden kann,
in dem Paketfragmente anhand von Informationen, die in den Paketfragmenten
enthalten sind, zu anderen Computersystemen weitergeleitet werden.
-
Interne Struktur
von Schnittstellenknoten und Server-Knoten
-
2 veranschaulicht
die interne Struktur des Schnittstellenknotens 103 und
der Server-Knoten 102 und 104 im clusterartigen
Rechensystem 100 in Übereinstimmung
mit einer Ausführungsform
der vorliegenden Erfindung. Der Client 121 sendet Pakete
an das clusterartige Rechensystem 100, um vom clusterartigen
Rechensystem 100 einen Dienst zu empfangen. Diese Pakete
treten in die öffentliche Schnittstelle 221 im
Schnittstellenknoten 103 im clusterartigen Rechensystem 100 ein.
Die öffentliche Schnittstelle 221 kann
irgendeinen Schnittstellentyp enthalten, der Pakete vom Netz 120 empfangen kann.
-
Während Pakete über die öffentliche
Schnittstelle 221 am Schnittstellenknoten 103 ankommen, gehen
sie über
den Cluster-Vernetzungsmultiplexer 218. Der Cluster-Vernetzungsmultiplexer 218 leitet die
Pakete anhand der Lastausgleichspolitiken und weiterer Betrachtungen
an verschiedene Knoten im clusterartigen Rechensystem 100 weiter.
-
Vom
Schnittstellenknoten 103 werden die Pakete über private
Schnittstellen 224 und 225 zu anderen Knoten in
dem clusterartigen Rechensystem 100 einschließ lich der
Server-Knoten 102 und 104 weitergeleitet. Die
privaten Schnittstellen 224 und 225 können irgendeine
Schnittstelle enthalten, die die Kommunikation zwischen Knoten im
clusterartigen Rechensystem 100 behandeln kann. Zum Beispiel
können
Pakete von der privaten Schnittstelle 224 zur privaten
Schnittstelle 226 am Server-Knoten 104 oder von
der privaten Schnittstelle 225 zur privaten Schnittstelle 228 am
Server-Knoten 102 weitergeleitet werden. Es wird angemerkt,
dass die privaten Schnittstellen 224 und 225 keine
Kommunikation mit Entitäten
außerhalb
des clusterartigen Rechensystems 100 behandeln.
-
In
einigen Ausführungsformen
der vorliegenden Erfindung nutzen die private Schnittstelle 224 (und 225)
und die öffentliche
Schnittstelle 221 einen Teil derselben Kommunikations-Hardware
gemeinsam und senden Nachrichten entlang einiger derselben physikalischen
Datenpfade. In einigen dieser Ausführungsformen können die
private Schnittstelle 224 und die öffentliche Schnittstelle 221 außerdem einen
Teil derselben Schnittstellen-Software gemeinsam nutzen. Somit brauchen
die private Schnittstelle 224 und die öffentliche Schnittstelle 221 keine
verschiedenen Kommunikationsmechanismen zu repräsentieren. Somit kann der Unterschied
zwischen der privaten Schnittstelle 224 und der öffentlichen Schnittstelle 221 lediglich
ein Unterschied dazwischen sein, ob die Kommunikation mit einer
Entität außerhalb
des clusterartigen Rechensystems 100 oder mit einer Entität im clusterartigen
Rechensystem 100 erfolgt.
-
Die
Pakete, die in die Server-Knoten 102 und 104 eintreten,
gehen über
die IP-Stapel 214 bzw. 216.
Da der Knoten 103 ebenfalls als ein Server wirken kann,
kann der Cluster-Vernetzungsmultiplexer 218 ebenfalls Pakete
an den IP-Stapel 215 im Schnittstellenknoten/Server-Knoten 103 senden.
Im Server-Knoten 102 gehen die Pakete durch den IP-Stapel 214 ins
TCP-Modul 206, das TCP-Verbindungen unterstützt, oder
ins UDP-Modul 210, das UDP-Sitzungen unterstützt. Ähnlich gehen
die Pakete im Schnittstellenknoten/Server-Knoten 103 durch den
IP-Stapel 215 ins TCP-Modul 207 oder ins UDP-Modul 211.
Im Server-Knoten 104 gehen die Pakete durch den IP-Stapel 216 ins
TCP-Modul 208 oder ins UDP-Modul 212. Nachfolgend werden
die Pakete durch die Dienstinstanzen 201–203 in
den jeweiligen Knoten 102–104 verarbeitet.
-
Es
wird angemerkt, dass die Rückkommunikation
für die
Server-Knoten 102 und 104 nicht demselben Pfad
folgt. Die Rückkommunikation
vom Server-Knoten 102 geht hinab durch den IP-Stapel 214, durch
die öffentliche
Schnittstelle 220 und daraufhin zum Client 121. Ähnlich geht
die Rückkommunikation vom
Server-Knoten 104 hinab
durch den IP-Stapel 216, durch die öffentliche Schnittstelle 222 und
daraufhin zum Client 121. Dies befreit den Schnittstellenknoten 103 davon,
den Rückkommunikationsverkehr
behandeln zu müssen.
-
Für Web-Server-Anwendungen
(und für
einige andere Anwendungen) kann dieser Rückkommunikationsmechanismus
einen Lastausgleich für
den Rückverkehr
schaffen. Es wird angemerkt, dass Web-Server typisch Navigationsbefehle
von einem Client empfangen und in Reaktion große Volumina an Web-Seiten-Inhalt
(wie etwa graphische Bilder) zu dem Client zurücksenden. Für diese Anwendungen ist es
vorteilhaft, den Rückverkehr über mehrere Rückpfade
zu verteilen, um das große
Volumen des Rückverkehrs
zu behandeln.
-
Es
wird angemerkt, dass der Cluster-Vernetzungsmultiplexer 218 mit
einem Paketweiterleitungsmechanismus 230 gekoppelt ist,
der Paketfragmente, wie im Folgenden anhand der 3–5 ausführlicher
beschrieben wird, zu den Server-Instanzen 201–203 weiterleitet.
-
Paketfragmentstruktur
-
3 veranschaulicht
die Struktur eines Paketfragments 300 in Übereinstimmung
mit einer Ausführungsform
der vorliegenden Erfindung. Das Paketfragment 300 wird
während
der Übertragung
eines Pakets von einem der Clients 121–123 zum Schnittstellenknoten 103 erzeugt.
Wenn die Internetprotokollschicht (IP-Schicht) ein zu sendendes
Paket empfängt,
vergleicht sie die Größe des Pakets
mit einer maximalen Übertragungseinheit
(MTU) der Schnittstelle, an die das Paket gesendet werden soll. Falls
die Größe des Pakets
größer als
die MTU der Schnittstelle ist, wird das Paket fragmentiert. Diese Fragmentierung
kann bei Zwischen-Routern erfolgen, wobei dasselbe Paket je nach
der MTU der Schnittstellen, durch die das Paket geleitet wird, mehrmals
fragmentiert werden kann.
-
Jeder
IP-Paketkopfsatz enthält
ein Identifizierungsfeld. Der Sender des Pakets ordnet in diesem
Identifizierungsfeld einen eindeutigen Wert an, wobei dieser eindeutige
Wert in jedes Fragment des Patentpakets kopiert wird. Zum Beispiel
enthält
der IP-Kopfsatz 301 des Paketfragments 300 in 3 die
Paket-ID 306, die das Paket identifiziert, zu dem das Paketfragment 300 gehört.
-
Außerdem enthält der IP-Kopfsatz 301 die Quell-IP-Adresse
des Clients, der das Paket gesendet hat, sowie die Ziel-IP-Adresse
des Dienstes, zu dem das Paket im clusterartigen Rechensystem 100 gerichtet
ist. Außerdem
enthält
der IP-Kopfsatz 301 einen Paketmerker 308, der angibt,
ob weitere Fragmente in dem Paket folgen sollen. Falls das Paketfragment 300 das
letzte Fragment in einem Paket ist, ist der Merker 308 auf
einen Wert falsch eingestellt.
-
Außerdem enthält das Paketfragment 300 einen
Datenabschnitt (Nutzlastabschnitt), der Abschnitte des Pakets speichert,
die bei der Server-Instanz erneut zusammengefügt werden sollen. Das erste
Fragment eines Pakets enthält
einen TCP-Kopfsatz 310, der einen TCP-Quellport 312 und einen
TCP-Zielport 314 spezifiziert. Um Pakete von einem Client
zu derselben Server-Instanz weiterzuleiten, wird der Zielknoten
dadurch bestimmt, dass anhand des TCP-Quellports 312 eine
Suche ausgeführt
wird. Es wird angemerkt, dass diese Suche außerdem auf der Quell-IP-Adresse 302,
auf der Ziel-IP-Adresse 304 und auf einem Protokollspezifizierer
beruhen kann.
-
Außerdem wird
angemerkt, dass andere Fragmente neben dem ersten Fragment den TCP-Kopfsatz 310 nicht
enthalten und folglich keine Informationen enthalten, die zum Bestimmen
des Ziels verwendet werden können.
Außerdem
können Pakete
asynchron und außer
der Reihe ankommen.
-
Paketweiterleitungs-Datenstruktur
-
4 veranschaulicht
eine Paketweiterleitungs-Datenstruktur 400 in Übereinstimmung
mit einer Ausführungsform
der vorliegenden Erfindung. Auf die Paketweiterleitungs-Datenstruktur 400 wird über einen
Zeiger (eine Kennung) 402 Bezug genommen, der (die) auf
eine verkettete Liste (oder auf eine andere Suchstruktur) zeigt,
die Halterobjekte 410, 420 und 430 enthält. Es wird
angemerkt, dass für
jedes Paket, das in dem Prozess ist, in dem es zu einer Server-Instanz
bei einem Zielknoten weitergeleitet wird, ein getrenntes Halterobjekt
erzeugt wird.
-
Das
Halterobjekt 410 enthält
eine Anzahl von Feldern einschließlich des Zielknotens 412,
der eine Adresse des Ziels enthält,
zu dem das Paket weitergeleitet wird. Es wird angemerkt, dass der
Zielknoten 412 erst ausgefüllt werden kann, nachdem das
erste Fragment eines Pakets empfangen worden ist. Außerdem enthält das Halterobjekt 410 eine
Paket-ID 414, die das Paket eindeutig identifi ziert. (Es
wird angemerkt, dass das Halterobjekt 410 außerdem eine Quell-IP-Adresse, eine Ziel-IP-Adresse
und einen Protokollspezifizierer enthalten kann).
-
Außerdem enthält das Halterobjekt 410 einen
Fragmentzeiger 416, der zu einer verketteten Liste von
Paketfragmenten (oder Zeigern auf Paketfragmente) zeigt, die nicht
zu dem Zielknoten weitergeleitet worden sind. Es wird angemerkt,
dass die Paketfragmente im Halterobjekt 410 in eine Warteschlange
eingereiht werden können,
falls sie empfangen werden, bevor das erste Paketfragment empfangen
wird. Nach Empfang des ersten Pakets und Bestimmung des Zielknotens
leitet das System die in die Warteschlange eingereihten Paketfragmente
zu dem Zielknoten weiter.
-
Ähnlich enthält das Halterobjekt 420 einen Zielknoten 422,
eine Paket-ID 424 und einen Fragmentzeiger 426.
Der Fragmentzeiger 426 zeigt auf eine verkettete Liste,
die Paketfragmente 427–429 enthält.
-
Ähnlich enthält das Halterobjekt 430 einen Zielknoten 432,
eine Paket-ID 434 und einen Fragmentzeiger 436.
Der Fragmentzeiger 436 zeigt auf eine verkettete Liste,
die ein Paketfragment 437 enthält.
-
Obgleich 4 eine
spezifische Struktur für die
Paketweiterleitungs-Datenstruktur 400 veranschaulicht,
soll die vorliegende Erfindung nicht auf die gezeigte Struktur beschränkt sein.
Im Allgemeinen kann zur Implementierung der Paketweiterleitungs-Datenstruktur 400 irgendeine
Struktur verwendet werden, die Halterobjekte und Fragmente speichern
kann.
-
Prozess des
Weiterleitens eines Paketfragments
-
5 ist
ein Ablaufplan, der den Prozess des Weiterleitens eines Paketfragments
in Übereinstimmung
mit einer Ausführungsform
der vorliegenden Erfindung veranschaulicht. Dieser Ablaufplan veranschaulicht
die Aktionen des Paketfragment-Weiterleitungsmechanismus 230 in
dem in 2 veranschaulichten Schnittstellenknoten 103.
-
Das
System beginnt damit, dass es ein Paketfragment 300 empfängt (Schritt 502).
Das System verwendet das Paket-ID-Feld 306 vom Paketfragment 300 (und
möglicherweise
die Quell-IP-Adresse 302, die Ziel-IP-Adresse 304 und
einen Proto kollspezifizierer), um nach einem Eintrag (Halterobjekt)
in der Paketweiterleitungs-Datenstruktur 400 zu
suchen (Schritt 504). Dies ermöglicht, dass das System bestimmt,
ob ein Eintrag für
das Paketfragment 300 vorhanden ist (Schritt 506).
-
Falls
ein Eintrag für
das Paketfragment 300 in der Paketweiterleitungs-Datenstruktur 400 nicht vorhanden
ist, erzeugt das System ein Halterobjekt und fügt das Halterobjekt in die
Paketweiterleitungs-Datenstruktur 400 ein (Schritt 508).
Außerdem initialisiert
das System einen Zeitgeber, der dem Halterobjekt zugeordnet ist.
Wenn dieser Zeitgeber abläuft,
wird das Halterobjekt aus der Paketweiterleitungs-Datenstruktur 400 entfernt.
Nachfolgend bestimmt das System, ob das Fragment ein erstes Fragment
des Pakets ist, das den TCP-Kopfsatz enthält (Schritt 510).
-
Wenn
das nicht der Fall ist, verknüpft
das System das Fragment mit dem Halterobjekt, das dem Paket zugeordnet
ist, so dass das Fragment zu einer späteren Zeit, wenn der Zielknoten
bekannt wird, zu dem Zielknoten gesendet werden kann (Schritt 518).
-
Falls
das Fragment das erste Fragment ist, verwendet das System die TCP-Quelladresse, um den
Zielknoten für
das Paket zu bestimmen. Dies stellt sicher, dass alle Pakete von
demselben Client zu demselben Zielknoten geleitet werden (Schritt 512).
Nachfolgend initialisiert das System das Zielknotenfeld in dem Halterobjekt,
um das Ziel zu spezifizieren (Schritt 514).
-
Daraufhin
leitet das System das erste Fragment zu dem Zielknoten weiter (Schritt 516).
Falls irgendwelche zusätzlichen
Fragmente mit dem Halterobjekt verknüpft sind, leitet das System
diese zusätzlichen
Fragmente ebenfalls weiter (Schritt 524).
-
Falls
in Schritt 506 ein Halterobjekt für das Paket in der Paketweiterleitungs-Datenstruktur 400 nicht
vorhanden ist, bestimmt das System, ob ein Zielknoten in dem Halterobjekt
spezifiziert ist (Schritt 520). Wenn das der Fall ist,
leitet das System das Paketfragment einfach zu dem Zielknoten weiter.
Wenn der Zielknoten nicht in dem Halterobjekt spezifiziert ist,
schreitet das System zu Schritt 510 fort, um den oben in
den Schritten 510, 512, 514, 516, 518 und 524 beschriebenen
Prozess auszuführen.
-
Die
vorstehenden Beschreibungen von Ausführungsformen der Erfindung
wurden lediglich für Veranschaulichungs-
und Beschreibungszwecke dargestellt. Sie sollen nicht erschöpfend sein
und die vorliegende Erfindung nicht auf die offenbarten Formen beschränken. Dementsprechend
sind für
den im Gebiet erfahrenen Anwender viele Abwandlungen und Änderungen
offensichtlich. Außerdem
soll die obige Offenbarung die vorliegende Erfindung nicht einschränken. Der
Umfang der vorliegenden Erfindung ist durch die beigefügten Ansprüche definiert.