DE112016005989T5 - Zuverlässiges, ausserhalb der reihenfolge liegendes end-to-end-protokoll mit robustem fensterstatusüberlaufmanagement und einem mehrknotensystem durch verwenden desselben - Google Patents

Zuverlässiges, ausserhalb der reihenfolge liegendes end-to-end-protokoll mit robustem fensterstatusüberlaufmanagement und einem mehrknotensystem durch verwenden desselben Download PDF

Info

Publication number
DE112016005989T5
DE112016005989T5 DE112016005989.2T DE112016005989T DE112016005989T5 DE 112016005989 T5 DE112016005989 T5 DE 112016005989T5 DE 112016005989 T DE112016005989 T DE 112016005989T DE 112016005989 T5 DE112016005989 T5 DE 112016005989T5
Authority
DE
Germany
Prior art keywords
packet
packets
node
window
sequence number
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112016005989.2T
Other languages
English (en)
Inventor
Keith Underwood
Charles Giefer
Mark Debbage
Karl P. Brummel
Nathan S. Miller
Bruce M. Pirie
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 DE112016005989T5 publication Critical patent/DE112016005989T5/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
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • H04L1/1621Group acknowledgement, i.e. the acknowledgement message defining a range of identifiers, e.g. of sequence numbers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • H04L1/1635Cumulative acknowledgement, i.e. the acknowledgement message applying to all previous messages
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1829Arrangements specially adapted for the receiver end
    • H04L1/1832Details of sliding window management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/187Details of sliding window management
    • 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/18End to end
    • 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
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/58Changing or combining different scheduling modes, e.g. multimode scheduling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters

Landscapes

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

Abstract

In einer Ausführungsform wird ein außerhalb der Reihenfolge liegendes, zuverlässiges End-To-End-Protokoll bereitgestellt, das direkte Datenplatzierung und atomare Operationen auf Benutzerebene zwischen Knoten eines Mehrknotennetzwerks ermöglichen kann. Das Protokoll kann für verlustarme Umgebungen, wie zum Beispiel High-Performance-Computing (HPC) -Anwendungen, optimiert werden und kann die Verlusterkennung und De-Duplikation von Paketen durch das Verwenden eines robusten Fensterstatusmanagers an einem Zielknoten ermöglichen. Ein Mehrknotennetzwerk, das das Protokoll implementiert, kann erhöhte Systemzuverlässigkeit, Paketdurchsatz und erhöhte Toleranz für adaptiv gerouteten Verkehr haben, während es immer noch erlaubt, dass atomare Operationen idempotent direkt auf einen Benutzerspeicherplatz angewandt werden.

