-
Die
Erfindung betrifft ein Verfahren zum Verteilen eines durch einen
Computer über
eine Verbindungsleitung gesendeten Datenpakets zu einem Clustersystem,
das aus mindestens zwei Knoten besteht, wobei mindestens zwei erste
Knoten einen Dienst zum Verarbeiten des Datenpakets umfassen.
-
Ein
Beispiel für
ein solches Datenpaket ist das Benutzer-Datagramm-Protokoll. In
dem Benutzer-Datagramm-Protokoll
(UDP) gibt es keinen Begriff der Verbindung. Es wird auch als verbindungsloses
Protokoll bezeichnet, weil keine Bestätigung erforderlich ist, nachdem
UDP-Pakete empfangen werden. Zwei Computer, die miteinander über ein
das UDP-Protokoll verwendendes Netzwerk verbunden sind, senden Datenpakete
zueinander, ohne auf eine Bestätigung
zu warten. Pakete, die ihr Ziel nicht erreichen, gehen verloren.
Da das UDP-Paket nur einen kleinen Kopfteil ohne komplexe Fehlerkorrektur
enthält,
wird es normalerweise in Anwendungen verwendet, bei denen hohe Datenraten
erforderlich sind.
-
Insbesondere
bei skalierbaren Internetdiensten (SIS) werden häufig Datenverbindungen mit
dem UDP-Protokoll benutzt. Wenn ein Computer ein UDP-Paket zu einem
Clustersystem sendet, das bestimmte skalierbare Internetdienste,
wie etwa WWW, FTP oder ähnliches
bereitstellt, muß die
Clustersystem-Software sicherstellen, daß kein UDP-Paket in dem Cluster
verlorengeht. Dies ist sogar noch wichtiger, weil bestimmte das
UDP-Protokoll benutzende Anwendungen Kenntnis über zuvor gesendete Pakete
erforderten.
-
Die
Schrift
EP 1 117 224
A1 zeigt ein Verfahren zum Verteilen eines durch einen
Computer gesendeten Datenpakets zu einem geclusterten Computersystem.
Das Datenpaket wird zu einem Schnittstellenknoten gesendet und dann
zur weiteren Verarbeitung zu einem der Dienstknoten weitergeleitet.
-
Es
wird eine Liste, einschließlich
Identifikation des Computers, der die Quelle vorheriger Datenpakete
ist, und des entsprechenden Verarbeitungsknotens, der für diese
Datenpakete zugewiesen wurde, bereitgestellt. Die Schrift US 2001/005024
A1 zeigt einen Router und ein Verfahren zum Routen und Lastausgleich
in einem Cluster von Serverknoten. Client-Anforderungen können von
jedem Knoten behandelt werden, Clients könnten jedoch eine Affinität für spezifische
Serverknoten aufweisen, von denen die Anforderung bevorzugt zu behandeln
ist. Die Affinität
wird durch eine Tabellenliste in einem TCP-Router definiert.
-
Es
kann ein Problem entstehen, wenn zu dem Clustersystem gesendete
Pakete von verschiedenen Schnittstellenknoten des Clusters empfangen werden.
In solchen Fällen
können
Fakete verloren gehen, und die Verbindung oder Dienste müssen neu gestartet
werden.
-
Die
Aufgabe der Erfindung ist die Bereitstellung eines Verfahrens mit
der Fähigkeit,
den Verlust von zu einem Clustersystem gesendeten UDP-Paketen zu
verhindern.
-
Die
Aufgabe wird durch den unabhängigen Anspruch
gelöst.
-
Die
Erfindung liefert ein Verfahren zum Verteilen eines durch einen
Computer über
eine Verbindungsleitung gesendeten Datenpakets zu einem Clustersystem.
Das Clustersystem besteht aus mindestens zwei Knoten, wobei mindestens
zwei erste Knoten einen Dienst zum Verarbeiten des Datenpakets umfassen
und wobei mindestens zwei zweite Knoten Mittel zum Empfangen des Datenpakets
umfassen. Das Datenpaket umfaßt
ein UDP-Paket und eine
Identifikation des Computers, von dem das Datenpaket gesendet wurde.
Die Identifikation kann Teil des Kopfteils des Datenpakets sein.
Das Verfahren umfaßt
die folgenden Schritte:
- a) Empfangen des Datenpakets
durch einen der mindestens zwei zweiten Knoten;
- b) Extrahieren der Identifikation in dem Datenpaket;
- c) Prüfen,
ob ein Datenpaket, das dieselbe Identifikation umfaßt, empfangen
und zu einem der mindestens zwei ersten Knoten weitergeleitet wurde;
- d) Weiterleiten des Datenpakets zu einem der mindestens zwei
ersten Knoten, wenn die vorherige Prüfung positiv ist;
- e) Auswählen
eines Knotens der mindestens zwei ersten Knoten und Weiterleiten
des Datenpakets zu dem ausgewählten
Knoten, wenn die vorherige Prüfung
negativ ist;
- f) Erzeugen einer ersten Liste, wobei die erste Liste Einträge umfaßt, wobei
die Einträge
die Identifikation des Computers, von dem das Datenpaket gesendet
wurde, und eine Knotenidentifikation des einen der mindestens zwei
ersten Knoten umfassen, zu dem das Datenpaket gesendet wurde, der
der Identifikation zugewiesen ist;
- g) Erzeugen einer zweiten Liste, wobei die zweite Liste Einträge umfaßt, wobei
die Einträge
die Identifikation der durch jeden der mindestens zwei zweiten Knoten
empfangenen Datenpakete umfassen und ferner eine Knotenidentifikation
des einen der mindestens zwei ersten Knoten umfassen, der der Identifikation
zugewiesen ist.
-
Durch
dieses Verfahren wird das durch den mindestens einen zweiten Knoten
empfangene Datenpaket immer zu dem Knoten weitergeleitet, der bereits
zuvor ein Datenpaket von demselben Computer empfangen hat. Datenpakete,
die zu derselben Verbindung gehören,
werden somit immer zu dem korrekten Knoten weitergeleitet. Der Ausdruck Verbindung
ist definiert als Datenpakete mit einer Identifikation eines spezifischen
Computers, von dem das Datenpaket gesendet wurde. Pakete, die durch
denselben Computer gesendet werden, werden deshalb als zu derselben
Verbindung gehörend
betrachtet. Wenn eine Prüfung,
ob ein durch einen spezifischen Computer gesendetes Datenpaket bereits
zuvor empfangen wurde, negativ ist, wird ein neuer Knoten ausgewählt. Dieser
Verfahrensschritt führt
zu einer neuen Verbindung. Datenpakete, die wieder durch denselben
spezifischen Computer gesendet werden, werden dann automatisch zu
dem ausgewählten Knoten
weitergeleitet. Aufgrund eines unterschiedlichen Auswahlalgorithmus
kann ein Lastausgleich ankommender UDP-Pakete eingerichtet werden.
-
Die
Erfindung liefert außerdem
eine Vorrichtung zum Verteilen von durch einen Computer gesendeten
Datenpaketen zu einem Clustersystem. Die Datenpakete umfassen dabei
ein UDP-Paket und auch eine Identifikation des Computers, von dem
das Datenpaket gesendet wurde. Das Clustersystem umfaßt mindestens
zwei über
ein Clusternetzwerk verbundene Knoten. Gemäß der Erfindung umfaßt die Vorrichtung
Mittel zum Verarbeiten des Datenpakets in mindestens zwei ersten
Knoten der mindestens zwei Knoten und umfaßt außerdem Mittel zum Empfangen
von Datenpaketen an mindestens zwei zweiten Knoten der mindestens
zwei Knoten. Ferner umfaßt
die Vorrichtung gemäß der Erfindung
Mittel zum Weiterleiten empfangener Datenpakete zu mindestens zwei
ersten Knoten und Mittel zum Auswählen eines Knotens der mindestens
zwei ersten Knoten, zu dem die Datenpakete weitergeleitet werden
müssen.
-
Bei
einer Ausführungsform
der Erfindung werden die Mittel zum Weiterleiten und die Mittel
zum Verarbeiten der Datenpakete auf verschiedenen Knoten der mindestens
zwei Knoten implementiert. Als Alternative werden die Mittel zum
Weiterleiten und die Mittel zum Auswählen auf verschiedenen Knoten
der mindestens zwei Knoten implementiert. Dies ermöglicht einen
besseren Lastausgleich und ergibt höhere Sicherheit gegenüber Hardwareausfällen auf
einem Knoten.
-
Bei
einer anderen Ausführungsform
der Erfindung ist das weiterzuleitende Datenpaket das UDP-Paket
in dem Datenpaket, das von den mindestens zwei zweiten Knoten empfangen
wird. Bei dieser Ausführungsform
der Erfindung wird das UDP-Paket durch einen der mindestens zwei
zweiten Knoten aus dem empfangenen Datenpaket extrahiert und dann zu
einem der mindestens zwei ersten Knoten weitergeleitet.
-
Bei
einer weiteren Ausführungsform
der Erfindung umfaßt
Schritt c) des erfindungsgemäßen Verfahrens
die folgenden Schritte:
- – Prüfen, ob ein empfangenes Datenpaket
eine Identifikation eines Computers enthält, von dem vor einer spezifischen
Zeit ein anderes Datenpaket empfangen wurde.
-
Bei
dieser Ausführungsform
der Erfindung wird ein durch einen der mindestens zwei zweiten Knoten
empfangenes Datenpaket als zu einer spezifischen Verbindung gehörend betrachtet,
wenn ein anderes von demselben Computer kommendes Datenpaket durch
denselben Computer nur eine vordefinierte empfangen wurde. Wenn
nur eine vordefinierte Lücke
zwischen zwei nachfolgenden Paketen mit derselben Identifikation
besteht, die deshalb von demselben Computer kommen, werden anders
ausgedrückt
die beiden nachfolgenden Pakete als zu derselben Verbindung gehörend betrachtet.
Pakete, die zu derselben Verbindung gehören, werden immer dann, wenn
es möglich
ist, zu demselben Knoten weitergeleitet. Wenn die Lücke größer als
der vordefinierte Zeitwert ist, wird das empfangene Datenpaket als
zu einer neuen Verbindung gehörend
betrachtet und könnte
zu einem anderen Knoten weitergeleitet werden.
-
Bei
einer weiteren Ausführungsform
der Erfindung umfaßt
der mindestens eine zweite Knoten eine erste Liste, wobei die erste
Liste Einträge
umfaßt.
Die Einträge
umfassen die Identifikation des Computers, von dem das Datenpaket
gesendet wurde, sowie eine Knotenidentifikation des Knotens, zu dem
das Datenpaket weitergeleitet wird. Die Knotenidentifikation wird
der Identifikation des Computers, von dem das Datenpaket gesendet
wurde, zugewiesen. Wenn der mindestens eine zweite Knoten ein weiteres
Datenpaket empfängt,
führt der
mindestens eine zweite Knoten die Prüfung durch Suchen nach der
Identifikation in der ersten Liste durch. Wenn eine identische Identifikation
gefunden wird, wird sie als zu derselben Verbindung gehörend betrachtet,
und die ihr zugewiesene Knotenidentifikation wird zum Weiterleiten
des Datenpakets benutzt. Wenn die Identifikation nicht in der ersten
Liste gefunden wird, wird das empfangene Datenpaket als zu einer
neuen Verbindung gehörend
betrachtet, es wird ein neuer Knoten ausgewählt und das Datenpaket wird
zu dem neuen ausgewählten
Knoten weitergeleitet.
-
Bei
einer weiteren Ausführungsform
der Erfindung wird eine zweite Liste erzeugt, wobei die zweite Liste
die Identifikation der Datenpakete, die von jedem des mindestens
einen zweiten Knotens empfangen wird, umfaßt und ferner außerdem eine Knotenidentifikation
umfaßt,
die der Identifikation der Datenpakete zugewiesen wird. Die Ausführungsform ist
besonders nützlich,
wenn es mehr als nur einen zweiten Knoten gibt, die Datenpakete
von Computern empfangen. Die zweite Liste umfaßt die Identifikation der Computer,
von denen die Datenpakete gesendet wurden, und auch die Knotenidentifikation,
zu der die Pakete weitergeleitet wurden, ungeachtet des empfangenden
zweiten Knotens. Dadurch kann man existierende Verbindungen identifizieren,
auch wenn Datenpakete, die zu derselben Verbindung gehören, von
verschiedenen zweiten Knoten empfangen werden.
-
Bei
einer weiteren Ausführungsform
der vorliegenden Erfindung werden die Einträge in der ersten oder in der
zweiten Liste, die die Identifikation der Computer umfassen, von
denen die Pakete gesendet wurden, gelöscht, wenn innerhalb einer
spezifischen Zeit kein zusätzliches
Datenpaket mit derselben Identifikation empfangen wird. Nach der
Löschung wird
das Datenpaket als zu einer neuen Verbindung gehörend betrachtet.
-
Bei
einer weiteren Ausführungsform
umfaßt die
Auswahl im Schritt e) des Verfahrens gemäß der Erfindung die folgenden
Schritte:
- – Messen
der Systemlast jedes des mindestens einen ersten Knotens und Auswählen des
Knotens mit der geringsten Systemlast. Als Alternative umfaßt die Auswahl
im Schritt e) den folgenden Schritt:
- – Auswählen eines
Knotens des mindestens einen ersten Knotens mit dem niedrigsten
Zählwert von
Verbindungen. Ferner umfaßt
die Auswahl im Schritt e) als Alternative den folgenden Schritt:
- – Auswählen eines
Knotens des mindestens einen ersten Knotens gemäß einem zyklischen Muster.
-
Die
Auswahl der Knoten für
neue Verbindungen ist sehr nützlich
für Lastausgleich.
-
Andere
Merkmale und Vorteile der vorliegenden Erfindung werden aus den
abhängigen
Ansprüchen
ersichtlich sein. Die nachfolgend ausführlich erläuterte vorliegende Erfindung
wird beispielhaft dargestellt und nicht auf die hier offengelegten
Beispiele und beigefügten
Figuren beschränkt.
Es zeigen:
-
1 eine
Ausführungsform
der Erfindung in einem Clustersystem;
-
2 die
physische Struktur eines die Erfindung implementierenden Clustersystems;
-
3 eine
andere Ausführungsform
der Erfindung;
-
4 ein
Beispiel für
Listen, die für
Gateway- und Datenbankknoten bei einer Ausführungsform der Erfindung verwendet
werden;
-
5 eine
Liste, die in Dienstknoten bei einer Ausführungsform der Erfindung verwendet
wird;
-
6 ein
Beispiel für
das erfindungsgemäße Verfahren;
-
7 ein
zweites Beispiel für
das erfindungsgemäße Verfahren;
-
8 einen
nützlichen
Zusatz für
das erfindungsgemäße Verfahren;
-
9 einen
weiteren nützlichen
Zusatz für das
erfindungsgemäße Verfahren.
-
2 zeigt
die Struktur eines Clustersystems, in dem die Erfindung implementiert
ist. Das Cluster 1 umfaßt vier Knoten 12, 13, 14, 15,
die über ein
Netzwerk 17 verbunden sind. Jeder Knoten ist ein unabhängiger Computer,
der mindestens einen Speicher und eine Prozessoreinheit umfaßt. Auf
jedem dieser Knoten läuft
ein Betriebssystem sowie Cluster-Software ab. Die Kommunikation
zwischen den Knoten ist über
spezifische Cluster-Software und das Netzwerk 17 möglich. Das
Cluster 1 umfaßt
außerdem
ein zweites Kommunikationsnetzwerk 16, das mit den Knoten 12, 13, 14 verbunden
ist. Das zweite Netzwerk 16 verbindet die Knoten mit einer
gemeinsam benutzten Speichereinrichtung, in der Daten gespeichert
sind. Die Speichereinrichtung 18 kann zum Beispiel ein
RAID-System mit einer Datenbank oder mehreren Festplatten umfassen.
Sie kann auch ihre eigene Prozessoreinheit enthalten.
-
Bei
dieser Ausführungsform
der Erfindung ist das Clustersystem über eine Firewall 20 mit
dem Internet 21 verbunden. Die Firewall kann ein Softwaremodul
auf einem spezifischen Computer oder einem Router oder einer Hardware-Firewall
sein. Sie kann Paketfilterung, IP-Maskerade, Spoofing und ähnliche Techniken
umfassen. Die Firewall ist mit dem Clusternetzwerk 17 verbunden.
Alle ankommenden Internetverbindungen werden von der Firewall 20 empfangen,
gefiltert und dann zu dem Clustereingang 11 gesendet.
-
Über den
Kommunikationseingang 11 und die Firewall 20 kann
das Cluster 1 mit einem Client 22 kommunizieren,
der Teil des Internet 21 ist. Zum Beispiel kann der Client 22 eine
Seite des Worldwide Web von dem Cluster 1 anfordern. Die
Anforderung wird durch die Firewall 20 empfangen, zu dem
Cluster 1 weitergeleitet und dann durch einen der Knoten in
dem Cluster verarbeitet.
-
Die
physische Struktur des Clusters 1 in 2 kann,
wie in der Vorrichtung von 1 zu sehen
ist, durch eine logische Struktur eines Clusters 1 ersetzt
werden. Das Cluster 1 in 1 umfaßt nun auch
verschiedene Dienste. Die Dienste können auf verschiedenen Knoten
ausgeführt
werden. Es können
aber auch zwei oder mehr Dienste durch einen Knoten ausgeführt werden.
Außerdem
ist es möglich, einen
Dienst über
verschiedene Knoten zu verteilen. Die Administration und das Arrangement
der Dienste auf den verfügbaren
Knoten erfolgt durch die Cluster-Software bzw. die skalierbare Internet-Dienstesoftware.
-
Bei
diesem Beispiel der Erfindung umfaßt Cluster 1 einen
Gateway-Dienst 2. Der Gateway-Dienst 2 wird in
einem spezifischen Knoten implementiert, der alle ankommenden Anforderungen von
einem externen Client 22 bzw. 221 empfängt. Das
Cluster 1 umfaßt
außerdem
verschiedene Dienstmodule 4, 5 und 6,
die für
die Verarbeitung verschiedener Anforderungen benutzt werden. Die Dienstmodule 4, 5 und 6 werden
auch auf verschiedenen physischen Knoten implementiert. Zum Beispiel
handelt es sich bei dem Dienstmodul 4 und 6 um
dieselben Dienstmodule, die dieselben Anforderungen verarbeiten.
Sie werden jedoch auf verschiedenen Knoten ausgeführt. Das
Modul 5 wird auf einem dritten Knoten ausgeführt und
verarbeitet andere Anforderungen. Alle Dienstmodule werden in einer Weise
implementiert, um ankommende UDP-Anforderungen zu verarbeiten.
-
Ferner
umfaßt
der Client ein Datenbankmodul 3. Dieses Datenbankmodul 3 dient
für administrative
Arbeit wie zum Beispiel Lastausgleich, Einteilung von Dienstmodulen
auf verschiedenen Knoten und andere administrative Arbeit. Das Datenbankmodul wird
aus Sicherheitsgründen
auf einem anderen Knoten ausgeführt,
um Stabilität
der gesamten Vorrichtung zu verbessern. Die Verbindung und die Datenpakete,
die zwischen allen Modulen gesendet werden, werden über das
Verbindungsnetzwerk zwischen den Knoten in dem Clustersystem eingerichtet.
-
Bei
dieser Ausführungsform
der Erfindung empfängt
das Gateway-Modul 2 ein UDP-Paket RQ1, das zum Beispiel über das
Internet 21 von dem Client 22 kommt. Das UDP-Paket RQ1 enthält die Quellenadresse
des Clients 22 sowie die Zieladresse, in diesem Fall die
Zieladresse von Cluster 1. Die Quellenadresse wird durch
eine IP-Adresse
des Clients 22 in Verbindung mit einer Portadresse definiert. Heide
Merkmale ähneln
zusammen einer eindeutigen Identifikation, die von der Vorrichtung
zum Identifizieren der Verbindung verwendet wird. Die Zieladresse
wird durch die 2P-Adresse von Cluster 1 sowie als eine
Cluster-Portadresse gegeben.
-
Das
Gateway-Modul 2 prüft
nun, ob zuvor ein UDP-Paket mit derselben Quellenadresse empfangen
wurde. Anders ausgedrückt
schaut es nach derselben IP-Adresse und Portnummer, die in einem vorherigen
Paket empfangen wurden. Wenn dies der Fall ist, wird angenommen,
daß das
UDP-Paket zu derselben Verbindung gehört. Es wird zu einem Dienstmodul
auf einem Knoten weitergeleitet, der auch das vorherige Paket empfangen
hat.
-
Zum
Beispiel wurde das UDP-Paket RQ1 des Clients 22 durch das
Gateway-Modul 2 zu dem Dienstmodul 4 auf Knoten 4 weitergeleitet.
Ein zweites von dem Client 22 gesendetes UDP-Paket, das von
demselben Gateway-Modul empfangen wird, enthält dieselbe IP-Adresse des
Clients 22. Wenn es auch dieselbe Portnummer enthält, wird
es durch das Gateway-Modul 2 auch zu dem Dienstmodul 4 auf Knoten 4 weitergeleitet.
-
Ein
zusätzliches,
aber neues UDP-Paket RQ1' wird
nun durch den Client 221 gesendet und durch das Gateway-Modul 2 empfangen.
Da das Gateway-Modul 2 noch keine UDP-Pakete von diesem
Client empfangen hat, betrachtet das Gateway-Modul 2 das
empfangene Paket als zu einer neuen Verbindung gehörend. Deshalb
wird das Paket RQ1' zu
dem Datenbankmodul 3 weitergeleitet.
-
Das
Datenbankmodul 3 entscheidet dann, zu welchem Knoten das
Paket zur Verarbeitung weitergeleitet werden muß. Die Entscheidung erfolgt
durch einen in dem Datenbankmodul 3 implementierten Einteilungsalgorithmus.
Der hier verwendete Einteilungsalgorithmus ist relativ einfach.
Das Datenbankmodul wählt
einfach gemäß einem
zyklischen Muster den nächsten
Knoten, auf dem der Dienst mit der Fähigkeit zum Verarbeiten des
empfangenen UDP-Pakets ausgeführt
wird.
-
Es
gibt jedoch weitere Möglichkeiten
für den Einteilungsalgorithmus.
Eine Möglichkeit
für das
Datenbankmodul besteht darin, nach der IP-Adresse des Clients 221 zu
suchen und das Paket zu einem Dienstmodul auf einem Knoten weiterzuleiten,
der ein Paket von derselben IP-Adresse wie zuvor empfangen hat.
Dies wird als Einteilungsalgorithmus auf Client-Basis bezeichnet.
Eine andere Möglichkeit
ist, die Systemlast zu betrachten und den Knoten mit der geringsten
Systemlast zu wählen.
Eine weitere Möglichkeit
besteht darin, die bereits existierenden Verbindungen eines Knotens
zu zählen
und den Knoten mit den wenigsten Verbindungen zu wählen. Eine weitere
Möglichkeit
wird als Überlauf
bezeichnet, wobei ein Ersatzknoten gewählt wird, sobald die Systemlast
auf dem ursprünglichen
Knoten einen vordefinierten Wert übersteigt. Es ist möglich, das
hier offengelegte Einteilungsverfahren zu kombinieren oder andere
Einteilungsalgorithmen zu finden. Durch Verwendung eines spezifischen
Algorithmus oder Umschalten zwischen verschiedenen Verfahren, wird Lastausgleich
implementiert.
-
Wenn
der von der Datenbank gewählte
Knoten verfügbar
ist, wird das UDP-Paket zu diesem Knoten weitergeleitet. Andernfalls
wird ein Fallback-Knoten auf Verfügbarkeit geprüft. Ferner
sendet das Datenbankmodul 3 die Identifikation des Knotens
zu dem Gateway-Modul 2 und weist das Gateway-Modul 2 dadurch
an, zusätzliche
UDP-Pakete aus derselben Verbindung zu dem gewählten Knoten weiterzuleiten.
-
Bei
dieser Ausführungsform
der Erfindung wird das UDP-Paket
RQ1 von dem Client 22 zu dem Dienstmodul 4 auf
Dienstknoten 4 weitergeleitet, während das erste UDP-Paket RQ1' von dem Client 221 durch
das Gateway-Modul 2 zuerst zu dem Datenbankmodul 3 und
dann zu dem Dienstmodul 6 auf Knoten 6 weitergeleitet
wird. Alle weiteren UDP-Pakete von dem Client 221 werden
durch das Gateway-Modul 2 automatisch
zu dem Dienstmodul 6 auf Knoten 6 weitergeleitet.
-
Die
Administration der verschiedenen Verbindungen wird in dem Gateway-Modul 2 sowie
in dem Datenbankmodul 3 durch Listen implementiert, die
die Zieladresse und die Quellenadresse enthalten. Diese Listen sind
in 4 gezeigt.
-
Die
linke Liste LG wird für
das Gateway-Modul 2 verwendet. Die Liste LG umfaßt fünf Spalten
mit drei Zeileneinträgen.
Die erste Spalte IPP enthält
die Portnummer der Quellenadresse. In der zweiten Spalte IPA wird
die IP-Adresse der Quelle, von der die UDP-Pakete gesendet wurden,
gespeichert. In den nächsten
beiden Spalten DPP, DIP werden die Portnummer sowie die IP-Adresse des Clusters,
das die ankommenden UDP-Pakete empfangen hat, gespeichert. Die letzte
Spalte 2D enthält
die Adresse des Knotens, zu dem das UDP-Paket weitergeleitet wird.
-
In
dem Beispiel umfaßt
die Liste LG des Gateway-Moduls 2 sowie die Liste LD des
Datenbankmoduls 3 drei Einträge. Zwei Einträge weisen die
Portnummer 80 auf. Einer dieser Einträge besitzt die IP-Adresse CL
des Clients 22, während
der andere Eintrag die IP-Adresse CL1 des Clients 221 enthält. Ein
Eintrag sagt aus, daß ein
UDP-Paket mit Portnummer 82 und IP-Adresse CL1 des Clients 221 durch
das Gateway-Modul 2 empfangen und zu dem Dienstknoten N5
weitergeleitet wurde.
-
5 zeigt
die Listeneinträge
des Dienstmoduls 4, 5 und 6. Die Listen
LN4, LN5, LN6 umfassen auch die Quellenportnummer IPP, die Quellen-IP-Adresse
IPA sowie die Ziel-Portnummer DPP und die Ziel-IP-Adresse DIP. Ferner
umfassen sie einen Zeitstempel TS. Der Zeitstempel ist ein Zeitwert, an
dem das letzte UDP- Paket
durch den Knoten empfangen wurde. In dem Beispiel besitzt die Liste LN4
von Knoten N4 den ältesten
Zeitstempel, gefolgt durch Liste LN6 von Knoten N6 und dann durch
Knoten N5. Der Zeitstempel wird aktualisiert, wenn ein weiteres
Paket durch das Dienstmodul empfangen wird. Ferner umfaßt jede
Liste eine virtuelle IP-Adresse
zur internen Kommunikation sowie eine Liste von Gateways LGA, von
denen die Pakete gekommen sein könnten.
-
Alle
Listen werden regelmäßig aktualisiert. Wenn
als neue Verbindungen betrachtete Pakete empfangen werden, fügen die
Datenbank und die Gateway-Module neue Einträge mit entsprechenden Identifikationen
hinzu. Unter Betrachtung des Zeitstempels entscheidet das Dienstmodul,
wann eine Verbindung geschlossen werden muß oder als inaktiv betrachtet
werden kann. Sie führen
dies durch Vergleichen des Zeitstempels mit der tatsächlichen Zeit
durch. Wenn das Ergebnis größer als
ein vordefinierter Wert ist, löschen
sie die entsprechenden Einträge
und senden Nachrichten zu der Datenbank und/oder dem Gateway-Modul.
Diese Module löschen
dann auch die entsprechenden Einträge.
-
3 zeigt
eine weitere Ausführungsform der
Erfindung. Bei dieser Ausführungsform
umfaßt Cluster 1 zwei
Gateway-Module 2 und 2A, die auf zwei verschiedenen
Knoten implementiert sind. Gateway 2 empfängt ein
neues UDP-Paket aus dem Internet 21 und dem Client 22.
Da kein vorheriges UDP-Paket durch den Client 22 empfangen
wurde, sendet das Gateway 2 in diesem Beispiel nur die IP-Adresse
sowie die Portnummer von Client 22, die in dem empfangenen
UDP-Paket enthalten sind, zu dem Datenbankmodul 3. Das
Datenbankmodul 3 wählt
ein neues Dienstmodul (in diesem Fall das Modul 4) und
sendet die Knotenidentifikation, in der das Dienstmodul 4 ausgeführt wird,
zu dem Gateway-Modul 2 zurück. Das Gateway-Modul 2 leitet
das UDP-Paket zur Datenverarbeitung zu dem Dienstmodul 4 weiter.
-
In
einer späteren
Phase wird ein zusätzliches UDP-Paket
durch den Client 22 zu Cluster 1 gesendet. Es
wird nun jedoch wegen eines Ausfalls von Gateway 2 von
Gateway 2A empfangen. Da noch kein UDP-Paket aus dem Client 22 durch
Gateway 2A empfangen wurde, betrachtet Gateway 2A das UDP-Paket
als neue Verbindung. Es leitet die Adresse zu dem Datenbankmodul 3 weiter.
Das Datenbankmodul 3 enthält jedoch bereits einen Eintrag
von Client 22 und der entsprechenden Portnummer. Es wählt deshalb
kein Dienstmodul, sondern antwortet dem Gateway 2A mit
der Knotenidentifikation des Knotens, auf dem das Dienstmodul 4 abläuft. Gateway 2A leitet
das UDP-Paket dann zu dem Dienstmodul 4 bzw. zu diesem
Knoten weiter. In einem Clustersystem ermöglicht dies das Einrichten
verschiedener Gateways ohne das Problem, daß UDP-Pakete, die von demselben
Client kommen, zu verschiedenen Knoten weitergeleitet werden.
-
6 zeigt
eine Ausführungsform
des erfindungsgemäßen Verfahrens.
Im Schritt 1 empfängt das
Gateway-Modul ein UDP-Paket und extrahiert die Quellen-2P-Adresse sowie
die Quellenportnummer. Im Schritt 2 prüft es, ob eine durch ein zuvor empfangenes
Paket gegebene Verbindung besteht. Dazu sucht es nach einem Eintrag
in seiner Liste. Wenn bereits ein Paket von derselben Quelle empfangen
wurde, wird das UDP-Paket zur Verarbeitung durch PS_SV_Udp_Frame
direkt zu dem Dienstmodul auf einem Knoten weitergeleitet.
-
Wenn
dies nicht der Fall ist, sendet das Gateway-Modul im Schritt 3 das
UDP-Paket zu dem Datenbankmodul oder Datenbankknoten. Die Verbindungsprüfung im
Schritt 2 erfolgt durch das Gateway-Modul, oder der Gateway-Knoten versagt, wenn das
empfangene Paket zu einer neuen Verbindung gehört oder das Paket auf einem
neuen Gateway ankam. Eine andere Möglichkeit für ein Versagen liegt vor, wenn
das Gateway von der Benutzerseite geändert wurde oder das ursprüngliche
Gateway einen Ausfall aufwies und ein neues Gateway ausgewählt wurde.
Ferner könnte
es auch möglich
sein, daß das Gateway-Modul bereits ein
vorheriges Paket zur Einteilung zu dem Datenbankmodul weitergeleitet
hat, aber noch keine Antwort von dem Datenbankmodul erhalten hat.
-
Im
Schritt 4 prüft
die Datenbank, ob ein Eintrag für
eine Verbindung besteht. Wenn das Ergebnis positiv ist, aktualisiert
sie das Gateway-Modul durch Senden einer Nachricht DB_PS_Udp_Placement, die
die Identifikation des Knotens enthält, zu der zusätzliche
UDP-Pakete von derselben Verbindung weitergeleitet werden müssen, und
leitet das UDP-Paket dann zu dem ausgewählten Dienstknoten weiter.
Dies geschieht im Schritt 5.
-
Wenn
das Datenbankmodul keinen Eintrag für eine Verbindung findet, wählt es im
Schritt 6 gemäß dem Einteilungsalgorithmus
einen neuen Dienstknoten für
die Verbindung aus. Die Identifikation des Knotens des gewählten Knotens
wird dann zu dem Gateway-Modul weitergeleitet, um die notwendigen
Verbindungseinträge
vorzunehmen. Für
sukzessive Rahmen dieser Verbindung wird eine neue Prüfung positiv
sein. Zusätzlich
leitet das Datenbankmodul im Schritt 7 das UDP-Paket zu
dem Dienstknoten weiter, indem DB_SV_UdpFrame das erste Paket einer
neuen Verbindung anzeigt.
-
In 8 ist
eine Erweiterung des erfindungsgemäßen Verfahrens zur Behandlung
alter Verbindungen gezeigt. Das Dienstmodul in einem Dienstknoten,
der UDP-Pakete verarbeitet, benötigt
eine Möglichkeit
zu entscheiden, ob eine Verbindung veraltet oder noch aktiv ist.
Für diesen.
Zweck wird der Zeitstempel TS in den Dienstknotenlisten in 5 verwendet.
Nachdem eine vordefinierte Verbindungszeit abläuft und keine zusätzlichen
zu der Verbindung gehörenden
UDP-Pakete empfangen werden, räumt
das Dienstmodul die Liste auf, indem es im Schritt 1 als
inaktiv betrachtete Einträge
löscht. Zusätzlich leitet
der Dienstknoten eine Liste von Verbindungen, die für die vordefinierte
Zeit inaktiv waren, zum Aufräumen
durch das Datenbankmodul weiter, wie im Schritt 2 von 8 zu
sehen ist. Dies geschieht durch Senden der Nachricht SV_DB_Udp_Con_Remove_List
zusammen mit der Liste. Die Datenbankliste wird aktualisiert und
die Liste unter Verwendung von DB_SV_Udp_Con_Remove List durch das
Datenbankmodul im Schritt 3 zu dem Gateway-Modul weitergeleitet.
Das Gateway-Modul löscht
die entsprechenden Einträge.
Ankommende UDP-Pakete, die dieselbe IP-Adresse und Portnummer umfassen, werden
nun als neue Verbindungen betrachtet.
-
Weiterhin
zeigt 9 eine Implementierung, die das Versagen eines
Dienstes auf einem Dienstknoten behandelt. Wenn ein Dienstmodul
auf einem Dienstknoten versagt, zum Beispiel wenn der Dienstknoten
abstürzt,
wird eine Nachricht von dem Dienstknoten zu dem Datenbankmodul gesendet,
um alle Einträge
in dem Datenbankmodul, die diesem Dienst entsprechen, aufzuräumen. Dies
geschieht im Schritt 2 durch Senden von SV_DB_Udp_Unbind.
Nach dem Empfang einer solchen Nachricht entfernt das Datenbankmodul
die Knotenidentifikation aus der Liste möglicher Knoten mit der Fähigkeit
zur Verarbeitung der UDP-Pakete. Nach dem Aufräumen aller Einträge in den
Datenbankmodullisten leitet das Datenbankmodul alle notwendigen
Informationen im Schritt 3 unter Verwendung von DB_PS_Udp_Unbind
zu dem Gateway-Modul weiter. Das Gateway-Modul löscht dann alle Verbindungseinträge mit diesem
Knoteneintrag.
-
In 7 ist
ein Beispiel für
ein solches Verfahren zu sehen. Im Schritt 1 wird ein neues
UDP-Paket durch das Gateway-Modul empfangen und als eine neue Verbindung
betrachtet, da das Gateway-Modul keine mit der Identifikation in
dem UDP-Paket assoziierte Einträge
aufweist. Deshalb leitet es das UDP-Paket im Schritt 2 zu
dem Datenbankmodul weiter, wobei das Datenbankmodul einen Knoten
gemäß dem Einteilungsalgorithmus
zur Verarbeitung des UDP-Pakets auswählt. Das UDP-Paket wird durch
das Datenbankmodul zu dem gewählten
Knoten weitergeleitet, und das Datenbankmodul aktualisiert außerdem das
Gateway-Modul durch Senden der Identifikation des Knotens.
-
Weitere
UDP-Pakete von derselben Quelle, die durch das Gateway-Modul empfangen
werden, werden im Schritt 4 automatisch zu dem Dienstknoten
weitergeleitet. Im Schritt 5 versagt der Gateway-Knoten.
Im Schritt 6 wird durch die zugrundeliegende Cluster-Software
automatisch ein neues Gateway ausgewählt. Das neue ausgewählte Gateway empfängt nun
das UDP-Paket von derselben Verbindung wie im Schritt 4.
Das neue ausgewählte
Gateway besitzt jedoch keinen Eintrag für diese Verbindung. Daher leitet
es das UDP-Paket im Schritt 8 zu dem Datenbankmodul weiter.
Das Datenbankmodul prüft
auch seine Verbindungen und findet einen Eintrag mit demselben IP-Eintrag
und derselben Portnummer. Es gibt dann einfach die entsprechende Identifikation
des Dienstknotens im Schritt 9 an das neu ausgewählte Gateway-Modul
zurück
und leitet im Schritt 10 das UDP-Paket zu diesem Knoten weiter.
-
Der
Dienstknoten empfängt
nun für
einige Zeit keine UDP-Pakete von dieser spezifischen IP-Adresse
und Portnummer und betrachtet die Verbindung deshalb im Schritt 11 aufgrund
des Überschreitens
einer Zeitgrenze als inaktiv. Er löscht den entsprechenden Eintrag
und leitet den zu löschenden Eintrag
im Schritt 12 zu dem Datenbankmodul weiter. Das Datenbankmodul
räumt alle
dieser Verbindung entsprechende Einträge auf und leitet dieselbe
Liste im Schritt 13 zu dem Gateway-Modul weiter. Nach dem
Aufräumen
aller existierenden Verbindungen kann der Dienstknoten nun von dem
Cluster abbinden, indem er das Datenbankmodul anweist, diesen Knoten
für die
zukünftige
Einteilung nicht zu benutzen.
-
Aufgrund
der redundanten Informationen in dem Datenbankmodul ist es möglich, ankommende Verbindungen
zur Verarbeitung zu demselben Dienstknoten zu routen, auch wenn
ein Gateway-Knoten versagt. Es ist nützlich, eine Backup-Datenbank
zu implementieren. Die Backup-Datenbank sammelt
auch die Verbindungsinformationen von allen Dienstknoten, wodurch
im Fall eines Versagens des Datenbankmoduls ein sanftes Failover
möglich wird.
Wenn ein Dienstknoten versagt, würden
auch alle existierenden Verbindungen zu dem versagenden Knoten versagen.
Zukünftige
Pakete für
diesen spezifischen Knoten würden
so geroutet, als wären sie
neue Verbindungen. Das Datenbankmodul räumt seine Tabelle für die Verbindungseinträge, die
dem Dienstknoten entsprechen, auf, wenn der Dienstknoten versagt.
Der Zeitgrenzenwert, nach dem ankommende UDP-Pakete als zu einer
neuen Verbindung gehörend
angenommen werden, kann auf Dienstbasis sowie auf knoten- oder clusterweiten
Basis spezifiziert werden. Dieses Verfahren und diese Vorrichtung,
die in einer Cluster-Software oder in einem skalierbaren Internetdienst
implementiert werden können,
ermöglichen
ein Verteilen und Neurouten von UDP-Paketen mit hoher Verfügbarkeit.
-
- 1
- Clustersystem
- 2
- Gateway-Modul
- 3
- Datenbankmodul
- 4,
5, 6
- Dienstmodul
- 12,
13, 14, 15
- Knoten
- 16,
17
- Netzwerke
- 11
- Verbindung
- 20
- Firewall
- 21
- Internet
- 22,
221
- Clients
- RQ1,
RQ2, RQ1'
- UDP-Pakete
- IDP,
IDA
- Quellenadresse
- DPP,
DIP
- Zieladresse
- ID
- Identifikation
des Knotens
- LG
- Gateway-Liste
- LD
- Datenbankliste
- LN4,
LN5, LN6
- Knotenliste
- TS
- Zeitstempel
- VIP
- Virtuelle
IP-Adresse
- LGA
- Gateway-Listen