-
HINTERGRUND
-
Gebiet der Erfindung
-
Die
vorliegende Erfindung betrifft verteilte Computersysteme. Genauer
betrifft die vorliegende Erfindung ein Verfahren und eine Vorrichtung
für die Verwendung
eines zentralisierten Servers, um die Zuweisung von Kennungen von
mehreren Knoten in einem verteilten Computersystem zu koordinieren.
-
Verwandte Technik
-
Computer
verwenden gemeinhin TCP/IP (Übertragungssteuerungs-Protokoll/Internet-Protokoll),
um Daten in Form von Paketen über
ein Netz zu schicken. Jedoch kann je nach der Struktur des Netzes
zwischen dem Sender und dem Empfänger
ein Datenpaket bei einem Verfahren, das als "Fragmentierung" bekannt ist, in kleinere Teile, die
so genannten "Fragmente", gebrochen werden.
Der Empfänger muss
dann diese Fragmente wieder zusammenfügen, um das ursprüngliche
Paket wiederherzustellen. Es ist zu beachten, dass Fragmente in
einer beliebigen Reihenfolge ankommen können und dass Fragmente mehrmals
oder möglicherweise
nicht ankommen können.
-
Zur
Unterstützung
einer Fragmentierung enthält
ein IP-Paket ein 16-Bit-Kennungsfeld, das jedes Paket, das der Sender
abschickt, eindeutig identifiziert. Das Kennungsfeld wird verwendet,
um Fragmente zu identifizieren, die wieder zu einem einzigen Paket
zusammengefügt
werden sollen, und um sicherzustellen, dass nicht Fragmente von
zwei verschiedenen Paketen miteinander kombiniert werden.
-
Um
dieses Ziel zu erreichen muss das Kennungsfeld für ein bestimmtes Sender-Empfängerpaar eindeutig
sein, wobei für
den Zeitraum, in dem das zugehörige
Paket in dem System aktiv sein könnte, ein
besonderes Protokoll verwendet wird. Statt die Kennungsnummern für jeden
Empfänger
gesondert zu verfolgen, verwendet der Sender typisch sequentielle
Kennfeldwerte für
jedes gesendete Paket unter der Annahme, dass die Zeit zwischen
wiederholten Verwendungen eines Kennfeldwertes länger als die Lebensdauer eines
Pakets in dem Netz sein wird.
-
Diese
einfache Zuweisung von IP-Kennungsnummern könnte nicht gut funktionieren,
wenn der Sender nicht ein einzelner Computer, sondern stattdessen
ein Cluster von Computern ist. Ein Cluster könnte viele Computer enthalten,
die zusammenarbeiten, um Netzanforderungen abzuwickeln.
-
Für viele
Zwecke ist es wünschenswert,
dass das Cluster gegenüber
den Netz-Clients
als eine einzige Maschine in Erscheinung tritt. Dazu wird allen abgehenden
Datenpaketen eine IP-Adresse gegeben. Bei einer derartigen Architektur
genügt
es nicht länger,
jedem Knoten sequentielle IP-Kennungsnummern zuzuweisen, da zwei
Knoten die gleiche Nummer nahezu gleichzeitig verwenden könnten, wodurch
die Wahrscheinlichkeit verstümmelter
Daten zunimmt, wenn ein Empfänger
versucht, die Fragmente wieder zu einem Paket zu kombinieren.
-
Eine
Alternative ist, dass ein Knoten in dem Cluster die gesamte TCP/IP-Verarbeitung
einschließlich
der Zuordnung von Kennungsnummern übernimmt. Dadurch wird jedoch
ein Engpass an diesem Knoten geschaffen. Die Leistungsfähigkeit
des Clusters wird verbessert, wenn alle Knoten parallel die TCP/IP-Verarbeitung
durchführen
können.
-
Eine
Lösung
dieses Problems ist die Aufteilung der Kennungsnummern unter den
Serverknoten in dem Cluster. Beispielsweise kann ein erster Knoten
die Nummern 1 bis 100 verwenden, ein zweiter Knoten kann die Nummern
101 bis 200 verwenden, usw. Diese Lösung stellt jedoch nicht sicher,
dass die Kennungsnummern eindeutig sind, da nur 16 Bits für die Kennungsnummern
zur Verfügung
stehen. Folglich werden die Kennungsnummern zu schnell wiederverwendet.
Wenn es beispielsweise 100 Server gibt, würde jeder Server nur 216/100 = 655 Werte erhalten und diese Werte
kurz hintereinander wiederholt verwenden, wodurch sich die Wahrscheinlichkeit von
unrichtig kombinierten Fragmenten erhöht.
-
Eine
weitere Alternative ist, dass jeder Knoten in dem Cluster eine eindeutige
Kennungsnummer für
jedes Paket von einem zentralisierten Server erhält. Dies führt jedoch zu einem Leistungsengpass, da
jedes abgehende Paket um die Zeit verzögert ist, die erforderlich
ist, um die nächste
Nummer von dem zentralisierten Server abzurufen. Außerdem ist
es wahrscheinlich, dass der zentralisierte Server mit der Verarbeitung
von Anforderungen von vielen Knoten überlastet wird.
-
Es
wird also ein Verfahren und eine Vorrichtung für eine effiziente Zuweisung
von Paket-Kennungen zu Paketen von mehreren Knoten in einem verteilten
Computersystem gebraucht.
-
WO-95/32
463 (Ontos Inc.) beschreibt ein System für eine globale Erzeugung eindeutiger
Objektkennungen in einer verteilten, objektorientierten Datenbank.
Eine Server-Verarbeitung liefert global eindeutige Kennungen für Objekte überall in
dem Netz in Reaktion auf Anforderungen, die von Client-Verarbeitungen
gesendet werden, wovon jede Transaktionen gegenüber der Datenbank zu laufen haben
kann. Der Server sendet eine Reihe von global eindeutigen Kennungen
an eine anfordernde Client-Verarbeitung, aus welcher die Client-Verarbeitung
dann den Objekten, die sie erzeugt, lokal eindeutige Kennungen zuweisen
kann. Ungenutzte Abschnitte der reservierten Reihen können zur
späteren Wiederverwendung
durch dieselben oder andere Client-Verarbeitungen an den Server
zurückgegeben werden.
-
EP-A-0
605 339 (IBM Corporation) ist repräsentativ für den Stand der Technik, der
einem Cluster von Computern ermöglicht,
gegenüber
Hostcomputern außerhalb
des Clusters in einem Computernetz als ein einziger Computer in
Erscheinung zu treten. Ein Hostcomputer kommuniziert nur mit einer Überleiteinrichtung,
um auf Zielknoten und -verarbeitungen innerhalb des Clusters zuzugreifen.
Es ist ein Verfahren beschrieben, um Nachrichten so über die Clustergrenze
oder Überleiteinrichtung
zu leiten, dass Arbeitsanforderungen von außerhalb des Clusters gleichmäßig unter
den Computerknoten in dem Cluster verteilt werden können, indem
die Nachrichtenkopfinformationen geändert werden. Eine Beschreibung
der TCP/IP-Paketfragmentierung des Standes der Technik und von Verfahren
zum Wiederzusammenfügen
ist ebenfalls enthalten.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Die
vorliegende Erfindung schafft ein Verfahren, eine Vorrichtung und
ein Computerprogramm gemäß den nachfolgenden
Ansprüchen,
die einen zentralisierten Server verwenden, um die Zuweisung von
Kennungen in einem verteilten Computersystem zu koordinieren. Das
System arbeitet so, dass es eine Anforderung für einen Block von Kennungen
bei dem zentralisierten Server von einem anfordernden Knoten in
dem verteilten Computersystem empfängt. In Reaktion auf diese
Anforderung wählt
das System einen Block von Kennungen aus einem globalen Verbund
von Kennungen aus und markiert dann den globalen Verbund von Kennungen,
um anzugeben, dass der ausgewählte
Block von Kennungen zugewiesen worden ist. Das System sendet den
ausgewählten Block
von Kennungen zu dem anfordernden Knoten, um dem anfordernden Knoten
zu ermöglichen,
Kennungen. aus dem ausgewählten
Block von Kennungen zuzuweisen, ohne mit dem zentralisierten Server kommunizieren
zu müssen.
-
In
einer Ausführungsform
der vorliegenden Erfindung markiert das System bei Empfang eines Hinweises,
dass der ausgewählte
Block von Kennungen von dem anfordernden Knoten nicht mehr länger verwendet
wird, den globalen Verbund von Kennungen, um anzugeben, dass der
ausgewählte
Block von Kennungen nicht länger
zugewiesen ist.
-
In
einer Ausführungsform
der vorliegenden Erfindung empfängt
das System eine nachfolgende Anforderung für einen nachfolgenden Block
von Kennungen von dem anfordernden Knoten zusammen mit dem Hinweis,
dass der ausgewählte
Block von Kennungen nicht länger
verwendet wird.
-
In
einer Ausführungsform
der vorliegenden Erfindung stellt der zentralisierte Server sicher,
dass, wenn der ausgewählte
Block von Kennungen zu dem zentralisierten Server zurückgeleitet
wird, der ausgewählte
Block von Kennungen nicht sofort wieder dem anfordernden Knoten
zugewiesen wird. Dies wird durch Markieren des ausgewählten Blocks
von Kennungen in dem globalen Verbund mit einer Kennung für den anfordernden
Knoten verwirklicht.
-
In
einer Ausführungsform
der vorliegenden Erfindung enthält
der ausgewählte
Block von Kennungen eine Internet-Protokoll-Kennung (IP-Kennung),
die in einen Kopfsatz eines IP-Pakets einzubauen ist, um die Wiederzusammenfügung des IP-Pakets zu erleichtern.
-
In
einer Ausführungsform
der vorliegenden Erfindung ist das verteilte Computersystem ein
Cluster-Computersystem, das mehrere Knoten enthält, die dieselbe IP-Adresse gemeinsam
nutzen.
-
In
einer Ausführungsform
der vorliegenden Erfindung ist der globale Verbund von Kennungen
als verknüpfte
Liste, die Blöcke
von Kennungen enthält, strukturiert.
-
In
einer Ausführungsform
der vorliegenden Erfindung enthält
der ausgewählte Block
von Kennungen eine Menge aufeinander folgender Kennungsnummern.
-
In
einer weiteren Ausführungsform
der vorliegenden Erfindung enthält
der ausgewählte
Block von Kennungen eine Menge von nicht aufeinander folgenden Kennungsnummern.
-
In
einer Ausführungsform
der vorliegenden Erfindung umfasst das Senden des ausgewählten Blocks
von Kennungen an den anfordernden Knoten das Senden eines Spezifizierers
für einen
Bereich aufeinander folgender Kennungsnummern, wobei der Spezifizierer
einen Startwert für
den Bereich und einen Endwert für
den Bereich enthält.
-
Folglich
weist die vorliegende Erfindung nicht das Prablem auf, dass der
zentralisierte Server überlastet
wird, da der zentralisierte Server für jeden Block von Kennungen
nur einmal kontaktiert werden muss. Dies verringert die Belastung
des zentralisierten Servers erheblich. Außerdem wird dadurch die Zeit
verkürzt,
die erforderlich ist, um ein Paket zu senden, da der zentralisierte
Server nicht kontaktiert werden muss, bevor das Paket gesendet wird.
-
Außerdem weist
die vorliegende Erfindung nicht das Problem auf, dass in dem Fall,
in dem nur eine kleine Anzahl von Knoten die Kennungsnummern rasch
einsetzt, die IP-Kennungsnummern zu schnell aufgebraucht sind. Wenn
beispielsweise ein Cluster von 100 Knoten zwei Knoten hat, die laufend Netzdienste
verrichten, würde
die oben beschriebene Aufteilungslösung nur 655 Paketkennungen
für jeden
Knoten liefern, bevor die Nummern wiederverwendet werden. Hingegen
würde die
Blocklösung 216/2 = 32768 Paketkennungen für jeden
momentan aktiven Knoten liefern. Es ist zu beachten, dass es typisch
nicht möglich
ist, im Voraus zu bestimmen, welche Knoten Netzaktivitäten entfalten
werden. Folglich müssen
bei der Aufteilungslösung
die Kennungsnummern unter allen 100 Knoten und nicht nur zwischen
den zwei momentan aktiven Knoten aufgeteilt werden.
-
KURZBESCHREIBUNG
DER ZEICHNUNG
-
1 veranschaulicht
ein Cluster-Computersystem, das gemäß einer Ausführungsform
der vorliegenden Erfindung an Client-Computersysteme gekoppelt ist;
-
2 veranschaulicht
den inneren Aufbau eines Schnittstellen-/Server-Knotens und zweier
Serverknoten in einem Cluster-Computersystem gemäß einer Ausführungsform
der vorliegenden Erfindung;
-
3 veranschaulicht
einen zentralisierten Server und einen lokalen Mechanismus zum Zuweisen
von Kennungen gemäß einer
Ausführungsform der
vorliegenden Erfindung;
-
4 ist
ein Ablaufplan, der die Funktion eines fokalen Mechanismus zum Zuweisen
von Kennungen gemäß einer
Ausführungsform
der vorliegenden Erfindung zeigt;
-
5 ist
ein Ablaufplan, der zeigt, wie der zentralisierte Server Blöcke von
Kennungen gemäß einer
Ausführungsform
der vorliegenden Erfindung zuweist;
-
6 veranschaulicht
die Struktur eines Blocks von Kennungen gemäß einer Ausführungsform
der vorliegenden Erfindung;
-
7 ist
ein Ablaufplan, der zeigt, wie gemäß einer Ausführungsform
der vorliegenden Erfindung ein lokaler Mechanismus Kennungen anfordert und
zurückgibt;
-
8 ist
ein Ablaufplan, der zeigt, wie gemäß einer Ausführungsform
der vorliegenden Erfindung ein lokaler Mechanismus eine Kennung
aus einem Block von Kennungen entnimmt;
-
9 ist
ein Ablaufplan, der zeigt, wie gemäß einer Ausführungsform
der vorliegenden Erfindung ein lokaler Mechanismus eine Kennung
an einen Block von Kennungen zurückgibt.
-
AUSFÜHRLICHE
BESCHREIBUNG
-
Die
folgende Beschreibung wird präsentiert, um
einen Fachmann auf dem Gebiet in die Lage zu versetzen, die Erfindung
nachzuvollziehen und anzuwenden, wobei sie im Kontext einer besonderen
Anwendung und ihrer Erfordernisse gegeben wird. Einem Fachmann auf
dem Gebiet werden verschiedene Modifikationen der offenbarten Ausführungsformen
ohne weiteres offensichtlich sein, und die allgemeinen Prinzipien,
die hier definiert sind, können
auf andere Ausführungsformen und
Anwendungen übertragen
werden, ohne von der Idee und vom Geltungsbereich der vorliegenden
Erfindung abzukommen. Folglich soll die vorliegende Erfindung nicht
auf die gezeigten Ausführungsformen
beschränkt
sein, sondern ihr soll der weiteste Geltungsbereich, der mit den
hier offenbarten Prinzipien und Merkmalen verträglich ist, gewährt werden.
-
Die
in dieser ausführlichen
Beschreibung angegebenen Datenstrukturen und Codes sind typisch auf
einem computerlesbaren Speichermedium gespeichert, das jede Vorrichtung
oder jedes Medium sein kann, die bzw. das Code und/oder Daten für die Verwendung
durch ein Computersystem speichern kann. Dies umfasst, ohne jedoch
hierauf beschränkt zu
sein, magnetische und optische Speichervorrichtungen wie etwa Plattenlaufwerke,
Magnetbänder, CDs
(Compactdiscs) und DVDs (Digitale Videodiscs) und Computerbefehlssignale,
die in einem Übertragungsmedium
verkörpert
sind (mit oder ohne eine Trägerwelle,
auf welche die Signale moduliert sind). Beispielsweise kann das Übertragungsmedium
ein Kommunikationsnetz wie etwa das Internet einbeziehen.
-
Cluster-Computersystem
-
1 veranschaulicht
ein Cluster-Computersystem 100, das gemäß einer Ausführungsform der
vorliegenden Erfindung an Clients 121 bis 123 gekoppelt
ist. Die Clients 121 bis 123 können jeden Knoten eines Netzes 120 umfassen,
Rechenkapazität
und ein Mechanismus, um über
das Netz 120 zu kommunizieren, eingeschlossen. Die Clients 121 bis 123 kommunizieren
mit dem Cluster-Computersystem 100, indem sie Pakete zu
dem Cluster-Computersystem 100 senden, um Dienste von dem
Cluster-Computersystem anzufordern.
-
Das
Netz 120 kann einen beliebigen Typ eines drahtgebundenen
oder drahtlosen Kommunikationskanals enthalten, der in der Lage
ist, Verarbeitungsknoten zusammenzuschalten. Dies umfasst, ohne
jedoch hierauf beschränkt
zu sein, ein lokales Netz, ein Weitverkehrsnetz oder eine Kombination von
Netzen. In einer Ausführungsform
der vorliegenden Erfindung bezieht das Netz 120 das Internet
ein.
-
Das
Cluster-Computersystem 100 umfasst eine Menge von Knoten,
die durch private Querverbindungen 119 miteinander gekoppelt
sind. Diese Knoten umfassen sowohl Serverknoten 102 und 104, als
auch einen Schnittstellenknoten/ Serverknoten 103.
-
Die
Knoten 102 bis 104 sind mittels privater Querverbindungen 119 miteinander
gekoppelt, die im Allgemeinen einen beliebigen Typ von Kommunikationsmechanismus
umfassen können.
In einer Ausführungsform
der vorliegenden Erfindung hält
sich die private Querverbindung 19 an die Ethernet-Norm.
In einer weiteren Ausführungsform
hält sich
die private Querverbindung 119 an die Norm des Scalable
Coherent Interconnect (SCI-Norm). Es ist zu beachten, dass die vorliegende
Erfindung nicht auf Systeme beschränkt werden soll, die Ethernet-
oder SCI-Normen verwenden. Im Allgemeinen kann die vorliegende Erfindung
mit jedem beliebigen Netzprotokoll angewendet werden.
-
Es
ist zu beachten, dass der Schnittstellenknoten 103 eine
oder mehrere gemeinsame IP-Adressen für das Cluster-Computersystem
beherbergen kann. Außerdem
ist zu beachten, dass in dem Cluster-Computersystem 100 mehr
als ein Knoten als Schnittstellenknoten für einen bestimmten Dienst agieren
kann. Dies ermöglicht,
dass ein Ausweichschnittstellenknoten die Aufgabe eines Schnittstellenknotens,
der ausfällt, übernimmt.
-
Es
ist zu beachten, dass die Knoten 102 bis 104 in
dem Cluster-Computersystem 100 skalierbare Dienste liefern
können,
wobei zusätzliche
Verarbeitungsbetriebsmittel eingesetzt werden können, um einen Dienst zu liefern,
wenn die Nachfrage für
den Dienst zunimmt. Aus der Sicht der Clients 121 bis 123 verhält sich
jeder skalierbare Dienst wie ein einziges logisches Objekt. Außerdem ist
zu beachten, dass die Clients 121 bis 123 über eine Übertragungssteuerungs-Protokoll-Verbindung
(TCP-Verbindung, TCP: Transmission Control Protocol) oder über eine Benutzer-Datenpaket-Protokoll-Sitzung
(UDP-Sitzung, UDP: User Datagram Protocol) mit dem Cluster-Computersystem 100 kommunizieren
können. (Es
ist zu beachten, dass mit der vorliegenden Erfindung auch andere
Protokolle verwendet werden können.)
-
Das
Cluster-Computersystem 100 arbeitet im Allgemeinen wie
folgt: Wenn am Schnittstellenknoten 103 Pakete von den
Clients 121 bis 123 eintreffen, wird auf der Grundlage
der Zieladresse in dem Paket ein Dienst ausgewählt. Als Nächstes wird für das Paket
auf der Grundlage sowohl der Herkunftsadresse des Pakets als auch
der Zieladresse des Pakets eine Diensteinstanz ausgewählt. Es
ist zu beachten, dass das System sicherstellt, dass Pakete, die
zu derselben TCP-Verbindung
oder UDP-Instanz gehören,
zu derselben Diensteinstanz gesendet werden. Schließlich wird
das Paket zu der ausgewählten Diensteinstanz
gesendet.
-
Außerdem ist
zu beachten, dass die Serverknoten 102 bis 104 Mechanismen
für eine
Zuweisung von Kennungen enthalten. Genauer beherbergt der Serverknoten 104 einen
zentralisierten Server für Kennungen 130 und
lokale Mechanismen für
Kennungen 131, der Serverknoten 102 beherbergt
einen lokalen Mechanismus, um Kennungen 132 zuzuweisen,
und der Serverknoten 103 beherbergt einen lokalen Mechanismus,
um Kennungen 133 zuzuweisen. Während des Betriebs fordern
die lokalen Mechanismen 132 bis 133 Blöcke von
Kennungen von dem zentralisierten Server 130 an. In Reaktion
auf diese Anforderungen weist der zentralisierte Server 130 den
lokalen Mechanismen 132 und 133 Blöcke von
Kennungen aus einem globalen Verbund von Kennungen 302 zu
(siehe 3). Nachdem die lokalen Mechanismen 132 und 133 das
Zuweisen von Kennungen für
einen Block beendet haben, wird der Block an den zentralisierten
Server 130 zurückgegeben,
und der zentralisierte Server 130 gibt den Block an den
globalen Verbund 302 zurück. Dieses Verfahren ist weiter
unten mit Bezug auf 3 bis 9 ausführlicher
beschrieben.
-
Es
ist zu beachten, dass die Blockgröße in Abhängigkeit von der Anzahl der
Knoten in dem Cluster verändert
werden kann. Um zu ermöglichen,
dass jeder Knoten in dem Cluster gleichzeitig einen Block besitzt,
muss es wenigstens so viele Blöcke
wie Knoten geben. Folglich müssen
die Blöcke
kleiner als die Anzahl der Kennungen dividiert durch die Anzahl
der Knoten in dem Cluster sein. Es ist jedoch zu beachten, dass
eine geringere Blockgröße den Vorteil
hat, dass sich der Zeitraum zwischen Wiederverwendungen der Kennungen
vergrößert, da
die Kennungen nicht an einen Knoten gebunden sein werden, der sie sehr
langsam verwendet. Andererseits, wenn die Blöcke kleiner sind, müssen sie
häufiger
angefordert werden, wodurch sich der Systemverwaltungsaufwand erhöht. Folglich
hängt die
optimale Blockgröße von den
spezifischen Parametern eines spezifischen Systems und der Anwendung
ab.
-
Außerdem ist
zu beachten, dass, obwohl die vorliegende Erfindung im Kontext einer
spezifischen Cluster-Computersystemarchitektur beschrieben ist, die
vorliegende Erfindung allgemein auf jedes System angewendet werden
kann, in dem mehr als eine Einheit eine Menge von Kennungen zuweist.
-
Innerer Aufbau von Schnittstellenknoten
und Serverknoten
-
2 veranschaulicht
den inneren Aufbau des Schnittstellenknotens 103 sowie
der Server-Knoten 102 und 104 in dem Cluster-Computersystem 100 gemäß einer
Ausführungsform
der vorliegenden Erfindung. Der Client 121 sendet Pakete
zu dem Cluster-Computersystem 100, um einen Dienst von dem
Cluster-Computersystem 100 zu erhalten. Diese Pakete gelangen
in die öffentliche
Schnittstelle 221 in dem Schnittstellenknoten 103 in
dem Cluster-Computersystem 100. Die öffentliche Schnittstelle 221 kann
jeden Schnittstellentyp aufweisen, der in der Lage ist, Pakete von
dem Netz 120 zu empfangen.
-
Wenn über die öffentliche
Schnittstelle 221 Pakete an dem Schnittstellenknoten 103 ankommen, durchlaufen
sie den Netzverbund-Multiplexer 218 des Clusters. Der Netzverbund-Multiplexer 218 des Clusters
leitet die Pakete auf der Grundlage von Belastungsausgleichsentscheidungen
und anderen Überlegungen
zu verschiedenen Knoten innerhalb des Cluster-Computersystems 100 weiter.
-
Die
Pakete werden von dem Schnittstellenknoten 103 zu anderen
Knoten in dem Cluster-Computersystem 100, einschließlich der
Serverknoten 102 und 104, über private Schnittstellen 224 und 225 weitergeleitet.
Die privaten Schnittstellen 224 und 225 können eine
beliebige Schnittstelle enthalten, die Kommunikationen zwischen
den Knoten innerhalb des Cluster-Computersystems 100 abwickeln
kann. Beispielsweise können
Pakete von der privaten Schnittstelle 224 zu der privaten
Schnittstelle 226 am Serverknoten 104 oder von
der privaten Schnittstelle 225 zu der privaten Schnittstelle 228 am
Serverknoten 102 weitergeleitet werden. Es ist zu beachten, dass
die privaten Schnittstellen 224 und 225 keine Kommunikationen
mit Einheiten außerhalb
des Cluster-Computersystems 100 abwickeln.
-
In
einigen Ausführungsformen
der vorliegenden Erfindung benutzen die private Schnittstelle 224 (und 225)
und die öffentliche
Schnittstelle 221 teilweise gemeinsam dieselbe Kommunikations-Hardware und
senden Nachrichten teilweise über
dieselben physischen Datenwege. In einigen dieser Ausführungsformen
können
die private Schnittstelle 224 und die öffentliche Schnittstelle 221 auch
teilweise dieselbe Schnittstellensoftware gemeinsam benutzen. Folglich
brauchen die private Schnittstelle 224 und die öffentliche
Schnittstelle 221 keine verschiedenen Kommunikationsmechanismen
darzustellen. Deshalb kann die Unterscheidung zwischen privater Schnittstelle 224 und öffentlicher
Schnittstelle 221 lediglich eine Unterscheidung darin sein,
ob die Kommunikationen mit einer Einheit außerhalb des Cluster-Computersystems 100 oder
mit einer Einheit innerhalb des Cluster-Computersystems 100 erfolgen.
-
Die
in die Serverknoten 102 und 104 gelangenden Pakete
passieren die IP-Stapelspeicher 214 bzw. 216.
Der Netzverbund-Multiplexer 218 des Clusters kann die Pakete
auch zu dem IP-Stapelspeicher 215 in dem Schnittstellenknoten/
Serverknoten 103 senden, da der Knoten 103 ebenfalls
in der Lage ist, als Server zu agieren. Im Serverknoten 102 gelangen
die Pakete durch den IP-Stapelspeicher 214 in das TCP-Modul 206,
das TCP-Verbindungen unterstützt,
oder in das UDP-Modul 210, das UDP-Sitzungen unterstützt. Genauso
gelangen am Schnittstellenknoten/ Serverknoten 103 Pakete
durch den IP-Stapelspeicher 215 in das TCP-Modul 207 oder
in das UDP-Modul 211. Am Serverknoten 104 gelangen Pakete
durch den IP-Stapelspeicher 216 in das TCP-Modul 208 oder
in das UDP-Modul 212.
Anschließend
werden die Pakete jeweils von den Diensteinstanzen 201 bis 203 an
den Knoten 102 bis 104 verarbeitet.
-
Es
ist zu beachten, dass Rückmeldungen
für die
Serverknoten 102 und 104 nicht demselben Weg folgen.
Rückmeldungen
werden vom Serverknoten 102 durch den IP-Stapelspeicher 214, über die öffentliche
Schnittstelle 220 zu dem Client 121 weitergegeben.
Genauso werden Rückmeldungen
vom Serverknoten 104 durch den IP-Stapelspeicher 216, über die öffentliche
Schnittstelle 222 an den Client 121 weitergegeben.
Dies befreit den Schnittstellenknoten 103 von der Abwicklung
von Rückmeldungsverkehr.
-
Bei
Web-Server-Anwendungen (und einigen anderen Anwendungen) kann dieser
Rückmeldemechanismus
für einen
Belastungsausgleich hinsichtlich des Rückwärtsverkehrs sorgen. Es ist
zu beachten, dass Web-Server typisch Navigationsbefehle von einem
Client empfangen und in Reaktion darauf große Mengen von Website-Inhalten
(wie etwa graphische Darstellungen) an den Client zurücksenden. Bei
diesen Anwendungen ist es vorteilhaft, den Rückwärtsverkehr über mehrere Rückwärtswege
zu verteilen, um die große
Menge an Rückwärtsverkehr
abzuwickeln.
-
Zentralisierter Server und
lokaler Mechanismus, um Kennungen zuzuweisen
-
3 zeigt
genauer einen zentralisierten Server für Kennungen 130 sowie
den lokalen Mechanismus, um die Kennungen 132 von 1 gemäß einer
Ausführungsform
der vorliegenden Erfindung zuzuweisen. Der zentralisierte Server 130 steht
mit einem globalen Verbund von Kennungen 302 in Verbindung.
-
Der
globale Verbund von Kennungen 302 verfolgt, welche Kennungen
den lokalen Mechanismen 132 und 133 zugewiesen
worden sind. In einer Ausführungsform
der vorliegenden Erfindung umfasst der globale Verbund von Kennungen 302 eine Freiliste 304,
die Blöcke
von Kennungen 306 bis 308 enthält, die nicht zugeordnet worden
sind. Obwohl in 3 der globale Verbund von Kennungen 302 als eine
verkettete Liste organisiert ist, ist zu beachten, dass im Allgemeinen
jeder Typ indizierender Struktur verwendet werden kann, um die Kennungen
zu verfolgen. Außerdem
ist zu beachten, dass die Blöcke von
Kennungen 306 bis 308 Bereiche fortlaufender Kennungsnummern
enthalten. Dadurch ist es möglich,
nur zwei Werte für
jeden Bereich, statt aller Nummern in jedem Bereich zu speichern.
Beispielsweise kann ein Bereich aufeinander folgender Kennungen 3,
4, 5, 6, 7 als Endwerte (3, 7) oder als der erste Wert und eine
Länge (3,
5) gespeichert werden.
-
Der
zentralisierte Server 130 umfasst außerdem einem Empfangsmechanismus 312,
einen Auswahlmechanismus 314, einen Markierungsmechanismus 316 und
einen Sendemechanismus 318. Es ist zu beachten, dass jeder
dieser Mechanismen softwaremäßig als
Funktionen oder Verfahren implementiert sein kann. Der Empfangsmechanismus 312 empfängt eine
Anforderung 324 für
einen Block von Kennungen von dem lokalen Mechanismus 132.
Die Anforderung 324 bewirkt, dass der Auswahlmechanismus 314 einen
Block von Kennungen 320 aus dem globalen Verbund 302 auswählt, und
der Markierungsmechanismus 316 markiert den globalen Verbund 302,
um anzugeben, dass der Block von Kennungen 320 zugewiesen
worden ist. Schließlich
sendet der Sendemechanismus 318 den Block von Kennungen 320 zu
dem lokalen Mechanismus 132.
-
Der
lokale Mechanismus 132 weist nach Bedarf Kennungen vom
Block 320 zu. Dabei benutzt der lokale Mechanismus 132 einen
Zeiger 322, um auf die nächste Position (oder auf den
nächsten
Bereich) zu zeigen, von der (dem) eine Kennung zuzuweisen ist.
-
Verfahren der Zuweisung
von Kennungen in dem lokalen Mechanismus
-
4 ist
ein Ablaufplan, der die Funktion eines lokalen Mechanismus zum Zuweisen
von Kennungen 132 gemäß einer
Ausführungsform
der vorliegenden Erfindung zeigt. Der lokale Mechanismus 132 startet
mit dem Empfang eines IP-Pakets,
das an einen entfernten Ort, wie etwa an den Client 121,
zu senden ist (Schritt 402). Der lokale Mechanismus 132 ermittelt
zuerst, ob er einen nicht leeren Block von Kennungen besitzt (Schritt 404).
Wenn nicht, fordert der lokale Mechanismus 132 einen neuen
Block von Kennungen von dem zentralisierten Server 130 an (Schritt 406)
und empfängt
dann einen neuen Block von Kennungen 320 von dem zentralisierten
Server 130 (Schritt 408).
-
Als
Nächstes
entnimmt der lokale Mechanismus 132 eine Kennung aus seinem
Block von Kennungen 320 (Schritt 410) und sendet
danach das IP-Paket mit der Kennung (Schritt 412). Wenn
an diesem Punkt der Block von Kennungen 320 vollständig aufgebraucht
ist, informiert der lokale Mechanismus den zentralisierten Server 130,
damit der zentralisierte Server 130 den Block 320 in
den globalen Verbund 302 zurückgeben kann (Schritt 414).
In einer Ausführungsform
der vorliegenden Erfindung fordert der lokale Mechanismus 132 zusätzlich einen
neuen Block von Kennungen zu dem gleichen Zeitpunkt an, zu dem er
den zentralisierten Server 130 darüber informiert, dass der lokale
Mechanismus 132 den Block 320 abgearbeitet hat.
-
Verfahren der Zuweisung
von Kennungen im zentralisierten Server
-
5 ist
ein Ablaufplan, der zeigt, wie der zentralisierte Server 130 Blöcke von
Kennungen gemäß einer
Ausführungsform
der vorliegenden Erfindung zuweist. Bei Empfang einer Anforderung (Schritt 502)
ermittelt der zentralisierte Server 130 zuerst, ob die
Anforderung das Erhalten eines Blocks oder das Freigeben eines Blocks
betrifft.
-
Wenn
die Anforderung ist, einen Block zu erhalten, wählt der Server 130 einen
Block von Kennungen 320 aus dem globalen Verbund von Kennungen 302 aus
(Schritt 504) und markiert dann den globalen Verbund 302,
um anzugeben, dass der ausgewählte
Block von Kennungen 320 zugewiesen worden ist (Schritt 506).
Dies kann möglicherweise
das Aufzeichnen einer Kennungsnummer für den Anforderer in dem globalen
Verbund 302 einschließen.) Der
zentralisierte Server 130 sendet dann den ausgewählten Block
von Kennungen 320 zu dem Knoten, der den Block anforderte
(Schritt 508).
-
Wenn
die Anforderung ist, einen Block freizugeben, markiert der zentralisierte
Server 130 den globalen Verbund 302, um anzugeben,
dass der ausgewählte
Block 320 nicht länger
zugewiesen ist (Schritt 514). Wenn diese Angabe außerdem eine
Anforderung eines zusätzlichen
Blocks von Kennungen enthält,
wiederholt der zentralisierte Server 130 die Schritte 504, 506 und 508,
um den zusätzlichen Block
von Kennungen zu senden.
-
Es
ist zu beachten, dass die Zeit zwischen wiederholten Verwendungen
eines Blocks für
den Fall, in dem ein Client 121 mit demselben Knoten 102 in
dem Cluster-Computersystem 100 kommuniziert, verbessert
werden kann. Beispielsweise kann das Cluster-Computersystem 100 ankommende
Client-Anforderungen auf der Grundlage der IP-Adresse des Clients
zu einem bestimmten Knoten leiten. In diesem Fall markiert der Schritt 506 außerdem jeden Block
in dem globalen Verbund 302 mit einer Kennung für den Knoten,
der den Block zuletzt verwendet hat (oder die Knoten, die den Block
zuletzt verwendet haben). Wenn der zentralisierte Server im Schritt 504 einen
Block von Kennungen auswählt,
stellt der zentralisierte Server sicher, dass er einen Block auswählt, der
zuletzt von einem anderen Knoten verwendet wurde.
-
Es
ist zu beachten, dass eine Wiederverwendung von Nummern nur dann
ein Problem ist, wenn eine Nummer im Zusammenhang mit einem Client verwendet
wird, der die Nummer zuvor verwendet hat. Folglich werden durch
Anwenden der oben beschriebenen Verbesserung die Nummern mit verschiedenen
Clients verwendet, wodurch sich die Zeit zwischen möglichen
Wiederverwendungen verlängert.
Außerdem
ist zu beachten, dass ein Block in dem globalen Verbund 302 entweder
mit dem letzten Knoten, der ihn benutzte, oder mit einer Liste der
letzten n Knoten, die ihn benutzten, markiert werden kann.
-
Zuweisung von Prozesskennungen
-
Die
vorliegende Erfindung ist nicht nur auf die Zuweisung von IP-Paketkennungen,
sondern auch auf andere Anwendungen in einem verteilten System anwendbar.
Beispielsweise erfordert ein verteiltes System, das das Bild eines
Einzelsystems liefert, für
jeden Prozess in dem verteilten System eine eindeutige Prozesskennung
(PID: Process Identifier). Wie bei IP-Sequenznummern könnte eine
feste Aufteilung des Prozesskennungsraums nicht ausreichend viele
Prozesskennungen (PIDs) für
jeden Knoten lassen, da verschiedene Knoten einen verschiedenen
Bedarf haben können.
Auch kann der Systemverwaltungsaufwand, der am Kontaktieren eines
zentralen Servers beteiligt ist, um jede PID zuzuweisen, zu hoch
sein. Folglich kann die Technik der Zuweisung von Blöcken von
Kennungen sowohl für
die Zuweisung von Prozesskennungen als auch für die Zuweisung von IP-Paketkennungen vorteilhaft
sein.
-
Eine
Schwierigkeit bei der Zuweisung von PIDs ist, dass ein Knoten eine
PID über
einen langen Zeitraum benutzen kann, in dem die PID von einem anderen
Knoten nicht benutzt werden kann. Dies hindert den zentralisierten
Server 130 darin, Blöcke
fester Größe mit aufeinander
folgenden Kennungen zuzuweisen, da die fortdauernde Verwendung einer einzigen
PID aus einem Block die Weiterverwendung des Blocks verhindert.
Dieses Problem kann schließlich
alle Blöcke
binden.
-
Um
dieses Problem zu lösen,
kann die Erfindung wie folgt erweitert werden. Statt den zentralisierten
Server 130 darüber
zu informieren, dass er mit einem gesamten Block von aufeinander
folgenden PIDs fertig ist, informiert der Knoten den zentralisierten
Server 130 darüber,
welche PIDs nicht länger
im Gebrauch sind. Auch kann der zentralisierte Server 130,
statt den anfordernden Knoten einen Block fester Größe aufeinander
folgender PIDs zu liefern, einen variablen Block von PIDs liefern,
der PIDs enthält,
die von anderen Knoten nicht länger
gebraucht werden.
-
In
einigen Fällen
ist es wünschenswert,
den Umfang der PIDs aus Gründern
der Anwenderfreundlichkeit möglichst
gering zu halten. Dies kann durch Verwenden einer Teilmenge des
möglichen Kennnummernbereichs
erreicht werden, die erweitert werden kann, wenn zusätzliche
PIDs erforderlich sind, und die zeitlichen Beschränkungen
hinsichtlich der Wiederverwendung unterliegt.
-
6 veranschaulicht
die Struktur eines Blocks von Kennungen 320 gemäß einer
Ausführungsform
der vorliegenden Erfindung. Um den Speicherplatzbedarf zu verringern
verfolgt der zentralisierte Server 130 freie PIDs als Sequenzen
und übergibt
anfordernden Knoten eine Menge von Sequenzen. Der Block von Kennungen 320 umfasst
eine Verfügbarkeitsliste 600,
die als verkettete Liste strukturiert ist, die Bereiche von Kennungen
1–10,
20–20, 25–99 und
103–700
enthält.
-
7 ist
ein Ablaufplan, der zeigt, wie gemäß einer Ausführungsform
der vorliegenden Erfindung ein lokaler Mechanismus 132 Kennungen
anfordert und zurückgibt.
Wenn die Verfügbarkeitsliste 600 leer
ist, fordert der lokale Mechanismus 132 mehr Kennungen
an (Schritt 702). Wenn andererseits die Verfügbarkeitsliste 600 zu
lang wird (einen im Voraus definierten Schwellenwert überschreitet), gibt
der lokale Mechanismus 132 Kennungen an den zentralisierten
Server 130 zurück
(Schritt 704). Wenn der lokale Mechanismus 132 einen
Block von Kennungen an den zentralisierten Server 130 zurückgibt, wird
die Liste von Bereichen in dem Block unter Verwendung wohl bekannter
Techniken für
die Verbindung von Bereichen von Nummern mit einer ähnlichen
Liste in dem globalen Verbund 302 verbunden.
-
8 ist
ein Ablaufplan, der zeigt, wie gemäß einer Ausführungsform
der vorliegenden Erfindung ein lokaler Mechanismus 132 eine
Kennung aus einem Block von Kennungen 320 entnimmt. Der lokale
Mechanismus 132 erhält
die erste Nummer aus dem ersten Bereich in der Verfügbarkeitsliste 600 (Schritt 802).
Nachdem die Nummer abgerufen ist, entfernt der lokale Mechanismus 132,
wenn der erste Bereich leer wird, den ersten Bereich von der Verfügbarkeitsliste 600 (Schritt 804).
-
9 ist
ein Ablaufplan, der zeigt, wie gemäß einer Ausführungsform
der vorliegenden Erfindung ein lokaler Mechanismus 132 eine
Kennung an einen Block von Kennungen zurückgibt: Der lokale Mechanismus 132 beginnt
mit dem ersten Bereich. Der lokale Mechanismus 132 ermittelt
zuerst, ob die Kennung vor dem Bereich auftritt (Schritt 902).
Wenn ja, ermittelt der lokale Mechanismus 132, ob die Kennung
unmittelbar vor dem Bereich auftritt (Schritt 904). Wenn
ja, fügt
der lokale Mechanismus 132 die Kennung an den Anfang des
Bereichs an (Schritt 908). Wenn die Kennung dem Bereich
nicht unmittelbar vorausgeht, fügt
der Iokale Mechanismus 132 die Kennung vor dem Bereich
in der Verfügbarkeitsliste 600 ein
(Schritt 912).
-
Wenn
die Kennung nicht vor dem Bereich ist, ermittelt der lokale Mechanismus 132,
ob die Kennung unmittelbar hinter dem Bereich ist (Schritt 906). Wenn
ja, ermittelt der lokale Mechanismus 132, ob die Kennung
unmittelbar vor dem nächsten
Bereich ist (Schritt 907). Wenn ja, führt der lokale Mechanismus 132 den
Bereich mit dem nächsten
Bereich zusammen (Schritt 908). Wenn die lokale Kennung nicht
unmittelbar vor dem nächsten
Bereich ist, fügt der
lokale Mechanismus 132 die Kennung an das Ende des Bereichs
an (Schritt 910).
-
Wenn
die lokale Kennung nicht unmittelbar hinter dem Bereich ist, ermittelt
der lokale Mechanismus 132, ob der Bereich der letzte Bereich
in der Verfügbarkeitsliste 600 ist
(Schritt 914). Wenn ja, fügt der lokale Mechanismus 132 die
Kennung dem Ende der Verfügbarkeitsliste 600 hinzu
(Schritt 916). Ansonsten geht der lokale Mechanismus 132 zum
nächsten Bereich
in der Verfügbarkeitsliste 600 weiter
(Schritt 918) und kehrt zum Schritt 902 zurück, um das
Verfahren zu wie derholen.
-
Die
vorangehenden Darstellungen von Ausführungsformen der Erfindung
sind nur zum Zweck der Veranschaulichung und Beschreibung gegeben worden.
-
Dementsprechend
werden dem Fachmann auf dem Gebiet viele Modifikationen und Variationen offensichtlich
sein. Außerdem
soll die oben gegebene Darstellung die vorliegende Erfindung nicht
einschränken.
Der Schutzumfang der vorliegenden Erfindung ist durch die beigefügten Ansprüche definiert.