-
HINTERGRUND DER ERFINDUNG
-
Gebiet der Erfindung
-
Die
vorliegende Erfindung betrifft Computernetzwerke. Insbesondere bezieht
sich diese Erfindung auf die Verbesserung der Fähigkeit eines Netzwerkes, um
fehlerhafte Komponenten herum zu routen.
-
Hintergrund
-
Die
moderne Computertechnologie entwickelt sich mit sehr hoher Geschwindigkeit
weiter und hat zu Hochleistungsrechenkomponenten geführt, die
in immer kleiner werdenden Gehäusen
zur Verfügung
gestellt werden. Diese kleinen Hochleistungskomponenten finden in
einer großen
Vielfalt von privaten, geschäftlichen und
akademischen Bereichen breite Anwendung.
-
Eine
Anwendung dieser Hochleistungskomponenten besteht in Netzwerksystemen.
In einem Netzwerksystem werden mehrere Verarbeitungseinheiten zusammengekoppelt,
um verschiedene programmierte Aufgaben auszuführen. Zum Beispiel können die
Verarbeitungseinheiten miteinander zu einem lokalen Netzwerk (LAN)
in einem Bürogebäude vernetzt
werden, um es Einzelpersonen mit Personalcomputersystemen im Gebäude zu ermöglichen,
miteinander zu kommunizieren. Derartige Netzwerksysteme sind für Anwender nützlich,
da sie es den Anwendern ermöglichen,
miteinander zu kommunizieren, zum Beispiel durch elektronische Mail
oder die gegenseitige Übertragung
von Datendateien. Oder als weiteres Beispiel, kann ein „Supercomputer" mehrere Verarbeitungseinheiten
enthalten, die miteinander über
ein Hochleistungsnetzwerk gekoppelt sind und die miteinander arbeiten,
um verschiedene programmierte Aufgaben auszuführen. Diese Supercomputer sind
für Anwender
nützlich,
da sie ein außerordentlich
schnelles, leistungsstarkes und kosteneffizientes System zum Ausführen von
Anwenderanforderungen bereitstellen.
-
Jedoch
besteht ein Nachteil der Netzwerksysteme darin, dass je größer die
Anzahl der Komponenten im System ist, um so größer die Aussichten sind, dass
eine Komponente während
des Systembetriebs fehlerhaft wird. Ein Netzwerk mit Tausenden von
Komponenten weist eine relativ geringe mittlere störungsfreie
Zeit der Systemkomponenten auf. Das bedeutet, dass es eine relativ
hohe Wahrscheinlichkeit gibt, dass eine Komponente innerhalb des
Netzwerkes innerhalb einer gegebenen Zeitperiode ausfallen wird
(zum Beispiel ein Ausfall pro Woche). Um für den/die Anwender nützlich zu
sein, sollte das Netzwerk in der Lage sein, diese Komponentenausfälle zu lösen. Ein
System, das sich selbst bei Erkennung einer fehlerhaften Komponente
herunterfährt
und nicht neu gestartet werden kann, bis die Komponente repariert
oder ersetzt wurde, reduziert die Verfügbarkeit des Systems und erhöht die Unannehmlichkeiten
für die
Anwender. Es wäre
deshalb vorteilhaft, ein System bereitzustellen, das in der Lage
ist, automatisch fehlerhafte Netzwerkkomponenten zu umgehen.
-
Darüber hinaus
haben viele Anwender weder das Fachwissen noch den Wunsch, einen
Komponentenausfall im Netzwerk durch Hinweise an das Netzwerk, wie
um die fehlerhafte Komponente zu routen ist, zu lösen. Viele
Anwender haben nicht das technische Fachwissen, das zur Ausführung einer
derartigen Korrektur erforderlich ist. Darüber hinaus kann das Ausführen einer
derartigen Korrektur sehr zeitaufwendig sein und hält den Anwender
von seinen oder ihren anderen Verpflichtungen ab. Auf diese Weise
wäre es
vorteilhaft, ein System bereitzustellen, das den Ausfall einer Komponente
in einer Art und Weise löst,
die für
den(die) Systemanwender transparent ist.
-
Zusätzlich kann
in Abhängigkeit
vom Aufbau eines Netzwerkes eine fehlerhafte Komponente mehrere gute
Komponenten vom Rest des Netzwerkes abtrennen. In Abhängigkeit
vom Netzwerktyp kann dies bedeuten, dass einige Personalcomputer
nicht mit anderen kommunizieren können oder bestimmte Verarbeitungseinheiten
für den
Systemanwender nicht erreichbar wären, obwohl sie sich in einem
guten Betriebszustand befinden. Es wäre deshalb vorteilhaft, ein
System bereitzustellen, dass die Anzahl der guten Komponenten reduziert,
die vom Rest des Systems durch eine fehlerhafte Komponente getrennt
sind.
-
Zusätzlich sollten
Netzwerksysteme „Systemblockade"-Situationen in wirksamer Weise lösen. Eine Systemblockadesituation
tritt auf, wenn eine oder mehrere Komponenten im Netzwerk in ihrem
Betrieb nicht weiterkommen können,
da Ressourcen im System, die die Komponente(n) benötigt bzw.
benötigen,
nicht verfügbar
sind. Das Auftreten einer Systemblockadesituation ist von der im
System verwendeten Routing-Technik abhängig. Bei einer als „Leitungsvermittlung" [circuit switching]
bezeichneten Routing-Technik sendet ein Quellknoten Steuerinformationen
für ein
Paket über
seinen vorgesehenen Pfad zu einem Zielknoten im Netzwerk, um jede
Verbindung im Pfad zu reservieren. Sobald der gesamte Pfad reserviert
ist, überträgt der Quellknoten
die Daten entlang des reservierten Pfades zum Zielknoten. Bei einer
anderen, als „Wormhole-Routing" [Packet Routing
mit temporärer
Blockierung] bezeichneten Routing-Technik sendet der Quellknoten die erforderlichen
Steuerinformationen unmittelbar gefolgt von den Daten über ihren
vorgesehenen Pfad zum Zielknoten. Das bedeutet, dass der Quellknoten
nicht auf die Reservierung des gesamten Pfades vor dem Beginn der Datenübertragung
wartet. Bei beiden Routing-Techniken behält das Datenpaket die Reservierung
von Teilen des bereits reservierten Pfades bei, während es
auf die Reservierung nachfolgender Teile wartet. Auf diese Weise
kann eine Systemblockadesituation entstehen, wenn zum Beispiel zwei
oder mehr Quellknoten versuchen, Daten zu einem oder mehreren Zielknoten
zu übertragen
und keiner weiterkommen kann, da der andere einen Teil des Datenpfades
blockiert, der vom anderen benötigt
wird. Daher müssen
derartige Systemblockadeprobleme gelöst werden, um eine durchgehende
Leistungsfähigkeit
eines Netzwerksystems bereitzustellen.
-
Die
vorliegende Erfindung stellt diese und andere vorteilhafte Ergebnisse
bereit. Beispiele von Netzwerkanordnungen des Standes der Technik
sind in den US-Patenten Nr. 5138615 (Lamport et al) mit dem Titel „Reconfiguration
system and method for high-speed mesh connected local area network" und weiter in einem Artikel
von Rodeheffer, T. L. et al mit dem Titel „Automatic Reconfiguration
in Autonet", 1991,
Operating Systems Review (SIGOPS) ACM Headquarter, New York, US,
vol. 25, No. 5, Seiten 183–197
(XP000288311) offenbart.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Ein
Verfahren und Einrichtungen zur Verbesserung der Fehlertoleranz
eines Netzwerkes werden hier beschrieben. Die vorliegende Erfindung
ermittelt eine Gruppe von Rechenknoten innerhalb des Netzwerkes, die
bei Erkennung einer fehlerhaften Komponente zur Verwendung im Netzwerk
verfügbar
sind. Die vorliegende Erfindung ermittelt diese Gruppe verfügbarer Rechenknoten,
indem als Erstes eine Gruppe von Rechenknoten im Netzwerk bestimmt
wird, die miteinander physikalisch verbunden sind. Die vorliegende
Erfindung bestimmt für
jeden Rechenknoten dieser Gruppe einen Konnektivitätswert.
Es wird eine Untergruppe dieser Gruppe derart erzeugt, dass jeder
Rechenknoten in der Untergruppe in der Lage ist, Daten zu und von
jedem anderen Rechenknoten in der Untergruppe zu übertragen.
Diese Untergruppe wird als die Gruppe verfügbarer Rechenknoten verwendet.
In einem Ausführungsbeispiel
ist die Gruppe der physikalisch miteinander verbundenen Rechenknoten
die größte Gruppe
der physikalisch verbundenen Rechenknoten des Systems. Es ist deshalb
ein Ziel der vorliegenden Erfindung, ein Verfahren und Einrichtungen
zum Ermitteln einer Gruppe von verfügbaren Rechenknoten in einem
Netzwerk bei Erkennung einer fehlerhaften Netzwerkkomponente bereitzustellen,
wie sie in den Ansprüchen
1 und 7 festgelegt sind.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Die
vorliegende Erfindung ist als Beispiel und nicht als Beschränkung in
den Fig. der beigefügten Zeichnungen
dargestellt, in denen gleiche Verweise gleichartige Elemente bezeichnen
und in denen:
-
1A ein
Netzwerksystem gemäß einem
Ausführungsbeispiels
der vorliegenden Erfindung zeigt;
-
1B zeigt
ein Netzwerksystem gemäß einem
alternativen Ausführungsbeispiel
der vorliegenden Erfindung;
-
2 zeigt
einen Router, der an einen Rechenknoten gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung gekoppelt ist;
-
3 zeigt
ein Datenpaket gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung;
-
4 zeigt
eine Routing-Einrichtung gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung;
-
5 zeigt
ein Ablaufdiagramm, das die Schritte zeigt, die in der vorliegenden
Erfindung beim Routen von Datenpaketen entlang von Pfaden durch
ein Netzwerksystem befolgt werden; und
-
6 zeigt
die von einem Ausführungsbeispiel
der vorliegenden Erfindung befolgten Schritte bei der Herstellung
einer Gruppe von Knoten, die untereinander einen systemblockadefreien
Pfad aufweisen.
-
DETAILLIERTE
BESCHREIBUNG
-
In
der folgenden, detaillierten Beschreibung werden zahlreiche spezielle
Details dargelegt, um ein vollständiges
Verständnis
der vorliegenden Erfindung bereitzustellen. Es wird jedoch von den
Fachleuten verstanden werden, dass die vorliegende Erfindung ohne
diese speziellen Einzelheiten ausgeführt werden kann. In anderen
Fällen
wurden bekannte Verfahren, Methoden, Komponenten und Schaltungen
nicht detailliert beschrieben, um die vorliegenden Erfindung nicht
zu verdecken.
-
Einige
Teile der nachfolgenden detaillierten Beschreibung werden in Form
von Algorithmen und symbolischen Darstellungen von Operationen an
Datenbits in einem Computerspeicher dargestellt. Diese algorithmischen
Beschreibungen und Darstellungen sind die von den Fachleuten für Datenverarbeitung
verwendeten Mittel, um den Inhalt ihrer Arbeit anderen Fachleuten
am wirksamsten mitzuteilen. Ein Algorithmus wird hier und allgemein
als eine in sich geschlossene Folge von Schritten verstanden, die
zu einem gewünschten
Ergebnis führt.
Die Schritte sind diejenigen, die physikalische Manipulationen physikalischer
Größen erfordern. Üblicherweise,
aber nicht notwendigerweise, nehmen diese Größen die Form elektrischer oder
magnetischer Signale an, die geeignet sind, gespeichert, übertragen,
kombiniert, verglichen und anderweitig manipuliert zu werden. Es
hat sich zeitweise als zweckmäßig erwiesen,
primär
aus Gründen
der allgemeinen Verwendung, diese Signale als Bits, Werte, Elemente,
Symbole, Zeichen, Ausdrücke,
Zahlen oder dergleichen zu bezeichnen. Es sollte jedoch berücksichtigt
werden, dass all diese und ähnlichen
Begriffe mit den entsprechenden physikalischen Größen verbunden
und lediglich geeignete Kennzeichnungen sind, die auf diese Größen angewendet
werden. Wenn es nicht speziell anders angegeben ist, als aus der
folgenden Erörterung
ersichtlich, ist in der vorliegenden Erfindung immer zu verstehen,
dass sich Erörterungen,
die Begriffe wie „Verarbeiten" oder „Rechnen" oder „Berechen" oder „Bestimmen" oder „Darstellen" oder dergleichen
verwenden, auf die Vorgänge
und Verarbeitungen eines Computersystems oder einer ähnlichen
elektronischen Recheneinrichtung beziehen, das bzw. die Daten, die
als physikalische (elektronische) Größen in den Registern und Speichern
eines Computersystems dargestellt sind, manipuliert und umwandelt,
die in ähnlicher
Weise als physikalische Größen in den
Computersystemspeichern oder Registern oder anderen derartigen Informationsspeicher-, Übertragungs-
oder Anzeigeeinrichtungen dargestellt sind.
-
1A zeigt
ein Netzwerksystem gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung. Es wird ein zweidimensionales Maschennetzwerk 100 gezeigt,
das mehrere Routing-Einrichtungen 102 enthält, die
auch als Router bezeichnet werden. Jeder Router ist, wie gezeigt,
in Abhängigkeit
von seinem Standort in der Matrix mit zwei, drei oder vier an den
Router in der Matrix angrenzenden Routern gekoppelt. Ein Netzwerk 100 kann
eine beliebige Anzahl von Routing-Einrichtungen aufweisen. Bei einem
Ausführungsbeispiel
umfaßt das
Netzwerk 100 16 derartige Routing-Einrichtungen, die in
einem vier-mal-vier-Raster
organisiert sind, welches ein 4-stufiges 2-dimensionales Netzwerk erzeugt.
-
Jeder
Router 102 ist mit seinen angrenzenden Routern 102 über eine
bidirektionale Kommunikationsverbindung 105 gekoppelt.
Die Kommunikationsverbindung 105 kann irgendeine aus ei ner
großen
Vielfalt von herkömmlichen
Kommunikationseinrichtungen sein. Bei einem Ausführungsbeispiel ist die Kommunikationsverbindung 105 eine
Gruppe von Drähten
oder ein anderes Signalübertragungsmedium, über das
sich von einem Quell-Router ausgegebenen Signale zu einem Ziel-Router
verbreiten.
-
Es
sei angemerkt, dass die vorliegende Erfindung nicht auf zwei-dimensionale
Maschennetzwerke, wie in 1A gezeigt,
beschränkt
ist. Die Router können
in einem k-stufigen n-dimensionalen
Netzwerk miteinander gekoppelt sein, wobei k und n jede Zahl größer als
oder gleich eins sind. Zum Beispiel kann ein drei-dimensionales
maschenbasiertes Netzwerk verwendet werden, in dem jeder Router
in Abhängigkeit
von seinem Standort im Netzwerk mit drei, vier, fünf oder
sechs anderen Routern gekoppelt ist. Alternativ können die
Router in einem Torusnetzwerk 150 verbunden sein, wie in 1B gezeigt.
In einem Torusnetzwerk sind die Router an den Enden des Netzwerkes
direkt mit den Routern der gegenüberliegenden
Enden des Netzwerkes gekoppelt. Auf diese Weise ist jeder Router
mit vier anderen Routern direkt gekoppelt. Zum Beispiel ist Router 152 direkt
mit den Routern 154, 156, 158 und 160 gekoppelt.
Bei einem alternativen Ausführungsbeispiel
können
die Router in einem partiellen Torusnetzwerk verbunden sein, so
dass die Router nur an zwei Enden des Netzwerkes direkt miteinander
gekoppelt sind. Dadurch ergibt sich, dass jeder Router in Abhängigkeit von
seinem Standort im Netzwerk mit drei oder vier anderen Routern direkt
gekoppelt ist.
-
Es
wird weiterhin klar sein, dass die in 1A und 1B gezeigten
Netzwerksysteme eine große Vielfalt
von Computernetzwerken darstellen. Zum Beispiel kann das Netzwerk
ein maschenbasiertes Interprozessor-Kommunikationsnetzwerk sein,
das verwendet wird, um Rechenknoten zu einem Supercomputer miteinander
zu koppeln. Alternativ kann das Netzwerk ein LAN sein, das mehrere
Personalcomputer miteinander koppelt, wie zum Beispiel mehrere Datei-
oder Videoserver.
-
Bei
einem Beispiel der vorliegenden Erfindung ist jeder Router 102 mit
einem Rechenknoten 200 gekoppelt, wie in 2 gezeigt.
Es ist ein Rechenknoten 200 gezeigt, der einen Bus oder
eine andere Kommunikationseinrichtung 210 zur Kommunikation
von Informationen zwischen einem oder mehr Prozessoren 215 und 220 zur
Verarbeitung von Informationen und Anweisungen aufweist. In einer
Ausführung
umfaßt
die vorliegende Erfindung Mikroprozessoren der Intel®-Architektur
als Prozessoren 215 und 220. Die vorliegende Erfindung
kann jedoch jede Art der Mikroprozessorarchitektur verwenden. Bei
einem Ausführungsbeispiel
umfaßt
der Bus 210 Adreß-,
Daten- und Steuerbusse. Das System umfaßt außerdem einen Speicher mit wahlfreiem
Zugriff (RAM) 225, der mit dem Bus 210 zum Speichern
von Informationen und Anweisungen für die Prozessoren 215 und 220 gekoppelt
ist, einen Nur-Lese-Speicher (ROM) 230, der mit Bus 210 zum
Speichern statischer Informationen und Anweisungen für die Prozessoren 215 und 220 gekoppelt
ist, eine Massenspeichereinrichtung 235, wie zum Beispiel
eine magnetische oder optische Platte und ein Plattenlaufwerk, die
mit dem Bus 210 zum Speichern von Informationen und Anweisungen
gekoppelt sind, und mit dem Bus 210 gekoppelte Eingabe-/Ausgabe(E/A)-Einrichtungen 240,
die Daten und Steuerinformationen in die Prozessoren 215 und 220 eingeben
und aus diesen ausgeben. Die E/A-Einrichtungen 240 umfassen
zum Beispiel eine Anzeigeeinrichtung, eine alphanumerische Eingabeeinrichtung,
die alphanumerische und Funktionstasten umfaßt, und eine Cursor-Steuereinrichtung.
Eine Druckausgabeeinrichtung, wie zum Beispiel ein Plotter oder
ein Drucker, kann auch in die E/A-Einrichtungen 240 zur Bereitstellung
einer visuellen Darstellung der Computerabbildungen eingeschlossen
sein.
-
Eine
Netzwerkschnittstelleneinheit 205 ist ebenfalls mit dem
Bus 210 gekoppelt, um dem Knoten 200 zu ermöglichen,
mit dem Router 102 zu kommunizieren. Bei einem alternativen
Ausführungsbeispiel
ist die Netzwerkschnittstelleneinheit 205 mit einem separaten
E/A-Bus gekoppelt, wie zum Beispiel einem Peripheral-Component-Interconnect(PCI)-Bus,
der mit dem Bus 210 über
eine Bus-Brücke
gekoppelt ist. Bei einem anderen alternativen Ausführungsbeispiel
ist die Netzwerkschnittstelleneinheit 205 als Teil der
E/A-Einrichtungen 240 eingeschlossen. Die Netzwerkschnittstelleneinheit 205 arbeitet
in einer her kömmlichen
Art und Weise, um Informationen zu und von einem Router 102 zu übertragen.
-
In
einem Beispiel ist das Verfahren der vorliegenden Erfindung als
eine Reihe von Software-Routinen ausgeführt, die durch die Prozessoren 215 und 220 der
Rechenknoten im System ausgeführt
werden. Diese Software-Routinen interagieren mit dem Netzwerk, um
Pfade um die fehlerhaften Komponenten herum herzustellen. Es wird
jedoch von den Fachleuten verstanden werden, dass in einem alternativen
Ausführungsbeispiel
die vorliegende Erfindung in diskreter Hardware oder Firmware ausgeführt werden
kann.
-
Man
wird verstehen, dass bestimmte Ausführungen der vorliegenden Erfindung
zusätzliche
Prozessoren oder andere Komponenten enthalten können. Darüber hinaus können bestimmte
Ausführungen
der vorliegenden Erfindung nicht alle vorstehenden Komponenten erfordern
oder umfassen. Zum Beispiel können
der Prozessor 220 oder eine Anzeigeeinrichtung nicht mit
dem Bus 210 gekoppelt sein.
-
Es
wird zu 1A zurückgekehrt, in der die vorliegende
Erfindung unter Verwendung eines „gebräuchlichen Routing" [custom routing]
Datenpakete im Netzwerk 100 von Quellknoten zu Zielknoten
routet. Ein Datenpaket, auf das sich hier bezogen wird, sind die
Daten, die vom Quellknoten zum Zielknoten übertragen werden. Jedes Paket
kann eine beliebige Größe annehmen,
die sich üblicherweise
von ein paar Bytes bis zu mehreren Megabytes erstreckt. Beim gebräuchlichen
Routing bestimmt der Quellknoten, welcher Pfad durch ein Netzwerk 100 zur Übertragung
von Datenpaketen zu einem bestimmten Zielknoten zu verwenden ist.
Der Pfad eines Datenpakets bezieht sich auf die Router und Verbindungen,
die das Paket zwischen den Quell- und Zielknoten durchquert. Der
Pfad des Paketes besteht aus ein oder mehreren Pfadsegmenten. Nimmt
man zum Beispiel an, dass jeder Router in 1A mit
einem Rechenknoten gekoppelt ist, existiert ein Pfad im Netzwerk
von 1A, in dem Knoten A der Quellknoten ist, der Informationen
zum Zielknoten E überträgt. Der
Pfad, den Knoten A auswählt,
umfaßt
Pfadsegmente zwischen Knoten A und Knoten B, Knoten B und Knoten
C, Knoten C und Knoten D und Knoten D und Knoten E.
-
In
einem Beispiel der vorliegenden Erfindung wird das gebräuchliche
Routing unter Verwendung mehrerer Header-Blöcke [Kopfzeilen-Blöcke] ausgeführt, wie
in 3 gezeigt. In diesem Ausführungsbeispiel wird jedem Router
im Netzwerk eine Kennung, wie zum Beispiel eine eindeutige Identifikationsnummer,
zugewiesen. Das Paket 300 wird durch den Quellknoten erzeugt
und umfaßt
mehrere Header-Blöcke,
die die erforderlichen Steuerinformationen enthalten, um den Routern
den Pfad des Pakets durch das Netzwerk 100 anzugeben. Das
gezeigte Paket 300 beinhaltet vier Header-Blöcke 310, 320, 330 und 340.
Der Header-Block 310 ist der erste Header-Block und gibt
an, dass der Quellknoten der mit Router A gekoppelte Rechenknoten
ist und das erste Pfadsegment von Router A nach Router B verläuft. Die
nachfolgenden Header-Blöcke 320, 330 und 340 geben
die Pfadsegmente von Router B nach Router C, Router C nach Router
D beziehungsweise von Router D nach Router E an. Es sei angemerkt,
dass die Header-Blöcke
in Paket 300 angeben, wo der Pfad durch das Netzwerk 100 beginnen
soll, wo er endet und die Ziel-Router für die Pfadsegmente. Zum Beispiel können in 1A zusätzliche
Router zwischen den Routern A, B, C, D und E existieren. Da jedoch
diese zusätzlichen
Router nicht als Ziel-Router angegeben sind, setzt sich der Pfad
in der gleichen Richtung bei diesen zusätzlichen Routern fort.
-
Die
Header-Blöcke 310–340 enthalten
Steuerinformationen, die den geeigneten Pfad durch das Netzwerk 100 angeben.
Nach den Header-Blöcken 310–340 umfaßt das Paket 300 die
Daten 350 und den Abschluß 360. Die vorstehend
besprochenen Daten können
Bytes oder Megabytes sein. Der Abschluß 360 gibt das Ende
des Paketes 300 an. Datenpakete werden durch das Netzwerk 100 in
Einheiten übertragen,
die als „Flits" [Anzahl der gleichzeitig übertragenen
Bits] bezeichnet werden. In einer Ausführung der vorliegenden Erfindung
besteht jedes Flit aus 64 Bits. Ein Flit kann jedoch jede Anzahl
von Bits enthalten. In einem Ausführungsbeispiel der vorliegenden
Erfindung ist jede der in 1A gezeigten
Verbindungen 105 ein 16-Bit-Bus oder ein an deres Kommunikationsmittel.
In einem alternativen Ausführungsbeispiel
ist jede der Verbindungen 105 in der Lage, ein gesamtes
Flit gleichzeitig zwischen zwei Routern zu übertragen.
-
Wenn
zum Beispiel ein Flit aus 64 Bit besteht, ist jede Verbindung ein
64-Bit-Bus oder ein anderes Kommunikationsmittel. In einem Ausführungsbeispiel
der vorliegenden Erfindung ist jeder der Header-Blöcke 310–340 und
der Abschluß 360 ein
einzelnes Flit. Der Datenteil 350 umfaßt üblicherweise mehrere Flits
und kann jede Anzahl von Flits umfassen. In einer Ausführung umfaßt der Datenteil 350 üblicherweise
4 k Byte oder 512 64-Bit Flits. In einer alternativen Ausführung umfaßt der Datenteil 350 üblicherweise
vier Byte oder vier 64-Bit Flits.
-
In
einem Beispiel der vorliegenden Erfindung wird ein gebräuchliches
Routing unter Verwendung einer „Wormhole-Routing"-Technik ausgeführt. Wenn beim Wormhole-Routing
ein Datenpaket die Übertragung
entlang eines Pfades beginnt, wird jeder Teil des Pfades, auf dem
es beginnt, für
dieses Paket reserviert, bis der Paketabschluß 360 empfangen wurde.
Das heißt,
wenn Router A die Übertragung
zu Router B beginnt, bestimmt Router A, ob die Verbindung zwischen
Router A und dem nächsten
Router verfügbar
ist. Wenn die Verbindung nicht verfügbar ist, wartet Router A mit
dem Beginn der Übertragung
des Paketes bis die Verbindung verfügbar ist. Sobald die Verbindung
verfügbar
ist, überträgt Router
A das erste Flit, Header-Block 310,
von Router A zum nächsten
Router. Man beachte, dass dieser nächste Router Router B oder
ein zusätzlicher
Router zwischen Router A und Router B sein kann. Router A behält diesen
Teil des Pfades zum nächsten
Router für
dieses Datenpaket bei und setzt fort, nachfolgende Daten des Paketes
zum nächsten
Router zu übertragen, bis
deren Abschluß 360 übertragen
ist. Es sei jedoch angemerkt, dass andere Pakete ebenfalls über die
gleiche physikalische Verbindung unter Verwendung „virtueller
Kanäle" übertragen werden können, wie
nachstehend ausführlicher
besprochen wird.
-
Jedes
Mal, wenn der Router Daten für
ein neues Paket empfängt,
prüft der
Router, ob die nächste
Verbindung im Pfad verfügbar
ist und beginnt die Übertragung
entlang dieser Verbindung, sobald sie verfügbar ist. Die geeignete Verbindung
zum Übertragen
der Daten ist in den Header-Blöcken
angegeben. Wenn der Router in einer Ausführung einen neuen Header-Block
empfängt,
prüft er,
ob er der Ziel-Router dieses Blocks ist. Wenn er nicht der Ziel-Router
ist, überträgt der Router
den Header-Block und alle nachfolgenden Flits des Paketes in die
gleiche Richtung im Netzwerk. Wenn jedoch der Router der durch den
ersten Header-Block angegebene Ziel-Router ist, verwirft er den
ersten Header-Block und prüft
das nachfolgende Flit (das heißt,
den zweiten Header-Block), um das nächste Pfadsegment zu bestimmen.
Sobald er das nächste
Pfadsegment bestimmt hat, überträgt der Router
den zweiten Header-Block und alle nachfolgenden Flits zum nächsten Router im
Pfad.
-
Sobald
der Zielknoten erreicht ist, ist das erste vom Ziel-Router erhaltene
Flit der letzte Header-Block. Das zweite vom Ziel-Router erhaltene
Flit, ist das erste Daten-Flit 350. In einer Ausführung ist
dieses erste Daten-Flit 350 ein Flit von Steuerinformationen,
die angeben, dass es das erste Daten-Flit ist. Alternativ könnte dem
Ziel-Router bekannt sein, dass das Flit Daten enthält und kein
Header-Block ist, da die in jedem Header-Block enthaltenen Steuerinformationen
nicht im Daten-Flit enthalten sind oder der letzte Header-Block Steuerinformationen
enthalten kann, die angeben, dass er der letzte Header-Block ist.
Auf diese Weise ist dem Ziel-Router bekannt, dass der an den Router
gekoppelte Rechenknoten das richtige Ziel für die nachfolgenden Flits ist,
und er überträgt die nachfolgenden
Flits im Paket zum Rechenknoten statt zu einem anderen Router.
-
4 zeigt
ausführlicher
eine Routing-Einrichtung gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung. Der Router 400 umfaßt vier
Eingangsverbindungen 401, 402, 403 und 404 und
vier Ausgangsverbindungen 411, 412, 413 und 414.
Jede der vier Eingangsverbindungen und der vier Ausgangsverbindungen
stellt eine der in 1A gezeigten Verbindungen 105 dar.
Auf diese Weise ist der in 4 gezeigte
Router 400 mit vier anderen Routern 102 in 1A gekoppelt.
Der Router 400 umfaßt außerdem eine
Kreuzschiene 416, die die auf einer Eingangsverbindung 401, 402, 403 oder 404 empfangenen
Daten zu der zugehörigen Ausgangsverbindung 411, 412, 413 oder 414 überträgt. Man
wird verstehen, dass die Anzahl von Eingangsverbindungen und Ausgangsverbindungen,
die direkt an einen Router gekoppelt sind, von der Netzwerktopologie
und dem Standort dieses Routers im Netzwerk abhängen, wie in den 1A und 1B gezeigt.
-
Jeder
der vier Eingangsverbindungen 401–404 ist mit vier
verschiedenen Eingangswarteschlangen 418a, 418b, 418c und 418d gekoppelt.
Die Eingangswarteschlangen 418a–418d sind Zwischenspeichereinrichtungen
im Router 400 für
eingehende Daten. In einem Ausführungsbeispiel
der vorliegenden Erfindung ist jede der Eingangswarteschlangen 418a–418d ein
16-Flit-Silo-(FIFO)-Zwischenspeicher.
Deshalb kann jede der Eingangswarteschlangen 418a–418d kleiner
sein, als die Größe eines
Paketes, das durch das Netzwerk geroutet wird.
-
Jede
der Warteschlangen 418a–418d stellt einen
anderen „virtuellen
Kanal" des Routers
dar. Das heißt,
auch wenn der Router 400 nur mit der einzelnen Eingangsverbindung 401 gekoppelt
ist, kann Router 400 Daten zwischenspeichern, bevor sie über eine
der Ausgangsverbindungen 411–414 zum nächsten Router weitergeleitet
werden. Auch wenn ein einzelnes physikalisches Netzwerk existiert,
ist der Router 400 auf diese Weise in der Lage, Daten von
vier separaten Paketen zwischenzuspeichern. Auf diese Weise unterstützt der Router 400 vier „virtuelle
Kanäle", da der Router in
der Lage ist, vier separate Datenpfade unter Verwendung seiner Möglichkeiten
zur Zwischenspeicherung zu unterstützen. Jeder dieser vier virtuellen
Kanäle
stimmt mit einer der Eingangswarteschlangen 418a–418d überein.
-
In
einem Beispiel der vorliegenden Erfindung sind diese virtuellen
Kanäle
als statische virtuelle Netzwerke konfiguriert. Ein statisches virtuelles
Netzwerk ist ein Netzwerk, in dem die Pfade zwischen den Quell- und
Zielknoten die gleichen numerierten virtuellen Kanäle verwenden.
Wenn zum Beispiel zwei virtuelle Netzwerke durch das System unterstützt werden,
ist ein Pfad zwischen den Quell- und Zielknoten vollständig im ersten
Netzwerk oder vollständig
im zweiten Netzwerk (man be achte jedoch, dass zwei separate Pfade,
einer in jedem virtuellen Netzwerk, existieren können). Auf diese Weise werden
Pakete, die der Router 400 in einem bestimmten virtuellen
Netzwerk empfängt
und zur Eingangswarteschlange 418a (zum Beispiel dem virtuellen Kanal
A) überträgt, zum
virtuellen Kanal A in jedem anderen Router im System, der das Paket
empfängt, übertragen.
-
In
einem alternativen Beispiel der vorliegenden Erfindung sind statische
virtuelle Netzwerke nicht erforderlich. Zum Beispiel kann ein bestimmter
Quellknoten angeben, dass der Pfad zu einem Zielknoten einen ersten
virtuellen Kanal für
das erste Pfadsegment und einen zweiten virtuellen Kanal für das zweite
Pfadsegment verwenden soll. In diesem Beispiel prüft die Kanalauswahllogik 420 die
Steuerinformationen in den empfangenen Header-Blöcken und überträgt die nachfolgenden Flits
des Pakets zu dem durch den Header-Block angegebenen Kanal. Man
beachte, dass in diesem Ausführungsbeispiel
der Router 400 außerdem
prüft,
ob der zweite virtuelle Kanal der nächsten Verbindung verfügbar ist
(zum Beispiel kann momentan ein anderes Paket das zweite Netzwerk
verwenden).
-
Jeder
Knoten im Netzwerksystem ist in der Lage, jedes dieser vier virtuellen
Netzwerke zu verwenden. Welches virtuelle Netzwerk ein Quellknoten
verwendet, um Daten zu einem Zielknoten zu übertragen, hängt von
verschiedenen Faktoren ab, einschließlich der Existenz eines systemblockadefreien
Pfades im virtuellen Netzwerk, wie nachstehend ausführlicher
besprochen wird. Im gezeigten Beispiel werden vier virtuelle Netzwerke
unterstützt.
Es sollte jedoch verstanden werden, dass jede Anzahl von virtuellen
Netzwerken durch Router 400 bei Verwendung der geeigneten
Anzahl von Eingangskanälen 418 unterstützt werden
kann.
-
Die
Daten werden von Router 400 in Flits empfangen, wie vorstehend
besprochen. Bei Empfang eines Flits eines neuen Paketes über Eingangsverbindung 401 prüft eine
an Eingangsverbindung 401 gekoppelte Kanalauswahllogik 420 die
Steuerinformation im Flit. In einem Ausführungsbeispiel der vorliegenden
Erfindung ist das erste Flit eines neuen Pakets ein Header- Block. Wenn der Header-Block
angibt, dass der aktuelle Router nicht der Ziel-Router für das Pfadsegment
ist, prüft
die Kanalauswahllogik 420 die Steuerinformationen im Header-Block,
um zu bestimmen, welches virtuelle Netzwerk das Paket verwendet.
Die Kanalauswahllogik 420 überträgt das erste Flit und alle
nachfolgenden Flits im Paket zum Kanal der Eingangsverbindung 401,
der mit dem virtuellen Netzwerk übereinstimmt
und legt ein Anforderungssignal an eine Entscheidungseinheit an,
um die Flits des Paketes weiter in der gleichen Richtung durch das
Netzwerk zur Ausgangsverbindung zu übertragen.
-
Wenn
jedoch der Header-Block angibt, dass der aktuelle Router der Ziel-Router
für dieses
Pfadsegment ist, verwirft die Kanalauswahllogik 420 den
ersten Header-Block und prüft
das zweite Flit. Wenn das zweite Flit ein Header-Block ist, prüft die Kanalauswahllogik 420 die
Steuerinformationen im Header-Block, um zu bestimmen, welches der
virtuellen Netzwerke das Paket verwendet. Die Kanalauswahllogik 420 überträgt das zweite
und alle nachfolgenden Flits im Paket zum Kanal der Eingangsverbindung 401,
der mit diesem virtuellen Netzwerk übereinstimmt, und legt ein
Anforderungssignal an die Entscheidungseinheit an, um die Flits
des Paketes an die durch den Header-Block angegebene Ausgangsverbindung
zu übertragen.
Die Kanalauswahllogik 420 setzt fort, alle nachfolgenden
Flits zu diesem Kanal zu übertragen,
bis der Abschluß des
Paketes empfangen wird. Wenn jedoch das zweite Flit kein Header-Block
ist, wird das Paket zu dem mit dem Router 400 verbundenen
Rechenknoten übertragen,
wie nachfolgend ausführlich
besprochen wird.
-
In
einem Beispiel der vorliegenden Erfindung speichert die Kanalauswahllogik 420 die
Richtungen der Eingangsverbindungen 401–404 und der Ausgangsverbindungen 411–414.
Die Kanalauswahllogik 420 verwendet diese Richtungen, wenn
der Router 400 kein Ziel-Router des Paketes ist. In dieser
Situation überträgt der Router 400 das
Paket zum nächsten
Router in derselben Richtung im Netzwerk wie die vorhergehende Verbindung.
Basierend auf diesen gespeicherten Richtungen ist die Kanalaus- Wahllogik 420 in
der Lage zu bestimmen, welche Ausgangsverbindung 411–414 in
der gleichen Richtung liegt.
-
Vom
Router 400 über
die Eingangsverbindungen 402–404 empfangene Daten
werden analog der vorstehenden Erörterung bezüglich der Eingangsverbindung 401 behandelt.
-
In
einem Beispiel der vorliegenden Erfindung umfaßt der Router 400 eine
zusätzliche
Gruppe von Eingangswarteschlangen 419a–419d, die direkt
mit dem Rechenknoten gekoppelt sind, der mit Router 400 verbunden
ist. Diese Eingangswarteschlangen 419a–419d werden analog
zu den vorstehend besprochenen Eingangswarteschlangen 418a–418d verwendet,
ausgenommen, dass die Quelle der an die Eingangswarteschlangen 419a–419d übertragenen
Pakete der Rechenknoten statt eine andere Routing-Einrichtung ist. Wenn
auf diese Weise der mit der Routing-Einrichtung verbundene Rechenknoten
der Quellknoten eines bestimmten Paketes ist, werden die Flits dieses
Paketes vom Rechenknoten zu den Eingangswarteschlangen 419a–419d übertragen
und die an die Eingangswarteschlangen 419a–419d gekoppelte
Kanalauswahllogik legt ein Anforderungssignal an die Entscheidungseinheit
an, um die Flits des Paketes an die entsprechenden Ausgangsverbindungen
zu übertragen,
wie durch die Header-Informationen
des Paketes angegeben ist.
-
Die
Kreuzschiene 416 überträgt die Flits
von den vier Eingangsverbindungen 401–404 zu den vier Ausgangsverbindungen 411–414.
Die Kanäle
jeder der vier Eingangsverbindungen 401–404 werden durch
die Kreuzschiene 416 auf die Ausgangsverbindungen 411–414 multiplext
[gebündelt
gesendet]. In einem Ausführungsbeispiel
der vorliegenden Erfindung arbeitet der Router 400 gemäß einer
Entscheidungsstrategie, die sicherstellt, dass die auf jeder Eingangsverbindung 401–404 empfangenen
Daten angemessen behandelt werden. In einer Ausführung ist die Entscheidungsstrategie
das bekannte Round-Robin-Verfahren. Bei der Sicherstellung einer
angemessenen Behandlung einer jeden Eingangsverbindung kommen die
auf mehreren virtuellen Netzwerken übertragenen Pakete durch das
Netzwerk unabhängig
vom Fortschritt der Pakete in irgendeinem anderen virtuellen Netzwerk
weiter. Alternativ können
andere Entscheidungsstrategie eingesetzt werden, die weniger gerecht
sind, indem sie zum Beispiel einem oder mehr Kanälen einen Vorrang vor den übrigen Kanälen geben.
Jedoch sollten diese anderen Entscheidungsstrategien so beschaffen
sein, dass der Fortschritt der Pakete in einem virtuellen Netzwerk
nicht unbegrenzt den Fortschritt der Pakete in einem anderen virtuellen
Netzwerk behindert.
-
In
einem Beispiel der vorliegenden Erfindung hält die Kanalauswahllogik 420 den
aktuellen Zustand für
jeden Kanal der vier Eingangskanäle
aufrecht. Das bedeutet, die Kanalauswahllogik 420 verfolgt,
ob ein Paket gegenwärtig über einen
bestimmten Kanal und die richtige Ausgangsverbindung für ein Paket übertragen
wird, wenn ein Paket übertragen
wird. In diesem Ausführungsbeispiel
ist die Kreuzschiene 416 eine Kopplungseinrichtung, die
jede Eingangswarteschlange jeder Eingangsverbindung mit jedem Ausgangskanal
jeder Ausgangsverbindung verbindet. Wenn ein neues Paket von der
Kanalauswahllogik 420 empfangen wird, legt sie ein Zugangsanforderungssignal
für einen
Zugang auf einen entsprechenden Ausgangskanal an eine Entscheidungseinheit
an. wenn eine andere Eingangsverbindung den angeforderten Ausgangskanal
momentan verwendet, wird die Anforderung zurückgewiesen. Sobald der Ausgangskanal
verfügbar
ist, legt die Entscheidungseinheit ein Zugangsbewilligungssignal
an die Kanalauswahllogik 420 an. Die Kanalauswahllogik 420 beginnt
die Datenübertragung
zur Ausgangsverbindung nicht, bevor dieses Zugangsbewilligungssignal
empfangen wurde. Auf diese Weise werden Konflikte zwischen mehreren
Eingangsverbindungen für
den gleichen Ausgangskanal durch die Entscheidungseinheit gelöst, die
den Zugang auf den Ausgangskanal nur für jeweils eine Eingangsverbindung
bewilligt. Man beachte, dass, wenn nur ein einzelner Kanal zu übertragende
Daten aufweist, die Kreuzschiene 416 diesem Kanal gestattet,
die Kreuzschiene 416 vorrangig zu belegen, bis ein anderer
Kanal zu übertragende
Daten aufweist. Die Entscheidungseinheit bewilligt den Zugang auf
die Ausgangskanäle
gemäß der durch
den Router verwendeten Entscheidungsstrategie, wie vorstehend erörtert.
-
Man
wird verstehen, dass andere Ausführungen
einer Entscheidungseinheit ebenfalls im Router 400 verwendet
werden können.
Irgendeine der großen
Vielfalt von Entscheidungsstrategien und -einheiten kann durch Router 400 eingesetzt
werden, die einer Eingangsverbindung gestatten, Zugang auf eine
Ausgangsverbindung zu erhalten, die der Eingangsverbindung gestatten,
den Zugang auf die Ausgangsverbindung aufrechtzuerhalten, bis die Übertragung
des Paketes abgeschlossen ist, und die Konflikte zwischen mehreren Eingangsverbindungen
beim Zugang auf die gleiche Ausgangsverbindung lösen.
-
Die
zu einem Flit gehörende
Ausgangsverbindung kann mit einer großen Vielfalt von Methoden bestimmt
werden. In einem Beispiel speichert die Kanalauswahllogik 420 die
zu jedem Paket gehörende
Ausgangsverbindung, wie vorstehend erörtert. In einem alternativen
Ausführungsbeispiel
legt die Kanalauswahllogik 420 jedes Mal, wenn sie einen
neuen Header-Block empfängt,
ein Signal an Kreuzschiene 416 an. Dieses Signal gibt der
Kreuzschiene 416 die entsprechenden Ausgangsverbindung 411–414 für alle von
der entsprechenden Eingangswarteschlange kommenden Flits an, bis
ein neues Signal angelegt wird. Alternativ kann die Steuerlogik
in Kreuzschiene 416 die Flits bei ihrer Übertragung
durch die Kreuzschiene 416 überwachen. Jedes Mal, wenn
die Steuerlogik ein Flit, das ein Header-Block ist, der den nächsten Teil
des Pfades für
diesen Router angibt, überwacht,
speichert die Kreuzschiene, zu welcher Ausgabeverbindung alle nachfolgenden Flits
aus dieser Warteschlange übertragen
werden sollen (bis ein anderer entsprechender Header-Block erhalten
wird).
-
Wenn
ein vom Router 400 erhaltenes Flit das erste Flit in einem
neuen Paket ist, überträgt Router 400 das
Flit nicht zur entsprechenden Ausgangsverbindung 411, 412, 413 oder 414 bis
diese entsprechende Ausgangsverbindung reserviert ist. Zum Beispiel
kann ein Flit für
ein neues Paket auf Eingansverbindung 401 empfangen werden,
das auf Kanal A der Ausgangsverbindung 412 übertragen
werden soll. Jedoch kann bereits ein anderes Paket auf Eingangsverbindung 403 empfangen
worden sein, das momentan Daten zu Kanal A der Ausgangsverbindung 412 überträgt. Auf
diese Weise wartet Router 400 bis das auf Eingangsverbindung 403 empfangene
Paket abgeschlossen ist, bevor er das Paket von Eingangsverbindung 401 auf
Kanal A der Ausgangsverbindung 412 überträgt. Es sollte beachtet werden,
dass unter bestimmten Umständen
die über die
Eingangsverbindung 401 empfangenen Flits die Eingangswarteschlange
für Kanal
A füllen
können,
bevor das auf der Eingangsverbindung 403 empfangene Paket
vollständig
an Kanal A der Ausgangsverbindung 412 übertragen ist. Wenn dies eintritt,
legt der Router 400 ein Signal an den Router an, von dem
er das Paket auf der Eingangsverbindung 401 erhält. Dieses
Signal gibt dem vorhergehenden Router an, dass die Eingangswarteschlange
voll ist und dass die Übertragung
von Flits zum Router 400 ausgesetzt werden soll, bis das
Signal zurückgenommen
wird. Der Router 400 nimmt das Signal zurück, sobald
der Kanal A der Ausgangsverbindung 412 verfügbar ist.
Es sollte weiterhin beachtet werden, dass die Aussetzung der Übertragung
von Flits durch den vorhergehenden Router dazu führen kann, dass die Eingangswarteschlange
des vorhergehenden Routers gefüllt
wird. In dieser Situation legt der vorhergehende Router ein Signal
an den Router an, von dem er Flits empfängt, um die Übertragung
von Flits auszusetzen, bis das Signal zurückgenommen wird, analog der
vorstehenden Erörterung.
-
In
dem in 4 gezeigten Beispiel ist jede Ausgangsverbindung 411–414 mit
vier Ausgangskanälen verbunden,
von denen jeder einem Eingangskanal der Eingangsverbindungen 401–404 entspricht.
In einer Ausführung
der vorliegenden Erfindung überträgt die Kreuzschiene 416 jeweils
ein Daten-Flit von einem Eingangskanal zu einem Ausgangskanal. Jeder
Ausgangskanal weist einen 1-Flit-Zwischenspeicher auf, der das Flit
speichert, bis es vom nächsten
Router empfangen wurde. Alternativ kann jeder Ausgangskanal einen Mehr-Flit-FIFO-Zwischenspeicher
aufweisen (zum Beispiel der Zwischenspeicher mit der gleichen Größe jeder der
Eingangswarteschlangen 418a–418d). Auf diese
Weise können
die Flits im Ausgangskanal vorübergehend
gespeichert und über
die Ausgangsverbindung an den nächsten
Router als eine Mehr-Flit-Einheit übertragen werden, obwohl nur
ein einzelnes Flit von einem Eingangskanal zu einem Ausgangskanal
von der Kreuzschiene 416 übertragen wird.
-
In
einem Beispiel der vorliegenden Erfindung umfaßt der Router 400 eine
zusätzliche
Gruppe von Ausgangskanälen,
die direkt mit dem Rechenknoten gekoppelt sind, der mit Router 400 verbunden
ist. Diese Ausgangskanäle
werden analog den mit den Ausgangsverbindungen 411–414 gekoppelten
Ausgangskanälen
verwendet und vermittelt, ausgenommen, dass die Kanäle Daten
direkt zum Rechenknoten statt zu einer anderen Routing-Einrichtung übertragen.
Wenn ein neues Paket von einer der Eingangsverbindungen 401–404 empfangen
wird, bestimmt die Kanalauswahllogik auf diese Weise, ob dies der
Zielknoten des Paketes ist und überträgt das Paket
zum entsprechenden, mit dem Rechenknoten verbundenen Ausgangskanal.
-
In
einem alternativen Beispiel der vorliegenden Erfindung kann die
Kanalauswahllogik 420 direkt mit dem Rechenknoten verbunden
sein. Wenn der zweite Block kein Header-Block ist, überträgt die Kanalauswahllogik 420 auf
diese Weise das zweite und die nachfolgenden Flits zu dem mit Router 400 verbundenen Rechenknoten.
Die Kanalauswahllogik 420 überträgt die von der Eingangsverbindung 401 empfangenen
Flits weiter zum Rechenknoten, bis der Abschluß des Paketes erreicht ist.
Folglich werden Pakete, die für
den an Router 400 gekoppelten Rechenknoten bestimmt sind,
in diesem alternativen Beispiel nicht über die Kreuzschiene 416 übertragen.
-
5 ist
ein Ablaufdiagramm, das die in der vorliegenden Erfindung befolgten
Schritte zur Bestimmung der Pfade beim Routen von Pakete durch ein
Netzwerksystem zeigt. Zuerst werden die Datenpakete zwischen dem
Quell- und Zielknoten gemäß feststehenden
Pfaden geroutet, Schritt 510. Jeder Knoten im Netzwerk
enthält
eine Liste von Pfaden, die es dem Knoten ermöglichen, Daten zu anderen Knoten
im Netzwerk zu übertragen.
In einem Beispiel der vorliegenden Erfindung wird jeder dieser feststehenden
Pfade durch jeden Rechenknoten im Netzwerk beim Systemstart gemäß den nachfolgend
besprochenen Schritten 530–550 bestimmt.
-
Jeder
Knoten im Netzwerk prüft
kontinuierlich, ob eine fehlerhafte Routing-Komponente im System
ermittelt wurde, Schritt 520. In einem Ausführungsbeispiel
der vorliegenden Er findung werden fehlerhafte Routing-Komponenten
durch eine zentrale Diagnoseeinheit ermittelt. Die zentrale Diagnoseeinheit
ist mit jedem Router im System gekoppelt und überwacht kontinuierlich das
Verhalten der Routing-Komponenten im System.
-
Wenn
eine fehlerhafte Komponente ermittelt wurde, sendet die Diagnoseeinheit
ein Signal an alle Knoten im System, das angibt, dass eine fehlerhafte
Komponente ermittelt wurde. Eine fehlerhafte Routing-Komponente
kann die Datenübertragung
zu einem bestimmten Knoten durch die Deaktivierung eines oder aller Pfade
zu diesem Knoten beeinflussen.
-
Eine
Komponente kann aufgrund irgendeines einer großen Vielfalt von Umständen fehlerhaft
werden. Zum Beispiel kann die Steuerlogik im Router fehlerhaft werden
und ihre Aufgabe nicht geeignet erfüllen. Alternativ können andere
Komponenten, von denen der Router abhängig ist, fehlerhaft werden,
wie zum Beispiel eine Energieversorgung oder eine der Verbindungen
zwischen zwei Routern. Es sei angemerkt, dass ein fehlerhafter Rechenknoten
etwas anderes als ein fehlerhafter Router ist. Ein Rechenknoten
kann fehlerhaft werden, was bedeutet, dass er nicht als ein Zielknoten
verfügbar
ist. Jedoch kann der Router, der mit diesem Knoten direkt verbunden
ist, immer noch voll funktionsfähig
sein. Auf diese Weise kann der Router immer noch vom Netzwerk verwendet
werden, obwohl es der Rechenknoten nicht kann.
-
In
einer Ausführung
ist die zentralisierte Diagnoseeinheit mit jedem Router im System
unter Verwendung eines seriellen Busses gekoppelt, der dem IEEE
JTAG-Standard entspricht. Jeder Router umfaßt mehrere Fehler-Bits und
einen einzelnen Fehler-Pin,
der mit der Diagnoseeinheit gekoppelt ist. Wenn der Router einen
möglichen
Fehler entdeckt, setzt der Router das(die) Fehler-Bit(s) entsprechend
dem entdeckten Fehler und legt über
den Fehler-Pin ein Signal an die Diagnoseeinheit an. Welche(s) Fehler-Bit(s)
gesetzt wird bzw. werden, hängt
vom entdeckten Fehler ab und kann zum Beispiel einem Paritätsfehler,
einer geringen Energie oder einem ungeeigneten Protokoll (wenn zum
Beispiel das erste Flit eines Paketes kein Header ist) entsprechen.
Bei Empfang eines Signals vom Fehler-Pin eines Rou ters kann die
Diagnoseeinheit über
den seriellen Bus auf die Fehler-Bits zugreifen, um zu bestimmen,
welcher Fehler ermittelt wurde. Die Diagnoseeinheit bestimmt dann,
ob der Router fehlerhaft ist. In einer Ausführung erfolgt diese Bestimmung
bezogen auf den Charakter des Fehlers (z. B. geringe Energie). Alternativ
kann die Diagnoseeinheit diese Bestimmung bezogen auf die Häufigkeit
der erhaltenen Fehler (z. B. zu häufig vorkommende Paritätsfehler)
vornehmen. Wenn die Diagnoseeinheit feststellt, dass der Router
fehlerhaft ist, sendet die Diagnoseeinheit ein Signal an alle Knoten
im System, das die Identität
des fehlerhaften Routers angibt.
-
Wenn
keine fehlerhaften Router-Komponenten im Schritt 520 ermittelt
wurden, verwendet jeder Knoten im Netzwerk weiter seine momentanen
feststehenden Pfade, um Daten durch das Netzwerk zu routen. Wenn
jedoch eine fehlerhafte Komponente ermittelt wurde, beginnt jeder
Rechenknoten im System den Prozeß der Bestimmung einer neuen
Gruppe von Pfaden, die beim Routen von Paketen durch das Netzwerk
verwendet werden.
-
Der
erste Schritt bei der Erzeugung einer neuen Gruppe von Pfaden besteht
darin, die größte, physikalisch
verbundene Gruppe von Knoten zu finden, Schritt 530. Beliebige
zwei Knoten sind physikalisch verbunden, wenn zwischen ihnen in
beiden Richtungen (ein) Pfade) existiert/existieren, der/die keine
fehlerhafte Komponente einschließt/einschließen. Wenn
zum Beispiel ein erster Pfad existiert, der Daten von Knoten A zu Knoten
B übertragen
kann, jedoch nicht von Knoten B zu Knoten A, und ein zweiter Pfad
existiert, der Daten von Knoten B zu Knoten A übertragen kann, jedoch nicht
von Knoten A zu Knoten B, dann sind die Knoten A und B physikalisch
verbunden. Wenn jedoch ein Pfad existiert, der Daten von Knoten
A zu Knoten B übertragen
kann, jedoch kein Pfad existiert, der Daten von Knoten B zu Knoten
A übertragen
kann, dann sind die Knoten A und B nicht physikalisch verbunden.
-
In
einem Beispiel der vorliegenden Erfindung wird die größte Gruppe
von physikalisch verbundenen Knoten unter Verwendung eines herkömmlichen,
tiefenorientierten Suchverfahrens bestimmt. Das bedeutet, jeder
Knoten beginnt mit sich selbst und bestimmt alle anderen Knoten,
mit denen er physikalisch verbunden ist. Sobald diese Gruppe bestimmt
ist, wählt
der Knoten einen im Netzwerk verbleibenden Knoten aus, der nicht
Teil dieser ersten Gruppe ist und bestimmt alle Knoten, mit denen
er verbunden ist. Dieser Prozeß geht weiter,
bis alle Knoten Teil einer Gruppe sind (man beachte, dass eine Gruppe
ein oder mehr Knoten sind). Jeder Knoten bestimmt dann, welche dieser
Gruppen die größte Anzahl
von Knoten enthält.
Im Fall, dass zwei oder mehr gleich große Gruppen die Größten sind,
wird eine dieser Gruppen als „größte" Gruppe ausgewählt. In
einer Ausführung
wird diese Auswahl willkürlich
durchgeführt.
-
In
einem Beispiel der vorliegenden Erfindung kennt jeder Knoten im
Netzwerk die Topologie des Netzwerkes. Das bedeutet, jeder Knoten
enthält
Informationen, die angeben, welche Knoten mit welchen anderen Knoten
im Netzwerk verbunden sind und über
welche Verbindungen und zusätzlichen
Router (falls vorhanden) die Knoten verbunden sind. Auf diese Weise
kann eine physikalische Verbindung durch jeden Knoten bestimmt werden,
wenn die zentrale Diagnoseeinheit eine Nachricht aussendet, die
angibt, welche Komponente(n) fehlerhaft sind. Alternativ kann die
physikalische Verbindung zweier Knoten durch einen Knoten bestimmt
werden, der ein Signal zu einem anderen Knoten sendet und auf eine
Antwort wartet. Wenn innerhalb einer vorgegebenen Zeitdauer keine
Antwort empfangen wird, sind die zwei Knoten nicht physikalisch
verbunden.
-
Es
sei angemerkt, dass ein fehlerhafter Router dazu führen kann,
dass alle Knoten immer noch physikalisch verbunden sind. Zum Beispiel
kann ein Router keinen direkt mit ihm verbundenen Rechenknoten aufweisen.
Wenn dieser Router fehlerhaft werden würde, könnte immer noch ein physikalischer
Pfad zwischen allen Knoten im Netzwerk existieren.
-
Sobald
die größte Gruppe
von physikalisch verbundenen Knoten bestimmt ist, bestimmt jeder
Knoten in dieser Gruppe die Konnektivität der Knoten in dieser Gruppe,
Schritt 540. In einem Ausführungsbeispiel der vorliegenden
Erfindung ist jeder Knoten im Netzwerk sowohl mit einer Zeile als
auch mit einer Spalte einer Matrix verbunden. Gemäß 1A ist
der an den Router oben links in der Matrix gekoppelte Knoten der
ersten Zeile und der ersten Spalte zugeordnet und der Router unten
rechts ist der n-ten Zeile und der n-ten Spalte zugeordnet. Diese
Matrix wird die Konnektivitätsmatrix
genannt und gibt die Konnektivität
der größten Gruppe von
physikalisch verbundenen Knoten an. Eine beispielhafte Konnektivitätsmatrix
C für eine
Gruppe mit n Knoten ist nachstehend gezeigt.
-
-
Die
Konnektivitätsmatrix
C wird erzeugt, indem für
jeden Knoten in der größten Gruppe
bestimmt wird, ob ein systemblockadefreier Pfad zwischen diesem
Knoten und jedem anderen Knoten in der größten Gruppe existiert. Wenn
ein systemblockadefreier Pfad von Knoten x zu Knoten y existiert,
dann ist Cx,y eine Eins. Wenn jedoch von
Knoten y zu Knoten x kein systemblockadefreier Pfad existiert, dann
ist Cy,x eine Null. Auf diese Weise ist
jeder Eintrag in der Konnektivitätsmatrix
C entweder eine Eins oder eine Null.
-
In
einem Beispiel der vorliegenden Erfindung umfaßt die Konnektivitätsmatrix
alle Knoten im Netzwerk. Jedoch werden die systemblockadefreien
Pfade nur zwischen den Knoten in der größten Gruppe von physikalisch
verbundenen Knoten bestimmt. Auf diese Weise ist/sind das/die systemblockadefreie
Routing-Verfahren
in der Lage, Routen durch das Netzwerk unter Berücksichtigung aller Routing-Komponenten
im Netzwerk geeignet zu bestimmen, einschließlich derer, die fehlerhaft
sind, solange nur Routen innerhalb der größten Gruppe von physikalisch
verbundenen Knoten bestimmt werden.
-
In
einem Beispiel der vorliegenden Erfindung wird eine Konnektivitätsmatrix
C für jedes
virtuelle Netzwerk in der Gruppe erzeugt. Auf diese Weise kann bei
Verwendung verschiedener systemblockadefreier Routing-Verfahren
eine andere Kon nektivitätsmatrix
C für jedes
virtuelle Netzwerk erzeugt werden. Jede dieser Matrizen wird miteinander
kombiniert, um eine Gesamt-Konnektivitätsmatrix A zu erzeugen. Wenn
in der Gesamt-Konnektivitätsmatrix
A ein systemblockadefreier Pfad von Knoten x zu Knoten y in einem
beliebigen oder mehreren der virtuellen Netzwerke existiert, ist
Ax,y eine Eins; andernfalls ist Ax,y eine Null.
-
Wenn
mehrere virtuelle Netzwerke verwendet werden, wird jede der Konnektivitätsmatrizen
C für jedes
virtuelle Netzwerk vom Rechenknoten gespeichert. Auf diese Weise
ist der Rechenknoten in der Lage, sich zu einem späteren Zeitpunkt
auf diese Konnektivitätsmatrizen
zu beziehen, um zu bestimmen, welches virtuelle Netzwerk einen systemblockadefreien
Pfad zu einem bestimmten Zielknoten bereitstellt.
-
Das(die)
in Schritt 540 verwendete(n) systemblockadefreie(n) Routing-Verfahren
kann/können
jedes aus einer großen
Vielfalt von herkömmlichen
Routing-Verfahren sein. Ein derartiges Routing-Verfahren wird als „erst ablehnendes" [negative-first] -Verfahren
bezeichnet, angegeben als R––,++. Gemäß dem Netzwerk
von 1A beginnt beim erst ablehnenden Verfahren das
Routen vom Quellknoten zum Zielknoten in der negativen Richtung.
Die negative Richtung gleicht einer Bewegung nach links oder nach
oben im Netzwerk. Zum Beispiel verläuft die Bewegung von Router
C zu Router B oder Router D in der negativen Richtung und die Bewegung
von Router D zu Router C oder Router E verläuft in der positiven Richtung.
Sobald die Bewegung in die positive Richtung beginnt, kann sie in
die positive Richtung fortgesetzt werden. Die Bewegung in die negative Richtung
kann jedoch nicht wieder aufgenommen werden.
-
Außerdem können andere
systemblockadefreie Routing-Verfahren
durch die vorliegende Erfindung ausgeführt werden, wie zum Beispiel
die R++,––-,
R–+,+–-
oder R+–,–+-Verfahren.
In jedem dieser systemblockadefreien Routing-Verfahren beginnt die
Erzeugung eines Pfades durch eine Bewegung in der xy-Richtung, die
im ersten Index angegeben ist. Sobald die Bewegung in die durch
den zweiten Index angegebene xy-Richtung beginnt, wird die Bewegung
in der durch den ersten Index angegebenen Rich tung nicht wieder
aufgenommen. Zum Beispiel beginnt gemäß dem R–+,+–-Routing-Verfahrens
die Pfad-Bewegung in die negative x- und die positive y-Richtung und kann
zu jeder Zeit in die positive x- und negative y-Richtung wechseln,
jedoch nicht zur negativen x- und positiven y-Richtung zurück wechseln.
Es wird von den Fachleuten wohlverstanden, dass bei Einhalten eines
derartigen systemblockadefreien Routing-Verfahrens für alle Knoten
eines speziellen virtuellen Netzwerkes eine Gruppe von Pfaden zwischen
jedem Knoten erzeugt werden kann, die garantiert systemblockadefrei
sind, unter der Annahme, dass keine fehlerhaften Komponenten im
Netzwerk vorhanden sind.
-
Wenn
zum Beispiel die Router D und H in 1A fehlerhaft
sind, existiert gemäß dem R++,––-Routing-Verfahren
ein systemblockadefreier Pfad von Router F zu Router E. Zum Beispiel
Router F zu Router B, Router B zu Router G und Router G zu Router
E. Jedoch existiert gemäß dem R––,++-Routing-Verfahren
kein systemblockadefreier Pfad von Router F zu Router E.
-
Die
folgenden Routing-Verfahren werden gemäß einem Ausführungsbeispiel
der vorliegenden Erfindung verwendet. Wenn das System ein einzelnes
Netzwerk verwendet (das heißt,
keine virtuellen Netzwerke), wird das R––,++-Routing-Verfahren
verwendet. Wenn das System zwei virtuelle Netzwerke verwendet, wird
das R––,++-Routing-Verfahren
für ein
Netzwerk und das R++,––-Routing-Verfahren für das zweite
Netzwerk verwendet. Wenn das System vier virtuelle Netzwerke verwendet,
verwenden das erste, zweite, dritte und vierte Netzwerk das R––,++-,
R++,––-,
R–+,+–-
beziehungsweise R+–,–+-Routing-Verfahren.
-
Es
sollte verstanden werden, dass, obwohl die vorstehenden Routing-Verfahren
ein zwei-dimensionales Maschennetzwerk behandeln, ähnliche
systemblockadefreie Routing-Verfahren für n-dimensionale Maschennetzwerke
existieren. Zum Beispiel gewährleistet
in einem drei-dimensionalen Maschennetzwerk die Verwendung eines
Routings-Verfahrens von R–––,+++ eine
Gruppe von systemblockadefreien Pfaden. Diese systemblockadefreien
Routing-Verfahren sind den Fachleuten bekannt und werden deshalb
nicht weiter besprochen.
-
Sobald
die Konnektivität
der größten Gruppe
von physikalisch verbundenen Knoten bestimmt ist, wird eine Untergruppe
der Gruppe von physikalisch verbundenen Knoten bestimmt, in der
jeder Knoten in der Untergruppe einen systemblockadefreien Pfad
zu jedem anderen Knoten in der Untergruppe aufweist, Schritt 550.
Ein systemblockadefreier Pfad ist zwischen jedem einzelnen Knoten
hergestellt, wenn jeder Eintrag in der Konnektivitätsmatrix
C eine Eins ist. Dies wird nachstehend mit Bezug auf 6 ausführlicher
behandelt. Auf diese Weise ist jeder Knoten in dieser Untergruppe
in der Lage, Datenpakete zu und von jedem anderen Knoten in der
Untergruppe entlang eines systemblockadefreien Pfades zu übertragen.
Jeder Knoten in dieser Untergruppe speichert die Pfade zu allen
anderen Knoten in der Untergruppe, die in Schritt 540 erzeugt
wurde. Diese neuen Pfade werden durch den Knoten beim Übertragen
von Daten zu Zielknoten im Netzwerk verwendet, Schritt 560.
Die Knoten im Netzwerk übertragen
dann weiter Datenpakete untereinander, Schritt 510, bis eine
andere fehlerhafte Routing-Komponente ermittelt wird.
-
Es
sei angemerkt, dass unter bestimmten Umständen mehrere systemblockadefreie
Pfade von einem Quellknoten zu einem Zielknoten in Schritt 540 erzeugt
werden können.
Diese mehrfachen Pfade können
sich im gleichen oder in verschiedenen virtuellen Netzwerken befinden.
In einer Ausführung
behält
der Quellrechenknoten jeden dieser Pfade bei und bestimmt, welcher
Pfad zu verwenden ist, wenn ein Datenpaket zum Zielknoten übertragen
wird. Alternativ kann der Rechenknoten einen der Pfade zur Verwendung
auswählen und
die restlichen Pfade verwerfen. Der Rechenknoten kann aus einer
großen
Vielfalt von Methoden bestimmen, welcher von mehreren Pfaden zu
verwenden ist. In einem Ausführungsbeispiel
wählt der
Rechenknoten den kürzesten
Pfad aus. Alternativ kann der Rechenknoten den Pfad im virtuellen
Netzwerk auswählen,
der durch diesen Rechenknoten am wenigsten verwendet wird.
-
In
einem alternativen Beispiel der vorliegenden Erfindung werden die
Schritte 540 und 550 für jede physikalisch verbundene
Gruppe von Knoten statt nur für
die größte Gruppe
wieder holt. Die sich ergebende Anzahl verfügbarer Knoten in der Untergruppe
von Schritt 550 wird für
jede Untergruppe von Knoten verglichen und die Untergruppe, die
die größte Anzahl
verfügbarer
Knoten aufweist, wird dem Anwender bereitgestellt. Auf diese Weise
prüft dieses
alternative Beispiel, welche Gruppe von physikalisch verbundenen
Knoten die größte Anzahl
von verfügbaren
Knoten bereitstellt, als anzunehmen, dass die größte Gruppe von physikalisch verbundenen
Knoten die größte Anzahl
von verfügbaren
Knoten bereitstellt.
-
In
einem Beispiel der vorliegenden Erfindung ist das Netzwerk ein Torusnetzwerk.
In einem Torusnetzwerk sind, wie vorstehend beschrieben, die Router
an den Enden des Netzwerkes miteinander gekoppelt. Auf diese Weise
erzeugen sie einen Aufbau analog einer Kreisbahn. In einer Ausführung kann
das vorstehend beschriebene Verfahren von 5 in einem
Torusnetzwerk verwendet werden, das doppelt so viele virtuelle Netzwerke
wie ein Maschennetzwerk aufweist. Das bedeutet, die vorliegende
Erfindung, die wie vorstehend beschrieben n virtuelle Netzwerke
verwendet, ist auf ein Torusnetzwerk anwendbar, das 2^n virtuelle
Netzwerke verwendet.
-
Zum
Beispiel gilt die vorliegende Erfindung für ein Torusnetzwerk, das zwei
virtuelle Netzwerke verwendet, wie nachstehend gezeigt. Jedem Router
im Netzwerk wird eine Spalten- und Zeilenposition zugewiesen, wie
nachstehend für
das erste virtuelle Netzwerk gezeigt.
-
-
Wenn
Pfade gemäß dem systemblockadefreien
Routing-Verfahren
bestimmt werden, werden die Router so behandelt, als wenn sie in
einem maschenbasierten Netzwerk eingerichtet wären, wie vorstehend mit Bezug
auf 1A beschrieben wurde. Auf diese weise können Pfade
nicht über
die Begrenzungen der Matrix verlaufen. Zum Beispiel kann ein Pfad
nicht vom Router R1,n zum Router R1,1 in der positiven Richtung verlaufen.
-
Die
Positionszuweisungen der Zeilen und Spalten der Router werden dann
für das
zweite virtuelle Netzwerk verschoben, wie nachstehend gezeigt.
-
-
Analog
der vorstehenden Erörterung
können
Pfade nicht über
die Begrenzungen der Matrix verlaufen. Jedoch werden die Begrenzungen
entlang anderer Router-Pfade als im ersten virtuellen Netzwerk hergestellt. Zum
Beispiel ist ein Pfad vom Router R2,1 zum
Router Rn,1 in der positiven Richtung im
zweiten virtuellen Netzwerk ungültig,
aber im ersten virtuellen Netzwerk gültig. In gleicher Weise ist
ein Pfad vom Router R2,1 zum Router Rn,1 in der negativen Richtung im ersten virtuellen
Netzwerk ungültig,
aber im zweiten virtuellen Netzwerk gültig. Auf diese Weise stellt
jedes der zwei virtuellen Netzwerke ein einzelnes maschenbasiertes
Netzwerk analog der vorstehenden Erörterung dar. Durch Verwendung
dieser zwei Aufbauten für
die zwei virtuellen Netzwerke ist jeder Knoten in jedem virtuellen
Netzwerk sowohl einer Zeile als auch einer Spalte einer Konnektivitätsmatrix
zugeordnet, wie vorstehend behandelt. Eine Gesamt-Konnektivitätsmatrix
wird erzeugt und neue Pfade werden erzeugt, wie vorstehend mit Bezug
auf 5 behandelt.
-
In
Schritt 550 von 5 wird eine Untergruppe der
Gruppe von physikalisch verbundenen Knoten bestimmt, in der jeder
Knoten einen systemblockadefreien Pfad zu jedem anderen Knoten in
der Untergruppe aufweist. Idealerweise ist diese Untergruppe die
größte Untergruppe
der Gruppe physikalisch verbundener Knoten, in der jeder Knoten
einen systemblockadefreien Pfad zu jedem anderen Knoten in der Untergruppe aufweist.
Die Bestimmung dieser größten Untergruppe
ist jedoch eine vollständige
NP-(nichtdeterministische polynomiale)Fragestellung, das heißt, die
zur Lösung
der Fragestellung erforderliche Zeit erhöht sich exponentiell mit der
Größenordnung
der Fragestellung (in diesem Fall der Größenordnung der Konnektivitätsmatrix). Die
Lösung
einer derartigen Fragestellung kann sehr zeitaufwendig sein. Auf
diese Weise verwendet ein Ausführungsbeispiel
der vorliegenden Erfindung, das nachstehend mit Bezug auf 6 ausführlicher
beschrieben wird, einen heuristischen Algorithmus, der nahe an die
ideale Lösung
kommt. Die Zeit für
den heuristischen Algorithmus steigt als polynomiale Funktion der
Größenordnung
der Fragestellung statt exponentiell.
-
6 zeigt
die von einem Ausführungsbeispiel
der vorliegenden Erfindung befolgten Schritte bei der Bestimmung
einer Untergruppe von Knoten, die einen systemblockadefreien Pfad
untereinander aufweisen. 6 zeigt ausführlicher eine Ausführung des
Schrittes 550 von 5. Zuerst
wird ein Konnektivitätswert
für jeden
Knoten in der Gruppe von Knoten erzeugt, Schritt 620. Dieser
Konnektivitätswert
gibt die Anzahl der Knoten in der Gruppe an, zu denen, als auch
von denen ein bestimmter Knoten einen systemblockadefreien Pfad
aufweist. In einer Ausführung
der vorliegenden Erfindung ist dieser Konnektivitätswert auf
einer zeilenweisen Basis von Matrix C erzeugt. Die Konnektivität eines
Knotens x beginnt bei Null und wird jedes mal schrittweise um Eins
erhöht,
wenn sowohl Cx,y als auch Cx,y Eins
sind. Dies wird für
jeden der n Knoten in der Matrix C durchgeführt, wobei für jeden
Knoten ein Konnektivitätswert
erzeugt wird.
-
Die
Knoten werden dann gemäß ihrer
Konnektivität
sortiert, Schritt 620. Auf diese Weise wird eine Liste
von Knoten in der Reihefolge aufsteigender Konnektivität erzeugt,
so dass die als erste in der Liste stehenden Knoten die geringste
Konnektivität
aufweisen.
-
Von
der Gruppe von Knoten werden Knoten entfernt, bis eine vollständige Konnektivität der verbleibenden
Knoten erreicht ist, Schritt 630. Vollständige Konnektivität bezieht
sich darauf, dass jeder Knoten in der verbleibenden Gruppe einen
systemblockadefreien Pfad zu jedem anderen Knoten in der verbleibenden
Gruppe (das heißt,
jedes Element der Konnektivitätsmatrix
ist eine Eins) aufweist. Knoten werden von der Gruppe von Knoten
gemäß ihrer
Konnektivität
entfernt. Auf diese Weise werden die als erste in der Konnektivitätsliste stehenden
Knoten, die die Knoten mit der geringsten Konnektivität sind,
von der Liste entfernt, bevor andere Knoten von der Gruppe entfernt
werden. Dieser Prozeß des
Entfernens von Knoten von der Liste wird wiederholt, bis vollständige Konnektivität erreicht
wird (das heißt,
bis jeder in der Gruppe verbleibende Knoten einen systemblockadefreien
Pfad zu jedem anderen Knoten in der Gruppe aufweist).
-
Sobald
vollständige
Konnektivität
erreicht ist, wird versucht, von der Gruppe entfernte Knoten der Gruppe
wieder hinzuzufügen,
Schritt 640. Es sei angemerkt, dass Schritt 640 ein
optionaler Optimierungsschritt ist. Ein Knoten wird der Gruppe wieder
hinzugefügt,
wenn die Gruppe mit dem wieder hinzugefügten Knoten eine vollständige Konnektivität beibehält. In einer
Ausführung
wird versucht, Knoten in der umgekehrten Reihenfolge ihrer Entnahme
in Schritt 630 wieder hinzuzufügen (das heißt, der
erste zu entfernende Knoten ist der letzte Knoten, bei dem ein Hinzufügen versucht
wird). Zum Beispiel kann die in Schritt 610 bestimmte Gruppe
von Knoten fünfzig
Rechenknoten aufweisen, von denen acht in Schritt 630 entfernt
werden. Jedoch kann die Konnektivität dieser fünfzig Knoten so beschaffen
sein, dass der dritte und fünfte
in Schritt 630 zu entfernende Knoten nur deshalb keine
vollständige
Konnektivität
mit den anderen Knoten zu der Zeit hatte, zu der sie entfernt wurden,
weil sie nicht mit den anderen sechs in Schritt 630 entfernten
Knoten verbunden waren. Folglich könnten der dritte und fünfte Knoten
wieder zu der verbleibenden Gruppe von zweiundvierzig Knoten hinzugefügt werden
und vollständige
Konnektivität
könnte
immer noch erreicht werden.
-
Auf
diese Weise verbessert die vorliegende Erfindung die Fehlertoleranz
eines Netzwerksystems. Wenn (eine) fehlerhafte Komponente(n) im
Netzwerk erkannt wird/werden, bestimmt das System unter Berücksichtigung
der fehlerhaften Komponente(n) eine Gruppe von Knoten, die miteinander
physikalisch verbunden sind. Eine Untergruppe dieser Gruppe von
Knoten wird erzeugt, um sicherzustellen, dass jeder Knoten in dieser
Untergruppe einen systemblockadefreien Pfad mit jedem anderen Knoten
in der Untergruppe aufweist. Diese Untergruppe von Knoten wird die
neue Gruppe von Rechenknoten, die das Netzwerk darstellt. Das System
führt diese
Schritte automatisch in einer Art und Weise aus, die für den(die)
Systemanwender transparent ist. Obwohl Komponenten versagen können, während das
Netzwerk in Betrieb ist, behebt das Netzwerk auf diese Weise die
Probleme automatisch ohne Anwendereingriff.
-
Auf
diese Weise wurden ein Verfahren und Einrichtungen zur Verbesserung
der Fehlertoleranz eines Netzwerkes beschrieben.