-
Die
vorliegende Erfindung betrifft allgemein Datenübertragungen zwischen Rechnersystemen.
-
In
einem Systembereichsnetzwerk (System Area Network – SAN) stellt
die Hardware einen Nachrichtenweiterleitungsmechanismus bereit,
der für
Datenübertragungen
zwischen Eingabe-/Ausgabe-(E/A-)Einheiten
und für
Zwischenprozess-Datenübertragungen
zwischen allgemeinen Rechnerknoten (IPC) genutzt werden kann. Nutzer
greifen auf die SAN-Nachrichtenweiterleitungshardware zu, indem sie
Sende-/Empfangsnachrichten in Sende-/Empfangsarbeitswarteschlangen in einem
SAN-Kanaladapter (CA) stellen. Die Sende-/Empfangsarbeitswarteschlangen
(WQ) werden einem Nutzer als Warteschlangenpaar (QP) zugewiesen.
Die Nachrichten können über fünf verschiedene
festgelegte Verbindungsarten gesendet werden: "Reliable Connected" (RC) (zuverlässig verbunden), "Reliable Datagram" (RD) (zuverlässiges Datagramm), "Unreliable Connected" (UC) (unzuverlässig verbunden), "Unreliable Datagram" (UD) (unzuverlässiges Datagramm)
oder "Raw Datagram" (RawD) (Rohdatagramm). Überdies gibt
es einen Satz von Operationscodes, die vom jeweiligen Hersteller
festgelegt werden können
und es verschiedenen Unternehmen ermöglichen, kundenspezifische
Pakete festzulegen, bei denen der Weiterleitungs-Kopfbereich (routing
header) dennoch gleich gestaltet ist. Nutzer rufen die Ergebnisse
der festgelegten Nachrichten aus einer Abarbeitungswarteschlange
(completion queue, CQ) über SAN-Sende-
und -Empfangsarbeitsfertigstellungen (work completions, WC) ab.
Bei den vom Hersteller definierbaren Operationen wird nicht festgelegt,
ob sie dieselbe Warteschlangenstruktur wie die festgelegten Paketarten
verwenden. Ungeachtet der Art des Pakets besteht die Aufgabe des
Quellenkanaladapters darin, abgehende Nachrichten zu segmentieren
und sie an das Ziel zu versenden. Die Aufgabe des Zielkanaladapters
besteht darin, eingehende Nachrichten wieder zusammenzusetzen und
sie in den vom Nutzer des Ziels festgelegten Speicherbereich zu
stellen. Es gibt zwei Arten von Kanaladaptern, einen Host-Kanaladapter
(HCA) und einen Zielkanaladapter (TCA). Der Host-Kanaladapter wird
von Universalrechnerknoten verwendet, um auf das SAN-Schaltnetzwerk (SAN
fabric) zuzugreifen. Um auf Funktionen des Host-Kanaladapters zuzugreifen, verwenden
Nutzer die Schnittstelle SAN-Verbs. Die Software, die Verbs auswertet
und direkt auf den Kanaladapter zugreift, wird als Kanalschnittstelle
(channel interface, CI) bezeichnet.
-
Komponenten
von InfiniBand (ein Warenzeichen. der InfiniBand Trade Association)
wird während
der Initialisierung eine lokale Kennung (Local Identifier, LID)
zugewiesen. Mittels der LID wird eine Komponente in einem Teilnetzwerk
angesprochen. Alle InfiniBand-Pakete enthalten eine Quellen-LID (Source
LID) und eine Ziel-LID (Destination LID), die die Quellen- und die
Zieladresse des Pakets in dem Teilnetzwerk angeben. InfiniBand-Komponenten
wird auch mindestens ein Partitionsschlüssel (Partition Key, P_Key)
zugewiesen. Der P_Key dient zur Unterteilung eines InfiniBand-Schaltnetzwerks
in ein oder mehrere Gruppen. InfiniBand-Komponenten werden dann
in eine oder mehrere dieser Gruppen aufgenommen. Alle anderen Datenübertragungen
sind gestattet. Die Endknoten werden in Partitionen gruppiert, und
der Zugriff wird über
den P_Key gesteuert. Im Wesentlichen ermöglicht der Partitionierungsmechanismus
von InfiniBand Hosts, Adapter und gemeinsam benutzte Adapter kontrolliert
bereitzustellen.
-
InfiniBand
stellt jedoch keinen Mechanismus zur Partitionierung eines Endknotens
bereit, so dass mehrere Betriebssysteminstanzen einen einzigen Anschluss
(port) eines Kanaladapters gemeinsam benutzen, während sie gleichzeitig kontrollierten
Zugang zu einem InfiniBand-Teilnetzwerk erhalten. Systeme nach dem
Stand der Technik fügen üblicherweise
einen oder mehrere zusätzliche
Paket-Kopfbereiche
hinzu, um die Betriebssysteminstanz zu kennzeichnen. Durch das Hinzufügen von
einem oder mehreren Paket-Kopfbereichen wird die Datenübertragung
komplexer. Daher stellt dieses Nichtvorhandensein eines Mechanismus
zur Partitionierung eines Endknotens ein Problem für Server
der oberen Leistungsklasse dar, die eine Partitionierung bei ihrer Verarbeitung
und eine Partitionierung von Speicherressourcen mittels logischer
oder physischer Partitionierung unterstützen.
-
Daher
besteht Bedarf an einem Mechanismus, der es ermöglicht, dass eine einzige physische Komponente
als mehrere Komponenten erscheint, wobei jede einzelne Komponente
ganz eigene Zugriffssteuerungsebenen hat. Bei den Komponenten kann
es sich um Host-Kanaladapter (HCAs), Zielkanaladapter (TCAs) oder
Vermittlungsstellen handeln.
-
Die
vorliegende Erfindung stellt ein Verfahren nach Anspruch 1, ein
entsprechendes System nach Anspruch 2 und ein Rechnerprogrammprodukt nach
Anspruch 3 bereit.
-
Die
neuartigen Merkmale, die als kennzeichnend für die Erfindung erachtet werden,
sind in den beigefügten
Ansprüchen
dargelegt. Die Erfindung selbst jedoch sowie eine bevorzugte Verwendungsart,
weitere Aufgaben und Vorteile der Erfindung lassen sich am besten
durch Bezugnahme auf die folgende ausführliche Beschreibung einer
der Veranschaulichung dienenden Ausführungsform verstehen, wenn
diese in Verbindung mit den beigefügten Zeichnungen gelesen wird,
in denen:
-
1 ein
Netzwerkrechnersystem gemäß einer
bevorzugten Ausführungsform
der vorliegenden Erfindung darstellt;
-
2 eine
Funktionsübersicht
eines Host-Prozessorknotens gemäß einer
bevorzugten Ausführungsform
der vorliegenden Erfindung zeigt;
-
3 einen
Host-Kanaladapter gemäß einer bevorzugten
Ausführungsform
der vorliegenden Erfindung darstellt;
-
4 die
Verarbeitung von Arbeitsanforderungen gemäß einer bevorzugten Ausführungsform der
vorliegenden Erfindung darstellt;
-
5 ein
Datenpaket gemäß einer
bevorzugten Ausführungsform
der vorliegenden Erfindung veranschaulicht;
-
6 eine
physische Komponente mit virtuellen Kanaladaptern und virtuellen
Vermittlungsstellen gemäß einer
Ausführungsform
der vorliegenden Erfindung darstellt;
-
7 ein
beispielhaftes Flussdiagramm ist, das eine Operation bei einem statischen
Auswahlsystem zur Konfiguration eines physischen Elements gemäß einer
bevorzugten Ausführungsform
der vorliegenden Erfindung darstellt;
-
8 ein
beispielhaftes Flussdiagramm ist, das zeigt, wie Host-Kanaladapter
und zugehörige Knoten
gemeldet werden, wenn sie gemäß einer
bevorzugten Ausführungsform
der vorliegenden Erfindung in Betrieb gehen oder außer Betrieb
genommen werden; und
-
9 ein
beispielhaftes Flussdiagramm ist, das eine Operation bei einem dynamischen
Auswahlsystem zur Konfiguration eines physischen Elements gemäß einer
bevorzugten Ausführungsform
der vorliegenden Erfindung darstellt.
-
Ein
Netzwerkrechnersystem hat Endknoten, Vermittlungsstellen, Router
und Verbindungsleitungen, die diese Komponenten miteinander verbinden. Die
Endknoten teilen die Nachricht in Pakete auf und senden die Pakete über die
Verbindungsleitungen. Die Vermittlungsstellen und die Router verbinden
die Endknoten miteinander und leiten die Pakete an den entsprechenden
Endknoten weiter. Am Ziel setzen die Endknoten die Pakete wieder
zu einer Nachricht zusammen.
-
Nun
Bezug nehmend auf die Figuren und insbesondere mit Bezug auf 1 ist
ein Netzwerkrechnersystem gemäß einer
bevorzugten Ausführungsform
der vorliegenden Erfindung schematisch dargestellt. Das in 1 dargestellte
Netzwerkrechnersystem hat die Form eines Systembereichsnetzwerks
(SAN) 100 und dient lediglich zur Veranschaulichung, und
die nachstehend beschriebenen Ausführungsformen der vorliegenden
Erfindung können
auf vielen anderen Rechnersystemen, die sich in Typ und Konfiguration
unterscheiden, realisiert werden.
-
Das
SAN 100 ist ein Netzwerk mit hoher Bandbreite und geringer
Latenzzeit, das Knoten in dem Netzwerkrechnersystem miteinander
verbindet. Ein Knoten ist eine beliebige Komponente, die an eine
oder mehrere Verbindungsleitungen eines Netzwerks angeschlossen
wird und den Ursprung und/oder das Ziel von Nachrichten in dem Netzwerk bildet.
In dem dargestellten Beispiel enthält das SAN 100 Knoten
in Form des Host-Prozessorknotens 102, des Host-Prozessorknotens 104,
des als redundantes Feld unabhängiger
Festplatten (RAID) ausgelegten Teilsystem-Knotens 106,
des E/A-Chassis-Knotens 108 und des PCI-E/A-Chassis-Knotens 184.
Die in 1 dargestellten Knoten dienen lediglich der Veranschaulichung,
da das SAN 100 eine beliebige Anzahl und jede beliebige
Art von unabhängigen
Prozessorknoten, E/A-Adapterknoten und E/A-Einheitenknoten verbinden kann. Jeder
Knoten kann die Funktion eines Endknotens übernehmen, der hier als eine
Einheit definiert ist, von der Nachrichten oder Rahmen im SAN 100 stammen
oder die letztlich Nachrichten oder Rahmen im SAN 100 verarbeitet.
-
In
der hier verwendeten Weise ist eine Nachricht eine von der Anwendung
definierte Datenaustauscheinheit, bei der es sich um eine einfache Übertragungseinheit
zwischen Prozessen, die zusammenarbeiten, handelt. Ein Paket ist
eine einzelne von Kopfbereichen und/oder einem Nachsatz des Netzwerkprotokolls
eingeschlossene Dateneinheit. Die Kopfbereiche stellen im Allgemeinen
Steuer- und Weiterleitungsinformationen bereit, um den Rahmen durch
das SAN zu leiten. Der Nachsatz enthält im Allgemeinen Steuerdaten
und Daten für
eine zyklische Blockprüfung
(CRC), um sicherzustellen, dass Pakete nicht mit beschädigtem Inhalt
zugestellt werden.
-
Das
SAN 100 beinhaltet die Datenübertragungs- und Verwaltungsinfrastruktur,
die sowohl E/A-Datenübertragungen
als auch Datenübertragungen
zwischen Prozessoren (interprocessor communications, IPC) in einem
Netzwerkrechnersystem unterstützt.
Das in 1 gezeigte SAN 100 enthält für die Datenübertragung
ein Vermittlungsnetz, das es vielen Einheiten ermöglicht,
Daten mit hoher Bandbreite und geringer Latenzzeit in einer sicheren,
fernverwalteten Umgebung gleichzeitig zu übertragen. Endknoten können über mehrere
Anschlüsse
Daten austauschen und mehrere Pfade durch das SAN-Schaltnetzwerk
nutzen. Die vielen Anschlüsse und
Pfade durch das in 1 gezeigte SAN können für fehlertolerante
Datenübertragungen
und für
Datenübertragungen
mit höherer
Bandbreite verwendet werden.
-
Das
in 1 gezeigte SAN 100 enthält die Vermittlungsstelle 112,
die Vermittlungsstelle 114, die Vermittlungsstelle 146 und
den Router 117. Eine Vermittlungsstelle ist eine Einheit,
die mehrere Verbindungsleitungen zusammenschaltet und die Weiterleitung
von Paketen von einer Verbindungsleitung auf eine andere Verbindungsleitung
innerhalb eines Teilnetzwerks unter Verwendung von einem kleinen Kopfbereich-Feld "Destination Local
Identifier" (DLID)
ermöglicht.
Ein Router ist eine Einheit, die mehrere Teilnetzwerke miteinander
verbindet und Rahmen von einer Verbindungsleitung in einem ersten
Teilnetzwerk auf eine andere Verbindungsleitung in einem zweiten
Teilnetzwerk unter Verwendung eines großen Kopfbereichs mit der Bezeichnung "Destination Globally
Unique Identifier" (DGUID)
weiterleiten kann.
-
In
einer Ausführungsform
ist eine Verbindungsleitung ein Vollduplex-Kanal zwischen zwei beliebigen
Netzwerkelementen des Schaltnetzwerks wie zum Beispiel Endknoten,
Vermittlungsstellen oder Routern. Zu beispielhaften geeigneten Verbindungsleitungen
gehören – ohne darauf
beschränkt
zu sein – Kupferkabel,
Lichtwellenleiterkabel und Kupferbahnen von gedruckten Schaltungen
auf Rückwandplatinen
und Leiterplatten.
-
Bei
zuverlässigen
Dienstarten erzeugen Endknoten wie zum Beispiel Hostprozessor-Endknoten
und E/A-Adapter-Endknoten Anforderungspakete und schicken Bestätigungspakete
zurück.
Vermittlungsstellen und Router leiten Pakete von der Quelle an das
Ziel weiter. Mit Ausnahme des veränderlichen CRC-Nachsatzfeldes, das
in jeder Stufe in dem Netzwerk aktualisiert wird, leiten Vermittlungsstellen
die Pakete unverändert
weiter. Router aktualisieren das veränderliche CRC-Nachsatzfeld
und ändern
andere Felder in dem Kopfbereich, während das Paket weitergeleitet
wird.
-
In
dem in 1 gezeigten SAN 100 enthalten der Host-Prozessorknoten 102,
der Host-Prozessorknoten 104, das RAID-E/A-Teilsystem 106, das E/A-Chassis 108 und
das PCI-E/A-Chassis 184 mindestens
einen Kanaladapter (CA) zur Anbindung an das SAN 100. In
einer Ausführungsform
ist jeder Kanaladapter ein Endpunkt, der die Kanaladapter-Schnittstelle
für Quellen-
oder Senkenpakete, die in dem SAN-Schaltnetzwerk übertragen
werden, ausreichend detailliert realisiert. Der Host-Prozessorknoten 102 enthält Kanaladapter
in Form von dem Host-Kanaladapter 118 und dem Host-Kanaladapter 120.
Der Host-Prozessorknoten 104 enthält den Host-Kanaladapter 122 und
den Host-Kanaladapter 124. Der Host-Prozessorknoten 102 enthält auch
die Zentraleinheiten 126 bis 130 und einen Speicher 132, die über ein
Bussystem 134 miteinander verbunden sind. Ebenso enthält der Host-Prozessorknoten 104 die
Zentraleinheiten 136 bis 140 und einen Speicher 142,
die über
ein Bussystem 144 miteinander verbunden sind. Der Host-Kanaladapter 118 stellt
eine Verbindung zur Vermittlungsstelle 112 bereit, die Host-Kanaladapter 120 und 122 stellen
eine Verbindung zu den Vermittlungsstellen 112 und 114 bereit, und
der Host-Kanaladapter 124 stellt
eine Verbindung zur Vermittlungsstelle 114 bereit.
-
In
einer Ausführungsform
ist ein Host-Kanaladapter in Hardware ausgeführt. In dieser gegebenen Art
der Ausführung
entlastet die Host-Kanaladapter-Hardware die Zentraleinheit und
den E/A-Adapter
von einem Großteil
des Übertragungsaufwands.
Diese Hardware-Ausführung
des Host-Kanaladapters gestattet auch mehrere gleichzeitige Übertragungen über ein
Vermittlungsnetzwerk, ohne den herkömmlichen Aufwand in Verbindung
mit Übertragungsprotokollen
in Kauf nehmen zu müssen.
In einer Ausführungsform
ermöglichen
die Host-Kanaladapter
und das SAN 100 in 1 den Nutzern
der E/A-Übertragungen
und der Übertragungen
zwischen Prozessoren (IPC-Übertragungen)
des Netzwerkrechnersystems Datenübertragungen,
bei denen die Daten nicht zuerst vom Prozessor kopiert werden müssen (zero
copy) und an denen der Prozess des Betriebssystemkerns nicht beteiligt
ist, und sie verwenden Hardware, um zuverlässige, fehlertolerante Übertragungen
zu ermöglichen.
Wie in 1 gezeigt ist, ist der Router 117 über Weitverkehrsnetz-(WAN-)
und/oder lokale Netzwerk-(LAN-)Verbindungen
mit anderen Hosts oder anderen Routern verbunden.
-
Das
E/A-Chassis 108 in 1 enthält eine Vermittlungsstelle 146 und
mehrere E/A-Module 148 bis 156. In diesen Beispielen
haben die E/A-Module die Form von Adapterkarten. Zu den in 1 gezeigten
beispielhaften Adapterkarten gehören
eine SCSI-Adapterkarte für
das E/A-Modul 148; eine Adapterkarte zur Fiber-Channel-Vermittlungseinheit
und zu Fiber-Channel-Arbitrated-Loop-(PC-AL-)Einheiten
für das
E/A-Modul 152; eine Ethernet-Adapterkarte für das E/A-Modul 150;
eine Grafikadapterkarte für
das E/A-Modul 154; und eine Videoadapterkarte für das E/A-Modul 156.
Jede bekannte Art einer Adapterkarte kann eingesetzt werden. Zu
den E/A-Adaptern gehört
auch eine Vermittlungsstelle auf der Rückwand (Backplane) des E/A-Adapters,
um die Adapterkarten mit dem SAN-Schaltnetzwerk zu verbinden. Diese
Module enthalten die Zielkanaladapter 158 bis 166.
-
In
diesem Beispiel enthält
der RAID-Teilsystemknoten 106 in 1 einen
Prozessor 168, einen Speicher 170, einen Zielkanaladapter
(TCA) 172 und mehrere redundante und/oder Speicherplatteneinheiten 174,
auf denen relativ kleine Datenblöcke
verteilt werden (striped storage disk unit). Bei dem Zielkanaladapter 172 kann
es sich um einen Host-Kanaladapter
mit uneingeschränktem
Funktionsumfang handeln.
-
Der
PCI-E/A-Chassis-Knoten 184 enthält einen TCA 186 und
mehrere PCI-Eingabe-/Ausgabe-Adapter (IOAs) 190 bis 192,
die über
den PCI-Bus 188 mit dem TCA 186 verbunden werden.
In diesen Beispielen haben die IOAs die Form von Adapterkarten.
Zu den in 1 gezeigten beispielhaften Adapterkarten
gehören
eine Modem-Adapterkarte 190 und eine serielle Adapterkarte 192.
Der TCA 186 packt PCI-Transaktionsanforderungen
oder Transaktionsantworten, die er von den PCI-IOAs 190 bis 192 empfängt, in
Datenpakete, um sie über
das SAN-Schaltnetzwerk an einen HCA wie zum Beispiel den HCA 118 zu
senden. Der HCA 118 stellt fest, ob empfangene Datenpakete
PCI-Übertragungen
enthalten, und wenn ja, decodiert er das Datenpaket, um die darin
gepackte PCI-Transaktionsanforderung oder
-antwort wie zum Beispiel eine DMA-Schreib- oder -Leseoperation
abzurufen. Der HCA 118 sendet sie an die entsprechende
Einheit wie zum Beispiel den Speicher 132. Wenn die PCI-Transaktion
eine DMA-Leseanforderung war, empfängt der HCA die Antwort daraufhin
aus dem Speicher wie zum Beispiel dem Speicher 132, packt
die PCI-Antwort in ein Datenpaket und sendet das Datenpaket über das SAN-Schaltnetzwerk an
den anfordernden TCA 186 zurück. Der TCA decodiert dann
die PCI-Transaktion von dem Datenpaket und sendet sie über den PCI-Bus 188 an
den PCI-IOA 190 oder 192.
-
Speicher-
und Ladeanforderungen von einem Prozessor wie zum Beispiel der CPU 126 an
einen PCI-IOA wie zum Beispiel den PCI-IOA 190 oder 192 werden
vom HCA 118 ebenfalls in ein Datenpaket gepackt, um sie über das
SAN-Schaltnetzwerk an den TCA 186, der dem geeigneten PCI-IOA 190 oder 192 entspricht,
zu übertragen.
Der TCA 186 decodiert das Datenpaket, um die PCI-Übertragung
abzurufen, und sendet die PCI-Speicher- oder -Ladeanforderung und
Daten über
den PCI-Bus 188 an den PCI-IOA 190 oder 192.
Wenn die Anforderung eine Ladeanforderung ist, empfängt der
TCA 186 eine Antwort vom PCI-IOA 190 oder 192,
die der TCA in ein Datenpaket packt und über das SAN-Schaltnetzwerk an den HCA 118 sendet,
der das Datenpaket decodiert, um die PCI-Daten und -Befehle abzurufen, welche
er an die anfordernde CPU 126 sendet. Auf diese Weise können PCI-Adapter mit dem SAN-Schaltnetzwerk
verbunden werden.
-
Das
SAN 100 wickelt Datenübertragungen für den E/A-Datenaustausch und
für den
Datenaustausch zwischen Prozessoren ab. Das SAN 100 unterstützt die
für den
E/A-Datenaustausch erforderliche hohe Bandbreite und Skalierbarkeit,
und es unterstützt
auch die äußerst geringe
Latenzzeit und den geringen CPU-Aufwand, die beziehungsweise der
für den
Datenaustausch zwischen Prozessoren erforderlich ist. Benutzer-Clients
können
den Prozess des Betriebssystemkerns umgehen und direkt auf die Netzwerkdatenübertragungs-Hardware
wie zum Beispiel die Host-Kanaladapter zugreifen, die die Nutzung
leistungsfähiger
Nachrichtenweiterleitungsprotokolle ermöglichen. Das SAN 100 ist
für moderne Rechnermodelle
geeignet und stellt einen Baustein für neue Formen des E/A- und Rechnercluster-Datenaustauschs
dar. Überdies
ermöglicht
das SAN 100 in 1 E/A-Adapterknoten, untereinander
oder mit beliebigen oder allen Prozessorknoten in dem Netzwerkrechnersystem
zu kommunizieren. Wenn ein E/A-Adapter mit dem SAN 100 verbunden
wird, verfügt
der resultierende E/A-Adapterknoten
praktisch über
dieselbe Datenübertragungsfähigkeit
wie jeder Hostprozessorknoten im SAN 100.
-
1 hat
lediglich Beispielcharakter. Sie ist nicht als architektonische
Einschränkung
der vorliegenden Erfindung zu verstehen und dient nur zur Veranschaulichung.
Die Ausführungsformen
der vorliegenden Erfindung, die nachstehend beschrieben werden,
können
auf vielen anderen Rechnersystemen, die sich in Typ und Konfiguration
unterscheiden, realisiert werden. Rechnersysteme, die die vorliegende
Erfindung realisieren, können
zum Beispiel von einem kleinen Server mit nur einem Prozessor und
einer begrenzten Anzahl von Eingabe-/Ausgabe-(E/A-)Adaptern bis hin zu einem
oder mehreren massiv parallelen Superrechnersystemen mit beispielsweise
Hunderten von Prozessoren und Tausenden von E/A-Adaptern reichen.
Außerdem
kann die vorliegende Erfindung in einer Infrastruktur mit fernen
Rechnersystemen realisiert werden, die zum Beispiel über das
Internet oder ein Intranet verbunden sind.
-
2 zeigt
eine Funktionsübersicht
eines Host-Prozessorknotens
gemäß einer
bevorzugten Ausführungsform
der vorliegenden Erfindung. Der Host-Prozessorknoten 200 stellt
ein Beispiel für
einen Host-Prozessorknoten wie den Host-Prozessorknoten 102 in 1 dar.
-
In
diesem Beispiel enthält
der in 2 gezeigte Host-Prozessorknoten 200 eine Gruppe
von Nutzern 202 bis 208 und einen oder mehrere PCI/PCI-X-Einheitentreiber 230,
bei denen es sich um Prozesse handelt, die auf dem Host-Prozessorknoten 200 ausgeführt werden.
Der Host-Prozessorknoten 200 enthält auch den Kanaladapter 210 und den
Kanaladapter 212. Der Kanaladapter 210 enthält die Anschlüsse 214 und 216,
während
der Kanaladapter 212 die Anschlüsse 218 und 220 enthält. Jeder Anschluss
ist mit einer Verbindungsleitung verbunden. Die Anschlüsse können mit
einem SAN-Teilnetzwerk oder mit mehreren SAN-Teilnetzwerken wie zum
Beispiel dem SAN 100 in 1 verbunden
werden. In diesen Beispielen haben die Kanaladapter die Form von
Host-Kanaladaptern.
-
Über die
Verbs-Schnittstelle 222 und den Nachrichten- und Datendienst 224 übertragen
die Nutzer 202 bis 208 Nachrichten an das SAN.
Eine Verbs-Schnittstelle ist im Grunde eine abstrakte Beschreibung
der Funktionalität
eines Host-Kanaladapters.
Ein Betriebssystem kann einen Teil oder die gesamte Verbs-Funktionalität über seine Programmierschnittstelle
offen legen. Diese Schnittstelle legt im Grunde das Verhalten des
Hosts fest. Überdies
enthält
der Host-Prozessorknoten 200 einen Nachrichten- und Datendienst 224,
bei dem es sich um eine Schnittstelle handelt, die sich auf einer
höheren
Ebene als die Verbs-Schnittstelle befindet und zur Verarbeitung
von Nachrichten und Daten dient, die über den Kanaladapter 210 und
den Kanaladapter 212 empfangen werden. Der Nachrichten-
und Datendienst 224 stellt eine Schnittstelle zu den Nutzern 202 bis 208 bereit,
um Nachrichten und andere Daten zu verarbeiten. Darüber hinaus
können
der Kanaladapter 210 und der Kanaladapter 212 Lade-
und Speicherbefehle von den Prozessoren empfangen, welche für an das
SAN angeschlossene PCI-IOAs vorgesehen sind. Diese umgehen die Verbs-Ebene, wie
in 2 gezeigt ist.
-
In 3 ist
ein Host-Kanaladapter gemäß einer
bevorzugten Ausführungsform
der vorliegenden Erfindung dargestellt. Der in 3 gezeigte
Host-Kanaladapter 300 enthält eine Gruppe von Warteschlangenpaaren
(QPs) 302 bis 310, die ein Mittel darstellen,
um Nachrichten an die Anschlüsse 312 bis 316 der
Host-Kanaladapter zu übertragen.
Die Zwischenspeicherung von Daten in den Anschlüssen 312 bis 316 der
Host-Kanaladapter erfolgt über
die in logische Verbindungen unterteilten virtuellen Kanäle (Virtual
Lanes, VL) 318 bis 334, wobei jeder VL über seine
eigene Flusssteuerung verfügt.
Eine Teilnetzwerk-Verwaltungseinheit (nicht gezeigt) konfiguriert Kanaladapter
mit den lokalen Adressen für
jeden physischen Anschluss, d.h. der LID des Anschlusses. Der Teilnetzwerk-Verwaltungsagent
(subnet manager agent, SMA) 336 tauscht mit der Teilnetzwerk-Verwaltungseinheit
Daten aus, um den Kanaladapter zu konfigurieren. Der Speicherumsetzungs- und
-schutz-Mechanismus (memory translation and protection, MTP) 338 ist
ein Mechanismus, der virtuelle Adressen in physische Adressen umsetzt
und die Gültigkeit
von Zugriffsrechten prüft. Über den
direkten Speicherzugriff (DMA) 340 sind direkte Speicherzugriffsoperationen
unter Verwendung des Speichers (der ebenfalls mit der Bezugszahl 340 gekennzeichnet
ist) in Bezug auf die Warteschlangenpaare 302 bis 310 möglich.
-
Ein
einziger Kanaladapter wie zum Beispiel der in 3 gezeigte
Host-Kanaladapter 300 kann Tausende von Warteschlangenpaaren
unterstützen. Im
Gegensatz dazu unterstützt
ein Zielkanaladapter in einem E/A-Adapter gewöhnlich eine wesentlich kleinere
Anzahl von Warteschlangenpaaren.
-
Jedes
Warteschlangenpaar besteht aus einer Sendearbeitswarteschlange (SWQ)
und einer Empfangsarbeitswarteschlange. Die Sendearbeitswarteschlange
dient zum Versenden von Kanalsemantik- und Speichersemantik-Nachrichten. Die Empfangsarbeitswarteschlange
empfängt
Kanalsemantik-Nachrichten. Ein Nutzer ruft eine betriebssystemspezifische
Programmierschnittstelle auf, die hier als Verbs-Schnittstelle bezeichnet
wird, um Arbeitsanforderungen (WRs) in eine Arbeitswarteschlange
zu stellen.
-
4 stellt
die Verarbeitung von Arbeitsanforderungen gemäß einer bevorzugten Ausführungsform
der vorliegenden Erfindung dar. In 4 sind eine
Empfangsarbeitswarteschlange 400, eine Sendearbeitswarteschlange 402 und
eine Abarbeitungswarteschlange 404 zur Verarbeitung von
Anforderungen von und für
einen Nutzer 406 vorhanden. Diese Anforderungen vom Nutzer 406 werden
schließlich an
die Hardware 408 gesendet. In diesem Beispiel erzeugt der
Nutzer 406 die Arbeitsanforderungen 410 und 412 und
empfängt
die Arbeitsfertigstellung 414. Wie in 4 gezeigt
ist, werden Arbeitsanforderungen, die in eine Arbeitswarteschlange
gestellt werden, als Arbeitswarteschlangenelemente (WQEs) bezeichnet.
-
Die
Sendearbeitswarteschlange 402 enthält die Arbeitswarteschlangenelemente
(WQEs) 422 bis 428, die Daten beschreiben, die
in dem SAN-Schaltnetzwerk übertragen
werden sollen. Die Empfangsarbeitswarteschlange 400 enthält die Arbeitswarteschlangenelemente
(WQEs) 416 bis 420, die beschreiben, wo eintreffende
Kanalsemantik-Daten vom SAN-Schaltnetzwerk
abgelegt werden sollen. Ein Arbeitswarteschlangenelement wird von
der Hardware 408 im Host-Kanaladapter verarbeitet.
-
Die
Verbs-Schnittstellen stellen auch einen Mechanismus bereit, der
dazu dient, fertig gestellte Arbeit aus der Abarbeitungswarteschlange 404 abzurufen.
Wie in 4 gezeigt ist, enthält die Abarbeitungswarteschlange 404 die
Abarbeitungswarteschlangenelemente (completion queue elements, CQEs) 430 bis 436.
Die Abarbeitungswarteschlangenelemente enthalten Informationen über zuvor
fertig gestellte Arbeitswarteschlangenelemente. Die Abarbeitungswarteschlange 404 dient
zur Erzeugung einer einzelnen Benachrichtigung über den Fertigstellungszeitpunkt
für mehrere
Warteschlangenpaare. Ein Abarbeitungswarteschlangenelement ist eine Datenstruktur
in einer Abarbeitungswarteschlange. Dieses Element beschreibt ein
fertig gestelltes Arbeitswarteschlangenelement. Das Abarbeitungswarteschlangenelement
enthält
genügend
Informationen, um das Warteschlangenpaar und das jeweilige Arbeitswarteschlangenelement,
das fertig gestellt wurde, zu ermitteln. Ein Abarbeitungswarteschlangenkontext
ist ein Informationsblock, der Zeiger, die Länge und andere Informationen
enthält,
die notwendig sind, um die einzelnen Abarbeitungswarteschlangen
zu verwalten.
-
Zu
beispielhaften Arbeitsanforderungen, die für die in 4 gezeigte
Sendearbeitswarteschlange 402 unterstützt werden, gehören folgende.
Eine Sendearbeitsanforderung ist eine Kanalsemantik-Operation, die
dazu dient, eine Gruppe von lokalen Datensegmenten in die Datensegmente
zu schieben, auf die das Empfangsarbeitswarteschlangenelement eines
fernen Knoten verweist. Das Arbeitswarteschlangenelement 428 enthält zum Beispiel
Verweise auf das Datensegment 4 438, das Datensegment 5 440 und
das Datensegment 6 442. Jedes der Datensegmente der Sendearbeitsanforderung
enthält
einen praktisch zusammenhängenden
Speicherbereich. Die virtuellen Adressen, mit denen auf die lokalen Datensegmente
verwiesen wird, befinden sich im Adresskontext des Prozesses, der
das lokale Warteschlangenpaar erzeugt hat.
-
Ein
Lesearbeitsanforderung mittels direktem Speicherzugriff über das
Netzwerk (remote direct memory access, RDMA) ermöglicht eine Speichersemantik-Operation,
um einen praktisch zusammenhängenden
Speicherbereich auf einem fernen Knoten zu lesen. Ein Speicherraum
kann entweder ein Teil eines Speicherbereichs oder ein Teil eines
Speicherfensters sein. Ein Speicherbereich verweist auf einen zuvor
eingetragenen Satz von praktisch zusammenhängenden Speicheradressen, die
mit einer virtuellen Adresse und einer virtuellen Länge angegeben
sind. Ein Speicherfenster verweist auf einen Satz von praktisch
zusammenhängenden
Speicheradressen, die an einen zuvor eingetragenen Bereich gebunden
sind.
-
Die
RDMA-Lesearbeitsanforderung liest einen praktisch zusammenhängenden
Speicherbereich auf einem fernen Endknoten und schreibt die Daten
in einen praktisch zusammenhängenden
lokalen Speicherbereich. Ähnlich
wie bei der Sendearbeitsanforderung befinden sich virtuelle Adressen, die
von dem RDMA-Lesearbeitswarteschlangenelement verwendet werden,
um auf die lokalen Datensegmente zu verweisen, im Adresskontext
des Prozesses, der das lokale Warteschlangenpaar erzeugt hat. Das
Arbeitswarteschlangenelement 416 in der Empfangsarbeitswarteschlange 400 verweist
zum Beispiel auf das Datensegment 1 444, das Datensegment
2 446 und das Datensegment 3 448. Die fernen virtuellen
Adressen befinden sich im Adresskontext des Prozesses, dem das ferne
Warteschlangenpaar gehört,
welches das RDMA-Lesearbeitswarteschlangenelement
als Ziel ausgewählt
hat.
-
Ein
RDMA-Schreibarbeitswarteschlangenelement ermöglicht eine Speichersemantik-Operation, die
dazu dient, einen praktisch zusammenhängenden Speicherbereich auf
einen fernen Knoten zu schreiben. Das RDMA-Schreibarbeitswarteschlangenelement
enthält
eine Streuliste von lokalen, praktisch zusammenhängenden Speicherbereichen und die
virtuelle Adresse des fernen Speicherbereichs, in den die lokalen
Speicherbereiche geschrieben werden.
-
Ein
RDMA-FetchOp-Arbeitswarteschlangenelement ermöglicht eine Speichersemantik-Operation,
um eine unteilbare (atomic) Operation an einem fernen Wort durchzuführen. Das
RDMA-FetchOP-Arbeitswarteschlangenelement
ist eine kombinierte RDMA-Lese-, Änderungs- und RDMA-Schreiboperation.
Das RDMA-FetchOp-Arbeitswarteschlangenelement
kann mehrere Lese-Änderungs-Schreiboperationen
wie zum Beispiel "Compare
and Swap", bei der
ein Vergleich eines Registers mit einer Hauptspeicherzelle und bei
Gleichheit ein Vertauschen der Inhalte atomar ausgeführt wird,
unterstützen.
-
Ein
Arbeitswarteschlangenelement zum Binden (Aufheben der Bindung) eines
fernen Zugriffsschlüssels
(bind (unbind) remote access key (R_Key)) stellt einen Befehl an
die Host-Kanaladapter-Hardware
bereit, um ein Speicherfenster zu ändern (zu zerstören), indem
das Speicherfenster einem Speicherbereich zugeordnet (die Zuordnung des
Speicherfensters wieder aufgehoben) wird. Der R_Key ist Teil eines
jeden RDMA-Zugriffs
und dient zur Bestätigung,
dass der ferne Prozess den Zugriff auf den Pufferspeicher gestattet
hat.
-
In
einer Ausführungsform
unterstützt
die in 4 gezeigte Empfangsarbeitswarteschlange 400 nur
eine Art eines Arbeitswarteschlangenelements, das als Empfangsarbeitswarteschlangenelement
bezeichnet wird. Das Empfangsarbeitswarteschlangenelement ermöglicht eine
Kanalsemantik-Operation, die einen lokalen Speicherbereich beschreibt,
in den eingehende Sendenachrichten geschrieben werden. Das Empfangsarbeitswarteschlangenelement
enthält
eine Streuliste, die mehrere praktisch zusammenhängende Speicherbereiche beschreibt.
Eine eingehende Sendenachricht wird in diese Speicherbereiche geschrieben.
Die virtuellen Adressen befinden sich im Adresskontext des Prozesses,
der das lokale Warteschlangenpaar erzeugt hat.
-
Beim
Datenaustausch zwischen Prozessoren überträgt ein Benutzermodus-Softwareprozess Daten über die
Warteschlangenpaare direkt von der Stelle, an der sich der Pufferspeicher
im Hauptspeicher befindet. In einer Ausführungsform wird bei der Übertragung über die
Warteschlangenpaare das Betriebssystem umgangen, und die Übertragung
nimmt nur wenige Host-Befehlszyklen in Anspruch. Warteschlangenpaare
gestatten eine Datenübertragung, bei
der die Daten nicht zuerst vom Prozessor kopiert werden müssen und
an der der Betriebssystemkern nicht beteiligt ist. Eine Datenübertragung,
bei der die Daten nicht zuerst vom Prozessor kopiert werden müssen, ermöglicht die
wirksame Unterstützung
von Nachrichtenverbindungen mit hoher Bandbreite und geringer Latenzzeit.
-
Bei
der Erzeugung eines Warteschlangenpaares wird das Warteschlangenpaar
so gesetzt, dass es eine ausgewählte
Art eines Verbindungsdienstes bereitstellt. In einer Ausführungsform
unterstützt
ein Netzwerkrechnersystem, das die vorliegende Erfindung realisiert,
vier Arten von Verbindungsdiensten.
-
Die
Dienste "Reliable
Connected" und "Unreliable Connected" ordnen ein lokales
Warteschlangenpaar einem einzigen fernen Warteschlangenpaar zu.
Bei verbundenen Diensten ist ein Prozess erforderlich, mit dem sich
für jeden
Prozess, mit dem Daten über
das SAN-Schaltnetzwerk ausgetauscht werden sollen, ein Warteschlangenpaar
erzeugen lässt. Wenn
jeder von N Host-Prozessorknoten
P Prozesse enthält
und alle P Prozesse auf jedem Knoten mit allen Prozessen auf all
den anderen Knoten Daten austauschen möchten, erfordert jeder Host-Prozessorknoten folglich
p2 × (N – 1) Warteschlangenpaare.
-
Außerdem kann
ein Prozess ein Warteschlangenpaar mit einem anderen Warteschlangenpaar
auf demselben Host-Kanaladapter verbinden.
-
Der
Dienst "Reliable
Datagram" ordnet
einen lokalen Ende-Ende-(EE-)Kontext
einem einzigen fernen Ende-Ende-Kontext zu. Der Dienst "Reliable Datagram" erlaubt einem Client-Prozess
von einem Warteschlangenpaar, Daten mit einem beliebigen anderen
Warteschlangenpaar auf irgendeinem anderen fernen Knoten auszutauschen.
An einer Empfangsarbeitswarteschlange lässt der Dienst "Reliable Datagram" eingehende Nachrichten
von jeder Sendearbeitswarteschlange auf jedem anderen fernen Knoten
zu. Der Dienst "Reliable
Datagram" verbessert die
Skalierbarkeit erheblich, da er verbindungslos ist. Daher kann ein
Endknoten mit einer festen Anzahl von Warteschlangenpaaren über einen
Dienst "Reliable
Datagram" mit weitaus
mehr Prozessen und Endknoten Daten austauschen als über einen
Verbindungsdienst "Reliable
Connection". Wenn
beispielsweise jeder von N Host-Prozessorknoten
P Prozesse enthält
und alle P Prozesse auf jedem Knoten mit allen Prozessen auf all
den anderen Knoten Daten austauschen möchten, erfordert der Dienst "Reliable Connection" p2 × (N – 1) Warteschlangenpaare
auf jedem Knoten. Im Vergleich dazu erfordert der verbindungslose
Dienst "Reliable
Datagram" nur P
Warteschlangenpaare + (N – 1)
EE-Kontexte auf
jedem Knoten für
genau dieselben Datenaustauschoperationen.
-
Der
Dienst "Unreliable
Datagram" ist verbindungslos.
Der Dienst "Unreliable
Datagram" wird von Verwaltungsanwendungen
zum Erkennen von neuen Vermittlungsstellen, Routern und Endknoten
und zu deren Aufnahme in ein bestimmtes Netzwerkrechnersystem verwendet.
Der Dienst "Unreliable Datagram" bietet nicht die
Verlässlichkeitsgarantien
der Dienste "Reliable
Connection" und "Reliable Datagram". Der Dienst "Unreliable Datagram" arbeitet folglich
mit weniger Zustandsinformationen, die an jedem Endknoten verwaltet
werden.
-
5 stellt
ein Datenpaket gemäß einer
bevorzugten Ausführungsform
der vorliegenden Erfindung dar. Die Nachrichtendaten 500 enthalten
das Datensegment 1 502, das Datensegment 2 504 und das
Datensegment 3 506, die ähnlich den in 4 gezeigten
Datensegmenten sind. In diesem Beispiel bilden diese Datensegmente
ein Paket 508, das in die Paketnutzlast 510 im
Datenpaket 512 gestellt wird. Darüber hinaus enthält das Datenpaket 512 den CRC 514,
der zur Fehlerprüfung
dient. Überdies
sind der Weiterleitungskopfbereich 516 und der Übertragungskopfbereich 518 im
Datenpaket 512 vorhanden. Der Weiterleitungskopfbereich 516 dient
zur Angabe der Quellen- und Zielanschlüsse für das Datenpaket 512.
Der Übertragungskopfbereich 518 gibt
in diesem Beispiel das Ziel-Warteschlangenpaar für das Datenpaket 512 an.
Ferner stellt der Übertragungskopfbereich 518 auch
Informationen wie zum Beispiel den Operationscode, die Paketfolgenummer und
die Partition für
das Datenpaket 512 bereit. Der Operationscode gibt an,
ob das Paket das erste Paket, das letzte Paket, ein dazwischen liegendes
Paket oder das einzige Paket einer Nachricht ist. Der Operationscode
gibt auch an, ob die Operation eine Sendeoperation, eine RDMA-Schreiboperation,
eine RDMA-Leseoperation oder eine unteilbare Operation ist. Die
Paketfolgenummer wird beim Verbindungsaufbau auf einen Anfangswert
gesetzt und erhöht sich
jedes Mal, wenn ein Warteschlangenpaar ein neues Paket erzeugt.
Anschlüsse
eines Endknotens können
so konfiguriert werden, dass sie zu einer oder mehreren sich möglicherweise überschneidenden Gruppen
gehören,
die als Partitionen bezeichnet werden.
-
6 stellt
eine physische Komponente mit virtuellen Kanaladaptern und virtuellen
Vermittlungsstellen gemäß einer
Ausführungsform
der vorliegenden Erfindung dar. 6 veranschaulicht
eine interne Struktur eines Chip mit mehreren Funktionen, der eine
oder mehrere Vermittlungsstellen enthält, die einen oder mehrere
HCAs mit einem oder mehreren Teilnetzwerken verbinden. Das physische
Element 600 in 6 enthält den virtuellen Host-Prozessorknoten 602 und
den virtuellen Host-Prozessorknoten 604. Der virtuelle
Host-Prozessorknoten 602 enthält den virtuellen
Host-Kanaladapter (HCA) 606. Der virtuelle Host-Prozessorknoten 604 enthält den Host-Kanaladapter
(HCA) 608. Die virtuellen HCAs 606 und 608 können dieselben
Attribute wie ein physischer HCA haben. In diesem Beispiel verfügen die virtuellen
HCAs 606 und 608 beispielsweise über die obligatorischen
Warteschlangenpaare Nummer 0 und 1.
-
Das
physische Element 600 in 6 enthält das SAN-Schaltnetzwerk 610,
das die Vermittlungsstelle 612 enthält. Das SAN-Schaltnetzwerk 610 in 6 enthält eine
Verbindungsleitung, die den Host-Kanaladapter 606 mit der
Vermittlungsstelle 612 verbindet, und eine Verbindungsleitung,
die die Vermittlungsstelle 612 mit dem TCA 642 verbindet. Das
Netzwerkrechnersystem 600 in 6 enthält ebenfalls
ein SAN-Schaltnetzwerk 611, das die Vermittlungsstelle 614 enthält. Das
SAN-Schaltnetzwerk 611 in 6 enthält eine
Verbindungsleitung, die den Host-Kanaladapter 608 mit der
Vermittlungsstelle 614 verbindet, und eine Verbindungsleitung, die
die Vermittlungsstelle 614 mit dem TCA 644 verbindet. Der
virtuelle HCA 606 enthält
die Anschlüsse 650 und 652.
Der Anschluss 650 ist über
den Anschluss 678 der Vermittlungsstelle 612 mit
dem Teilnetzwerk 646 verbunden. Der Anschluss 652 ist über den
Anschluss 682 der Vermittlungsstelle 614 mit dem
Teilnetzwerk 648 verbunden. Eine zum Teilnetzwerk 646 gehörende Teilnetzwerk-Verwaltungseinheit
hat dem Anschluss 650 des HCA 606 die LID 670 zugewiesen und
dem Anschluss 686 der Vermittlungsstelle 612 die
LID 694. Bei dem Anschluss 686 handelt es sich um
den InfiniBand-Teilnetz-Verwaltungsanschluss (InfiniBand Subnet
Management Port) 0 für
die Vermittlungsstelle 612. Zum Teilnetzwerk 648 gehört eine
Teilnetzwerk-Verwaltungseinheit, der dem Anschluss 652 des
HCA 606 die LID 672 und dem Anschluss 688 der
Vermittlungsstelle 614 die LID 696 zugewiesen
hat. Bei dem Anschluss 688 handelt es sich um den InfiniBand
Subnet Management Port 0 für
die Vermittlungsstelle 614. Der virtuelle HCA 608 enthält die Anschlüsse 654 und 656.
Der Anschluss 654 ist über
den Anschluss 680 der Vermittlungsstelle 612 mit
dem Teilnetzwerk 646 verbunden. Der Anschluss 656 ist über den
Anschluss 684 der Vermittlungsstelle 614 mit dem
Teilnetzwerk 648 verbunden. Eine zum Teilnetzwerk 646 gehörende Teilnetzwerk-Verwaltungseinheit
hat dem Anschluss 654 des HCA 608 die LID 674 zugewiesen.
Eine zum Teilnetzwerk 648 gehörende Teilnetzwerk-Verwaltungseinheit
hat dem Anschluss 656 des HCA 608 die LID 676 zugewiesen.
-
Bei
den beispielhaften Transaktionen enthält der Host-Prozessorknoten 602 den Client-Prozess
A 616. Der Host-Prozessorknoten 604 enthält einen Client-Prozess
B 618. Der Client-Prozess A 616 tauscht über das
Warteschlangenpaar 620, die Abarbeitungswarteschlange 632 und
die Umsetzungsschutztabelle (Translation Protection Table, TPT) 634 Informationen
mit der Host-Kanaladapter-Hardware 606 aus. Der Client-Prozess
B 618 tauscht über
das Warteschlangenpaar 622, die Abarbeitungswarteschlange 636 und
die TPT 638 Informationen mit der Host-Kanaladapter 608 aus.
Das Warteschlangenpaar 620, das Warteschlangenpaar 622,
die Abarbeitungswarteschlange 632, die Abarbeitungswarteschlange 636,
die TPT 634 und die TPT 638 sind Datenstrukturen.
Das Warteschlangenpaar 620 enthält eine Sendearbeitswarteschlange 624 und
eine Empfangsarbeitswarteschlange 626. Das Warteschlangenpaar 622 enthält eine
Sendearbeitswarteschlange 628 und eine Empfangsarbeitswarteschlange 630.
Die Abarbeitungswarteschlange 632 und die Abarbeitungswarteschlange 636 bestehen
aus einer einzigen Abarbeitungswarteschlange. Die TPTs 634 und 638 bestehen
aus einem Speicher, der aus einer Speicheradressenumsetzungs- und
-schutztabelle besteht.
-
Ein
Kanaladapter wie zum Beispiel ein TCA oder ein HCA kann einer Software-,
Firmware- oder Hardware-Zustandsmaschine, die als Teil des physischen
Elements 600 ausgeführt
wird, eine Ressourcenkonfigurations- und -zuordnungsschnittstelle
bereitstellen. Die Ressourcenkonfigurations- und -zuordnungsschnittstelle
ermöglicht
Software-, Firmware- oder Hardware-Zustandsmaschinen, Betriebsregeln
für den
virtuellen HCA, zum Beispiel den HCA 606 und den HCA 608 in 6,
festzulegen. Zu den Betriebsregeln können unter anderem folgende
gehören:
- 1) Anzahl der in einem Chip mit mehreren Funktionen
verwendeten Vermittlungsstellen;
- 2) Anzahl der Anschlüsse
je Vermittlungsstelle;
- 3) Anzahl der Vermittlungsstellen-Ressourcen, die jeder Vermittlungsstelle
zugeordnet werden;
- 4) Anzahl der HCAs, die in dem Chip mit mehreren Funktionen
verwendet werden;
- 5) Anzahl der Anschlüsse
je HCA; und
- 6) Anzahl der HCA-Ressourcen, die jedem HCA zugeordnet werden.
-
Eine
Zustandsmaschine in Software, Firmware oder in Hardware kann die
tatsächliche
Konfiguration des physischen Elements 600 auswählen. Ein physisches
Element kann zum Beispiel ein HCA sein. Die Auswahl kann statisch
oder dynamisch erfolgen. Bei einer statischen Auswahl ist es gegebenenfalls erforderlich,
dass die Konfiguration eines HCA oder einer Vermittlungsstelle geändert wird,
indem ein Schaltnetzwerk neu initialisiert und/oder ein Knoten neu
gestartet wird. Bei einer dynamischen Auswahl kann eine Konfigurationsänderung
an einem HCA oder an einer Vermittlungsstelle ohne Neuinitialisierung
des Schaltnetzwerks vorgenommen werden, doch muss der Knoten möglicherweise
neu gestartet werden.
-
Bei
einem statischen Auswahlmechanismus muss das physische Element 600 gegebenenfalls
die genaue Anzahl der virtuellen Vermittlungsstellen, HCAs und Host-Prozessorknoten
angeben, die während
der Initialisierung des Schaltnetzwerks als Teil des physischen
Elements 600 enthalten sein können. Ein statischer Auswahlmechanismus
kann Informationen darüber
bereitstellen, ob auf dem physischen Element Anschlüsse verfügbar sind,
doch stellt er ohne eine Anforderung für Informationen keine Informationen
in Bezug auf den Status des Anschlusses bereit. Bei Verwendung eines
statischen Auswahlmechanismus kann jeder virtuelle HCA als ein ganz
bestimmter physischer HCA erscheinen. Infolge der Prüfung des
Anschlusses 644 mit Hilfe von standardmäßigen InfiniBand-Teilnetzwerk-Verwaltungspaketen
(SMPs) erkennt eine zum Teilnetzwerk 646 gehörende Teilnetzwerk-Verwaltungseinheit
in 6 die Vermittlungsstelle 612. Die Vermittlungsstelle 612 erscheint
der zu dem Teilnetzwerk 646 gehörenden Teilnetzwerk-Verwaltungseinheit
als eine physische Vermittlungsstelle, und ihrem SMP-Anschluss 686 wird
die LID 694 zugewiesen. Die zum Teilnetzwerk 646 gehörende Teilnetzwerk-Verwaltungseinheit stellt
mittels InfiniBand-SMPs fest, dass die Vermittlungsstelle 612 zwei
weitere Anschlüsse,
die Anschlüsse 678 und 680,
hat. Infolge der Prüfung
des Anschlusses 678 der Vermittlungsstelle 612 mit
Hilfe von InfiniBand-SMPs und der Lokalisierung des Anschlusses 650 des
HCA 606 stellt die zum Teilnetzwerk 646 gehörende Teilnetzwerk-Verwaltungseinheit
den HCA 606 fest. Der HCA 606 erscheint der zum
Teilnetzwerk 646 gehörenden
Teilnetzwerk-Verwaltungseinheit als ein physischer HCA. Die zum Teilnetzwerk 646 gehörende Teilnetzwerk-Verwaltungseinheit
weist dem Anschluss 650 des HCA 606 unter Verwendung
von InfiniBand-SMPs die LID 670 zu. Ebenso stellt die zum
Teilnetzwerk 646 gehörende
Teilnetzwerk-Verwaltungseinheit
infolge der Verwendung von InfiniBand-SMPs den HCA 608 fest. Der
HCA 608 erscheint der zum Teilnetzwerk 646 gehörenden Teilnetzwerk-Verwaltungseinheit
als ein physischer HCA. Die zum Teilnetzwerk 646 gehörende Teilnetzwerk-Verwaltungseinheit
weist dem Anschluss 654 unter Verwendung von InfiniBand-SMPs die
LID 674 zu.
-
Bei
Verwendung eines dynamischen Auswahlmechanismus kann das physische
Element 600 die größte konfigurierbare
Anzahl virtueller Vermittlungsstellen und ihre entsprechende Topologie
angeben, es kann jedoch nicht die genaue Anzahl der HCAs und die
genaue Anzahl der Host-Prozessorknoten angeben, die während der
Initialisierung des Schaltnetzwerks als Teil des physischen Elements 600 möglicherweise
enthalten sind. Ein dynamischer Auswahlmechanismus kann Informationen
darüber bereitstellen,
ob auf dem physischen Element Anschlüsse verfügbar sind, und wenn ein zuvor
nicht verfügbarer
Anschluss in Betrieb geht, kann er hierüber ebenfalls Informationen
bereitstellen. Ebenso kann ein dynamischer Auswahlmechanismus das Entfernen
von HCAs und ihrer zugehörigen
Hostknoten melden, wenn diese außer Betrieb genommen werden.
Bei Verwendung eines dynamischen Auswahlmechanismus kann jeder virtuelle
HCA als ein ganz bestimmter physischer HCA erscheinen.
-
Der
folgende Prozess kann stattfinden, wenn der HCA 606 in 6 zu
einem späteren
Zeitpunkt in Betrieb geht. Infolge der Prüfung des Anschlusses 644 mit
InfiniBand-Teilnetzwerk-Verwaltungspaketen (SMPs)
stellt eine zum Teilnetzwerk 646 gehörende Teilnetzwerk-Verwaltungseinheit
die Vermittlungsstelle 612 fest. Die Vermittlungsstelle 612 erscheint der
zum Teilnetzwerk 646 gehörenden Teilnetzwerk-Verwaltungseinheit
als eine physische Vermittlungsstelle, und ihrem SMP-Anschluss 686 wird
die LID 694 zugewiesen. Die zum Teilnetzwerk 646 gehörende Teilnetzwerk-Verwaltungseinheit
stellt mittels standardmäßiger InfiniBand-SMPs
fest, dass die Vermittlungsstelle 612 zwei weitere Anschlüsse, die Anschlüsse 678 und 680,
hat. Infolge der Prüfung des
Anschlusses 678 der Vermittlungsstelle 612 mit Hilfe
von InfiniBand-SMPs und der Lokalisierung des Anschlusses 650 des
HCA 606 stellt die zum Teilnetzwerk 646 gehörende Teilnetzwerk-Verwaltungseinheit
den HCA 606 fest. Der HCA 606 erscheint der zum
Teilnetzwerk 646 gehörenden
Teilnetzwerk-Verwaltungseinheit als ein physischer HCA. Die zum Teilnetzwerk 646 gehörende Teilnetzwerk-Verwaltungseinheit
weist dem Anschluss 650 des HCA unter Verwendung von InfiniBand-SMPs
die LID 670 zu. Zu einem späteren Zeitpunkt kann die zum
Teilnetzwerk 646 gehörende
Teilnetzwerk-Verwaltungseinheit infolge eines von einer zum Teilnetzwerk 646 gehörenden Teilnetzwerk-Verwaltungseinheit
durchgeführten
Durchlaufs mit SMP-Paketen zur Prüfung des Anschlusses 680 der
Vermittlungsstelle 612 und infolge der Lokalisierung des
Anschlusses 654 des HCA 608 den HCA 608 feststellen.
-
Alternativ
dazu kann die zum Teilnetzwerk 646 gehörende Teilnetzwerk-Verwaltungseinheit
den HCA 608 infolge einer Verzweigung von der Vermittlungsstelle 612 feststellen,
die einen Zustandswechsel anzeigt. Dies würde dazu führen, dass die zum Teilnetzwerk 646 gehörende Teilnetzwerk-Verwaltungseinheit
den Anschluss 680 der Vermittlungsstelle 612 mit
Hilfe von InfiniBand-SMPs prüft
und den Anschluss 654 des HCA 608 lokalisiert.
Der HCA 608 erscheint der zum Teilnetzwerk 646 gehörenden Teilnetzwerk-Verwaltungseinheit
als ein physischer HCA. Die zum Teilnetzwerk 646 gehörende Teilnetzwerk-Verwaltungseinheit
weist dem Anschluss 654 des HCA 608 unter Verwendung
von InfiniBand-SMPs die LID 674 zu.
-
Wie
vorstehend erwähnt
wurde, stellt die vorliegende Erfindung ein Verfahren und ein System
zur Unterteilung von Endknoten für
ein physisches Element bereit. Die Auswahl einer Konfiguration des physischen
Elements kann statisch oder dynamisch erfolgen. Bei einem statischen
Auswahlmechanismus kann eine Teilnetzwerk-Verwaltungseinheit das physische
Element wie zum Beispiel eine Vermittlungsstelle oder einen HCA
prüfen,
um festzustellen, ob das physische Element erkannt wird. Wenn das physische
Element erkannt wird, wird dem SMP-Anschluss des physischen Elements eine
LID zugewiesen. Wenn weitere Anschlüsse des physischen Elements
festgestellt werden, wird den weiteren Anschlüssen eine LID zugewiesen.
-
Bei
einem dynamischen Auswahlmechanismus werden die HCAs und die zugehörigen Host-Knoten
der HCAs bei ihrer Inbetriebnahme gemeldet. Überdies meldet der dynamische
Auswahlmechanismus das Entfernen der HCAs und der zugehörigen Host-Knoten
der HCAs, wenn die HCAs und die zugehörigen Host-Knoten der HCAs
außer
Betrieb genommen werden. Wenn ein HCA den Betrieb aufnimmt, weist
eine Teilnetzwerk-Verwaltungseinheit einem zu dem HCA gehörenden Anschluss
eine LID zu.
-
7 ist
ein beispielhaftes Flussdiagramm, das den Prozess bei einem statischen
Auswahlsystem zur Konfiguration eines physischen Elements gemäß einer
bevorzugten Ausführungsform
der vorliegenden Erfindung zeigt. In diesem Beispiel beginnt der
Prozess, indem ein Anschluss mit InfiniBand-Teilnetzwerk-Verwaltungspaketen
von einer Teilnetzwerk-Verwaltungseinheit geprüft wird (Schritt 702). Es
wird festgestellt, ob als Reaktion auf die Prüfung des Anschlusses mit den
InfiniBand-Teilnetzwerk-Verwaltungspaketen
durch die Teilnetzwerk-Verwaltungseinheit
eine Vermittlungsstelle festgestellt wird (Schritt 704).
Wenn keine Vermittlungsstelle festgestellt wird (Schritt 704:
NEIN), wird der Prozess beendet. Wenn eine Vermittlungsstelle festgestellt
wird (Schritt 704: JA), wird dem SMP-Anschluss der Vermittlungsstelle
eine LID zugewiesen (Schritt 706).
-
Anschließend wird
festgestellt, ob die Teilnetzwerk-Verwaltungseinheit weitere Anschlüsse der Vermittlungsstelle
festgestellt hat (Schritt 708). Wenn die Teilnetzwerk-Verwaltungseinheit
einen oder mehrere weitere Anschlüsse der Vermittlungsstelle
festgestellt hat (Schritt 708: JA), wird dem beziehungsweise
den weiteren Anschlüssen
eine LID zugewiesen (Schritt 710), und der Prozess kehrt
zum Schritt 708 zurück,
in dem festgestellt wird, ob die Teilnetzwerk-Verwaltungseinheit weitere Anschlüsse der Vermittlungsstelle
festgestellt hat. Wenn die Teilnetzwerk-Verwaltungseinheit keine
weiteren Anschlüsse der
Vermittlungsstelle festgestellt hat (Schritt 708: NEIN),
wird festgestellt, ob das Schaltnetzwerk neu initialisiert werden
muss (Schritt 712). Wenn das Schaltnetzwerk nicht neu initialisiert
werden muss (Schritt 712: NEIN), wird ein Neustart des
Knotens durchgeführt
(Schritt 716). Die genaue Anzahl der virtuellen Vermittlungsstellen,
HCAs und Host-Prozessorknoten wird dann einer Teilnetzwerk-Verwaltungseinheit
gemeldet (Schritt 720), und anschließend wird der Prozess beendet.
Wenn das Schaltnetzwerk neu initialisiert werden muss (Schritt 712:
JA), wird die Neuinitialisierung des Schaltnetzwerks durchgeführt (Schritt 714).
Daraufhin wird festgestellt, ob ein Neustart des Knotens durchgeführt werden
muss (Schritt 718). Wenn der Knoten neu gestartet werden
muss (Schritt 718: JA), wird der Neustart des Knotens durchgeführt (Schritt 716),
die genaue Anzahl der virtuellen Vermittlungsstellen, HCAs und Host-Prozessorknoten
wird gemeldet (Schritt 720), und anschließend wird
der Prozess beendet. Wenn kein Neustart des Knotens durchgeführt werden
muss (Schritt 718: NEIN), wird die genaue Anzahl der virtuellen
Vermittlungsstellen, HCAs und Host-Prozessorknoten gemeldet (Schritt 720),
und anschließend
wird der Prozess beendet.
-
8 ist
ein beispielhaftes Flussdiagramm, das den Meldevorgang von Host-Kanaladaptern
und zugehörigen
Knoten zeigt, wenn sie gemäß einer
bevorzugten Ausführungsform
der vorliegenden Erfindung in Betrieb gehen oder außer Betrieb
genommen werden. In diesem Beispiel beginnt der Prozess, indem festgestellt
wird, ob ein HCA und die zugehörigen
Host-Knoten des HCA betriebsbereit sind (Schritt 802).
Wenn der HCA und die zugehörigen Host-Knoten
des HCA nicht betriebsbereit sind (Schritt 802: NEIN),
wird der Prozess beendet. Wenn der HCA und die zugehörigen Host-Knoten
des HCA betriebsbereit sind (Schritt 802: JA), werden der
HCA und seine zugehörigen
Knoten einer Teilnetzwerk-Verwaltungseinheit gemeldet (Schritt 804), wenn
sie in Betrieb gehen. Daraufhin wird festgestellt, ob der HCA und
die zugehörigen
Host-Knoten des HCA außer
Betrieb genommen wurden (Schritt 806). Wenn der HCA und
die zugehörigen
Host-Knoten des HCA nicht außer
Betrieb genommen wurden (Schritt 806: NEIN), wird der Prozess
beendet. Wenn der HCA und die zugehörigen Host-Knoten des HCA außer Betrieb
genommen wurden (Schritt 806: JA), wird gemeldet, dass
der HCA und die zugehörigen Knoten
des HCA außer
Betrieb genommen wurden (Schritt 808), und anschließend wird
der Prozess beendet.
-
9 ist
ein beispielhaftes Flussdiagramm, das den Prozess bei einem dynamischen
Auswahlsystem zur Konfiguration eines physischen Elements gemäß einer
bevorzugten Ausführungsform
der vorliegenden Erfindung zeigt. In diesem Beispiel beginnt der
Prozess, indem festgestellt wird, ob ein HCA zu dem Zeitpunkt, zu
dem er eingeschaltet wird, in Betrieb geht (Schritt 902).
Wenn ein HCA zu dem Zeitpunkt, zu dem er eingeschaltet wird, nicht
in Betrieb geht (Schritt 902: NEIN), wird festgestellt,
ob ein HCA in Betrieb geht, nachdem er eingeschaltet worden ist (Schritt 904).
Wenn ein HCA nicht in Betrieb geht, nachdem er eingeschaltet worden
ist (Schritt 904: NEIN), wird der Prozess beendet. Wenn
ein HCA in Betrieb geht, nachdem er eingeschaltet worden ist (Schritt 904:
JA), schaltet der Prozess zum Schritt 906 weiter, in dem
ein Anschluss von einer Teilnetzwerk-Verwaltungseinheit mit InfiniBand-Teilnetzwerk-Verwaltungspaketen
geprüft
wird.
-
Kehren
wir nochmals zum Schritt 902 zurück. Wenn ein HCA zu dem Zeitpunkt,
zu dem er eingeschaltet wird, in Betrieb geht (Schritt 902:
JA), wird ein Anschluss von einer Teilnetzwerk-Verwaltungseinheit mit InfiniBand-Teilnetzwerk-Verwaltungspaketen
geprüft
(Schritt 906). Es wird festgestellt, ob eine Vermittlungsstelle
erkannt wird (Schritt 908). Wenn keine Vermittlungsstelle
erkannt wird (Schritt 908: NEIN), wird der Prozess beendet.
Wenn eine Vermittlungsstelle erkannt wird (Schritt 908:
JA), wird dem SMP-Anschluss der Vermittlungsstelle eine LID zugewiesen
(Schritt 910). Daraufhin wird festgestellt, ob eine Teilnetzwerk-Verwaltungseinheit
bei einem Durchlauf mit SMP-Paketen weitere Anschlüsse der Vermittlungsstelle
erkannt hat (Schritt 912). Wenn eine Teilnetzwerk-Verwaltungseinheit
bei einem Durchlauf mit SMP-Paketen weitere Anschlüsse der Vermittlungsstelle
erkannt hat (Schritt 912: JA), wird dem weiteren Anschluss
eine LID zugewiesen, und der Prozess schaltet zum Schritt 914 weiter,
in dem festgestellt wird, ob die Teilnetzwerk-Verwaltungseinheit bei Benutzung einer
Verzweigung von der Vermittlungsstelle, die einen Zustandswechsel
anzeigt, weitere Anschlüsse
der Vermittlungsstelle festgestellt hat.
-
Wenn
die Teilnetzwerk-Verwaltungseinheit bei einem Durchlauf mit SMP-Paketen
keine weiteren Anschlüsse
der Vermittlungsstelle erkannt hat (Schritt 912: NEIN),
wird festgestellt, ob die Teilnetzwerk-Verwaltungseinheit bei Benutzung
einer Verzweigung von der Vermittlungsstelle, die einen Zustandswechsel
anzeigt, weitere Anschlüsse
erkannt hat (Schritt 914). Wenn die Teilnetzwerk-Verwaltungseinheit
bei Benutzung einer Verzweigung von der Vermittlungsstelle, die
einen Zustandswechsel anzeigt, weitere Anschlüsse erkannt hat (Schritt 914: JA)
und dem weiteren Anschluss eine LID zugewiesen wird (Schritt 916),
kehrt der Prozess zum Schritt 912 zurück, in dem festgestellt wird,
ob die Teilnetzwerk-Verwaltungseinheit
bei einem Durchlauf mit SMP-Paketen weitere Anschlüsse der
Vermittlungsstelle erkannt hat.
-
Wenn
die Teilnetzwerk-Verwaltungseinheit bei Benutzung einer Verzweigung
von der Vermittlungsstelle, die einen Zustandswechsel anzeigt, keine
weiteren Anschlüsse
der Vermittlungsstelle erkannt hat (Schritt 914: NEIN),
wird festgestellt, ob das Schaltnetzwerk neu initialisiert werden
muss (Schritt 918). Wenn das Schaltnetzwerk neu initialisiert
werden muss (Schritt 918: JA), wird das Schaltnetzwerk neu
initialisiert, und der Prozess schaltet zum Schritt 920 weiter,
in dem ein Knoten neu gestartet wird. Wenn das Schaltnetzwerk nicht
neu initialisiert werden muss (Schritt 918: NEIN), wird
ein Knoten neu gestartet (Schritt 920). HCAs und Host-Prozessorknoten
werden gemeldet, wenn sie in Betrieb gehen (Schritt 922),
und daraufhin wird der Prozess beendet.
-
Die
vorliegende Erfindung stellt folglich einen Mechanismus bereit,
der es ermöglicht,
dass eine einzige physische Komponente als mehrere Komponenten erscheinen
kann, wobei jede einzelne Komponente ganz eigene Zugriffssteuerungsebenen
hat. Bei den Komponenten kann es sich um Host-Kanaladapter (HCAs),
Zielkanaladapter (TCAs) oder Vermittlungsstellen handeln. Die Ressourcen,
die zur Erzeugung der Host-Kanaladapter und der Vermittlungsstellen
verwendet werden, kann man durch eine statische oder eine dynamische
Auswahl einer Zustandsmaschine in Software, Firmware oder in Hardware
aus einer gemeinsamen Gruppe erhalten. Die Zuordnung dieser Ressourcen
kann durch verschiedene Mechanismen erfolgen. Zum Beispiel kann
ein einfacher 1/N-Mechanismus verwendet werden, um Ressourcen über alle
virtuellen HCAs hinweg zuzuordnen. Alternativ dazu kann ein Mechanismus
auf der Grundlage eines gewichteten Durchschnitts verwendet werden,
um virtuelle HCAs mit unterschiedlichen Fähigkeiten zu erzeugen. Als
eine Möglichkeit, jedoch
nicht auf diese beschränkt,
können
die Ressourcen aus Änderungswerten
bestehen, die von allen HCAs und QPs gewählt werden können. Diese von
den HCAs und QPs wählbaren Änderungswerte können beispielsweise
eine Anzahl von QPs, eine Anzahl von CQs, die Größe der TPT, die Größen von P-Schlüsseltabellen,
die Anzahl von ausstehenden Lese-RDMAs und dergleichen sein.
-
Es
sei unbedingt angemerkt, dass die vorliegende Erfindung zwar im
Zusammenhang mit einem uneingeschränkt funktionsfähigen Datenverarbeitungssystem
beschrieben wurde, der Fachmann jedoch versteht, dass die Prozesse
der vorliegenden Erfindung in Form von einem rechnerlesbaren Datenträger mit
Befehlen und in vielen verschiedenen anderen Formen zum Vertrieb
angeboten werden können
und dass die vorliegende Erfindung ungeachtet der jeweiligen Art
des Signal tragenden Mediums, das für den Vertrieb der Erfindung
dann tatsächlich verwendet
wird, gleichermaßen
Anwendung findet.
-
Beispiele
für rechnerlesbare
Datenträger sind
unter anderem beschreibbare Datenträger wie zum Beispiel eine Diskette,
ein Festplattenlaufwerk, ein RAM, CD-ROMs, DVD-ROMs sowie Übertragungsmedien
wie digitale und analoge Datenübertragungsverbindungen,
drahtgebundene oder drahtlose Datenübertragungsverbindungen, die Übertragungsformen
wie zum Beispiel Hochfrequenz- und Lichtwellenleiter-Übertragungen
nutzen. Der rechnerlesbare Datenträger kann die Form von codierten
Formaten annehmen, die zur tatsächlichen
Verwendung in einem bestimmten Datenverarbeitungssystem decodiert
werden.