DE69533230T2 - Verfahren und vorrichtung zur verbesserung der fehlertoleranz eines netzwerkes - Google Patents

Verfahren und vorrichtung zur verbesserung der fehlertoleranz eines netzwerkes Download PDF

Info

Publication number
DE69533230T2
DE69533230T2 DE69533230T DE69533230T DE69533230T2 DE 69533230 T2 DE69533230 T2 DE 69533230T2 DE 69533230 T DE69533230 T DE 69533230T DE 69533230 T DE69533230 T DE 69533230T DE 69533230 T2 DE69533230 T2 DE 69533230T2
Authority
DE
Germany
Prior art keywords
nodes
node
network
router
subset
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69533230T
Other languages
English (en)
Other versions
DE69533230D1 (de
Inventor
S. Suresh CHITTOR
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Application granted granted Critical
Publication of DE69533230D1 publication Critical patent/DE69533230D1/de
Publication of DE69533230T2 publication Critical patent/DE69533230T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/55Prevention, detection or correction of errors
    • H04L49/557Error correction, e.g. fault recovery or fault tolerance
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/15Interconnection of switching modules
    • H04L49/1553Interconnection of ATM switching modules, e.g. ATM switching fabrics
    • H04L49/1576Crossbar or matrix
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/55Prevention, detection or correction of errors
    • H04L49/555Error detection

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

  • 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 310340 enthalten Steuerinformationen, die den geeigneten Pfad durch das Netzwerk 100 angeben. Nach den Header-Blöcken 310340 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 310340 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 401404 ist mit vier verschiedenen Eingangswarteschlangen 418a, 418b, 418c und 418d gekoppelt. Die Eingangswarteschlangen 418a418d sind Zwischenspeichereinrichtungen im Router 400 für eingehende Daten. In einem Ausführungsbeispiel der vorliegenden Erfindung ist jede der Eingangswarteschlangen 418a418d ein 16-Flit-Silo-(FIFO)-Zwischenspeicher. Deshalb kann jede der Eingangswarteschlangen 418a418d kleiner sein, als die Größe eines Paketes, das durch das Netzwerk geroutet wird.
  • Jede der Warteschlangen 418a418d 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 411414 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 418a418d ü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 401404 und der Ausgangsverbindungen 411414. 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 411414 in der gleichen Richtung liegt.
  • Vom Router 400 über die Eingangsverbindungen 402404 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 419a419d, die direkt mit dem Rechenknoten gekoppelt sind, der mit Router 400 verbunden ist. Diese Eingangswarteschlangen 419a419d werden analog zu den vorstehend besprochenen Eingangswarteschlangen 418a418d verwendet, ausgenommen, dass die Quelle der an die Eingangswarteschlangen 419a419d ü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 419a419d übertragen und die an die Eingangswarteschlangen 419a419d 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 401404 zu den vier Ausgangsverbindungen 411414. Die Kanäle jeder der vier Eingangsverbindungen 401404 werden durch die Kreuzschiene 416 auf die Ausgangsverbindungen 411414 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 401404 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 411414 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 411414 mit vier Ausgangskanälen verbunden, von denen jeder einem Eingangskanal der Eingangsverbindungen 401404 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 418a418d). 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 411414 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 401404 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 530550 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.
  • Figure 00240001
  • 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.
  • Figure 00280001
  • 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.
  • Figure 00290001
  • 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.

