DE60111551T2 - Mechanismus zur vervollständigung von nachrichten im speicher - Google Patents

Mechanismus zur vervollständigung von nachrichten im speicher Download PDF

Info

Publication number
DE60111551T2
DE60111551T2 DE60111551T DE60111551T DE60111551T2 DE 60111551 T2 DE60111551 T2 DE 60111551T2 DE 60111551 T DE60111551 T DE 60111551T DE 60111551 T DE60111551 T DE 60111551T DE 60111551 T2 DE60111551 T2 DE 60111551T2
Authority
DE
Germany
Prior art keywords
channel adapter
message
packet
channel
sequence number
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 - Fee Related
Application number
DE60111551T
Other languages
English (en)
Other versions
DE60111551D1 (de
Inventor
A. Glenn DEARTH
P. Thomas WEBBER
A. Kenneth WARD
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of DE60111551D1 publication Critical patent/DE60111551D1/de
Application granted granted Critical
Publication of DE60111551T2 publication Critical patent/DE60111551T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/34Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)

Description

  • Die meisten der heutigen verteilten Systeme benutzen eine Technologie mit geteiltem Bus z. B. Peripheriekomponenten-Verbindungskarten (PCI, Peripheral Component Interconnect), um Computer mit Eingabe-/Ausgabemodulen (I/O-Module) zu verbinden, zum Beispiel Video, Grafik, Ethernet, Kleincomputersystem-Schnittstellen (Small Computer System Interface, SCSI). Für diese verteilten Systeme gibt es eine praktische Grenze für die Anzahl der I/O-Module, die mit dem Computer über den geteilten Bus verbunden werden können. Es gibt auch eine Grenze, wie weit die I/O-Module von dem Computer entfernt sein können. Darüber hinaus müssen alle Verbindungen zwischen dem Prozessor-/Speicherkomplex des Computers und den I/O-Modulen im Konkurrenzbetrieb durch einen einzigen Punkt laufen, dem geteilten Bus. Unter anderen setzen alle diese Faktoren Grenzen für die Skalierbarkeit, Zuverlässigkeit, Flexibilität und Leistung des Systems. Um sich diesem Problem anzunehmen, hat eine Gruppe von Führern in der Computerindustrie kürzlich eine Eingabe-/Ausgabe-Architektur vorgeschlagen, die als InfinibandSM bezeichnet wird, was ein SystemBereichsnetzwerk definiert, um unterschiedliche Komponenten von einem oder mehreren Computersystem(en) zu verbinden. Beispiele für Systembereichsnetzwerke sind in der Computerwelt bekannt einschließlich des „High Performance Parallel Interface" (HIPPI) und „Fiber Channel" Technologien, die dazu benutzt werden, um massiv parallele Prozessoren zu skalierbaren Speicherservern und Datentresoren zu verbinden. Das US Patent 6,044,415, erteilt an Futral et al. offenbart eine virtuelle Verbindung zwischen einem Anwendungsprogramm und einem Eingabe-/Ausgabegerät, das als Systembereichsnetzwerk implementiert ist.
  • Das InfinibandSM-Systembereichsnetzwerk besteht aus Knotenpunkten, die über eine kanalbasierte geschaltete Struktur kommunizieren. Jeder der Knotenpunkte könnte ein Prozessorknotenpunkt, ein Eingabe-/Ausgabe-Untersystem, ein Speicher-Untersystem oder ein Router sein, der zu einem anderen Netzwerk verbindet. Die geschaltete Struktur ist aus einer Ansammlung von Schaltern (Switchern), Routern und Verbindungen hergestellt, die einen Satz von Kanaladaptern verbinden. Die Kanaladapter bilden eine Schnittstelle zwischen der geschalteten Struktur und den Knotenpunkten. Das InfinibandSM-Systembereichsnetzwerk kann in Unternetze aufgeteilt werden, die untereinander durch Router verbunden sind. Auf dieser Ebene ist jedes InfinibandSM-Unternetz im Wesentlichen ein geschaltetes Netzwerk. Im Allgemeinen werden geschaltete Netzwerke wegen ihrer Fähigkeit, zahlreiche Hosts mit voller Geschwindigkeit zu unterstützen, als besser skalierbar angesehen, das heißt besser dazu fähig, zu einer großen Anzahl von Knotenpunkten zu wachsen, als Netzwerke mit geteilten Medien. Von InfinibandSM wird erwartet eine skalierbare Leistung von 500 Mbytes pro Sekunde (4 Gbits pro Sekunde) bis 6 Gbytes pro Sekunde (48 Gbits pro Sekunde) pro Verbindung zur Verfügung zu stellen.
  • Bei InfinibandSM hat ein Client-Prozess die Fähigkeit, einen Satz von Anweisungen, den die Hardware ausführt, in einer Arbeitsfolge zu platzieren. Ein Client ist das anfordernde Programm in einer Client/Server-Beziehung und ein Prozess ist eine Anwendung von einem Programm, die auf einem Computer läuft. Jeder Prozess auf einem Computer läuft weitgehend unabhängig von anderen Prozessen, und das Betriebssystem ist dafür verantwortlich, sicherzustellen, dass Ressourcen, wie zum Beispiel der Adressenraum und CPU-Zyklen, allen laufenden Prozessen zugewiesen werden. Die Arbeitsfolge enthält Instruktionen, die veranlassen, dass Daten zwischen dem Clientspeicher und anderen Prozessen in einer Folge übertragen werden, die als Sendearbeitsfolge bezeichnet wird, sowie Instruktionen darüber, wo Daten platziert werden sollen, die von einem anderen Prozess in einer anderen Folge empfangen werden, die als Empfangsarbeitsfolge bezeichnet wird. Dieser andere Prozess wird typischerweise als Remoteprozess bezeichnet, selbst wenn er auf demselben Computer wie der Client-Prozess abläuft. Die Hardware führt die Instruktionen in derjenigen Reihenfolge aus, in der sie in die Arbeitsfolge gestellt wurden. Für eine Sendeoperation werden Nachrichten von dem Clientprozess zu dem Remoteprozess in Gestalt von einer Reihe von Dateneinheiten gesendet, die als Pakete bezeichnet werden. Die sendende Hardware (Sender) überträgt die Pakete zu einer empfangenden Hardware (Empfänger), wo sie für den Remoteprozess zugänglich sind. Für Operationen, wie zum Beispiel eine RDMA-Leseoperation (Remote Direct Memory Access) sendet der Remoteprozess eine Antwortnachricht an den Client-Prozess, welche die angeforderten Informationen enthält.
  • Schalter oder Switcher werden dazu verwendet, um Pakete zwischen dem Sender und dem Empfänger zu leiten. Die Schalter leiten Pakete typischerweise unter Verwendung von entweder einem Datagramm- (oder verbindungslosen) Netzwerk oder von einem virtuellen Schaltungs- (oder verbindungsorientierten) Netzwerk. In einem Datagramm-Netzwerk enthält jedes Paket genug Informationen, das heißt eine Bestimmungsadresse, um jeden Schalter in die Lage zu versetzen, zu entscheiden, wie dieses Paket an seinen Bestimmungsort zu bringen ist. In einem virtuellen Schaltungsnetzwerk wird zunächst eine virtuelle Verbindung zwischen dem Quell-Host und dem Empfänger-Host hergestellt. Diese virtuelle Verbindung kann durch einen Netzwerkadministrator hergestellt werden. Alternativ kann ein Host Nachrichten in das Netzwerk senden, um zu bewirken, dass der Zustand hergestellt wird. In einem Datagramm basierten Netzwerk kann eine Folge von Paketen, die von einem Quell-Host an einen Empfänger-Host gesendet wird, unterschiedliche Wege nehmen. InfinibandSM unterstützt auch eine Form von Datagramm basierten Netzwerken, die auf einer expliziten Aufstellung von Schaltleittabellen durch den Unternetzmanager basieren. In einem virtuellen Schaltungsnetzwerk nimmt eine Folge von Paketen, die von einem Quell-Host zu einem Empfänger-Host gesendet wird den Weg, der von der virtuellen Schaltung hergestellt wird.
  • InfinibandSM stellt zuverlässige Transportdienste zwischen Client- und Remoteprozessen unter Verwendung von einer Kombination von Paketfolgenummern (Packet Sequence Number, PSN) und Bestätigungsnachrichten (Acknowlegement, ACK) zur Verfügung. Das heißt, jedem zu dem Empfänger gesendeten Paket wird eine PSN zugeordnet, und der Empfänger schickt eine ACK-Nachricht an den Sender, die den Empfang des Paketes bestätigt. Eine negative ACK-Nachricht (NAK) wird für ausgefallene oder verlorene Pakete geschickt. Die ACK-Nachrichten sagen dem Sender, welche Pakete an dem entfernten Ende empfangen wurden, indem sie die PSN des empfangenen Paketes zur Verfügung stellen. Eine Nachricht ist vervollständigt, wenn alle ausstehenden Pakete für die Nachricht bestätigt worden sind. Aber nur mit den zurückgeschickten PSNs steht dem Sender kein effektiver Weg zur Verfügung, um zu wissen, wann eine Nachricht vervollständigt worden ist. Um festzustellen, wann eine Nachricht vervollständigt worden ist, liest der Sender einen Descriptor in dem Speicher des Clients für jede zurückgeschickte PSN, um die Größe der ursprünglichen Nachricht, das heißt die Anzahl der Pakete in der ursprünglichen Nachricht, festzustellen. Dann benutzt der Sender diese Information gemeinsam mit der PSN, um festzustellen, ob die Nachricht vervollständigt worden ist. Diese zusätzlichen Auslesevorgänge von Descriptoren führen zu einer zusätzlichen Systembusbelastung über die Datenbewegung zwischen dem Prozessor und Speicher hinaus. Schemata, um diese Zusatzbelastung zu minimieren, können die Systemleistung erheblich verbessern.
  • Die europäische Patentanmeldung EP-A-0969622 (MICROSOFT CORP) vom 5. Januar 2000 betrifft eine Technik zum Versenden von kleinen Datennachrichten von einen sendenden System zu einer großen Anzahl von empfangenden Systemen, ohne Pakete zu verlieren. Um dies zu erreichen, wird ein statistisches Modell verwendet, bei dem Nachrichten in eine garantierte Minimalanzahl von Paketen geteilt werden, um eine auf statistischen Daten basierende zuverlässige Übertragung sicherzustellen. Bei einer alternativen Technik wird in den für eine Nachricht übertragenen Paketen periodisch ein Bestätigungs-Flag gesetzt. Empfangende Systeme senden als Antwort auf den Empfang von solchen Paketen mit einem Flag eine Bestätigung. Auf diese Weise kann das sendende System Pakete, die von dem empfangenden System nicht bestätigt wurden, nochmals übertragen. Folglich offenbart die EP-A-0969622 die Übertragung eines vollständigen Bestätigungssignals beim Empfang von jedem Paket.
  • Zusammenfassung der Erfindung
  • Nach einem Aspekt betrifft die Erfindung ein System zur Übertragung von Nachrichten zwischen einem Clientprozess und einem Remoteprozess, das ein Systemnetzwerk aufweist, das einen Kommunikationskanal zwischen dem Clientprozess und dem Remoteprozess bereitstellt. Das System umfasst weiterhin einen ersten Kanaladapter, der eine Schnittstelle zwischen dem Clientprozess und dem Kommunikationskanal bildet. Der erste Kanaladapter ist so konfiguriert, dass er eine Nachricht von dem Clientprozess erhält, die Nachricht in eine Folge von Paketen segmentiert, jedem Paket eine Sequenznummer zuweist und die Pakete in der richtigen Reihenfolge auf den Kommunikationskanal bringt. Das System umfasst weiterhin einen zweiten Kanaladapter, der eine Schnittstelle zwischen dem Remoteprozess und dem Kommunikationskanal bildet. Der zweite Kanaladapter ist so konfiguriert, dass er Pakete von dem Kommunikationskanal erhält und als Reaktion auf die empfangenen Pakete wenigstens eine Bestätigungsnachricht an den ersten Kanaladapter sendet. Die Bestätigungsnachricht hat ein Feld für die Paketsequenznummer, die eine Paketsequenznummer enthält, sowie einen Nutzbereich, der eine Nachrichtensequenznummer enthält. Die Nachrichtensequenznummer bezeichnet eine vollständige Nachricht, die an dem zweiten Kanaladapter zuletzt empfangen wurde, und die Paketsequenznummer bezeichnet ein Paket, das zuletzt an dem zweiten Kanaladapter empfangen wurde.
  • Bei einigen Ausführungsbeispielen weist der Clientprozess eine Arbeitsfolge auf, in welcher durch eine Kommunikationsschnittstelle auszuführende Anweisungen angeordnet sind. Bei einigen Ausführungsbeipielen umfasst die Arbeitsfolge eine Sendearbeitsfolge, in welcher an den Remoteprozess zu sendende Nachrichten angeordnet sind, und der erste Kanaladapter liest eine Nachricht von der Sendearbeitsfolge. Bei einigen Ausführungsbeipielen umfasst die Arbeitsfolge außerdem eine Empfangsarbeitsfolge, in welcher Anweisungen darüber angeordnet sind, wo eine Antwortnachricht zu platzieren ist, die von dem zweiten Kanaladapter empfangen wurde.
  • Nach einem anderen Aspekt betrifft die Erfindung ein Verfahren zur Übertragung von Nachrichten zwischen zwei Prozessen, welches das Schaffen eines Kommunikationskanals zwischen einem ersten Kanaladapter, der mit einem Clientprozess gekoppelt ist, und einem zweiten Kanaladapter, der mit einem Remoteprozess gekoppelt ist, umfasst. Bei dem ersten Kanaladapter umfasst das Verfahren weiterhin das Lesen einer Anforderungsnachricht von dem Clientprozess, das Segmentieren der Anforderungsnachricht in eine Reihe von Paketen, das Zuweisen einer Sequenznummer an jedes Paket, und das geordnete Übertragen von jedem Paket durch den Kommunikationskanal an den zweiten Kanaladapter. Bei dem zweiten Kanaladapter umfasst das Verfahren weiterhin das Empfangen der Pakete von dem ersten Kanaladapter und das Senden wenigstens einer Bestätigungsnachricht an den ersten Kanaladapter als Reaktion auf die empfangenen Pakete, wobei die Bestätigungsnachricht ein Feld für die Paketsequenznummer aufweist, die eine Paketsequenznummer enthält, sowie einen Nutzbereich aufweist, der eine Nachrichtensequenznummer enthält, wobei die Nachrichtensequenznummer eine vollständige Nachricht bezeichnet, die an dem zweiten Kanaladapter zuletzt empfangen wurde, und die Paketsequenznummer ein Paket bezeichnet, das zuletzt an dem zweiten Kanaladapter empfangen wurde.
  • Andere Aspekte und Vorteile der Erfindung werden durch das Lesen der folgenden Beschreibung und der angefügten Patentansprüche offensichtlich.
  • Kurze Beschreibung der Zeichnungen
  • 1 zeigt schematisch einen Client-Knotenpunkt und einen Remote-Knotenpunkt, die mit einem Systembereichsnetzwerk verbunden sind.
  • 2 veranschaulicht schematisch einen Clientprozess, der mit einem Remoteprozess über einen Kommunikationskanal verbunden ist, der von dem Systembereichsnetzwerk aus 1 geschaffen wird.
  • 3 ist eine grafische Veranschaulichung einer Paketstruktur gemäß einem Ausführungsbeispiel der Erfindung.
  • 4 zeigt Pakete, die zwischen Kanaladaptern gemäß einem Ausführungsbeispiel der Erfindung übertragen werden.
  • 5 illustriert einen Kommunikationsprozess zwischen den in 4 gezeigten Kanaladaptern einschließlich eines verlorenen Pakets und einem Prozess zum Widerversenden eines verlorenen Paketes.
  • 6 illustriert einen Kommunikationsprozess zwischen den in 4 gezeigten Kanaladaptern einschließlich einer verlorenen Bestätigungsnachricht.
  • Detaillierte Beschreibung der Erfindung
  • Unterschiedliche Ausführungsbeispiele der Erfindung werden nun mit Bezug auf die begleitende Zeichnungen beschrieben. 1 veranschaulicht schematisch einen Client-Knotenpunkt 1 und einen Remote-Knotenpunkt 2, die mit einem Systembereichsnetzwerk 3 verbunden sind. Die Client- und Remote-Knotenpunkte 1, 2 können irgendein Untersystem sein, das mit dem Systembereichsnetzwerk 3 verbunden ist, zum Beispiel ein paralleler Computer, ein Untersystem aus einer redundanten Anordnung von unabhängigen Platten (RAID, Redundant Array of Independent Disks), ein Eingabe/Ausgabe-Untersystem, ein skalierbarer Speicherserver usw. Das Systembereichsnetzwerk 3 umfasst untereinander verbundene Unternetze 4. Jedes Unternetz 4 ist aus einem Satz von untereinander verbundenen Schaltern (nicht gezeigt), einem Router (nicht gezeigt) und einem Unternetzmanager (nicht gezeigt) gebildet. Das Systembereichsnetzwerk 3 schafft einen Kommunikationskanal (5 in 2) zwischen einem Clientprozess 6 auf dem Client-Knotenpunkt 1 sowie einem Remoteprozess 7 auf dem Remote-Knotenpunkt 2. Der Clientprozess 6 ist in einem Speicherbereich 8 auf dem Client-Knotenpunkt 1 lokalisiert und der Remoteprozess 7 ist in einem Speicherbereich 9 auf den Remote-Knotenpunkt 2 lokalisiert. Der Client-Knotenpunkt 1 umfasst einen Prozessor 10, der mit dem Speicherbereich 8 zusammenwirkt, und einer Logik, die als Kanaladapter 11 bezeichnet wird, die eine Schnittstelle zwischen dem Clientprozess 6 und dem Systembereichsnetzwerk 3 bildet. Der Remoteprozess 7 umfasst einen Prozessor 12, der mit dem Speicherbereich 9 und einer Logik zusammenwirkt, die als Kanaladapter 13 bezeichnet wird, die eine Schnittstelle zwischen dem Remoteprozess 7 und dem Systembereichsnetzwerk 3 bildet. Die Kanaladaptoren 11, 13 können in einem anwendungsspezifischen integrierten Schaltkreis implementiert sein. Der Client-Knotenpunkt 1 und der Remote-Knotenpunkt 2 können jeweils mehr als einen Prozessor und Kanaladapter umfassen.
  • 2 zeigt den Clientprozess 6 und den Remoteprozess 7, die durch einen Kommunikationskanal 5 miteinander verbunden sind. In dem Speicherbereich 8 des Client-Knotenpunkts 1 ist eine Arbeitsfolge 14 geschaffen. Obwohl nur eine Arbeitsfolge 14 gezeigt ist sollte es klar sein, dass es in dem Speicherbereich 8 zahlreiche Arbeitsfolgen geben kann. Wenn der Clientprozess 6 eine Arbeitsanforderung sendet, wird eine Anweisung, die als Arbeitsfolgenelement bezeichnet wird, in der Arbeitsfolge 14 platziert. Die Arbeitsfolge 14 umfasst eine Sendearbeitsfolge 14a und eine Empfangsarbeitsfolge 14b. Die Arbeitsfolgenelemente, die bewirken, dass Daten zwischen den Speicherbereichen 8, 9 ausgetauscht werden, sind in der Sendearbeitsfolge 14a platziert, und die Arbeitsfolgenelemente, die Anweisungen darüber enthalten, wo Daten, die von dem Speicherbereich 9 empfangen werden, zu platzieren sind, sind in der Empfangsarbeitsfolge 14b platziert. Eine Kommunikationsschnittstelle, die der Prozessor 10 (in 1 gezeigt) oder der Kanaladapter 11 oder ein anderer Prozessor in dem Client-Knotenpunkt 1 (in 1 gezeigt) sein kann, zum Beispiel ein Eingabe/Ausgabe-Prozessor (nicht gezeigt) führt die Arbeitsfolgenelemente in der Reihenfolge aus wie sie in der Arbeitsfolge 14 platziert wurden.
  • Die Grundeinheit der Kommunikation zwischen dem Clientprozess 6 und dem Remoteprozess 7 ist eine Nachricht. Eine Nachricht kann eine Sende- oder Empfangsoperation, eine Lese- oder Schreiboperation mit Remote Direct Memory Access (RDMA), eine atomare Operation oder eine Multicast-Operation sein. Für eine Sendeoperation spezifiziert das Arbeitsfolgenelement einen Block von Daten in dem Speicherraum 8, der zu dem Remote-Knotenpunkt 2 gesendet werden soll, wobei es dem Remote-Knotenpunkt 2 überlassen bleibt, festzustellen, wo die empfangenen Daten zu platzieren sind. Für eine Empfangsoperation legt das Arbeitsfolgenelement fest, wo Daten in dem Speicherbereich 8 zu platzieren sind. Eine RDMA-Operation ist ein direkter Austausch von Daten zwischen den Speicherbereichen 8 und 9. Für eine RDMA-Operation legt das Arbeitsfolgenelement eine Adresse in dem Speicherbereich 9 fest, wo die Daten zu platzieren sind. Für eine RDMA-Leseoperation bezeichnet ein Arbeitsfolgenelement in der Sendearbeitsfolge 14a, dass Daten von dem Speicherbereich 9 zu dem Speicherbereich 8 übertragen werden sollen. Für eine RDMA-Schreiboperation zeigt ein Arbeitsfolgenelement in der Sendearbeitsfolge 14a an, dass Daten von dem Speicherbereich 9 zu dem Speicherbereich 8 übertragen werden sollen. Es wird darauf hingewiesen, dass für RDMA-Operationen keine Arbeitsfolgenelemente in dem Speicherbereich 9 gebraucht werden. Eine atomare Operation legt fest, dass die Hardware einen Ort in dem Speicherbereich 9 ausliest und den Inhalt dieses Ortes aktualisiert. Eine atomare Operation ist übertragungsbasiert und kann erforderlichenfalls rückgängig gemacht werden. Eine Multicast-Operation beinhaltet das Senden einer Nachricht an den Remote-Knotenpunkt 2, die an zahlreiche Ausgänge oder Knotenpunkte geliefert werden kann.
  • Nachrichten von dem Clientprozess 6 werden zu dem Remoteprozess 7 gesendet, wenn die Anweisungen in der Sendearbeitsfolge 14a von der Kommunikationsschnittstelle ausgeführt werden, zum Beispiel dem Prozessor 10 (in 1 gezeigt) oder dem Kanaladapter 11 oder einem anderen Prozessor in dem Client-Knotenpunkt 1 (in 1 gezeigt). Nachrichten von dem Remoteprozess 7 werden von dem Clientprozess 6 empfangen, wenn die Anweisungen in der Empfangsarbeitsfolge 14b von der Kommunikationsschnittstelle ausgeführt werden. Der Mechanismus zur Übertragung von Nachrichten zwischen dem Clientprozess 6 und dem Remoteprozess 7 umfasst den Kommunikationskanal 5 und die Kanaladapter 11, 13. Die Nachrichten, die zu dem Remoteprozess 7 gesendet werden sollen, werden von dem Speicherraum 8 zu dem Kanaladapter 11 übertragen, und die Nachrichten, die von dem Remoteprozess 7 empfangen werden sollen, werden von dem Kanaladapter 11 zu dem Speicherraum 8 übertragen. Der Kanaladapter 11 kann so ausgebildet sein, dass er ohne Einbeziehung von einem Arbeitselement in der Empfangsarbeitsfolge 14b Nachrichten direkt aus dem Speicherraum 8 lesen und direkt in den Speicherraum 8 schreiben kann. In diesem Fall gibt die Empfangsarbeitsfolge 14b dem Kanaladapter 11 ein Paar von Buffer-Descriptor-Listen. Eines von dem Paar von Buffer-Descriptor-Listen legt die Adresse/Länge von Buffern fest, welche die aus dem Speicherraum 8 zu übertragenden Daten enthalten. Die andere Buffer-Ddescriptor-Liste spezifiziert die Adresse/Länge von Buffern in dem Speicherraum 8, in welche Daten platziert werden sollen. Der Prozessor 10 (in 1 gezeigt) oder ein anderer Prozessor in dem Client-Knotenpunkt 1 (in 1 gezeigt) kann alternativ Daten zwischen dem Speicherraum 8 und dem Kanaladapter 11 übertragen. In diesem Fall würde der Kanaladapter 11 einen Speicher umfassen, um die zu übertragenden Daten zwischen dem Kanaladapter 11 und dem Speicherraum 8 zeitweilig zu speichern.
  • Ohne Ansehen des Mechanismus, der für die Datenübertragung zwischen dem Kanaladapter 11 und dem Speicherraum 8 verwendet wird, segmentiert der Kanaladapter 11 im Allgemeinen jede über den Kommunikationskanal 5 zu übertragende Nachricht in eine Reihe von Dateneinheiten 20, die als Pakete bezeichnet werden. Die Nachrichten können in dem Speicherraum 8 segmentiert werden oder, wenn der Kanaladapter 11 einen Speicher umfasst, in dem Speicher des Kanaladapters 11. Wie in 3 grafisch veranschaulicht ist, weist jedes Paket einen Leitkopf 22, einen Transportkopf 24, eine Paketnutzlast 24 und einen Fehlerdetektionscode 28, zum Beispiel Prüfsumme oder zyklische Redundanzüberprüfung (CRC, Cyclic Redundancy Check). Der Leitkopf 22 umfasst eine Quelladresse und eine Zieladresse des Pakets 20. Der Transportkopf weist unter anderen Dingen ein Paketsequenznummernummerfeld (PSN) sowie Flag-Felder auf. Die Flag-Felder werden dazu benutzt, um Informationen zwischen den Kanaladaptern 11 und 13 zu übertragen. Die Paketnutzlast 24 enthält die aktuellen Daten, die von dem Remoteprozess 7 benutzt werden. Der Fehlerdetektionscode 28 wird dazu verwendet, um die Integrität des Paketes 20 auf der Empfangsseite zu überprüfen. Der Kanaladapter 11 (in den 1, 2 gezeigt) gibt jedem Paket 20 in einer Nachricht eine PSN. Die PSN wird in einem PSN-Feld des Paketes gespeichert.
  • Zurück zu 2; der Kommunikationskanal 5 kann ein virtuelles Schaltungs- (oder ein verbindungsorientiertes) Netzwerk sein, das die Kanaladapter 11 und 13 verbindet. Alternativ dazu kann der Kommunikationskanal 5 ein Datagramm basiertes Netzwerk sein. Alle InfinibandSM-Dienstetypen erfordern von dem Unternetzmanager das explizite Aufstellen von Schaltleittabellen. Der Verbindungsaufbau zwischen den Kanaladaptern 11 und 13 kann asymmetrisch oder symmetrisch sein. Wenn der Verbindungsaufbau asymmetrisch ist, ist eine Seite, zum Beispiel der Kanaladapter 11 aktiv und die andere Seite, zum Beispiel der Kanaladapter 13 passiv oder umgekehrt. Die aktive Seite macht einen Eröffnungsanruf an die passive Seite und beide Seiten treten in einen Austausch von Nachrichten ein, um die Verbindung herzustellen. Wenn eine Verbindung symmetrisch ist, sind beide Seiten aktiv und versuchen, die Verbindung gleichzeitig zu eröffnen. Ein Verbindungsmanager (nicht gezeigt) verwaltet den Verbindungsaufbau zwischen den Kanaladaptern 11 und 13. Sobald die Verbindung zwischen den Kanaladaptern 11 und 13 hergestellt ist, können über den Kommunikationskanal 16 Nachrichten zwischen den Kanaladaptern 11 und 13 übertragen werden. Ein Programm, das auf der Kommunikationsschnittstelle läuft, zum Beispiel dem Prozessor 10 (in 1 gezeigt) oder dem Kanaladapter 11 oder einem anderen Prozessor auf dem Client-Knotenpunkt 1, zum Beispiel einem Eingabe/Ausgabe-Prozessor, liest Arbeitsfolgenelemente in der Reihenfolge, in der sie in der Arbeitsfolge 14 platziert worden sind. Das Programm verarbeitet die Arbeitsfolgenelemente in der Sendearbeitsfolge 14a, indem der Kanaladapter 11 angewiesen wird, Nachrichten an den Remoteprozess zu senden, und die Arbeitsfolgenelemente in der Empfangsarbeitsfolge 14b, indem der Kanaladapter 11 angewiesen wird, Nachrichten von dem Remoteprozess 7 zu empfangen.
  • Der Kanaladapter 11 liest eine Nachricht, die an den Remoteprozess 7 gesendet werden soll, segmentiert die Nachricht in Pakete, zum Beispiel Pakete 20, weist jedem Paket eine PSN zu und sendet die Pakete 20 geordnet an den Kanaladapter 13. Der Kanaladapter 13 empfängt die Pakete 20 und platziert sie in den Speicherraum 9, wo sie für den Remoteprozess 7 zugänglich sind. Der Kanaladapter 13 bestätigt den Empfang der Pakete 20, indem er Bestätigungsnachrichten (ACK) sendet, zum Beispiel ein ACK-Paket 21 an den Kanaladapter 11. Die ACKs werden über denselben Kommunikationskanal 5 an den Kanaladapter 11 übermittelt. Für RDMA-Leseoperationen sendet der Kanaladapter 13 Antwortnachrichten, zum Beispiel Antwortnachrichten 23 an den Clientprozess 6. Der Kanaladapter 13 sendet die Antwortnachrichten an den Kanaladapter 11 über den Kommunikationskanal 5. Wenn der Kanaladapter 11 eine Antwortnachricht von dem Remoteprozess 7 erhält, speichert der Kanaladapter 11 die Antwortnachricht an der Speicheradresse, die durch eine Information in dem ursprünglichen Sende-Descriptor angegeben ist.
  • 4 veranschaulicht, wie der Kanaladapter 11 Nachrichten an den Kanaladapter 13 sendet. Es wird angenommen, dass es drei Nachrichten gibt, die an den Remoteprozess 7 gesendet werden sollen. Weiterhin wird angenommen, dass der Kanaladapter 11 die erste Nachricht in drei Pakete 28 bis 32, die zweite Nachricht in sechs Pakete 34 bis 44 und die dritte Nachricht in zwei Pakete 46 bis 48 segmentiert. Der Kanaladapter 11 ordnet jedem der Pakete 28 bis 32 eine PSN zu. Zum Beispiel können die PSNs für die Pakete 28 bis 32 1 bis 3 sein, die PSNs für die Pakete 34 bis 44 können 1 bis 9 sein und die PSNs für die Pakete 46 bis 48 können 10 bzw. 11 sein. Die PSNs werden in den PSN-Feldern der Pakete gespeichert. Die Pakete 28 bis 48 werden dann geordnet an den Kanaladapter 13 übertragen. Der Kanaladapter 13 kann für jedes empfangene Paket eine ACK erzeugen. Der Kanaladapter 13 kann nach dem Empfang von jedem Paket eine ACK an den Kanaladapter 11 senden. Alternativ dazu kann der Kanaladapter 13 mehrere ACKs zu einem einzigen ACK-Paket verbinden, welches dann an den Kanaladapter 13 übertragen wird. Dieses alternative Verfahren minimiert die Bandbreitennutzung. Die Struktur des ACK-Pakets ist ähnlich zu dem in 3 veranschaulichten. Das PSN-Feld von jeder zu dem Kanaladapter 11 gesandten ACK enthält die PSN von dem letzten erfolgreich empfangenen Paket.
  • In der in 4 gezeigten Darstellung wird eine ACK 50 zu dem Kanaladapter 11 gesandt nachdem alle Pakete 28 bis 32 in der ersten Nachricht empfangen wurden, eine ACK 52 wird an den Kanaladapter 11 gesandt, nachdem alle Pakete 34 bis 44 in der zweiten Nachricht empfangen wurden, und eine ACK 54 wird an den Kanaladapter 11 gesandt, nachdem alle Pakete 46 bis 48 in der dritten Nachricht empfangen wurden. Das PSN-Feld der ACK 50 enthält die PSN des Paketes 32, das PSN-Feld der ACK 52 enthält die PSN des Paketes 44, und das PSN-Feld der ACK 54 enthält die PSN des Paketes 48. Zusätzlich zu der PSN-Information enthält der Nutzbereich von jeder ACK 50 bis 54 eine Nachrichtensequenznummer (MSN, Message Sequence Number). Der Kanaladapter 13 benutzt die MSN, um den Kanaladapter 11 über das Ende einer Nachricht zu benachrichtigen. Der Kanaladapter 13 weiß, wann eine Nachricht vervollständig ist, weil ein Flag in dem Kopf des Paketes gesetzt wird, wenn das Paket das letzte in der Nachricht ist. Zum Beispiel werden Flags in den Köpfen der Pakete 32, 44 und 48 gesetzt, die anzeigen, dass diese Pakete die letzten in ihrer jeweiligen Nachricht sind. Wenn der Kanaladapter 11 ACKs empfängt, untersucht der Kanaladapter 11 den Nutzbereich der ACK, um festzustellen, ob eine Nachricht vervollständig worden ist.
  • Zum Beispiel in 4, wenn der Kanaladapter 13 zuerst ein Paket von dem Kanaladapter 11 empfängt, zum Beispiel das Paket 28, dann kann der Kanaladapter 13 eine ACK (nicht gezeigt) erzeugen und initialisiert den Nutzbereich der ACK auf irgendeinen Ausgangswert. Wenn der Kanaladapter 13 das zweite Paket 30 empfängt, kann der Kanaladapter 13 eine ACK (nicht gezeigt) erzeugen und den Nutzbereich der ACK wieder auf denselben Ausgangswert initialisieren, der für das erste Paket 28 verwendet wurde. Wenn der Kanaladapter 13 das dritte Paket 32 empfängt, sieht der Kanaladapter 13 ein gesetztes Flag in dem Kopf des Paketes 32, das anzeigt, dass dieses das letzte Paket in der ersten Nachricht ist. Der Kanaladapter 13 erzeugt eine ACK für das Paket 32, aber dieses Mal schreibt der Kanaladapter 13 eine Anfangs-MSN in den Nutzbereich der ACK. Diese ACK, die als ACK 50 in 4 bezeichnet ist, wird dann an den Kanaladapter 11 übertragen. Wenn der Kanaladapter 11 die ACK 50 empfängt, untersucht der Kanaladapter 11 den Nutzbereich der ACK und folgert von der MSN in dem ACK-Nutzbereich, dass die erste Nachricht vervollständig worden ist. Es wird bemerkt, dass das PSN-Feld der ACK 50 die PSN des Paketes 32 enthält. Auf diese Weise nimmt der Kanaladapter 11 an, dass die vorhergehenden Pakete 28 und 30 von dem Kanaladapter 13 erfolgreich empfangen worden sind. Diese Art von Annahme ist in einem verbindungsorientierten Netzwerk gültig, wo Pakete bei den Kanaladapter 13 in der Reihenfolge ankommen, wie sie der Kanaladapter 11 gesendet hat.
  • Damit der Kanaladapter 11 weiß, welche Nachricht vervollständigt worden ist, müssen die Kanaladapter 11, 13 über die Anfangs-MSN übereinkommen, die der Kanaladapter 13 benutzen wird. Diese Anfangs-MSN wird zu dem Zeitpunkt erzeugt, an dem die Verbindung zwischen den Kanaladaptern 11, 13 hergestellt wird. Zum Beispiel gibt der Verbindungsmanager (nicht gezeigt) den Kanaladaptern 11, 13 die zu verwendende Anfangs-MSN vor. Alternativ können die Kanaladapter 11, 13 Nachrichten austauschen, um eine anfängliche MSN zu erzeugen. Die Kanaladapter 11, 13 können auch dahingehend übereinkommen, dass sie immer mit einer bestimmten MSN beginnen, zum Beispiel 0. Die MSN kann durch Verwendung irgendeines geeigneten Verfahrens erzeugt werden, solange beide Kanaladapter 11, 13 wissen, wie die MSN erzeugt wird. Bei einem Ausführungsbeispiel ist die MSN eine monoton ansteigende Sequenznummer, die durch Modulo-Arithmetik erzeugt wird. Die MSN könnte zum Beispiel durch einen Modulo 224 Zähler erzeugt werden, der sequentiell von 0 aufwärts zählt und bei 224 auf Null zurückspringt. Es sollte bemerkt werden, dass der ACK Nutzbereich in diesem Fall mindestens 24 Bits haben muss, um die MSN aufzunehmen.
  • Für Diskussionszwecke wird angenommen, dass der ACK-Nutzbereich auf 224 (FFFFFF16) initialisiert wird und dass die Anfangs-MSN 0 ist. Dann wird der Kanaladapter 13 für das erste Paket 28 eine ACK erzeugen, die PSN = 1 und einen Nutzbereich = FFFFFF16 hat. Für das zweie Paket 30 wird der Kanaladapter 13 eine ACK mit PSN = 2 und eine Nutzlast = FFFFFF16 erzeugen. Für das dritte Paket 32, welches das letzte Paket in der ersten Nachricht ist, wird der Kanaladapter 13 eine ACK, das heißt die ACK 50 erzeugen, mit einer PSN = 3 und einem Nutzbereich = 1. Es sollte bemerkt werden, dass der Kanaladapter 13 die ACK 50 nur dann erzeugt, wenn die Pakete 28 und 30 erfolgreich empfangen wurden. Tabelle 1 unten fasst den Inhalt des PSN-Felds und des Nutzbereiches von den ACKs zusammen, die für jedes von dem Kanaladapter 13 empfangenen Paket erzeugt werden unter der Annahme, dass die anfängliche MSN 0 ist und der Kanaladapter 13 eine ACK für jedes empfangene Paket erzeugt.
  • Figure 00170001
  • Figure 00180001
  • Wenn der Kanaladapter 13 eine ACK nur dann erzeugt, wenn eine Nachricht vervollständig worden ist, dann werden die von dem Kanaladapter 11 empfangene ACKs so sein, wie sie in Tabelle 2 gezeigt sind.
  • Figure 00180002
  • Der Kanaladapter 11 untersucht den Nutzbereich der ACKs die er empfängt, wie es vorstehend beschrieben worden ist. Wenn sich der ACK Nutzbereich verändert, weiß der Kanaladapter 11, dass eine Nachricht vervollständigt worden ist. Über jede vollständige Nachricht benachrichtigt der Kanaladapter 11 den Prozessor 10 (in Figur gezeigt) oder einen anderen Prozessor in dem Client-Knotenpunkt 1 (in 1 nicht gezeigt) über die Vervollständigung der Nachricht. Für jede vollständige Nachricht wird ein vollständiges Arbeitsfolgenelement in einer Erledigungsschleife 16 (in 2 gezeigt) in dem Speicherraum 8 platziert.
  • Bis jetzt wurde nur ein Fall betrachtet, der sich gutartig verhält, bei dem alle an den Kanaladapter 13 übertragenen Pakete beim ersten Mal erfolgreich empfangen worden sind. In einigen Fällen können eines oder mehrere an den Kanaladapter 13 gesendeten Pakete fehlerhaft sein. Ein fehlerhaftes Paket wird typischerweise als ein verlorenes Paket bezeichnet. In einigen Fällen muss der Kanaladapter 11 das verlorene Paket erneut an den Kanaladapter 13 senden. Der Kanaladapter 13 benachrichtigt den Kanaladapter 11 über ein verlorenes Paket, indem er ein negatives Bestätigungspaket (NAK) an den Kanaladapter 11 sendet. In der NAK wird ein Flag gesetzt, um anzuzeigen, dass die in dem NAK enthaltene Information sich auf ein verlorenes Paket bezieht. Der Kanaladapter 11 benutzt die PSN in dem PSN-Feld von der NAK und die MSN in dem Nutzbereich der NAK, um die erneut an den Kanaladapter 13 zu übertragenden Pakete festzustellen.
  • Mit Bezug auf 5 wird angenommen, dass das zweite Paket 30 der ersten Nachricht von dem Kanaladapter 13 nicht erfolgreich empfangen worden ist. Der Kanaladapter 13 erzeugt eine NAK 56 für das zweite Paket 30, das nicht erfolgreich empfangen wurde, sobald er das dritte Paket 32 empfängt. Das PSN-Feld der NAK 56 enthält die PSN des letzten erfolgreich empfangenen Paketes vor dem verlorenen Paket. Das letzte erfolgreich empfangene Paket vor dem verlorenen Paket ist in diesem Fall das Paket 28. Daher würde das PSN-Feld der NAK 56 1 enthalten. Der Nutzbereich der NAK 56 würde auch auf den Nutzbereich des Paketes 28 gesetzt werden, das heißt FFFFFF16. Wenn der Kanaladapter 11 die NAK 56 empfängt, weiß der Kanaladapter 11, dass das Paket, das nach einem Paket, das eine PSN = 1 und eine MSN = 0 hat, nicht erfolgreich empfangen worden ist. Es sollte bemerkt werden, dass der Kanaladapter 11 weiß, dass das verlorene Paket zu der ersten Nachricht gehört, das heißt MSN = 0, weil die NAK Nutzlast auf FFFFFF16 gesetzt ist. Der Kanaladapter 11 überträgt alle Pakete, die nach dem Paket mit einer PSN = 1 und einer MSN = 0 gesendet wurden, erneut.
  • In einem anderen Szenario kann auch eine von dem Kanaladapter 11 an den Kanaladapter 13 gesendete ACK verloren gehen. In diesem Fall ist es jedoch nicht notwendig, die ACK erneut zu übertragen, weil aus nachfolgend erfolgreich übertragenen ACKs auf den Empfang von Paketen geschlossen werden kann. Auf diese Weise kann zum Beispiel, wenn die ACK 50 verloren geht und die ACK 52 durch den Kanaladapter 11 erfolgreich empfangen wird, wie es in 6 gezeigt ist, der Kanaladapter schließen, dass, weil die zweite Nachricht von dem Kanaladapter 13 erfolgreich empfangen wurde, auch die erste Nachricht erfolgreich von dem Kanaladapter 13 empfangen worden sein muss. Der Kanaladapter 11 benachrichtigt dann einen Prozessor, zum Beispiel den Prozessor 10 (in 1 gezeigt), dass die erste und zweite Nachricht erfolgreich vervollständigt worden sind. Alternativ kann der Kanaladapter 11 den Prozessor nur darüber informieren, dass die zweite Nachricht vollständig ist und der Prozessor kann dann Descriptoren in einem Speicher überprüfen müssen, um festzustellen, ob die erste Nachricht vervollständig worden ist.
  • 4 stellt ein Verfahren zum Übertragen von Paketen von dem Kanaladapter 11 an den Kanaladapter 13 dar. Es gibt jedoch auch andere Verfahren, die dazu verwendet werden können, um Pakete zwischen den Kanaladapter 11, 13 zu übertragen. Ein Verfahren, welches als „Halt und Warten" („Stop and Wait") bezeichnet wird, beinhaltet das Senden eines Paketes an den Kanaladapter 13 und das darauf Warten, dass der Kanaladapter 13 den Empfang des Paketes bestätigt, bevor ein weiteres Paket gesendet wird. Dieser Übertragungsmechanismus ist in Datagramm basierten Netzwerken nützlich. Es wird eine Antwortzeit festgelegt, innerhalb der der Kanaladapter 13 den Empfang des Paketes bestätigen muss. Wenn der Kanaladapter 13 den Empfang des Paketes innerhalb der Antwortzeit nicht bestätigt, sendet der Kanaladapter 11 das Paket erneut an den Kanaladapter 13. Ein anderes Verfahren, welches als Schiebefenster bezeichnet wird, erlaubt dem Kanaladapter 11 mehrere Pakete bis zur Größe eines gewählten Fensters zu übertragen, bevor er eine ACK empfängt. Da ACKs für diejenigen Pakete in dem Fenster, die zuerst gesendet wurden, zurückgesendet wurden, verschiebt sich das Fenster und ermöglicht es, dass weitere Pakete gesendet werden. Der Kanaladapter 11 untersucht den ACK-Nutzbereich, wie zuvor beschrieben worden ist, um festzustellen, wann eine Nachricht vollständig ist.
  • Ausführungsbeispiele der Erfindung schaffen Mechanismen zum Vervollständigen von Nachrichten in einem Speicher für einen Clientprozess und einem Remoteprozess, die durch eine verlässliche Verbindung verbunden sind. Der Mechanismus nutzt die Tatsche aus, dass der Empfänger der Nachricht, zum Beispiel der Kanaladapter 13, weiß, wann eine Nachricht vollständig ist, weil ein Flag in dem Paketkopf gesetzt ist. Durch Verwenden einer MSN kann der Empfänger dann den Nachrichtensender, zum Beispiel den Kanaladapter 11, die Erledigung der Nachricht anzeigen. Auf diese Weise muss der Sender nicht in den Speicher gehen, um einen Descriptor für jede ACK zu lesen, die er erhält. Weil Erledigungsprüfungen von Nachrichten an Nachrichtenrändern ausgeführt werden anstatt an Paketrändern ist die Leistung des Systems optimiert.
  • Während die Erfindung mit Bezug auf eine begrenzte Anzahl von Ausführungsbeispielen beschrieben worden ist, werden Fachleute, die aus dieser Offenbarung nutzen ziehen, erkennen, dass andere Ausführungsbeispiele abgeleitet werden können, die nicht von dem Schutzumfang der hierin beschriebenen Erfindung abweichen. Demgemäß soll der Schutzumfang der Erfindung nur durch die beigefügten Patentansprüche begrenzt werden.

