-
GEBIET
-
Die Ausführungsformen der Erfindung betreffen allgemein ein Kommunikationsnetz, und insbesondere die Erkennung von verlorenen Datenpaketen und deren erneutes Senden über das Kommunikationsnetz.
-
HINTERGRUND
-
Herkömmliche paketbasierte Netzwerke wurden dafür ausgelegt, eine zuverlässige Datenübertragung über unzuverlässige Kommunikationsnetze zu unterstützen. Auch wenn derartige Netze eine hohe Leistung zu annehmbaren Kosten erzielen können, wird sowohl von Systementwicklern als auch Endbenutzern davon ausgegangen, dass gelegentlich einige Pakete verlorengehen können. Es existieren zwar einige Erholungsmechanismen für das erneute Senden der verlorenen Pakete, jedoch treten weiterhin langdauernde Verzögerungen auf, und eine Leistungsfähigkeit einer Anwendung wird beeinträchtigt.
-
In einigen Fällen können die verlorenen Pakete Verzögerungen in der Größenordnung von 250 - 300 ms bewirken. Für latenzkritische Operationen, wie beispielsweise eine Blockzugriffsspeicherung (Block Access Storage), wurden vielerlei Lösungen entwickelt. Jedoch wurden derartige Lösungen aufgrund ihrer signifikanten Nachteile nicht verbreitet implementiert. Beispielsweise wurden spezialisierte Netzwerke entwickelt, bei denen selten ein Verlust von Datenpaketen auftritt, wie beispielsweise DCE (Data Center Ethernet), InfiniBand, und weitere. Jedoch bestehen bei derartigen Implementierungen derzeit Größeneinschränkungen, es sind spezielle Switches erforderlich, und ansonsten ist deren Implementierung teuer.
-
Demzufolge sind derartige spezialisierte Netzwerke nicht verbreitet eingesetzt worden.
-
INHALT
-
Die Ausführungsformen der Erfindung betreffen allgemein Systeme und Verfahren für ein Reduzieren einer Paketlatenz, mit denen bekannte Kommunikationsnetze substanziell verbessert werden.
-
Merkmale und Vorteile der Ausführungsformen sind in der folgenden Beschreibung dargelegt, oder sie gehen aus der Beschreibung klar hervor, oder können durch praktische Umsetzung der Erfindung erfahren werden.
-
Als Beispiel werden Systeme und Verfahren für eine Verringerung einer Kommunikationslatenz bereitgestellt. Es wird eine Kommunikationssitzung mit einem entfernten Gerät gestartet. Eines oder mehrere Nachrichtenpakete werden zu dem entfernten Gerät gesendet. Anschließend wird bestimmt, ob geplant ist, ein weiteres Nachrichtenpaket an das entfernte Gerät zu senden. Falls nicht geplant ist, ein weiteres Nachrichtenpaket an das entfernte Gerät zu senden, werden zwei Verlusterkennungspakete an das letzte Nachrichtenpaket angehängt. Das letzte Nachrichtenpaket und die Verlusterkennungspakete werden an das entfernte Gerät gesendet. Weiter wird basierend auf einer Bestätigungsnachricht (Acknowledge) bestimmt, ob das letzte Nachrichtenpaket durch das entfernte Gerät erfolgreich empfangen wurde. Falls die Nachrichtenpakete nicht erfolgreich übertragen wurden, wird eine erneutes Senden der fehlenden Nachrichtenpakete ausgeführt.
-
Figurenliste
-
Weitere Ausführungsformen, Details, Vorteile und Modifikationen gehen aus der folgenden detaillierten Beschreibung der bevorzugten Ausführungsformen in Verbindung mit den anliegenden Zeichnungen klar hervor.
-
In den Zeichnungen sind:
- 1 ein Übersichtsdiagramm eines Netzwerksystems, das Netzwerkelemente beinhaltet, die Ausführungsformen der Erfindung implementieren und/oder mit Ausführungsformen der Erfindung interagieren;
- 2 ein Blockdiagramm eines Computerservers/Systems gemäß einem Ausführungsbeispiel der Erfindung;
- 3 ein beispielhafter Paketstrom gemäß einem Ausführungsbeispiel der Erfindung;
- 4 ein Ablaufdiagramm für das Verringern einer Kommunikationslatenz gemäß einem Ausführungsbeispiel der Erfindung;
- 5 ein Paketsequenzdiagramm, das eine beispielhafte Sequenz von Anfrage- und Antwortpaketen enthält, die zwischen dem Client und dem Server ausgetauscht werden, gemäß einem Ausführungsbeispiel;
- 6 ein Paketsequenzdiagramm, das eine beispielhafte Sequenz von Nachrichtenpaketen enthält, die zwischen dem Client und dem Server ausgetauscht werden, gemäß einem Ausführungsbeispiel.
-
DETAILLIERTE BESCHREIBUNG
-
Systeme und Verfahren für ein Reduzieren einer Kommunikationslatenz werden bereitgestellt. Bei Ausführungsformen der Erfindung werden eines oder mehrere Verlusterkennungspakete an Nachrichtenpakete (z. B. eine Anfrage oder eine Antwort einer Sicherungsschicht (Session Layer)) angehängt, falls in einer Kommunikationssitzung nicht geplant ist, weitere Nachrichtenpakete zu senden. Die Verlusterkennungspakete werden verwendet, um den Verlust von zeitkritischen Paketen oder anderen wichtigen Paketen rasch zu identifizieren. Falls irgendeines der Verlusterkennungspakete tatsächlich auf dem Kommunikationskanal verlorengeht, hat dies einen geringen oder keinen Einfluss auf die Anwendung, da es sich bei den Verlusterkennungspaketen typischerweise um Attrappenpakete (Decoy-Pakete) handelt, die keine latenzkritischen Anwendungsdaten transportieren. Falls jedoch im Netzwerk im Verlauf der Kommunikationssitzung das letzte oder das vorletzte Datenpaket verloren geht, wird durch den Empfang der Verlusterkennungspakete eine Prozedur zum erneuten Senden des betreffenden im Kommunikationsnetz verwendeten Kommunikationsprotokolls ausgelöst.
-
Bei den verschiedenen Ausführungsbeispielen wird eine Kommunikationssitzung mit einem entfernten Gerät gestartet. Eines oder mehrere Nachrichtenpakete werden zu dem entfernten Gerät gesendet. Anschließend wird bestimmt, ob geplant ist, irgendein weiteres Nachrichtenpaket an das entfernte Gerät zu senden. Falls nicht geplant ist, ein weiteres Nachrichtenpaket an das entfernte Gerät zu senden, wird ein Verlusterkennungspaket an ein letztes Nachrichtenpaket angehängt. Das letzte Nachrichtenpaket und das Verlusterkennungspaket werden zum entfernten Gerät gesendet. Weiter wird basierend auf einem Empfang einer Bestätigungsnachricht bestimmt, ob das letzte Nachrichtenpaket durch das entfernte Gerät erfolgreich empfangen wurde. Falls das letzte Erkennungspaket nicht erfolgreich empfangen wurde, wird ein erneutes Senden des letzten Nachrichtenpaketes ausgeführt. Demgemäß können bei den Ausführungsbeispielen verlorene Nachrichtenpakete leichter erkannt werden, und der Durchsatz des Kommunikationsnetzes kann dadurch verbessert werden.
-
Die Ausführungsformen der Erfindung stellen Systeme und Verfahren bereit, mit denen eine Kommunikationslatenz verringert wird, wobei dabei bestehende und verbreitet implementierte Kommunikationsnetze verwendet werden. Es wurde auch eine weitere Methode vorgeschlagen, die als TLP (Tale Loss Probe) bezeichnet wird. Bei TLP wird vom Sender ein Timeout (Zeitspanne bis Zeitüberschreitung) bis zu einer vom Empfänger kommenden Bestätigung festgelegt. Falls vom Sender innerhalb eines vorbestimmten Zeitraums keine Bestätigung empfangen wird, führt der Sender ein erneutes Senden des ersten unbestätigten Paketes durch. TLP bietet den Vorteil, dass lediglich der Sender irgendwelche Änderungen vornimmt, hat jedoch den Nachteil, dass der Sender seinen Zeitgeber nicht auf eine kurze Zeitdauer einstellen kann. Dieser muss auf mindestens das Doppelte der Zeitdauer der SRTT (Smoothed Round Trip Time) der Verbindung eingestellt sein, um verzögerte Bestätigungen zu berücksichtigen. Außerdem ist das Einstellen und Testen von kurzen Zeitfristen aufweisenden Zeitgebern teuer. Und schließlich ist TLP empfindlich gegenüber dem mit einer verzögerten Bestätigung befassten Algorithmus, der vom Empfänger verwendet wird. Im Gegensatz dazu erfolgt bei den Ausführungsbeispielen der Erfindung eine Erholung von einem Paketverlust bedeutend rascher, ohne den zusätzlichen Aufwand eines Einstellens und Löschens von Zeitgebern und ohne irgendwelche Anforderungen im Hinblick auf den eine verzögerte Bestätigung betreffenden Algorithmus des Empfängers.
-
In den verschiedenen Ausführungsbeispielen wird der Begriff „Nachrichtenpaket“ verwendet, und dieser kann von Fachleuten so verstanden werden, dass er Anfragepakete, Antwortpakete und beliebige Datenpakete beinhaltet, die zwischen Kommunikationsanlagen in einem Netzwerk ausgetauscht werden. Beispielsweise können Nachrichtenpakete PDUs (Protokolldateneinheiten) oder Sitzungsschicht-PDUs beinhalten. In aus Schichten aufgebauten Systemen können Nachrichtenpakete Information beinhalten, die zwischen Entitäten einer gegebenen Schicht über den durch die nächstniedrigere Schicht bereitgestellten Dienst ausgetauscht wird, um deren gemeinsame Operation zu koordinieren. Bei einem weiteren Beispiel können Nachrichtenpakete sowohl Nachrichten der Sitzungsschicht als auch TCP-Segmente bezeichnen (TCP = Transmission Control Protocol = Übertragungssteuerungsprotokoll).
-
1 ist ein Übersichtsdiagramm eines Netzwerksystems 100, das Netzwerkelemente beinhaltet, die Ausführungsbeispiele der Erfindung implementieren und/oder mit Ausführungsbeispielen der Erfindung interagieren.
-
Das Netzwerksystem 100 beinhaltet: ein Client-Gerät 102, das konfiguriert ist, Paketdaten mit einem Server 116 unter Verwendung eines oder mehrerer Kommunikationsprotokolle auszutauschen, ein Netzwerk 114 und ein Dienstanbieternetzwerk 122. Im Client-Gerät 102 können die Paketdaten durch eine oder mehrere Anwendungen 104 erzeugt werden. Beispielhafte Anwendungen beinhalten eine Blockzugriffsspeicherung (Block Access Storage), Audio- und/oder Video-Streaming, Audio- und/oder Video-Telefonie, Anwendungsstreaming, und dergleichen. Außerdem können die Paketdaten codiert, decodiert oder anderweitig konfiguriert werden, beispielsweise unter Verwendung eines oder mehrerer Netzwerkprotokollschichten 110, die eine Kommunikationsfunktionalität gemäß vielerlei Kommunikationsprotokollen bereitstellen.
-
Der Server 116 ist konfiguriert, die Datenpakete mit dem Client-Gerät 102 auszutauschen. Beispielsweise kann der Server 116 konfiguriert sein, um auf Anfragen von dem Client-Gerät 102 zu antworten. Außerdem kann das Client-Gerät 102 die Paketdaten mit jeweiligen Backend-Servern 124 im Dienstanbieternetz 122 über den Server 116 austauschen. Backend-Server 124 können vielerlei Server beinhalten, die für eine Datenspeicherung, für eine Blockzugriffsspeicherung (Block Access Storage), Cloud-Computing und dergleichen verwendet werden. Serverseitig können die Paketdaten codiert, decodiert oder anderweitig konfiguriert sein, beispielsweise unter Verwendung eines oder mehrerer Netzwerkprotokollschichten 120, die eine Kommunikationsfunktionalität gemäß vielerlei Kommunikationsprotokollen bereitstellen.
-
Sowohl bei dem Client-Gerät 102 als auch dem Server 116 kann es sich um ein beliebiges für Kommunikationen verwendetes elektronisches Gerät handeln, beispielsweise ein Smartphone, ein Tablet, einen Laptop-Computer, einen Server, einen Fernseher und dergleichen. Unterschiedliche Typen von Datenpaketen, von reinen Daten bis zu Echtzeitmedien, können das Netzwerksystem 100 durchqueren. Allgemein können einige Daten durchsatzkritisch sein, hingegen können andere Daten, beispielsweise Echtzeitmedien, latenzkritisch sein. Innerhalb von TCP (TCP = Transmission Control Protocol = Übertragungssteuerungsprotokoll) und IP (IP = Internetprotokoll) üblicherweise als TCP/IP bezeichnet, kann der Server 116, sofern das Client-Gerät 102 weiterhin Anfragen produziert, verlorene Pakete rasch erkennen. Beispielsweise erkennt der Server 116, unter Verwendung des Fast-Retransmit-Algorithmus von TCP/IP (Fast Retransmit = rasches erneutes Senden), den Verlust eines Paketes und bestätigt dem Client-Gerät 102 die zuletzt empfangene Sequenznummer. Falls das Client-Gerät 102 mehrere (z. B. drei) Bestätigungen der gleichen Sequenznummer empfängt, führt das Client-Gerät 102 ein erneutes Senden der fehlenden Pakete durch. Falls das Client-Gerät 102 das Senden von Anfragen unterbricht, verhindert der Verlust des letzten oder vorletzten Paketes beim Sitzungsablauf, dass der Server 116 die vollständige Anfrage empfängt, bis der TCP/IP-Zeitgeber für ein erneutes Senden abläuft, typischerweise in einigen Hundert Millisekunden (z. B. 300 ms). Der Zeitgeber für ein erneutes Senden wird typischerweise auf eine derart lange Zeitdauer eingestellt, da diese länger als die des Verzögerungsbestätigungszeitgebers sein sollte (z. B. 150 ms). Demzufolge treten gelegentliche Latenzen, die um einige Größenordnungen (z. B. tausendfach) größer als die übliche Latenz sind, häufig auf.
-
Das Netzwerk 114, das Dienstanbieternetzwerk 122, und weitere Komponenten des Netzwerksystems 100 können vielerlei Kommunikationsprotokolle verwenden, einschließlich Internet, Ethernet, WAN (Wide Area Network = Weitverkehrsnetz), Fabrics (Maschen eines Netzwerks) eines Speichersystems, kabelgebundene und kabellose Protokolle, und weitere bekannte oder zukünftig verwirklichte Netzwerksysteme. Außerdem ermöglichen die Ausführungsformen für latenzkritische Anwendungen eine Verwendung von herkömmlichen Netzwerken, beispielsweise Ethernet-Netzwerken. Die Kommunikationsprotokolle können TCP/IP beinhalten. Das Internet-RFC 793, dessen Offenbarung durch Bezugnahme in das vorliegende Dokument aufgenommen wird, beschreibt allgemein die TCP/IP-Funktionsweise, und das Internet RFC 5681, dessen Offenbarung ebenfalls durch Bezugnahme in das vorliegende Dokument aufgenommen wird, beschreibt allgemein eine TCP-Überlaststeuerung (TCP Congestion Control). Zwar werden die Ausführungsbeispiele der Erfindung allgemein in Verbindung mit TCP/IP beschrieben, jedoch ist die Erfindung nicht darauf eingeschränkt, sondern kann vielmehr auf vielerlei Netzwerktypen Anwendung finden.
-
Als Alternative zu einer direkten Implementierung in TCP/IP können weitere Implementierungen verwendet werden, die TCP/IP enthalten. Beispielsweise kann dem TCP/IP eine RDMA-Implementierung (RDMA = Remote Direct Memory Access = Speicherdirektzugriff über Netzwerk) überlagert werden, beispielsweise iWARP (iWARP = Internet Wide Area RDMA Protocol). Das RFC 5040, dessen Offenbarung durch Bezugnahme in das vorliegende Dokument aufgenommen wird, beschreibt allgemein eine RDMA-Funktionalität. Ohne ein Implementieren der Ausführungsformen der Erfindung können iWARP-Anfragen aufgrund von verlorenen Paketen mitunter Latenzen erzeugen, die tausendfach größer als normalerweise sind. Daher können die Ausführungsformen auf iWARP angewendet werden, um für eine zuverlässigere Kommunikation zu sorgen und eine Kommunikationslatenz beständig zu verbessern.
-
Alternativ kann iSCSI (Internet Small Computer System Interface) verwendet werden. Das RFC 3720, dessen Offenbarung durch Bezugnahme in das vorliegende Dokument aufgenommen wird, beschreibt allgemein eine iSCSI-Funktionalität. Bei iSCSI können als Sitzungsoption von TCP/IP die Verlusterkennungspakete angehängt werden, sofern die iSCSI-Implementierung ein PSH (Push Acknowledgement) am Ende jeder Anfrage und Antwort gewährleistet. Außerdem kann NVMe over Fabrics verwendet werden. Das NVMe-Speicherprotokoll kann als NVMe over RDMA-Fabrics ausgeführt werden, beispielsweise InfiniBand, RoCE (RDMA over Converged Ethernet) und iWARP.
-
Bei noch einer weiteren Alternative kann das NFS-Protokoll (NFS = Network File System) über TCP/IP implementiert werden. Bei NFS-Ausführungsformen kann ein NFS-basiertes Client-Gerät eine oder mehrere NULL-Protokollanfragen einfügen, und der NFS-basierte Server kann eine oder mehrere NULL-Protokollantworten einfügen, um Verlusterkennungspakete zu erzeugen. Als Ergebnis verhindern die Verlusterkennungspakete, dass der NFS-basierte Client sehr lange Verzögerungen erfährt, die durch ein Ablaufen des TCP-Zeitgebers für ein erneutes Senden aufgrund des Verlustes von Datenpaketen bedingt sind.
-
Die meisten Ethernet-NICs (NIC = Network Interface Controller = Netzwerkschnittstellensteuereinrichtung) und TOEs (TOE = TCP Offload Engine) implementieren einen Satz von zustandslosen Offloads (Auslagerungen). Beispielsweise beinhalten typische Offloads ein Prüfsummen-Offload, ein Segmentierungs-Offload, empfangsseitige Skalierung (Receive Side Scaling), und empfangsseitiges Zusammenführen (RSC = Receive Side Coalescing), das auch als LRO (Large Receive Offload) bezeichnet wird. Auch Linux verwendet eine Software-Implementierung, die als GRO (Generalized Receive Offload) bezeichnet wird. Die Ausführungsformen der Erfindung können in Verbindung mit jeglichen dieser Offload-Mechanismen implementiert werden. Beispielsweise werden bei RSC Pakete zusammengeführt, bevor der empfangende TCP/IP-Stack diese empfängt. Wenn bei RSC die zwei Verlusterkennungspakete oder das letzte Paket des Datenstroms mit den Verlusterkennungspaketen zusammengeführt wird, sendet die empfangende Seite keine ausreichende Anzahl von Duplikat-ACK-Paketen, um ein rasches erneutes Senden auszulösen. Um dieses Problem zu überwinden, ist es beim Zusammenspiel der Verlusterkennungspakete mit dem RSC erforderlich, das PSH-Bit auf dem letzten Paket des Datenstroms und den zwei Verlusterkennungspaketen zu setzen.
-
Für Implementierungen oberhalb der TCP/IP-Ebene kann bei Ausführungsformen die Paketstruktur der Sitzungsschicht gesteuert oder modifiziert werden, um zu gewährleisten, dass die TCP-Implementierung, falls erforderlich, mehrere Verlusterkennungspakete erzeugt. Herkömmliche Anwendungsprogrammschnittstellen (APIs) eines TCP/IP-Socket bieten keine paketübergreifende Steuerung einer Aufteilung eines Anwendungsdatenstroms. Jedoch können die Ausführungsformen sowohl bei Anwendungen des Kernel-Bereichs, die eine Steuerung über Paketaufteilungen ausüben können, als auch bei Anwendungen des Benutzerbereichs verwendet werden, die eine spezielle TCP-IP-Implementierung verwenden, beispielsweise DPDK von Intel (DPDK = Data Plane Development Kit) oder auch speziellen NICs, in denen Protokolle einer hohen Ebene implementiert sind, wie beispielsweise iWARP oder iSCSI. Jede dieser Netzwerkumgebungen bietet eine ausreichende Steuerung über eine Platzierung von Daten in Paketen, um Verlusterkennungspakete zu erzeugen.
-
Ungeachtet des verwendeten Kommunikationsprotokolls können bei einigen Ausführungsformen kleine Verlusterkennungspakete an Anfragen angehängt werden, die jeweils in ein einzelnes separates Paket codiert sind, wenn keine weiteren Anfragen geplant sind. Wenn im Netzwerk 114 die Datenpakete verlorengehen, welche die Verlusterkennungspakete beinhalten, wird eine Prozedur für ein erneutes Senden ausgelöst (z. B. TCP/IP Fast Retransmit). In RFC 6298, dessen Offenbarung durch Bezugnahme in das vorliegende Dokument aufgenommen wird, sind allgemein die Prozeduren für ein erneutes Senden bei Zeitüberschreitung (Timeout) beschrieben. Bei derartigen Implementierungen können die Verlusterkennungspakete verworfen werden. Alternativ können Verlusterkennungspakete verwendet werden, um nicht-kritische Daten oder andere nicht-zeitkritische Daten zu senden. Falls die Verlusterkennungspakete für ein Übertragen von Paketdaten verwendet werden, werden die Verlusterkennungspakete nicht einfach verworfen.
-
2 ist ein Blockdiagramm eines Computerservers/Systems (d. h. des Systems 10) gemäß einer Ausführungsform der Erfindung. Das System 10 kann verwendet werden, um jegliche der in 1 dargestellten Netzwerkelemente wie erforderlich zu implementieren, um jegliche der Funktionalitäten der Ausführungsformen der Erfindung zu implementieren, die nachfolgend detailliert offenbart sind. Die Funktionalität des Systems 10 kann, auch wenn es hier als einzelnes System dargestellt ist, als verteiltes System implementiert sein. Weiter kann die hier offenbarte Funktionalität auf separaten Servern oder Geräten implementiert sein, die miteinander über ein Netzwerk verbunden sind. Außerdem ist es möglich, dass eine oder mehrere Komponenten des Systems 10 nicht enthalten sind, und alternative Konfigurationen können verwendet werden. Für die Funktionalität des Servers 116 von 1 kann es sich beim System 10 beispielsweise um einen Server handeln, bei dem allgemein eine Anzeige 24 oder eine oder mehrere weitere in 2 dargestellte Komponenten nicht erforderlich sind.
-
Das System 10 beinhaltet einen Bus 12 oder einen anderen Kommunikationsmechanismus für ein Kommunizieren von Information, und einen mit dem Bus 12 verbundenen Prozessor 22 für ein Verarbeiten von Information. Bei dem Prozessor 22 kann es sich um einen beliebigen Typ von Universal- oder Spezialprozessor handeln. Das System 10 beinhaltet weiter einen Speicher 14 zum Speichern von Information und Anweisungen, die durch den Prozessor 22 auszuführen sind. Der Speicher 14 kann aus einer beliebigen Kombination von RAM (Direktzugriffspeicher), ROM (Nur-Lese-Speicher), einem statischen Speicher, wie beispielsweise einer magnetischen oder optischen Platte, oder einem beliebigen anderen Typ von nicht-transitorischem oder computerlesbarem Medium bestehen. Das System 10 beinhaltet weiter eine Kommunikationsvorrichtung 20, beispielsweise eine Netzwerkschnittstellenkarte, um einen Zugang zu einem Netzwerk bereitzustellen. Daher kann ein Benutzer mit dem System 10 direkt in Verbindung treten, oder aus der Ferne über ein Netzwerk oder ein beliebiges anderes Verfahren.
-
Bei dem computerlesbaren Medium kann es sich um ein beliebiges verfügbares Medium handeln, auf das vom Prozessor 22 zugegriffen werden kann, und eingeschlossen sind sowohl flüchtige als auch nichtflüchtige Medien, entnehmbare als auch nicht-entnehmbare Medien, und Kommunikationsmedien. Kommunikationsmedien können computerlesbare Anweisungen, Datenstrukturen, Programmmodule, oder weitere Daten in einem modulierten Datensignal wie beispielsweise einer Trägerwelle oder einem anderen Transportmedium beinhalten, und dies schließt jegliche Informationsüberlieferungsmedien ein.
-
Der Prozessor 22 kann weiter über den Bus 12 mit einer Anzeige 24, beispielsweise einer Flüssigkristallanzeige (LCD), verbunden sein. Eine Tastatur 26 und eine Cursor-Steuervorrichtung 28 wie beispielsweise eine Computermaus kann weiter mit dem Bus 12 verbunden sein, um einem Benutzer zu ermöglichen, mit dem System 10 je nach Bedarf in Verbindung zu treten.
-
Bei einem Ausführungsbeispiel speichert der Speicher 14 Software-Module, die bei Ausführung durch den Prozessor 22 eine Funktionalität bereitstellen. Die Module beinhalten ein Betriebssystem 15, das für das System 10 eine Betriebssystem-Funktionalität bereitstellt. Die Module beinhalten weiter ein Verlusterkennungsmodul 16, um Attrappen- oder Verlusterkennungspakete bereitzustellen, sowie jegliche weitere hier offenbarte Funktionalität. Bei einem Ausführungsbeispiel kann das Verlusterkennungsmodul 16 den Server 116 von 1 in Verbindung mit einem oder mehreren verbleibenden Elementen von 2 implementieren. Das System 10 kann Teil eines größeren Systems sein, beispielsweise eine Funktionalität, die dem Flash-Speichersystem von Oracle Corp. hinzugefügt ist. Daher kann das System 10 eines oder mehrere weitere Funktionsmodule 18 beinhalten, um zusätzliche Funktionalität einzubeziehen. Eine Datenbank 17 ist mit dem Bus 12 verbunden, um einen zentralen Speicherort für das Verlusterkennungsmodul 16 und die weiteren Funktionsmodule 18 bereitzustellen.
-
Bei einem Ausführungsbeispiel kann das Verlusterkennungsmodul 16 und/oder weitere Funktionsmodule 18 ein Aufbaumodul beinhalten, das einen Aufbau einer Kommunikationssitzung zwischen dem Client-Gerät und dem Server unter Verwendung eines oder mehrerer Verlusterkennungspakete durchführt. Beispielsweise kann das Verlusterkennungsmodul 16 konfiguriert sein, eines oder mehrere Verlusterkennungspakete an Nachrichtenpakete anzuhängen, falls nicht geplant ist, weitere Nachrichtenpakete in einer Kommunikationssitzung zu senden. Die Verlusterkennungspakete werden verwendet, um den Verlust von zeitkritischen und/oder weiteren wichtigen Nachrichtenpaketen rascher zu identifizieren. Das Verlusterkennungspaket wird verwendet, um eine Prozedur für ein erneutes Senden des betreffenden im Kommunikationsnetzwerk verwendeten Kommunikationsprotokoll auszulösen.
-
3 zeigt einen beispielhaften Paketdatenstrom gemäß einem Ausführungsbeispiel der Erfindung.
-
Wie in 3 dargestellt, beinhaltet der Datenpaketstrom 300 Nachrichtenpakete 310.0 - 310.N und Verlusterkennungspakete 320.1 und 320.2. Jedes Paket kann eine Zieladresse 311, 321, eine Quellenadresse 312, 322, eine Laufnummer 313, 323 und Nutzdaten 314, 324 beinhalten. Für die Verlusterkennungspakete 320.1 und 320.2 ist das Enthaltensein von Nutzdaten 324 optional. Beispielsweise können die Verlusterkennungspakete 320.1 und 320.2 verwendet werden, um nicht-kritische Daten oder andere nicht-zeitkritische Daten zu senden. Alternativ kann es sich bei den Verlusterkennungspaketen 320.1 und 320.2 um vereinfachte Attrappenpakete handeln, die ausschließlich verwendet werden, um zu bestimmen, ob die Nachrichtenpakete 310.0-310.N verlorengegangen sind.
-
Abhängig von dem verwendeten Kommunikationsprotokoll wird von den client- und serverseitigen Geräten der Kommunikationssitzung das Format der Verlusterkennungspakete ausgehandelt. Bei TCP/IP kann beispielsweise, wenn der TCP/IP-Client Datenpakete mit gesetztem PSH-Flag sendet, das TCP/IP-Kommunikationsprotokoll mehrere (z. B. zwei) zusätzliche aus einem einzigen Byte bestehende Verlusterkennungspakete anhängen, die der empfangende Server still verwirft. Die Verwendung von zwei Verlusterkennungspaketen kann bevorzugt werden, um zu gewährleisten, dass eine ausreichende Anzahl von Bestätigungsnachrichten empfangen werden, um ein Fast Retransmit (rasches erneutes Senden) auszulösen. Die Verwendung von zwei oder mehr Verlusterkennungspaketen behindert aufgrund von deren geringer Größe die Netzwerkleistung nicht. Bei derartigen Implementierungen enthält jedes der Verlusterkennungspakete ein einziges Byte, um die TCP/IP-Laufnummer hochzuzählen und die Paketverlust-Algorithmen für ein erneutes Senden zu aktivieren. Bei TCP/IP wird die Laufnummer 313, 323 als letzte Laufnummer berechnet, die zur Länge des letzten Paketes addiert wird.
-
Es wird zwar von den Ausführungsbeispielen die Verwendung von zusätzlichen Verlusterkennungspaketen 320.0 und 320.1 eingeführt, jedoch hat deren Verwendung einen vernachlässigbaren Einfluss auf die Netzwerkleistung. Moderne Ethernet-NICs und TOEs handhaben ohne Weiteres Millionen von Paketen je Sekunde. Daher können die Ethernet-NICs oder TOEs ohne Weiteres die zusätzlichen Verlusterkennungspakete handhaben, ohne dass die Datenübertragungsraten beeinträchtigt werden.
-
4 zeigt ein Ablaufdiagramm einer Funktionalität 400 für eine Verringerung einer Kommunikationslatenz gemäß einem Ausführungsbeispiel der Erfindung. In einigen Fällen wird die Funktionalität des Ablaufdiagramms von 4 durch Software implementiert, die im Speicher oder anderen computerlesbaren oder dinghaften Medien gespeichert ist und durch einen Prozessor ausgeführt wird. In anderen Fällen kann die Funktionalität durch Hardware (z. B. mittels Verwendung einer ASIC (anwendungsspezifische integrierte Schaltung) eines PGA (Programmable Gate Array), eines FPGA (Field Programmable Gate Array), etc.), oder einer beliebigen Kombination aus Hardware und Software bewerkstelligt werden.
-
Bei 410 initiiert die Funktionalität 400 eine Kommunikationssitzung zwischen dem Client-Gerät und dem entfernten Gerät. Die Ausführungsbeispiele der Erfindung können in Verbindung mit vielerlei Kommunikationsprotokollen verwendet werden. Derartige Kommunikationsprotokolle können TCP/IP, RDMA, iSCSI, NVMe over Fabrics, RDMA over Fabrics, wie beispielsweise InfiniBand, RoCE und IWARP, und weitere Kommunikationsprotokolle beinhalten.
-
Sobald die Kommunikationssitzung aufgebaut ist, sendet die Funktionalität 400 eines oder mehrere Nachrichtenpakete von dem Client-Gerät an das entfernte Gerät. Anfrage- und Antwort-Datenpakete, die zwischen dem Client-Gerät und dem entfernten Gerät ausgetauscht werden, können Teil von vielerlei Anwendungen sein, beispielsweise Blockzugriffsspeicherung (Block Access Storage), Audio- und/oder Video-Streaming, Audio- und/oder Video-Telefonie, Anwendungsstreaming, und eine beliebige andere Anwendung vom Antwort-/Anfragetyp.
-
Anschließend bestimmt die Funktionalität 400 (z. B. das Verlusterkennungsmodul 16 von 2), ob geplant ist, irgendein weiteres Nachrichtenpaket zum entfernten Gerät zu senden, und zwar bei 430. In dem Fall, dass geplant ist, eines oder mehrere weitere Nachrichtenpakete zum entfernten Gerät zu senden, kehrt die Funktionalität 400 zu 420 zurück, für das Senden der Nachrichtenpakete von dem Client-Gerät an das entfernte Gerät. Andernfalls werden, falls nicht geplant ist, weitere Nachrichtenpakete an das entfernte Gerät zu senden, eines oder mehrere Verlusterkennungspakete an das letzte Nachrichtenpaket angehängt, und zwar bei 440. Dabei wird das letzte Nachrichtenpaket und die Verlusterkennungspakete an das entfernte Gerät gesendet.
-
Bei 450 bestimmt die Funktionalität 400 weiter, ob das letzte Nachrichtenpaket von der entfernten Vorrichtung erfolgreich empfangen wurde. Die Funktionalität 400 kann basierend auf Bestätigungsnachrichten bestimmen, ob die Verlusterkennungspakete erfolgreich empfangen wurden. Falls das Verlusterkennungspaket nicht erfolgreich empfangen wurde, wird ein erneutes Senden des letzten Nachrichtenpaketes und des Verlusterkennungspaketes ausgeführt, und zwar bei 455. Beispielsweise führt, falls das Client-Gerät mehrere (z. B. drei) Bestätigungen gleicher Laufnummer empfängt, das Client-Gerät ein erneutes Senden der als fehlend erachteten Nachrichtenpakete durch. Das erneute Senden des letzten Nachrichtenpaketes kann innerhalb 100 ms oder weniger ab seinem vorhergehenden Senden erfolgen. Beispielsweise kann die Prozedur zum erneuten Senden TCP/IP-Fast-Retransmit (rasches erneutes Senden gemäß TCP/IP-Protokoll) beinhalten. Andernfalls wird, in dem Fall, dass das Verlusterkennungspaket erfolgreich gesendet wurde, von der Funktionalität 460 die Kommunikationssitzung beendet, und zwar bei 460.
-
5 ist ein Paketsequenzdiagramm 500, das eine beispielhafte Sequenz von Anfrage- und Antwortpaketen beinhaltet, die zwischen dem Client-Gerät 502 und dem Server 516 ausgetauscht werden, gemäß einem Ausführungsbeispiel. 5 beinhaltet Netzwerkelemente, wie beispielsweise ein Client-Gerät 502 und einen Server 516, wie hier mit Bezug auf 1 beschrieben (Client-Gerät 102 und Server 116 in 1).
-
Bei 510 sendet das Client-Gerät 502 eines oder mehrere Konfigurationsanfragepakete 520 (z. B. ein Nachrichtenpaket) an den Server 516. Der Server 516 antwortet seinerseits auf die Konfigurationsanfragepakete 520 mit einer oder mehreren Konfigurationsantwortnachrichten 521. Die Konfigurationsanfragepakete 520 und die Konfigurationsantwortpakete 521 ermöglichen es dem Client 502 und dem Server 516, eine Kommunikationssitzung 523 aufzubauen. Die Ausführungsformen der Erfindung können in Verbindung mit vielerlei Kommunikationsprotokollen verwendet werden, beispielsweise TCP/IP, RDMA, iSCSI, NVMe over Fabrics, RDMA over Fabrics, wie beispielsweise InfiniBand, RoCE und IWARP, und weiteren Kommunikationsprotokollen.
-
Sobald die Kommunikationssitzung 523 aufgebaut wurde, sendet das Client-Gerät 502 eine oder mehrere Anfragepakete 524 an den Server 516. Der Server 516 antwortet seinerseits auf die Anfragepakete 524 mit einer oder mehreren Antwortnachrichten 525. Die Anfragepakete 524 und die Antwortnachrichten 525 können Teil von vielerlei Anwendungen sein, beispielsweise Blockzugriffsspeicherung (Block Access Storage), Audio- und/oder Video-Streaming, Audio- und/oder Video-Telefonie, Anwendungsstreaming, und eine beliebige andere Antwort-/Anfrage-Anwendung.
-
Anschließend wird von den Verlusterkennungsmodulen des Client-Gerätes 502 bestimmt, ob geplant ist, irgendein weiteres Anfragepaket zu dem entfernten Gerät zu senden. Falls kein weiteres Anfragepaket auf dem Plan steht, werden eines oder mehrere Verlusterkennungspakete an das letzte Anfragepaket 526 angehängt. Dabei werden das letzte Anfragepaket und die Verlusterkennungspakete 256 zum Server 516 gesendet.
-
Zuletzt wird von den Verlusterkennungsmodulen des Client-Gerätes 502 weiter bestimmt, ob das Verlusterkennungspaket 526 durch den Server 516 erfolgreich empfangen wurde. Beispielsweise bestimmt das Client-Gerät 502, dass das Verlusterkennungspaket 526 nicht erfolgreich empfangen wurde, wenn mehrere (z. B. drei) Bestätigungen gleicher Laufnummer empfangen werden. In dem Fall, dass das Verlusterkennungspaket 526 nicht erfolgreich empfangen wurde, wird das letzte Anfragepaket und das angehängte Verlusterkennungspaket erneut gesendet, und zwar bei 528. Dabei können beispielsweise die Algorithmen des TCP/IP-Fast-Retransmit verwendet werden.
-
6 ist ein Paketsequenzdiagramm 600, das eine beispielhafte Sequenz von Nachrichtenpaketen enthält, die zwischen dem Client-Gerät 602 und dem Server 616 ausgetauscht werden, gemäß einem Ausführungsbeispiel. 6 beinhaltet Netzwerkelemente, wie beispielsweise ein Client-Gerät 602 und einen Server 616, wie hier mit Bezug auf 1 beschrieben (Client-Gerät 102 und Server 116 in 1).
-
Jedes Nachrichtenpaket 610, 620, 630 kann Bereiche für die Laufnummer (SN in 6) und die Länge (L in 6), beispielsweise die Anzahl von Bytes, beinhalten. Bestätigungsnachrichten 640, 660, 680 beinhalten auch die Laufnummer des gerade bestätigten Nachrichtenpaketes oder des letzten vom Server 616 empfangenen Nachrichtenpaketes. Außerdem kann jedes Verlusterkennungspaket 650, 670 Bereiche für die Laufnummer und die Länge (z. B. ein einziges Byte) beinhalten. Obschon nicht in 6 dargestellt, kann jeder der verschiedenen Nachrichtenpakettypen auch Bereiche für die Quellenadresse, die Zieladresse, sowie weitere Bereiche beinhalten, wie zuvor für 3 beschrieben.
-
Das Client-Gerät 602 kann Nachrichtenpakete 610, 620, 630 an den Server 616 senden. Das Client-Gerät 602 sendet auch Verlusterkennungspakete 650, 670. Der Server 616 antwortet seinerseits auf Nachrichtenpakete 610, 620, 630 mit einer oder mehreren Bestätigungsnachrichten 640, 650, 660. Dabei geht bei diesem speziellen Beispiel das Nachrichtenpaket 630 während der Übertragung zum Server 616 verloren. Als Ergebnis empfängt der Client 602 mehrere Bestätigungen des Nachrichtenpaketes 620. Das Client-Gerät 602 bestimmt, dass ein Nachrichtenpaket (z. B. das Nachrichtenpaket 620) nicht erfolgreich empfangen wurde, wenn mehrere (z. B. drei) Bestätigungen der gleichen Laufnummer empfangen werden. Ein Empfang einer dritten Duplikat-Bestätigungsnachricht hat ein rasches erneutes Senden von Nachrichtenpaketen zur Folge, die eine Laufnummer nach 1040 haben, einschließlich des Nachrichtenpaketes 630.
-
Bei der beispielhaften Paketsequenz 600 werden vom Server 616, nachdem er die Nachrichtenpakete 610, 620 empfangen hat, diese mit dem Bestätigungspaket 640 bestätigt, wodurch angegeben wird, dass vom Server 616 Pakete bis zur Laufnummer 1040 empfangen wurden. Das Nachrichtenpaket 630 wird vom Server 616 niemals empfangen. Der Server 616 sendet, nachdem er das Verlusterkennungspaket 650 mit der Laufnummer 1117 empfangen hat, ein Duplikat-Bestätigungspaket 660, wodurch erneut angegeben wird, dass er lediglich Daten bis zur Laufnummer 1040 empfangen hat. Das Client-Gerät 602 sendet ein Verlusterkennungspaket 670. Bei Empfang des Verlusterkennungspaketes 670 sendet der Server 616 ein weiteres Duplikat-Bestätigungspaket 680 für die Laufnummer 1040. Das Client-Gerät 602 hat nun drei Bestätigungen für die Laufnummer 1040 empfangen und antwortet mittels eines erneuten Sendens der fehlenden Paketnachricht(en) und/oder Verlusterkennungspaketen nach der Laufnummer 1040. Durch Anwenden der Ausführungsformen der Erfindung werden von dem Client-Gerät 602 Nachrichtenpakete 610, 620, 630 an den Server 616 mit minimaler Verzögerung transportiert, und zwar ungeachtet des Verlustes des Nachrichtenpaketes 630.
-
Die verschiedenen hier beschriebenen Ausführungsbeispiele können unter Verwendung einer Kombination aus Hardware und Software implementiert werden. Beispielsweise können die Ausführungsbeispiele unter Verwendung einer in C-Sprache geschriebenen Anwendung implementiert werden, die über TCP-Socket eine oder mehrere Nachrichten von dem Client-Gerät an den Server generiert. In diesem Beispiel setzt die in C-Sprache geschriebene Anwendung den TCP_NODELAY-Parameter, um den standardmäßigen Nagle-Algorithmus zu deaktivieren, durch den kleine Sendungen zu einem Paket gruppiert werden. Die in der C-Sprache geschriebene Anwendung generiert eine Nachricht von dem Client-Gerät an den Server und wartet auf eine ein einziges Byte umfassende Antwort. Optional kann das Client-Gerät zwei ein Byte umfassende Blindpakete erzeugen. Ein beispielhafter Pseudocode für ein Senden der Verlusterkennungspakete ist wie folgt:
- solange (es verbleiben noch PDUs zu senden) führe aus Senden von Paketen einer nächsten PDU;
- Senden von zwei Verlusterkennungspaketen;
- wenn (Empfangen von Bestätigungspaketen, die verlorene Pakete anzeigen) dann führe aus erneutes Senden von fehlenden Paketen;
-
Wie hier beschrieben, werden Systeme und Verfahren für ein Reduzieren einer Kommunikationslatenz bereitgestellt. Bei Ausführungsbeispielen der Erfindung werden eines oder mehrere Verlusterkennungspakete an Nachrichtenpakete angehängt, falls nicht geplant ist, weiteren Nachrichtenpakete in einer Kommunikationssitzung zu senden. Die Verlusterkennungspakete werden verwendet, um den Verlust von zeitkritischen und/oder weiteren wichtigen Paketen rasch zu identifizieren. Falls irgendeines der Verlusterkennungspakete auf dem Kommunikationskanal tatsächlich verlorengeht, hat dies eine geringe oder keine Auswirkung auf die Anwendung, da es sich bei den Verlusterkennungspaketen typischerweise um Attrappenpakete handelt. Falls jedoch im Netzwerk das letzte oder vorletzte der Datenpakete in dem Kommunikationssitzungsablauf verlorengeht, werden die Verlusterkennungspakete verwendet, um eine Prozedur für ein erneutes Senden (z. B. innerhalb 100 ms oder weniger) des betreffenden im Kommunikationsnetzwerk verwendeten Kommunikationsprotokoll auszulösen.
-
Für Fachleute ist es klar, dass beim Hinzufügen von Verlusterkennungspaketen der vorliegenden Offenbarung zahlreiche Modifikationen und Variationen vorgenommen werden können, ohne vom Geist oder Schutzumfang der Offenbarung abzuweichen. Somit ist beabsichtigt, dass die vorliegende Offenbarung diese Modifikationen und Variationen dieser Offenbarung umfasst, vorausgesetzt, dass diese sich innerhalb des Schutzumfangs der anliegenden Ansprüche und deren Äquivalente befinden.