Claims (9)

  1. Ein Verfahren zum Finden einer Menge verfügbarer Rechenknoten in einem Netzwerk bei Erkennung einer fehlerhaften Netzwerkkomponente, wobei das Verfahren die Schritte umfaßt: (a) Bestimmen einer Menge von physikalisch miteinander gekoppelten Knoten in dem Netzwerk; (b) Bestimmen eines Konnektivitätswerts für jeden Knoten der Menge von Knoten, welcher eine Anzahl von Knoten der Menge von Knoten angibt, zu denen dieser Knoten über einen blockadefreien Pfad verfügt; (c) Entfernen von Knoten aus der Menge von Knoten entsprechend ihrer Konnektivitätswerte, um eine Untermenge der Menge von Knoten derart zu bestimmen, daß jeder Knoten in der Untermenge Daten zu und von jedem anderen Knoten in der Untermenge übertragen kann, wobei Knoten mit einem geringeren Konnektivitätswert vor anderen Knoten entfernt werden; und (d) Verwenden der Untermenge der Menge von Knoten als Menge von verfügbaren Rechenknoten.
  2. Das Verfahren gemäß Anspruch 1, wobei der Bestimmungsschritt (a) die Bestimmung einer größten Menge von physikalisch miteinander gekoppelten Knoten in dem Netzwerk enthält, wobei die fehlerhafte Netzwerkkomponente ausgeschlossen wird.
  3. Das Verfahren gemäß Anspruch 1, wobei das Netzwerk eine Mehrzahl von virtuellen Netzwerken unterstützt und wobei der Bestimmungsschritt (b) eine Bestimmung des Konnektivitätswerts unter Verwendung der Mehrzahl von virtuellen Netzwerken enthält.
  4. Das Verfahren gemäß Anspruch 3, ferner eine Überprüfung enthaltend, ob zwischen jedem der Knoten in der Untermenge ein blockadefreier Pfad vorhanden ist, wobei für jedes von der Mehrzahl virtueller Netzwerke ein anderes blockadefreies Routing-Schema verwendet wird.
  5. Das Verfahren gemäß Anspruch 1, ferner eine Überprüfung enthaltend, ob zwischen jedem der Knoten in der Untermenge ein blockadefreier Pfad vorhanden ist.
  6. Das Verfahren gemäß Anspruch 1, ferner mit einem Hinzufügen eines Knotens zu der Untermenge von Knoten, wobei der hinzugefügte Knoten einer aus der Menge von Knoten ist, die vorher aus der Untermenge von Knoten entfernt wurde.
  7. Eine Einrichtung zum Finden einer Menge von verfügbaren Knoten in einem Netzwerk bei Erkennung einer fehlerhaften Netzwerkkomponente, aufweisend: Mittel zum Bestimmen einer Menge von physikalisch miteinander gekoppelten Knoten in dem Netzwerk; Mittel zum Bestimmen eines Konnektivitätswerts für jeden Knoten der Menge von Knoten, der eine Anzahl von Knoten der Menge von Knoten angibt, zu denen ein bestimmter Knoten über einen blockadefreien Pfad verfügt; Mittel zum Entfernen von Knoten aus der Menge von Knoten entsprechend ihrer Konnektivitätswerte, um eine Untermenge der Menge von Knoten derart zu bestimmen, daß jeder Knoten in der Untermenge Daten zu und von jedem anderen Knoten in der Untermenge übertragen kann, wobei Knoten mit einem geringeren Konnektivitätswert vor anderen Knoten entfernt werden; und Mittel zum Verwenden der Untermenge der Menge von Knoten als Menge verfügbarer Knoten.
  8. Die Einrichtung gemäß Anspruch 7, wobei das Netzwerk eine Mehrzahl virtueller Netzwerke unterstützt und wobei die Mittel zum Bestimmen des Konnektivitätswerts den Konnektivitätswert unter Verwendung der Mehrzahl von virtuellen Netzwerken bestimmen.
  9. Die Einrichtung gemäß Anspruch 8, ferner mit Mitteln zum Überprüfen, ob zwischen jedem der Knoten in der Untermenge ein blockadefreier Pfad vorhanden ist, wobei für jedes von der Mehrzahl von virtuellen Netzwerken ein anderes blockadefreies Routing-Schema verwendet wird.