Claims (16)

  1. System zur Übertragung von Nachrichten zwischen einem Clientprozess (6) und einem Remoteprozess (7), das aufweist: ein Systemnetzwerk (3), das einen Kommunikationskanal (5) zwischen dem Clientprozess und dem Remoteprozess bereitstellt; einen ersten Kanaladapter (11), der eine Schnittstelle zwischen dem Clientprozess und dem Kommunikationskanal bildet, wobei der erste Kanaladapter so konfiguriert ist, dass er eine Nachricht von dem Clientprozess erhält, die Nachricht in eine Folge von Paketen (20) segmentiert, jedem Paket eine Sequenznummer zuweist und die Pakete in der richtigen Reihenfolge auf den Kommunikationskanal bringt; und einen zweiten Kanaladapter (13), der eine Schnittstelle zwischen dem Remoteprozess (7) und dem Kommunikationskanal bildet, wobei der zweite Kanaladapter so konfiguriert ist, dass er Pakete von dem Kommunikationskanal erhält und als Reaktion auf die empfangenen Pakete wenigstens eine Bestätigungsnachricht (21) an den ersten Kanaladapter sendet, dadurch gekennzeichnet, dass die Bestätigungsnachricht ein Feld für die Paketsequenznummer hat, die eine Paketsequenznummer enthält, sowie einen Nutzbereich, der eine Nachrichtensequenznummer enthält, wobei die Nachrichtensequenznummer eine vollständige Nachricht bezeichnet, die an dem zweiten Kanaladapter zuletzt empfangen wurde, und die Paketsequenznummer ein Paket bezeichnet, das zuletzt an dem zweiten Kanaladapter empfangen wurde.
  2. System nach Anspruch 1, wobei der Clientprozess (6) eine Arbeitsfolge (14) aufweist, in welcher auszuführende Anweisungen angeordnet sind, wobei die Arbeitsfolge eine Sendearbeitsfolge (14a) umfasst, in welcher an den Remoteprozess (7) zu sendende Nachrichten angeordnet sind, wobei der erste Kanaladapter (11) so eingerichtet ist, dass er eine Nachricht von der Sendearbeitsfolge liest.
  3. System nach Anspruch 2, wobei die Arbeitsfolge (14) weiterhin eine Empfangsarbeitsfolge (14b) aufweist, in welcher auszuführende Anweisungen darüber angeordnet sind, wo eine Antwortnachricht (23) zu platzieren ist, die von dem zweiten Kanaladapter (13) empfangen wurde.
  4. Verfahren zur Übertragung von Nachrichten zwischen zwei Prozessen, das umfasst: Schaffen eines Kommunikationskanals (5) zwischen einem ersten Kanaladapter (11), der mit einem Clientprozess gekoppelt ist, und einem zweiten Kanaladapter (13), der mit einem Remoteprozess (7) gekoppelt ist; bei dem ersten Kanaladapter Lesen einer Anforderungsnachricht von dem Clientprozess (6), segmentieren der Anforderungsnachricht in eine Reihe von Paketen, zuweisen einer Sequenznummer an jedes Paket, und übertragen von jedem Paket der Reihe in der richtigen Reihenfolge durch den Kommunikationskanal an den zweiten Kanaladapter (13); und bei dem zweiten Kanaladapter Empfangen der Pakete von dem ersten Kanaladapter (11) und senden wenigstens einer Bestätigungsnachricht (21) an den ersten Kanaladapter (11) als Reaktion auf die empfangenen Pakete, dadurch gekennzeichnet, dass die Bestätigungsnachricht ein Feld für die Paketsequenznummer aufweist, die eine Paketsequenznummer enthält sowie einen Nutzbereich, der eine Nachrichtensequenznummer enthält, wobei die Nachrichtensequenznummer eine vollständige Nachricht bezeichnet, die an dem zweiten Kanaladapter (13) zuletzt empfangen wurde, und die Paketsequenznummer ein Paket bezeichnet, das zuletzt an dem zweiten Kanaladapter (13) empfangen wurde.
  5. Verfahren nach Anspruch 4, das weiterhin umfasst, dass der erste Kanaladapter (11) die Nachrichtsequenznummer in der Bestätigungsnachricht dazu verwendet, um festzustellen, ob alle Pakete in der Nachricht, die an den zweiten Kanaladapter (13) übertragen wurde, empfangen wurden.
  6. Verfahren nach Anspruch 5, das weiterhin umfasst, dass der erste Kanaladapter (11) den Clientprozess (6) von der Vervollständigung der Nachricht benachrichtigt.
  7. Verfahren nach Anspruch 4, wobei das Schaffen des Kommunikationskanals zwischen dem ersten Kanaladapter (11) und dem zweiten Kanaladapter (13) das Erzeugen einer Startnachrichtsequenznummer einschließt.
  8. Verfahren nach Anspruch 7, wobei es das Senden wenigstens einer Bestätigungsnachricht an den ersten Kanaladapter (11) umfasst, dass der zweite Kanaladapter (13) die Startnachrichtsequenznummer in den Nutzbereich der Bestätigung schreibt, sobald das letzte Paket in der Nachricht von dem ersten Kanaladapter (11) empfangen wurde.
  9. Verfahren nach Anspruch 7, wobei es das Senden wenigstens einer Bestätigungsnachricht an den ersten Kanaladapter (11) umfasst, dass eine negative Bestätigungsnachricht (56) an den ersten Kanaladapter (11) gesendet wird, wenn ein Paket an dem zweiten Kanaladapter (13) nicht erfolgreich empfangen wurde.
  10. Verfahren nach Anspruch 9, wobei der erste Kanaladapter (11) das an dem zweiten Kanaladapter (13) nicht erfolgreich empfangene Paket mittels der Paketsequenznummer und der Nachrichtsequenznummer der negativen Bestätigungsnachricht bestimmt und dieses Paket neu überträgt.
  11. Verfahren nach Anspruch 4, wobei der zweite Kanaladapter (13) eine Bestätigungsnachricht für jedes von dem ersten Kanaladapter (11) empfangene Paket erzeugt.
  12. Verfahren nach Anspruch 11, wobei der zweite Kanaladapter (13) Bestätigungsnachrichten für mehrere Pakete in eine einzige Bestätigungsnachricht (50) vereinigt.
  13. Verfahren nach Anspruch 4, wobei es das Lesen der Anforderungsnachricht von dem Clientprozess (5) umfasst, dass ein Ort in dem Speicherplatz (8) des Clientprozesses (6) festgelegt wird, in welchen die Anforderungsnachricht gespeichert wird.
  14. Verfahren nach Anspruch 13, wobei es das Lesen der Anforderungsnachricht von dem Clientprozess (6) umfasst, dass ein Ort in dem Speicherplatz des Clientprozesses (6) festgelegt wird, in welchen eine Antwort auf die Anforderungsnachricht zu schreiben ist.
  15. Verfahren nach Anspruch 13, wobei das Lesen einer Anforderungsnachricht von dem Clientprozess (6) weiterhin umfasst, dass ein Ort in dem Speicherplatz des Remoteprozesses (7) festgelegt wird, an welchen die Anforderungsnachricht zu schreiben ist.
  16. Verfahren nach Anspruch 4, wobei der Kommunikationskanal in einem Systemnetzwerk (3) geschaffen wird.
