DE112016005929T5 - Technologien zum Nachverfolgen von reihenfolgeveränderten Netzwerkpaketen - Google Patents

Technologien zum Nachverfolgen von reihenfolgeveränderten Netzwerkpaketen Download PDF

Info

Publication number
DE112016005929T5
DE112016005929T5 DE112016005929.9T DE112016005929T DE112016005929T5 DE 112016005929 T5 DE112016005929 T5 DE 112016005929T5 DE 112016005929 T DE112016005929 T DE 112016005929T DE 112016005929 T5 DE112016005929 T5 DE 112016005929T5
Authority
DE
Germany
Prior art keywords
data processing
processing node
destination data
bitmask
window
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112016005929.9T
Other languages
English (en)
Inventor
Keith Underwood
Charles Giefer
Bruce M. Pirie
Karl P. Brummel
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112016005929T5 publication Critical patent/DE112016005929T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/34Flow control; Congestion control ensuring sequence integrity, e.g. using sequence numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/27Evaluation or update of window size, e.g. using information derived from acknowledged [ACK] packets
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2101/00Indexing scheme associated with group H04L61/00
    • H04L2101/60Types of network addresses
    • H04L2101/695Types of network addresses using masks or ranges of addresses

Abstract

Technologien zum Nachverfolgen von reihenfolgeveränderten Netzwerkpaketen umfassen einen Zieldatenverarbeitungsknoten, der über einen Kommunikationskanal mit einem Quelldatenverarbeitungsknoten gekoppelt ist. Der Zieldatenverarbeitungsknoten ist dazu ausgelegt, ein kleines Fenster im Speicher zuzuordnen, in dem eine Bitmaske, die einer Anzahl von vom Quelldatenverarbeitungsknoten über den Kommunikationskanal empfangenen reihenfolgeveränderten Netzwerkpaketen entspricht, gespeichert wird. Der Zieldatenverarbeitungsknoten ist ferner dazu ausgelegt, bei Empfangen eines reihenfolgeveränderten Netzwerkpakets vom Quelldatenverarbeitungsknoten die Bitmaske in dem kleinen Fenster zu aktualisieren. Der Zieldatenverarbeitungsknoten ist zusätzlich dazu ausgelegt, ein großes Fenster im Speicher zuzuordnen in Reaktion auf eine Bestimmung, dass die Größe der Bitmaske größer als die Größe des kleinen Fensters ist, die Bitmaske in dem großen Fenster zu speichern und einen Zeiger auf das große Fenster in dem kleinen Fenster zu speichern. Andere Ausführungsformen werden beschrieben und beansprucht.