DE69533230T 1994-12-21 1995-12-19 Verfahren und vorrichtung zur verbesserung der fehlertoleranz eines netzwerkes Expired - Lifetime DE69533230T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US363353 1973-05-24
US08/363,353 US5592610A (en) 1994-12-21 1994-12-21 Method and apparatus for enhancing the fault-tolerance of a network
PCT/US1995/016606 WO1996019770A1 (en) 1994-12-21 1995-12-19 Method and apparatus for enhancing the fault-tolerance of a network

Publications (2)

Publication Number Publication Date
DE69533230D1 DE69533230D1 (de) 2004-08-05
DE69533230T2 true DE69533230T2 (de) 2005-06-30

Family

ID=23429878

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69533230T Expired - Lifetime DE69533230T2 (de) 1994-12-21 1995-12-19 Verfahren und vorrichtung zur verbesserung der fehlertoleranz eines netzwerkes

Country Status (6)

Country Link
US (1) US5592610A (de)
EP (1) EP0799449B1 (de)
AU (1) AU4525196A (de)
DE (1) DE69533230T2 (de)
HK (1) HK1003668A1 (de)
WO (1) WO1996019770A1 (de)

Families Citing this family (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5859983A (en) * 1996-07-01 1999-01-12 Sun Microsystems, Inc Non-hypercube interconnection subsystem having a subset of nodes interconnected using polygonal topology and other nodes connect to the nodes in the subset
ES2207722T3 (es) * 1996-11-13 2004-06-01 British Telecommunications Public Limited Company Sistema de gestion de errores para una red de telecomunicaciones.
US6212649B1 (en) 1996-12-30 2001-04-03 Sentar, Inc. System and method for providing highly-reliable coordination of intelligent agents in a distributed computing system
US5884018A (en) * 1997-01-28 1999-03-16 Tandem Computers Incorporated Method and apparatus for distributed agreement on processor membership in a multi-processor system
US6182180B1 (en) 1997-05-13 2001-01-30 Micron Electronics, Inc. Apparatus for interfacing buses
US6314525B1 (en) 1997-05-13 2001-11-06 3Com Corporation Means for allowing two or more network interface controller cards to appear as one card to an operating system
US6105151A (en) * 1997-05-13 2000-08-15 3Com Corporation System for detecting network errors
US6134678A (en) * 1997-05-13 2000-10-17 3Com Corporation Method of detecting network errors
US6272648B1 (en) 1997-05-13 2001-08-07 Micron Electronics, Inc. System for communicating a software-generated pulse waveform between two servers in a network
US6363497B1 (en) 1997-05-13 2002-03-26 Micron Technology, Inc. System for clustering software applications
US6253334B1 (en) 1997-05-13 2001-06-26 Micron Electronics, Inc. Three bus server architecture with a legacy PCI bus and mirrored I/O PCI buses
US6105089A (en) * 1997-05-13 2000-08-15 Micron Electronics, Inc. Data management system for adding or exchanging components on a running computer
US5987554A (en) * 1997-05-13 1999-11-16 Micron Electronics, Inc. Method of controlling the transfer of information across an interface between two buses
US6208616B1 (en) 1997-05-13 2001-03-27 3Com Corporation System for detecting errors in a network
US6134673A (en) * 1997-05-13 2000-10-17 Micron Electronics, Inc. Method for clustering software applications
US6249828B1 (en) 1997-05-13 2001-06-19 Micron Electronics, Inc. Method for the hot swap of a mass storage adapter on a system including a statically loaded adapter driver
US6052733A (en) * 1997-05-13 2000-04-18 3Com Corporation Method of detecting errors in a network
US6269412B1 (en) 1997-05-13 2001-07-31 Micron Technology, Inc. Apparatus for recording information system events
US6249834B1 (en) 1997-05-13 2001-06-19 Micron Technology, Inc. System for expanding PCI bus loading capacity
US6243773B1 (en) 1997-05-13 2001-06-05 Micron Electronics, Inc. Configuration management system for hot adding and hot replacing devices
US6418492B1 (en) 1997-05-13 2002-07-09 Micron Electronics Method for computer implemented hot-swap and hot-add
US6148355A (en) * 1997-05-13 2000-11-14 Micron Electronics, Inc. Configuration management method for hot adding and hot replacing devices
US6058445A (en) * 1997-05-13 2000-05-02 Micron Electronics, Inc. Data management method for adding or exchanging components on a running computer
US6324608B1 (en) 1997-05-13 2001-11-27 Micron Electronics Method for hot swapping of network components
US6247079B1 (en) * 1997-05-13 2001-06-12 Micron Electronics, Inc Apparatus for computer implemented hot-swap and hot-add
US6195717B1 (en) * 1997-05-13 2001-02-27 Micron Electronics, Inc. Method of expanding bus loading capacity
US5892928A (en) * 1997-05-13 1999-04-06 Micron Electronics, Inc. Method for the hot add of a network adapter on a system including a dynamically loaded adapter driver
US6292905B1 (en) 1997-05-13 2001-09-18 Micron Technology, Inc. Method for providing a fault tolerant network using distributed server processes to remap clustered network resources to other servers during server failure
US6046742A (en) * 1997-05-13 2000-04-04 Micron Electronics, Inc. Display of system information
US6189109B1 (en) 1997-05-13 2001-02-13 Micron Electronics, Inc. Method of remote access and control of environmental conditions
US6282673B1 (en) 1997-05-13 2001-08-28 Micron Technology, Inc. Method of recording information system events
US6175490B1 (en) 1997-10-01 2001-01-16 Micron Electronics, Inc. Fault tolerant computer system
US6101181A (en) * 1997-11-17 2000-08-08 Cray Research Inc. Virtual channel assignment in large torus systems
US6230252B1 (en) 1997-11-17 2001-05-08 Silicon Graphics, Inc. Hybrid hypercube/torus architecture
US6223234B1 (en) 1998-07-17 2001-04-24 Micron Electronics, Inc. Apparatus for the hot swap and add of input/output platforms and devices
US6205503B1 (en) 1998-07-17 2001-03-20 Mallikarjunan Mahalingam Method for the hot swap and add of input/output platforms and devices
US6484155B1 (en) 1998-07-21 2002-11-19 Sentar, Inc. Knowledge management system for performing dynamic distributed problem solving
US6791939B1 (en) * 1999-06-02 2004-09-14 Sun Microsystems, Inc. Dynamic generation of deadlock-free routings
US6480923B1 (en) * 1999-08-19 2002-11-12 International Business Machines Corporation Information routing for transfer buffers
US6751698B1 (en) * 1999-09-29 2004-06-15 Silicon Graphics, Inc. Multiprocessor node controller circuit and method
US6674720B1 (en) 1999-09-29 2004-01-06 Silicon Graphics, Inc. Age-based network arbitration system and method
US6646991B1 (en) * 1999-12-22 2003-11-11 Intel Corporation Multi-link extensions and bundle skew management
US6687840B1 (en) 2000-04-21 2004-02-03 Intel Corporation Multi-link extensions and bundle skew management
US6647516B1 (en) * 2000-04-19 2003-11-11 Hewlett-Packard Development Company, L.P. Fault tolerant data storage systems and methods of operating a fault tolerant data storage system
CN1319237C (zh) * 2001-02-24 2007-05-30 国际商业机器公司 超级计算机中通过动态重新划分的容错
US6909695B2 (en) * 2001-05-07 2005-06-21 Sun Microsystems, Inc. Fault-tolerant, self-healing routing scheme for a multi-path interconnection fabric in a storage network
US6766482B1 (en) 2001-10-31 2004-07-20 Extreme Networks Ethernet automatic protection switching
US7035539B2 (en) * 2002-01-09 2006-04-25 Fujitsu Limited Interconnecting nodes in an optical communication system
US7096383B2 (en) 2002-08-29 2006-08-22 Cosine Communications, Inc. System and method for virtual router failover in a network routing system
US7231543B2 (en) * 2004-01-14 2007-06-12 Hewlett-Packard Development Company, L.P. Systems and methods for fault-tolerant processing with processor regrouping based on connectivity conditions
US7774461B2 (en) 2004-02-18 2010-08-10 Fortinet, Inc. Mechanism for determining a congestion metric for a path in a network
US8223634B2 (en) * 2004-02-18 2012-07-17 Fortinet, Inc. Mechanism for implementing load balancing in a network
US7463588B1 (en) * 2004-02-18 2008-12-09 Woven Systems, Inc. Mechanism for enabling load balancing to be achieved in a loop-free switching path, reverse path learning network
US7401203B2 (en) * 2004-09-14 2008-07-15 International Business Machines Corporation Method for wiring allocation and switch configuration in a multiprocessor environment
GB2419698B (en) * 2004-10-29 2008-06-04 Hewlett Packard Development Co Supercomputing employing spare or inactive computing elements
US7694064B2 (en) * 2004-12-29 2010-04-06 Hewlett-Packard Development Company, L.P. Multiple cell computer systems and methods
US7586888B2 (en) * 2005-02-17 2009-09-08 Mobitrum Corporation Method and system for mesh network embedded devices
US7630736B2 (en) * 2005-10-11 2009-12-08 Mobitrum Corporation Method and system for spatial data input, manipulation and distribution via an adaptive wireless transceiver
US7620841B2 (en) * 2006-01-19 2009-11-17 International Business Machines Corporation Re-utilizing partially failed resources as network resources
US8411590B2 (en) 2006-07-27 2013-04-02 Mobitrum Corporation Mesh network remote control device
USRE47894E1 (en) 2006-07-27 2020-03-03 Iii Holdings 2, Llc Method and system for dynamic information exchange on location aware mesh network devices
US8305935B2 (en) * 2006-07-27 2012-11-06 Mobitrum Corporation Method and system for dynamic information exchange on location aware mesh network devices
US8305936B2 (en) 2006-07-27 2012-11-06 Mobitrum Corporation Method and system for dynamic information exchange on a mesh network in a vehicle
US7801058B2 (en) * 2006-07-27 2010-09-21 Mobitrum Corporation Method and system for dynamic information exchange on mesh network devices
US8427979B1 (en) 2006-07-27 2013-04-23 Mobitrum Corporation Method and system for dynamic information exchange on location aware mesh network devices
US8209409B2 (en) * 2007-04-09 2012-06-26 Hewlett-Packard Development Company, L.P. Diagnosis of a storage area network
US20090189739A1 (en) * 2008-01-25 2009-07-30 Mobitrum Corporation Passive voice enabled rfid devices
US7872990B2 (en) 2008-04-30 2011-01-18 Microsoft Corporation Multi-level interconnection network
DE102009046282A1 (de) * 2009-11-02 2011-05-12 Robert Bosch Gmbh Ermittlung verklemmungskritischer Beziehungen zwischen Komponenten eines Fahrzeugsystems
US9424229B2 (en) * 2013-02-13 2016-08-23 Advanced Micro Devices, Inc. Parallel torus network interconnect
US9361973B2 (en) * 2013-10-28 2016-06-07 Cypress Semiconductor Corporation Multi-channel, multi-bank memory with wide data input/output

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3687400T2 (de) * 1985-11-04 1993-07-15 Ibm Digitale nachrichtenuebertragungsnetzwerke und aufbau von uebertragungswegen in diesen netzwerken.
US5008882A (en) * 1987-08-17 1991-04-16 California Institute Of Technology Method and apparatus for eliminating unsuccessful tries in a search tree
US5105424A (en) * 1988-06-02 1992-04-14 California Institute Of Technology Inter-computer message routing system with each computer having separate routinng automata for each dimension of the network
US5138615A (en) * 1989-06-22 1992-08-11 Digital Equipment Corporation Reconfiguration system and method for high-speed mesh connected local area network
US5218676A (en) * 1990-01-08 1993-06-08 The University Of Rochester Dynamic routing system for a multinode communications network
US5058105A (en) * 1990-04-04 1991-10-15 At&T Bell Laboratories Network alternate routing arrangement
US5151900A (en) * 1991-06-14 1992-09-29 Washington Research Foundation Chaos router system

Also Published As

Publication number Publication date
EP0799449B1 (de) 2004-06-30
EP0799449A1 (de) 1997-10-08
AU4525196A (en) 1996-07-10
WO1996019770A1 (en) 1996-06-27
DE69533230D1 (de) 2004-08-05
EP0799449A4 (de) 2001-11-14
HK1003668A1 (en) 1998-11-06
US5592610A (en) 1997-01-07

Similar Documents

Publication Publication Date Title
DE69533230T2 (de) Verfahren und vorrichtung zur verbesserung der fehlertoleranz eines netzwerkes
DE69133257T2 (de) Vorrichtung und verfahren zur schnellen paketvermittlung
DE60006842T2 (de) Multiprozessor-Node-Controller-Schaltung und Verfahren
DE69332778T2 (de) Verfahren und geraet mit einzigadressenzuweisung, knotenselbstidentifizierung und topologieabbildung fuer einen gerichteten, acyclischen graph
DE3642324C2 (de) Multiprozessoranlage mit Prozessor-Zugriffssteuerung
DE69628631T2 (de) Dateneingangs/-ausgangsvorrichtung durch Referenzierung zwischen zentralen Verarbeitungseinheiten und Ein-/Ausgabevorrichtungen
DE102009022152B4 (de) Verwenden von Kritikaliätsinformationen zum Routen von Cache-Kohärenz-Kommmunikationen
DE602006000516T2 (de) Architektur eines Kommunikationsknoten in einem global asynchronen Netzwerk on-chip-System
DE69735740T2 (de) Asynchrone paketvermittlung
DE69334172T2 (de) Verfahren und Vorrichtung zur Arbitrierung auf einen acyclischen gerichteten Graph
DE60111551T2 (de) Mechanismus zur vervollständigung von nachrichten im speicher
DE69433293T2 (de) Netzwerkübertragungsverfahren für Systeme mit virtuellem Speicher
DE69922693T2 (de) Systemem und verfahren für netzwerkvorrichtung und ein-ausgabegerätetreiber
DE69907776T2 (de) Verfahren und Vorrichtung zur Identifizierung gefährdeter Bauteile in einem System mit redundanten Bauteilen
DE69724355T2 (de) Erweiterte symmetrische Multiprozessorarchitektur
DE102005014727B4 (de) Hardwarekoordination von Power Management-Aktivitäten
DE3114961C2 (de)
DE112011102415B4 (de) Registerzugriff in einer verteilten virtuellen Brückenumgebung
DE60303026T2 (de) System, verfahren und produkt zur verwaltung des datenverkehrs in einem netzwerk
DE60222656T2 (de) Vorrichtung und verfahren für effizientes multicasting von datenpaketen
DE602005004508T2 (de) Speichersystem und Speichersteuerverfahren
DE3127349A1 (de) Signalverarbeitungssystem mit verteilten elementen
DE112006001167T5 (de) Simulieren mehrerer virtueller Kanäle in Switching-Fabric-Netzwerken
DE4208924A1 (de) Verfahren zur kommunikation zwischen prozessoren und parallelverarbeitungscomputer hierfuer
DE2740056A1 (de) Mulitprozessor-rechnersystem

Legal Events

Date Code Title Description
8364 No opposition during term of opposition