DE112004002043B4 - Verfahren, System und Programm zum Aufbau eines Pakets - Google Patents
Verfahren, System und Programm zum Aufbau eines Pakets Download PDFInfo
- Publication number
- DE112004002043B4 DE112004002043B4 DE112004002043T DE112004002043T DE112004002043B4 DE 112004002043 B4 DE112004002043 B4 DE 112004002043B4 DE 112004002043 T DE112004002043 T DE 112004002043T DE 112004002043 T DE112004002043 T DE 112004002043T DE 112004002043 B4 DE112004002043 B4 DE 112004002043B4
- Authority
- DE
- Germany
- Prior art keywords
- payload
- packet
- header
- queue
- writing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9042—Separate storage for different parts of the packet, e.g. header and payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9084—Reactions to storage capacity overflow
- H04L49/9089—Reactions to storage capacity overflow replacing packets in a storage arrangement, e.g. pushout
- H04L49/9094—Arrangements for simultaneous transmit and receive, e.g. simultaneous reading/writing from/to the storage element
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
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
Verfahren zum Aufbauen eines Pakets, umfassend: Empfangen (100) einer Anforderung, ein Paket aufzubauen, die Informationen über zumindest einen Header und eine Nutzlast zur Einbeziehung in das Paket umfasst; Erzeugen (102) des zumindest einen Headers für die empfangene Anforderung; Schreiben des erzeugten zumindest einen Headers in eine erste Warteschleife; Anfordern (106) der Nutzlast zum Einbeziehen in das Paket; Schreiben der empfangenen Nutzlast in eine zweite Warteschleife; Lesen des erzeugten, zumindest einen Headers und der Nutzlast aus der ersten und zweiten Warteschleife; und Einbeziehen des gelesenen zumindest einen Headers und der gelesenen Nutzlast in das Paket, wobei das Schreiben des zumindest einen Headers in die erste Warteschleife, das Schreiben der Nutzlast in die zweite Warteschleife und das Lesen des zumindest einen Headers und der Nutzlast aus der ersten und zweiten Warteschleife in unterschiedlichen Taktbereichen mit jeweils verschiedenem Takt durchgeführt werden.
Description
- Hintergrund der Erfindung
- 1. Gebiet der Erfindung
- Die vorliegende Erfindung betrifft ein Verfahren, System und Programm zum Aufbau von Paketen.
- 2. Beschreibung des Stands der Technik
- In einer Netzumgebung überträgt und empfängt ein Netzadapter in einem Host-Computer Pakete unter Verwendung eines Paketübertragungsprotokolls, wie beispielsweise Ethernet, Fibre Channel, Infiniband, Transmission Control Protocol und Internet Protocol (TCP/IC), Internet Small Computer System Interface (iSCSI), etc. Häufig umfaßt das Betriebssystem des Host-Computers einen Gerätetreiber zur Kommunikation mit der Netzadapterhardware, um Eingabe/Ausgabe-(E/A)-Anforderungen über ein Netz zu empfangen und zu übertragen. Die am Netzadapter empfangenen Datenpakete werden in einem verfügbaren zugeteilten Paketpuffer im Host-Speicher gespeichert. Der Host-Computer umfaßt des weiteren einen Transportprotokolltreiber zur Bearbeitung der vom Netzadapter empfangenen Pakete, die im Paket-Puffer gespeichert sind, und um auf beliebige im Paket eingebettete E/A-Befehle oder -Daten zuzugreifen.
- Die Infiniband-Architektur erlaubt eine Punkt-zu-Punkt-Kommunikation zwischen mehreren miteinander verbundenen unabhängigen Prozessorplattformen, E/A-Plattformen und E/A-Vorrichtungen. Jeder Endpunkt, der unter Verwendung der Infiniband-Architektur kommuniziert, unterhält ein oder mehrere Warteschleifenpaare, wobei jedes Warteschleifenpaar eine Sendewarteschleife und eine Empfangswarteschleife umfaßt. Ein Kanaladapter in einem Hostsystem empfangt Arbeitsanforderungen vom Hostprozessor, die in der Sendewarteschleife angeordnet werden. Der Kanaladapter bearbeitet die Sendewarteschleife und überträgt die Arbeitsanforderung in eines oder mehrere Pakete mit Headern und Nutzdaten zur Übertragung zu einer Empfangswarteschleife in einem Ziel-E/A-Knoten. Wenn ein Knoten eine Nachricht empfängt, wird die Nachricht in der Empfangswarteschleife plaziert. Ein Knoten unterhält ein Warteschleifenpaar für jeden entfernten Knoten, mit dem er kommuniziert, um die Sende- und Empfangswarteschleifen zur Kommunikation mit diesem speziellen Knoten zu nutzen.
- Die Endpunkte kommunizieren untereinander Informationen durch über die Warteschleifen des Warteschleifenpaares übertragene Nachrichten, wobei jede Nachricht aus einem oder mehreren Paketen besteht. Beim Infiniband-Protokoll umfaßt jedes Paket einen oder mehrere Transport-Header, kann eine Paketnutzlast der übertragenen Daten umfassen und weist einen oder mehrere Fehlerkorrekturcodes auf, wie beispielsweise zyklische Redundanzprüfungs-(CRC)-Bytes.
- Ein Kanaladapter baut die Header und Nutzlast in ein Paket unter Verwendung einer einzigen Warteschleife sowohl für die Header als auch für die Nutzlast ein. In derartigen Systemen würde der Kanaladapter einen Header in der Warteschleife zusammensetzen und die Header und die Nutzlast in ein Paket kombinieren, wenn die Nutzlast in derselben Warteschleife verfügbar ist. Derartige Techniken erfordern eine sequentielle Bearbeitung zunächst der Header und dann der Nutzlast zur Kombination in ein Paket. Der Fehlerkorrekturcode wird nach dem Hinzufügen des einen oder der mehreren Header und der Nutzlast zu dem Paket hinzugefügt. Falls Verzögerungen, beim Empfang der Nutzlast vom Host auftreten, muß der Kanaladapter warten, bis die Nutzlast für das momentane aufzubauende Paket empfangen wird, bevor weitere Header erzeugt werden. Verzögerungen beim Empfang der Nutzlast können zu Latenzverzögerungen zwischen dem Aufbau aufeinander folgender Pakete führen.
-
US 2001/0053148 A1 -
CA 2 317 165 A1 behandelt satellitenbasierte Kommunikationssysteme und insbesondere die Replikation von Datenpaketen für Multicast-Anwendungen. Auch hier werden die Nutzlast und die Header-Informationen in separaten Puffern zwischengespeichert und vor einem Weiterversenden kombiniert. -
EP 1 124 362 A2 offenbart eine Vorrichtung zum Verarbeiten des TCP/IP-Protokolls in Hardware. Neben der Verwendung unterschiedlicher Puffer für die Zwischenspeicherung der Nutzlast und der Header-Informationen, sowie zur Berechnung der Header für die resultierenden Pakete, wird eine parallele Verarbeitung einzelner Schritte in einer Pipeline offenbart. -
US 5,412,655 A offenbart ein System zur Konstruktion und Dekonstruktion von ATM-Zellen, wobei die einzelnen Zellen in unterschiedlichen Pufferspeicherbereichen aufgebaut werden. - Die vorliegende Erfindung stellt eine Lösung zur Minimierung von Verzögerungen beim Aufbau von Paketen bereit. Dazu ist erfindungsgemäß ein Verfahren, ein Kanaladapter, ein System und ein Herstellungsartikel gemäß den Ansprüchen 1, 12, 22 und 25 vorgesehen.
- Kurzbeschreibung der Zeichnungen
- Im folgenden wird auf die Zeichnungen Bezug genommen, in welchen durchgängig gleiche Bezugszeichen übereinstimmende Teile wiedergeben:
-
1 zeigt eine Rechenumgebung, in der Ausführungsformen der Erfindung implementiert sind. -
2 zeigt ein Format eines Pakets einer im Stand der Technik bekannten Art; -
3 zeigt weitere Einzelheiten des Kanaladapters gemäß den Ausführungsformen der Erfindung; -
4 und5 zeigen zum Aufbau eines Pakets gemäß beschriebener Ausführungsformen der Erfindung durchgeführte Schritte. - Detaillierte Beschreibung der Ausführungsformen
- In der folgenden Beschreibung wird auf die begleitenden Zeichnungen Bezug genommen, die einen Teil derselben bilden und die mehrere Ausführungsformen der vorliegenden Erfindung veranschaulichen. Es ist verständlich, daß andere Ausführungsformen verwendet werden können und strukturelle und betriebstechnische Änderungen vorgenommen werden können, ohne den Umfang der vorliegenden Erfindung zu verlassen.
-
1 zeigt eine Rechenumgebung, in der Gesichtspunkte der Erfindung implementiert werden können. Ein Host2 umfaßt eine oder mehrere Zentraleinheiten (CPUs)4 und einen Speicher6 . Der Host2 umfaßt ein oder mehrere Kanaladapter8a ,8b , wovon zwei gezeigt sind. Jeder Kanaladapter8a ,8b umfaßt einen oder mehrere Ports12a ,12b und12c ,12d (wovon zwei an jedem Adapter gezeigt sind), die mit einer Netzstruktur10 verbunden sind, wobei jeder Port12a ,12b ,12c ,12d einen Knoten in der Netzstruktur10 aufweist. Die Kanaladapter8a ,8b werden zur Kommunikation mit zusätzlichen Knoten14a ,14b im Netz verwendet, wobei jeder zusätzliche Knoten einen Port eines Kanaladapters an einer entfernten Vorrichtung aufweist. - Die CPU(s)
4 führen einen oder mehrere Prozesse und Threads im Hostspeicher6 aus, die als Verbraucher20a ...20n bezeichnet werden, wobei jeder Verbraucher jeden Prozeß oder jede Funktion umfassen kann, der bzw. die dazu geeignet ist, Arbeitsanforderungen an die Kanaladapter8a ,8b zu erzeugen, wobei die Arbeitsanforderungen Informationen in Paketen zur Übertragung über das Netz10 umfassen. Ein Nachrichten- und Datendienst22 läuft im Betriebssystem (nicht gezeigt) des Host2 ab und bietet eine Schnittstelle zwischen im Host2 ablaufenden Verbrauchern20a ...20n und den Kanaladaptern8a ,8b . Auf diese Weise funktioniert der Nachrichten- und Datendienst22 als ein Gerätetreiber zur Schnittstellenbildung zwischen den Kanaladaptern8a ,8b und dem Hostsystem2 . Der Speicher6 umfaßt des weiteren einen Nutzlastpuffer24 , in dem Nutzlasten26a ...26n zum Einschluß in Pakete gespeichert werden, die die Kanaladapter8a ,8b über das Netz10 übertragen. Die Verbraucher20a ...20n würden in der zu einem Kanaladapter8a ,8b übertragenen Arbeitsanforderung eine Nutzlast26a ...26n im Nutzdatenpuffer24 zur Übertragung bestimmen. Die Headerinformation für das Paket kann auch in der Arbeitsanforderung festgelegt sein. Weitere Einzelheiten der Infiniband-Architektur, in der Ausführungsformen implementiert sein können, wie beispielsweise die Ausführungsform aus1 , sind in der Veröffentlichung „Infiniband Architecture Specification Volume: Release 1.1” mit Datum 6. November 2002 (Urheberrecht bei der Infiniband Trade Association) beschrieben, die hierin durch Bezugnahme vollumfänglich einbezogen wird. -
2 zeigt ein Beispiel eines Formats eines Pakets, das die Kanaladapter8a ,8b in einer im Stand der Technik bekannten Weise übertragen würden. Jedes Paket10 umfaßt einen oder mehrere Header52a ...52n (wovon mehrere gezeigt sind), eine Nutzlast und einen oder mehrere Fehlerkorrekturcodes CRCs54 . Ein Paket50 kann auch ohne eine Nutzlast54 übertragen werden. -
3 zeigt weitere Einzelheiten der Architektur eines Kanaladapters8 , wie beispielsweise der Kanaladaptoren8a ,8b , gemäß den beschriebenen Ausführungsformen. Die Komponenten des Kanaladapters8 können in der Logik einer Application Specific Integrated Circuit (ASIC) oder einer anderen Hardwarevorrichtung implementiert sein. Ein Nachrichten-Engine-Cluster70 empfängt Arbeitsanforderungen von den Verbrauchern20a ...20n durch den Nachrichten- und Datendienst22 und ordnet die Arbeitsanforderung als ein Arbeitsanforderungselement in einer Arbeitswarteschleife72 ein. Der Nachrichten-Engine-Cluster70 würde eine in einer Warteschleife angeordnete Arbeitsanforderung an ein Sendepaketcluster74 kommunizieren, das die Logik aufweist, mit der das Paket50 aufgebaut wird. Der Sendepaketcluster74 unterhalt zwei Warteschleifen, eine Header-First-in-First-out-(FIFO)-Warteschleife76 und eine Nutzlast-FIFO-Warteschleife78 , um ein getrenntes Einordnen in eine Warteschleife und Bearbeiten von Headern und Nutzlasten für Pakete, die aufgebaut werden, zu ermöglichen. Eine Header-Engine80 baut Header für eines oder mehrere Pakete auf und ordnet die aufgebauten Header in die Header-FIFO-Warteschleife76 ein. Eine Nutzlast-Engine82 fordert eine Nutzlast26a ...26n vom Nutzlastpuffer24 im Hostspeicher6 durch das Adreßübertragungscluster84 an und ordnet empfangene Nutzlasten26a ...26n in der Nutzlast-FIFO-Warteschleife78 ein. Die Nutzlast-Engine82 würde Nutzlastanforderungen an einen Adressübertragungscluster84 senden, der eine Paketnutzlast26a ...26n vom Systemspeicher6 abrufen und zur Nutzlast-Engine82 zurückgeben würde. - Bei bestimmten Ausführungsformen bringt der Kanaladapter
8 zumindest drei Takte, einen Kerntakt86 , einen Sendetakt88 und einen Hosttakt90 zur Anwendung, so daß die durch die verschiedenen Komponenten durchgeführten Schritte in verschiedenen Taktbereichen ausgeführt werden können. Beispielsweise kann die Header-Engine80 Header in den Header-FIFO-76 basierend auf den Kerntakt-86 -Bereich schreiben und können Header-Daten aus dem Header-FIFO-76 basierend auf dem Sendetakt-88 -Bereich ausgelesen werden. Die Nutzlast-Engine82 kann durch den Adressübertragungscluster84 empfangene Nutzlast in die Nutzlast-FIFO-Warteschleife78 im Hosttaktbereich90 schreiben und es können Daten aus der Nutzlast-FIFO-Warteschleife78 beim Sendetaktbereich88 gelesen werden. Immer wenn die Header-Engine80 und die Nutzlast-Engine82 die Anordnung eines Headers bzw. von Nutzlast in der Header-76 und in Nutzlast-78 -Warteschleife beenden, erzeugen sie ein Signal zu einer Completion-Engine22 . Die Completion-Engine92 verfolgt die Spur aller gültigen Header und Nutzdaten in den Warteschleifen76 und78 und liest die Header und Nutzlasten beim Sendetakt88 zum Aufbau der Pakete. - Eine Anzahl virtueller Bahnen kann in jedem physikalischen Link oder Port
12a ,12b ,12c ,12d realisiert sein. Eine virtuelle Bahn gibt eine Gruppe von Sende- und Empfangspuffern in einem Port wieder. Bei bestimmten Ausführungsformen kann jede FIFO-Warteschleife76 und78 in Bereiche und jeweils in einen für jede virtuelle Bahn zur Speicherung von Header bzw. Nutzlasten für die Pakete unterteilt werden, die zum Senden über eine virtuelle Bahn aufgebaut werden. Auf diese Weise können Pakete für die verschiedenen virtuellen Bahnen getrennt aufgebaut werden, so daß starker Verkehr auf einer Bahn nicht eine andere Bahn blockiert. - Die
4 und5 zeigen durch die Komponenten im Sendepaketcluster74 zur Erzeugung eines Pakets50 (2 ) für eine von einem Verbraucher20a ...20n (1 ) vorgebrachte Arbeitsanforderung durchgeführte Betriebsschritte, wobei die Arbeitsanforderung alle Informationen enthält, die zur Erledigung der Aufgabe notwendig sind, wie beispielsweise Nutzlast- und Headerinformationen. Unter Bezugnahme auf4 empfängt der Sendepaketcluster74 (am Block100 ) eine Arbeitsanforderung vom Nachrichten-Engine-Cluster50 , die in die Arbeitswarteschleife72 zur Erzeugung von Paketen50 eingeordnet wird. Die Header-Engine80 erzeugt (beim Block102 ) einen oder mehrere Header für das eine oder die mehreren zu erzeugenden Pakete als Teil der Arbeitsanforderung und schreibt die erzeugten Header beim Kerntakt-86 -Bereich zur Header-FIFO-Warteschleife76 . Nach Erledigung des Schreibens eines Headers zur Header-Warteschleife76 , sendet die Header-Engine80 beim Block104 ein Erledigungs- bzw. Vervollständigungssignal zur Completion-Engine92 , das anzeigt, daß ein Header vervollständigt wurde. Das Signal würde das Paket anzeigen, für das der Header erzeugt wurde, um zu ermöglichen, daß die Completion-Engine92 zu den Warteschleifen76 und78 hinzugefügte Header und Nutzlasten verfolgen kann, die für ein Hinzufügen zum Paket, das aufgebaut wird, verfügbar sind. - In Reaktion auf die Arbeitsanforderung fordert die Nutzlast-Engine
82 (beim Block106 ) eine oder mehrere für die Arbeitsanforderung vom Adressübertragungscluster84 benötigte Nutzlasten an und schreibt die nachfolgend empfangenen Nutzlast(en) beim Host-Takt-90 -Bereich zum Nutzlast-FIFO78 . Die Nutzlast-Engine82 signalisiert der Completion-Engine92 , wenn eine empfangene Nutzlast zum Nutzlast-FIFO78 geschrieben wird, wobei das Signal das Paket anzeigen würde, das die geschriebene Nutzlast umfaßt. -
5 veranschaulicht durch die Completion-Engine92 in Reaktion auf den Empfang eines Vervollständigungssignals von der Header-Engine80 oder der Nutzlast-Engine82 durchgeführte Betriebsschritte. Beim Empfang (beim Block152 ) eines Vervollständigungssignals bestimmt die Completion-Engine92 (beim Block152 ), ob alle Header oder Header und Nutzlast für ein Paket zu den FIFO-Warteschleifen76 und78 geschrieben wurden. Wenn dies der Fall ist, liest die Completion-Engine92 (beim Block154 ) alle Header und die Nutzlast, falls dort eine Nutzlast vorliegt, für ein Paket von der Header-76 und Nutzlast-78 -FIFO-Warteschleife im Sendetakt-88 -Bereich. Die Completion-Engine92 baut dann (in Block156 ) das Paket mit dem einen oder allen gelesenen Header und der Nutzlast auf, wenn das Paket eine Nutzlast umfaßt. Wenn (beim Block158 ) das unmittelbar vorangehende Paket gesendet wurde, sendet die Completion-Engine92 (beim Block160 ) das vervollständigte Paket über einen der Ports12a ,12b oder eine der virtuellen Bahnen für einen der Ports. Wenn (beim Block158 ) das unmittelbar vorangehende Paket nicht gesendet wurde, kann das momentan aufgebaute Paket nicht gesendet werden, ohne daß das vorangehende Paket in der Paketreihenfolge gesendet wird. In einem derartigen Fall kehrt die Steuerung zum Block150 zurück, um den Aufbau weiterer Pakete abzuwarten. Nach dem Senden eines aufgebauten Pakets (beim Block160 ) bestimmt die Completion-Engine92 (beim Block162 ), ob das nächste Paket in der Folge von Paketen aufgebaut wurde. Wenn dies der Fall ist, wird das nächste Paket übertragen (beim Block164 ). Ansonsten, wenn das nächste zu übertragende Paket noch nicht übertragen wurde, kehrt die Steuerung zum Block150 zurück. Nachdem ein Paket beim Block164 übertragen wurde, kehrt die Steuerung zum Block162 zurück, um zu bestimmen, ob das nächste zu übertragende Paket aufgebaut wurde und zur Übertragung verfügbar ist. - Bei den beschriebenen Ausführungsformen werden die Header und Nutzlasten in getrennten Warteschleifen aufgebaut, um zu ermöglichen, daß der Kanaladapter Nutzlasten und Header parallel und außerhalb der Paketfolge erzeugen kann. Beispielsweise, wenn der Header erzeugt wurde, kann die Header-Engine damit fortfahren, zusätzliche Header für weitere Pakete zu erzeugen, selbst wenn die Nutzlast für den erzeugten Header noch nicht empfangen wurde. Wenn die Nutzlast für den erzeugten Header empfangen wurde und die Completion-Engine
92 durch die Nutzlast-Engine82 unterrichtet wurde, kann das Paket zusammengesetzt werden. Des weiteren können die Header für die nachfolgenden Pakete bereits erzeugt und im Header-FIFO gepuffert sein, während auf den Empfang der Nutzlast für das momentan zu sendende Paket gewartet wird. Ein Puffer von Header für nachfolgende Pakete ermöglicht, daß diese nachfolgenden Pakete unmittelbar zusammengesetzt werden können, da ihre Header und Nutzlast in der Header-FIFO-Warteschleife verfügbar sind. Des weiteren könnten Nutzlasten außerhalb der Reihenfolge empfangen werden, bevor der Header vervollständigt ist. Auf diese Weise verzögern Latenzen aufgrund von Verzögerungen beim Zugreifen auf die Nutzlast oder beim Erzeugen von Header nicht das Vorbereiten der Nutzlast und der Header für weitere Pakete. - Zusätzliche Einzelheiten der Ausführungsform
- Die beschriebenen Ausführungsformen zum Aufbau von Paketen können als ein Verfahren, als eine Vorrichtung oder als ein Herstellungsartikel unter Verwendung von Standardprogrammierungs- und/oder Konstruktionstechniken zur Produktion von Software, Firmware, Hardware oder jeder beliebigen Kombination daraus realisiert werden. Der Ausdruck „Herstellungsartikel” bezieht sich in der hier verwendeten Weise auf Code oder Logik, die als Hardwarelogik (z. B. als ein integrierter Schaltungschip, ein Programmable Gate Array (PGA), eine Application Specific Intergrated Circuit (ASIC) etc.) oder als ein computerlesbares Medium, wie beispielsweise ein magnetisches Speichermedium (z. B. Festplattenlaufwerke, Floppy-Platten, Band, etc.), als ein optischer Speicher (CD-ROMS, optische Platten, etc.) als flüchtige und nicht-flüchtige Speichervorrichtungen (z. B. EEPROMs, ROMS, PROMs, RAMs, DRAMs, SRAMs, Firmware, programmierbare Logik, etc.) realisiert ist. Auf Code im computerlesbaren Medium wird durch einen Prozessor zugegriffen und von diesem ausgeführt. Der Code, in dem bevorzugte Ausführungsformen implementiert sind, kann des weiteren über ein Übertragungsmedium oder von einem File-Server über ein Netz zugänglich sein.
- In derartigen Fällen kann der Herstellungsartikel, in dem der Code realisiert ist, ein Übertragungsmedium, wie beispielsweise eine Netzübertragungsleitung, ein drahtloses Übertragungsmedium, sich durch den Raum ausbreitende Signale, Radiowellen, Infrarotsignale, etc. umfassen. Somit kann der „Herstellungsartikel” das Medium umfassen, in dem der Code verkörpert ist. Zusätzlich kann der „Herstellungsartikel” eine Kombination aus Hardware- und Softwarekomponenten umfassen, in welchen der Code verkörpert, verarbeitet und ausgeführt wird. Selbstverständlich ist für den Fachmann erkennbar, daß viele Abwandlungen an dieser Konfiguration vorgenommen werden können, ohne den Umfang der vorliegenden Erfindung zu verlassen, und daß der Herstellungsartikel jedes im Stand der Technik bekannte, Informationen tragende Medium umfassen kann.
- Bestimmte beschriebene Ausführungsformen verwenden die Infiniband-Architektur zur Übertragung von Paketen, wobei getrennte Warteschleifen für die Header und Nutzlasten verwendet werden. Die beschriebenen Ausführungsformen zum Aufbau von Paketen sind auf jedes beliebige Paketübertragungsprotokoll, wie beispielsweise Ethernet, iSCSI, TCP/IP, anwendbar.
- Bei beschriebenen Implementierungen waren die erzeugten Pakete zur Übertragung über ein Netz vorgesehen. Bei alternativen Ausführungsformen können die Pakete für eine Übertragung über einen Bus zu einer weiteren Vorrichtung vorgesehen sein.
- Bei Infiniband-Ausführungsformen kann die Arbeitswarteschleife
72 als Warteschleifenpaare ausführt sein, wobei jedes Warteschleifenpaar eine Sendewarteschleife und eine Empfangswarteschleife umfaßt. Arbeitsanforderungen vom Verbraucher zur Übertragung von Paketen mit Nutzlasten im Systemspeicher können anfangs in der Sendewarteschleife eines einzelnen Warteschleifenpaars gespeichert werden, das mit dem Zielknoten in Beziehung steht, zu dem das Paket gerichtet ist. Von der Sendewarteschleife des Warteschleifenpaares würde der Nachrichten-Engine-Cluster70 die Arbeitsanforderung interpretieren, die Anzahl der für die Arbeitsanforderung benötigten Paketen bestimmen, einschließlich der Anzahl von Headern und Nutzlast (falls vorhanden) für jedes Paket, und dann die Arbeit zur Erzeugung der Header und Anforderungen der Nutzlast an die Header-Engine80 bzw. Nutzlast-Engine82 verteilen. - Bei Infiniband-Ausführungsformen kann ein einzelnes Paar aus Header- und Nutzlast-FIFOs für alle Warteschleifenpaare vorhanden sein. Alternativ kann ein getrenntes Paar aus Header- und Nutzlast-FIFOs für eine oder mehrere Gruppen von Warteschleifenpaaren vorhanden sein. Bei beschriebenen Ausführungsformen sind die Cluster, die die Pakete zur Übertragung erzeugen, als Hardwarelogik implementiert. Bei alternativen Ausführungsformen können einige oder alle Cluster als Code implementiert sein, der in einen Speicher geladen ist und von einem Prozessor ausgeführt wird.
- Bei beschriebenen Ausführungsformen wurden verschiedene Takte (der Kerntakt
86 und der Hosttakt90 ) verwendet, um den Header und die Nutzlast in ihre FIFO-Warteschleifen76 bzw.78 zu schreiben, und wird ein anderer Takt (der Sendetakt88 ) verwendet, um Header und Nutzlast aus den FIFO-Warteschleifen zu lesen. Bei alternativen Ausführungsformen kann eine andere Kombination aus Takten verwendet werden, um die Lese- und Schreiboperationen bezüglich der Header- und Nutzlast-FIFO-Warteschleifen durchzuführen. - Bei bestimmten Ausführungsformen kann der Kanaladapter in einem Hostcomputersystem einschließlich eines Speicherkontrollers, wie beispielsweise einem SCSI, Integrated Drive Electronics (IDE), Redundant Array of Independent Disk (RAID), etc., Kontroller, der den Zugriff auf eine nicht flüchtige Speichervorrichtung, wie beispielsweise ein Magnetplattenlaufwerk, Bandmedium, optische Platte, etc., verwaltet, enthalten sein. Bei alternativen Implementierungen können die Netzadapterausführungsformen in einem System enthalten sein, das keinen Speicherkontroller umfaßt, wie beispielsweise bestimmte Hubs und Schalter.
- Bei bestimmten Implementierungen kann der Kanaladapter konfiguriert sein, Daten über ein mit einem Port am Netzadapter verbundenes Kabel zu übertragen. Alternativ können die Netzadapterausführungsformen konfiguriert sein, Daten über ein drahtloses Netz oder Verbindung, wie beispielsweise LAN, Bluetooth, Wireless Fidelity (Wi-Fi), etc. zu übertragen.
- Die Kanaladapter können in einen Adaptersteckplatz im Hostsystem
2 , wie beispielsweise einen Peripheral Component Interconnect-(PCI)-Erweiterungssteckplatz eingefügt werden oder die Kanaladapter können integrierte Komponenten auf der Hauptplatine (Motherboard) des Hosts2 sein. - Die gezeigten Betriebsschritte aus
4 und5 veranschaulichen die Operationen zum Aufbau von Paketen, die in einer bestimmten Reihenfolge auftreten und durch spezielle Komponenten ausgeführt werden. Bei alternativen Ausführungsformen können bestimmte Operationen in einer anderen Reihenfolge ausgeführt, modifiziert oder weggelassen werden und/oder durch andere Komponenten im Kanaladapter als die gezeigten durchgeführt werden. Darüber hinaus können zu der oben beschriebenen Logik Schritte hinzugefügt werden, wobei diese dann immer noch den beschriebenen Ausführungsformen entspricht. Des weiteren können hier beschriebene Operationen der Reihe nach erfolgen oder können bestimmte Operationen parallel verarbeitet werden. Des weiteren können Operationen von einer einzelnen Verarbeitungseinheit, von einer Multiverarbeitungseinheit oder von verteilten Verarbeitungseinheiten ausgeführt werden. - Die vorangehende Beschreibung verschiedener Ausführungsformen der Erfindung wurde zum Zweck der Darstellung und Beschreibung angegeben. Es ist nicht beabsichtigt, daß sie vollständig ist oder daß dadurch die Erfindung auf die beschriebene präzise Form beschränkt wird. Viele Abwandlungen und Änderungen sind im Licht der oben angegebenen Lehre möglich. Es wird beabsichtigt, daß der Umfang der Erfindung nicht durch diese detaillierte Beschreibung beschränkt ist, sondern durch die hieran angefügten Ansprüche. Die oben angegebene Beschreibung, Beispiele und Daten gewährleisten eine vollständige Beschreibung der Herstellung und der Gebrauchs des Aufbaus der Erfindung. Da viele Ausführungsformen der Erfindung realisiert werden können, ohne von der Idee und dem Umfang der Erfindung abzuweichen, liegt die Erfindung in den hieran angefügten Ansprüchen.
Claims (35)
- Verfahren zum Aufbauen eines Pakets, umfassend: Empfangen (
100 ) einer Anforderung, ein Paket aufzubauen, die Informationen über zumindest einen Header und eine Nutzlast zur Einbeziehung in das Paket umfasst; Erzeugen (102 ) des zumindest einen Headers für die empfangene Anforderung; Schreiben des erzeugten zumindest einen Headers in eine erste Warteschleife; Anfordern (106 ) der Nutzlast zum Einbeziehen in das Paket; Schreiben der empfangenen Nutzlast in eine zweite Warteschleife; Lesen des erzeugten, zumindest einen Headers und der Nutzlast aus der ersten und zweiten Warteschleife; und Einbeziehen des gelesenen zumindest einen Headers und der gelesenen Nutzlast in das Paket, wobei das Schreiben des zumindest einen Headers in die erste Warteschleife, das Schreiben der Nutzlast in die zweite Warteschleife und das Lesen des zumindest einen Headers und der Nutzlast aus der ersten und zweiten Warteschleife in unterschiedlichen Taktbereichen mit jeweils verschiedenem Takt durchgeführt werden. - Verfahren nach Anspruch 1, welches des weiteren umfasst: Übertragen des aufgebauten Pakets zu einem Zielknoten.
- Verfahren nach Anspruch 1, welches des weiteren umfasst: Signalisieren (
104 ) der Header-Vervollständigung in Reaktion auf das Schreiben eines Headers in die erste Warteschleife; und Signalisieren (108 ) der Nutzlastvervollständigung in Reaktion auf das Schreiben der Nutzlast in die zweite Warteschleife. - Verfahren nach Anspruch 3, wobei der zumindest eine Header und die Nutzlast in das Paket in Reaktion auf ein Empfangen von Signalen, dass alle Header für das aufzubauende Paket in die erste Warteschleife geschrieben sind und die Nutzlast für das aufzubauende Paket in die zweite Warteschleife geschrieben ist, einbezogen werden.
- Verfahren nach Anspruch 4, wobei das Schreiben des Headers und das Signalisieren (
104 ) der Header-Vervollständigung durch eine Header-Engine durchgeführt werden, wobei das Schreiben der empfangenen Nutzlast und das Signalisieren der Nutzlastvervollständigung durch eine Nutzlast-Engine durchgeführt werden und wobei das Einbeziehen des gelesenen zumindest einen Headers und der gelesenen Nutzlast in das Paket durch eine Completion-Engine in Reaktion auf ein Empfangen der Signale durchgeführt wird. - Verfahren nach Anspruch 1, wobei die Header und die Nutzlast für ein erstes Paket in der ersten und zweiten Warteschleife gepuffert werden können, bevor ein zweites Paket, das dem ersten Paket vorausgeht, aufgebaut wird.
- Verfahren nach Anspruch 1, welches des weiteren umfasst: in Reaktion auf das Aufbauen eines Pakets, bestimmen, ob alle Header und die Nutzlast für ein nächstes Paket gemäß einer Paketordnung in der ersten und zweiten Warteschleife gepuffert sind; und Aufbauen des nächsten Pakets in Reaktion auf ein Bestimmen, dass alle Header und die Nutzlast für das nächste Paket in der ersten und zweiten Warteschleife gepuffert sind.
- Verfahren nach Anspruch 1, das des weiteren umfasst: Zugreifen auf die Nutzlast in einem Systemspeicher in Reaktion auf ein Empfangen der Anforderung, wobei die Nutzlast, auf die zugegriffen wird, in die zweite Warteschleife geschrieben wird.
- Verfahren nach Anspruch 1, wobei die Header in die erste Warteschleife in einem ersten Taktbereich geschrieben werden, Nutzlasten in die zweite Warteschleife in einem zweiten Taktbereich geschrieben werden und Header und Nutzlasten aus der ersten und zweiten Warteschleife in einem dritten Taktbereich gelesen werden.
- Verfahren nach Anspruch 1, das des weiteren umfasst: Anordnen einer Arbeitsanforderung einschließlich der Anforderung, das Paket aufzubauen, in einer Sendewarteschleife, die sich in einer Mehrzahl von Warteschleifenpaaren befindet, wobei jedes Warteschleifenpaar eine Sendewarteschleife und eine Empfangswarteschleife umfasst; und Interpretieren der Arbeitsanforderung, um den zumindest einen Header und die Nutzlast für das aufzubauende Paket zu bestimmen, wobei der bestimmte zumindest eine Header erzeugt und die bestimmte Nutzlast angefordert wird.
- Verfahren nach Anspruch 1, wobei ein aufzubauendes Paket zumindest einen Header und keine Nutzlast umfassen kann und wobei der zumindest eine erzeugte Header in das Paket in Reaktion auf ein Empfangen von Signalen einbezogen wird, die angeben, dass die Header erzeugt wurden, und bestimmen, dass das aufzubauende Paket keine Nutzlast umfasst.
- Kanaladapter, wobei der Kanaladapter (
8 ) eine Logik umfasst, um den Kanaladapter (8 ) in die Lage zu versetzen, durchzuführen: Empfangen einer Anforderung ein Paket aufzubauen, die Informationen über zumindest einen Header und eine Nutzlast zum Einbeziehen in das Paket umfasst; Erzeugen des zumindest einen Headers für die empfangene Anforderung; Schreiben des erzeugten zumindest einen Headers in eine erste Warteschleife (76 ); Anfordern der Nutzlast zum Einbeziehen in das Paket; Schreiben der empfangenen Nutzlast in eine zweite Warteschleife (78 ); Lesen des erzeugten zumindest einen Headers und der Nutzlast aus der ersten (76 ) und zweiten (78 ) Warteschleife; und Einbeziehen des gelesenen zumindest einen Headers und der Nutzlast in das Paket, wobei das Schreiben des zumindest einen Headers in die erste Warteschleife (76 ), das Schreiben der Nutzlast in die zweite Warteschleife (78 ) und das Lesen des zumindest einen Headers und der Nutzlast aus der ersten (76 ) und zweiten (78 ) Warteschleife in unterschiedlichen Taktbereichen mit jeweils verschiedenem Takt (86 ,88 ,90 ) durchgeführt werden. - Kanaladapter nach Anspruch 12, wobei die Kanaladapterlogik des weiteren dazu eingerichtet ist, zu bewirken, dass der Kanaladapter durchführt: Übertragen des aufgebauten Pakets zu einem Zielknoten.
- Kanaladapter nach Anspruch 12, wobei die Kanaladapterlogik des weiteren dazu eingerichtet ist, zu bewirken, dass der Kanaladapter (
8 ) durchführt: Signalisieren einer Header-Vervollständigung in Reaktion auf ein Schreiben eines Headers in die erste Warteschleife (76 ); und Signalisieren einer Nutzlastvervollständigung in Reaktion auf ein Schreiben der Nutzlast in die zweite Warteschleife (78 ). - Kanaladapter nach Anspruch 14, wobei der zumindest eine Header und die Nutzlast in das Paket in Reaktion auf ein Empfangen von Signalen einbezogen werden, dass alle Header für das aufzubauende Paket in die erste Warteschleife (
76 ) geschrieben sind und die Nutzlast für das aufzubauende Paket in die zweite Warteschleife (78 ) geschrieben ist. - Kanaladapter nach Anspruch 15, welcher des weiteren umfasst: eine Header-Engine (
80 ) zum Durchführen der Schritte eines Schreibens des Headers und eines Signalisierens einer Header-Vervollständigung; eine Nutzlast-Engine (82 ) zum Durchführen der Schritte eines Schreibens der empfangenen Nutzlast und eines Signalisierens einer Nutzlastvervollständigung; und eine Completion-Engine (92 ) zum Durchführen der Schritte eines Einbeziehens des gelesenen zumindest einen Headers und der Nutzlast in das Paket in Reaktion auf ein Empfangen der Signale. - Kanaladapter nach Anspruch 12, wobei die Header und die Nutzlast für ein erstes Paket in der ersten (
76 ) und zweiten (78 ) Warteschleife gepuffert werden können, bevor ein zweites Paket, das dem ersten Paket vorausgeht, aufgebaut ist. - Kanaladapter nach Anspruch 12, wobei die Kanaladapterlogik des weiteren den Kanaladapter (
8 ) in die Lage versetzt, durchzuführen: in Reaktion auf ein Aufbauen eines Pakets, bestimmen, ob alle Header und die Nutzlast für ein nächstes Paket gemäß einer Paketordnung in der ersten (76 ) und zweiten (78 ) Warteschleife gepuffert sind; Aufbauen des nächsten Pakets in Reaktion auf ein Bestimmen, dass alle Header und die Nutzlast für das nächste Paket in der ersten (76 ) und zweiten (78 ) Warteschleife gepuffert sind. - Kanaladapter nach Anspruch 12, wobei die Kanaladapterlogik des weiteren den Kanaladapter (
8 ) in die Lage versetzt, durchzuführen: Zugreifen auf die Nutzlast von einem Systemspeicher in Reaktion auf ein Empfangen der Anforderung, wobei die Nutzlast, auf die zugegriffen wird, in die zweite Warteschleife (78 ) geschrieben wird. - Kanaladapter nach Anspruch 12, wobei Header in die erste Warteschleife (
76 ) in einem ersten Taktbereich geschrieben werden, Nutzlasten in die zweite Warteschleife (78 ) in einem zweiten Taktbereich geschrieben werden und Header und Nutzlasten aus der ersten (76 ) und zweiten (78 ) Warteschleife in einem dritten Taktbereich gelesen werden. - Kanaladapter nach Anspruch 12, wobei die Kanaladapterlogik des weiteren dazu eingerichtet ist, zu bewirken, dass der Kanaladapter (
8 ) durchführt: Einordnen einer Arbeitsanforderung einschließlich der Anforderung, das Paket aufzubauen, in einer Sendewarteschleife, die eine aus einer Mehrzahl von Warteschleifenpaaren ist, wobei jede Warteschleife eine Sendewarteschleife und eine Empfangswarteschleife umfasst; und Interpretieren der Arbeitsanforderung, um den zumindest einen Header und die Nutzlast für das aufzubauende Paket zu bestimmen; wobei der bestimmte zumindest eine Header erzeugt und die bestimmte Nutzlast angefordert wird. - System, umfassend: einen Hostprozessor (
4 ); ein magnetisches Speichermedium; ein Speicher (6 ) in Kommunikation mit dem Hostprozessor (4 ) und umfassend eine in einem Paket zu übertragende Nutzlast, wobei eine Kopie der Nutzlast in dem magnetischen Speichermedium gespeichert ist; und einen Kanaladapter (8a ,8b ) in Kommunikation mit dem Speicher (6 ), wobei der Kanaladapter (8a ,8b ) eine Logik umfasst, um den Kanaladapter (8a ,8b ) in die Lage zu versetzten, durchzuführen: (i) Empfangen einer Anforderung ein Paket aufzubauen, die Informationen über zumindest einen Header und eine Nutzlast zur Einbeziehung in das Paket umfasst; (ii) Erzeugen des zumindest einen Headers für die empfangene Anforderung; (iii) Schreiben des erzeugten zumindest einen Headers in eine erste Warteschleife; (iv) Anfordern der in das Paket einzubeziehenden Nutzlast; (v) Schreiben der empfangenen Nutzlast in eine zweite Warteschleife; (vi) Lesen des erzeugten zumindest einen Headers und der Nutzlast aus der ersten und zweiten Warteschleife; und (vii) Einbeziehen des gelesenen zumindest einen Headers und der Nutzlast in das Paket, wobei das Schreiben des zumindest einen Headers in die erste Warteschleife, das Schreiben der Nutzlast in die zweite Warteschleife und das Lesen des zumindest einen Headers und der Nutzlast aus der ersten und zweiten Warteschleife in unterschiedlichen Taktbereichen mit jeweils verschiedenem Takt durchgeführt werden. - System nach Anspruch 22, wobei die Header und Nutzlast für ein erstes Paket in der ersten und zweiten Warteschleife gepuffert sein können, bevor ein zweites Paket, das dem ersten Paket vorausgeht, aufgebaut ist.
- System nach Anspruch 23, wobei die Kanaladapterlogik des weiteren den Kanaladapter (
8a ,8b ) in die Lage versetzt, durchzuführen: in Reaktion auf ein Aufbauen eines Pakets, bestimmen, ob alle Header und die Nutzlast für ein nächstes Paket gemäß einer Paketordnung in der ersten und zweiten Warteschleife gepuffert sind; Aufbauen des nächsten Pakets in Reaktion auf ein Bestimmen, dass alle Header und die Nutzlast für das nächste Paket in der ersten und zweiten Warteschleife gepuffert sind. - Herstellungsartikel zum Aufbauen eines Pakets, wobei der Herstellungsartikel dazu eingerichtet ist, ein Durchführen von Schritten zu bewirken, wobei die Schritte umfassen: Empfangen (
100 ) einer Anforderung, ein Paket aufzubauen, die Informationen über zumindest einen Header und eine Nutzlast zur Einbeziehung in das Paket umfasst; Erzeugen (102 ) des zumindest einen Headers für die empfangene Anforderung; Schreiben des erzeugten zumindest einen Headers in eine erste Warteschleife; Anfordern (106 ) der in das Paket einzubeziehenden Nutzlast; Schreiben der empfangenen Nutzlast in eine zweite Warteschleife; Lesen des erzeugten zumindest einen Headers und der Nutzlast aus der ersten und zweiten Warteschleife; und Einbeziehen des gelesenen zumindest einen Headers und der Nutzlast in das Paket, wobei das Schreiben des zumindest einen Headers in die erste Warteschleife, das Schreiben der Nutzlast in die zweite Warteschleife und das Lesen des zumindest einen Headers und der Nutzlast aus der ersten und zweiten Warteschleife in unterschiedlichen Taktbereichen mit jeweils verschiedenem Takt durchgeführt werden. - Herstellungsartikel nach Anspruch 25, wobei die Schritte des weiteren umfassen: Übertragen des aufgebauten Pakets zu einem Zielknoten.
- Herstellungsartikel nach Anspruch 25, wobei die Schritte des weiteren umfassen: Signalisieren (
104 ) einer Header-Vervollständigung in Reaktion auf ein Schreiben eines Headers in die erste Warteschleife; und Signalisieren (108 ) einer Nutzlastvervollständigung in Reaktion auf ein Schreiben der Nutzlast in die zweite Warteschleife. - Herstellungsartikel nach Anspruch 27, wobei der zumindest eine Header und die Nutzlast in das Paket in Reaktion auf ein Empfangen von Signalen, dass alle Header für das aufzubauende Paket in die erste Warteschleife geschrieben sind, und dass die Nutzlast für das aufzubauende Paket in die zweite Warteschleife geschrieben ist, einbezogen werden.
- Herstellungsartikel nach Anspruch 28, wobei das Schreiben des Headers und das Signalisieren (
104 ) der Header-Vervollständigung durch eine Header-Engine durchgeführt werden, wobei das Schreiben der empfangenen Nutzlast und das Signalisieren der Nutzlastvervollständigung durch eine Nutzlast-Engine durchgeführt werden, und wobei das Einbeziehen des gelesenen zumindest einen Headers und der Nutzlast in das Paket durch eine Completion-Engine in Reaktion auf ein Empfangen der Signale durchgeführt wird. - Herstellungsartikel nach Anspruch 25, wobei die Header und die Nutzlast für ein erstes Paket in der ersten und zweiten Warteschleife gepuffert sein können, bevor ein zweites Paket, das dem ersten Paket vorangeht, aufgebaut ist.
- Herstellungsartikel nach Anspruch 25, wobei die Schritte des weiteren umfassen: in Reaktion auf ein Aufbauen eines Pakets, bestimmen, ob alle Header und die Nutzlast für ein nächstes Paket gemäß einer Paketordnung in der ersten und zweiten Warteschleife gepuffert sind; und Aufbauen des neuen Pakets in Reaktion auf ein bestimmen, dass alle Header und die Nutzlast für das nächste Paket in der ersten und zweiten Warteschleife gepuffert sind.
- Herstellungsartikel nach Anspruch 25, wobei die Schritte des weiteren umfassen: Zugreifen auf die Nutzlast von einem Systemspeicher in Reaktion auf ein Empfangen der Anforderung, wobei die Nutzlast, auf die zugegriffen wird, in die zweite Warteschleife geschrieben wird.
- Herstellungsartikel nach Anspruch 25, wobei die Header in die erste Warteschleife in einem ersten Taktbereich geschrieben werden, Nutzlasten in die zweite Warteschleife in einem zweiten Taktbereich geschrieben werden und Header und Nutzlasten aus der ersten und zweiten Warteschleife in einem dritten Taktbereich gelesen werden.
- Herstellungsartikel nach Anspruch 25, wobei die Schritte des weiteren umfassen: Einordnen einer Arbeitsanforderung, welche die Anforderung, das Paket aufzubauen, in einer Sendewarteschleife, die eine aus einer Mehrzahl von Warteschleifenpaaren ist, wobei jedes Warteschleifenpaar eine Sendewarteschleife und eine Empfangswarteschleife umfasst; Interpretieren der Arbeitsanforderung, um den zumindest einen Header und die Nutzlast für das aufzubauende Paket zu bestimmen, wobei der bestimmte zumindest eine Header erzeugt und die bestimmte Nutzlast angefordert wird.
- Herstellungsartikel nach Anspruch 25, wobei ein aufzubauendes Paket zumindest einen Header und keine Nutzlast umfassen kann und wobei der zumindest eine erzeugte Header in das Paket in Reaktion auf ein Empfangen von Signalen einbezogen wird, die anzeigen, dass die Header erzeugt wurden, und bestimmen, dass das aufzubauende Paket keine Nutzlast umfasst.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/695,376 | 2003-10-27 | ||
US10/695,376 US7460531B2 (en) | 2003-10-27 | 2003-10-27 | Method, system, and program for constructing a packet |
PCT/US2004/035077 WO2005046146A1 (en) | 2003-10-27 | 2004-10-22 | Method, system, and program for constructing a packet |
Publications (2)
Publication Number | Publication Date |
---|---|
DE112004002043T5 DE112004002043T5 (de) | 2006-08-31 |
DE112004002043B4 true DE112004002043B4 (de) | 2011-07-14 |
Family
ID=34522784
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE112004002043T Expired - Fee Related DE112004002043B4 (de) | 2003-10-27 | 2004-10-22 | Verfahren, System und Programm zum Aufbau eines Pakets |
Country Status (4)
Country | Link |
---|---|
US (1) | US7460531B2 (de) |
DE (1) | DE112004002043B4 (de) |
TW (1) | TWI256581B (de) |
WO (1) | WO2005046146A1 (de) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7899924B2 (en) * | 2002-04-19 | 2011-03-01 | Oesterreicher Richard T | Flexible streaming hardware |
FR2857539B1 (fr) * | 2003-07-11 | 2005-09-30 | Cit Alcatel | Description de contenu de paquets dans un reseau de communication par paquets |
US7342934B1 (en) * | 2004-03-29 | 2008-03-11 | Sun Microsystems, Inc. | System and method for interleaving infiniband sends and RDMA read responses in a single receive queue |
US7609636B1 (en) * | 2004-03-29 | 2009-10-27 | Sun Microsystems, Inc. | System and method for infiniband receive flow control with combined buffering of virtual lanes and queue pairs |
US7466699B2 (en) * | 2004-04-30 | 2008-12-16 | Hewlett-Packard Development Company, L.P. | System for communicating between network end-points using a payload offset and buffer pool handle |
US9210073B2 (en) * | 2004-04-30 | 2015-12-08 | Hewlett-Packard Development Company, L.P. | System and method for message routing in a network |
KR100868820B1 (ko) * | 2004-07-23 | 2008-11-14 | 비치 언리미티드 엘엘씨 | 데이터 스트림을 전달하는 방법 및 시스템과 데이터 저장 레벨을 제어하는 방법 |
WO2006066412A1 (en) * | 2004-12-22 | 2006-06-29 | Pika Technologies Inc. | System and method for synchronous processing of media data on an asynchronous processor |
US7710969B2 (en) * | 2005-05-13 | 2010-05-04 | Texas Instruments Incorporated | Rapid I/O traffic system |
US8375122B2 (en) * | 2005-12-15 | 2013-02-12 | International Business Machines Corporation | Web service information management in service-oriented architecture applications |
EP1980952B1 (de) * | 2007-02-14 | 2019-10-30 | Samsung Electronics Co., Ltd. | Verfahren und Vorrichtung zur Hochgeschwindigkeitsverarbeitung von Daten durch ein Nutzergerät UE |
EP2061191A1 (de) * | 2007-11-13 | 2009-05-20 | STMicroelectronics (Grenoble) SAS | Pufferungsarchitektur zur Einführung und Extraktion von Paketen in On-Chip-Netzwerken |
US8645596B2 (en) * | 2008-12-30 | 2014-02-04 | Intel Corporation | Interrupt techniques |
US7996548B2 (en) | 2008-12-30 | 2011-08-09 | Intel Corporation | Message communication techniques |
TWI465922B (zh) * | 2011-12-20 | 2014-12-21 | Acer Inc | 介面裝置的資料流量分析管理裝置、系統與方法 |
US10664420B2 (en) * | 2018-04-19 | 2020-05-26 | Avago Technologies International Sales Pte. Limited | System and method for port-to-port communications using direct memory access |
WO2020256210A1 (ko) * | 2019-06-20 | 2020-12-24 | 주식회사 쿼드마이너 | 네트워크 포렌식 시스템 및 이를 이용한 네트워크 포렌식 방법 |
US20220217085A1 (en) * | 2021-01-06 | 2022-07-07 | Enfabrica Corporation | Server fabric adapter for i/o scaling of heterogeneous and accelerated compute systems |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5412655A (en) * | 1993-01-29 | 1995-05-02 | Nec Corporation | Multiprocessing system for assembly/disassembly of asynchronous transfer mode cells |
CA2317165A1 (en) * | 1999-09-29 | 2001-03-29 | Jaime L. Prieto, Jr. | A method and apparatus for serial cell replication for multicast in a cell switch |
EP1124362A2 (de) * | 2000-01-19 | 2001-08-16 | Wiznot Corp. | Vorrichtung zur TCP/IP-Verarbeitung mittels Hardware und Verfahren zum Betreiben derselben |
US20010053148A1 (en) * | 2000-03-24 | 2001-12-20 | International Business Machines Corporation | Network adapter with embedded deep packet processing |
EP1359727A2 (de) * | 2002-04-08 | 2003-11-05 | Wiznet Corp. | Auf Hardwareprotokoll zurückgreifendes Internet Protokollsystem und darauf bezügliches Paralleldatenbearbeitungsverfahren |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR960003505B1 (ko) * | 1992-12-29 | 1996-03-14 | 재단법인 한국전자통신연구소 | 에이티엠(atm) 다중화 처리 장치 |
US6791947B2 (en) * | 1996-12-16 | 2004-09-14 | Juniper Networks | In-line packet processing |
US6032190A (en) | 1997-10-03 | 2000-02-29 | Ascend Communications, Inc. | System and method for processing data packets |
US6256071B1 (en) * | 1998-12-11 | 2001-07-03 | Hitachi America, Ltd. | Methods and apparatus for recording video files and for generating a table listing the recorded files and links to additional information |
US7333489B1 (en) | 2000-05-08 | 2008-02-19 | Crossroads Systems, Inc. | System and method for storing frame header data |
WO2002015495A1 (en) | 2000-08-11 | 2002-02-21 | Paion Company, Limited | System, method and article of manufacture for preparing a packet for transmission through a switch fabric chipset system |
US6804815B1 (en) * | 2000-09-18 | 2004-10-12 | Cisco Technology, Inc. | Sequence control mechanism for enabling out of order context processing |
DE10260604B4 (de) * | 2002-12-23 | 2006-09-21 | Infineon Technologies Ag | Multikanal-Prozessor |
-
2003
- 2003-10-27 US US10/695,376 patent/US7460531B2/en not_active Expired - Fee Related
-
2004
- 2004-10-22 WO PCT/US2004/035077 patent/WO2005046146A1/en active Application Filing
- 2004-10-22 DE DE112004002043T patent/DE112004002043B4/de not_active Expired - Fee Related
- 2004-10-26 TW TW093132363A patent/TWI256581B/zh not_active IP Right Cessation
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5412655A (en) * | 1993-01-29 | 1995-05-02 | Nec Corporation | Multiprocessing system for assembly/disassembly of asynchronous transfer mode cells |
CA2317165A1 (en) * | 1999-09-29 | 2001-03-29 | Jaime L. Prieto, Jr. | A method and apparatus for serial cell replication for multicast in a cell switch |
EP1124362A2 (de) * | 2000-01-19 | 2001-08-16 | Wiznot Corp. | Vorrichtung zur TCP/IP-Verarbeitung mittels Hardware und Verfahren zum Betreiben derselben |
US20010053148A1 (en) * | 2000-03-24 | 2001-12-20 | International Business Machines Corporation | Network adapter with embedded deep packet processing |
EP1359727A2 (de) * | 2002-04-08 | 2003-11-05 | Wiznet Corp. | Auf Hardwareprotokoll zurückgreifendes Internet Protokollsystem und darauf bezügliches Paralleldatenbearbeitungsverfahren |
Non-Patent Citations (1)
Title |
---|
EP 13 59 727 A2, Anmeldetag: 20.2.03 |
Also Published As
Publication number | Publication date |
---|---|
WO2005046146A1 (en) | 2005-05-19 |
TW200519731A (en) | 2005-06-16 |
DE112004002043T5 (de) | 2006-08-31 |
TWI256581B (en) | 2006-06-11 |
US20050089033A1 (en) | 2005-04-28 |
US7460531B2 (en) | 2008-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE112004002043B4 (de) | Verfahren, System und Programm zum Aufbau eines Pakets | |
DE60038448T2 (de) | Vorrichtung und verfahren zur hardware-ausführung oder hardware-beschleunigung von betriebssystemfunktionen | |
DE60219047T2 (de) | Eine allgemeine eingabe-/ausgabearchitektur und entsprechende verfahren zum aufbau virtueller kanäle darin | |
DE60033529T2 (de) | Netzprozessor, speicherorganisation und verfahren | |
DE60213616T2 (de) | Eine allgemeine eingabe-/ausgabearchitektur, protokoll und entsprechende verfahren zur umsetzung der flusssteuerung | |
DE60316776T2 (de) | Auf netzwerkdatenspeicherung bezogene operationen | |
DE69838387T2 (de) | Verfahren und vorrichtung in einem paketenleitweglenkungsschalter um den zugriff zu einem gemeinsamen speicher auf verschiedenen datenraten zu steuern | |
DE112010002178T5 (de) | Verfahren und vorrichtung für id-basierte ströme über pci-express | |
DE69836778T2 (de) | Vorrichtung und Verfahren zur Fernpufferspeicherzuordnung und Verwaltung für Nachrichtenübertragung zwischen Netzknoten | |
DE112006001167T5 (de) | Simulieren mehrerer virtueller Kanäle in Switching-Fabric-Netzwerken | |
DE112012004551T5 (de) | Mehrkernverknüpfung in einem Netzprozessor | |
EP2030116A1 (de) | Kommunikationsbaustein | |
DE112005001556T5 (de) | Eine Vorrichtung und ein Verfahren zur Zusammenfügung von Paketen in Netzwerk-Verbindungsroutern | |
DE102012023395A1 (de) | Schnittstellenvorrichtung und Verfahren zum Austauschen von Nutzdaten | |
DE102005021515A1 (de) | System und Verfahren für ein informationsverarbeitendes System mit PCI-Express Advanced Switching | |
DE102005048581B4 (de) | Teilnehmerschnittstelle zwischen einem FlexRay-Kommunikationsbaustein und einem FlexRay-Teilnehmer und Verfahren zur Übertragung von Botschaften über eine solche Schnittstelle | |
DE112007001135T5 (de) | Gemeinschaftliche Nutzung von Daten durch Partitionen in einem partitionierbaren System | |
DE60123134T2 (de) | Verfahren und vorrichtung für einen rekonfigurierbaren prozessor | |
DE112017003294T5 (de) | Technologien für ein skalierbares Senden und Empfangen von Paketen | |
DE102005005342A1 (de) | Busanordnung, Master- und Slave-Einheit sowie Datenlese- und Datenübertragungsverfahren | |
DE102004024130B4 (de) | Speichersystem und Verfahren zum Betrieb eines Speichersystems | |
DE112021003094T5 (de) | System und verfahren zum planen von gemeinsam nutzbaren pcie-endpunktvorrichtungen | |
DE60217132T2 (de) | Vorrichtung zur erhaltung der producer-consumer anordnung entlang einer ungeordneten schnittstelle | |
DE102012107577A1 (de) | Multiport-Speicherelement sowie Halbleitervorrichtung und System mit demselben | |
DE60314641T2 (de) | Verfahren, system und programm zur konfiguration von teilnehmern auf einem bus fürein-/ausgabeoperationen |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law |
Ref document number: 112004002043 Country of ref document: DE Date of ref document: 20060831 Kind code of ref document: P |
|
R018 | Grant decision by examination section/examining division | ||
R020 | Patent grant now final |
Effective date: 20111015 |
|
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee | ||
R079 | Amendment of ipc main class |
Free format text: PREVIOUS MAIN CLASS: H04L0012560000 Ipc: H04L0012700000 |