Description

  • REGIERUNGSRECHTSKLAUSEL
  • Diese Erfindung wurde mit Unterstützung durch die Regierung umgesetzt unter der Vertragsnummer H98230-13-D-0124, vergeben vom Department of Defense. Die Regierung hat in dieser Erfindung bestimmte Rechte.
  • QUERVERWEIS ZU VERWANDTER ANMELDUNG
  • Die vorliegende Anmeldung beansprucht Priorität vor der US-Gebrauchsmusteranmeldung, Seriennummer 14/979,131, mit dem Titel „TECHNOLOGIES FOR TRACKING OUT-OF-ORDER NETWORK PACKETS“, die am 22. Dezember 2015 eingereicht wurde.
  • HINTERGRUND
  • Moderne Datenverarbeitungsvorrichtungen sind zu allgegenwärtigen Werkzeugen für persönliche, geschäftliche und gesellschaftliche Verwendungen geworden. Daher sind viele moderne Datenverarbeitungsvorrichtungen in der Lage, sich mit verschiedenen Datennetzwerken zu verbinden, einschließlich des Internets und Unternehmensintranets, um Datenkommunikationen über die verschiedenen Datennetzwerke bei veränderlichen Geschwindigkeitsraten zu senden und zu empfangen. Zum Erleichtern von Kommunikationen zwischen Datenverarbeitungsvorrichtungen umfassen die Datennetzwerke in der Regel einen oder mehrere Datenverarbeitungsknoten (z. B. Netzwerkweichen, Netzwerkrouter, Server, andere Datenverarbeitungsvorrichtungen zum Berechnen und/oder Speichern usw.) zum Leiten von Kommunikationen (d. h. Netzwerkpaketen) von einer Quelldatenverarbeitungsvorrichtung zu einer Zieldatenverarbeitungsvorrichtung. Bestimmte Netzwerkinfrastrukturen, wie etwa Datenzentren, können Zehntausende oder mehr solcher Datenverarbeitungsknoten umfassen, was Senden und Empfangen der Netzwerkpakete in sequenzieller Reihenfolge bestenfalls schwierig macht.
  • Daher wurden verschiedene reihenfolgeveränderte (out-of-order) Ende-zu-Ende-Protokolle umgesetzt, um Senden und Empfangen der potenziell Tausenden von Netzwerkpaketen, die zu jedem gegebenen Zeitpunkt unterwegs sind, zu verwalten. Um beispielsweise ein solch großes reihenfolgeverändertes Netzwerkverkehrsvolumen zu bewältigen, wurden Mikroarchitekturtechnologien umgesetzt, um Ende-zu-Ende-Wiederholungsprotokolle auf Hardwareebene bereitzustellen, um einfaches Akzeptieren des nächsten Netzwerkpakets in einer Sequenz von Netzwerkpaketen zu nutzen, unabhängig von der Reihenfolge, in der diese empfangen werden. In einigen Fällen wurde Software zum Einbringen von Zuverlässigkeit genutzt, indem die Köpfe der Netzwerkpakete neu sequenziert wurden, um ohne Hardwareprüfung die sequenzielle Reihenfolge wiederherzustellen; allerdings ist eine solche softwarebasierte Neusequenzierung in der Regel nicht auf direkte Datenplatzierungsvorgänge oder atomare Vorgänge anwendbar. In ähnlicher Weise unterstützt das Übertragungssteuerungsprotokoll TCP (Transmission Control Protocol) gezielte Ablehnungsfähigkeiten; allerdings hängen solche Verwendungsfälle in der Regel von Neuanordnung der empfangenen reihenfolgeveränderten Netzwerkpakete im Hostspeicher ab, was in der Regel Mehraufwand und Latenz einbringt.
  • Figurenliste
  • Die hier beschriebenen Konzepte werden in den beigefügten Figuren als Beispiel dargestellt, nicht als Einschränkung. Aus Gründen der Einfachheit und Klarheit der Darstellung sind in den Figuren dargestellte Elemente nicht notwendigerweise maßstabsgetreu gezeichnet. Wo als angemessen erachtet, wurden Bezugszeichen in den Figuren wiederholt, um entsprechende oder analoge Elemente anzuzeigen.
    • 1 ist ein vereinfachtes Blockdiagramm von zumindest einer Ausführungsform eines Systems zum Nachverfolgen von reihenfolgeveränderten Netzwerkpaketen, das einen Quelldatenverarbeitungsknoten und einen Zieldatenverarbeitungsknoten umfasst, die kommunikativ über einen Kommunikationskanal über ein Netzwerk gekoppelt sind;
    • 2 ist ein vereinfachtes Blockdiagramm von zumindest einer Ausführungsform einer Umgebung, die durch den Zieldatenverarbeitungsknoten des Systems aus 1 erstellt werden kann;
    • 3 ist eine Darstellung eines Paketsequenznummerntabelleneintrags, der durch den Zieldatenverarbeitungsknoten aus 1 und 2 erzeugt werden kann; und
    • 4 und 5 sind ein vereinfachtes Flussdiagramm von zumindest einer Ausführungsform eines Verfahrens zum Nachverfolgen von reihenfolgeveränderten Netzwerkpaketen, das durch den Zieldatenverarbeitungsknoten aus 1 und 2 ausgeführt werden kann.
  • AUSFÜHRLICHE BESCHREIBUNG DER ZEICHNUNGEN
  • Während die Konzepte der vorliegenden Offenbarung empfänglich für verschiedene Modifikationen und alternative Formen sind, wurden verschiedene Ausführungsformen davon als Beispiel in den Zeichnungen gezeigt und werden hier ausführlich beschrieben. Es versteht sich allerdings, dass nicht die Absicht besteht, die Konzepte der vorliegenden Offenbarung auf die speziellen offenbarten Formen zu beschränken, sondern die Absicht ist, im Gegenteil, alle Modifikationen, Äquivalente und Alternativen, die mit der vorliegenden Offenbarung und den beigefügten Ansprüchen konsistent sind, abzudecken.
  • Bezugnahmen in der Spezifikation auf „eine Ausführungsform“, „eine veranschaulichende Ausführungsform“ usw. zeigen an, dass die beschriebene Ausführungsform ein bestimmtes Merkmal, eine Struktur oder Charakteristik umfassen kann, aber jede Ausführungsform kann oder muss nicht notwendigerweise dieses spezielle Merkmal, diese Struktur oder Charakteristik umfassen. Darüber hinaus beziehen sich solche Phrasen nicht notwendigerweise auf die gleiche Ausführungsform. Ferner, wenn ein bestimmtes Merkmal, eine Struktur oder Charakteristik in Verbindung mit einer Ausführungsform beschrieben wird, wird davon ausgegangen, dass es im Wissen eines Fachmanns liegt, ein solches Merkmal, eine Struktur oder Charakteristik in Verbindung mit anderen Ausführungsformen umzusetzen, seien sie ausdrücklich beschrieben oder nicht. Zusätzlich versteht es sich, dass Elemente, die in einer Liste in der Form „zumindest eines aus A, B und C“ enthalten sind, (A); (B); (C); (A und B); (A und C); (B und C); oder (A, B und C) bedeuten können. In ähnlicher Weise können Elemente, die in einer Liste in der Form „zumindest eines aus A, B oder C“ enthalten sind, (A); (B); (C); (A und B); (A und C); (B und C); oder (A, B und C) bedeuten.
  • Die offenbarten Ausführungsformen können, in einigen Fällen, in Hardware, Firmware, Software oder einer Kombination daraus umgesetzt sein. Die offenbarten Ausführungsformen können auch als Anweisungen umgesetzt sein, die von einem oder mehreren flüchtigen oder nicht-flüchtigen maschinenlesbaren (z. B. computerlesbaren) Speichermedien (z. B. Speicher, Datenspeicher usw.), die von einem oder mehreren Prozessoren gelesen und ausgeführt werden können, transportiert oder darauf gespeichert werden können. Ein maschinenlesbares Speichermedium kann als ein(e) beliebige(r) Speichervorrichtung, Mechanismus oder eine andere physische Struktur zum Speichern oder Senden von Informationen in einer durch eine Maschine (z. B. einen flüchtigen oder nicht-flüchtigen Speicher, eine Medienplatte oder eine andere Medienvorrichtung) lesbaren Form ausgeführt sein.
  • In den Zeichnungen können einige strukturelle oder Verfahrensmerkmale in spezifischen Anordnungen und/oder Reihenfolgen gezeigt sein. Allerdings versteht es sich, dass solche spezifischen Anordnungen und/oder Reihenfolgen nicht erforderlich sein müssen. Stattdessen können, in einigen Ausführungsformen, solche Merkmale in einer unterschiedlichen Weise und/oder Reihenfolge als der in den veranschaulichenden Figuren gezeigten angeordnet sein. Zusätzlich soll die Einbeziehung eines strukturellen oder Verfahrensmerkmals in einer bestimmten Figur nicht implizieren, dass ein solches Merkmal in allen Ausführungsformen erforderlich ist, und, in einigen Ausführungsformen, kann es nicht enthalten oder kann es mit anderen Merkmalen kombiniert sein.
  • Jetzt Bezug nehmend auf 1, umfasst, in einer veranschaulichenden Ausführungsform, ein System 100 zum Nachverfolgen von reihenfolgeveränderten Netzwerkpaketen (d. h. wenn sich die Lieferung von Netzwerkpaketen für einen bestimmten Fluss von Netzwerkpaketen von der Reihenfolge unterscheidet, in der die Netzwerkpakete gesendet wurden) einen Quelldatenverarbeitungsknoten 102, der über einen Kommunikationskanal 104 über ein Netzwerk 106 kommunikativ mit einem Zieldatenverarbeitungsknoten 108 gekoppelt ist. Der Quelldatenverarbeitungsknoten 102 ist dazu ausgelegt, Informationen (z. B. ein Datenobjekt, eine Quittierung usw.) über ein oder mehrere durch die Quelldatenverarbeitungsvorrichtung 102 erzeugte Netzwerkpakete an den Zieldatenverarbeitungsknoten 108 zu senden.
  • In einigen Ausführungsformen umfassen das bzw. die Netzwerkpakete einen Kopf und einige Informationen, die in der Regel als eine eingebundene Nachricht oder als angehängte Nutzdaten formatiert sind. Der Kopf umfasst identifizierende Informationen zu dem Netzwerkpaket, während die Nutzdaten zumindest einen Teil eines Datenobjekts umfassen (z. B. als ein Ergebnis des Paketierens des Datenobjekts). Es versteht sich, dass, während die Quelldatenverarbeitungsvorrichtung 102 jedes der Netzwerkpakete in sequenzieller Reihenfolge senden kann, ein oder mehrere Netzwerkpakete reihenfolgeverändert empfangen werden können. Daher ist die Quelldatenverarbeitungsvorrichtung 102 dazu ausgelegt, eine Sequenznummer zuzuordnen, die durch den Zieldatenverarbeitungsknoten 108 verwendbar ist, um das Datenobjekt aus den empfangenen reihenfolgeveränderten Netzwerkpaketen zu rekonstruieren. Mit anderen Worten, der Zieldatenverarbeitungsknoten 108 kann die reihenfolgeverändert empfangenen Netzwerkpakete basierend auf den Sequenznummern neu ordnen.
  • In Verwendung verfolgt der Zieldatenverarbeitungsknoten 108 die Sequenznummern der reihenfolgeveränderten Netzwerkpakete nach, die er empfangen hat. Dazu verfolgt der Zieldatenverarbeitungsknoten 108 eine erwartete Paketsequenznummer (z. B. unter Verwendung der letzten fortlaufend empfangenen Paketsequenznummer zum Bestimmen des Netzwerkpakets, das erwartungsgemäß als nächstes empfangen wird) und eine Bitmaske (d. h. Daten, die für bitweise Operationen in einem Bitfeld verwendbar sind), die Sequenznummern der reihenfolgeveränderten Netzwerkpakete darstellend, die durch den Zieldatenverarbeitungsknoten 108 empfangen wurden, nach.
  • Der Zieldatenverarbeitungsknoten 108 ist dazu ausgelegt, bei Aufbauen des Kommunikationskanals 104 eine kleine Größe an Fensterzustand (d. h. ein kleines Fenster) im Speicher zuzuordnen, in dem die Bitmaske gespeichert werden kann. In einem veranschaulichenden Beispiel, in dem der Zieldatenverarbeitungsknoten 108 fortlaufende Netzwerkpakete mit Sequenznummern zwischen 0 und 97 empfangen hat, würde die erwartete Paketsequenznummer Sequenznummer 98 entsprechen (d. h. das Netzwerkpaket, dem die Sequenznummer 98 zugeordnet ist). In einem solchen Beispiel verfolgt die Bitmaske in dem kleinen Fenster die reihenfolgeverändert empfangenen Netzwerkpakete nach, denen durch die Quelldatenverarbeitungsvorrichtung 102 die Sequenznummern 99 und darüber hinaus zugeordnet wurden.
  • Allerdings kann in einigen Fällen die Anzahl der Bits, die erforderlich sind, um die empfangenen reihenfolgeveränderten Netzwerkpakete in der Bitmaske darzustellen, für das kleine Fenster zu groß sein. Mit anderen Worten, die Anzahl der für das kleine Fenster zugeordneten Bits kann nicht ausreichend sein, um die Bitmaske zu behandeln. In solchen Fällen ist der Zieldatenverarbeitungsknoten 108 dazu ausgelegt, eine Größe an Fensterzustand zuzuordnen (d. h. ein Fenster, das groß genug ist, um die Größe der Bitmaske zu unterstützen), hier als ein großes Fenster bezeichnet, in dem die Bitmaske zu speichern ist. Entsprechend kann dann der Zieldatenverarbeitungsknoten 108 die Bitmaske, die vorher in dem kleinen Fenster gespeichert war, in das große Fenster verschieben, gegebenenfalls aktualisierend, um die empfangenen Netzwerkpakete zu berücksichtigen. Zusätzlich ist der Zieldatenverarbeitungsknoten 108 dazu ausgelegt, einen Zeiger auf ein großes Fenster (d. h. einen Zeiger auf die Speicheradresse, die dem großen Fenster, in dem die Bitmaske gespeichert ist, zugeordnet ist) in dem kleinen Fenster zu speichern, sodass der Zieldatenverarbeitungsknoten 108 in der Lage ist, den Zeiger in dem kleinen Fenster zu verwenden, um die Bitmaske aus dem großen Fenster abzurufen/zu aktualisieren.
  • Während nur ein einzelner Quelldatenverarbeitungsknoten 102 und ein einzelner Zieldatenverarbeitungsknoten 108 in dem veranschaulichenden System 100 gezeigt sind, versteht es sich, dass, in einigen alternativen Ausführungsformen, das System 100 einen oder mehrere Quelldatenverarbeitungsknoten 102 umfassen kann, die kommunikativ mit einem oder mehreren Zieldatenverarbeitungsknoten 108 gekoppelt sind. Eine solche beispielhafte alternative Ausführungsform umfasst viele (z. B. Zehntausende) Quelldatenverarbeitungsknoten 102, die mit wenigen (z. B. Zehner oder Hunderte) Zieldatenverarbeitungsknoten 108 kommunizieren, was dazu führt, dass eine große Anzahl von Verbindungen (d. h. Kommunikationskanälen 104) an jedem der Zieldatenverarbeitungsknoten 108 bei einer niedrigen Paketrate kommuniziert. Eine weitere solche beispielhafte alternative Ausführungsform umfasst wenige (z. B. Zehner oder Hunderte) Quelldatenverarbeitungsknoten 102, die mit vielen (z. B. Zehntausende) Zieldatenverarbeitungsknoten 108 kommunizieren, was dazu führt, dass eine kleine Anzahl von Verbindungen (d. h. Kommunikationskanälen 104) an jedem der Zieldatenverarbeitungsknoten 108 bei einer hohen Paketrate kommuniziert.
  • Der Zieldatenverarbeitungsknoten 108 kann als ein beliebiger Typ von Berechnungs- oder Datenverarbeitungsvorrichtung ausgeführt sein, die in der Lage ist, die hier beschriebenen Funktionen durchzuführen, einschließlich, unter anderem, ein Server (z. B. eigenständig, rackmontiert, Blade usw.), eine Netzwerkeinrichtung (z. B. physisch oder virtuell), eine Weiche, ein Router, eine Interneteinrichtung, ein verteiltes Datenverarbeitungssystem, ein prozessorbasiertes System, ein Mehrprozessorsystem und/oder jede andere Datenverarbeitungs-/Kommunikationsvorrichtung. Der veranschaulichende Zieldatenverarbeitungsknoten 108 umfasst einen Prozessor 110, ein Eingabe/Ausgabe-Teilsystem (E/A) 112, einen Speicher 114, eine Datenspeichervorrichtung 116 und eine Kommunikationsschaltungsanordnung 118. Natürlich kann, in anderen Ausführungsformen, der Zieldatenverarbeitungsknoten 108 andere oder zusätzliche Komponenten umfassen, wie etwa diejenigen, die üblicherweise in einer Netzwerkdatenverarbeitungsvorrichtung anzutreffen sind (z. B. verschiedene Eingabe/Ausgabe-Vorrichtungen). Zusätzlich können, in einigen Ausführungsformen, eine oder mehrere der veranschaulichenden Komponenten in eine andere Komponente integriert sein oder anderweitig einen Teil derselben bilden. Beispielsweise kann, in einigen Ausführungsformen, der Speicher 114, oder Teile davon, in den Prozessor 110 integriert sein. Ferner können, in einigen Ausführungsformen, eine oder mehrere der veranschaulichenden Komponenten vom Zieldatenverarbeitungsknoten 108 ausgelassen werden.
  • Der Prozessor 110 kann als ein beliebiger Typ von Prozessor ausgeführt sein, der in der Lage ist, die hier beschriebenen Funktionen durchzuführen. Beispielsweise kann der Prozessor 110 als ein Einzel- oder Mehrkernprozessor, ein Digitalsignalprozessor, eine Mikrosteuerung oder ein anderer Prozessor oder eine Verarbeitungs-/Steuerungsschaltung ausgeführt sein. In ähnlicher Weise kann der Speicher 114 als ein beliebiger Typ von flüchtigem oder nicht-flüchtigem Speicher oder Datenspeicher ausgeführt sein, der in der Lage ist, die hier beschriebenen Funktionen durchzuführen. Im Betrieb kann der Speicher 114 verschiedene Daten und Software, die während des Betriebs des Zieldatenverarbeitungsknotens 108 verwendet wurden, wie etwa Betriebssysteme, Anwendungen, Programme, Bibliotheken und Treiber, speichern.
  • Der Speicher 114 ist über das E/A-Teilsystem 112, das als Schaltungsanordnung und/oder Komponenten ausgeführt sein kann, um Eingabe-/Ausgabevorgänge mit dem Prozessor 110, dem Speicher 114 und anderen Komponenten des Zieldatenverarbeitungsknotens 108 zu erleichtern, kommunikativ mit dem Prozessor 110 gekoppelt. Beispielsweise kann das E/A-Teilsystem 112 als Speichersteuerungsknoten, Eingabe/Ausgabe-Steuerungsknoten, Firmwarevorrichtungen, Kommunikationsverbindungen (d. h. Punkt-zu-Punkt-Verbindungen, Busverbindungen, Drähte, Kabel, Lichtführungen, Leiterbahnen auf Leiterplatten usw.) und/oder andere Komponenten und Teilsysteme zum Erleichtern der Eingabe-/Ausgabevorgänge ausgeführt sein oder anderweitig solche umfassen. In einigen Ausführungsformen kann das E/A-Teilsystem 112 einen Teil eines Systems-on-a-Chip (SoC) bilden und, zusammen mit dem Prozessor 110, dem Speicher 114 und anderen Komponenten des Zieldatenverarbeitungsknotens 108, auf einem einzelnen integrierten Schaltungschip integriert sein.
  • Die Datenspeichervorrichtung 116 kann als beliebiger Typ von Vorrichtung oder Vorrichtungen ausgeführt sein, die für kurzfristige oder langfristige Speicherung von Daten ausgelegt ist bzw. sind, wie etwa, beispielsweise, Speichervorrichtungen und -schaltungen, Speicherkarten, Festplattenlaufwerke, Festkörperlaufwerke oder andere Datenspeichervorrichtungen. Die Datenspeichervorrichtung 116 und/oder der Speicher 114 können verschiedene Daten, wie hier beschrieben, speichern, einschließlich Betriebssysteme, Anwendungen, Programme, Bibliotheken, Treiber, Anweisungen usw., die von einem Prozessor (z. B. dem Prozessor 110) des Zieldatenverarbeitungsknotens 108 ausgeführt werden können.
  • Die Kommunikationsschaltungsanordnung 118 kann als beliebige Kommunikationsschaltung, Vorrichtung oder eine Sammlung davon ausgeführt sein, die in der Lage ist, einen Kommunikationskanal (z. B. den Kommunikationskanal 104) aufzubauen und Kommunikationen zwischen dem Zieldatenverarbeitungsknoten 108 und anderen abgesetzten Vorrichtungen (z. B. dem Quelldatenverarbeitungsknoten 102) über ein Netzwerk (z. B. das Netzwerk 106) zu ermöglichen. Die Kommunikationsschaltungsanordnung 118 kann dazu ausgelegt sein, eine beliebige oder mehrere Kommunikationstechnologien (z. B. drahtlose oder drahtgebundene Kommunikationstechnologien) und dazugehörige Protokolle (z. B. Ethernet, Bluetooth®, Wi-Fi®, WiMAX, LTE, 5G usw.) zu verwenden, um eine solche Kommunikation umzusetzen. In einigen Ausführungsformen ist die Kommunikationsschaltungsanordnung 118 ferner dazu ausgelegt, Hochgeschwindigkeitskommunikation (z. B. in einer Hochleistungs-Datenverarbeitungsumgebung (HPC, High-Performance Compute) mit anderen ähnlichen Datenverarbeitungsvorrichtungen durchzuführen.
  • Die veranschaulichende Kommunikationsschaltungsanordnung 118 umfasst eine Netzwerkschnittstellensteuerung (NIC, Network Interface Controller) 120, in Fabric-Verbindungen auch gewöhnlich als Host-Fabric-Schnittstelle (HFI, Host Fabric Interface) bezeichnet. Die NIC 120 kann als eine oder mehrere Einbaukarten, Tochterkarten, Netzwerkschnittstellenkarten, Steuerungschips, Chipsätze oder andere Vorrichtungen, die durch den Zieldatenverarbeitungsknoten 108 verwendet werden können, ausgeführt sein. Beispielsweise kann die NIC 120, in einigen Ausführungsformen, in den Prozessor 110 integriert sein, als eine mit dem E/A-Teilsystem 112 über einen Erweiterungsbus (z. B. PCI Express) gekoppelte Erweiterungskarte ausgeführt sein, Teil eines SoC sein, das einen oder mehrere Prozessoren umfasst, oder auf einem Mehrfachchipgehäuse enthalten sein, das auch einen oder mehrere Prozessoren enthält. Es versteht sich, dass, in einigen Ausführungsformen, die NIC 212 in der Lage sein kann, die unbelasteten Funktionen, wie hier beschrieben, durchzuführen. Zusätzlich oder alternativ dazu kann die NIC 212 in solchen Ausführungsformen einen lokalen Prozessor (nicht gezeigt) und/oder lokalen Speicher (nicht gezeigt) umfassen, die in der Lage sind, Daten lokal zu verarbeiten bzw. zu speichern, sodass ein Zustand des Zieldatenverarbeitungsknotens 108 nicht beeinträchtigt wird (d. h. keine Softwarelatenz eingebracht wird).
  • Der Quelldatenverarbeitungsknoten 102 kann als beliebiger Typ von Berechnungs- oder Datenverarbeitungsvorrichtung ausgeführt sein, die in der Lage ist, die hier beschriebenen Funktionen durchzuführen, einschließlich, unter anderem, einer tragbaren Datenverarbeitungsvorrichtung (z. B. Smartphone, Tablet, Laptop, Notebook, Wearable usw.), die mobile Hardware (z. B. Prozessor, Speicher, Speicherplatz, drahtlose Kommunikationsschaltungsanordnung usw.) und Software (z. B. ein Betriebssystem) zum Unterstützen einer mobilen Architektur und von Tragbarkeit umfasst, eines Personal Computers, eines Servers (z. B. eigenständig, rackmontiert, Blade usw.), einer Netzwerkeinrichtung (z. B. physisch oder virtuelle), einer Interneteinrichtung, eines verteilten Datenverarbeitungssystems, eines prozessorbasierten Systems, eines Mehrprozessorsystems und/oder einer beliebigen anderen Berechnungs-/Datenverarbeitungsvorrichtung. Daher kann der Quelldatenverarbeitungsknoten 102 gleiche und/oder ähnliche Komponenten wie der vorher beschriebene veranschaulichende Zieldatenverarbeitungsknoten 108 enthalten. Entsprechend versteht es sich, dass der Quelldatenverarbeitungsknoten 102 ähnliche Komponenten wie der veranschaulichende Zieldatenverarbeitungsknoten 108 umfassen kann, die hier aus Gründen der Klarheit der Beschreibung nicht beschrieben werden.
  • Das Netzwerk 106 kann als ein beliebiger Typ von drahtgebundenem oder drahtlosem Kommunikationsnetzwerk ausgeführt sein, einschließlich Mobilfunknetzwerke (z. B. GSM (Global System for Mobile Communications), 3G, LTE (Long Term Evolution), WiMAX (Worldwide Interoperability for Microwave Access) usw.), DSL-Netzwerke (Digital Subscriber Line), Kabelnetzwerke (z. B. Koaxialnetzwerke, Glasfasernetzwerke usw.), Telefonienetzwerke, Nahbereichsnetzwerke (LANs, Local Area Networks) oder Weitbereichsnetzwerke (WANs, Wide Area Networks), globaler Netzwerke (z. B. Internet) oder einer beliebigen Kombination daraus. Zusätzlich kann das Netzwerk 106 eine beliebige Anzahl von zusätzlichen Datenverarbeitungsvorrichtungen (d. h. Netzwerkvorrichtungen) (nicht gezeigt), physisch und/oder virtuell, umfassen, die gewöhnlich in Netzwerken zu finden sind, wie etwa Server, Weichen, Router, Zugangspunkte, Netzwerksteuerungen usw. Es versteht sich, dass, in einigen Ausführungsformen, das Netzwerk 106 als ein beliebiger Typ von paralleler und/oder verteilter Datenverarbeitungsarchitektur (z. B. eine Hochleistungs-Datenverarbeitungsnetzwerkarchitektur (HPC, High Performance Computing)) ausgeführt sein kann, die zu Hochgeschwindigkeits-Interkonnektivität mit niedriger Latenz in der Lage ist, wie etwa eine Cluster-Datenverarbeitungs-Netzwerkarchitektur und/oder eine Grid-Computing-Netzwerkarchitektur (z. B. eine Fabric-Datenverarbeitungs-Netzwerkarchitektur).
  • Jetzt Bezug nehmend auf 2 baut, in einer veranschaulichenden Ausführungsform, der Zieldatenverarbeitungsknoten 108 eine Umgebung 200 während des Betriebs auf. Die veranschaulichende Umgebung 200 umfasst ein Netzwerkkommunikationsverwaltungsmodul 210, ein Fensterzustandsnachverfolgungsmodul 220 und ein Netzwerkpaketverarbeitungsmodul 230. Jedes der Module, Logik und andere Komponenten der Umgebung 200 können als Hardware, Software, Firmware oder eine Kombination daraus ausgeführt sein. Beispielsweise können jedes der Module, Logik und andere Komponenten der Umgebung einen Teil des Prozessors 110 oder anderer Hardwarekomponenten des Zieldatenverarbeitungsknotens 108 bilden oder anderweitig dadurch aufgestellt sein. Daher können, in einigen Ausführungsformen, ein oder mehrere Module der Umgebung 200 als Schaltungsanordnungen oder eine Sammlung von elektrischen Vorrichtungen (z. B. Netzwerkkommunikationsverwaltungsschaltungsanordnung 210, eine Fensterzustandsnachverfolgungsschaltungsanordnung 220 und eine Netzwerkpaketverarbeitungsschaltungsanordnung 230 usw.) ausgeführt sein.
  • In der veranschaulichenden Umgebung 200 umfasst der Zieldatenverarbeitungsknoten 108 zusätzlich Kleines-Fenster-Daten 202, Großes-Fenster-Daten 204 und Paketsequenzdaten 206, die jeweils im Speicher 114 und/oder dem Datenspeicher 116 des Zieldatenverarbeitungsknotens 108 gespeichert sein können und auf die durch die verschiedenen Module und/oder Teilmodule des Zieldatenverarbeitungsknotens 108 zugegriffen werden kann. Jede der Kleines-Fenster-Daten 202, der Großes-Fenster-Daten 204 und der Paketsequenzdaten 206 kann im Speicher 114 und/oder im Datenspeicher 116 gespeichert werden. Es versteht sich, dass der Zieldatenverarbeitungsknoten 108 andere Komponenten, Unterkomponenten, Module, Teilmodule, Schaltungsanordnungen und/oder Vorrichtungen umfassen kann, die gewöhnlich in einem Datenverarbeitungsknoten eines Netzwerks zu finden sind, die aus Gründen der Klarheit der Beschreibung in 2 nicht dargestellt sind.
  • Das Netzwerkkommunikationsverwaltungsmodul 210 ist dazu ausgelegt, eingehende und abgehende Netzwerkkommunikationen (z. B. Netzwerkverkehr, Netzwerkpakete, Netzwerkflüsse usw.) zu und von dem Zieldatenverarbeitungsknoten 108 zu verwalten. Um dies zu erreichen, ist das Netzwerkkommunikationsverwaltungsmodul 210 dazu ausgelegt, Netzwerkpakete von anderen Datenverarbeitungsvorrichtungen (z. B. dem Quelldatenverarbeitungsknoten 102 und/oder anderen kommunikativ mit dem Zieldatenverarbeitungsknoten gekoppelten Datenverarbeitungsknoten) zu empfangen und zu verarbeiten. Zusätzlich ist das Netzwerkkommunikationsverwaltungsmodul 210 dazu ausgelegt, Netzwerkpakete zu einer anderen Datenverarbeitungsvorrichtung (z. B. dem Quelldatenverarbeitungsknoten 102 und/oder anderen kommunikativ mit dem Zieldatenverarbeitungsknoten gekoppelten Datenverarbeitungsknoten) vorzubereiten und zu senden. Entsprechend kann, in einigen Ausführungsformen, zumindest ein Teil der Funktionalität des Netzwerkkommunikationsverwaltungsmoduls 210 durch die Kommunikationsschaltungsanordnung 118 und insbesondere durch die NIC 120 durchgeführt werden.
  • Das Fensterzustandsnachverfolgungsmodul 220 ist dazu ausgelegt, die empfangenen reihenfolgeveränderten (d..h nicht in einer Sequenz angeordneten) Netzwerkpakete für jeden der Kommunikationskanäle des Zieldatenverarbeitungsknotens 108 nachzuverfolgen. Um dies zu erreichen, ist das Fensterzustandsnachverfolgungsmodul 220 dazu ausgelegt, die empfangenen reihenfolgeveränderten Netzwerkpakete für jeden der kommunikativ gekoppelten Quelldatenverarbeitungsknoten 102 über eine Paketsequenznummertabelle, die in den Paketsequenzdaten 206 gespeichert sein kann, nachzuverfolgen. Daher entspricht jeder Eintrag der Paketsequenznummerntabelle (siehe z. B. den Paketsequenznummertabelleneintrag 300 aus 3) einem der Quelldatenverarbeitungsknoten 102. Wie zuvor beschrieben, ist der Zieldatenverarbeitungsknoten 108 dazu ausgelegt, die empfangenen reihenfolgeveränderten Netzwerkpakete unter Verwendung von kleinen und großen Fenstern nachzuverfolgen, abhängig von der Größe des kleinen Fensters und der darin zu speichernden Bitmaske. Um zu unterscheiden, welcher Eintrag der Paketsequenznummerntabelle einem kleinen oder großen Fenster entspricht, kann ein Boolesches Bit (siehe z. B. den Fensterverwendungsindikator 304 aus 3) des Paketsequenznummerntabelleneintrags verwendet werden. In einer solchen Ausführungsform kann ein Wert von „0“ anzeigen, dass momentan ein kleines Fenster verwendet wird, um die empfangenen reihenfolgeveränderten Netzwerkpakete nachzuverfolgen; wohingegen ein Wert von „1“ verwendet werden kann, um anzuzeigen, dass momentan ein großes Fenster verwendet wird, um die empfangenen reihenfolgeveränderten Netzwerkpakete nachzuverfolgen.
  • Um die empfangenen reihenfolgeveränderten Netzwerkpakete für jeden der Kommunikationskanäle des Zieldatenverarbeitungsknotens 108 nachzuverfolgen, umfasst das veranschaulichende Fensterzustandsnachverfolgungsmodul 220 ein Kleines-Fenster-Verwaltungsmodul 222, ein Großes-Fenster-Verwaltungsmodul 224, ein Bitmaskenaktualisierungsmodul 226 und ein Paketsequenznummernaktualisierungsmodul 228. Wie zuvor beschrieben, wird ein kleiner Fensterzustand auf einer Pro-Peer-Basis (z. B. pro Quelldatenverarbeitungsknoten 102 oder pro Kommunikationskanal 104) für Netzwerkpakete nachverfolgt, die reihenfolgeverändert empfangen wurden. Entsprechend ist das Kleines-Fenster-Verwaltungsmodul 222 dazu ausgelegt, die kleinen Fenster zum Nachverfolgen der reihenfolgeveränderten Netzwerkpakete, die von jedem der Quelldatenverarbeitungsknoten 102 empfangen werden, die kommunikativ mit dem Zieldatenverarbeitungsknoten 108 gekoppelt sind, zu verwalten.
  • Um dies zu erreichen, ist das Kleines-Fenster-Verwaltungsmodul 222 dazu ausgelegt, einen Teil von Speicher mit einer Größe, die groß genug ist, um die Bitmaske oder einen Zeiger auf ein großes Fenster zu speichern, das zum Speichern der Bitmaske zugeordnet ist, zuzuordnen, wie nachfolgend ausführlicher beschrieben ist, in Abhängigkeit von der Größe der Bitmaske relativ zu den Netzwerkpaketen, die reihenfolgeverändert empfangen wurden. Entsprechend versteht es sich, dass die Größe des kleinen Fensters zumindest so groß wie der Zeiger ist, den es zu speichern angewiesen worden sein kann. Das Kleines-Fenster-Verwaltungsmodul 222 ist ferner dazu ausgelegt, den Indikator (z. B. den Fensterverwendungsindikator 304 aus 3) des zugehörigen Paketsequenznummerntabelleneintrags zu aktualisieren, um anzuzeigen, ob das kleine Fenster oder das große Fenster in Verwendung ist.
  • Wie ebenfalls bereits beschrieben, kann ein großes Fenster für den Quelldatenverarbeitungsknoten 102 zugeordnet werden, wie etwa, wenn der Zieldatenverarbeitungsknoten 108 bestimmt, dass die Bitmaske zum Nachverfolgen der empfangenen reihenfolgeveränderten Netzwerkpakete zu groß ist, um in dem kleinen Fenster gespeichert zu werden. Es versteht sich, dass, in einigen Ausführungsformen, das große Fenster zu dem Zeitpunkt zugeordnet werden kann, an dem die anfängliche Verbindung mit dem Quelldatenverarbeitungsknoten 102 aufgebaut wird. Entsprechend ist das Großes-Fenster-Verwaltungsmodul 224 dazu ausgelegt, die großen Fenster zum Nachverfolgen der reihenfolgeveränderten Netzwerkpakete, die von jedem der Quelldatenverarbeitungsknoten 102 empfangen werden, die kommunikativ mit dem Zieldatenverarbeitungsknoten 108 gekoppelt sind, für den die Bitmaske zu groß ist, um in dem kleinen Fenster gespeichert zu werden, zu verwalten. Um dies zu erreichen, ist das Großes-Fenster-Verwaltungsmodul 224 dazu ausgelegt, einen Teil von Speicher mit einer Größe, die groß genug ist, um die Bitmaske zu speichern, zuzuordnen. Das Großes-Fenster-Verwaltungsmodul 224 ist ferner dazu ausgelegt, (z. B. für das Kleines-Fenster-Verwaltungsmodul 222) einen Zeiger bereitzustellen, der einen Bezug zum großen Fenster beinhaltet (z. B. eine Adresse im Speicher , an der sich das große Fenster befindet), verwendbar, um im kleinen Fensterteil des zugehörigen Eintrags der Paketsequenznummerntabelle gespeichert zu werden (siehe z. B. das kleine Fenster 306).
  • Das Bitmaskenaktualisierungsmodul 226 ist dazu ausgelegt, die Bitmaske zu aktualisieren, die vom Zieldatenverarbeitungsknoten 108 zum Nachverfolgen der empfangenen reihenfolgeveränderten Netzwerkpakete verwendet wird. Entsprechend ist das Bitmaskenaktualisierungsmodul 226 dazu ausgelegt, die Bitmaske entweder im kleinen Fenster oder im großen Fenster zu aktualisieren. Um dies zu erreichen, ist das Bitmaskenaktualisierungsmodul 226 dazu ausgelegt, den Fensterverwendungsindikator 304 zu lesen und die Bitmaske am entsprechenden Ort (d. h. dem kleinen Fenster oder dem großen Fenster) zu aktualisieren.
  • Das Paketsequenznummernaktualisierungsmodul 228 ist dazu ausgelegt, die erwartete Paketsequenznummer zu aktualisieren, die vom Zieldatenverarbeitungsknoten 108 zum Nachverfolgen der empfangenen reihenfolgeveränderten Netzwerkpakete verwendet wird. Entsprechend ist das Paketsequenznummernaktualisierungsmodul 228 dazu ausgelegt, die erwartete Paketsequenznummer (siehe z. B. den ungeordneten Paketsequenznummernindikator 308 aus 3) zu aktualisieren, die der Quelldatenverarbeitungsvorrichtung 102 entspricht, von der die Netzwerkpakete empfangen wurden. Um dies zu erreichen, ist das Paketsequenznummernaktualisierungsmodul 228 dazu ausgelegt zu bestimmen, ob eine Paketsequenznummer des empfangenen reihenfolgeveränderten Netzwerkpakets der erwarteten Paketsequenznummer zu dem Zeitpunkt entspricht, an dem ein Netzwerkpaket am Zieldatenverarbeitungsknoten 108 empfangen wird, und gegebenenfalls die erwartete Paketsequenznummer zu aktualisieren.
  • Das Netzwerkpaketverarbeitungsmodul 230 ist dazu ausgelegt, das empfangene Netzwerkpaket zu verarbeiten. Beispielsweise kann, in einigen Ausführungsformen, das Netzwerkpaketverarbeitungsmodul 230 dazu ausgelegt sein, ein Leitungs-/Weiterleitungsnachschlagen durchzuführen, um einen Zieldatenverarbeitungsknoten zu bestimmen, eine oder mehrere Dienstfunktionen auf dem Netzwerkpaket auszuführen (z. B. Firewall, Netzwerkadressenübersetzung (NAT, Network Address Translation), Lastenausgleich, Deep Packet Inspection (DPI), TCP-Optimierungsdienste (Transmission Control Protocol) usw.), einen Kopf des Netzwerkpakets zu aktualisieren usw.
  • Jetzt Bezug nehmend auf 3, wird ein veranschaulichender Paketsequenznummerntabelleneintrag 300, wie etwa ein solcher, der in einer Paketsequenznummerntabelle gespeichert werden kann, durch den Zieldatenverarbeitungsknoten 108 erzeugt, um die empfangenen Pakete am Zieldatenverarbeitungsknoten 108 nachzuverfolgen. Der veranschaulichende Paketsequenznummerntabelleneintrag 300 umfasst einen Verbindungszustandsindikator 302, einen Fensterverwendungsindikator 304, ein kleines Fenster 306 und einen ungeordneten Paketsequenznummernindikator 308. Der Verbindungszustandsindikator ist verwendbar zum Speichern eines Booleschen Bits, das anzeigt, ob die zugehörige Verbindung (d. h. der Kommunikationskanal 104) zwischen dem Quelldatenverarbeitungsknoten 102 und dem Zieldatenverarbeitungsknoten 108 aktiv ist oder nicht.
  • Der Fensterverwendungsindikator 304 ist verwendbar zum Speichern eines Booleschen Bits, das anzeigt, ob das kleine Fenster 306 repräsentativ für ein kleines Fenster ist (d. h. die Bitmaske speichert) oder nicht (d. h. einen Zeiger auf ein großes Fenster speichert). Das kleine Fenster 306, wie bereits beschrieben, ist verwendbar zum Speichern einer Bitmaske entsprechend den empfangenen reihenfolgeveränderten Netzwerkpaketen oder eines Zeigers auf ein großes Fenster, in dem die Bitmaske gespeichert wurde. Der ungeordnete Paketsequenznummernindikator 308 ist verwendbar zum Speichern der erwarteten Paketsequenznummer entsprechend einer Paketsequenznummer entsprechend dem Netzwerkpaket, das erwartungsgemäß als nächstes empfangen wird (d. h. basierend auf fortlaufender sequenzieller Reihenfolge der zu empfangenden Paketsequenznummern). Wie zuvor beschrieben, wird jedem Netzwerkpaket vor dem Senden des Netzwerkpakets an den Zieldatenverarbeitungsknoten 108 durch den Quelldatenverarbeitungsknoten 102 eine Paketsequenznummer zugeordnet. Daher ist der ungeordnete Paketsequenznummernindikator 308 durch den Zieldatenverarbeitungsknoten 108 verwendbar, um zu bestimmen, welches reihenfolgeveränderte Netzwerkpaket das nächste durch den Zieldatenverarbeitungsknoten 108 vom Quelldatenverarbeitungsknoten 102 zu empfangende reihenfolgeveränderte Netzwerkpaket ist. In einigen Ausführungsformen kann die Paketsequenznummer in einem Kopf des Netzwerkpakets gespeichert sein.
  • Jetzt Bezug nehmend auf 4 und 5, kann der Zieldatenverarbeitungsknoten 108, in Verwendung, ein Verfahren 400 zum Nachverfolgen von reihenfolgeveränderten Netzwerkpaketen ausführen. Es versteht sich, dass, in einigen Ausführungsformen, das Verfahren 400 als verschiedene, auf einem computerlesbaren Medium gespeicherte Anweisungen ausgeführt sein kann, die durch den Prozessor 110, die NIC 120 und/oder andere Komponenten des Zieldatenverarbeitungsknotens 108 ausgeführt werden können, um den Zieldatenverarbeitungsknoten 108 zu veranlassen, das Verfahren 400 durchzuführen. Das computerlesbare Medium kann als ein beliebiger Typ von Medium ausgeführt sein, das durch den Zieldatenverarbeitungsknoten 108 gelesen werden kann, einschließlich, unter anderem, des Speichers 114, der Datenspeichervorrichtung 116, eines lokalen Speichers der Netzwerkschnittstellensteuerung 120, anderer Speicher oder Datenspeichervorrichtungen des Zieldatenverarbeitungsknotens 108, tragbarer Medien, die durch eine periphere Vorrichtung des Zieldatenverarbeitungsknotens 108 lesbar sind, und/oder anderer Medien.
  • Das Verfahren 400 beginnt bei Block 402, bei dem der Zieldatenverarbeitungsknoten 108 bestimmt, ob ein reihenfolgeverändertes Netzwerkpaket empfangen wurde. Wenn das der Fall ist, fährt Verfahren 400 bei Block 404 fort, bei dem der Zieldatenverarbeitungsknoten 108 eine Paketsequenznummer des empfangenen reihenfolgeveränderten Netzwerkpakets bestimmt. In einigen Ausführungsformen bestimmt der Zieldatenverarbeitungsknoten 108 bei Block 406 die Paketsequenz aus einem Kopf des empfangenen reihenfolgeveränderten Netzwerkpakets. Bei Block 408 bestimmt der Zieldatenverarbeitungsknoten 108, welcher Eintrag einer Paketsequenznummerntabelle dem Kommunikationskanal entspricht, über den das Netzwerkpaket empfangen wurde. Es versteht sich, dass ein zugehöriger Eintrag in der Paketsequenznummerntabelle nicht vorhanden sein muss, wie etwa, wenn ein vorheriger Kommunikationskanal mit dem Quelldatenverarbeitungsknoten 102 nicht aufgebaut wurde. Entsprechend kann der Zieldatenverarbeitungsknoten 108 den zugehörigen Eintrag erzeugen. Bei Block 410 ruft der Zieldatenverarbeitungsknoten 108 einen Fensterverwendungsindikator (z. B. den Fensterverwendungsindikator 304 des Paketsequenznummerntabelleneintrags 300 aus 3) aus dem zugehörigen Paketsequenznummerntabelleneintrag ab (z. B. dem Paketsequenznummerntabelleneintrag 300 aus 3).
  • Bei Block 412 bestimmt der Zieldatenverarbeitungsknoten 108, ob eine Bitmaske, die zum Nachverfolgen von vorher empfangenen reihenfolgeveränderten Netzwerkpaketen verwendet wird, in einem kleinen Fenster (z. B. dem kleinen Fenster 306) des zugehörigen Paketsequenznummerntabelleneintrags liegt. Wenn das der Fall ist, verzweigt das Verfahren 400 zu Block 414, bei dem der Zieldatenverarbeitungsknoten 108 die Bitmaske aus dem kleinen Fenster des zugehörigen Paketsequenznummerntabelleneintrags abruft. Bei Block 416 bestimmt der Zieldatenverarbeitungsknoten 108, ob das kleine Fenster die Paketsequenznummer in der Bitmaske nachverfolgen kann. Mit anderen Worten, der Zieldatenverarbeitungsknoten 108 bestimmt, ob die aktualisierte Bitmaske in das kleine Fenster passen würde (d. h. ob sie nicht zu groß zum Speichern ist).
  • Wenn das der Fall ist, verzweigt das Verfahren 400 zu Block 418, bei dem der Zieldatenverarbeitungsknoten 108 die Bitmaske des kleinen Fensters basierend auf der Paketsequenznummer aktualisiert. Bei Block 420 aktualisiert der Zieldatenverarbeitungsknoten 108 die erwartete Paketsequenznummer (d. h. den ungeordneten Paketsequenznummernindikator 308 des Paketsequenznummerntabelleneintrags 300 aus 3) des zugehörigen Eintrags. Wenn beispielsweise in einer Ausführungsform, in der die erwartete Paketsequenznummer einer Paketsequenznummer 17 entspricht und die Bitmaske anzeigt, dass Netzwerkpakete mit Sequenznummern zwischen 19 und 1039 empfangen wurden, der Paketsequenznummer des empfangenen Netzwerkpakets Paketsequenznummer 17 zugeordnet wurde, würde der Zieldatenverarbeitungsknoten 108 die erwartete Paketsequenznummer aktualisieren (d. h. die erwartete Paketsequenznummer inkrementieren), um widerzuspiegeln, dass die nächste erwartete Paketsequenznummer die Paketsequenznummer 18 ist. Zusätzlich würde der Zieldatenverarbeitungsknoten 108 die Bitmaske aktualisieren (d. h. den in der Bitmaske repräsentierten Vektor um ein Bit verschieben), um die Paketsequenznummer des empfangenen Netzwerkpakets widerzuspiegeln.
  • Wenn der Zieldatenverarbeitungsknoten 108 in Block 416 bestimmt, dass das kleine Fenster die Paketsequenznummer in der Bitmaske nicht nachverfolgen kann (d. h. dass das kleine Fenster nicht groß genug ist), verzweigt das Verfahren zu Block 426 aus 5. Bei Block 426 (d. h. erreicht von Block 416) ordnet der Zieldatenverarbeitungsknoten 108 ein großes Fenster zu. Dazu ordnet, in einigen Ausführungsformen, der Zieldatenverarbeitungsknoten 108 bei Block 428 eine Größe des großen Fensters basierend auf einer Größe der in dem großen Fenster zu speichernden Bitmaske zu. Bei Block 430 speichert der Zieldatenverarbeitungsknoten 108 die Bitmaske in dem großen Fenster. Bei Block 432 speichert der Zieldatenverarbeitungsknoten 108 einen Zeiger auf das große Fenster in dem kleinen Fenster des zugehörigen Paketsequenznummerntabelleneintrags, bevor das Verfahren 400 zu Block 402 zurückkehrt, um zu bestimmen, ob ein weiteres reihenfolgeverändertes Netzwerkpaket empfangen wurde.
  • Erneut Bezug nehmend auf Block 412 aus 4, wenn der Zieldatenverarbeitungsknoten 108 bestimmt, dass die Bitmaske nicht in dem kleinen Fenster ist (d. h., dass das kleine Fenster einen Zeiger auf ein zum Speichern der Bitmaske zugeordnetes großes Fenster enthält), verzweigt das Verfahren 400 zu Block 422. Bei Block 422 ruft der Zieldatenverarbeitungsknoten 108 den Zeiger auf das große Fenster aus dem kleinen Fenster des zugehörigen Paketsequenznummerntabelleneintrags ab. Bei Block 424 ruft der Zieldatenverarbeitungsknoten 108 die Bitmaske aus dem großen Fenster unter Verwendung des in Block 422 abgerufenen Zeigers ab, bevor das Verfahren 400 bei Block 434 aus 5 fortfährt, was nachfolgend beschrieben wird.
  • Bei Block 434 aktualisiert der Zieldatenverarbeitungsknoten 108 die Bitmaske des großen Fensters basierend auf einer Paketsequenznummer des Netzwerkpakets. Bei Block 436 aktualisiert der Zieldatenverarbeitungsknoten 108 die erwartete Paketsequenznummer (d. h. den ungeordneten Paketsequenznummernindikator 308 aus 3) des zugehörigen Eintrags. Bei Block 438 bestimmt der Zieldatenverarbeitungsknoten 108, ob die reihenfolgeveränderten Netzwerkpakete mit einem kleinen Fenster nachverfolgt werden sollen. Mit anderen Worten, der Zieldatenverarbeitungsknoten 108 bestimmt, ob die Bitmaske jetzt nach dem Aktualisieren in das kleine Fenster passen kann oder ob alle erwarteten Netzwerkpaket(e) empfangen wurden, dadurch anzeigend, dass keine weitere Nachverfolgung erforderlich ist. Wenn das nicht der Fall ist, kehrt das Verfahren 400 zu Block 402 zurück, um zu bestimmen, ob ein weiteres reihenfolgeverändertes Netzwerkpaket empfangen wurde; andernfalls fährt das Verfahren 400 bei Block 440 fort.
  • Bei Block 440 speichert der Zieldatenverarbeitungsknoten 108 die Bitmaske in dem kleinen Fenster, um künftige erwartete reihenfolgeveränderte Paketsequenznummern nachzuverfolgen. In einigen Ausführungsformen gibt der Zieldatenverarbeitungsknoten 108 bei Block 442 das große Fenster frei (d. h., dass der zum Speichern des großen Fensters zugeordnete Speicher freigegeben wird). Alternativ markiert der Zieldatenverarbeitungsknoten 108 bei Block 444 das große Fenster als verfügbar. Es versteht sich, dass, in einigen Ausführungsformen, das als verfügbar markierte große Fenster dem ursprünglichen Quelldatenverarbeitungsknoten 102 zugeordnet bleiben kann, für den das große Fenster ursprünglich zugeordnet war. Ausgehend von Block 444 kehrt das Verfahren 400 zu Block 402 zurück, um zu bestimmen, ob ein weiteres reihenfolgeverändertes Netzwerkpaket empfangen wurde.
  • BEISPIELE
  • Veranschaulichende Beispiele der hier offenbarten Technologien werden nachfolgend bereitgestellt. Eine Ausführungsform der Technologien kann eines oder mehrere, und eine beliebige Kombination, der nachfolgend beschriebenen Beispiele umfassen.
  • Beispiel 1 umfasst einen Zieldatenverarbeitungsknoten zum Nachverfolgen von reihenfolgeveränderten Netzwerkpaketen, wobei der Zieldatenverarbeitungsknoten einen oder mehrere Prozessoren umfasst; und wobei eine oder mehrere Speichervorrichtungen darin mehrere Anweisungen gespeichert haben, die, wenn durch den einen oder die mehreren Prozessoren ausgeführt, den Zieldatenverarbeitungsknoten veranlassen, einen Kommunikationskanal mit einem Quelldatenverarbeitungsknoten über ein Netzwerk aufzubauen; einen Eintrag einer Paketsequenznummerntabelle entsprechend dem Kommunikationskanal zu erzeugen, wobei der Eintrag ein kleines Fenster umfasst, das einen Teil von Speicher des Zieldatenverarbeitungsknotens definiert, der zum Speichern einer Bitmaske, die einer Anzahl von durch den Zieldatenverarbeitungsknoten über den Kommunikationskanal empfangenen reihenfolgeveränderten Netzwerkpaketen entspricht, zugeordnet ist; mehrere reihenfolgeveränderte Netzwerkpakete vom Quelldatenverarbeitungsknoten über den Kommunikationskanal zu empfangen; und die Bitmaske im kleinen Fenster der Paketsequenznummerntabelle zu aktualisieren entsprechend dem Kommunikationskanal als eine Funktion einer Paketsequenznummer von jedem der mehreren reihenfolgeveränderten Netzwerkpakete, die vom Quelldatenverarbeitungsknoten empfangen wurden.
  • Beispiel 2 umfasst den Gegenstand aus Beispiel 1, wobei Aktualisieren der Bitmaske in der Paketsequenznummerntabelle umfasst: (i) Bestimmen, ob eine Größe der Bitmaske größer als eine Größe des kleinen Fensters ist, (ii) Zuordnen, in Reaktion auf eine Bestimmung, dass die Größe der Bitmaske größer als die Größe des kleinen Fensters ist, eines großen Fensters, das einen weiteren Teil von Speicher des Zieldatenverarbeitungsknotens definiert, der zum Speichern der Bitmaske, die einer Anzahl von durch den Zieldatenverarbeitungsknoten über den Kommunikationskanal empfangenen reihenfolgeveränderten Netzwerkpaketen entspricht, zugeordnet ist, wobei eine Größe des großen Fensters die Größe der Bitmaske übersteigt, (iii) Speichern der Bitmaske in dem großen Fenster, und (iv) Speichern eines Zeigers auf das große Fenster in dem kleinen Fenster.
  • Beispiel 3 umfasst den Gegenstand aus einem der Beispiele 1 und 2, wobei die mehreren Anweisungen ferner den Zieldatenverarbeitungsknoten veranlassen, ein zusätzliches reihenfolgeverändertes Netzwerkpaket zu empfangen; die Bitmaske in dem großen Fenster zu aktualisieren als eine Funktion des empfangenen zusätzlichen reihenfolgeveränderten Netzwerkpakets; zu bestimmen, ob eine Größe der aktualisierten Bitmaske größer als die Größe des kleinen Fensters ist; und, in Reaktion auf die Bestimmung, dass die Größe der aktualisierten Bitmaske nicht größer als die Größe des kleinen Fensters ist, den Zeiger auf das große Fenster durch die aktualisierte Bitmaske zu ersetzen.
  • Beispiel 4 umfasst den Gegenstand aus einem der Beispiele 1-3, wobei die mehreren Anweisungen ferner den Zieldatenverarbeitungsknoten veranlassen, im Anschluss an die Bestimmung, dass keine zusätzlichen Netzwerkpakete nachverfolgt werden, den dem großen Fenster zugeordneten Speicher freizugeben.
  • Beispiel 5 umfasst den Gegenstand aus einem der Beispiele 1-4, wobei die mehreren Anweisungen ferner den Zieldatenverarbeitungsknoten veranlassen, im Anschluss an die Bestimmung, dass keine zusätzlichen Netzwerkpakete nachverfolgt werden, das große Fenster als verfügbar und dem Quelldatenverarbeitungsknoten zugeordnet zu markieren.
  • Beispiel 6 umfasst den Gegenstand aus einem der Beispiele 1-5, wobei der Eintrag zusätzlich einen Verbindungszustandsindikator umfasst, um anzuzeigen, ob der Kommunikationskanal aktiv ist.
  • Beispiel 7 umfasst den Gegenstand aus einem der Beispiele 1-6, wobei der Eintrag zusätzlich einen ungeordneten Paketsequenznummernindikator umfasst, der einer Paketsequenznummer des nächsten erwarteten Netzwerkpakets entspricht.
  • Beispiel 8 umfasst den Gegenstand aus einem der Beispiele 1-7, wobei der Eintrag zusätzlich einen Fensterverwendungsindikator umfasst, um anzuzeigen, ob das kleine Fenster einer Bitmaske oder einem Zeiger auf ein großes Fenster, in dem die Bitmaske gespeichert ist, entspricht.
  • Beispiel 9 umfasst ein Verfahren zum Nachverfolgen von reihenfolgeveränderten Netzwerkpaketen, wobei das Verfahren umfasst: Aufbauen, durch einen Zieldatenverarbeitungsknoten, eines Kommunikationskanals mit einem Quelldatenverarbeitungsknoten über ein Netzwerk; Erzeugen, durch den Zieldatenverarbeitungsknoten, eines Eintrags einer Paketsequenznummerntabelle entsprechend dem Kommunikationskanal, wobei der Eintrag ein kleines Fenster umfasst, das einen Teil von Speicher des Zieldatenverarbeitungsknotens definiert, der zum Speichern einer Bitmaske, die einer Anzahl von durch den Zieldatenverarbeitungsknoten über den Kommunikationskanal empfangenen reihenfolgeveränderten Netzwerkpaketen entspricht, zugeordnet ist; Empfangen, durch den Zieldatenverarbeitungsknoten, von mehreren reihenfolgeveränderten Netzwerkpaketen vom Quelldatenverarbeitungsknoten über den Kommunikationskanal; und Aktualisieren, durch den Zieldatenverarbeitungsknoten, der Bitmaske im kleinen Fenster der Paketsequenznummerntabelle entsprechend dem Kommunikationskanal als eine Funktion einer Paketsequenznummer von jedem der mehreren reihenfolgeveränderten Netzwerkpakete, die vom Quelldatenverarbeitungsknoten empfangen wurden.
  • Beispiel 10 umfasst den Gegenstand aus Beispiel 9, wobei Aktualisieren der Bitmaske in der Paketsequenznummerntabelle umfasst: Bestimmen, durch den Zieldatenverarbeitungsknoten, ob eine Größe der Bitmaske größer als eine Größe des kleinen Fensters ist; Zuordnen, durch den Zieldatenverarbeitungsknoten, in Reaktion auf eine Bestimmung, dass die Größe der Bitmaske größer als die Größe des kleinen Fensters ist, eines großen Fensters, das einen weiteren Teil von Speicher des Zieldatenverarbeitungsknotens definiert, der zum Speichern der Bitmaske, die einer Anzahl von durch den Zieldatenverarbeitungsknoten über den Kommunikationskanal empfangenen reihenfolgeveränderten Netzwerkpaketen entspricht, zugeordnet ist, wobei eine Größe des großen Fensters die Größe der Bitmaske übersteigt, Speichern, durch den Zieldatenverarbeitungsknoten, der Bitmaske in dem großen Fenster; und Speichern, durch den Zieldatenverarbeitungsknoten, eines Zeigers auf das große Fenster in dem kleinen Fenster.
  • Beispiel 11 umfasst den Gegenstand aus einem der Beispiele 9 und 10, ferner umfassend: Empfangen, durch den Zieldatenverarbeitungsknoten, eines zusätzlichen reihenfolgeveränderten Netzwerkpakets; Aktualisieren, durch den Zieldatenverarbeitungsknoten, der Bitmaske in dem großen Fenster als eine Funktion des empfangenen zusätzlichen reihenfolgeveränderten Netzwerkpakets; Bestimmen, durch den Zieldatenverarbeitungsknoten, ob eine Größe der aktualisierten Bitmaske größer als die Größe des kleinen Fensters ist; und Ersetzen, durch den Zieldatenverarbeitungsknoten und in Reaktion auf die Bestimmung, dass die Größe der aktualisierten Bitmaske nicht größer als die Größe des kleinen Fensters ist, den Zeiger auf das große Fenster durch die aktualisierte Bitmaske.
  • Beispiel 12 umfasst den Gegenstand aus einem der Beispiele 9-11, und ferner umfassend Freigeben, durch den Zieldatenverarbeitungsknoten und im Anschluss an die Bestimmung, dass keine zusätzlichen Netzwerkpakete nachverfolgt werden, des dem großen Fenster zugeordneten Speichers.
  • Beispiel 13 umfasst den Gegenstand aus einem der Beispiele 9-12, und ferner umfassend Markieren, durch den Zieldatenverarbeitungsknoten und im Anschluss an die Bestimmung, dass keine zusätzlichen Netzwerkpakete nachverfolgt werden, des großen Fensters als verfügbar und dem Quelldatenverarbeitungsknoten zugeordnet.
  • Beispiel 14 umfasst den Gegenstand aus einem der Beispiele 9-13, wobei Erzeugen des Eintrags Erzeugen eines Verbindungszustandsindikators umfasst, um anzuzeigen, ob der Kommunikationskanal aktiv ist.
  • Beispiel 15 umfasst den Gegenstand aus einem der Beispiele 9-14, wobei Erzeugen des Eintrags Erzeugen eines ungeordneten Paketsequenznummernindikators umfasst, der einer Paketsequenznummer des nächsten erwarteten Netzwerkpakets entspricht.
  • Beispiel 16 umfasst den Gegenstand aus einem der Beispiele 9-15, wobei Erzeugen des Eintrags Erzeugen eines Fensterverwendungsindikators umfasst, um anzuzeigen, ob das kleine Fenster einer Bitmaske oder einem Zeiger auf ein großes Fenster, in dem die Bitmaske gespeichert ist, entspricht.
  • Beispiel 17 umfasst einen Zieldatenverarbeitungsknoten, umfassend einen Prozessor; und einen Speicher, auf dem mehrere Anweisungen gespeichert sind, die, wenn durch den Prozessor ausgeführt, den Zieldatenverarbeitungsknoten veranlassen, das Verfahren aus einem der Beispiele 9-16 durchzuführen.
  • Beispiel 18 umfasst ein oder mehrere maschinenlesbare Speichermedien, umfassend mehrere darauf gespeicherte Anweisungen, die in Reaktion auf Ausführen derselben bewirken, dass ein Zieldatenverarbeitungsknoten das Verfahren aus einem der Beispiele 9-16 durchführt.
  • Beispiel 19 umfasst einen Zieldatenverarbeitungsknoten zum Nachverfolgen von reihenfolgeveränderten Netzwerkpaketen, wobei der Zieldatenverarbeitungsknoten umfasst: Netzwerkkommunikationsverwaltungsschaltungsanordnung zum Aufbauen eines Kommunikationskanals mit einem Quelldatenverarbeitungsknoten über ein Netzwerk; und eine Fensterzustandsnachverfolgungsschaltungsanordnung zum Erzeugen eines Eintrags einer Paketsequenznummerntabelle entsprechend dem Kommunikationskanal, wobei der Eintrag ein kleines Fenster umfasst, das einen Teil von Speicher des Zieldatenverarbeitungsknotens definiert, der zum Speichern einer Bitmaske, die einer Anzahl von durch den Zieldatenverarbeitungsknoten über den Kommunikationskanal empfangenen reihenfolgeveränderten Netzwerkpaketen entspricht, zugeordnet ist; wobei die Netzwerkkommunikationsverwaltungsschaltungsanordnung ferner dazu bestimmt ist, mehrere reihenfolgeveränderte Netzwerkpakete vom Quelldatenverarbeitungsknoten über den Kommunikationskanal zu empfangen; und wobei die Fensterzustandsnachverfolgungsschaltungsanordnung ferner dazu bestimmt ist, die Bitmaske im kleinen Fenster der Paketsequenznummerntabelle zu aktualisieren entsprechend dem Kommunikationskanal als eine Funktion einer Paketsequenznummer von jedem der mehreren reihenfolgeveränderten Netzwerkpakete, die vom Quelldatenverarbeitungsknoten empfangen wurden.
  • Beispiel 20 umfasst den Gegenstand aus Beispiel 19, wobei Aktualisieren der Bitmaske in der Paketsequenznummerntabelle umfasst: (i) Bestimmen, ob eine Größe der Bitmaske größer als eine Größe des kleinen Fensters ist, (ii) Zuordnen, in Reaktion auf eine Bestimmung, dass die Größe der Bitmaske größer als die Größe des kleinen Fensters ist, eines großen Fensters, das einen weiteren Teil von Speicher des Zieldatenverarbeitungsknotens definiert, der zum Speichern der Bitmaske, die einer Anzahl von durch den Zieldatenverarbeitungsknoten über den Kommunikationskanal empfangenen reihenfolgeveränderten Netzwerkpaketen entspricht, zugeordnet ist, wobei eine Größe des großen Fensters die Größe der Bitmaske übersteigt, (iii) Speichern der Bitmaske in dem großen Fenster, und (iv) Speichern eines Zeigers auf das große Fenster in dem kleinen Fenster.
  • Beispiel 21 umfasst den Gegenstand aus einem der Beispiele 19 und 20, wobei die Netzwerkkommunikationsverwaltungsschaltungsanordnung ferner dazu bestimmt ist, ein zusätzliches reihenfolgeverändertes Netzwerkpaket zu empfangen; wobei die Fensterzustandsnachverfolgungsschaltungsanordnung ferner dazu bestimmt ist, (i) die Bitmaske in dem großen Fenster zu aktualisieren als eine Funktion des empfangenen zusätzlichen reihenfolgeveränderten Netzwerkpakets; (ii) zu bestimmen, ob eine Größe der aktualisierten Bitmaske größer als die Größe des kleinen Fensters ist; und (iii) in Reaktion auf die Bestimmung, dass die Größe der aktualisierten Bitmaske nicht größer als die Größe des kleinen Fensters ist, den Zeiger auf das große Fenster durch die aktualisierte Bitmaske zu ersetzen.
  • Beispiel 22 umfasst den Gegenstand aus einem der Beispiele 19-21, wobei die Fensterzustandsnachverfolgungsschaltungsanordnung ferner dazu bestimmt ist, im Anschluss an die Bestimmung, dass keine zusätzlichen Netzwerkpakete nachverfolgt werden, den dem großen Fenster zugeordneten Speicher freizugeben.
  • Beispiel 23 umfasst den Gegenstand aus einem der Beispiele 19-22, wobei die Fensterzustandsnachverfolgungsschaltungsanordnung ferner dazu dient, im Anschluss an die Bestimmung, dass keine zusätzlichen Netzwerkpakete nachverfolgt werden, das große Fenster als verfügbar und dem Quelldatenverarbeitungsknoten zugeordnet zu markieren.
  • Beispiel 24 umfasst den Gegenstand aus einem der Beispiele 19-23, wobei der Eintrag zusätzlich einen Verbindungszustandsindikator umfasst, um anzuzeigen, ob der Kommunikationskanal aktiv ist.
  • Beispiel 25 umfasst den Gegenstand aus einem der Beispiele 19-24, wobei der Eintrag zusätzlich einen ungeordneten Paketsequenznummernindikator umfasst, der einer Paketsequenznummer des nächsten erwarteten Netzwerkpakets entspricht.
  • Beispiel 26 umfasst den Gegenstand aus einem der Beispiele 19-25, wobei der Eintrag zusätzlich einen Fensterverwendungsindikator umfasst, um anzuzeigen, ob das kleine Fenster einer Bitmaske oder einem Zeiger auf ein großes Fenster, in dem die Bitmaske gespeichert ist, entspricht.
  • Beispiel 27 umfasst einen Zieldatenverarbeitungsknoten zum Nachverfolgen von reihenfolgeveränderten Netzwerkpaketen, wobei der Zieldatenverarbeitungsknoten umfasst: Netzwerkkommunikationsverwaltungsschaltungsanordnung zum Aufbauen eines Kommunikationskanals mit einem Quelldatenverarbeitungsknoten über ein Netzwerk; und Mittel zum Erzeugen eines Eintrags einer Paketsequenznummerntabelle entsprechend dem Kommunikationskanal, wobei der Eintrag ein kleines Fenster umfasst, das einen Teil von Speicher des Zieldatenverarbeitungsknotens definiert, der zum Speichern einer Bitmaske, die einer Anzahl von durch den Zieldatenverarbeitungsknoten über den Kommunikationskanal empfangenen reihenfolgeveränderten Netzwerkpaketen entspricht, zugeordnet ist; wobei die Netzwerkkommunikationsverwaltungsschaltungsanordnung ferner dazu bestimmt ist, mehrere reihenfolgeveränderte Netzwerkpakete vom Quelldatenverarbeitungsknoten über den Kommunikationskanal zu empfangen; und ferner umfassend Mittel zum Aktualisieren der Bitmaske im kleinen Fenster der Paketsequenznummerntabelle entsprechend dem Kommunikationskanal als eine Funktion einer Paketsequenznummer von jedem der mehreren reihenfolgeveränderten Netzwerkpakete, die vom Quelldatenverarbeitungsknoten empfangen wurden.
  • Beispiel 28 umfasst den Gegenstand aus Beispiel 27, wobei die Mittel zum Aktualisieren der Bitmaske in der Paketsequenznummerntabelle Mittel umfassen zum: (i) Bestimmen, ob eine Größe der Bitmaske größer als eine Größe des kleinen Fensters ist, (ii) Zuordnen, in Reaktion auf eine Bestimmung, dass die Größe der Bitmaske größer als die Größe des kleinen Fensters ist, eines großen Fensters, das einen weiteren Teil von Speicher des Zieldatenverarbeitungsknotens definiert, der zum Speichern der Bitmaske, die einer Anzahl von durch den Zieldatenverarbeitungsknoten über den Kommunikationskanal empfangenen reihenfolgeveränderten Netzwerkpaketen entspricht, zugeordnet ist, wobei eine Größe des großen Fensters die Größe der Bitmaske übersteigt, (iii) Speichern der Bitmaske in dem großen Fenster, und (iv) Speichern eines Zeigers auf das große Fenster in dem kleinen Fenster.
  • Beispiel 29 umfasst den Gegenstand aus einem der Beispiele 27 und 28, wobei die Netzwerkkommunikationsverwaltungsschaltungsanordnung ferner dazu bestimmt ist, ein zusätzliches reihenfolgeverändertes Netzwerkpaket zu empfangen; ferner Mittel umfassend zum: (i) Aktualisieren der Bitmaske in dem großen Fenster als eine Funktion des empfangenen zusätzlichen reihenfolgeveränderten Netzwerkpakets; (ii) Bestimmen, ob eine Größe der aktualisierten Bitmaske größer als die Größe des kleinen Fensters ist; und (iii) Ersetzen, in Reaktion auf die Bestimmung, dass die Größe der aktualisierten Bitmaske nicht größer als die Größe des kleinen Fensters ist, des Zeigers auf das große Fenster durch die aktualisierte Bitmaske.
  • Beispiel 30 umfasst den Gegenstand aus einem der Beispiele 27-29, und ferner umfassend Mittel zum Freigeben, im Anschluss an die Bestimmung, dass keine zusätzlichen Netzwerkpakete nachverfolgt werden, des dem großen Fenster zugeordneten Speichers.
  • Beispiel 31 umfasst den Gegenstand aus einem der Beispiele 27-30, und ferner umfassend Mittel zum Markieren, im Anschluss an die Bestimmung, dass keine zusätzlichen Netzwerkpakete nachverfolgt werden, des großen Fensters als verfügbar und dem Quelldatenverarbeitungsknoten zugeordnet.
  • Beispiel 32 umfasst den Gegenstand aus einem der Beispiele 27-31, wobei der Eintrag zusätzlich einen Verbindungszustandsindikator umfasst, um anzuzeigen, ob der Kommunikationskanal aktiv ist.
  • Beispiel 33 umfasst den Gegenstand aus einem der Beispiele 27-32, wobei der Eintrag zusätzlich einen ungeordneten Paketsequenznummernindikator umfasst, der einer Paketsequenznummer des nächsten erwarteten Netzwerkpakets entspricht.
  • Beispiel 34 umfasst den Gegenstand aus einem der Beispiele 27-33, wobei der Eintrag zusätzlich einen Fensterverwendungsindikator umfasst, um anzuzeigen, ob das kleine Fenster einer Bitmaske oder einem Zeiger auf ein großes Fenster, in dem die Bitmaske gespeichert ist, entspricht.

Claims (18)

  1. Zieldatenverarbeitungsknoten zum Nachverfolgen von reihenfolgeveränderten Netzwerkpaketen, wobei der Zieldatenverarbeitungsknoten Folgendes umfasst: einen oder mehrere Prozessoren; und eine oder mehrere Speichervorrichtungen, auf denen mehrere Anweisungen gespeichert sind, die, wenn durch den einen oder die mehreren Prozessoren ausgeführt, den Zieldatenverarbeitungsknoten zu Folgendem veranlassen: Aufbauen eines Kommunikationskanals mit einem Quelldatenverarbeitungsknoten über ein Netzwerk; Erzeugen eines Eintrags einer Paketsequenznummerntabelle entsprechend dem Kommunikationskanal, wobei der Eintrag ein kleines Fenster umfasst, das einen Teil von Speicher des Zieldatenverarbeitungsknotens definiert, der zum Speichern einer Bitmaske, die einer Anzahl von durch den Zieldatenverarbeitungsknoten über den Kommunikationskanal empfangenen reihenfolgeveränderten Netzwerkpaketen entspricht, zugeordnet ist; Empfangen von mehreren reihenfolgeveränderten Netzwerkpaketen vom Quelldatenverarbeitungsknoten über den Kommunikationskanal; und Aktualisieren der Bitmaske im kleinen Fenster der Paketsequenznummerntabelle entsprechend dem Kommunikationskanal als eine Funktion einer Paketsequenznummer von jedem der mehreren reihenfolgeveränderten Netzwerkpakete, die vom Quelldatenverarbeitungsknoten empfangen wurden.
  2. Zieldatenverarbeitungsknoten nach Anspruch 1, wobei Aktualisieren der Bitmaske in der Paketsequenznummerntabelle umfasst: (i) Bestimmen, ob eine Größe der Bitmaske größer als eine Größe des kleinen Fensters ist, (ii) Zuordnen, in Reaktion auf eine Bestimmung, dass die Größe der Bitmaske größer als die Größe des kleinen Fensters ist, eines großen Fensters, das einen weiteren Teil von Speicher des Zieldatenverarbeitungsknotens definiert, der zum Speichern der Bitmaske, die einer Anzahl von durch den Zieldatenverarbeitungsknoten über den Kommunikationskanal empfangenen reihenfolgeveränderten Netzwerkpaketen entspricht, zugeordnet ist, wobei eine Größe des großen Fensters die Größe der Bitmaske übersteigt, (iii) Speichern der Bitmaske in dem großen Fenster, und (iv) Speichern eines Zeigers auf das große Fenster in dem kleinen Fenster.
  3. Zieldatenverarbeitungsknoten nach Anspruch 2, wobei die mehreren Anweisungen ferner den Zieldatenverarbeitungsknoten zu Folgendem veranlassen: Empfangen eines zusätzlichen reihenfolgeveränderten Netzwerkpakets; Aktualisieren der Bitmaske im großen Fenster als eine Funktion des empfangenen zusätzlichen reihenfolgeveränderten Netzwerkpakets; Bestimmen, ob eine Größe der aktualisierten Bitmaske größer als die Größe des kleinen Fensters ist; und Ersetzen, in Reaktion auf eine Bestimmung, dass die Größe der aktualisierten Bitmaske nicht größer als die Größe des kleinen Fensters ist, des Zeigers auf das große Fenster durch die aktualisierte Bitmaske.
  4. Zieldatenverarbeitungsknoten nach Anspruch 3, wobei die mehreren Anweisungen ferner den Zieldatenverarbeitungsknoten veranlassen, im Anschluss an die Bestimmung, dass keine zusätzlichen Netzwerkpakete nachverfolgt werden, den dem großen Fenster zugeordneten Speicher freizugeben.
  5. Zieldatenverarbeitungsknoten nach Anspruch 3, wobei die mehreren Anweisungen ferner den Zieldatenverarbeitungsknoten veranlassen, im Anschluss an die Bestimmung, dass keine zusätzlichen Netzwerkpakete nachverfolgt werden, das große Fenster als verfügbar und dem Quelldatenverarbeitungsknoten zugeordnet zu markieren.
  6. Zieldatenverarbeitungsknoten nach Anspruch 1, wobei der Eintrag zusätzlich einen Verbindungszustandsindikator umfasst, um anzuzeigen, ob der Kommunikationskanal aktiv ist.
  7. Zieldatenverarbeitungsknoten nach Anspruch 1, wobei der Eintrag zusätzlich einen ungeordneten Paketsequenznummernindikator umfasst, der einer Paketsequenznummer des nächsten erwarteten Netzwerkpakets entspricht.
  8. Zieldatenverarbeitungsknoten nach Anspruch 1, wobei der Eintrag zusätzlich einen Fensterverwendungsindikator umfasst, um anzuzeigen, ob das kleine Fenster der Bitmaske oder einem Zeiger auf ein großes Fenster, in dem die Bitmaske gespeichert ist, entspricht.
  9. Verfahren zum Nachverfolgen von reihenfolgeveränderten Netzwerkpaketen, wobei das Verfahren Folgendes umfasst: Aufbauen, durch einen Zieldatenverarbeitungsknoten, eines Kommunikationskanals mit einem Quelldatenverarbeitungsknoten über ein Netzwerk; Erzeugen, durch den Zieldatenverarbeitungsknoten, eines Eintrags einer Paketsequenznummerntabelle entsprechend dem Kommunikationskanal, wobei der Eintrag ein kleines Fenster umfasst, das einen Teil von Speicher des Zieldatenverarbeitungsknotens definiert, der zum Speichern einer Bitmaske, die einer Anzahl von durch den Zieldatenverarbeitungsknoten über den Kommunikationskanal empfangenen reihenfolgeveränderten Netzwerkpaketen entspricht, zugeordnet ist; Empfangen, durch den Zieldatenverarbeitungsknoten, von mehreren reihenfolgeveränderten Netzwerkpaketen vom Quelldatenverarbeitungsknoten über den Kommunikationskanal; und Aktualisieren, durch den Zieldatenverarbeitungsknoten, der Bitmaske im kleinen Fenster der Paketsequenznummerntabelle entsprechend dem Kommunikationskanal als eine Funktion einer Paketsequenznummer von jedem der mehreren reihenfolgeveränderten Netzwerkpakete, die vom Quelldatenverarbeitungsknoten empfangen wurden.
  10. Verfahren nach Anspruch 9, wobei Aktualisieren der Bitmaske in der Paketsequenznummerntabelle Folgendes umfasst: Bestimmen, durch den Zieldatenverarbeitungsknoten, ob eine Größe der Bitmaske größer als eine Größe des kleinen Fensters ist; Zuordnen, durch den Zieldatenverarbeitungsknoten und in Reaktion auf eine Bestimmung, dass die Größe der Bitmaske größer als die Größe des kleinen Fensters ist, eines großen Fensters, das einen weiteren Teil von Speicher des Zieldatenverarbeitungsknotens definiert, der zum Speichern der Bitmaske, die einer Anzahl von durch den Zieldatenverarbeitungsknoten über den Kommunikationskanal empfangenen reihenfolgeveränderten Netzwerkpaketen entspricht, zugeordnet ist, wobei eine Größe des großen Fensters die Größe der Bitmaske übersteigt; Speichern, durch den Zieldatenverarbeitungsknoten, der Bitmaske in dem großen Fenster; und Speichern, durch den Zieldatenverarbeitungsknoten, eines Zeigers auf das große Fenster im kleinen Fenster.
  11. Verfahren nach Anspruch 10, das ferner Folgendes umfasst: Empfangen, durch den Zieldatenverarbeitungsknoten, eines zusätzlichen reihenfolgeveränderten Netzwerkpakets; Aktualisieren, durch den Zieldatenverarbeitungsknoten, der Bitmaske im großen Fenster als eine Funktion des empfangenen zusätzlichen reihenfolgeveränderten Netzwerkpakets; Bestimmen, durch den Zieldatenverarbeitungsknoten, ob eine Größe der aktualisierten Bitmaske größer als die Größe des kleinen Fensters ist; und Ersetzen, durch den Zieldatenverarbeitungsknoten und in Reaktion auf eine Bestimmung, dass die Größe der aktualisierten Bitmaske nicht größer als die Größe des kleinen Fensters ist, des Zeigers auf das große Fenster durch die aktualisierte Bitmaske.
  12. Verfahren nach Anspruch 11, ferner umfassend Freigeben, durch den Zieldatenverarbeitungsknoten und im Anschluss an die Bestimmung, dass keine zusätzlichen Netzwerkpakete nachverfolgt werden, des dem großen Fenster zugeordneten Speichers.
  13. Verfahren nach Anspruch 11, ferner umfassend Markieren, durch den Zieldatenverarbeitungsknoten und im Anschluss an die Bestimmung, dass keine zusätzlichen Netzwerkpakete nachverfolgt werden, des großen Fensters als verfügbar und dem Quelldatenverarbeitungsknoten zugeordnet.
  14. Verfahren nach Anspruch 9, wobei Erzeugen des Eintrags Erzeugen eines Verbindungszustandsindikators umfasst, um anzuzeigen, ob der Kommunikationskanal aktiv ist.
  15. Verfahren nach Anspruch 9, wobei Erzeugen des Eintrags Erzeugen eines ungeordneten Paketsequenznummernindikators umfasst, der einer Paketsequenznummer des nächsten erwarteten Netzwerkpakets entspricht.
  16. Verfahren nach Anspruch 9, wobei Erzeugen des Eintrags Erzeugen eines Fensterverwendungsindikators umfasst, um anzuzeigen, ob das kleine Fenster der Bitmaske oder einem Zeiger auf ein großes Fenster, in dem die Bitmaske gespeichert ist, entspricht.
  17. Zieldatenverarbeitungsknoten, der Folgendes umfasst: einen Prozessor; und einen Speicher, auf dem mehrere Anweisungen gespeichert sind, die, wenn durch den Prozessor ausgeführt, den Zieldatenverarbeitungsknoten veranlassen, das Verfahren aus einem der Ansprüche 9-16 durchzuführen.
  18. Maschinenlesbares Speichermedium oder mehrere maschinenlesbare Speichermedien, umfassend mehrere darauf gespeicherte Anweisungen, die in Reaktion auf Ausführen derselben bewirken, dass ein Zieldatenverarbeitungsknoten das Verfahren aus einem der Ansprüche 9-16 durchführt.
DE112016005929.9T 2015-12-22 2016-11-22 Technologien zum Nachverfolgen von reihenfolgeveränderten Netzwerkpaketen Pending DE112016005929T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/979,131 2015-12-22
US14/979,131 US10348634B2 (en) 2015-12-22 2015-12-22 Technologies for tracking out-of-order network packets
PCT/US2016/063275 WO2017112241A1 (en) 2015-12-22 2016-11-22 Technologies for tracking out-of-order network packets

Publications (1)

Publication Number Publication Date
DE112016005929T5 true DE112016005929T5 (de) 2018-10-25

Family

ID=59066867

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112016005929.9T Pending DE112016005929T5 (de) 2015-12-22 2016-11-22 Technologien zum Nachverfolgen von reihenfolgeveränderten Netzwerkpaketen

Country Status (4)

Country Link
US (1) US10348634B2 (de)
CN (1) CN108293006B (de)
DE (1) DE112016005929T5 (de)
WO (1) WO2017112241A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11172016B2 (en) 2017-03-30 2021-11-09 Intel Corporation Device, method and system to enforce concurrency limits of a target node within a network fabric

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5151899A (en) 1991-02-11 1992-09-29 Digital Equipment Corporation Tracking sequence numbers in packet data communication system
US7349398B1 (en) 2001-12-31 2008-03-25 Redback Networks, Inc. Method and apparatus for out-of-order processing of packets
US7237262B2 (en) * 2002-07-09 2007-06-26 Itt Manufacturing Enterprises, Inc. System and method for anti-replay processing of a data packet
AU2003302800A1 (en) * 2002-12-12 2004-06-30 Koninklijke Philips Electronics N.V. A system and method using a circular buffer for detecting packet loss in streaming applications
US7477644B2 (en) * 2003-07-30 2009-01-13 International Business Machines Corporation Method and system of efficient packet reordering
US7382733B2 (en) * 2004-02-12 2008-06-03 International Business Machines Corporation Method for handling reordered data packets
US20050286526A1 (en) * 2004-06-25 2005-12-29 Sood Sanjeev H Optimized algorithm for stream re-assembly
US7912060B1 (en) * 2006-03-20 2011-03-22 Agere Systems Inc. Protocol accelerator and method of using same
US20070208820A1 (en) 2006-02-17 2007-09-06 Neteffect, Inc. Apparatus and method for out-of-order placement and in-order completion reporting of remote direct memory access operations
US8437739B2 (en) * 2007-08-20 2013-05-07 Qualcomm Incorporated Method and apparatus for generating a cryptosync
US8792495B1 (en) 2009-12-19 2014-07-29 Cisco Technology, Inc. System and method for managing out of order packets in a network environment
US10241799B2 (en) * 2010-07-16 2019-03-26 Qualcomm Incorporated Out-of-order command execution with sliding windows to maintain completion statuses
US8761147B2 (en) * 2011-01-17 2014-06-24 Texas Instruments Incorporated Selective protection based on sequence numbers in coexisting networks
US8761181B1 (en) * 2013-04-19 2014-06-24 Cubic Corporation Packet sequence number tracking for duplicate packet detection

Also Published As

Publication number Publication date
US20170180265A1 (en) 2017-06-22
CN108293006B (zh) 2021-09-07
WO2017112241A1 (en) 2017-06-29
CN108293006A (zh) 2018-07-17
US10348634B2 (en) 2019-07-09

Similar Documents

Publication Publication Date Title
DE102015118711B4 (de) Technologien zur Netzwerkpaketcacheverwaltung
DE102015102871B4 (de) Technologien für verteilten Leitweglenkungstabellennachschlag
DE112013003733B4 (de) Adaptive Paketumleitung, um angemessene, kostengünstige und/oder Energie-effiziente Dienstgüte im Netzwerk auf Chipvorrichtungen zu erreichen
DE112020002495T5 (de) System und verfahren zur erleichterung der betriebsverwaltung in einer netzwerkschnittstellensteuerung (nic) für beschleuniger
DE112013004750B4 (de) Verwaltung von Aushungern und Überlastung in einem zweidimensionalen Netz mit Flusskontrolle
DE102018006890A1 (de) Technologien zur Verarbeitung von Netzpaketen durch einen intelligenten Netzwerk-Schnittstellenkontroller
DE112017003279T5 (de) Grafikverarbeitungseinheit (gpu) für pakettransfer
DE112010004006T5 (de) Zuverlässige kommunikationen in chipintegrierten netzwerken
DE112017003324T5 (de) Technologien für adaptives Routing unter Verwendung aggregierter Überlastungsinformationen
DE112016005927T5 (de) Technologien zur Ablaufverfolgung der Seitenleistung im Netzwerkdatenverkehr
DE112012006227T5 (de) Remotezugriff auf den direkten Speicher mit reduzierter Latenzzeit
DE102019112772A1 (de) Technologien für eine dienstgütefrist-bewusste ende-zu-ende-e/a-planung
DE112012004551T5 (de) Mehrkernverknüpfung in einem Netzprozessor
DE112017003294T5 (de) Technologien für ein skalierbares Senden und Empfangen von Paketen
DE112004002043B4 (de) Verfahren, System und Programm zum Aufbau eines Pakets
DE112016004319T5 (de) Technologien zur Schätzung der Netzwerkpaketumlaufzeit
DE102019105288A1 (de) Technologien zur Paketweiterleitung bei Eingangswarteschlangenüberlauf
DE102018204861A1 (de) Einzelner Umsetzungstabelleneintrag für symmetrische Flüsse
DE112017004907T5 (de) System, Vorrichtung und Verfahren zur Durchführung einer verteilten Arbitration
DE102021207394A1 (de) Zusammenführen von paketen auf der grundlage von hinweisen, die vom netzwerkadapter erzeugt werden
DE112017001654T5 (de) Technologien für regionsgerichtete cacheverwaltung
DE102018204577A1 (de) Techniken zum Erfüllen von Dienstgüteanforderungen für eine Fabric-Punkt-zu-Punkt-Verbindung
DE112020003022T5 (de) Interconnect-Adressbasierte QOS-Regulierung
DE112012006148B4 (de) Verfahren, Vorrichtung und Maschinenlesbares Medium zur gemeinsamen Benutzung von Puffern für Verarbeitungselemente bei einem Netzwerkgerät
DE112017003018T5 (de) Technologien zum koordinieren des zugriffs auf datenpakete in einem speicher

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0012240000

Ipc: H04L0041000000