DE60111551T 2000-08-24 2001-08-24 Mechanismus zur vervollständigung von nachrichten im speicher Expired - Fee Related DE60111551T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/645,864 US6744765B1 (en) 2000-08-24 2000-08-24 Mechanism for completing messages in memory
US645864 2000-08-24
PCT/US2001/026559 WO2002017576A2 (en) 2000-08-24 2001-08-24 Mechanism for completing messages in memory

Publications (2)

Publication Number Publication Date
DE60111551D1 DE60111551D1 (de) 2005-07-21
DE60111551T2 true DE60111551T2 (de) 2006-05-04

Family

ID=24590791

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60111551T Expired - Fee Related DE60111551T2 (de) 2000-08-24 2001-08-24 Mechanismus zur vervollständigung von nachrichten im speicher

Country Status (5)

Country Link
US (1) US6744765B1 (de)
EP (1) EP1323264B1 (de)
AU (1) AU2001285277A1 (de)
DE (1) DE60111551T2 (de)
WO (1) WO2002017576A2 (de)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102009030047A1 (de) * 2009-06-22 2010-12-23 Deutsche Thomson Ohg Verfahren und System zur Übertragung von Daten zwischen Datenspeichern durch entfernten direkten Speicherzugriff sowie Netzwerkstation die eingerichtet ist um in dem Verfahren als Sendestation bzw. als Empfangstation zu operieren
US8799625B2 (en) 2010-05-27 2014-08-05 International Business Machines Corporation Fast remote communication and computation between processors using store and load operations on direct core-to-core memory

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE468562T1 (de) * 2000-12-15 2010-06-15 Ibm Virtualisierung von e/a-adapterressourcen
US6948004B2 (en) * 2001-03-28 2005-09-20 Intel Corporation Host-fabric adapter having work queue entry (WQE) ring hardware assist (HWA) mechanism
US7085869B1 (en) * 2001-04-04 2006-08-01 Advanced Micro Devices, Inc. Arrangement for managing transmitted packets requiring acknowledgement in a host channel adapter
US20020159468A1 (en) * 2001-04-27 2002-10-31 Foster Michael S. Method and system for administrative ports in a routing device
US7000024B1 (en) 2001-07-09 2006-02-14 Cisco Technology, Inc. Systems and methods for providing transmission control protocol communications
US7502860B1 (en) * 2001-07-09 2009-03-10 Cisco Technology, Inc. Method and apparatus for client-side flow control in a transport protocol
WO2003007635A1 (en) * 2001-07-11 2003-01-23 Nokia Corporation Method for transmitting service data, network element and communications system
US7165110B2 (en) * 2001-07-12 2007-01-16 International Business Machines Corporation System and method for simultaneously establishing multiple connections
US7093024B2 (en) * 2001-09-27 2006-08-15 International Business Machines Corporation End node partitioning using virtualization
EP1503560B1 (de) * 2003-08-01 2007-08-29 Alcatel Lucent Verfahren zur kontrollierten Übertragung einer Dienstleistung und Gerät um dieses Verfahren auszuführen
US7620693B1 (en) * 2004-03-29 2009-11-17 Sun Microsystems, Inc. System and method for tracking infiniband RDMA read responses
GB0414057D0 (en) 2004-06-23 2004-07-28 Koninkl Philips Electronics Nv Method of,and system for,communicating data, and a station for transmitting data
US7478138B2 (en) * 2004-08-30 2009-01-13 International Business Machines Corporation Method for third party, broadcast, multicast and conditional RDMA operations
US8364849B2 (en) 2004-08-30 2013-01-29 International Business Machines Corporation Snapshot interface operations
US7747894B2 (en) * 2005-06-06 2010-06-29 Microsoft Corporation Transport-neutral in-order delivery in a distributed system
US7970958B2 (en) * 2005-06-20 2011-06-28 Micron Technology, Inc. Peripheral interface alert message for downstream device
US8311059B2 (en) * 2005-09-07 2012-11-13 Emulex Design & Manufacturing Corporation Receive coalescing and automatic acknowledge in network interface controller
US7706368B2 (en) * 2007-04-06 2010-04-27 Research In Motion Limited System and method for correlating messages within a wireless transaction
US8325633B2 (en) * 2007-04-26 2012-12-04 International Business Machines Corporation Remote direct memory access
US7948999B2 (en) * 2007-05-04 2011-05-24 International Business Machines Corporation Signaling completion of a message transfer from an origin compute node to a target compute node
US7889657B2 (en) * 2007-05-04 2011-02-15 International Business Machines Corporation Signaling completion of a message transfer from an origin compute node to a target compute node
US7890670B2 (en) * 2007-05-09 2011-02-15 International Business Machines Corporation Direct memory access transfer completion notification
US7779173B2 (en) * 2007-05-29 2010-08-17 International Business Machines Corporation Direct memory access transfer completion notification
US8037213B2 (en) 2007-05-30 2011-10-11 International Business Machines Corporation Replenishing data descriptors in a DMA injection FIFO buffer
US7765337B2 (en) * 2007-06-05 2010-07-27 International Business Machines Corporation Direct memory access transfer completion notification
US8478834B2 (en) * 2007-07-12 2013-07-02 International Business Machines Corporation Low latency, high bandwidth data communications between compute nodes in a parallel computer
US8018951B2 (en) 2007-07-12 2011-09-13 International Business Machines Corporation Pacing a data transfer operation between compute nodes on a parallel computer
US20090031001A1 (en) * 2007-07-27 2009-01-29 Archer Charles J Repeating Direct Memory Access Data Transfer Operations for Compute Nodes in a Parallel Computer
US7890597B2 (en) * 2007-07-27 2011-02-15 International Business Machines Corporation Direct memory access transfer completion notification
US8959172B2 (en) * 2007-07-27 2015-02-17 International Business Machines Corporation Self-pacing direct memory access data transfer operations for compute nodes in a parallel computer
US9009350B2 (en) * 2008-04-01 2015-04-14 International Business Machines Corporation Determining a path for network traffic between nodes in a parallel computer
US9225545B2 (en) * 2008-04-01 2015-12-29 International Business Machines Corporation Determining a path for network traffic between nodes in a parallel computer
US9494986B1 (en) 2008-09-30 2016-11-15 The Directv Group, Inc. Method and system for controlling a low power mode for external devices
US9148693B1 (en) 2008-09-30 2015-09-29 The Directv Group, Inc. Method and system of scaling external resources for a receiving device
US8671429B1 (en) 2008-09-30 2014-03-11 The Directv Group, Inc. Method and system for dynamically changing a user interface for added or removed resources
US9049473B1 (en) 2008-09-30 2015-06-02 The Directv Group, Inc. Method and system of processing multiple playback streams via a single playback channel
US9426497B1 (en) 2008-09-30 2016-08-23 The Directv Group, Inc. Method and system for bandwidth shaping to optimize utilization of bandwidth
US9710055B1 (en) 2008-09-30 2017-07-18 The Directv Group, Inc. Method and system for abstracting external devices via a high level communications protocol
US8578218B2 (en) * 2009-04-04 2013-11-05 Oracle International Corporation Method and system for implementing a scalable, high-performance, fault-tolerant locking mechanism in a multi-process environment
US8254391B2 (en) 2009-04-04 2012-08-28 Oracle International Corporation Method and system for performing blocking of messages on errors in message stream
US8661083B2 (en) * 2009-04-04 2014-02-25 Oracle International Corporation Method and system for implementing sequence start and increment values for a resequencer
US20100254388A1 (en) * 2009-04-04 2010-10-07 Oracle International Corporation Method and system for applying expressions on message payloads for a resequencer
US9124448B2 (en) * 2009-04-04 2015-09-01 Oracle International Corporation Method and system for implementing a best efforts resequencer
US8544026B2 (en) 2010-02-09 2013-09-24 International Business Machines Corporation Processing data communications messages with input/output control blocks
US8949453B2 (en) 2010-11-30 2015-02-03 International Business Machines Corporation Data communications in a parallel active messaging interface of a parallel computer
US8949328B2 (en) 2011-07-13 2015-02-03 International Business Machines Corporation Performing collective operations in a distributed processing system
US8745157B2 (en) 2011-09-02 2014-06-03 Trading Technologies International, Inc. Order feed message stream integrity
US8930962B2 (en) 2012-02-22 2015-01-06 International Business Machines Corporation Processing unexpected messages at a compute node of a parallel computer
US10152450B2 (en) * 2012-08-09 2018-12-11 International Business Machines Corporation Remote processing and memory utilization
US9336071B2 (en) * 2014-01-06 2016-05-10 International Business Machines Corporation Administering incomplete data communications messages in a parallel computer
CN107783845B (zh) * 2016-08-25 2021-04-13 阿里巴巴集团控股有限公司 消息传输系统、方法和装置
US10664420B2 (en) 2018-04-19 2020-05-26 Avago Technologies International Sales Pte. Limited System and method for port-to-port communications using direct memory access
US11082411B2 (en) 2019-08-06 2021-08-03 Advanced New Technologies Co., Ltd. RDMA-based data transmission method, network interface card, server and medium

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4058672A (en) * 1976-11-10 1977-11-15 International Telephone And Telegraph Corporation Packet-switched data communications system
US4777595A (en) * 1982-05-07 1988-10-11 Digital Equipment Corporation Apparatus for transferring blocks of information from one node to a second node in a computer network
US4841526A (en) * 1984-05-25 1989-06-20 Wilson Jon C Data communications system
US5003534A (en) * 1988-08-26 1991-03-26 Scientific Atlanta Link utilization control mechanism for demand assignment satellite communications network
US5086428A (en) * 1989-06-09 1992-02-04 Digital Equipment Corporation Reliable broadcast of information in a wide area network
US5386412A (en) * 1993-05-11 1995-01-31 Park; Jung S. Telecommunication system protocol for asynchronous data communication between multiport switch control processor and information support personal computer terminal
US5872777A (en) * 1997-09-30 1999-02-16 Motorola, Inc. Method and apparatus for conveying data packets in a packet data communication system
US6473425B1 (en) * 1997-10-02 2002-10-29 Sun Microsystems, Inc. Mechanism for dispatching packets via a telecommunications network
US6044415A (en) * 1998-02-27 2000-03-28 Intel Corporation System for transferring I/O data between an I/O device and an application program's memory in accordance with a request directly over a virtual connection
JP3415027B2 (ja) * 1998-05-01 2003-06-09 三菱電機株式会社 データ通信装置及びデータ通信方法
US6112323A (en) 1998-06-29 2000-08-29 Microsoft Corporation Method and computer program product for efficiently and reliably sending small data messages from a sending system to a large number of receiving systems
US6640248B1 (en) * 1998-07-10 2003-10-28 Malibu Networks, Inc. Application-aware, quality of service (QoS) sensitive, media access control (MAC) layer
US6338092B1 (en) * 1998-09-24 2002-01-08 International Business Machines Corporation Method, system and computer program for replicating data in a distributed computed environment

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102009030047A1 (de) * 2009-06-22 2010-12-23 Deutsche Thomson Ohg Verfahren und System zur Übertragung von Daten zwischen Datenspeichern durch entfernten direkten Speicherzugriff sowie Netzwerkstation die eingerichtet ist um in dem Verfahren als Sendestation bzw. als Empfangstation zu operieren
US8706927B2 (en) 2009-06-22 2014-04-22 Thomson Licensing Method for the recovery of a clock and system for the transmission of data between data memories by remote direct memory access and network station set up to operate in the method as a transmitting or, respectively, receiving station
US8799625B2 (en) 2010-05-27 2014-08-05 International Business Machines Corporation Fast remote communication and computation between processors using store and load operations on direct core-to-core memory
US9934079B2 (en) 2010-05-27 2018-04-03 International Business Machines Corporation Fast remote communication and computation between processors using store and load operations on direct core-to-core memory
DE112011100854B4 (de) 2010-05-27 2020-06-10 International Business Machines Corporation Schnelle Datenfernübertragung und Fernberechnung zwischen Prozessoren

