-
GEBIET
-
Die vorliegende Offenbarung betrifft eine gemeinsame Sendeschlange für vernetzte Systeme.
-
HINTERGRUND
-
In einem vernetzten System können ein oder mehrere Host(s) (z. B. Server) mit einer oder mehreren Zielvorrichtungen (z. B. Clients und/oder anderen Servern) über ein Netz kommunizieren. Regeln und Datenformate für die Kommunikation über das Netz sind typischerweise durch Kommunikationsprotokolle definiert. Beispiele für solche Protokolle enthalten Ethernet und Internet Protocol Suite (TCP/IP). Typischerweise verwalten Netzsteuerung(en) im Host (Quellenendpunkt) und eine Netzsteuerung in jeder Zielvorrichtung (Zielendpunkt) ein Senden und Empfangen von Nachrichten, einschließlich Steuerung und/oder Daten zwischen dem Host und den Zielvorrichtungen, über das Netz. Die Kommunikation kann verbindungslos sein oder kann eine zuverlässige Konnektivität (bestätigte fehlerfreie Sendung und ordnungsgemäße Lieferung) haben.
-
Eine zuverlässige Verbindung (Reliable Connection – RC) ist ein Transportmodus, der so konfiguriert ist, dass er eine zuverlässige Konnektivität zwischen einem Host und einer Zielvorrichtung bereitstellt. In einem herkömmlichen System wird eine RC typischerweise durch Zuteilen eines Schlangenpaares (QP) beim Host errichtet. In einigen Protokollen enthält das QP eine Hostschnittstelle (Sendeschlange) und eine Einheit, die zum Bereitstellen eines zuverlässigen Dienstes für das QP über das Netz unter Verwendung eines Zuverlässigkeitsprotokolls konfiguriert ist. Zum Beispiel enthält der InfiniBand-Standard ein Zuverlässigkeitsprotokoll. In einem anderen Beispiel ist iWARP zur Verwendung von TCP zur Bereitstellung eines Zuverlässigkeitsdienstes konfiguriert. Ein zuverlässiger Dient ist zum Bereitstellen einer fehlerfreien Übertragung und ordnungsgemäßen Lieferung von Nachrichten zwischen dem Host und dem Zielort konfiguriert.
-
Ein zuverlässiger Dienst enthält Funktionen, die sowohl vom Host wie auch von Zielvorrichtungen ausgeführt werden, die so konfiguriert sind, dass sie zu einer fehlerfreien Übertragung und ordnungsgemäßen Lieferung von Nachrichten vom Host zu einer Zielvorrichtung führen. Der Host ist zum Senden von Nachrichten in der Reihenfolge, in der sie der Sendeschlange zugleitet wurden, zum Identifizieren und erneuten Senden von Nachrichten und/oder Paketen, die am Zielendpunkt nicht erfolgreich empfangen wurden, und zum Fertigstellen von Nachrichten, die vom Zielort empfangsbestätigt wurden, in der Reihenfolge konfiguriert. Der Zielendpunkt ist zum Validieren und Verarbeiten empfangener Nachrichten und/oder Pakete, zum Bereitstellen einer Anzeige für den Host bezüglich empfangener und verarbeiteter Nachrichten und zum Liefern empfangener Nachrichten und/oder Pakete in der Reihenfolge (Lieferungsreihenfolge entsprechend der Sendereihenfolge) konfiguriert.
-
In einigen Situationen kann es für eine Anwendung, die auf einem Hostprozessor läuft, wünschenswert sein, mit mehreren Zielvorrichtungen zu kommunizieren. In einer typischen zuverlässigen Verbindungskonfiguration wären eine oder mehrere zweckbestimmte QPs im Host zugeteilt und eine zuverlässige Verbindung für jede Zielvorrichtung errichtet. Eine vermittelnde Software kann Nachrichten zwischen den mehreren zuverlässigen Verbindungen (und verknüpften Zielvorrichtungen) multiplexen. Ein solches Multiplexing durch Software kann einen zusätzlichen Aufwand zur Kommunikationsverarbeitung signifikant erhöhen.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Merkmale und Vorteile des beanspruchten Gegenstands werden aus der folgenden ausführlichen Beschreibung von entsprechenden Ausführungsformen offensichtlich, wobei die Beschreibung unter Bezugnahme auf die beiliegenden Zeichnungen betrachtet werden sollte, von welchen:
-
1 eine beispielhafte Systemausführungsform entsprechend der vorliegenden Offenbarung zeigt;
-
2 ein Beispiel eines Kommunikationsteilsystems zeigt, das eine gemeinsame Sendeschlange entsprechend der vorliegenden Offenbarung enthält;
-
3A und 3B zwei beispielhafte Ausführungsformen von Kommunikationsvorrichtungen zeigt, die zum Verwalten einer gemeinsamen Sendeschlange konfiguriert sind, die zum Senden mehrerer Nachrichten zu mehreren Zielorten über mehrere zuverlässige Kommunikationskanäle entsprechend der vorliegenden Offenbarung verwendet wird;
-
4A und 4B beispielhafte Ablaufdiagramme sind, die eine Operation eines Hostsystems und einer Kommunikationsvorrichtung zum Senden mehrerer Nachrichten zu mehreren Zielvorrichtungen über mehrere zuverlässige Kommunikationskanäle unter Verwendung einer gemeinsamen Sendeschlange und Bewahrung der Sendereihenfolge für die gemeinsame Sendeschlange zeigen;
-
5A und 5B weitere beispielhaftere Ablaufdiagramme sind, die Operationen eines Hostsystems und einer Kommunikationsvorrichtung zum Senden mehrerer Nachrichten zu mehreren Zielortvorrichtungen über mehrere zuverlässige Kommunikationskanäle unter Verwendung einer gemeinsamen Sendeschlange und Bewahrung der Sendereihenfolge für jeden zuverlässigen Kommunikationskanal zeigen;
-
6 ein Beispiel ist, das Eingaben in einer gemeinsamen Sendeschlange und Eingaben in Sendeverlaufsinformationsspeichern für die gemeinsame Sendeschlange für mehrere zuverlässige Kommunikationskanäle für die in 3A dargestellte Ausführungsform entsprechend der vorliegenden Offenbarung zeigt; und
-
7 ein Beispiel ist, das Eingaben in einer gemeinsamen Sendeschlange und Eingaben in Sendeverlaufsinformationsspeichern für die gemeinsame Sendeschlange für mehrere zuverlässige Kommunikationskanäle für die in 3B dargestellte Ausführungsform entsprechend der vorliegenden Offenbarung zeigt.
-
Obwohl die folgende ausführliche Beschreibung unter Bezugnahme auf veranschaulichende Ausführungsformen erfolgt, sine viele Alternativen, Modifizierungen und Variationen davon für einen Fachmann offensichtlich.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Allgemein betrifft diese Offenbarung eine gemeinsame Sendeschlange in einem vernetzten System. Ein Verfahren und ein System sind zur Unterstützung mehrerer zuverlässiger Kommunikationskanäle unter Verwendung der gemeinsamen Sendeschlange konfiguriert. Die gemeinsame Sendeschlange ist so konfiguriert, dass eine Anwendung über mehrere zuverlässige Kommunikationskanäle mit mehreren fernen Zielorten kommunizieren kann. Anders als bei einer Sendeschlange pro zuverlässigem Kommunikationskanal ist die gemeinsame Sendeschlange von den zuverlässigen Kommunikationskanälen „abgekoppelt”. Eine Kommunikationsvorrichtung, wie eine Netzsteuerung, ist zum Verwalten der Kommunikation über die mehreren zuverlässigen Kommunikationskanäle konfiguriert.
-
Das Verfahren und System sind so konfiguriert, dass sie eine Verknüpfung einer ersten Vielzahl unerledigter Nachrichten mit einer gemeinsamen Sendeschlange zu einem Zeitpunkt ermöglichen. Das Verfahren und System sind ferner so konfiguriert, dass sie eine Zuordnung einer zweiten Vielzahl unerledigter Nachrichten zu einem zuverlässigen Kommunikationskanal zu einem Zeitpunkt ermöglichen. Dies ist anders als bei einigen herkömmlichen Systemen, die eine Sendeschlange und einen Kommunikationskanal zu einem Zeitpunkt auf eine unerledigte Nachricht beschränken. Unerledigte Nachricht, wie hierin verwendet, entspricht einer Nachricht, die gesendet, aber noch nicht fertiggestellt wurde. In einer Ausführungsform entspricht eine Fertigstellungsreihenfolge von Arbeitsschlangenelementen, die zur gemeinsamen Sendeschlange geleitet wurden, der Sendereihenfolge der Nachrichten, die den Arbeitsschlangenelementen für die gemeinsame Sendeschlange entsprechen. In einer anderen Ausführungsform entspricht die Fertigstellungsreihenfolge von Arbeitsschlangenelementen, die zur gemeinsamen Sendeschlange geleitet wurden, der Sendereihenfolge der Nachrichten auf einer Basis pro zuverlässigem Kommunikationskanal (d. h., unabhängig von anderen zuverlässigen Kommunikationskanälen). In beiden Ausführungsformen bezieht sich die Sendereihenfolge auf die Zuleitungsreihenfolge von Arbeitsschlangenelementen in die gemeinsame Sendeschlange, wie hierin beschrieben.
-
Wie hierin verwendet, ist ein zuverlässiger Kommunikationskanal ein Dienst (der zum Beispiel von einer Netzsteuerung bereitgestellt wird), der zum Bereitstellen einer zuverlässigen Ende-zu-Ende-Konnektivität zwischen zwei Endpunkten konfiguriert ist, einschließlich einer fehlerfreien Übertragung von Daten zwischen den Endpunkten und einer Lieferung in Reihenfolge der Daten am Zielendpunkt. Die zuverlässigen Kommunikationskanäle sind zur Übertragung von Nachrichten von einem Host (Quellenendpunkt) zu mehreren Zielorten (Zielendpunkten) konfiguriert, wo jeder zuverlässige Kommunikationskanal zum Bereitstellen eines zuverlässigen Dienstes zwischen einem Paar von Endpunkten konfiguriert ist. Die zuverlässigen Kommunikationskanäle sind zur Sicherstellung konfiguriert, dass die Fertigstellungsreihenfolge von Nachrichten einer Sendereihenfolge entspricht. „Fertigstellung”, wie hierin verwendet, bedeutet, dass alle Nachrichtendaten zuverlässig zum Zielendpunkt übertragen wurden und ihr Empfang bestätigt wurde (z. B. durch eine Bestätigung).
-
In einem herkömmlichen System (d. h., eine einzige Sendeschlange pro Verbindung) ist ein zugeteiltes QP für eine verknüpfte zuverlässige Verbindung zwischen zwei Endpunkten vorgesehen. Wenn eine Arbeitsschlangenanfrage an eine spezifische Sendeschlange gestellt wird, entspricht dies einem Transport von Nachrichten unter Verwendung der verknüpften zuverlässigen Verbindung. In einem Verfahren und System entsprechend der vorliegenden Offenbarung ist die gemeinsame Sendeschlange zur Verwendung mit mehreren zuverlässigen Kommunikationskanälen zwischen einem Host (Quellenendpunkt) und mehreren Zielendpunkten konfiguriert. Ein Arbeitsschlangenelement entsprechend der vorliegenden Offenbarung kann einen Deskriptor enthalten, der zum Identifizieren eines zuverlässigen Kommunikationskanals verwendet wird, der zum Transportieren einer verknüpften Nachricht verwendet wird.
-
Wenn eine Anwendung Daten zu übertragen hat, kann die Anwendung eine Arbeitsanfrage stellen. Die Arbeitsanfrage kann in ein Arbeitsschlangenelement (WQE) übertragen werden, das in eine Sendeschlange gestellt wird (d. h., eine Arbeitsschlange, die zum Vorlegen von zu sendender „Arbeit” verwendet wird). Die Reihenfolge von WQEs in einer Sendeschlange entspricht typischerweise der Reihenfolge, in der die WQEs der Sendeschlange vorgelegt wurden, und der Reihenfolge, in der die verknüpften Nachrichten gesendet werden können.
-
Jedes WQE enthält typischerweise Steuerinformationen, die die zu sendende Nachricht beschreiben, und einen Deskriptor (Datendeskriptor), der zu sendende Daten (Nachrichtennutzlast) und ihren verknüpften Anwendungszwischenspeicher identifiziert. In einer herkömmlichen Sendeschlange ist jede Sendeschlange mit einer jeweiligen zuverlässigen Verbindung verknüpft, die zum Bereitstellen eines zuverlässigen Dienstes konfiguriert ist, so dass eine spezifische zuverlässige Verbindung im WQE nicht identifiziert werden kann. Eine gemeinsame Sendeschlange entsprechend der vorliegenden Offenbarung kann mit mehreren zuverlässigen Kommunikationskanälen verknüpft sein. Somit kann ein WQE, das zu einer gemeinsamen Sendeschlange geleitet wird, einen Deskriptor (zuverlässigen Kommunikationskanaldeskriptor) enthalten, der zum Verknüpfen des WQE mit einem zuverlässigen Kommunikationskanal konfiguriert ist, der zum Senden der identifizierten Nachricht (einschließlich der Nutzlast) verwendet werden sollte.
-
Das Zuleiten eines WQE ist so konfiguriert, dass eine Kommunikationsvorrichtung über die zu sendende Nachricht (und Daten) benachrichtigt wird. Die Kommunikationsvorrichtung ist entsprechend der vorliegenden Offenbarung zum Lesen des WQE konfiguriert, das zur gemeinsamen Sendeschlange geleitet wurde, und zum Verwenden der Steuerinformationen, Datendeskriptor(en) und des zuverlässigen Kommunikationskanaldeskriptors, um eine Protokollnachricht zu generieren. Nachrichten können nach Art, Steuerinformationen und Nutzlast variieren. Kommunikationsprotokolle können eine Paketgröße (maximale Paketgröße) einschränken, die gesendet werden kann. Wenn eine Nachrichtengröße die maximale Paketgröße übersteigt, kann die Nachricht in mehrere Pakete zur Sendung segmentiert werden. Die Vielzahl von Paketen kann dann am Zielort wieder zur ursprünglichen Nachricht zusammengesetzt werden. Ein WQE, das zur gemeinsamen Sendeschlange geleitet wird, kann fertiggestellt werden, sobald eine gesamte verknüpfte Nachricht erfolgreich gesendet wurde und der Empfang der Nachricht von Zielort bestätigt wurde.
-
Die Kommunikationsvorrichtung ist zum Verwalten der Kommunikation von Fertigstellungen zur Anwendung in der Sendereihenfolge der Nachricht konfiguriert. Auf diese Weise kann ein übermäßiger Aufwand, der mit einem Betriebssystem verbunden ist, das die Kommunikation zwischen einer Anwendung und den mehreren Zielorten über die mehreren zuverlässigen Kommunikationskanäle verwaltet, vermieden werden. Somit kann auch ein Geschwindigkeitsmanko, das mit Software verbunden ist, vermieden werden. Vorteilhaft kann eine Begleitvorrichtung wie eine Speichersteuerung dann mit den mehreren Zielorten über die mehreren zuverlässigen Kommunikationskanäle durch eine Kommunikationsvorrichtung entsprechend der vorliegenden Offenbarung kommunizieren, ohne mehrere Sendeschlangen zu benötigen (d. h., ohne eine Sendeschlange für jeden zuverlässigen Kommunikationskanal zu benötigen). Somit können Begleitvorrichtungen mit begrenzter Schlangenspeicherkapazität mit einer Anzahl von Zielorten kommunizieren, wo die Anzahl zweckbestimmter Sendeschlangen die Schlangenspeicherkapazität der Begleitvorrichtung übersteigen würde.
-
1 zeigt eine beispielhafte Systemausführungsform entsprechend der vorliegenden Offenbarung. System 100 enthält allgemein ein Hostsystem 102, ein Netz 116, mehrere Speichervorrichtungen 118A, 118B, ..., 118N und mehrere Zielvorrichtungen 120A, 120B, ..., 120N. Jede Zielvorrichtung 120A, 120B, ..., 120N kann eine entsprechende Netzsteuerung 130A, 130B, ..., 130N enthalten, die zum Bereitstellen eines Zugriffs des Netzes 116 auf die Zielvorrichtung 120A, 120B, ..., 120N konfiguriert ist. Zum Beispiel kann das Hostsystem 102 zum Empfangen einer oder mehrerer Anfrage(n) von einer oder mehreren Zielvorrichtung(en) 120A, 120B, ..., 120N für einen Zugriff auf Daten, die in einer oder mehreren Speichervorrichtung(en) 118A, 118B, ..., 118N gespeichert sind, konfiguriert sein. Das Hostsystem 102 kann dann zum Bereitstellen der angefragten Daten für die eine oder mehreren Zielvorrichtung(en) 120A, 120B, ..., 120N über das Netz 116 konfiguriert sein.
-
Das Hostsystem 102 enthält allgemeinen einen Hostprozessor, eine Host CPU 104, einen Systemspeicher 106, einen Brücken-Chipsatz 108, eine Netzsteuerung 110 und eine Speichersteuerung 114. Die Host CPU 104 ist an den Systemspeicher 106 und den Brücken-Chipsatz 108 gekoppelt. In einigen Ausführungsformen kann der Brücken-Chipsatz im Host CPU 104 enthalten sein. Der Brücken-Chipsatz 108 ist an den Systemspeicher 106, die Netzsteuerung 110 und die Speichersteuerung 114 gekoppelt. Die Speichersteuerung 114 ist über den Brücken-Chipsatz 108 an die Netzsteuerung 110 gekoppelt. Der Brücken-Chipsatz 108 kann eine Peer-zu-Peer-Konnektivität zwischen der Speichersteuerung 114 und der Netzsteuerung 110 bereitstellen. In einigen Ausführungsformen können die Netzsteuerung 110 und die Speichersteuerung 114 integriert sein. Die Netzsteuerung 110 ist zum Bereitstellen einer Netzkonnektivität beim Hostsystem 102 konfiguriert.
-
Die Netzsteuerung 110 ist zum Verwalten des Sendens und Empfangens von Nachrichten zwischen dem Host 102 und Zielvorrichtungen 120A, 120B, ..., 120N (über eine SSQ Managementmaschine 112) konfiguriert. Die Netzsteuerung 110 kann zum Bereitstellen zuverlässiger Kommunikationskanäle zwischen dem Host 102 und den Zielvorrichtungen 120A, 120B, 120N konfiguriert sein. Die Netzsteuerung 110 kann zum Implementieren des zuverlässigen Dienstes konfiguriert sein. Beispiele für Kommunikationsprotokolle, die zum Bereitstellen des zuverlässigen Dienstes konfiguriert sind, enthalten, ohne aber darauf beschränkt zu sein, ein zuverlässiges Infiniband-Verbindungsprotokoll, iWARP-(Internet Wide Area RDMA (Remote direct memory access)Protokoll) Protokoll oder ein TOE-(TCP offload engine)Protokoll. Diese Protokolle sind zum Bereitstellen eines zuverlässigen Dienstes bei der Netzsteuerung konfiguriert, die zum Bereitstellen von Transportschichtdiensten, wie zuverlässige Paketlieferung und Nachrichtenfertigstellung, in Reihenfolge konfiguriert ist. Eine zuverlässige Paketlieferung enthält ein erneutes Senden verlorener oder korrupter Pakete und Signalisieren eines Fehlers, wenn eine Anzahl von wiederholten Versuchen erfolglos ist.
-
Durch Verwendung dieser Protokolle ist die Netzsteuerung 110 zum Verwalten zuverlässiger Kommunikationskanäle ohne Eingreifen eines Host-OS (Betriebssystem) und ohne mehrmaliges Kopieren gesendeter (und empfangener) Daten konfiguriert, während sichergestellt wird, dass Fertigstellungen zu einer sendenden Anwendung in Reihenfolge kommuniziert werden. Mit anderen Worten, durch Verwendung dieser Protokolle werden CPU-Zusatzaufwand, Speicherbandbreitennutzung und Latenz verringert, indem die Transportschichtverarbeitung von der CPU abgeladen, unnötige Zwischenspeicherung vermieden und OS-Aufrufe und Kontextwechsel verringert werden. Ferner erfordert eine Implementierung einer gemeinsamen Sendeschlange entsprechend der vorliegenden Offenbarung keine Wechsel zu einer physikalischen Schicht, wodurch die Kommunikation mit jeder, einem Standardprotokoll entsprechenden Kommunikationsvorrichtung erleichtert wird.
-
Der Systemspeicher 106 ist zum Speichern eines Betriebssystems OS 105, einer Anwendung 107 und eines oder mehrerer Anwendungsdatenzwischenspeicher(s) konfiguriert. Der Systemspeicher 106 ist zum Speichern einer gemeinsamen Sendeschlange (SSQ) 122, wie hierin beschrieben, konfiguriert. Der Systemspeicher kann zum Speichern einer gemeinsamen Empfangsschlange (SRQ) 124 konfiguriert sein. In einer Ausführungsform kann die Netzsteuerung 110 zum Speichern der gemeinsamen Sendeschlange 122 und/oder der gemeinsamen Empfangsschlange 124 konfiguriert sein. In einer anderen Ausführungsform kann die Speichersteuerung 114 zum Speichern der gemeinsamen Sendeschlange 122 und/oder der gemeinsamen Empfangsschlange 124 konfiguriert sein. In einigen Ausführungsformen kann die Speichersteuerung 114 mit der Netzsteuerung 110 integriert sein. Die gemeinsame Sendeschlange 122 (und gemeinsame Empfangsschlange 124) kann mit mehreren zuverlässigen Kommunikationskanälen, wie hierin beschrieben, verwendet werden. Die gemeinsame Sendeschlange 122 kann von einer SSQ Managementmaschine 112 verwaltet werden. Die SSQ Managementmaschine 112 kann in der Netzsteuerung 110 enthalten sein. Die gemeinsame Empfangsschlange 124 kann von der SSQ Managementmaschine 112 oder einer ähnlichen SRQ Managementmaschine verwaltet werden.
-
Die Speichersteuerung 114 ist an eine oder mehrere Speichervorrichtungen 118A, 118B, ..., 118N gekoppelt. Die Speichersteuerung 114 ist zum Speichern und Abfragen von Daten in/aus der (den) Speichervorrichtung(en) 118A, 118B, ..., 118N konfiguriert. Die Daten können als Reaktion auf eine Anfrage von Zielvorrichtung(en) 120A, 120B, ..., 120N und/oder einer Anwendung, die auf der Host CPU 104 läuft, gespeichert/abgefragt werden.
-
2 zeigt ein Beispiel eines Kommunikationsteilsystems 200 entsprechend der vorliegenden Offenbarung. Das Kommunikationsteilsystem 200 enthält die gemeinsame Sendeschlange 122 und die gemeinsame Empfangsschlange 124 von 1, eine Begleitvorrichtung 202, eine Kommunikationsvorrichtung 204, mehrere zuverlässige Sendekommunikationskanäle 206, mehrere Empfangskommunikationskanäle 208, ein Netz 210 und mehrere Zielvorrichtungen 212A, 212B, ..., 212N. Die Kommunikationsvorrichtung 204 enthält eine SSQ Managementmaschine 214. Es sollte festgehalten werden, dass die Pfeile in 2 die Richtung einer Daten-(Nachrichten-)Sendung angeben. Bestätigungen und dergleichen können auf demselben zuverlässigen Kommunikationskanal in entgegengesetzter Richtung gesendet werden. Somit können die zuverlässigen Sendekommunikationskanäle 206 und die Empfangskommunikationskanäle 208 zweiseitig gerichtet sein. Zum Beispiel kann die Begleitvorrichtung 202 eine Speichersteuerung sein und die Kommunikationsvorrichtung 204 kann, wie hierin beschrieben, eine Netzsteuerung sein. In Fortsetzung dieses Beispiels kann die SSQ 122 zur Kopplung der Speichersteuerung 202 an mehrere Zielvorrichtungen 212A, 212B, ..., 212N über mehrere zuverlässige Kommunikationskanäle 206 verwendet werden. Nachrichten (die Daten enthalten können) können dann von einer oder mehreren Speichervorrichtung(en) zu den Zielvorrichtungen 212A, 212B, ..., 212N über die mehreren zuverlässigen Kommunikationskanäle 206 gesendet werden, ohne mehrere Sendeschlangen zu benötigen. Die SSQ Managementmaschine 214 ist zum Verwalten der gemeinsamen Sendeschlange 122 konfiguriert, so dass Nachrichtenfertigstellungen, wie hierin beschrieben, in einer Reihenfolge bereitgestellt werden, die der Reihenfolge einer Nachrichtensendung entspricht. Die SSQ Managementmaschine 214 kann zum Verwalten der gemeinsamen Empfangsschlange 124 konfiguriert sein.
-
Vorteilhaft begrenzt eine Implementierung einer gemeinsamen Sendeschlange entsprechend der vorliegenden Offenbarung weder eine Anzahl von unerledigten Nachrichten für einen zuverlässigen Kommunikationskanal (zu einem Zeitpunkt), die Nachrichtengröße noch die durchgeführte Operation. Zusätzlich oder alternativ kann die Anzahl unerledigter Nachrichten (zu einem Zeitpunkt) für eine gemeinsame Sendeschlange nur durch die Kapazität der gemeinsamen Sendeschlange begrenzt sein. Zum Beispiel kann eine erste Vielzahl von unerledigten Nachrichten mit der gemeinsamen Sendeschlange verknüpft sein. In einem anderen Beispiel kann eine zweite Vielzahl von unerledigten Nachrichten mit einem zuverlässigen Kommunikationskanal verknüpft sein. Dies ist anders als bei einigen herkömmlichen Systemen, die eine Sendeschlange und einen Kommunikationskanal auf eine unerledigte Nachricht begrenzen. Zum Beispiel können bei einem iWARP RDMA (Remote Direct Memory Access), alle Operationen, die durch den iWARP-Standard definiert sind, unter Verwendung einer gemeinsamen Sendeschlange entsprechend der vorliegenden Offenbarung durchgeführt werden. Durch Verwendung der gemeinsamen Sendeschlange und gemeinsamen Empfangsschlange kann eine Anzahl von Zielvorrichtungen eine Anzahl von Schnittstellenschlangen einer Begleitvorrichtung (z. B. Speichersteuerung) übersteigen, ohne einen Eingriff eines Host OS (Software) zu benötigen. Zum Beispiel kann für eine Speichersteuerungs-Begleitvorrichtung die gemeinsame Empfangsschlange für eine Netzsteuerung auf eine Einreichungsschlange der Speichersteuerung abgebildet werden und eine Fertigstellungsschlange der Speichersteuerung kann auf eine gemeinsame Sendeschlange der Netzsteuerung abgebildet werden. Somit können sich mehrere Zielvorrichtungen die Einreichungsschlangen und Fertigstellungsschlangen der Speichersteuerung teilen, während zweckbestimmte zuverlässige Kommunikationskanäle verwendet werden. Dies ermöglicht eine Freistellung der Speichersteuerung für örtliche und ferne Zielorte, ohne eine Unterstützung für eine relativ große Anzahl von Einreichungsschlangen und Fertigstellungsschlangen durch die Speichersteuerung zu benötigen.
-
3A und 3B zeigen zwei beispielhafte Ausführungsformen 302, 304 von Kommunikationsvorrichtungen (z. B., Netzsteuerung 110), die zum Verwalten einer gemeinsamen Sendeschlange konfiguriert sind, die von einer Anwendung zum Senden von Nachrichten über mehrere zuverlässige Kommunikationskanäle entsprechend der vorliegenden Offenbarung verwendet wird. Die Kommunikationsvorrichtungen 302, 304 enthalten mehrere Kanal-Sendeverlaufsinformationsspeicher (Xmit FIFOs) 312A, 312B, ..., 312M, wobei jeder Kanal-Sendeverlaufsinformationsspeicher mit einem entsprechenden zuverlässigen Kommunikationskanal RC1, RC2, ..., RCm verknüpft ist. Zum Beispiel ist RC1 Xmit FIFO mit dem zuverlässigen Kommunikationskanal RC1 verknüpft, RC2 Xmit FIFO ist mit dem zuverlässigen Kommunikationskanal RC2 verknüpft, usw. Jeder zuverlässige Kommunikationskanal RC1, RC2, ..., RCm ist mit einem entsprechenden Zielort verknüpft. Jeder zuverlässige Kommunikationskanal RC1, RC2, RCm entspricht einem zuverlässigen Kommunikationskanal, der zwischen dem Host und einer entsprechenden Zielvorrichtung errichtet wurde. Jeder Kanal-Sendeverlaufsinformationsspeicher 312A, 312B, ..., 312M ist so konfiguriert, dass er sicherstellt, dass eine Nachricht, die über einen entsprechenden zuverlässigen Kommunikationskanal RC1, RC2, ..., RCm gesendet wird, für diesen zuverlässigen Kommunikationskanal in der Reihenfolge fertiggestellt wird.
-
Jeder Kanal-Sendeverlaufsinformationsspeicher 312A, 312B, ..., 312M ist zum Nachverfolgen von Nachrichten konfiguriert, die auf dem verknüpften zuverlässigen Kommunikationskanal gesendet wurden, aber noch nicht fertiggestellt sind. Die Sendeverlaufsinformationsspeicher 312A, 312B, ..., 312M sind zum Speichern von Nachverfolgungsinformationen konfiguriert, die zum Fertigstellen oder erneuten Senden unerledigter Nachrichten verwendet werden. Zum Beispiel ist RC1 Xmit FIFO 312A zum Nachverfolgen von Nachrichten konfiguriert, die auf dem zuverlässigen Kommunikationskanal RC1 gesendet werden, RC2 Xmit FIFO 312B zum Nachverfolgen von Nachrichten konfiguriert, die auf dem zuverlässigen Kommunikationskanal RC2 gesendet werden, usw. Jeder Kanal-Sendeverlaufsinformationsspeicher 312A, 312B, ..., 312M ist ferner so konfiguriert, dass er sicherstellt, dass Nachrichten in einer Reihenfolge entsprechend der Reihenfolge fertiggestellt werden, in der sie auf dem zugeordneten zuverlässigen Kommunikationskanal gesendet werden. Zum Beispiel ist RC1 Xmit FIFO 312A konfiguriert um sicherzustellen, dass Nachrichten, die auf dem zuverlässigen Kommunikationskanal RC1 gesendet wurden, in einer Reihenfolge entsprechend der Reihenfolge fertiggestellt werden, in der sie gesendet wurden.
-
Unter Bezugnahme nun auf 3A enthält die Kommunikationsvorrichtung 302 in dieser Ausführungsform ferner einen SSQ Verlaufsinformationsspeicher (SSQ Xmit FIFO) 314. Der SSQ Xmit FIFO 314 ist zwischen dem Kanal-Sendeverlaufsinformationsspeicher 312A, 312B, ..., 312M und einem gemeinsame Sendeschlange SSQ 316 gekoppelt. Jeder Eintrag in jedem Kanal-Sendeverlaufsinformationsspeicher 312A, 312B, ..., 312M kann mit einem entsprechenden Eintrag im SSQ Verlaufsinformationsspeicher 314 verknüpft werden. Der SSQ Verlaufsinformationsspeicher 314 ist so konfiguriert, dass er sicherstellt, dass Nachrichten, die über die mehreren zuverlässigen Kommunikationskanäle RC1, RC2 und RCm gesendet werden, in der Reihenfolge fertiggestellt werden, in der sie zur gemeinsamen Sendeschlange 316 geleitet wurden.
-
Die Fertigstellung einer Nachricht entsprechend einem entsprechenden Eintrag im Kanal-Sendeverlaufsinformationsspeicher 312A, 312B, ... oder 312M muss nicht unbedingt zur Fertigstellung des verknüpften Eintrags im SSQ Verlaufsinformationsspeicher 314 führen. Zum Beispiel können Eingaben im Kanal-Sendeverlaufsinformationsspeicher für einen zuverlässigen Kommunikationskanal außerhalb der Reihenfolge in Bezug auf Eingaben im Kanal-Sendeverlaufsinformationsspeicher für andere zuverlässige Kommunikationskanäle fertiggestellt werden. In dieser Ausführungsform sind Eingaben im SSQ Verlaufsinformationsspeicher so konfiguriert, dass sie in Reihenfolge fertiggestellt werden. Mit anderen Worten, ein Eintrag im SSQ Verlaufsinformationsspeicher kann nur fertiggestellt werden, wenn die (in der Zuleitungs- und/oder Sendereihenfolge) vorangehenden Eingaben im SSQ Verlaufsinformationsspeicher fertiggestellt sind. Damit eine Fertigstellungsreihenfolge erreicht wird, die der Zuleitungsreihenfolge für Eingaben im SSQ 316 entspricht, kann ein Eintrag im SSQ Verlaufsinformationsspeicher mit PendingCompletion („Vor Fertigstellung”) markiert werden, wenn sein verknüpfter Eintrag im Kanal-Sendeverlaufsinformationsspeicher fertiggestellt ist. Zum Beispiel kann die Markierung ein Setzen eines PendingCompletion-Bits im verknüpften Eintrag im SSQ Verlaufsinformationsspeicher enthalten. Die Kommunikationsvorrichtung 302 kann zum Überwachen der PendingCompletion-Bits für jeden Eintrag im SSQ Verlaufsinformationsspeicher und zum tatsächlichen Fertigstellen der mit PendingCompletion markierten Eingaben im SSQ Verlaufsinformationsspeicher in einer Fertigstellungsreihenfolge, die einer Zuleitungsreihenfolge des Arbeitsschlangenelements in der gemeinsamen Sendeschlange 316 entspricht, konfiguriert sein. In dieser Konfiguration kann eine Anzahl unerledigter Nachrichten (d. h., die auf eine Fertigstellung warten) für jeden zuverlässigen Kommunikationskanal durch eine Kapazität des SSQ 316, eine maximale Größe des SSQ Verlaufsinformationsspeichers 314 oder eine maximale Größe eines verknüpften Kanal-Sendeverlaufsinformationsspeichers 312A, 312B, ..., 312M begrenzt sein. Somit können die Kanal-Sendeverlaufsinformationsspeicher 312A, 312B, ..., 312M und der SSQ Verlaufsinformationsspeicher 314 mit der gemeinsamen Sendeschlange SSQ 316 zur Sicherstellung verwendet werden, dass eine Fertigstellung von gesendeten Nachrichten der sendenden Anwendung in der Reihenfolge kommuniziert wird, in der sie zur gemeinsamen Sendeschlange 316 geleitet wurden.
-
Unter Bezugnahme nun auf 3B können in dieser Ausführungsform die mehreren Kanal-Sendeverlaufsinformationsspeicher 312A, 312B, ..., 312M an die gemeinsame Sendeschlange 316 gekoppelt werden. Die Kommunikationsvorrichtung 304 kann mehrere Speicher für unerledigte WQE 320A, 320B, ..., 320M enthalten, wobei mit jedem Speicher für unerledigte WQE ein entsprechender Sendeverlaufsinformationsspeicher 312A, 312B, ..., 312M verknüpft ist. Die Speicher für unerledigte WQE 320A, 320B, ..., 320M sind Strukturen, die zum Speichern von Informationen konfiguriert sind, die sich auf WQEs beziehen, die zur SSQ 316 geleitet wurden. Zum Beispiel können die Informationen, die sich auf das WQE beziehen, das gesamte WQE, einen Teil des WQE, andere Informationen, die dem WQE bereitgestellt werden und/oder Informationen, die dem WQE entsprechen, enthalten. Die Speicher für unerledigte WQE 320A, 320B, ..., 320M können Erweiterungen der Sendeverlaufsinformationsspeicher 312A, 312B, ..., 312M sein. Jeder Speicher für unerledigte WQE 320A, 320B, ..., oder 320M kann als Teil eines verknüpften Sendeverlaufsinformationsspeichers 312A, 312B, ..., bzw. 312M, verwaltet werden oder kann separat verwaltet werden. Die Sendeverlaufsinformationsspeicher 312A, 312B, ..., 312M und Speicher für unerledigte WQE 320A, 320B, ..., 320M sind zum Bereitstellen einer Nachrichtenfertigstellung in Reihenfolge auf einer Basis pro zuverlässigen Kommunikationskanal konfiguriert. Mit anderen Worten, die Fertigstellungsreihenfolge von WQEs, die zur SSQ 316 geleitet werden, kann für Nachrichten aufrechterhalten werden, die auf einem entsprechenden zuverlässigen Kommunikationskanal RC1, RC2, ... oder RCM gesendet werden. WQEs, die mit dem entsprechenden zuverlässigen Kommunikationskanal verknüpft sind, können unabhängig davon fertiggestellt werden, ob WQEs, die mit Nachrichten verknüpft sind, die auf anderen zuverlässigen Kommunikationskanäle gesendet wurden, fertiggestellt sind. Die Speicher für unerledigte WQE 320A, 320B, ..., 320M sind so konfiguriert, dass sie ermöglichen, dass verknüpfte WQEs im SSQ 316, die anderen Nachrichten entsprechen, die vor einer entsprechenden Nachricht gesendet wurden, aber noch nicht fertiggestellt sind, freigegeben werden, wenn die entsprechende Nachricht fertiggestellt ist, wodurch Raum im SSQ 316 frei wird, so dass neue Arbeitsanfragen gestellt werden können.
-
In dieser Ausführungsform kann mindestens ein Teil jedes WQE zum entsprechenden Kanal-Sendeverlaufsinformationsspeicher 312A, 312B, ..., 312M (oder Speicher für unerledigte WQE 320A, 320B, ..., 320M, auf den der entsprechende Kanal-Sendeverlaufsinformationsspeicher 312A, 312B, ..., 312M verweist) kopiert werden, mit dem der zuverlässige Kommunikationskanal verknüpft ist, der zum Senden der Nachricht entsprechend dem WQE verwendet wird. Diese Kopie des mindestens einen Teils des WQE ist so konfiguriert, dass eine erneute Sendung von negativ bestätigten oder unbestätigten und abgelaufenen Paketen (und Nachrichten) möglich ist. Diese Kopie des WQE ist ferner so konfiguriert, dass eine Freigabe in Reihenfolge und/oder Fertigstellungen von WQEs außerhalb der Reihenfolge, die an den SSQ geleitet werden, möglich sind.
-
Die SSQ ist so konfiguriert, dass eine Anwendung mehrere Nachrichten zu einer Vielzahl von Zielendpunkten unter Verwendung des SSQ (und nicht mehrerer zweckbestimmter Sendeschlangen) senden kann. Die SSQ ist ferner so konfiguriert, dass mehrere unerledigte Nachrichten (zu jedem Zeitpunkt) möglich sind. In einigen Situationen kann die Anwendung so konfiguriert sein, dass die WQEs, die zur SSQ geleitet werden, in Sendereihenfolge für alle der zuverlässigen Kommunikationskanäle (und Zielendpunkte), mit welchen die geleiteten WQEs verknüpft sind, fertiggestellt werden. In anderen Situationen kann die Anwendung so konfiguriert sein, dass die Fertigstellungsreihenfolge zwischen einzelnen Zielendpunkten nicht wichtig ist. In diesen anderen Situationen kann es wünschenswert sein, die WQEs außerhalb der Reihenfolge in Bezug auf verschiedene Zielorte fertigzustellen, während eine Fertigstellung in Reihenfolge in Bezug auf einen individuellen Zielort beibehalten wird. Wenn WQEs, die zur SSQ geleitet werden, außerhalb der Reihenfolge in Bezug auf verschiedene Zielorte (und ihre verknüpften zuverlässigen Kommunikationskanäle) fertiggestellt werden können, kann dies die Abhängigkeit zwischen Zielorten verringern.
-
Zum Beispiel kann eine erste Nachricht mit einem verknüpften ersten Zielort und einem verknüpften ersten WQE, die zur SSQ geleitet wird, vor einer zweiten Nachricht mit einem verknüpften zweiten Zielort und einem verknüpften zweiten WQE, die zur SSQ geleitet wird, vom ersten Zielort empfangen, verarbeitet und bestätigt werden, nachdem die zweite Nachricht vom zweiten Zielort empfangen, verarbeitet und bestätigt wurde. Wird die Fertigstellungsreihenfolge entsprechend der Sendereihenfolge für die gesamte SSQ erzwungen, könnte das zweite WQE nicht vor der Fertigstellung des ersten WQE fertiggestellt werden, wodurch eine Verzögerung in der Fertigstellung der zweiten Nachricht abhängig von der Leistung des ersten Zielorts und ersten zuverlässigen Kommunikationskanals eingeführt wird. Wenn die Fertigstellungsreihenfolge entsprechend der Sendereihenfolge nur auf einer Basis pro zuverlässigem Kommunikationskanal (und einzelnem Zielort) erzwungen wird, kann das zweite WQE vor Fertigstellung des ersten WQE fertiggestellt werden. Somit können Abhängigkeiten zwischen einzelnen Zielorten verringert werden.
-
Die Speicher für unerledigte WQE 320A, 320B, ..., 320M sind so konfiguriert, dass WQE Fertigstellungen erleichtert werden, wenn die Fertigstellungsreihenfolge der zur SSQ 316 geleiteten WQEs der Sendereihenfolge der Nachrichten auf einer Basis pro zuverlässigem Kommunikationskanal (und pro Zielendpunkt) entspricht (d. h., unabhängig von anderen zuverlässigen Kommunikationskanälen und ihren verknüpften Zielorten). Wenn ein zur SSQ 316 geleitetes WQE fertiggestellt ist, kann es freigegeben werden, damit eine neue Arbeitsanfrage zur SSQ 316 geleitet werden kann. Wenn Fertigstellungen außerhalb der Reihenfolge in Bezug auf verschiedene Zielorte möglich sind, könnten WQEs, die vor einem neu fertiggestellten WQE zur SSQ 316 geleitet werden, nicht fertiggestellt werden. Das Speichern einer Kopie mindestens eines Abschnitts der WQEs in den richtigen Sendeverlaufsinformationsspeichern 312A, 312B, ..., 312M oder Speichern für unerledigte WQE 320A, 320B, ..., 320M ermöglicht, dass ein noch nicht fertiggestelltes, zuvor zugeleitetes WQE von der SSQ 316 freigegeben wird. Die Kopie des WQE kann dann verwendet werden, um einen zuverlässigen Dienst sicherzustellen, und ein Eintrag in der SSQ 316, der dem freigegebenen WQE entspricht, kann wieder verwendet werden. Es sollte festgehalten werden, dass, obwohl das WQE aus der SSQ 316 vor einer Fertigstellung freigegeben werden kann, die verknüpften Datenzwischenspeicher erst freigegeben werden können, wenn das WQE durch den entsprechenden zuverlässigen Kommunikationskanal (unter Verwendung der Kopie des WQE) fertiggestellt ist.
-
Ein SSQ WQE kann nach Fertigstellung eines entsprechenden Eintrags in den Kanal-Sendeverlaufsinformationsspeichern 312A, 312B, ..., 312M fertiggestellt werden. Mit anderen Worten, anders als bei der Kommunikationsvorrichtung 302, kann eine Fertigstellung eines Eintrags im Kanal-Sendeverlaufsinformationsspeicher für einen entsprechenden zuverlässigen Kommunikationskanal zur Fertigstellung des verknüpften SSQ WQE für diesen zuverlässigen Kommunikationskanal führen, ohne Beachtung von Fertigstellungen von WQEs, die Nachrichten entsprechen, die auf anderen zuverlässigen Kommunikationskanälen gesendet werden.
-
In Betrieb kann eine Anwendung mit zu sendenden Daten ein Arbeitsschlangenelement (WQE) zur gemeinsamen Sendeschlange 316 leiten. Es kann eine Vielzahl von WQEs durch die Anwendung zur SSQ 316 geleitet werden. Jedes WQE enthält einen Deskriptor, der zum Identifizieren der entsprechenden zu sendenden Daten konfiguriert ist. Zum Beispiel kann der Deskriptor eine Zeigervorrichtung zu einer Stelle im Systemspeicher und einer Anzahl von zu sendenden Daten-Bytes enthalten. Jedes WQE, das zur SSQ geleitet wird, enthält einen zuverlässigen Kommunikationskanaldesignator, der zum Identifizieren des zuverlässigen Kommunikationskanals konfiguriert ist, der zum Senden der Nachricht verwendet werden sollte, die dem WQE entspricht.
-
Die Kommunikationsvorrichtung ist dann zum Senden jeder Nachricht in der Reihenfolge konfiguriert, in der die WQEs zur gemeinsamen Sendeschlange geleitet wurden. Die Kanal-Sendeverlaufsinformationsspeicher 312A, 312B, ..., 312M sind zum Empfangen von Empfangsbestätigungen der gesendeten Nachrichten von den Zielvorrichtungen konfiguriert. Die Nachrichten können als eine Abfolge von Paketen gesendet werden. Für zuverlässige Kommunikationskanäle kann jedes Paket bestätigt werden und eine Sendung, mit der ein WQE verknüpft ist, kann fertiggestellt sein, wenn alle Pakete, die mit einer Nachricht (entsprechend dem WQE) verknüpft sind, gesendet wurden und von der Zielvorrichtung empfangsbestätigt wurden, und alle vorangehenden WQEs, die denselben zuverlässigen Kommunikationskanal anpeilen, ebenso fertiggestellt sind.
-
4A und 4B sind Ablaufdiagramme, die eine Operation eines Hostsystems und einer Kommunikationsvorrichtung (z. B., Kommunikationsvorrichtung 302) zeigen, die zum Senden von Nachricht(en) zu mehreren Zielvorrichtungen über mehrere zuverlässige Kommunikationskanäle unter Verwendung einer gemeinsamen Sendeschlange konfiguriert sind. Die in 4A und 4B dargestellten Operationen sind zum Bewahren der Sendereihenfolge von Nachrichten entsprechend WQEs in der gemeinsamen Sendeschlange für die gemeinsame Sendeschlange (und nicht für einen zuverlässigen Kommunikationskanal) konfiguriert. Mit anderen Worten, die Fertigstellungsreihenfolge entspricht der Sendereihenfolge über die zuverlässigen Kommunikationskanäle.
-
Die Operationen von 4A und 4B können von einer Anwendung ausgeführt werden, die auf einem Hostsystem (z. B., Hostsystem 102), einer Kommunikationsvorrichtung (z. B., Netzsteuerung 110), einer Begleitvorrichtung (z. B., Speichersteuerung 114) oder einer Kombination davon läuft. Das Ablaufdiagramm 400 beginnt, wenn eine Anwendung über Daten verfügt, die zu einem Zielendpunkt 402 zu senden sind. Die Anwendung kann in Operation 406 eine Arbeitsanfrage generieren. Die Arbeitsanfrage kann Steuerinformationen enthalten, die Nachrichtenart und Nachrichtenattribute, Deskriptoren, die eine Stelle im Speicher anzeigen, wo zu sendende Daten gespeichert werden, eine zu sendende Datenmenge, einen Designator, der einem zuverlässigen Kommunikationskanal entspricht, der zum Senden verwendet wird, und/oder einen Designator, der eine Zielvorrichtung angibt, die die Nachricht empfangen soll, beschreiben.
-
Die Operation 410 kann das Zuleiten eines Arbeitsschlangenelements (WQEx), das der Arbeitsanfrage entspricht, zur gemeinsamen Sendeschlange (SSQ) enthalten. Das Arbeitsschlangenelement kann einen zuverlässigen Kommunikationskanalidentifikator (RCy) enthalten. Die Nachricht, die dem WQEx entspricht, kann in Operation 412 auf dem zuverlässigen Kommunikationskanal, der dem RCy entspricht, gesendet werden. Eine Stelle im Sendeverlaufsinformationsspeicher, die mit dem zuverlässigen Kommunikationskanal RCy (z. B. RCy Xmit FIFO) verknüpft ist, kann in Operation 414 WQEx zugeteilt werden. Eine Stelle im Sendeverlaufsinformationsspeicher, die mit der SSQ (z. B., SSQ Xmit FIFO) verknüpft ist, kann in Operation 416 dem WQEx zugeteilt werden. Der Sendeverlaufsinformationsspeicher für den zuverlässigen Kommunikationskanal RCy (d. h., RCy Xmit FIFO) kann in Operation 418 mit dem Sendeverlaufsinformationsspeicher für die gemeinsame Sendeschlange (SSQ Xmit FIFO) verknüpft werden. Die Operationen von Ablaufdiagramm 400 können bei Zurück 420 enden. Die Operation 412, die zwar parallel dargestellt ist, kann vor oder parallel zu Operationen 414, 416, und 418 ausgeführt werden. Wenn die Operation 412 parallel zu Operationen 414, 416 oder 418 ausgeführt wird, kann ein relativer Zeitverlauf der Operationen begrenzt sein um sicherzustellen, dass der Sendeverlaufsinformationsspeicher RCy Xmit FIFO, der mit dem zuverlässigen Kommunikationskanal RCy verknüpft ist, vor dem Senden der Nachricht aktualisiert wurde, um eine theoretisch mögliche Wettkampfsituation zu vermeiden, in der eine Bestätigung für die gesendete Nachricht vor Beendigung der Aktualisierung des RCy Xmit FIFO Eintrags eintrifft. Die Operationen von Ablaufdiagramm 400 können wiederholt werden, sobald die Anwendung über Daten verfügt, die zu einem Zielendpunkt zu senden sind. Somit kann die SSQ von der Anwendung verwendet werden, um mehrere Nachrichten zu mehreren Zielendpunkten zu senden, wo jede Nachricht entsprechenden verknüpften Daten entspricht.
-
Das Ablaufdiagramm 450 (4B) beginnt, wenn eine Bestätigung von einer Zielvorrichtung empfangen wird 452. Die Operation 454 kann eine Aktualisierung eines entsprechenden Kommunikationskanal-Sendeverlaufsinformationsspeichers (RC Xmit FIFO) enthalten. Zum Beispiel kann eine positive Bestätigung angeben, dass ein gesendetes Paket korrekt von der Zielvorrichtung empfangen wurde. Wenn das Paket nicht korrekt empfangen oder überhaupt nicht empfangen wird, kann eine negative Bestätigung von der Zielvorrichtung empfangen werden oder eine Zeitüberschreitung kann bei der sendenden Kommunikationsvorrichtung ablaufen und die sendende Vorrichtung kann dann das Paket erneut senden.
-
Die Operation 456 kann die Bestimmung enthalten, ob der aktualisierte RC Xmit FIFO Eintrag fertiggestellt ist (d. h., die Nachricht, die mit dem aktualisierten RC Xmit FIFO Eintrag verknüpft ist, wurde erfolgreich empfangen und von der Zielvorrichtung bestätigt). Wenn der aktualisierte RC Xmit FIFO Eintrag nicht fertiggestellt ist, kann der Programmablauf in Operation 460 zurückkehren. Wenn der aktualisierte RC Xmit Eintrag fertiggestellt ist, kann der entsprechende Eintrag im gemeinsamen Sendeschlangen-Sendeverlaufsinformationsspeicher (SSQ Xmit FIFO) in Operation 464 mit PendingCompletion markiert werden.
-
Zum Beispiel kann eine Nachricht in eine Abfolge von Paketen segmentiert werden, die von der Host-Kommunikationsvorrichtung zu einer Zielvorrichtung unter Verwendung des zuverlässigen Kommunikationskanals RCy gesendet werden. Zur Sicherstellung einer ordnungsgemäßen Fertigstellung der gesendeten Pakete (d. h., alle Pakete werden vom Zielort empfangsbestätigt) kann der verknüpfte RC Sendeverlaufsinformationsspeicher (z. B., RCy Xmit FIFO) zum Verfolgen von Bestätigungen verwendet werden. Wenn alle gesendeten Pakete empfangsbestätigt sind und alle vorangehenden Nachrichten auf demselben zuverlässigen Kommunikationskanal fertiggestellt sind, ist die Nachricht fertiggestellt und der entsprechende Eintrag in der SSQ Xmit FIFO kann mit PendingCompletion markiert werden.
-
Die Operation 466 kann die Bestimmung enthalten, ob der entsprechende SSQ Xmit FIFO Eintrag in der Sendereihenfolge der nächste ist (d. h., ein erstes nicht fertiggestelltes WQE in der SSQ ist). Wenn der entsprechende SSQ Xmit FIFO Eintrag nicht der nächste in der Sendereihenfolge ist, kann der Programmablauf in Operation 460 zurückkehren. Wenn der entsprechende SSQ Xmit FIFO Eintrag der nächste in der Sendereihenfolge ist, kann der entsprechende SSQ Xmit FIFO Eintrag in Operation 468 fertiggestellt werden.
-
Die Operation 470 kann die Bestimmung enthalten, ob in Operation 470 ein nächster SSQ Xmit FIFO Eintrag mit PendingCompletion markiert wird. Wenn der nächste SSQ Xmit FIFO Eintrag mit PendingCompletion markiert ist, kann der Programmablauf mit Operation 468 fortfahren und der nächste SSQ Xmit FIFO Eintrag kann fertiggestellt werden. Wenn der nächste SSQ Xmit FIFO Eintrag nicht mit PendingCompletion markiert ist, können gemeinsame Sendeschlangeneingaben, die den fertiggestellten SSQ Xmit FIFO Eingaben entsprechen, in Operation 472 freigegeben werden (und dann kann die Fertigstellung der Anwendung, z. B. unter Verwendung von Mechanismen, die von einer Hostschnittstelle definiert sind, mitgeteilt werden). Der Programmablauf kann dann zu Operation 460 zurückkehren.
-
Die Operationen von Ablaufdiagramm 450 sind so konfiguriert, dass sie sicherstellen, dass gesendete Nachrichten in der Reihenfolge fertiggestellt werden, in der ihre verknüpften Arbeitsschlangenelemente zur gemeinsamen Sendeschlange geleitet (und somit gesendet) wurden. Jedes Arbeitsschlangenelement ist zum Bestimmen des zuverlässigen Kommunikationskanals konfiguriert, der zum Senden der verknüpften Nachricht verwendet wird. Somit werden Fertigstellungen der anfragenden Anwendung in der Reihenfolge kommuniziert, in der die WQEs zur SSQ geleitet wurden, unabhängig von der Reihenfolge der Fertigstellung von WQEs zwischen den zuverlässigen Kommunikationskanälen.
-
5A und 5B sind Ablaufdiagramme 500, 550, die Operationen eines Hostsystems und einer Kommunikationsvorrichtung (z. B. Kommunikationsvorrichtung 304) zeigen, die zum Senden von Nachrichten zu mehreren Zielvorrichtungen über mehrere zuverlässige Kommunikationskanäle konfiguriert sind. Die in 5A und 5B dargestellten Operationen sind zum Bewahren der Sendereihenfolge pro zuverlässigem Kommunikationskanal für Nachrichten konfiguriert, die WQEs entsprechen, die zur gemeinsamen Sendeschlange geleitet wurden. Mit anderen Worten, Fertigstellungen werden der Anwendung für jeden zuverlässigen Kommunikationskanal in der Reihenfolge kommuniziert, in der die WQEs zur gemeinsamen Sendeschlange für diesen zuverlässigen Kommunikationskanal geleitet wurden, unabhängig von Fertigstellungen für Nachrichten, die über andere zuverlässige Kommunikationskanäle gesendet wurden.
-
Die Operationen von 5A und 5B können von einer Anwendung ausgeführt werden, die auf einem Hostsystem (z. B. Hostsystem 102), einer Kommunikationsvorrichtung (z. B. Netzsteuerung 110), einer Begleitvorrichtung (z. B. Speichersteuerung 114) oder einer Kombination davon läuft. Das Ablaufdiagramm 500 beginnt, wenn eine Anwendung Daten hat, die zu einem Zielendpunkt 502 zu senden sind. Die Anwendung kann in Operation 506 eine Arbeitsanfrage generieren. Die Arbeitsanfrage kann Steuerinformationen enthalten, die Nachrichtenart und Nachrichtenattribute, Deskriptoren, die eine Stelle im Speicher angeben, wo die zu sendenden Daten gespeichert werden sollen, und eine zu sendende Datenmenge, einen Designator, der einem zu verwendenden zuverlässigen Kommunikationskanal zum Senden entspricht, und/oder einen Designator, der eine Zielvorrichtung angibt, die die Nachricht empfangen soll, beschreiben.
-
Die Operation 510 kann das Zuleiten eines Arbeitsschlangenelements (WQEx), das der Arbeitsanfrage entspricht, zu einer gemeinsamen Sendeschlange (SSQ) enthalten. Das WQEx kann einen zuverlässigen Kommunikationskanalidentifikator (RCy) enthalten. Die Nachricht, die dem WQEx entspricht, kann in Operation 512 über den zuverlässigen Kommunikationskanal, der dem RCy entspricht, gesendet werden. Eine Stelle im Sendeverlaufsinformationsspeicher, die mit dem zuverlässigen Kommunikationskanal RCy (z. B., RCyXmit FIFO) verknüpft ist, kann dem WQEx in Operation 514 zugeteilt werden. Die Operation 516 enthält das Kopieren des mindestens einen Abschnitts des Arbeitsschlangenelements WQEx aus der SSQ in den verknüpften Sendeverlaufsinformationsspeicher RCy Xmit FIFO oder zu einer Struktur (z. B., Speicher für unerledigte WQE (RCy SPEICHER)), die mit dem Sendeverlaufsinformationsspeicher RCyXmit FIFO verknüpft ist. Die Kopie des Arbeitsschlangenelements kann zur Fertigstellung und erneuten Sendung eines Pakets oder mehrerer Pakete der Nachricht verwendet werden (z. B. wenn eine negative Bestätigung von der Zielvorrichtung empfangen wird oder keine Bestätigung empfangen wird und eine Zeitüberschreitung bei der Kommunikationsvorrichtung eintritt). Die Operationen des Ablaufdiagramms 500 können bei Zurück 520 enden. Obwohl die Operation 512 parallel dargestellt ist, kann sie parallel zu oder vor den Operationen 514 und 516 durchgeführt werden (mit einer ähnlichen Einschränkung wie in Bezug auf 4A beschrieben).
-
Das Ablaufdiagramm 550 (5B) beginnt, wenn eine Bestätigung von einer Zielvorrichtung empfangen wird 552. Die Operation 554 kann eine Aktualisierung eines entsprechenden Kommunikationskanal-Sendeverlaufsinformationsspeichers (RC Xmit FIFO) enthalten. Zum Beispiel kann eine positive Bestätigung anzeigen, dass ein gesendetes Paket von der Zielvorrichtung korrekt empfangen wurde. Wenn das Paket nicht korrekt empfangen wird, kann eine negative Bestätigung von der Zielvorrichtung gesendet werden oder eine Zeitüberschreitung bei der sendenden Kommunikationsvorrichtung ablaufen und die sendende Vorrichtung kann das Paket erneut senden.
-
Die Operation 556 kann die Bestimmung enthalten, ob der aktualisierte RC Xmit FIFO Eintrag fertiggestellt ist. Wenn der aktualisierte RC Xmit FIFO Eintrag nicht fertiggestellt ist, kann der Programmablauf in Operation 560 zurückkehren. Wenn der aktualisierte RC Xmit Eintrag fertiggestellt ist, kann der Arbeitsschlangeneintrag der gemeinsamen Sendeschlange entsprechend dem RC Xmit Eintrag in Operation 562 fertiggestellt werden. Die Fertigstellung kann der Anwendung in Operation 564 kommuniziert werden. Der Arbeitsschlangeneintrag der gemeinsamen Sendeschlange kann ausreichende Informationen enthalten, um eine Identifizierung der Nachricht und des verknüpften Anwendungszwischenspeichers zu ermöglichen, so dass er nach Fertigstellung des Arbeitsschlangeneintrags der gemeinsamen Sendeschlange freigegeben werden kann. Der entsprechende Arbeitsschlangeneintrag in der gemeinsamen Sendeschlange kann in Operation 566 freigegeben werden. Der freigegebene Arbeitsschlangeneintrag kann dann zum Zuleiten einer anderen Arbeitsanfrage freigegeben werden. Der Programmablauf kann dann in Operation 520 zurückkehren.
-
Die Operationen von Ablaufdiagramm 550 sind so konfiguriert, dass sichergestellt ist, das gesendete Nachrichten in der Reihenfolge fertiggestellt werden, in der ihre verknüpften Arbeitsschlangenelemente zur gemeinsamen Sendeschlange für jeden zuverlässigen Kommunikationskanal geleitet wurden, unabhängig von der Fertigstellung von Nachrichten, die auf anderen zuverlässigen Kommunikationskanälen gesendet wurden. In dieser Ausführungsform können vorteilhaft relativ schnellere zuverlässige Kommunikationskanäle (und Zielvorrichtungen) ihre Sendungen fertigstellen, ohne durch langsamere zuverlässige Kommunikationskanäle (und Zielvorrichtungen) beschränkt zu sein, mit welchen sie die gemeinsame Sendeschlange teilen.
-
6 und 7 sind zwei Beispiele, die Eingaben in die gemeinsame Sendeschlange, Eingaben in die Sendeverlaufsinformationsspeicher für die gemeinsame Sendeschlange und mehrere zuverlässige Kommunikationskanäle zeigen. Das Beispiel in 6 entspricht der Ausführungsform, in der die Fertigstellungsreihenfolge der Zuleitungsreihenfolge des Arbeitsschlangenelements in die gemeinsame Sendeschlange entspricht. Das Beispiel in 7 entspricht der Ausführungsform in der die Fertigstellungsreihenfolge der Zuleitungsreihenfolge des Arbeitsschlangenelements zur gemeinsamen Sendeschlange für einen entsprechenden zuverlässigen Kommunikationskanal entspricht.
-
Unter Bezugnahme nun auf 6 werden Arbeitsschlangenelemente (WQEx, wobei x = 1, 2, ..., 6) zu einer gemeinsamen Sendeschlange 602 in der Reihenfolge zuerst WQE1, dann WQE2, ..., dann WQE6 geleitet. Die Zuleitungsreihenfolge entspricht der Sendereihenfolge von Nachrichten, die mit den WQEs verknüpft sind. In diesem Beispiel ist jedes Arbeitsschlangenelement mit einem von drei zuverlässigen Kommunikationskanälen (RC1, RC2, RC3) verknüpft, z. B., WQE1 – RC3, WQE2 – RC2, WQE3 – RC1, usw. Nach dem Senden der Nachricht, die mit jedem WQE verknüpft ist, wird jedem WQE ein Eintrag im SSQ XMIT FIFO 604 (dem SSQ Sendeverlaufsinformationsspeicher) und ein Eintrag im Kanal-Sendeverlaufsinformationsspeicher (RCy (y = 1, 2 oder 3) XMIT FIFO) des verknüpften zuverlässigen Kommunikationskanals zugeteilt. WQE1 wurde der Eintrag E1 im SSQ Xmit FIFO 604 und der Eintrag E1 im RC3 Xmit FIFO 610 zugeteilt. WQE2 wurde der Eintrag E2 im SSQ Xmit FIFO 604 und der Eintrag E1 im RC2 Xmit FIFO 608 zugeteilt. WQE3 wurde der Eintrag E3 im SSQ Xmit FIFO 604 und der Eintrag E1 im RC1 Xmit FIFO 606 zugeteilt und so weiter. In diesem Beispiel können Eingaben in den Kommunikationskanal-Sendeverlaufsinformationsspeichern RCy Xmit FIFOs 606, 608, 610 aktualisiert werden, sobald Nachrichten fertiggestellt sind. Sobald RCyXmit FIFOs 606, 608, 610 fertiggestellt sind, können entsprechende Eingaben im SSQ Xmit FIFO 604 mit PendingCompletion, wie hierin beschrieben, markiert werden. In diesem Beispiel werden alle WQEs in der Reihenfolge fertiggestellt, in der sie zur SSQ 602 geleitet wurden und in der Reihenfolge, in der sie von der SSQ 602 gesendet wurden. WQE1 wird als erstes fertiggestellt, dann WQE2, WQE3, usw. Auf diese Weise werden Fertigstellungen in der Reihenfolge kommuniziert, in der WQEs zur gemeinsamen Sendeschlange 602 für alle der zuverlässigen Kommunikationskanäle geleitet wurden.
-
Unter Bezugnahme auf 7 werden Arbeitsschlangenelemente (WQEx) zur gemeinsamen Sendeschlange 702 in der Reihenfolge WQE1, WQE2, ..., WQE6 geleitet. Jedes Arbeitsschlangenelement wird mit einem von drei zuverlässigen Kommunikationskanälen RC1, RC2, RC3 verknüpft. Die Sendereihenfolge von Nachrichten, die WQEs in SSQ 702 entsprechen, ist durch die „Sendereihenfolge” angegeben. WQEs werden in der Reihenfolge gesendet, in der sie zur SSQ geleitet wurden. WQE1 wird als erstes gesendet, dann WQE2, usw. Jedes WQEx wird mit einem bestimmten zuverlässigen Kommunikationskanal RC1, RC2 oder RC3 (z. B. WQE1 – RC3, WQE2 – RC2, WQE3 – RC1, usw.) verknüpft. Nach dem Senden wird jedes WQEx einem Eintrag im RCy Xmit FIFO seines verknüpften zuverlässigen Kommunikationskanals zugeteilt und mindestens ein Abschnitts des WQE wird entweder in den zugeteilten RCyXMIT FIFO Eintrag oder in die neue Struktur kopiert, auf die der RCyXmit FIFO Eintrag verweist (d. h., Speicher für unerledigte WQE 716, 718, 720). In diesem Beispiel wurde WQE1 dem Eintrag E1 in RC3 Xmit FIFO 710 zugeteilt, WQE2 wurde dem E1 in RC2 Xmit FIFO 708 zugeteilt, WQE3 wurde dem Eintrag E1 in RC1 Xmit FIFO 706 zugeteilt und so weiter. Die Strichlinien in 7 entsprechen dem Kopieren mindestens eines Abschnitts jedes WQE aus der SSQ 702 in den entsprechenden Speicher für unerledigte WQE 716, 718, 720.
-
WQEs können in einer Reihenfolge fertiggestellt werden, die sich von der WQE (d. h., Nachrichten-)Sendereihenfolge unterscheidet. Nachrichten, die auf RC1 (WQE3 und WQE6) gesendet werden, werden als erste fertiggestellt, dann werden Nachrichten, die auf RC2 (WQE2 und WQE5) gesendet werden, fertiggestellt und schließlich werden Nachrichten, die auf RC1 (WQE1 und WQE4) gesendet werden, fertiggestellt. Alle WQEs wurden in der Reihenfolge für ihren verknüpften zuverlässigen Kommunikationskanal fertiggestellt. Die Fertigstellungsreihenfolge im Sinne des Arbeitsschlangenelements in der SSQ 702 ist: WQE3, WQE6, WQE2, WQE5, WQE1 und WQE4. Bei Bedarf kann eine erneute Sendung den mindestens einen Abschnitt jedes Arbeitsschlangenelements verwenden, der in den Speicher für unerledigte WQE 716, 718, 720 wie hierin beschrieben kopiert wurde. Fertigstellungen werden der anfragenden Anwendung gemäß der WQE Zuleitungsreihenfolge zur gemeinsamen Sendeschlange 702 für jeden zuverlässigen Kommunikationskanal kommuniziert.
-
Es wurden ein Verfahren, eine Vorrichtung und ein System, die so konfiguriert sind, dass sie mehrere zuverlässige Kommunikationskanäle unter Verwendung einer gemeinsamen Sendeschlange unterstützen, beschrieben. Die gemeinsame Sendeschlange ist so konfiguriert, dass sie ermöglicht, dass eine Anwendung mit mehreren Zielorten über mehrere zuverlässige Kommunikationskanäle kommuniziert. Eine Kommunikationsvorrichtung wie eine Netzsteuerung ist zum Verwalten der Kommunikation über die mehreren zuverlässigen Kommunikationskanäle konfiguriert. Das Verfahren, die Vorrichtung und das System sind so konfiguriert, dass sie ermöglichen, dass eine erste Vielzahl von unerledigten Nachrichten mit der gemeinsamen Sendeschlange zu einem Zeitpunkt verknüpft wird. Das Verfahren, die Vorrichtung und das System sind so konfiguriert, dass sie ermöglichen, dass eine zweite Vielzahl von unerledigten Nachrichten mit einem zuverlässigen Kommunikationskanal verknüpft wird. Dies ist anders als bei herkömmlichen Systemen, die eine Sendeschlange und einen Kommunikationskanal auf eine unerledigte Nachricht begrenzen. In einer Ausführungsform, entspricht eine Fertigstellungsreihenfolge von Arbeitsschlangenelementen, die zur gemeinsamen Sendeschlange geleitet wurden, der Sendereihenfolge der Nachrichten, die den Arbeitsschlangenelementen für die gemeinsame Sendeschlange entsprechen. In einer anderen Ausführungsform, entspricht die Fertigstellungsreihenfolge von Arbeitsschlangenelementen, die zur gemeinsamen Sendeschlange geleitet wurden, der Sendereihenfolge der Nachrichten auf einer Basis pro zuverlässigem Kommunikationskanal (d. h., unabhängig von anderen zuverlässigen Kommunikationskanälen). In beiden Ausführungsformen entspricht die Sendereihenfolge der Zuleitungsreihenfolge von Arbeitsschlangenelementen zur gemeinsamen Sendeschlange.
-
Während zuvor beispielhafte Systemarchitekturen und Methodologien beschrieben wurden, sind Modifizierungen der vorliegenden Offenbarung möglich. Zum Beispiel kann ein Betriebssystem 105 im Hostsystemspeicher Systemressourcen und Steueraufgaben verwalten, die z. B. auf dem Hostsystem 102 laufen. Zum Beispiel kann das OS 105 unter Verwendung von Microsoft Windows, HP-UX, Linux oder UNIX implementiert werden, obwohl auch andere Betriebssysteme verwendet werden können. In einer Ausführungsform kann das in 1 dargestellte OS 105 durch einen virtuellen Maschinenmanager ersetzt werden, der eine Abstraktionsschicht für eine darunter liegende Hardware für verschiedene Betriebssysteme bereitstellen kann, die auf einer oder mehreren Verarbeitungseinheit(en) laufen.
-
Das Betriebssystem 105 kann einen oder mehrere Protokollstapel implementieren. Ein Protokollstapel kann ein oder mehrere Programm(e) zur Paketverarbeitung ausführen. Ein Beispiel für einen Protokollstapel ist ein TCP/IP (Transport Control Protocol/Internet Protocol) Protokollstapel, der ein oder mehrere Programm(e) zum Handhaben (z. B. Verarbeiten oder Generieren) von Paketen umfasst, die über ein Netz gesendet und/oder empfangen werden. Ein Protokollstapel kann alternativ auf einem zweckbestimmten Teilsystem vorhanden sein, wie zum Beispiel einer TCP Offload-Maschine und/oder Netzsteuerung 110.
-
Andere Modifizierungen sind möglich. Zum Beispiel kann ein Systemspeicher, z. B. ein Systemspeicher 106 und/oder Speicher, der mit der Netzsteuerung, z. B. Netzsteuerung 110, verknüpft ist, eine oder mehrere der folgenden Arten von Speicher umfassen: Halbleiter-Firmware-Speicher, programmierbarer Speicher, nicht flüchtiger Speicher, Nur-Lese-Speicher, elektrisch programmierbarer Speicher, Direktzugriffsspeicher, Flash-Speicher, Magnetplattenspeicher und/oder optischer Plattenspeicher. Der Systemspeicher 106 und/oder Speicher, der mit der Netzsteuerung 110 verknüpft ist, kann zusätzlich und/oder alternativ andere und/oder später entwickelte Arten von computerlesbarem Speicher umfassen.
-
Ausführungsformen der hierin beschriebenen Verfahren können in einem System implementiert werden, das ein Speichermedium oder mehrere Speichermedien enthält, auf welchen einzeln oder in Kombination Anweisungen gespeichert sind, die, wenn sie von einem oder mehreren Prozessor(en) ausgeführt werden, die Verfahren durchführen. Hier kann der Prozessor zum Beispiel eine Verarbeitungseinheit und/oder eine programmierbare Schaltung in der Netzsteuerung enthalten. Somit ist beabsichtigt, dass die Operationen gemäß der hierin beschriebenen Verfahren über mehrere physische Vorrichtungen verteilt sein können, wie Verarbeitungsstrukturen an mehreren unterschiedlichen physischen Stellen. Das Speichermedium kann jede Art von materiellem Medium enthalten, zum Beispiel jede Art von Platte, einschließlich Disketten, optischen Speicherplatten, Kompaktdisk-Nur-Lesespeichern (CD-ROMs), wiederbeschreibbarer Kompaktdisk (CD-RWs) und magneto-optischer Datenträger, Halbleitervorrichtung, wie Nur-Lese-Speicher (ROMs), Direktzugriffsspeicher (RAMs) wie dynamischer und statischer RAMs, löschbarer programmierbarer Nur-Lese-Speicher (EPROMs), elektrisch löschbarer programmierbarer Nur-Lese-Speicher (EEPROMs), Flash-Speicher, magnetischer oder optischer Karten oder jeder Art von Medien, die für eine Speicherung elektronischer Anweisungen geeignet ist.
-
Das hierin beschriebene Ethernet-Kommunikationsprotokoll kann imstande sein, eine Kommunikation unter Verwendung eines TCP/IP (Transmission Control Protocol/Internet Protocol) zu ermöglichen. Das Ethernet-Protokoll kann dem Ethernet-Standard, der vom Institute of Electrical and Electronics Engineers (IEEE) mit dem Titel „IEEE 802.3 Standard” im März 2002 veröffentlicht wurde, und/oder späteren Versionen dieses Standards entsprechen oder mit diesem (diesen) kompatibel sein.
-
Das hierin beschriebene InfiniBandTM Kommunikationsprotokoll kann imstande sein, eine Errichtung und Verwendung einer zuverlässigen Kommunikation mit einer Nachrichtenfertigstellung in Reihenfolge zu ermöglichen. Das InfiniBandTMProtokoll kann der InfiniBand Spezifikation, die von der InfiniBand Trade Association (IBTA) mit dem Titel „InfiniBand Architecture Specification, Volume 1, Release 1.2.1” im Juni 2001 veröffentlicht wurde, und/oder späteren Versionen dieser Spezifikation entsprechen oder mit dieser (diesen) kompatibel sein.
-
Das hierin beschriebene iWARP Kommunikationsprotokoll kann imstande sein, eine Errichtung und Verwendung einer zuverlässigen Kommunikation mit einer Nachrichtenfertigstellung in Reihenfolge zu ermöglichen. Das iWARP Protokoll kann mit dem iWARP Standard, der vom RDMA Consortium entwickelt und gewartet wird und von der Internet Engineering Task Force(IETF) mit dem Titel „RDMA over Transmission Control Protocol (TCP) standard” 2007 veröffentlicht wurde, und/oder späteren Versionen dieses Standards entsprechen oder mit diesem (diesen) kompatibel sein.
-
„Schaltung”, wie in einer beliebigen Ausführungsform hierin verwendet, kann zum Beispiel, einzeln oder in jeder beliebigen Kombination, eine festverdrahtete Schaltung, programmierbare Schaltung, Zustandsmaschinenschaltung und/oder Firmware umfassen, die Anweisungen speichert, die von einer programmierbaren Schaltung ausgeführt werden.
-
In einem Aspekt wird ein Verfahren bereitgestellt. Das Verfahren enthält das Zuleiten mehrerer Arbeitsschlangenelemente zu einer gemeinsamen Sendeschlange in einer Zuleitungsreihenfolge, wobei jedes Arbeitsschlangenelement einen Deskriptor, der zum Identifizieren entsprechender zu sendender Daten konfiguriert ist, und einen Kommunikationskanaldesignator, der zum Identifizieren eines Kommunikationskanals konfiguriert ist, der zum Senden der Daten verwendet wird, umfasst; das Senden einer Nachricht, die jedem Arbeitsschlangenelement entspricht, unter Verwendung des identifizierten Kommunikationskanals, wobei die Nachricht die entsprechenden zu sendenden Daten umfasst, wobei die Nachrichten in einer Sendereihenfolge entsprechend der Zuleitungsreihenfolge der Arbeitsschlangenelemente gesendet werden; und das Fertigstellen der Arbeitsschlangenelemente in der gemeinsamen Sendeschlange in einer Fertigstellungsreihenfolge, wobei sich die Fertigstellungsreihenfolge auf die Zuleitungsreihenfolge bezieht.
-
In einem anderen Aspekt wird ein Kommunikationssystem bereitgestellt. Das Kommunikationssystem enthält eine gemeinsame Sendeschlange, die zum Speichern mehrerer Arbeitsschlangenelemente konfiguriert ist, wobei die Arbeitsschlangenelemente in einer Zuleitungsreihenfolge zur gemeinsamen Sendeschlange geleitet werden, wobei jedes Arbeitsschlangenelement einen Deskriptor, der zum Identifizieren entsprechender zu sendender Daten konfiguriert ist, und einen Kommunikationskanaldesignator, der zum Identifizieren eines Kommunikationskanals konfiguriert ist, der zum Senden der Daten verwendet wird, umfasst; eine Kommunikationsvorrichtung, die zum Senden einer Nachricht, die jedem Arbeitsschlangenelement entspricht, unter Verwendung des identifizierten Kommunikationskanals konfiguriert ist, wobei die Nachricht die entsprechenden zu sendenden Daten umfasst, wobei die Nachrichten in einer Sendereihenfolge entsprechend der Zuleitungsreihenfolge der Arbeitsschlangenelemente gesendet werden; und die Kommunikationsvorrichtung zum Fertigstellen der Arbeitsschlangenelemente in der gemeinsamen Sendeschlange in einer Fertigstellungsreihenfolge konfiguriert ist, wobei sich die Fertigstellungsreihenfolge auf die Zuleitungsreihenfolge bezieht.
-
In einem anderen Aspekt wird ein System bereitgestellt. Das System enthält ein Speichermedium oder mehrere Speichermedien, auf welchen einzeln oder in Kombination, Anweisungen gespeichert sind, die, wenn sie von einem oder mehreren Prozessor(en) ausgeführt werden, zu folgendem führen: Zuleiten mehrerer Arbeitsschlangenelemente zu einer gemeinsamen Sendeschlange in einer Zuleitungsreihenfolge, wobei jedes Arbeitsschlangenelement einen Deskriptor, der zum Identifizieren entsprechender zu sendender Daten konfiguriert ist, und einen Kommunikationskanaldesignator, der zum Identifizieren eines Kommunikationskanals konfiguriert ist, der zum Senden der Daten verwendet wird, umfasst; Senden einer Nachricht, die jedem Arbeitsschlangenelement entspricht, unter Verwendung des identifizierten Kommunikationskanals, wobei die Nachricht die entsprechenden zu sendenden Daten umfasst, wobei die Nachrichten in einer Sendereihenfolge entsprechend der Zuleitungsreihenfolge der Arbeitsschlangenelemente gesendet werden; und Fertigstellen der Arbeitsschlangenelemente in der gemeinsamen Sendeschlange in einer Fertigstellungsreihenfolge, wobei sich die Fertigstellungsreihenfolge auf die Zuleitungsreihenfolge bezieht.
-
Die Begriffe und Ausdrücke, die hierin verwendet werden, werden zur Beschreibung und nicht zur Einschränkung verwendet und bei Verwendung solcher Begriffe und Ausdrücke ist nicht beabsichtigt, Äquivalente der dargestellten und beschriebenen Merkmale (oder Teilen davon) auszuschließen, und es wird anerkannt, dass verschiedene Modifizierungen im Umfang der Ansprüche möglich sind. Daher sollen die Ansprüche alle derartigen Äquivalente abdecken.
-
Es wurden hierin verschiedene Merkmale, Aspekte und Ausführungsformen beschrieben. die Merkmale, Aspekte und Ausführungsformen sind einer Kombination miteinander wie auch einer Variation und Modifizierung zugänglich, wie für einen Fachmann offensichtlich ist. Die vorliegende Offenbarung sollte daher so verstanden werden, dass sie solche Kombinationen, Variationen und Modifizierungen beinhaltet.