Description

  • FELD
  • Die vorliegende Offenbarung ist allgemein auf die Kommunikation zwischen Knoten eines Mehrknotennetzwerks und insbesondere auf ein End-To-End-Protokoll zum Ermöglichen zuverlässigen, außerhalb der Reihenfolge liegenden Empfangs von Paketen durch Verwenden eines robusten Fensterstatusüberlaufmanagements gerichtet.
  • REGIERUNGSRECHTE
  • Diese Erfindung wurde mit Regierungsunterstützung unter der vom Verteidigungsministerium erteilten Vertragsnummer H98230-13-D-0124 gemacht. Die Regierung hat bestimmte Rechte an dieser Erfindung.
  • HINTERGRUND
  • Die Verwendung einer großen Anzahl von Multicore-Prozessoren, kombiniert mit Zentralisierungsmethoden, nimmt bei Anwendungen, die rechenintensive Aufgaben aufweisen, weiterhin an Popularität zu. Zum Beispiel sind Systeme, die mit einer großen Anzahl von nahe beieinander angeordneten Rechenknoten implementiert und über Hochgeschwindigkeitsverbindungen gekoppelt sind, für Anwendungen wie Quantenmechanik, Wettervorhersage, Klimaforschung, Öl- und Gasexploration und molekulare Modellierung, um nur einige zu nennen, besonders gut geeignet. Diese Mehrknotensysteme können um viele Größenordnungen größere Verarbeitungskapazität als die eines einzelnen Computers bereitstellen. Diese Lücke wächst jedes Jahr exponentiell. Zum Beispiel haben einige Mehrknotensysteme Verarbeitungskapazität (allgemein bewertet durch Floating-Point-Operations-per-Second - FLOP) im Petaflops-Bereich.
  • Dieses Streben nach erhöhter Leistung hat zu Ansätzen geführt, die massiv parallele Systeme mit einer großen Anzahl von Rechenknoten beinhalten, wobei jeder Knoten einen oder mehrere Prozessoren, Speicher und eine Schnittstellenschaltung, die den Knoten mit einem Mehrknotennetzwerk verbindet, bereitstellt. In sogenannten „Fabric“-Netzwerkkonfigurationen, worin jeder Knoten potentiell eine Anzahl N von Pfaden zu anderen Knoten des Mehrknotennetzwerks hat, kann eine Sequenz von zusammenhängenden Paketen letztendlich unterschiedliche Pfade zwischen einem initiierenden Knoten und einem Zielknoten nehmen. Somit kann der Zielknoten eine überwiegend außerhalb der Reihenfolge liegende Sequenz von Paketen empfangen. Der Empfang von außerhalb der Reihenfolge liegenden Paketen stellt eine nicht unbedeutende Herausforderung beim Entwurf von Mehrknotensystemen dar.
  • Figurenliste
    • 1 ist ein Blockdiagramm eines beispielhaften Mehrknotennetzwerks mit mehreren miteinander verbundenen Knoten, gemäß einer Ausführungsform der vorliegenden Offenbarung.
    • 2 ist ein Blockdiagramm eines beispielhaften Knotens des Mehrknotennetzwerks von 1, gemäß einer Ausführungsform der vorliegenden Offenbarung.
    • 3A zeigt ein beispielhaftes Verfahren zum Initiieren einer End-To-End-Kommunikation zwischen einem initiierenden Knoten und einem Zielknoten des Mehrknotennetzwerks von 1, gemäß einer Ausführungsform der vorliegenden Offenbarung.
    • Die 3B-3D zeigen beispielhafte Paketübertragungssequenzen, die während der Ausführung des Verfahrens von 3A von einem initiierenden Knoten übertragen werden, gemäß einigen Ausführungsformen der vorliegenden Offenbarung.
    • 4 zeigt ein beispielhaftes Verfahren zum Bedienen einer End-To-End-Kommunikationsanforderung von einem initiierenden Knoten und zum Aufrechterhalten eines Fensterstatusmanagers, um während der End-To-End-Kommunikation empfangene außerhalb der Reihenfolge liegende Pakete zu erfassen, gemäß einer Ausführungsform der vorliegenden Offenbarung.
    • 5 veranschaulicht eine beispielhafte Paketübertragungssequenz und einen Fensterstatusmanager zum Verfolgen von Paketübertragungszuständen während der Ausführung des Verfahrens von 4, gemäß einer Ausführungsform der vorliegenden Offenbarung.
    • 6 veranschaulicht die beispielhafte Paketübertragungssequenz von 5, wobei der Fensterstatusmanager nach rechts verschoben ist, um zusätzliche während einer End-To-End-Kommunikation empfangene Pakete zu erfassen, gemäß einer Ausführungsform der vorliegenden Offenbarung.
    • 7 veranschaulicht einen beispielhaften End-To-End-Protokollfluss zwischen einem initiierenden Knoten und einem Zielknoten, gemäß einer Ausführungsform der vorliegenden Offenbarung.
    • 8 zeigt ein beispielhaftes Verfahren zum Empfangen periodischer spezieller Bestätigungspakete von einem Zielknoten, gemäß einer Ausführungsform der vorliegenden Offenbarung.
    • 9 veranschaulicht ein Datenverarbeitungssystem, das dazu ausgelegt ist, verschiedene hierin offenbarte Prozesse auszuführen, gemäß einer beispielhaften Ausführungsform der vorliegenden Offenbarung.
  • Diese und andere Merkmale der vorliegenden Ausführungsformen werden durch Lesen der folgenden ausführlichen Beschreibung zusammen mit den hierin beschriebenen Figuren besser verstanden. Die zugehörigen Zeichnungen sind nicht dazu beabsichtigt, maßstabsgetreu gezeichnet zu sein. In den Zeichnungen ist jede identische oder nahezu identische Komponente, die in verschiedenen Figuren veranschaulicht ist, durch eine gleiche Zahl dargestellt. Zum Zweck der Klarheit kann nicht jede Komponente in jeder Zeichnung gekennzeichnet sein.
  • AUSFÜHRLICHE BESCHREIBUNG
  • High-Performance-Computing (HPC) -Anwendungen können über eine Anzahl miteinander verbundener Knoten implementiert werden. Die miteinander verbundenen Knoten können ein sogenanntes „Fabric“ bilden, wobei jeder Knoten mit jedem anderen Knoten über ein Netzwerk kommunizierend gekoppelt ist. In einer Ausführungsform kann Kommunikation zwischen Knoten während der Ausführung einer HPC-Anwendung auftreten. Kommunikation zwischen Knoten kann einen initiierenden Knoten beinhalten, der eine Sequenz von Paketen an einen Zielknoten sendet. Die Sequenz von Paketen kann zum Beispiel mit Gets oder Sets in Verbindung stehen, die versuchen, mit dem Zielknoten verbundenen Speicher zu lesen oder in diesen zu schreiben. Der initiierende Knoten muss gewährleisten, dass jedes Paket erfolgreich von dem Zielknoten empfangen wurde. Andererseits muss der Zielknoten gewährleisten, dass jedes Paket nur einmal empfangen und angewandt wird. Zum Beispiel sollen Speicheroperationen, wie zum Beispiel atomare Operationen, einmal ausgeführt werden, wobei jeder nachfolgende Versuch, dieselbe Operation auszuführen, idempotent angewandt wird.
  • Mehrknotennetzwerke können jedoch eine große Anzahl von Knoten und in einigen Fällen Konfigurationen mit bis zu einer (1) Million Knoten oder mehr aufweisen. Um zu gewährleisten, dass Pakete zwischen Knoten effizient übertragen und empfangen werden, kann adaptives Routing implementiert werden, um Pakete um eine Netzwerküberlastung herum oder anderweitig über einen Pfad zu leiten, der Latenzen abmildert. Adaptives Routing kann zur Folge haben, dass eine Sequenz von Paketen eine Anzahl von unterschiedlichen Pfaden zu einem gleichen Zielknoten nimmt, was einen außerhalb der Reihenfolge liegenden Paketempfang an einem Zielknoten zur Folge haben kann. Programmiermodellimplementierungen, die eine zuverlässige Paketlieferung erfordern, deaktivieren im Allgemeinen das adaptive Routing oder begrenzen es auf andere Weise, um das Verfolgen einer potenziell großen Anzahl von Paketen sowohl durch einen initiierenden Knoten, als auch durch einen Zielknoten zu vermeiden. Zum Beispiel können einige Ansätze auf einer Paketebene synchronisiert werden, wobei jedes von einem initiierenden Knoten gesendete Paket durch einen Zielknoten bestätigt wird, bevor der initiierende Knoten ein nächstes Paket in einer Sequenz von Paketen überträgt.
  • Somit wird gemäß einer Ausführungsform der vorliegenden Offenbarung ein außerhalb der Reihenfolge liegendes, zuverlässiges End-To-End-Protokoll bereitgestellt, das direkte Datenplatzierung und atomare Operationen auf Benutzerebene ermöglichen kann. Das Protokoll kann für verlustarme Umgebungen wie High-Performance-Computing (HPC)-Anwendungen optimiert werden und kann die Verlusterkennung und Erkennung von doppelten Paketen ermöglichen. Ein Mehrknotennetzwerk, das das Protokoll implementiert, kann eine erhöhte Systemzuverlässigkeit und eine erhöhte Toleranz für adaptiv geleiteten Verkehr haben, während es immer noch erlaubt, dass atomare Operationen idempotent direkt auf einen Benutzerspeicherplatz angewandt werden. In einer Ausführungsform kann ein fensterbasiertes Verfolgungsschema durch einen initiierenden Knoten und einen Zielknoten während einer End-To-End-Kommunikation implementiert werden, sodass ein Strom von Paketen, der in einem gesamten Packet-Sequence-Number (PSN) -Raum zusammenhängend ist, adaptiv zu einem Zielknoten geleitet und von diesem angewandt wird, ohne dass der initiierende Knoten notwendigerweise Paketübertragungszustände auf einer Paketebene feinkörnig verfolgt. Stattdessen ermöglicht es das fensterbasierte Verfolgungsschema dem Zielknoten, die Ankunft eines einzelnen Pakets innerhalb eines vordefinierten Fensters von zusammenhängenden Paketsequenznummern relativ zu dem gesamten PSN-Raum zu verfolgen. Anders ausgedrückt, kann der Zielknoten das vordefinierte Fenster verwenden, um eine Teilmenge von zusammenhängenden Sequenznummern zu verfolgen, die Paketen entsprechen, von denen erwartet wird, dass sie ankommen. Daher wird die Ankunft eines einzelnen Pakets als eine Kombination eines zuletzt empfangenen Pakets in einem in dem PSN-Raum zusammenhängenden Strom von Paketen und einer endlichen Anzahl von in dem Fenster nach dem letzten zusammenhängenden Paket empfangenen Paketen verfolgt. Der Zielknoten kann dann periodisch den initiierenden Knoten der PSN über das zusammenhängend empfangene Paket, das am weitesten in dem PSN-Raum fortgeschritten ist, informieren, und kann auch den initiierenden Knoten über eine Fenstergröße hinsichtlich eines maximal zulässigen Abstands zwischen jenem in der PSN am weitesten fortgeschrittenen Paket und einem nächsten zu sendenden Paket informieren. Zur gleichen Zeit kann der Zielknoten das Fenster relativ zu dem am weitesten in dem PSN-Raum fortgeschrittenen empfangenen Paket „verschieben“, um zusätzlich erwartete Pakete von dem Zielknoten zu verfolgen. Andererseits, und gemäß der empfangenen maximalen Fenstergröße, gewährleistet der initiierende Knoten, niemals ein Paket mit einer Sequenznummer zu übertragen, die den maximalen Abstand/die maximale Fenstergröße übersteigt. Wenn der initiierende Knoten über ein Paket informiert wird, das am weitesten in dem von dem Zielknoten empfangenen PSN-Raum fortgeschritten ist, kann der initiierende Knoten auch sein Fenster relativ zu diesem Paket verschieben, um die zusätzlich erwarteten Pakete zu dem Zielknoten zu übertragen. Somit kann der initiierende Knoten Paketübertragungszustände auf einer grobkörnigen Ebene basierend auf kumulativen Aktualisierungen von dem Zielknoten verfolgen.
  • Ausführlicher dargelegt, initiiert ein Knoten Kommunikation mit einem Zielknoten durch Anfordern einer Verbindung. In Reaktion darauf kann der Zielknoten einen oder mehrere Parameter für die Verbindung, wie zum Beispiel eine Sequenznummer und eine vordefinierte Fenstergröße, an den initiierenden Knoten zurücksenden. Diese Phase kann präzise als eine Verbindungsinitialisierungsphase bezeichnet werden. Der initiierende Knoten kann dann eine Sequenz von Paketen übertragen, wobei das erste Paket die Sequenznummer trägt und nachfolgende Pakete die Sequenznummer entsprechend erhöhen. Diese Phase kann präzise als eine Paketsequenzierungs- oder Paketübertragungsphase bezeichnet werden. Der initiierende Knoten kann der vordefinierten Fenstergröße durch Begrenzen eines Abstands D zwischen der Sequenznummer des ersten Pakets und einer Sequenznummer des nächsten zu sendenden Pakets gerecht werden. Der Abstand D kann sich als eine maximale Sequenznummer (MaxSeqNum) manifestieren, wobei ein initiierender Knoten keine Pakete mit einer Sequenznummer sendet, die über die MaxSeqNum hinausgeht. Zum Beispiel kann eine Fenstergröße von 10 und eine Startsequenznummer von 0 dazu führen, dass der initiierende Knoten eine Sequenz von Paketen mit Sequenznummern 0 ... 9 sendet. Sobald die MaxSeqNum erreicht ist, unterbricht der initiierende Knoten vorübergehend weitere Paketübertragungen an den Zielknoten, bis ein Bestätigungspaket anzeigt, dass die Pakete erfolgreich von dem Zielknoten empfangen wurden.
  • Andererseits empfängt der Zielknoten jede der Sequenz von Paketen und aktualisiert einen Fensterstatus entsprechend. Der Zielknoten verfolgt jedes einzelne empfangene Paket bezüglich sowohl eines gesamten zusammenhängenden Stroms von Paketen innerhalb eines Packet-Sequence-Number (PSN) -Raums, als auch einer vordefinierten (oder endlichen) Anzahl von Paketen, die in einem Fenster nach diesem letzten zusammenhängenden Paket empfangen werden. Der Zielknoten kann jedes empfangene Paket von dem initiierenden Knoten bestätigen, oder kann eine Anzahl von Paketen kumulativ bestätigen. In einigen Fällen kann der Zielknoten periodisch einen Indikator, wie zum Beispiel ein spezielles Bestätigungspaket, an den initiierenden Knoten senden, wobei das spezielle Bestätigungspaket den initiierenden Knoten über die PSN des zusammenhängend empfangenen Pakets informiert, das am weitesten im PSN-Raum fortgeschritten ist (z. B die am weitesten fortgeschrittene zusammenhängende empfangene Sequenznummer). Sobald der Zielknoten ermittelt, dass eine vorbestimmte Anzahl N aufeinanderfolgender Pakete relativ zu dem Beginn des Fensters empfangen wurde (z. B. die früheste Sequenznummer innerhalb der endlichen Anzahl von Sequenznummern, die durch das Fenster verfolgt werden), kann der Zielknoten dann das Fenster nach rechts „verschieben“, um zusätzliche aufeinanderfolgende Sequenznummern innerhalb des gesamten PSN-Raums zu verfolgen. In einigen Fällen ist die vorbestimmte Anzahl N aufeinanderfolgender Pakete mindestens eins (1), obwohl die vorgegebenen Anzahl N aus Gründen der Leistungsfähigkeit jede beliebige Anzahl bis einschließlich der gesamten Fenstergröße sein kann. Somit kann der Zielknoten den Status von empfangenen Paketen verfolgen und den Zustand periodisch über ein spezielles Bestätigungspaket an den initiierenden Knoten berichten, was vorteilhafterweise dem initiierenden Knoten erlauben kann, auf einer grobkörnigen Ebene darüber informiert zu werden, dass eine Anzahl von aufeinanderfolgenden Paketen empfangen wurde, ohne den Status jedes einzelnen übertragenen/sich auf dem Weg befindlichen Pakets überwachen zu müssen. Der initiierende Knoten kann auch das spezielle Bestätigungspaket verwenden, um zum Beispiel zu identifizieren, dass ein Paket den Zielknoten daran gehindert hat, über eine bestimmte Paketposition innerhalb des Fensters hinaus vorzurücken. In einer Ausführungsform führt der Zielknoten eine oder mehrere Speicheroperationen (z. B. Gets/Sets) aus, die einem gegebenen Paket zugeordnet sind, sobald das gegebene Paket empfangen wird. In einigen Fällen können die ausgeführten Speicheroperationen dazu führen, dass Änderungen sofort im Benutzerspeicher verfügbar sind.
  • Es ist darauf hinzuweisen, dass das hierin offenbarte Protokoll zahlreiche Vorteile gegenüber anderen Ansätzen bereitstellt. Zum Beispiel erlaubt es das Protokoll Mehrknotennetzwerken, das adaptive Routing auszunutzen, ohne die Zuverlässigkeit zwischen Endpunkten zu verlieren. Zusätzlich können ein initiierender Knoten und ein Zielknoten dynamisch Verbindungscharakteristiken basierend auf einer Initialisierungsphase vereinbaren, die ein rollierendes oder verschiebendes Fenster einrichtet, was es dem initiierenden Knoten erlauben kann, eine Anzahl von Paketen zu übertragen, ohne notwendigerweise auf eine Bestätigung zu warten, dass jedes Paket empfangen wurde. Der Zielknoten kann einen Paketübertragungsstatus für jedes Paket durch Verfolgen einer endlichen Anzahl von Paketen und deren entsprechendes Neuordnen in einem gesamten zusammenhängenden PSN-Raum aufrechterhalten, somit werden Duplikate effizient eliminiert und eine Erkennung von Paketverlust wird erlaubt. Somit kann der initiierende Knoten Knotenressourcen bewahren, indem Paketübertragungszustände nicht notwendigerweise auf einer feinkörnigen Ebene verfolgt werden; und kann stattdessen periodische spezielle Bestätigungen von dem Zielknoten verwenden, um einen gegenwärtigen Fensterstatus zu ermitteln. Hardware eines Knotens, wie zum Beispiel eine Netzwerkschnittstellenschaltung, kann direkt Speicheroperationen ausführen, die den empfangenen Paketen zugeordnet sind. Die Speicheränderungen können somit vorteilhafterweise im Benutzerspeicherraum ohne die mit anderen Protokollansätzen verbundenen Ressourcenkosten verfügbar werden.
  • Während auf HPC-Anwendungen konkret Bezug genommen wird, ist diese Offenbarung nicht dazu beabsichtigt, in dieser Hinsicht beschränkt zu sein. Zum Beispiel können Knoten Standard-Datenverarbeitungssysteme umfassen, wie zum Beispiel Server-Computer, die für Nicht-HPC-Anwendungen kommerziell verfügbar sind (z. B. Datenspeicher, E-Mail-Server, Domain-Controller, usw.). Somit muss das Mehrknotennetzwerk nicht unbedingt einen sogenannten „Supercomputer“ umfassen, der mit Höchstleistungsrechenknoten konfiguriert ist. Darüber hinaus liegen sowohl allgemeine Datenzentrumanwendungen, als auch spezifische Datenzentrumanwendungen innerhalb des Umfangs dieser Offenbarung. Zum Beispiel beinhalten universelle Datenzentren allgemein eine Infrastruktur, die ein einzelnes Unternehmen mit einer breiten Vielfalt von Anwendungen, oder einen Informationstechnologie (IT) -Anbieter, der viele Kunden bedient, unterstützt. Andererseits beinhalten spezifische Datenzentren allgemein universitäre und militärische Forschung, wissenschaftliche Laboratorien, Finanzinstitute und Suchmaschinenanbieter, um nur einige zu nennen. Spezifische Datenzentren implementieren allgemein spezifische Nutzungsmuster und eignen sich gut für eine hoch skalierbare Architektur, die auf eine einzige oder anderweitig begrenzte Anzahl von Zwecken zugeschnitten ist. In jedem solcher Fälle ist das hierin offenbarte Protokoll zum Bereitstellen einer außerhalb der Reihenfolge liegenden End-To-End-Zuverlässigkeit gleichermaßen sowohl auf allgemeine, als auch auf spezifische Datenzentrumanwendungen anwendbar.
  • Nun Bezug nehmend auf die Figuren, zeigt 1 ein Mehrknotennetzwerk 100, gemäß einer Ausführungsform der vorliegenden Offenbarung. Wie gezeigt, ist jeder der Knoten 102-1 bis 102-6 über Pfade 101 oder Verbindungen kommunizierend miteinander verbunden. Das Mehrknotennetzwerk 100 kann auch präzise als ein Fabric-System mit einer All-To-All-Konfiguration bezeichnet werden, wobei jeder Knoten einen Knotenpfad zu allen anderen Knoten hat. Es ist darauf hinzuweisen, dass das Mehrknotennetzwerk 100 in einer stark vereinfachten Form veranschaulicht ist. Andere Knotentopologien liegen innerhalb des Umfangs dieser Offenbarung, und die beispielhafte Ausführungsform von 1 ist nicht dazu beabsichtigt, beschränkend zu sein. Das Mehrknotennetzwerk 100 kann eine Anzahl N von Knoten beinhalten und ist nicht notwendigerweise auf sechs Knoten, wie gezeigt, beschränkt. Zum Beispiel kann das Mehrknotennetzwerk 100 bis zu 1 Million Knoten oder mehr beinhalten, abhängig von einer angestrebten Konfiguration.
  • In einer Ausführungsform kann jeder der Pfade 101 zugehörige vernetzende Schalteinrichtungen, wie zum Beispiel Netzwerkschalter, Router und andere Hochgeschwindigkeitsverbindungen, beinhalten. Zum Beispiel können die Pfade 101 eine Switched-Fabric- oder Switching-Fabric-Netzwerktopologie bilden, in der jeder Knoten über einen oder mehrere Netzwerkschalter mit dem Mehrknotennetzwerk 100 kommunizierend gekoppelt ist. Alternativ oder zusätzlich zu Switched-Fabric können sich ein oder mehrere Pfade auch physisch als ein Datenbus manifestieren, wie zum Beispiel ein PCI Express-Datenbus oder ein proprietärer Datenbus, der zum Beispiel durch eine Rückwandplatine implementiert ist, die zwei oder mehr Knoten koppelt. In einem spezifischen Beispiel, das die vorliegende Offenbarung nicht beschränken soll, können einer oder mehrere der Pfade 101 Verbindungen mit hoher Bandbreite, wie zum Beispiel 10-Gigabit-InfiniBand-Verbindungen, umfassen. In jedem Fall kann das Mehrknotennetzwerk 100 den Netzwerkverkehr über mehrere physische Verbindungen verteilen, die durch jeden der Pfade 101 repräsentiert werden, was einen Durchsatz ergeben kann, der denjenigen anderer Netzwerk-Ansätze, wie zum Beispiel Broadcast-Netzwerke, die Ethernet implementieren, übersteigt.
  • In einer Ausführungsform kann jeder der Knoten 102-1 bis 102-6 ein Datenverarbeitungssystem, wie zum Beispiel das Datenverarbeitungssystem 900 von 9, umfassen. Jeder der Knoten 102-1 bis 102-6 kann die gleiche Hardware und das gleiche Betriebssystem umfassen, obwohl unterschiedliche Betriebssysteme an jedem Knoten und/oder an unterschiedlicher Hardware verwendet werden können. In einigen Fällen können ein oder mehrere Knoten ein Single-Board- oder Small-Form-Factor- (SFF-) Rechengerät umfassen, das Anwendungen mit hoher Dichte ermöglicht. Zum Beispiel können Datenzentren diese Arten von Rechenknoten auswählen, um das Verhältnis von Prozessoren/Kernen pro Rackeinheit (U) des Rackraums zu maximieren oder anderweitig zu erhöhen.
  • Bezugnehmend auf 2, veranschaulicht ein Blockdiagramm einen beispielhaften Knoten 102-X, der zur Verwendung als ein Knoten des Mehrknotennetzwerk 100 von 1 kompatibel ist, gemäß einer Ausführungsform der vorliegenden Offenbarung. Wie gezeigt, umfasst der beispielhafte Knoten 102-X mindestens eine Netzwerkschnittstellenschaltung 204-1 bis 204-N, Steuerung 206-1 bis 206-N und Speichergerät 208-1 bis 208-N. In einer Ausführungsform umfasst der beispielhafte Knoten 102-X ein einzelnes System-On-Chip (SoC) -Gerät, obwohl andere Ausführungsformen innerhalb des Umfangs dieser Offenbarung liegen. Zum Beispiel kann jede Komponente des beispielhaften Knotens 102-X einen separaten Chip umfassen.
  • Genauer gesagt, jede Netzwerkschnittstellenschaltung 204-1 bis 204-N kann kommunizierend mit einer jeweiligen der Steuerungen 206-1 bis 206-N und mit einem jeweiligen der Speichergeräte 208-1 bis 208-N verbunden sein. Die Netzwerkschnittstellenschaltungen 204-1 bis 204-N können jeweils Hardware, Software oder beides umfassen, die dazu ausgelegt ist, Signale unter Verwendung verschiedener Kommunikationstechniken zu übertragen und zu empfangen. Zum Beispiel kann jede Netzwerkschnittstellenschaltung 204-1 bis 204-N dazu ausgelegt sein, elektrische Signalisierung, optische Signalisierung oder beides zwischen Knoten des Mehrknotennetzwerks 100 bereitzustellen. In jedem solcher Fälle kann jede Netzwerkschnittstellenschaltung 204-1 bis 204-N dazu ausgelegt sein, eine Vielzahl bidirektionaler Netzwerkports mit Aufwärts/Abwärts-Geschwindigkeiten von zum Beispiel mindestens 4,7 bis 5,25 Gigabyte (GB) pro Port bereitzustellen, obwohl andere Verbindungsgeschwindigkeiten innerhalb des Umfangs dieser Offenbarung liegen.
  • Jede der Netzwerkschnittstellenschaltungen 204-1 bis 204-N kann mindestens ein Verarbeitungsgerät/-Schaltung (nicht gezeigt), wie zum Beispiel ein Field-Programmable-Gate-Array (FPGA), Reduced-Instruction-Set-Computer (RISC) -Prozessor, x86-Befehlssatzprozessor, Mikrocontroller, einen Application-Specific-Integrated-Circuit (ASIC), beinhalten. Zu diesem Zweck kann jede der Netzwerkschnittstellenschaltungen 204-1 bis 204-N dazu ausgelegt sein, eine Vielzahl von Anweisungen auszuführen, um Prozesse gemäß verschiedener hierin offenbarten Aspekte und Ausführungsformen auszuführen. Zum Beispiel kann das Verarbeitungsgerät der Netzwerkschnittstellenschaltung dazu ausgelegt sein, die Verfahren der 3A, 4 und 8 auszuführen. Diese Prozesse können zum Beispiel durch Verwenden von Software (z. B. C oder C++, die auf dem Controller/Prozessor ausgeführt wird), Hardware (z. B. hartcodierte Gate-Logik oder speziell gebautes Silizium) oder Firmware (z. B. eingebettete Routinen, die auf einem Mikrocontroller ausgeführt werden), oder jede Kombination davon, implementiert werden. Jede der Netzwerkschnittstellenschaltungen 204-1 bis 204-N kann auch präzise als Host-Fabric-Interface (HFI) bezeichnet werden.
  • Wie gezeigt, ist jede der Netzwerkschnittstellenschaltungen 204-1 bis 204-N kommunizierend mit einer jeweiligen der Steuerungen 206-1 bis 206-N und mit einem jeweiligen der Speichergeräte 208-1 bis 208-N gekoppelt. In einer Ausführungsform kann sich dieses Koppeln physisch als ein serieller Hochgeschwindigkeitsdatenbus, wie beispielsweise ein serieller PCI-E-Bus, manifestieren, obwohl zahlreiche andere Kommunikationstechniken im Licht dieser Offenbarung offensichtlich sein sollten. Wie weiter unten diskutiert, kann jede Netzwerkschnittstellenschaltung 204-1 bis 204-N dazu ausgelegt sein, einen Direct-Memory-Access (DMA) auf einem zugeordneten Speichergerät auszuführen.
  • Es ist darauf hinzuweisen, dass jede der Netzwerkschnittstellenschaltungen 204-1 bis 204-N optional direkt oder indirekt miteinander für die Kommunikation zwischen Knoten gekoppelt sein kann. Zum Beispiel kann jede der Netzwerkschnittstellenschaltungen 204-1 bis 204-N direkt miteinander gekoppelt sein, so dass Nachrichten zwischen Knoten geleitet werden, ohne Fabric-Hardware (z. B. Netzwerkschalter, Router und so weiter) des Mehrknotennetzwerks 100 zu verwenden. Andererseits kann jede der Netzwerkschnittstellenschaltungen 204-1 bis 204-N durch Verwenden eines Routergeräts (nicht gezeigt), das die Intra-Kommunikation des beispielhaften Knotens 102-X intelligent zu einer geeigneten Netzwerkschnittstellenschaltung leiten kann, indirekt miteinander gekoppelt sein.
  • Jede Steuerung 206-1 kann mindestens ein Verarbeitungsgerät/-Schaltkreis beinhalten, aber andere Ausführungsformen liegen ebenfalls im Umfang dieser Offenbarung.
  • Zum Beispiel kann jede Steuerung 206-1 mindestens zwei Verarbeitungsgeräte umfassen. Einige beispielhafte Verarbeitungsgeräte beinhalten beispielsweise einen Complex Instruction Set Computer (CISC), ein Field-Programmable-Gate-Array (FPGA), Reduced-Instruction-Set-Computer (RISC) -Prozessor, x86-Befehlssatzprozessor, Mikrocontroller, einen Application-Specific-Integrated-Circuit (ASIC), eine Graphics-Processing-Unit (GPU) oder Central-Processing-Unit (CPU). In einigen Fällen stellt jedes Verarbeitungsgerät mindestens einen Verarbeitungskern bereit. Zum Beispiel, und gemäß einer Ausführungsform, kann jedes Verarbeitungsgerät einen Multicore-Prozessor umfassen, der dazu ausgelegt ist, mindestens 16 Verarbeitungskerne bereitzustellen. In einigen Fällen ist jede der Steuerungen 206-1 bis 206-N mit der gleichen Hardware konfiguriert, obwohl andere Ausführungsformen auch innerhalb des Umfangs dieser Offenbarung liegen. In jedem Fall kann jede der Steuerungen 206-1 bis 206-N Anweisungen beinhalten oder auf andere Weise empfangen, die, wenn ausgeführt, veranlassen, dass ein oder mehrere Prozesse ausgeführt werden, wie zum Beispiel Prozesse, die die Verfahren der 3A, 4 und 8 umfassen.
  • Jedes Speichergerät 208-1 bis 208-N kann zum Beispiel ein nichtflüchtiges Speichergerät umfassen, das einen Flash-Speicher und/oder flüchtige Speichergeräte, wie zum Beispiel Random-Access-Memory (RAM), Dynamic-Random-Access-Memory (DRAM) und Static-Ram (SRAM), beinhaltet.
  • Zurückkommend auf 1, können die Knoten 102-1 bis 102-6 des Mehrknotennetzwerks 100 dazu ausgelegt sein, verteilte Speicheranwendungen (oder parallele Anwendungen) auszuführen, die mit Message-Passing-Interface- (MPI), Shared-Memory-Access- (OpenSHMEM) und Partitioned-Global-Address-Space (PGAS)-Programmiermodellen arbeiten, obwohl auch andere Modelle innerhalb des Umfangs dieser Offenbarung liegen. Zu diesem Zweck und gemäß einer Ausführungsform, kann jeder der Knoten 102-1 bis 102-6 gemeinsam eine oder mehrere parallele Anwendungen gemäß dieser Programmiermodelle ausführen. In einigen Fällen kann jedes Prozessorgerät der Knoten 102-1 bis 102-6 und insbesondere jeder dadurch bereitgestellte Kern einen Prozess bereitstellen, der innerhalb des Mehrknotennetzwerks 100 eindeutig identifizierbar und adressierbar ist. Zum Beispiel, und wie gezeigt, kann der Knoten 102-5 Prozesse 104-1 bis 104-N bereitstellen, wobei jeder Prozess durch einen fest zugeordneten Prozessorkern ausgeführt wird.
  • Das Mehrknotennetzwerk 100 kann eine dynamische Zuweisung von Rechenressourcen bereitstellen, so dass eine parallele Anwendung über M Knoten und N Prozesse/Kerne ausgeführt werden kann, wobei die bestimmte Anzahl von Knoten und Prozessen basierend auf der bestimmten Implementierung der parallelen Anwendung zugewiesen wird. Zum Beispiel kann eine parallele Anwendung eine bestimmte Anzahl von angestrebten Prozessen anfordern, um einen angestrebten Satz von Berechnungen durchzuführen. In Reaktion darauf kann das Mehrknotennetzwerk 100 einen zusammenhängenden oder nicht zusammenhängenden Bereich von Knoten und zugeordneten Prozessen jeder parallelen Anwendung zuweisen. In einigen Fällen kann das Mehrknotennetzwerk 100 gleichzeitig mehrere solcher parallelen Anwendungen unterstützen, wobei jede der ausgeführten parallelen Anwendungen einen Pool von privat zugewiesenen Ressourcen aufweist.
  • Während der Laufzeit einer gegebenen parallelen Anwendung kann das Mehrknotennetzwerk 100 eine Zwischenspeicher-Kohärenz bereitstellen, sodass geteilte Ressourcendaten unter einer Vielzahl von Speichergeräten, die diese Zwischenspeichern, konsistent sind. In einem allgemeinen Sinn kann die Zwischenspeicher-Kohärenz einen Schutzmechanismus bereitstellen, der verhindert, dass Zwischenspeicher-Daten in einem ungültigen Status sind oder anderweitig in Konflikt stehen, wenn zwei oder mehr Knoten/Prozesse auf einem gleichen Datenelement arbeiten. In einer bestimmten beispielhaften Ausführungsform implementiert das Mehrknotennetzwerk 100 zumindest teilweise Zwischenspeicher-Kohärenz, indem jeder Knoten nur lokal erzeugte Daten in seinem zugehörigen Speicher zwischenspeichert. Zu diesem Zweck werden fern-erzeugte Daten (z. B. durch einen Zielknoten erzeugte Daten) durch die Ausführung von Gets/Sets erfasst. Zum Beispiel kann ein Knoten, der ein „Set“ an einem Zielprozess initiiert, ein Paket dazu veranlassen, sich durch das Mehrknotennetzwerk 100 zu einem Zielknoten, der dem Zielprozess zugeordnet ist, auszubreiten, und, sobald es durch diesen empfangen wurde, den Zielknoten dazu veranlassen, eine Schreiboperation gegen einen Speicherbereich, der dem Zielprozess zugeordnet ist, auszuführen. Andererseits kann ein Knoten, der ein „Get“ an einem Zielprozess initiiert, den Zielknoten dazu veranlassen, einen dem Zielprozess zugeordneten Speicherbereich zu lesen und ein bestimmtes Datenelement, das vom initiierenden Knoten angestrebt wird, über das Mehrknotennetzwerk 100 zurückzugeben. Zur Vereinfachung der Beschreibung und der Praxistauglichkeit wird diese Kommunikation zwischen Prozessen hier allgemein als Kommunikation zwischen Knoten bezeichnet.
  • Beispielhafte Methodik und Architektur
  • Wie zuvor diskutiert, beinhaltet eine Ausführungsform der vorliegenden Offenbarung ein Verfahren zum Initiieren einer Kommunikation zwischen Knoten eines Mehrknotennetzwerks durch Verwenden eines zuverlässigen, außerhalb der Reihenfolge liegenden End-To-End-Protokolls. Ein solches beispielhaftes Verfahren 300 ist in 3A gezeigt, die einen Knoten veranschaulicht, der eine Verbindungsanforderung mit einem Zielknoten initiiert und eine Vielzahl von Paketen mit einer SeqNumi, die sich in einem bestimmten Abstand von dem am weitesten fortgeschrittenen Paket in dem durch den Zielknoten bestätigten PSN-Raum befinden, sendet. Das beispielhafte Verfahren 300 kann durch einen Knoten, wie zum Beispiel den Knoten 102-X von 2, und insbesondere durch die Netzwerkschnittstellenschaltung 204-1 bis 204-N des Knotens, ausgeführt werden. Es ist jedoch darauf hinzuweisen, dass Verfahren 300 auch ganz oder teilweise durch die Steuerung 206-1 bis 206-N oder andere geeignete Steuerungen/Schaltungen ausgeführt werden kann. Es ist darauf hinzuweisen, dass die Vorgänge des Verfahrens 300 nicht notwendigerweise in der angegebenen Reihenfolge ausgeführt werden können, und außerdem können einige Vorgänge abhängig von einer angestrebten Implementierung weggelassen, hinzugefügt oder anderweitig ergänzt werden. Verfahren 300 beginnt in Vorgang 302.
  • In Vorgang 304 empfängt ein initiierender Knoten eine Anforderung, eine Verbindung mit einem Zielknoten zu initiieren. In einer Ausführungsform kann die Anforderung zum Initiieren einer Verbindungsanforderung beispielsweise über ein Application-Programming-Interface (API) durch Verwenden von MPI, OpenSHMEM oder eines anderen geeigneten parallelen Anwendungsprogrammiermodells erfolgen. Die Anforderung zur Verbindung kann mindestens eine logische Zielprozessidentifizierung oder eine andere geeignete Zielidentifizierung, wie zum Beispiel eine Knotenidentifizierung, die dazu verwendet werden kann, Pakete zu dem Zielknoten zu leiten, beinhalten.
  • In Vorgang 305 kann der initiierende Knoten ein Verbindungsinitialisierungspaket über das Mehrknotennetzwerk an den Zielknoten senden, um eine End-To-End-Verbindung zu initiieren. Das Mehrknotennetzwerk 100 kann dann das Verbindungsinitialisierungspaket zu dem Zielknoten leiten. In Vorgang 306 empfängt der initiierende Knoten ein Verbindungsinitialisierungsantwortpaket, das Verbindungsparameter zum Definieren einer Startsequenznummer (SeqNum) und einer Fenstergröße (MaxWindow) beinhalten kann. Diese Parameter können auch präzise als Verbindungsausgangsbasisparameter bezeichnet werden. Alternativ können die SeqNum und MaxWindow auch statisch in einem Speicher des initiierenden Knotens vordefiniert sein. Zusätzlich können SeqNum und MaxWindow durch den initiierenden Knoten gesetzt und dem Zielknoten beispielsweise innerhalb des in Vorgang 305 gesendeten Verbindungsinitialisierungspakets bereitgestellt werden. In jedem Fall können dann die SeqNum und MaxWindow verwendet werden, wenn eine Sequenz von Paketen von dem initiierenden Knoten zu dem Zielknoten gesendet wird. Wie unten diskutiert, gewährleistet der initiierende Knoten, dass die gegebene Sequenznummer (z. B. SeqNumi) eine maximale Paketsequenznummer (MaxSeqNum) nicht übersteigt, wobei die MaxSeqNum basierend auf der Summe der MaxWindow- und SeqNum-Parameter berechnet wird.
  • In Vorgang 308 sendet der initiierende Knoten ein Paket mit einer zugewiesenen Sequenznummer von SeqNumi an den Zielknoten, wobei (i) eine nicht negative Zahl ist (R ≥ 0 = {x ∈ R | x ≥ 0}. In einer Ausführungsform sendet der initiierende Knoten die SeqNumi innerhalb eines Kopfabschnitts des Pakets und kann zum Beispiel durch eine Anzahl von Bytes (z. B. einen 2-, 4- oder 8-Byte-Wert) repräsentiert sein. In einer Ausführungsform kann das Paket eine Identifizierung von mindestens einer Speicheroperation (z. B. ein Get oder Set) und eine optionale Datennutzlast beinhalten. In einer Ausführungsform kann die zugewiesene SeqNumi eine spezielle/eindeutige Nummer sein, die aus einem Bereich von Sequenznummern zugewiesen wird, beginnend mit der in Vorgang 306 empfangen Startsequenznummer (SeqNum) und aufeinanderfolgend um mindestens eine davon erhöht. Wie unten diskutiert, kann der Zielknoten dem initiierenden Knoten eine Sequenznummer in einem speziellen Bestätigungspaket bereitstellen. Zu diesem Zweck kann die über ein spezielles Bestätigungspaket empfangene Sequenznummer dazu verwendet werden, eine neue MaxSeqNum zur Verwendung in Vorgang 312 herzuleiten, wie unten diskutiert, sie verändert jedoch nicht notwendigerweise die in Vorgang 308 zugewiesenen Sequenznummern, da diese von der in Vorgang 306 ermittelten Startsequenznummer weiterhin fortlaufend zugewiesen werden können.
  • In Vorgang 310 erhöht der initiierende Knoten SeqNumi (SeqNumi = SeqNumi + 1). Man beachte, dass der initiierende Knoten die SeqNumi um mehr als eins erhöhen kann. In Vorgang 312 vergleicht der initiierende Knoten SeqNumi mit der maximalen Sequenznummer (MaxSeqNum) für ein gegebenes Fenster. Insbesondere, und vor dem Empfangen eines speziellen Bestätigungspakets von dem Zielknoten, kann die MaxSeqNum einfach als die Summe der in Vorgang 306 empfangenen SeqNum- und MaxWindow-Parameter berechnet werden. Nach dem Empfangen eines speziellen Bestätigungspakets kann die MaxSeqNum basierend auf der Summe der PSN des am weitesten im PSN-Raum fortgeschrittenen zusammenhängend empfangenen Pakets und einer in dem speziellen Bestätigungspaket enthaltenen maximalen Fenstergröße (MaxWindow) berechnet werden. Es ist jedoch darauf hinzuweisen, dass das spezielle Bestätigungspaket nicht notwendigerweise einen MaxWindow-Parameter enthalten kann, und in diesem Fall kann der Zielknoten fortfahren, das in Vorgang 306 empfangene MaxWindow zu verwenden.
  • Einige Aspekte von Paketsequenzierung durch einen initiierenden Knoten gemäß dem Verfahren 300 können durch ein Beispiel besser verstanden werden. Man berücksichtige, ob SeqNumi gegenwärtig gleich 9 ist und die gegenwärtige MaxSeqNum gleich 14 ist, basierend beispielsweise darauf, dass die PSN des am weitesten im PSN-Raum fortgeschrittenen zusammenhängend empfangenen Pakets gleich 4 ist, und dass das MaxWindow gleich 10 ist. In diesem Fall sendet der initiierende Knoten weiterhin Pakete, da SeqNumi (9) kleiner ist als die MaxSeqNum (14). Umgekehrt, wenn die SeqNumi gegenwärtig gleich 14 ist und die MaxSeqNum gegenwärtig gleich 14 ist, geht der initiierende Knoten weiter zu Vorgang 314 und unterbricht die Paketübertragung. Es ist darauf hinzuweisen, dass dieser Vergleich gewährleistet, dass der initiierende Knoten kein Paket mit einer Sequenznummer sendet, die eine von dem Zielknoten erwartete maximale Sequenznummer übersteigt, und er somit das Eintreten eines Fensterüberlaufzustands verhindern kann. In jedem Fall, wenn die SeqNumi gleich der MaxSeqNum ist, geht das Verfahren 300 weiter zu Vorgang 314. Andernfalls geht das Verfahren 300 weiter zu Vorgang 316.
  • In Vorgang 314 wartet der initiierende Knoten auf ein spezielles Bestätigungspaket 320 von dem Zielknoten. Wie weiter unten unter Bezugnahme auf 4 diskutiert, kann der Zielknoten periodisch ein spezielles Bestätigungspaket senden, wobei das spezielle Bestätigungspaket die PSN des am weitesten im PSN-Raum fortgeschrittenen zusammenhängend empfangenen Pakets und eine maximale Fenstergröße (MaxWindow) beinhaltet. Als Reaktion darauf kann der initiierende Knoten das MaxWindow auf die in der speziellen Bestätigung empfangene maximale Fenstergröße setzen, wenn beispielsweise das vorherige MaxWindow von der neu empfangenen maximalen Fenstergröße unterschiedlich ist. Gleichermaßen kann der initiierende Knoten dann die SeqNum auf die PSN des am weitesten im PSN-Raum fortgeschrittenen zusammenhängend empfangenen Pakets setzten, sodass eine neue MaxSeqNum während des Vorgangs 312 berechnet wird.
  • Zum Beispiel, wie in 3B gezeigt, ist eine Gesamtsequenz von Paketen 500 oder PSN-Raum von links nach rechts dargestellt, wobei das Paket N auf der linken Seite den Beginn der Paketübertragung darstellt und N+32 auf der rechten Seite ein Ende der Sequenz von Paketen darstellt. Es ist darauf hinzuweisen, dass eine Sequenz von Paketen 32 Pakete überschreiten kann, und dass die bestimmte gezeigte Anzahl lediglich der Praxistauglichkeit dient. Wie gezeigt, kann die Startsequenznummer 350 gemäß der im Vorgang 306 bestimmten Startsequenznummer (SeqNum) gesetzt werden, und die MaxSeqNum0 kann basierend auf der Summe der in Schritt 306 bestimmten Startsequenznummer 350 und des MaxWindow-Parameters berechnet werden. Wie weiter gezeigt, sendet der initiierende Knoten eine Sequenz von Paketen mit entsprechenden Sequenznummern (SeqNumi) bis zu MaxSeqNum0, jedoch diese nicht übersteigend, wobei der Abstand D eine maximale Fenstergröße darstellt, die durch die Summe der SeqNum 350 und der MaxWindowSize-Parameter definiert ist. Sobald der Knoten die MaxSeqNum0 erreicht, kann der Knoten vor dem Übertragen zusätzlicher Pakete auf ein spezielles Bestätigungspaket von dem Zielknoten warten (z. B. Vorgang 314). Sobald der initiierende Knoten das spezielle Bestätigungspaket empfängt, und wie in 3C gezeigt, kann die Sequenznummer des am weitesten im PSN-Raum fortgeschrittenen zusammenhängend empfangenen Pakets und der darin empfangene MaxWindow-Parameter dazu verwendet werden, das Fenster des initiierenden Knotens nach rechts zu „verschieben“. Zum Beispiel, und wie weiter gezeigt, kann der initiierende Knoten das Übertragen von Paketen bis zu der neuen MaxSeqNum1, die basierend auf der Summe der Sequenznummer des am weitesten im PSN-Raum fortgeschrittenen zusammenhängend empfangenen Pakets, bereitgestellt innerhalb des empfangenen speziellen Bestätigungspakets und der MaxWindow-Parameter, berechnet werden kann, wieder aufnehmen.
  • In einer Ausführungsform, und wie im Folgenden unter Bezugnahme auf das Verfahren 800 von 8 unten eingehender diskutiert, kann der initiierende Knoten vor dem Vorgang 314 ein periodisches spezielles Bestätigungspaket von dem Zielknoten empfangen. Die bestimmte Frequenz, mit der ein Zielknoten ein spezielles Bestätigungspaket überträgt, wird nachstehend unter Bezugnahme auf 4 detaillierter diskutiert. Wie in 3D gezeigt, kann der initiierende Knoten ein spezielles Bestätigungspaket empfangen, bevor er eine komplette Sequenz von Paketen beispielsweise bis zu MaxSeqNum0 vollständig übertragen hat. Zusätzlich und anschließend kann der initiierende Knoten vor dem Übertragen einer kompletten Sequenz von Paketen bis zu MaxSeqNum1 noch ein weiteres spezielles Bestätigungspaket empfangen. Somit kann in diesem Beispiel der Abstand D kontinuierlich erweitert werden, sodass der Initiator die Vorgänge 308 bis 312 ausführt, ohne Paketübertragungen in Vorgang 314 vorübergehend unterbrechen zu müssen. Anders ausgedrückt, hat der Empfang eines speziellen Bestätigungspakets in diesem Zusammenhang zur Folge, dass der initiierende Knoten SeqNum und MaxWindow zurücksetzt, sodass die Vorgänge 308 bis 312 kontinuierlich ausgeführt werden können, ohne dass SeqNumi einen aktuellen MaxSeqNum-Wert erreicht. Somit kann das das in Vorgang 314 empfangene oder anderweitig während der Ausführung des Verfahrens 300 empfangene spezielle Bestätigungspaket 320 als eine kumulative Bestätigung verstanden werden, die es dem initiierenden Knoten ermöglicht, zu ermitteln, dass ein Bereich von Paketen erfolgreich von dem Zielknoten empfangen wurde, und dass ein Fenster „verschoben“ oder anderweitig bewegt werden kann, um zusätzliche Pakete zu senden. Im Licht dieser Offenbarung ist darauf hinzuweisen, dass dies erlauben kann, dass eine hohe Rate von Paketen zuverlässig von dem initiierenden Knoten zu dem Zielknoten übertragen wird, ohne dass der initiierende Knoten die Paketübertragungszustände auf einer feinkörnigen Ebene verfolgt.
  • Zurückkommend auf FIG. 3A, ermittelt in Vorgang 316 der initiierende Knoten, ob zusätzliche Pakete zu dem Zielknoten übertragen werden sollten. Zum Beispiel kann der initiierende Knoten eine Anzahl N zusätzlicher Pakete innerhalb eines gegebenen PSN-Raums haben, die an den Zielknoten gesendet werden. In einigen Fällen hält der initiierende Knoten eine Verbindung für den Fall, dass ein Prozess/Knoten versucht, sporadisch zusätzliche Pakete zu dem Zielknoten zu übertragen, unbegrenzt offen. Wenn der initiierende Knoten ermittelt, dass die Verbindung geschlossen werden sollte, endet das Verfahren in Vorgang 318. Andernfalls kehrt das Verfahren 300 zum Vorgang 308 zurück, und der initiierende Knoten fährt fort, die Vorgänge 308-316 auszuführen, um zusätzliche Pakete zu dem Zielknoten zu übertragen.
  • Nun bezugnehmend auf 8, ist ein beispielhaftes Verfahren zum Empfangen eines speziellen Bestätigungspakets gezeigt, gemäß einer Ausführungsform der vorliegenden Offenbarung. Ein initiierender Knoten kann während der Ausführung des beispielhaften Verfahrens 300 periodisch ein spezielles Bestätigungspaket von einem Zielknoten empfangen. Die spezielle Frequenz von speziellen Bestätigungspaketen, die von einem Zielknoten gesendet werden, wird unten unter Bezugnahme auf 4 detaillierter diskutiert. In einem allgemeinen Sinn verwendet der Zielknoten spezielle Bestätigungspakete, um einen initiierenden Knoten kumulativ zu informieren, dass eines oder mehrere Pakete erfolgreich empfangen wurden, und dass das eine oder die mehreren Pakete die am weitesten fortgeschrittenen zusammenhängend empfangenen Paketsequenznummern innerhalb eines gesamten PSN-Raums darstellen. Somit können spezielle Bestätigungspakete mit einer Frequenz von eins (1) gesendet werden, wobei jedes empfangene Paket mit einer Sequenznummer, die die am weitesten fortgeschrittene zusammenhängende Sequenznummer innerhalb des PSN-Raums ist, den Zielknoten dazu veranlasst, ein spezielles Bestätigungspaket zu senden. Es ist darauf hinzuweisen, dass die bestimmte gewählte Frequenz größer als eins sein kann, um den Paketdurchsatz zu erhöhen. In jedem Fall kann der initiierende Knoten somit sein eigenes Paketübertragungsfenster in einer kumulativen Weise aktualisieren, indem er ein empfangenes spezielles Bestätigungspaket gegenüber unabhängigem Verfolgen, ob jedes einzelne Paket von dem Zielknoten empfangen und bestätigt wurde, verwendet. Das Verfahren 800 beinhaltet Vorgänge zum Empfangen eines speziellen Bestätigungspakets von einem Zielknoten und zum Aktualisieren eines Fensterübertragungsstatus basierend auf dem speziellen Bestätigungspaket. Das Verfahren 800 beginnt in Vorgang 802.
  • In Vorgang 804 empfängt der initiierende Knoten ein spezielles Bestätigungspaket von einem Zielknoten. Das spezielle Bestätigungspaket kann die PSN des am weitesten im PSN-Raum fortgeschrittenen zusammenhängend empfangenen Pakets bereitstellen. Zusätzlich, und gemäß einer Ausführungsform, kann das spezielle Bestätigungspaket einen Parameter beinhalten, der einen neuen maximalen Fenster (MaxWindow) -Wert bereitstellt, wobei sich der neue MaxWindow-Wert von dem in Vorgang 306 von 3A empfangenen MaxWindow-Parameter unterscheidet.
  • In Vorgang 806 aktualisiert der initiierende Knoten einen Fensterübertragungsstatus basierend auf dem speziellen Bestätigungspaket. In einigen Fällen erlaubt es die PSN des am weitesten im PSN-Raum fortgeschrittenen zusammenhängend empfangenen Pakets dem initiierenden Knoten, zu ermitteln, dass ein gesamtes Fenster von Paketen, oder zumindest ein zusammenhängender Abschnitt davon, erfolgreich vom Zielknoten empfangen wurde. Somit kann der Zielknoten den in dem Verfahren 300 verwendeten SeqNum-Parameter auf die PSN des am weitesten in dem PSN-Raum fortgeschrittenen zusammenhängend empfangenen Pakets einstellen, die in der speziellen Bestätigung empfangen wird. Ebenso kann der in dem Verfahren 300 verwendete MaxWindow-Parameter auf die maximale Fenstergröße eingestellt werden, die in dem speziellen Bestätigungspaket empfangen wird. Zum Beispiel kann die maximale Fenstergröße, die in dem speziellen Bestätigungspaket empfangen wird, eine andere Größe als das aktuelle MaxWindow sein. In diesem Beispiel passt der initiierende Knoten seine Fenstergröße (z. B. den Abstand D) und damit die aktuelle MaxSeqNum entsprechend an. In jedem Fall kann der initiierende Knoten die PSN des am weitesten in dem PSN-Raum fortgeschrittenen zusammenhängend empfangenen Pakets, die innerhalb des speziellen Bestätigungspakets bereitgestellt wurde, als eine neue Startsequenznummer (SeqNum) für ein aktuelles Fenster verwenden, die dann während der Ausführung der Vorgänge 308-312 des Verfahrens 300 und insbesondere beim Berechnen der MaxSeqNum in Vorgang 312 verwendet werden kann. Es ist jedoch darauf hinzuweisen, dass die Sequenznummer, die über ein spezielles Bestätigungspaket empfangen wird, nicht notwendigerweise die den Paketen in Schritt 308 zugewiesenen Sequenznummern verändert, da sie weiterhin fortlaufend zugewiesen oder anderweitig von der in Vorgang 306 zuerst bestimmten Startsequenznummer erhöht werden können. Wie oben unter Bezugnahme auf FIG. 3A und 3D diskutiert, kann dies zur Folge haben, dass der initiierende Knoten kontinuierlich einen Strom von Paketen sendet, ohne in Vorgang 314 einzutreten und die Paketübertragung zu unterbrechen. Das Verfahren 800 endet in Vorgang 808.
  • Nun bezugnehmend auf 4, wird ein beispielhaftes Verfahren 400 zum Bedienen einer End-To-End-Kommunikationsanforderung von einem initiierenden Knoten und zum Aufrechterhalten eines Fensterstatusmanagers gezeigt, um während End-To-End-Kommunikation empfangene, außerhalb der Reihenfolge liegende Pakete zu erfassen, gemäß einer Ausführungsform der vorliegenden Offenbarung. Das beispielhafte Verfahren 400 kann durch einen Knoten, wie zum Beispiel den Knoten 102-X von 2, und insbesondere durch die Netzwerkschnittstellenschaltung 204-1 bis 204-N des Knotens, ausgeführt werden. Es ist jedoch darauf hinzuweisen, dass Verfahren 400 auch ganz oder teilweise durch die Steuerung 206-1 bis 206-N oder andere geeignete Steuerungen/Schaltungen ausgeführt werden kann. Es ist darauf hinzuweisen, dass die Vorgänge des Verfahrens 400 nicht notwendigerweise in der angegebenen Reihenfolge ausgeführt werden können, und außerdem können einige Vorgänge abhängig von einer angestrebten Implementierung weggelassen, hinzugefügt, oder anderweitig ergänzt werden. Verfahren 400 beginnt in Vorgang 402.
  • In Vorgang 404 empfängt ein Zielknoten ein Verbindungsanforderungspaket von einem entfernten (initiierenden) Knoten des Mehrknotennetzwerks 100. Wie zuvor diskutiert, kann das von dem initiierenden Knoten übertragene Verbindungsanforderungspaket gemäß einem Programmiermodell, wie zum Beispiel MPI oder OpenSHMEM, implementiert werden.
  • In Vorgang 406 antwortet der Zielknoten auf den initiierenden Knoten durch Senden eines oder mehrerer Pakete, die eine Startsequenznummer (SeqNum) und eine vordefinierte Fenstergröße (MaxWindow) beinhalten. Wie zuvor diskutiert, legt die SeqNum eine Startsequenznummer fest, und das MaxWindow legt den maximalen Abstand von dieser Startsequenznummer fest. Das Verfahren 400 geht dann weiter zu Vorgang 414, und der Zielknoten wartet darauf, ein Paket von dem initiierenden Knoten zu empfangen.
  • In Vorgang 408 empfängt der Zielknoten ein Paket von dem initiierenden Knoten mit SeqNumi, das zu Beginn einer Sequenz von empfangenen Paketen gleich der Startsequenznummer (SeqNum) sein kann, die in Vorgang 406 an den Zielknoten gesendet wurde. Angesichts der adaptiven Routing-Fähigkeiten des Mehrknotennetzwerks 100 können Pakete jedoch im Wesentlichen neu geordnet werden (z. B. kann das zuletzt gesendete Paket das erste empfangene sein), und daher gibt es keine Garantie dafür, welches Paket in der Sequenz der Zielknoten zuerst empfängt.
  • In Vorgang 410 aktualisiert der Zielknoten einen Fensterstatusmanager 501 basierend auf dem empfangenen Paket mit der Sequenznummer SeqNumi. Zum Beispiel, und wie in 5 gezeigt, kann der Fensterstatusmanager 501 ein Fenster verwalten, das eine endliche Anzahl von zusammenhängenden Paketen innerhalb eines PSN-Raums 500 verfolgt. Der Fensterstatusmanager 501 kann in einem Register oder einem anderen geeigneten Speicher des Zielknotens gespeichert sein. Der Fensterstatusmanager 501 ähnelt optisch einer Sportanzeigetafel und kann daher auch präzise als Fensteranzeigetafel bezeichnet werden. Wie gezeigt, ist eine Gesamtsequenz von Paketen 500 oder PSN-Raum von links nach rechts dargestellt, wobei das Paket N auf der linken Seite den Beginn der Paketübertragung darstellt und N+32 auf der rechten Seite ein Ende der Sequenz von Paketen darstellt. Es ist darauf hinzuweisen, dass eine Sequenz von Paketen 32 Pakete überschreiten kann, und dass die bestimmte gezeigte Anzahl lediglich der Praxistauglichkeit dient. Die zuvor empfangenen Pakete 502 stellen Pakete dar, die zuvor von dem Zielknoten empfangen und bestätigt wurden. Zusätzlich können die zuvor empfangenen Pakete 502 eine oder mehrere Speicheroperationen darstellen, die zuvor ausgeführt wurden. Zum Beispiel können die Speicheroperationen zuvor angewandte atomare Operationen beinhalten. Der Fensterstatusmanager 501 kann logisch mit dem PSN-Raum 500 ausgerichtet sein, sodass sich eine Mehrzahl von Paketpositionen 511 oder Indexnummern allgemein mit einer Teilmenge von jeweiligen fortlaufenden innerhalb des PSN-Raums 500 geordneten Sequenznummern ausrichtet. Der Fensterstatusmanager 501 kann eine Anzahl N von Paketen repräsentieren und kann einen Startindex bei 507 und einen Endindex bei 503 enthalten. Jede Position/Index kann den Empfang eines dargestellten Pakets mit einer „1“ und eines nicht empfangenen Pakets mit einer „0“ anzeigen.
  • Somit kann der Zielknoten dann in Vorgang 410 die Sequenznummer SeqNumi des in Vorgang 408 empfangenen Pakets gegen den Fensterstatusmanager 501 vergleichen. Wenn der Index, der der Sequenznummer SeqNumi des empfangenen Pakets entspricht, bereits auf 1 gesetzt ist, dann identifiziert der Zielknoten, dass das empfangene Paket ein Duplikat ist, und ignoriert es, oder verwirft es auf andere Weise. Andernfalls kann der Zielknoten das Bit des entsprechenden Index umkehren, um das Paket als empfangen zu markieren. In Vorgang 412 kann der Zielknoten eine oder mehrere dem empfangenen Paket zugeordnete Speicheroperationen ausführen. In einer Ausführungsform sind die Speicheroperationen dazu konzipiert, in dem Benutzerraumspeicher zu lesen oder in diesen zu schreiben. Der Benutzerraumspeicher kann zum Beispiel während der Ausführung eines Prozesses, der einer innerhalb des Mehrknotennetzwerks 100 eingesetzten/zugewiesenen parallelen Anwendung zugeordnet ist, verwendet werden.
  • Es sei jedoch daran erinnert, dass das Mehrknotennetzwerk 100 ein adaptives Routing unterstützen kann, das zur Folge haben kann, dass eine Lieferung außerhalb der Reihenfolge auftritt. Somit können einige Pakete außerhalb der Reihenfolge empfangen und bestätigt werden, indem der Zielknoten ein Bit umkehrt (z. B. von 0 auf 1). Zum Beispiel wurden, wie gezeigt, sechs (6) der Pakete innerhalb des erwarteten Bereichs 504 bestätigt (z. B. empfangen = 1), während zehn (10) Pakete noch zu empfangen sind (z. B. empfangen = 0). Innerhalb dieser empfangenen Pakete wurden zwei außerhalb der Reihenfolge empfangen (z. B. Pakete 505 und 513). Die Speicheroperationen, die mit diesen außerhalb der Reihenfolge empfangenen Paketen verbunden sind, können verzögert werden, bis alle Pakete auf der linken Seite (z. B. mit früheren Sequenznummern) empfangen worden sind, oder sie können sofort angewandt werden. Man beachte, dass Pakete jenseits des erwarteten Bereichs 504 als in einem Abschnitt außerhalb des Bereichs 506 liegend betrachtet werden. Wenn somit der Zielknoten Pakete mit einer Sequenznummer empfängt, die die Fenstergröße (z. B. innerhalb des außerhalb des Bereichs liegenden Abschnitts 506) des Fensterstatusmanagers 501 überschreitet, kann der Zielknoten ein negatives Bestätigungspaket an den initiierenden Knoten senden.
  • Während der in 5 gezeigte Fensterstatusmanager 501 mit einer 16-Paket-Konfiguration konfiguriert ist, liegen auch andere Fenstergrößen innerhalb des Umfangs dieser Offenbarung und können abhängig von einer angestrebten Konfiguration variieren. Zum Beispiel, und gemäß einer Ausführungsform, kann der Fensterstatusmanager 501 dazu ausgelegt sein, mindestens 1000 Pakete innerhalb eines gegebenen PSN-Raums zu verfolgen.
  • Zurückkommend auf 4, und in Vorgang 416, sendet der Zielknoten ein Bestätigungspaket an den initiierenden Knoten. In einigen Fällen kann der initiierende Knoten einfach ein Antwortpaket an den initiierenden Knoten senden, das das Paket als Bestätigung identifiziert, und kann auch die dem in Vorgang 408 empfangenen Paket entsprechende Sequenznummer SeqNumi bereitstellen. Im Licht dieser Offenbarung ist darauf hinzuweisen, dass das Bestätigungspaket eine relativ kleine Größe aufweisen kann und somit die Menge an über das Mehrknotennetzwerk 100 übertragenen Daten beschränkt.
  • In Vorgang 417 kann der Zielknoten ein spezielles Bestätigungspaket übertragen, das die PSN des am weitesten im PSN-Raum fortgeschrittenen zusammenhängend empfangenen Pakets enthält. Gemäß einer Ausführungsform kann der Knoten periodisch ein spezielles Bestätigungspaket senden. In einigen Fällen kann das spezielle Bestätigungspaket mit einer vordefinierten Frequenz N gesendet werden, wobei N als irgendeine positive ganze Zahl definiert ist, durch die MaxWindow ohne einen Rest dividiert werden kann (z. B. MaxWindow % N = 0). Zum Beispiel kann der Zielknoten in einem 16-Paket-Fenster ein spezielles Bestätigungspaket einmal für jeweils vier (4) zusammenhängend empfangene Pakete (z. B. Frequenz N = 4) relativ zu dem Startindex 507 senden. In anderen Fällen kann die vordefinierte Frequenz N irgendeine positive ganze Zahl kleiner oder gleich MaxWindow sein.
  • Zum Beispiel, und unter erneuter Bezugnahme auf 5, wurden drei der ersten vier Pakete als empfangen registriert (z. B. empfangen = 1). Der Zielknoten kann als Antwort auf ein letztes innerhalb dieses Bereichs empfangenes und daher den Satz vervollständigendes Paket (z. B. Paket 509) ein spezielles Bestätigungspaket senden, das die SeqNumi = 4 (oder 3 in einem Nullbasisschema) beinhaltet, die die am weitesten fortgeschrittene zusammenhängend empfangene Sequenznummer in dem PSN-Raum 500 ist. Somit kann die dem Paket 509 entsprechende Sequenznummer innerhalb des speziellen Bestätigungspakets übertragen werden (z. B. wenn die Frequenz N 4 ist). Es ist darauf hinzuweisen, dass das Paket 509 im PSN-Raum 500 „am weitesten“ fortgeschritten ist, da jeder Paketindex, beginnend bei Index 0 (z. B. bei 507 gezeigt), oder der erste Index des Fensterstatusmanagers 501 bis zu dem Index, der Paket 509 darstellt, als empfangen angezeigt wurde. Die bestimmte Frequenz N kann auch als die minimale Anzahl von Paketen verstanden werden, die innerhalb eines gegebenen aufeinanderfolgenden Satzes relativ zu dem Startindex 507 empfangen werden, bevor eine spezielle Bestätigung gesendet wird.
  • 7 zeigt einen beispielhaften Protokollfluss und veranschaulicht Aspekte der speziellen Bestätigungspakete eingehender. Wie gezeigt, wird ein spezielles Bestätigungspaket mit einer Frequenz N = 4 gesendet. Genauer gesagt, überträgt der initiierende Knoten eine Vielzahl von Paketen, die adaptiv zu dem Zielknoten geroutet werden. Als Reaktion darauf sendet der Zielknoten End-To-End (E2E) -Bestätigungen zurück an den initiierenden Knoten. Zusätzlich sendet der Zielknoten basierend auf der Frequenz N = 4 eine spezielle Bestätigung an den initiierenden Knoten. Die spezielle Bestätigung kann die Sequenznummer beispielsweise des Pakets 509, das das am weitesten im PSN-Raum 500 fortgeschrittene ist, identifizieren. In diesem Fall kann die Sequenznummer gleich 4 sein, somit wird der initiierende Knoten dazu veranlasst, die SeqNum auf 4 zu setzen, zur Verwendung beim Berechnen einer MaxSeqNum während des Verfahrens 300 von 3.
  • Weitergehend mit 5, und dem Beispiel, in dem die Frequenz N = 4 ist, nachdem der Zielknoten erfolgreich Pakete 5..8 empfangen hat (z. B. der allgemein bei 518 angezeigte Satz), kann der Zielknoten noch ein weiteres spezielles Bestätigungspaket mit SeqNumi = 8 senden. Somit kann der Zielknoten Paketübertragungsstatusverfolgung für eine endliche Anzahl von Paketen innerhalb des PSN-Raums 500 über den Fensterstatusmanager 501 ausführen und kann eine periodische Anzeige des Zustands desselben über spezielle Bestätigungspakete nach dem Empfangen eines vollständigen Satzes aufeinanderfolgend nummerierter Pakete relativ zu dem Startpaketindex 507 bereitstellen. So kann der initiierende Knoten die speziellen Bestätigungspakete empfangen, wobei jedes spezielle Bestätigungspaket eine kumulative Aktualisierung für ein aktuelles Fenster bereitstellt. Es ist darauf hinzuweisen, dass diese kumulative Aktualisierung es dem initiierenden Knoten erlauben kann, eine grobkörnige Statusverfolgung auszuführen und die Kosten der Verfolgung des Übertragungsstatus jedes einzelnen Pakets zu vermeiden. Die oben diskutierte spezifische Beispielfrequenz ist nicht dazu beabsichtigt, die vorliegende Offenbarung zu beschränken, und zahlreiche andere Frequenzwerte liegen innerhalb des Umfangs dieser Offenbarung und können basierend auf einer angestrebten Implementierung ausgewählt werden
  • Alternativ oder zusätzlich zu einer bestimmten Frequenz N kann der Zielknoten das spezielle Bestätigungspaket in einem bestimmten Intervall periodisch senden, sogar ohne das Empfangen eines oder mehrerer zusammenhängender Pakete mit am weitesten innerhalb des PSN-Raums liegenden Sequenznummern. Dies kann es dem initiierenden Knoten erlauben, zum Beispiel zu identifizieren, dass eines oder mehrere Pakete noch empfangen werden müssen und den Zielknoten daran gehindert haben, über eine bestimmte Paketposition innerhalb des Fensters hinaus vorzurücken. Zum Beispiel kann das reguläre Intervall konfigurierbar sein und kann auf einem Zeitgeber basieren, der durch Verwenden eines Hardware- oder Software-Takts eines Knotens implementiert ist. In einigen Fällen ist der Zeitgeber mit einem Intervall von mindestens fünf (5) Sekunden konfiguriert, sodass nach Ablauf des Zeitgebers ein spezielles Bestätigungspaket gesendet wird. Andere Zeitbeschränkungen/-Intervalle für den Zeitgeber liegen jedoch ebenfalls innerhalb des Umfangs dieser Offenbarung.
  • Auf jeden Fall, zurückkommend auf 4, und in Vorgang 417, geht das Verfahren weiter zu Vorgang 420, wenn ein spezielles Bestätigungspaket gesendet wurde und das Fenster entsprechend nach rechts verschoben wurde. Andernfalls kehrt das Verfahren 400 zum Vorgang 414 zurück und wartet auf ein zusätzliches Paket innerhalb des aktuellen Fensters von dem initiierenden Knoten.
  • In Vorgang 420 setzt der Zielknoten den Fensterstatusmanager 501 zurück und verschiebt das Fenster nach rechts. Zum Beispiel, und wie in 6 gezeigt, ist der Fensterstatusmanager 501 um vier (4) nach rechts so verschoben, dass zumindest ein Teil des vorherigen außerhalb des Bereichs liegenden Abschnitts 506 der Paketsequenz 500 nun innerhalb des im Bereich liegenden Abschnitts 504 ist. Die bestimmte nach rechts verschobene Zahl kann relativ zu dem Bereich am weitesten im PSN-Raum 500 fortgeschrittener zusammenhängend empfangener Pakete sein, der über ein spezielles Bestätigungspaket, das in Schritt 417 gesendet wurde, an den initiierenden Knoten berichtet wurde. Dementsprechend verschieben sich die den zuvor empfangenen Paketen 505 und 513 entsprechenden Indexpositionen um eine gleiche Anzahl so nach links, dass sich Pakete 505 und 513 in dem Fensterstatusmanager 501 von 6 als empfangen registrieren (z. B. empfangen = 1). Es ist darauf hinzuweisen, und es wird gezeigt, dass dies den ersten Index 507 dazu veranlasst, sich logisch mit einer Sequenznummer, die in dieser Veranschaulichung die dem ersten Paket des Satzes 518 entsprechende Paketsequenznummer ist, über Paket 509 hinaus auszurichten. Die verbleibenden Paketindizes können dann auf Null gesetzt werden, zum Beispiel durch Wenden irgendeines Paketindex mit einer Eins auf eine Null. Das Verfahren 400 kann fortfahren, Vorgänge 408 bis 420 ausführen, bis der initiierende/Zielknoten die Verbindung zum Beispiel beendet.
  • Beispielhaftes System
  • 9 veranschaulicht ein Datenverarbeitungssystem 900, das dazu ausgelegt ist, verschiedene hierin offenbarte Prozesse auszuführen Zum Beispiel kann das System 900 in einen Personal-Computer (PC), Laptop-Computer, tragbares Datenverarbeitungsgerät,Ultra-Laptop-Computer, Tablet, Touchpad, tragbaren Computer, Handheld-Computer, Palmtop-Computer, Personal-Digital-Assistant (PDA), Mobiltelefon, Kombination Mobiltelefon/PDA, Fernseher, intelligentes Gerät (z. B. Smartphone, Smart-Tablet oder Smart-TV), mobiles Internetgerät (MID), Nachrichtengerät, Datenkommunikationsgerät, Set-Top-Box, Spielekonsole oder andere solche Computerumgebungen, die Grafik-Rendering-Operationen durchführen und Inhalte anzeigen können, integriert sein.
  • In einigen Ausführungsformen umfasst das System 900 eine Plattform 902, die mit einer Anzeige 920 gekoppelt ist. Die Plattform 902 kann Inhalt von einem Inhaltsgerät, wie zum Beispiel Inhaltsdienstgerät(e) 930 oder Inhaltsliefergerät(e) 940, oder anderen ähnlichen Inhaltsquellen empfangen. Eine Navigationssteuerung 950, die ein oder mehrere Navigationsmerkmale umfasst, kann verwendet werden, um beispielsweise mit der Plattform 902 und/oder der Anzeige 920 zu interagieren, um das Navigationsgestikulieren durch den Benutzer zu ergänzen. Jede dieser beispielhaften Komponenten wird unten ausführlicher beschrieben.
  • In einigen Ausführungsformen kann die Plattform 902 jegliche Kombination eines Chipsatzes 905, Prozessors 910, Speichers 912, Speicherung 914, Grafiksubsystems 915, Kamera 919, Bewegungssensoren 921, Anwendungen 916 und/oder Funkgeräts 918 oder einer drahtlosen Sende-Empfangsschaltung umfassen. Chipsatz 905 kann Interkommunikation zwischen Prozessor 910, Speicher 912, Speicherung 914, Grafiksubsystem 915, Anwendungen 916 und/oder Funkgerät 918 bereitstellen. Zum Beispiel kann Chipsatz 905 einen Speicherungsadapter (nicht dargestellt) beinhalten, der zum Bereitstellen von Interkommunikation mit Speicherung 914 geeignet ist.
  • Prozessor 910 kann zum Beispiel als Complex-Instruction-Set-Computer- (CISC-) oder Reduced-Instruction-Set-Computer (RISC) -Prozessoren, x86-Instruktionssatzkompatible Prozessoren, Multicore- oder jeglicher andere Mikroprozessor oder Central-Processing-Unit (CPU) implementiert sein. In einigen Ausführungsformen kann Prozessor 910 Dual-Core-Prozessor(en), Dual-Core-Mobile-Prozessor(en) und so weiter umfassen. Speicher 912 kann zum Beispiel als ein flüchtiges Speichergerät implementiert sein, wie zum Beispiel, aber nicht beschränkt auf einen Random-Access-Memory (RAM), Dynamic-Random-Access-Memory (DRAM) oder Static-RAM (SRAM). Speicherung 914 kann beispielsweise als ein nichtflüchtiges Speicherungsgerät implementiert sein, wie zum Beispiel, aber nicht beschränkt auf ein Magnetplattenlaufwerk, optisches Plattenlaufwerk, Bandlaufwerk, internes Speicherungsgerät, verbundenes Speicherungsgerät, Flash-Speicher, batteriegesicherter SDRAM (synchroner DRAM) und/oder ein netzwerkzugängliches Speichergerät. In einigen Ausführungsformen kann Speicherung 914 Technologie umfassen, um den speicherleistungsverbesserten Schutz für wertvolle digitale Medien zu erhöhen, wenn beispielsweise mehrere Festplatten enthalten sind.
  • Grafiksubsystem 915 kann das Verarbeiten von Bildern wie Standbild oder Video für Anzeige ausführen und ist in einigen Ausführungsformen dazu ausgelegt, Gesichtsbilder zu synthetisieren, wie hierin verschiedenartig beschrieben. Grafiksubsystem 915 kann zum Beispiel eine Graphics-Processing-Unit (GPU) oder eine Visual-Processing-Unit (VPU) sein. Eine analoge oder digitale Schnittstelle kann dazu verwendet werden, Grafiksubsystem 915 und Anzeige 920 kommunizierend zu koppeln. Zum Beispiel kann die Schnittstelle jegliche einer High-Definition-Multimedia-Interface-, DisplayPort-, drahtlosen HDMI- und/oder drahtlosen HD-konformen Techniken sein. Grafiksubsystem 915 könnte in Prozessor 910 oder Chipsatz 905 integriert sein. Grafiksubsystem 915 könnte eine eigenständige Karte sein, die kommunizierend mit Chipsatz 905 gekoppelt ist. Die Grafik- und/oder Videoverarbeitungstechniken, einschließlich der hierin beschriebenen Techniken zum Identifizieren und Erzeugen bevorzugter Flächenorientierungen, können in verschiedenen Hardwarearchitekturen implementiert sein. Zum Beispiel können Grafik- und/oder Videofunktionalität in einem Chipsatz integriert sein. Alternativ dazu kann ein spezieller Grafik- und/oder Videoprozessor verwendet werden. Als noch eine weitere Ausführungsform können die Grafik- und/oder Videofunktionen durch einen Mehrzweckprozessor einschließlich eines Multicore-Prozessors implementiert werden. In einer weiteren Ausführungsform können die Funktionen in einem Unterhaltungselektronikgerät implementiert sein.
  • Funkgerät 918 kann eines oder mehrere Funkgeräte beinhalten, die zum Übertragen und Empfangen von Signalen durch Verwenden verschiedener geeigneter drahtloser Kommunikationstechniken geeignet sind. Solche Techniken können Kommunikationen über eines oder mehrere drahtlose Netzwerke einbeziehen. Beispielhafte drahtlose Netzwerke beinhalten (sind jedoch nicht beschränkt auf) Wireless-Local-Area-Networks (WLAN), Wireless-Personal-Area-Networks (WPAN), Wireless-Metropolitan-Area-Network (WMAN), Mobilfunknetzwerke und Satellitennetzwerke. Bei der Kommunikation über solche Netzwerke kann Funkgerät 918 gemäß einem oder mehreren anwendbaren Standards in jeglicher Version arbeiten.
  • In einigen Ausführungsformen können Inhaltsdienstgerät(e) 930 von jeglichem nationalen, internationalen und/oder unabhängigen Dienst gehostet werden und somit für Plattform 902 beispielsweise über das Internet oder ein anderes Netzwerk zugänglich sein. Inhaltsdienstgerät(e) 930 können mit Plattform 902 und/oder mit Anzeige 920 gekoppelt sein. Plattform 902 und/oder Inhaltsdienstgerät(e) 930 können mit einem Netzwerk 960 gekoppelt sein, um Medieninformationen zu und von Netzwerk 960 zu kommunizieren (z. B. zu senden und/oder zu empfangen). Inhaltsliefergerät(e) 940 können auch mit Plattform 902 und/oder mit Anzeige 920 gekoppelt sein. In einigen Ausführungsformen können Inhaltsdienstgerät(e) 930 eine Kabelfernsehbox, Personalcomputer, Netzwerk, Telefon, internetfähige Geräte oder Vorrichtung, geeignet zum Liefern von digitaler Information und/oder Inhalt, und jegliches andere ähnliche Gerät umfassen, das geeignet ist, unidirektional oder bidirektional Inhalt zwischen Inhaltsanbietern und Plattform 902 und/oder Anzeige 920, über Netzwerk 960 oder direkt zu kommunizieren. Es wird darauf hingewiesen, dass der Inhalt unidirektional und/oder bidirektional zu und von jeglicher der Komponenten in System 900 und einem Inhaltsanbieter über Netzwerk 960 kommuniziert werden kann. Beispiele von Inhalt können jegliche Medieninformationen, einschließlich zum Beispiel Video, Musik, Grafik, Text, medizinischer Inhalt und Spieleinhalt, und so weiter, beinhalten.
  • Inhaltsdienstgerät(e) 930 empfangen Inhalt wie Kabelfernsehprogramme einschließlich Medieninformation, digitaler Information und/oder anderer Inhalt. Beispiele für Inhaltsanbieter können jegliche Anbieter von Kabel- oder Satellitenfernsehen oder Radio- oder Internet-Inhaltsanbieter beinhalten. Die bereitgestellten Beispiele sollen die vorliegende Offenbarung nicht beschränken. In einigen Ausführungsformen kann Plattform 902 Steuersignale von Navigationssteuerung 950 mit einem oder mehreren Navigationsmerkmalen empfangen. Die Navigationsmerkmale von Steuerung 950 können verwendet werden, um beispielsweise mit Benutzerschnittstelle 922 zu interagieren. In einigen Ausführungsformen kann Navigationssteuerung 950 ein Zeigegerät sein, das eine Computerhardwarekomponente (insbesondere ein menschliches Schnittstellengerät) sein kann, die es einem Benutzer erlaubt, räumliche (z. B. kontinuierliche und mehrdimensionale) Daten in einen Computer einzugeben. Viele Systeme, wie zum Beispiel Graphical-User-Iinterfaces (GUI) und Fernsehgeräte und Monitore, erlauben es dem Benutzer, Daten für den Computer oder das Fernsehen unter Verwendung von physischen Gesten, Gesichtsausdrücken oder Tönen zu steuern und bereitzustellen.
  • Bewegungen der Navigationsmerkmale von Steuerung 950 können auf einer Anzeige (z. B. Anzeige 920) durch Bewegungen eines Zeigegeräts, eines Cursors, eines Fokusrings oder anderer auf der Anzeige angezeigter visueller Indikatoren wiedergegeben werden. Zum Beispiel können unter der Steuerung von Softwareanwendungen 916 die auf Navigationssteuerung 950 angeordneten Navigationsmerkmale zu virtuellen Navigationsmerkmalen abgebildet werden, die beispielsweise auf Benutzerschnittstelle 922 angezeigt werden. In einigen Ausführungsformen kann Steuerung 950 keine separate Komponente sein, sondern in Plattform 902 und/oder Anzeige 920 integriert sein. Ausführungsformen sind jedoch nicht auf die Elemente oder auf den Kontext, der hierin gezeigt oder beschrieben ist, beschränkt, worauf hingewiesen wird.
  • In einigen Ausführungsformen können Treiber (nicht gezeigt) eine Technologie umfassen, die es Benutzern ermöglicht, Plattform 902 wie einen Fernseher mit der Berührung einer Taste nach dem anfänglichen Hochfahren, wenn ermöglicht, beispielsweise sofort ein- und auszuschalten. Programmlogik kann es Plattform 902 erlauben, Inhalte an Medienadapter oder andere Inhaltsdienstgerät(e) 930 oder Inhaltsliefergerät(e) 940 zu streamen, wenn die Plattform auf „aus“ geschaltet ist. Zusätzlich kann Chipsatz 905 Hardware- und/oder Software-Unterstützung für beispielsweise 5.1-Surround-Sound-Audio und/oder High-Definition 7.1-Surround-Sound-Audio umfassen. Treiber können einen Grafiktreiber für integrierte Grafikplattformen beinhalten. In einigen Ausführungsformen kann der Grafiktreiber eine Peripheral-Component-Interconnect (PCI) -Express-Grafikkarte umfassen.
  • In verschiedenen Ausführungsformen können eine oder mehrere der in System 900 gezeigten Komponenten integriert sein. Zum Beispiel können Plattform 902 und Inhaltsdienstgerät(e) 930 integriert sein, oder Plattform 902 und Inhaltsliefergerät(e) 940 können integriert sein, oder Plattform 902, Inhaltsdienstgerät(e) 930 und Inhaltsliefergerät(e) 940 können beispielsweise integriert sein. In verschiedenen Ausführungsformen können Plattform 902 und Anzeige 920 eine integrierte Einheit sein. Anzeige 920 und Inhaltsdienstgerät(e) 930 können integriert sein, oder Anzeige 920 und Inhaltsliefergerät(e) 940 können beispielsweise integriert sein. Diese Beispiele sollen die vorliegende Offenbarung nicht beschränken.
  • In verschiedenen Ausführungsformen kann System 900 als ein drahtloses System, ein drahtgebundenes System, oder eine Kombination von beiden implementiert sein. Wenn als ein drahtloses System implementiert, kann System 900 Komponenten und Schnittstellen beinhalten, die zum Kommunizieren über ein drahtloses geteiltes Medium geeignet sind, wie zum Beispiel eine oder mehrere Antennen, Sender, Empfänger, Sende-Empfangsgeräte, Verstärker, Filter, Steuerlogik, und so weiter. Ein Beispiel von drahtlosem geteiltem Medium kann Abschnitte eines drahtlosen Spektrums, wie z. B. das HF-Spektrum, und so weiter, beinhalten. Wenn als ein drahtgebundenes System implementiert, kann System 900 Komponenten und Schnittstellen beinhalten, die zum Kommunizieren über drahtgebundene Kommunikationsmedien geeignet sind, wie zum Beispiel Eingabe/Ausgabe (I/O) -Adapter, physische Verbindungselemente, um den I/O-Adapter mit einem entsprechenden drahtgebundenen Kommunikationsmedium zu verbinden, eine Network-Interface-Card (NIC), Disc-Controller, Video-Controller, Audio-Controller, und so weiter. Beispiele für drahtgebundene Kommunikationsmedien können einen Draht, Kabel, Metallleiter, Printed-Circuit-Board (PCB), Rückwandplatine, Schaltergewebe, Halbleitermaterial, verdrillten Doppelleiter, Koaxialkabel, Faseroptik, und so weiter, beinhalten.
  • Plattform 902 kann einen oder mehrere logische oder physische Kanäle einrichten, um Informationen zu kommunizieren. Die Information kann Medieninformation und Steuerinformation beinhalten. Medieninformationen können sich auf jegliche Daten beziehen, die für einen Benutzer bestimmte Inhalte darstellen. Beispiele für Inhalte können beispielsweise Daten von einer Sprachkonversation, Videokonferenz, Video-Streaming, E-Mail- oder Textnachrichten, Voicemail-Nachrichten, alphanumerischen Symbolen, Grafiken, Bildern (z. B. Selfies, usw.), Video, Text, und so weiter, beinhalten. Steuerinformationen können sich auf jegliche Daten beziehen, die für ein automatisiertes System gedachte Befehle, Anweisungen oder Steuerwörter darstellen. Zum Beispiel kann Steuerinformation dazu verwendet werden, Medieninformation durch ein System zu leiten, oder einen Knoten anzuweisen, die Medieninformation in einer vorgegebenen Weise zu verarbeiten (z. B. durch Verwenden von Hardware, die für Privilegienzugriffsverletzungsprüfungen wie hierin beschrieben unterstützt wird). Die Ausführungsformen sind jedoch nicht auf die Elemente oder auf den Kontext, der in 9 gezeigt oder beschrieben ist, beschränkt.
  • Wie oben beschrieben, kann System 900 in verschiedenen physischen Stilen oder Formfaktoren verkörpert sein. 9 veranschaulicht Ausführungsformen eines kleinen Formfaktorgeräts 900, in dem System 900 verkörpert sein kann. In einigen Ausführungsformen kann Gerät 900 zum Beispiel als ein mobiles Datenverarbeitungsgerät mit drahtlosen Fähigkeiten implementiert sein. Ein mobiles Datenverarbeitungsgerät kann sich auf jegliches Gerät beziehen, das ein Verarbeitungssystem und eine mobile Energiequelle oder -Versorgung, wie zum Beispiel eine oder mehrere Batterien, hat.
  • Wie zuvor beschrieben, können Beispiele eines mobilen Datenverarbeitungsgeräts einen Personal-Computer (PC), Laptop-Computer, tragbares Datenverarbeitungsgerät, Ultra-Laptop-Computer, Tablet, Touchpad, tragbaren Computer, Handheld-Computer, Palmtop-Computer, Personal-Digital-Assistant (PDA), Mobiltelefon, Kombination Mobiltelefon/PDA, Fernseher, intelligentes Gerät (z. B. Smartphone, Smart-Tablet oder Smart-TV), mobiles Internetgerät (MID), Nachrichtengerät, Datenkommunikationsgerät, und so weiter, beinhalten.
  • Beispiele eines mobilen Datenverarbeitungsgeräts können auch Computer beinhalten, die angeordnet sind, um von einer Person getragen zu werden, wie zum Beispiel ein Handgelenkcomputer, Fingercomputer, Ringcomputer, Brillencomputer, Gürtelclipcomputer, Armbandcomputer, Schuhcomputer, Bekleidungscomputer und andere tragbare Computer. In einigen Ausführungsformen kann zum Beispiel ein mobiles Datenverarbeitungsgerät als ein Smartphone implementiert sein, das geeignet ist, Computeranwendungen sowie Sprachkommunikationen und/oder Datenkommunikationen auszuführen. Obwohl einige Ausführungsformen mit einem mobilen Datenverarbeitungsgerät, das beispielsweise als ein Smartphone implementiert ist, beschrieben werden können, wird darauf hingewiesen, dass andere Ausführungsformen durch Verwenden anderer drahtloser mobiler Datenverarbeitungsgeräte implementiert werden können. Die Ausführungsformen sind in diesem Zusammenhang nicht beschränkt.
  • Wie in 9 gezeigt, kann mobile elektronische Vorrichtung 900 ein Gehäuse 902, eine Anzeige 904, ein Eingabe/Ausgabe (I/O) -Gerät 906 und eine Antenne 908 umfassen. Vorrichtung 900 kann auch Navigationsmerkmale 912 umfassen. Anzeige 904 kann jegliche geeignete Anzeigeeinheit zum Anzeigen von Informationen umfassen, die für ein mobiles Datenverarbeitungsgerät, das in einer beispielhaften Ausführungsform eine Touchpad-Anzeige ist, angemessen sind. Das I/O-Gerät 906 kann jegliches geeignete I/O-Gerät zum Eingeben von Informationen in ein mobiles Datenverarbeitungsgerät umfassen. Beispiele für I/O-Gerät 906 können eine alphanumerische Tastatur, ein numerisches Tastenfeld, ein Touchpad, Eingabetasten, Knöpfe, eine Kamera, Schalter, Wippschalter, Mikrofone, Lautsprecher, Spracherkennungsgerät und Software, und so weiter, beinhalten. Informationen können in Gerät 900 auch mittels Mikrofon eingegeben werden. Solche Informationen können durch ein Spracherkennungsgerät digitalisiert werden. Die Ausführungsformen sind in diesem Zusammenhang nicht beschränkt.
  • Verschiedene Ausführungsformen können durch Verwenden von Hardwareelementen, Softwareelementen oder einer Kombination von beiden implementiert werden. Beispiele von Hardwareelementen können Prozessoren, Mikroprozessoren, Schaltkreise, Schaltungselemente (z. B. Transistoren, Widerstände, Kondensatoren, Induktoren, und so weiter), integrierte Schaltkreise, Application-Specific-Integrated-Circuits (ASIC), Programmable-Logic-Devices (PLD), Digital-Signal-Processors (DSP), Field-Programmable-Gate-Array (FPGA), Logikgatter, Register, On-Chip-Systeme, Halbleitergerät, Chips, Mikrochips, Chipsätze, und so weiter, beinhalten. Beispiele von Software können Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Subroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, Application-Program-Interfaces (API), Anweisungssätze, Datenverarbeitungscode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole, oder jegliche Kombination davon, beinhalten. Ob Hardware-Elemente und/oder Software-Elemente verwendet werden, kann von einer Ausführungsform zur nächsten gemäß jeglicher Anzahl von Faktoren, wie zum Beispiel angestrebte Berechnungsrate, Leistungsniveaus, Wärmetoleranzen, Verarbeitungszyklus-Budget, Eingangsdatenraten, Ausgangsdatenraten, Speicherressourcen, Datenbusgeschwindigkeiten und anderen Design- oder Leistungsbeschränkungen, variieren.
  • Einige Ausführungsformen können zum Beispiel durch Verwenden eines maschinenlesbaren Mediums oder Gegenstands implementiert werden, der eine Anweisung oder einen Satz von Anweisungen speichern kann, die, wenn von einer Maschine ausgeführt, die Maschine dazu veranlassen können, ein Verfahren und/oder Operationen gemäß einer Ausführungsform der vorliegenden Offenbarung auszuführen. Eine solche Maschine kann beispielsweise jegliche geeignete Verarbeitungsplattform, Datenverarbeitungsplattform, Datenverarbeitungsgerät, Verarbeitungsgerät, Datenverarbeitungssystem, Verarbeitungssystem, Computer, Prozessor oder dergleichen beinhalten und kann durch Verwenden jeglicher geeigneten Kombination von Hardware und Software implementiert werden. Das maschinenlesbare Medium oder der Artikel kann beispielsweise jeglichen geeigneten Typ von Speichereinheit, Speichergerät, Speicherartikel, Speichermedium, Speicherungsgerät, Speicherungsartikel, Speicherungsmedium und/oder Speicherungseinheit beinhalten, zum Beispiel Speicher, entfernbare oder nicht entfernbare Medien, löschbare oder nicht löschbare Medien, beschreibbare oder wiederbeschreibbare Medien, digitale oder analoge Medien, Festplatte, Diskette, Compact-Disk-Read-Only-Memory (CD-ROM), Compact-Disk-Recordable (CD-R), Compact-Disk-Rewritable (CD-RW), optische Disk, magnetische Medien, magneto-optische Medien, entfernbare Speicherkarten oder Disketten, verschiedene Typen von Digital-Versatile-Disk (DVD), ein Band, eine Kassette oder dergleichen. Die Anweisungen können jeglichen geeigneten Typ von ausführbarem Code beinhalten, der durch Verwenden irgendeiner geeigneten hochrangigen, niedrigrangigen, objektorientierten, visuellen, kompilierten und/oder interpretierten Programmiersprache implementiert wird.
  • Weitere beispielhafte Ausführungsformen
  • Die folgenden Beispiele betreffen weitere Ausführungsformen, aus denen zahlreiche Permutationen und Konfigurationen ersichtlich werden.
  • Beispiel 1 offenbart ein Verfahren zum Durchführen einer Interprozesskommunikation zwischen Knoten eines Mehrknotensystems, wobei das Verfahren das Definieren, durch eine Schaltung, eines Fensters, das einen Bereich von aufeinanderfolgend nummerierten Paketen darstellt, wobei das Fenster eine dem ersten Paket des Bereichs entsprechende Startindexnummer hat, das Empfangen, durch die Schaltung, einer Vielzahl von Paketen von einem entfernten Knoten, wobei jedes empfangene Paket eine eindeutige Sequenznummer aufweist, das Ermitteln, durch die Schaltung, des Empfangs eines aufeinanderfolgenden Satzes empfangener Pakete innerhalb des Bereichs von aufeinanderfolgend nummerierten Paketen, wobei der aufeinanderfolgende Satz empfangener Pakete aufeinanderfolgende Sequenznummern hat und ein erstes Paket des aufeinanderfolgenden Satzes eine Folgenummer entsprechend der Startindexnummer des Fensters hat, und das Übertragen, an den entfernten Knoten durch die Schaltung, einer Anzeige als Reaktion auf das Ermitteln des Empfangs des aufeinanderfolgenden Satzes empfangener Pakete, umfasst.
  • Beispiel 2 beinhaltet den Gegenstand von Beispiel 1, wobei die Anzeige ein spezielles Bestätigungspaket umfasst, wobei das spezielle Bestätigungspaket eine Sequenznummer beinhaltet, die dem letzten Paket des aufeinanderfolgenden Satzes empfangener Pakete innerhalb des Bereichs entspricht.
  • Beispiel 3 beinhaltet den Gegenstand eines der Beispiele 1-2, wobei das spezielle Bestätigungspaket periodisch zu dem entfernten Knoten basierend auf einem Zeitgeber übertragen wird.
  • Beispiel 4 beinhaltet den Gegenstand eines der Beispiele 1-3, der ferner als Reaktion auf das Ermitteln des Empfangs des aufeinanderfolgenden Satzes empfangener Pakete das Verschieben des Fensters so umfasst, dass die Startindexnummer des Fensters einem Paket entspricht, das einer Sequenznummer zugeordnet ist, die über das letzte Paket des aufeinanderfolgenden Satzes hinausgeht.
  • Beispiel 5 beinhaltet den Gegenstand eines der Beispiele 1-4, wobei ein Paket der empfangenen Vielzahl von Paketen mindestens eine Speicheroperation umfasst, und wobei das Verfahren ferner umfasst, dass die Ausführung mindestens einer Speicheroperation gegen einen Bereich eines Speichers veranlasst wird.
  • Beispiel 6 beinhaltet den Gegenstand von Beispiel 5, wobei der Bereich des Speichers einen Benutzerraumspeicher umfasst.
  • Beispiel 7 beinhaltet den Gegenstand eines der Beispiele 5-6, wobei die mindestens eine Speicheroperation eine atomare Operation beinhaltet.
  • Beispiel 8 umfasst den Gegenstand eines der Beispiele 1-7, der ferner Empfangen, durch eine Schaltung, eines Verbindungsinitialisierungspakets von dem entfernten Knoten und Senden, durch die Schaltung, eines Antwortpakets an den entfernten Knoten, einschließlich einer mit dem Fenster und einer Startsequenznummer verbundenen maximalen Fenstergröße, umfasst.
  • Beispiel 9 beinhaltet den Gegenstand von Beispiel 8, wobei das Antwortpaket dazu ausgelegt ist, den entfernten Knoten zu veranlassen, der Vielzahl der von ihm gesendeten Pakete Sequenznummern mit einer Startsequenznummer, die auf die in dem Antwortpaket enthaltene Startsequenznummer eingestellt ist, zuzuweisen, und den entfernten Knoten dazu zu veranlassen, das Übertragen von Paketen vor dem Übertragen eines Pakets mit einer Sequenznummer, die gleich einer maximalen Sequenznummer ist, zu unterbrechen, wobei die maximale Sequenznummer als eine Summe der Startsequenznummer und der maximalen Fenstergröße berechnet wird.
  • Beispiel 10 beinhaltet den Gegenstand von Beispiel 8, wobei die Fenstergröße mindestens 1000 Pakete beträgt.
  • Beispiel 11 beinhaltet den Gegenstand eines der Beispiele 1-10, wobei das Ermitteln des Empfangs des aufeinanderfolgenden Satzes von empfangenen Paketen innerhalb des Bereichs ferner das Ermitteln umfasst, dass der aufeinanderfolgende Satz eine minimale Anzahl von Paketen beinhaltet.
  • Beispiel 12 umfasst den Gegenstand von Beispiel 11, wobei die minimale Anzahl von Paketen eine Zahl ist, die kleiner ist als eine Gesamtzahl von aufeinanderfolgenden Paketen, die durch das Fenster dargestellt werden.
  • Beispiel 13 beinhaltet den Gegenstand eines der Beispiele 1-12, wobei die Schaltung in eine Fabric-Schnittstellenschaltung integriert ist.
  • Beispiel 14 offenbart ein Verfahren zum Senden einer Vielzahl von Paketen zwischen Knoten eines Mehrknotensystems, wobei das Verfahren das Übertragen, durch eine Schaltung, einer Verbindungsanforderung an einen Zielknoten des Mehrknotensystems, das Empfangen, durch die Schaltung, eines Verbindungsanforderungsantwortpakets von dem Zielknoten, wobei das Verbindungsanforderungsantwortpaket eine maximale Fenstergröße beinhaltet, das Ermitteln, durch die Schaltung, einer Startindexnummer, und das Übertragen, an den Zielknoten durch die Schaltung, einer ersten Sequenz von aufeinanderfolgend nummerierten Paketen umfasst, wobei die erste Sequenz von aufeinanderfolgend nummerierten Paketen Sequenznummern hat, die bei der Startindexnummer beginnen und bei einer maximalen Sequenznummer enden, wobei die maximale Sequenznummer basierend auf einer Summe der Startindexnummer und der maximalen Fenstergröße berechnet wird.
  • Beispiel 15 beinhaltet den Gegenstand von Beispiel 14, der ferner das Empfangen eines speziellen Bestätigungspakets von dem Zielknoten umfasst, das eine neue Startsequenznummer umfasst.
  • Beispiel 16 beinhaltet den Gegenstand von Beispiel 15, der ferner das Übertragen, durch die Schaltung, einer zweiten Sequenz von aufeinanderfolgend nummerierten Paketen an den Zielknoten umfasst, wobei die zweite Sequenz der aufeinanderfolgend nummerierten Pakete Sequenznummern aufweist, die nach der neuen Startsequenznummer beginnen und bei einer maximalen Sequenznummer enden, wobei die maximale Sequenznummer basierend auf einer Summe der neuen Startsequenznummer und der maximalen Fenstergröße berechnet wird.
  • Beispiel 17 offenbart ein System, das ein erstes Knotengerät umfasst, das eine Speicherschaltung umfasst, die dazu ausgelegt ist, kommunizierend mit einem Mehrknotennetzwerk gekoppelt zu sein, wobei die Schaltung dazu ausgelegt ist, ein Fenster zu definieren, das einen Bereich von aufeinanderfolgend nummerierten Paketen darstellt, wobei das Fenster eine dem ersten Paket des Bereichs entsprechende Startindexnummer aufweist, eine Vielzahl von Paketen von einem entfernten Knoten zu empfangen, wobei jedes empfangene Paket eine eindeutige Sequenznummer aufweist, den Empfang eines aufeinanderfolgenden Satzes empfangener Pakete innerhalb des Bereichs von aufeinanderfolgend nummerierten Paketen zu ermitteln, wobei der aufeinanderfolgende Satz empfangener Pakete aufeinanderfolgende Sequenznummern aufweist und ein erstes Paket des aufeinanderfolgenden Satzes eine der Startindexnummer des Fensters entsprechende Sequenznummer aufweist, und an den entfernten Knoten als Reaktion auf das Ermitteln des Empfangs des aufeinanderfolgenden Satzes empfangener Pakete eine Anzeige zu übertragen.
  • Beispiel 18 beinhaltet den Gegenstand von Beispiel 17, wobei die Anzeige ein spezielles Bestätigungspaket umfasst, wobei das spezielle Bestätigungspaket eine Sequenznummer beinhaltet, die dem letzten Paket des aufeinanderfolgenden Satzes empfangener Pakete innerhalb des Bereichs entspricht.
  • Beispiel 19 beinhaltet den Gegenstand eines der Beispiele 17-18, wobei die Schaltung des ersten Knotengeräts ferner dazu ausgelegt ist, als Reaktion auf das Ermitteln des Empfangs des aufeinanderfolgenden Satzes empfangener Pakete das Fenster so zu verschieben, dass die Startindexnummer des Fensters einem Paket entspricht, das einer Sequenznummer zugeordnet ist, die über das letzte Paket des aufeinanderfolgenden Satzes hinausgeht.
  • Beispiel 20 beinhaltet den Gegenstand eines der Beispiele 17-19, wobei die Schaltung des ersten Knotengeräts eine Netzwerkschnittstellenschaltung umfasst.
  • Beispiel 21 beinhaltet den Gegenstand eines der Beispiele 17-20, wobei die Schaltung des ersten Knotengeräts ferner dazu ausgelegt ist, ein Verbindungsinitialisierungspaket von dem entfernten Knoten zu empfangen und ein Antwortpaket einschließlich einer maximalen Fenstergröße und einer Startsequenznummer zu dem entfernten Knoten zu übertragen.
  • Beispiel 22 offenbart ein Knotengerät, das einen Speicher, eine Netzwerkschnittstellenschaltung, um auf einem Mehrknotennetzwerk zu kommunizieren und um eine Vielzahl von Paketen von einem entfernten Knoten zu empfangen, wobei jedes empfangene Paket eine eindeutige Sequenznummer aufweist, Mittel zum Definieren eines Fensters, das einen Bereich aufeinanderfolgend nummerierter Pakete darstellt, wobei das Fenster eine dem ersten Paket des Bereichs entsprechende Startindexnummer aufweist, Mittel zum Ermitteln des Empfangs eines aufeinanderfolgenden Satzes empfangener Pakete innerhalb des Bereichs aufeinanderfolgend nummerierter Pakete, wobei der aufeinanderfolgende Satz empfangener Pakete aufeinanderfolgende Sequenznummern aufweist, und Mittel zum Verschieben des Fensters so, dass die Startindexnummer des Fensters einem Paket entspricht, das einer Sequenznummer zugeordnet ist, die über das letzte Paket des aufeinanderfolgenden Satzes hinausgeht als Reaktion auf das Ermitteln des Empfangs des aufeinanderfolgenden Satzes empfangener Pakete, umfasst.
  • Beispiel 23 beinhaltet den Gegenstand von Beispiel 22, wobei die Netzwerkschnittstellenschaltung ferner dazu ausgelegt ist, eine Anzeige an einen entfernten Knoten als Reaktion auf das Ermitteln des Empfangs des aufeinanderfolgenden Satzes empfangener Pakete zu übertragen.
  • Beispiel 24 beinhaltet den Gegenstand von Beispiel 23, wobei die Anzeige ein spezielles Bestätigungspaket umfasst, wobei das spezielle Bestätigungspaket eine Sequenznummer beinhaltet, die dem letzten Paket des aufeinanderfolgenden Satzes empfangener Pakete innerhalb des Bereichs entspricht.
  • Beispiel 25 beinhaltet den Gegenstand eines der Beispiele 22-24, wobei die Netzwerkschnittstellenschaltung ferner dazu ausgelegt ist, ein Verbindungsinitialisierungspaket von dem entfernten Knoten zu empfangen und ein Antwortpaket einschließlich einer maximalen Fenstergröße und einer Startsequenznummer zu dem entfernten Knoten zu übertragen.
  • Die vorstehende Beschreibung von beispielhaften Ausführungsformen wurde zum Zweck der Veranschaulichung und Beschreibung präsentiert. Sie ist nicht dazu beabsichtigt, erschöpfend zu sein, oder die vorliegende Offenbarung auf die präzise offenbarten Formen zu beschränken. Im Licht dieser Offenbarung sind viele Modifikationen und Variationen möglich. Es ist beabsichtigt, dass der Umfang der vorliegenden Offenbarung nicht durch diese detaillierte Beschreibung, sondern vielmehr durch die hierzu beigefügten Ansprüche beschränkt wird. Zukünftig eingereichte Anmeldungen, die Priorität für diese Anmeldung beanspruchen, können den offenbarten Gegenstand auf eine andere Weise beanspruchen und können allgemein jeden Satz einer oder mehrerer Beschränkungen, wie hierin offenbart oder anderweitig demonstriert, beinhalten.

Claims (22)

  1. Verfahren zum Durchführen einer Interprozesskommunikation zwischen Knoten eines Mehrknotensystems, wobei das Verfahren Folgendes umfasst: Definieren, durch eine Schaltung, eines Fensters, das einen Bereich von aufeinanderfolgend nummerierten Paketen darstellt, wobei das Fenster eine dem ersten Paket des Bereichs entsprechende Startindexnummer aufweist; Empfangen, durch die Schaltung, einer Vielzahl von Paketen von einem entfernten Knoten, wobei jedes empfangene Paket eine eindeutige Sequenznummer aufweist; Ermitteln, durch die Schaltung, des Empfangs eines aufeinanderfolgenden Satzes empfangener Pakete innerhalb des Bereichs aufeinanderfolgend nummerierter Pakete, wobei der aufeinanderfolgende Satz empfangener Pakete aufeinanderfolgende Sequenznummern aufweist, und wobei ein erstes Paket des aufeinanderfolgenden Satzes eine der Startindexnummer des Fensters entsprechende Sequenznummer aufweist; und Übertragen, an den entfernten Knoten durch die Schaltung, einer Anzeige als Reaktion auf das Ermitteln des Empfangs des aufeinanderfolgenden Satzes empfangener Pakete.
  2. Verfahren nach Anspruch 1, wobei die Anzeige ein spezielles Bestätigungspaket umfasst, wobei das spezielle Bestätigungspaket eine Sequenznummer beinhaltet, die dem letzten Paket des aufeinanderfolgenden Satzes empfangener Pakete innerhalb des Bereichs entspricht.
  3. Verfahren nach Anspruch 2, wobei das spezielle Bestätigungspaket periodisch zu dem entfernten Knoten basierend auf einem Zeitgeber übertragen wird.
  4. Verfahren nach Anspruch 1, das ferner Folgendes umfasst: als Reaktion auf das Ermitteln des Empfangs des aufeinanderfolgenden Satzes empfangener Pakete, Verschieben des Fensters so, dass die Startindexnummer des Fensters einem Paket entspricht, das einer Sequenznummer zugeordnet ist, die über das letzte Paket des aufeinanderfolgenden Satzes hinausgeht.
  5. Verfahren nach Anspruch 1, wobei ein Paket der empfangenen Vielzahl von Paketen mindestens eine Speicheroperation umfasst, und wobei das Verfahren ferner umfasst, dass die Ausführung mindestens einer Speicheroperation gegen einen Bereich eines Speichers veranlasst wird.
  6. Verfahren nach Anspruch 5, wobei der Bereich des Speichers einen Benutzerraumspeicher umfasst.
  7. Verfahren nach Anspruch 5, wobei die mindestens eine Speicheroperation eine atomare Operation beinhaltet.
  8. Verfahren nach Anspruch 1, das ferner Folgendes umfasst: Empfangen, durch eine Schaltung, eines Verbindungsinitialisierungspakets von dem entfernten Knoten; und Senden, durch die Schaltung, eines Antwortpakets an den entfernten Knoten, einschließlich einer mit dem Fenster und einer Startsequenznummer verbundenen maximalen Fenstergröße.
  9. Verfahren nach Anspruch 8, wobei das Antwortpaket dazu ausgelegt ist, den entfernten Knoten dazu zu veranlassen, der Vielzahl der von ihm gesendeten Pakete Sequenznummern mit einer Startsequenznummer, die auf die in dem Antwortpaket enthaltene Startsequenznummer eingestellt ist, zuzuweisen, und den entfernten Knoten dazu zu veranlassen, das Übertragen von Paketen vor dem Übertragen eines Pakets mit einer Sequenznummer, die gleich einer maximalen Sequenznummer ist, zu unterbrechen, wobei die maximale Sequenznummer als eine Summe der Startsequenznummer und der maximalen Fenstergröße berechnet wird.
  10. Verfahren nach Anspruch 8, wobei die Fenstergröße mindestens 1000 Pakete beträgt.
  11. Verfahren nach Anspruch 1, wobei das Ermitteln des Empfangs des aufeinanderfolgenden Satzes von empfangenen Paketen innerhalb des Bereichs ferner das Ermitteln umfasst, dass der aufeinanderfolgende Satz eine minimale Anzahl von Paketen beinhaltet.
  12. Verfahren nach Anspruch 11, wobei die minimale Anzahl von Paketen eine Zahl ist, die kleiner ist als eine Gesamtzahl aufeinanderfolgender Pakete, die durch das Fenster dargestellt werden.
  13. Verfahren nach Anspruch 1, wobei die Schaltung in eine Fabric-Schnittstellenschaltung integriert ist.
  14. System, das Folgendes umfasst: ein erstes Knotengerät, das Folgendes umfasst: einen Speicher; Schaltung, die dazu ausgelegt ist, kommunizierend mit einem Mehrknotennetzwerk gekoppelt zu sein, wobei die Schaltung dazu ausgelegt ist: ein Fenster zu definieren, das einen Bereich von aufeinanderfolgend nummerierten Paketen darstellt, wobei das Fenster eine dem ersten Paket des Bereichs entsprechende Startindexnummer aufweist; eine Vielzahl von Paketen von einem entfernten Knoten zu empfangen, wobei jedes empfangene Paket eine eindeutige Sequenznummer aufweist; Empfang eines aufeinanderfolgenden Satzes empfangener Pakete innerhalb des Bereichs aufeinanderfolgend nummerierter Pakete zu ermitteln, wobei der aufeinanderfolgende Satz empfangener Pakete aufeinanderfolgende Sequenznummern aufweist, und wobei ein erstes Paket des aufeinanderfolgenden Satzes eine der Startindexnummer des Fensters entsprechende Sequenznummer aufweist; und an den entfernten Knoten eine Anzeige als Reaktion auf das Ermitteln des Empfangs des aufeinanderfolgenden Satzes empfangener Pakete zu übertragen.
  15. System nach Anspruch 14, wobei die Anzeige ein spezielles Bestätigungspaket umfasst, wobei das spezielle Bestätigungspaket eine Sequenznummer beinhaltet, die dem letzten Paket des aufeinanderfolgenden Satzes empfangener Pakete innerhalb des Bereichs entspricht.
  16. System nach Anspruch 14, wobei die Schaltung des ersten Knotengeräts ferner dazu ausgelegt ist: als Reaktion auf das Ermitteln des Empfangs des aufeinanderfolgenden Satzes empfangener Pakete das Fenster so zu verschieben, dass die Startindexnummer des Fensters einem Paket entspricht, das einer Sequenznummer zugeordnet ist, die über das letzte Paket des aufeinanderfolgenden Satzes hinausgeht.
  17. System nach Anspruch 14, wobei die Schaltung des ersten Knotengeräts eine Netzwerkschnittstellenschaltung umfasst.
  18. System nach Anspruch 14, wobei die Schaltung des ersten Knotengeräts ferner dazu ausgelegt ist: ein Verbindungsinitialisierungspaket von dem entfernten Knoten zu empfangen; und ein Antwortpaket einschließlich einer maximalen Fenstergröße und einer Startsequenznummer an den entfernten Knoten zu übertragen.
  19. Knotengerät, das Folgendes umfasst: einen Speicher; eine Netzwerkschnittstellenschaltung, um auf einem Mehrknotennetzwerk zu kommunizieren und um eine Vielzahl von Paketen von einem entfernten Knoten zu empfangen, wobei jedes empfangene Paket eine eindeutige Sequenznummer aufweist; Mittel zum Definieren eines Fensters, das einen Bereich von aufeinanderfolgend nummerierten Paketen darstellt, wobei das Fenster eine dem ersten Paket des Bereichs entsprechende Startindexnummer aufweist; Mittel zum Ermitteln des Empfangs eines aufeinanderfolgenden Satzes empfangener Pakete innerhalb des Bereichs aufeinanderfolgend nummerierter Pakete, wobei der aufeinanderfolgende Satz empfangener Pakete aufeinanderfolgende Sequenznummern aufweist, und wobei ein erstes Paket des aufeinanderfolgenden Satzes eine der Startindexnummer des Fensters entsprechende Sequenznummer aufweist; und Mittel zum Verschieben des Fensters so, dass die Startindexnummer des Fensters einem Paket entspricht, das einer Sequenznummer jenseits des letzten Pakets des aufeinanderfolgenden Satzes zugeordnet ist als Reaktion auf das Ermitteln des Empfangs des aufeinanderfolgenden Satzes empfangener Pakete.
  20. Knotengerät nach Anspruch 19, wobei die Netzwerkschnittstellenschaltung ferner dazu ausgelegt ist, eine Anzeige an einen entfernten Knoten als Reaktion auf das Ermitteln des Empfangs des aufeinanderfolgenden Satzes empfangener Pakete zu übertragen.
  21. Knotengerät nach Anspruch 20, wobei die Anzeige ein spezielles Bestätigungspaket umfasst, wobei das spezielle Bestätigungspaket eine Sequenznummer beinhaltet, die dem letzten Paket des aufeinanderfolgenden Satzes empfangener Pakete innerhalb des Bereichs entspricht.
  22. Knotengerät nach Anspruch 19, wobei die Netzwerkschnittstellenschaltung ferner dazu ausgelegt ist: ein Verbindungsinitialisierungspaket von dem entfernten Knoten zu empfangen; und ein Antwortpaket einschließlich einer maximalen Fenstergröße und einer Startsequenznummer an den entfernten Knoten zu übertragen.
DE112016005989.2T 2015-12-24 2016-11-25 Zuverlässiges, ausserhalb der reihenfolge liegendes end-to-end-protokoll mit robustem fensterstatusüberlaufmanagement und einem mehrknotensystem durch verwenden desselben Pending DE112016005989T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/757,993 US10044626B2 (en) 2015-12-24 2015-12-24 Reliable out-of order end-to-end protocol with robust window state overflow management and a multi-node system using same
US14/757,993 2015-12-24
PCT/US2016/063783 WO2017112341A1 (en) 2015-12-24 2016-11-25 Reliable out-of-order end-to-end protocol with robust window state overflow management and a multi-node system using same

Publications (1)

Publication Number Publication Date
DE112016005989T5 true DE112016005989T5 (de) 2018-09-06

Family

ID=59087295

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112016005989.2T Pending DE112016005989T5 (de) 2015-12-24 2016-11-25 Zuverlässiges, ausserhalb der reihenfolge liegendes end-to-end-protokoll mit robustem fensterstatusüberlaufmanagement und einem mehrknotensystem durch verwenden desselben

Country Status (3)

Country Link
US (1) US10044626B2 (de)
DE (1) DE112016005989T5 (de)
WO (1) WO2017112341A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3185455A1 (de) * 2015-12-21 2017-06-28 Thomson Licensing Verfahren und vorrichtung zur erkennung von paketverlust bei staggercasting
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
CN113824636A (zh) * 2020-06-18 2021-12-21 中兴通讯股份有限公司 报文发送方法、接收方法、电子设备、系统及存储介质
CN111953618B (zh) * 2020-08-21 2022-07-19 锐捷网络股份有限公司 一种多级并行交换架构下的解乱序方法、装置及系统

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5222061A (en) * 1991-10-31 1993-06-22 At&T Bell Laboratories Data services retransmission procedure
ATE441275T1 (de) 1998-10-30 2009-09-15 Virnetx Inc Netzwerkprotokol zur sicheren kommunikation mit gesicherter systemverfügbarkeit
US7630305B2 (en) * 2003-07-29 2009-12-08 Orbital Data Corporation TCP selective acknowledgements for communicating delivered and missed data packets
US8005972B2 (en) 2006-06-26 2011-08-23 International Business Machines Corporation Detection of inconsistent data in communications networks
US8228791B2 (en) 2006-08-22 2012-07-24 Embarq Holdings Company, Llc System and method for routing communications between packet networks based on intercarrier agreements
US8320252B2 (en) 2009-11-03 2012-11-27 Nxp B.V. System and method for data communications using a sliding window protocol with selective retransmission
US8363550B1 (en) 2010-06-15 2013-01-29 Google Inc. Adaptive data unit transmission and acknowledgment

Also Published As

Publication number Publication date
US20170187637A1 (en) 2017-06-29
US10044626B2 (en) 2018-08-07
WO2017112341A1 (en) 2017-06-29

Similar Documents

Publication Publication Date Title
DE112016006026T5 (de) Methoden zur skalierbaren endpunktadressierung für parallele anwendungen
DE112018002466T5 (de) Umgehung der entzerrung bei niedrigeren datenraten
DE112016005989T5 (de) Zuverlässiges, ausserhalb der reihenfolge liegendes end-to-end-protokoll mit robustem fensterstatusüberlaufmanagement und einem mehrknotensystem durch verwenden desselben
DE112017002351T5 (de) Definieren einer priorität eines speicherverkehrs basierend auf bildsensor-metadaten
DE112018001138T5 (de) Hochleistungsverbindung
DE102018005753A1 (de) Serdes link training
DE102015002365A1 (de) Prioritätsbasierte kontextpräemption
US8725873B1 (en) Multi-server round robin arbiter
DE102019130715A1 (de) Verwaltung der systemstromversorgung in usb-c/usb-stromversorgungs-ablieferungssystemen
DE102016201686A1 (de) Bildsignalprozessor und vorrichtungen, die diesen umfassen
DE102016106524A1 (de) Bandbreitenpriorisierung
DE112017003294T5 (de) Technologien für ein skalierbares Senden und Empfangen von Paketen
DE102013114256A1 (de) Systeme und Verfahren zur Beibehaltung der Informationskohärenz
DE112011105901T5 (de) Verfahren und Vorrichtung zur Energieeinsparung für First In First Out (FIF0)-Speicher
DE112018002568T5 (de) Verfahren, Systeme und Vorrichtung zur Reduzierung von Speicherlatenz beim Abrufen von Pixelkernen
DE112021004177T5 (de) Detektion von einem Leistungsrückgang eines Webservice basierend auf Metriken von Gruppen von Benutzerinteraktionen
DE202014010952U1 (de) Effiziente Eingabe/Ausgabe (I/O) Operationen
DE112010004809T5 (de) Mehrfachgranulare Datenstromverarbeitung
DE112012005572T5 (de) Ausgleichen einer Bandbreite für mehrere Anforderer, die ein gemeinsam genutztes Speichersystem verwenden
DE112016005672T5 (de) Verbesserter virtueller Switch für Netzwerkfunktionsvirtualisierung
DE102019102825A1 (de) Kohärentes Caching von Daten für Skalierung mit hoher Bandbreite
DE112018000474T5 (de) Verfahren und elektronische Vorrichtung zur Datenverarbeitung zwischen mehreren Prozessoren
DE112011106026B4 (de) Vorrichtung, Tablet-Computer und System
DE112020001089T5 (de) Verbessern von cache-trefferverhältnissen bei ausgewählten datenträgern in einem speichersystem
DE102014111457B4 (de) Topologie und bandbreiten-management für i/0 und eingehende av

Legal Events

Date Code Title Description
R012 Request for examination validly filed