Also Published As

Publication number Publication date
DE60111551D1 (de) 2005-07-21
EP1323264B1 (de) 2005-06-15
EP1323264A2 (de) 2003-07-02
US6744765B1 (en) 2004-06-01
WO2002017576A3 (en) 2002-08-15
WO2002017576A2 (en) 2002-02-28
AU2001285277A1 (en) 2002-03-04

Similar Documents

Publication Publication Date Title
DE60111551T2 (de) Mechanismus zur vervollständigung von nachrichten im speicher
DE69934124T2 (de) Verfahren und vorrichtung für wiederversuch, versagen und wiederanlauf einer eingang/ausgangsverbindung in einem computernetz
DE69735740T2 (de) Asynchrone paketvermittlung
DE60303026T2 (de) System, verfahren und produkt zur verwaltung des datenverkehrs in einem netzwerk
DE69531410T2 (de) Mehrrechnerumgebungen
DE69935554T2 (de) Verfahren und Rechnerprogrammprodukt zum effizienten und zuverlässigen Übertragen von kleinen Datennachrichten von einem Sendesystem zu einer grossen Anzahl von Empfangssystemen
DE69533230T2 (de) Verfahren und vorrichtung zur verbesserung der fehlertoleranz eines netzwerkes
DE60114097T2 (de) Verfahren und System zur Verbesserung der Netzleistungsfähigkeit unter Verwendung eines leistungssteigernden Proxies
DE112020002496T5 (de) System und verfahren zur erleichterung eines effizienten host-speicherzugriffs von einer netzwerkschnittstellensteuerung (nic)
DE69812777T2 (de) Verbindung von Ethernetkompatiblen Netzwerken
US5699500A (en) Reliable datagram service provider for fast messaging in a clustered environment
DE69836778T2 (de) Vorrichtung und Verfahren zur Fernpufferspeicherzuordnung und Verwaltung für Nachrichtenübertragung zwischen Netzknoten
DE69930992T2 (de) Verfahren und Rechnerprogrammprodukt zum effizienten und sicheren Senden von kleinen Datennachrichten von einem Sender zu einer grossen Anzahl von Empfangssystemen
DE69632147T2 (de) Verbund-fehlererkennung und datenpaketnumerierung in einem hierarchischen arq-übertragungssystem
DE60031263T2 (de) Umhüllungsverfahren für protokolldateneinheiten
DE19924922A1 (de) System und Verfahren für Nachrichtenübermittlung zwisfchen Netzwerkknoten, die durch parallele Verbindungen verbunden sind
DE112013000398B4 (de) Multisprung-Fehlerbehebung
DE69534411T2 (de) Offenes Transaktionverwaltungszugriffsystem und Verfahren
DE602005003142T2 (de) Vorrichtung und verfahren zur unterstützung von verbindungsherstellung in einem offload der netzwerkprotokollverarbeitung
DE69931215T2 (de) Verfahren und Rechnerprogrammprodukt zum effizienten und sicheren Senden von kleinen Datennachrichten von einem Sender zu einer grossen Anzahl von Empfangssystemen
DE60035882T2 (de) Protokoll einer zerteilten transaktion für ein bussystem
DE69829346T2 (de) Ein-/Ausgabevorrichtung für ein Peripheriegerät
DE112011106016T5 (de) Gemeinsame Sendeschlange
DE112013004187B4 (de) Technologie für Netzwerk-Datenübertragung durch ein Computersystem unter Verwendung von mindestens zwei Datenübertragungsprotokollen
DE112011102415T5 (de) Registerzugriff in einer verteilten virtuellen Brückenumgebung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee