DE112004002043B4 - Verfahren, System und Programm zum Aufbau eines Pakets - Google Patents

Verfahren, System und Programm zum Aufbau eines Pakets Download PDF

Info

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
Application number
DE112004002043T
Other languages
English (en)
Other versions
DE112004002043T5 (de
Inventor
Divya Ariz. Gupta
Hassan Ariz. Fallah-Adl
Salil Tex. Phadnis
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 DE112004002043T5 publication Critical patent/DE112004002043T5/de
Application granted granted Critical
Publication of DE112004002043B4 publication Critical patent/DE112004002043B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9042Separate storage for different parts of the packet, e.g. header and payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9084Reactions to storage capacity overflow
    • H04L49/9089Reactions to storage capacity overflow replacing packets in a storage arrangement, e.g. pushout
    • H04L49/9094Arrangements for simultaneous transmit and receive, e.g. simultaneous reading/writing from/to the storage element
    • 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/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • 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
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols 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]
    • 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/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • 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/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer 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 offenbart einen Netzwerkadapter, der die Nutzlast in einem Puffer speichert und zur Berechnung des Headers ferner einen davon unabhängigen Header-Speicher verwendet. Nach der Berechnung des Headers wird das resultierende Paket über das Netzwerk gesendet.
  • 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 und 5 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 Host 2 umfaßt eine oder mehrere Zentraleinheiten (CPUs) 4 und einen Speicher 6. Der Host 2 umfaßt ein oder mehrere Kanaladapter 8a, 8b, wovon zwei gezeigt sind. Jeder Kanaladapter 8a, 8b umfaßt einen oder mehrere Ports 12a, 12b und 12c, 12d (wovon zwei an jedem Adapter gezeigt sind), die mit einer Netzstruktur 10 verbunden sind, wobei jeder Port 12a, 12b, 12c, 12d einen Knoten in der Netzstruktur 10 aufweist. Die Kanaladapter 8a, 8b werden zur Kommunikation mit zusätzlichen Knoten 14a, 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 Hostspeicher 6 aus, die als Verbraucher 20a... 20n bezeichnet werden, wobei jeder Verbraucher jeden Prozeß oder jede Funktion umfassen kann, der bzw. die dazu geeignet ist, Arbeitsanforderungen an die Kanaladapter 8a, 8b zu erzeugen, wobei die Arbeitsanforderungen Informationen in Paketen zur Übertragung über das Netz 10 umfassen. Ein Nachrichten- und Datendienst 22 läuft im Betriebssystem (nicht gezeigt) des Host 2 ab und bietet eine Schnittstelle zwischen im Host 2 ablaufenden Verbrauchern 20a... 20n und den Kanaladaptern 8a, 8b. Auf diese Weise funktioniert der Nachrichten- und Datendienst 22 als ein Gerätetreiber zur Schnittstellenbildung zwischen den Kanaladaptern 8a, 8b und dem Hostsystem 2. Der Speicher 6 umfaßt des weiteren einen Nutzlastpuffer 24, in dem Nutzlasten 26a... 26n zum Einschluß in Pakete gespeichert werden, die die Kanaladapter 8a, 8b über das Netz 10 übertragen. Die Verbraucher 20a... 20n würden in der zu einem Kanaladapter 8a, 8b übertragenen Arbeitsanforderung eine Nutzlast 26a... 26n im Nutzdatenpuffer 24 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 aus 1, 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 Kanaladapter 8a, 8b in einer im Stand der Technik bekannten Weise übertragen würden. Jedes Paket 10 umfaßt einen oder mehrere Header 52a... 52n (wovon mehrere gezeigt sind), eine Nutzlast und einen oder mehrere Fehlerkorrekturcodes CRCs 54. Ein Paket 50 kann auch ohne eine Nutzlast 54 übertragen werden.
  • 3 zeigt weitere Einzelheiten der Architektur eines Kanaladapters 8, wie beispielsweise der Kanaladaptoren 8a, 8b, gemäß den beschriebenen Ausführungsformen. Die Komponenten des Kanaladapters 8 können in der Logik einer Application Specific Integrated Circuit (ASIC) oder einer anderen Hardwarevorrichtung implementiert sein. Ein Nachrichten-Engine-Cluster 70 empfängt Arbeitsanforderungen von den Verbrauchern 20a... 20n durch den Nachrichten- und Datendienst 22 und ordnet die Arbeitsanforderung als ein Arbeitsanforderungselement in einer Arbeitswarteschleife 72 ein. Der Nachrichten-Engine-Cluster 70 würde eine in einer Warteschleife angeordnete Arbeitsanforderung an ein Sendepaketcluster 74 kommunizieren, das die Logik aufweist, mit der das Paket 50 aufgebaut wird. Der Sendepaketcluster 74 unterhalt zwei Warteschleifen, eine Header-First-in-First-out-(FIFO)-Warteschleife 76 und eine Nutzlast-FIFO-Warteschleife 78, um ein getrenntes Einordnen in eine Warteschleife und Bearbeiten von Headern und Nutzlasten für Pakete, die aufgebaut werden, zu ermöglichen. Eine Header-Engine 80 baut Header für eines oder mehrere Pakete auf und ordnet die aufgebauten Header in die Header-FIFO-Warteschleife 76 ein. Eine Nutzlast-Engine 82 fordert eine Nutzlast 26a... 26n vom Nutzlastpuffer 24 im Hostspeicher 6 durch das Adreßübertragungscluster 84 an und ordnet empfangene Nutzlasten 26a... 26n in der Nutzlast-FIFO-Warteschleife 78 ein. Die Nutzlast-Engine 82 würde Nutzlastanforderungen an einen Adressübertragungscluster 84 senden, der eine Paketnutzlast 26a... 26n vom Systemspeicher 6 abrufen und zur Nutzlast-Engine 82 zurückgeben würde.
  • Bei bestimmten Ausführungsformen bringt der Kanaladapter 8 zumindest drei Takte, einen Kerntakt 86, einen Sendetakt 88 und einen Hosttakt 90 zur Anwendung, so daß die durch die verschiedenen Komponenten durchgeführten Schritte in verschiedenen Taktbereichen ausgeführt werden können. Beispielsweise kann die Header-Engine 80 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-Engine 82 kann durch den Adressübertragungscluster 84 empfangene Nutzlast in die Nutzlast-FIFO-Warteschleife 78 im Hosttaktbereich 90 schreiben und es können Daten aus der Nutzlast-FIFO-Warteschleife 78 beim Sendetaktbereich 88 gelesen werden. Immer wenn die Header-Engine 80 und die Nutzlast-Engine 82 die Anordnung eines Headers bzw. von Nutzlast in der Header-76 und in Nutzlast-78-Warteschleife beenden, erzeugen sie ein Signal zu einer Completion-Engine 22. Die Completion-Engine 92 verfolgt die Spur aller gültigen Header und Nutzdaten in den Warteschleifen 76 und 78 und liest die Header und Nutzlasten beim Sendetakt 88 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-Warteschleife 76 und 78 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 und 5 zeigen durch die Komponenten im Sendepaketcluster 74 zur Erzeugung eines Pakets 50 (2) für eine von einem Verbraucher 20a... 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 auf 4 empfängt der Sendepaketcluster 74 (am Block 100) eine Arbeitsanforderung vom Nachrichten-Engine-Cluster 50, die in die Arbeitswarteschleife 72 zur Erzeugung von Paketen 50 eingeordnet wird. Die Header-Engine 80 erzeugt (beim Block 102) 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-Warteschleife 76. Nach Erledigung des Schreibens eines Headers zur Header-Warteschleife 76, sendet die Header-Engine 80 beim Block 104 ein Erledigungs- bzw. Vervollständigungssignal zur Completion-Engine 92, 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-Engine 92 zu den Warteschleifen 76 und 78 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 Block 106) eine oder mehrere für die Arbeitsanforderung vom Adressübertragungscluster 84 benötigte Nutzlasten an und schreibt die nachfolgend empfangenen Nutzlast(en) beim Host-Takt-90-Bereich zum Nutzlast-FIFO 78. Die Nutzlast-Engine 82 signalisiert der Completion-Engine 92, wenn eine empfangene Nutzlast zum Nutzlast-FIFO 78 geschrieben wird, wobei das Signal das Paket anzeigen würde, das die geschriebene Nutzlast umfaßt.
  • 5 veranschaulicht durch die Completion-Engine 92 in Reaktion auf den Empfang eines Vervollständigungssignals von der Header-Engine 80 oder der Nutzlast-Engine 82 durchgeführte Betriebsschritte. Beim Empfang (beim Block 152) eines Vervollständigungssignals bestimmt die Completion-Engine 92 (beim Block 152), ob alle Header oder Header und Nutzlast für ein Paket zu den FIFO-Warteschleifen 76 und 78 geschrieben wurden. Wenn dies der Fall ist, liest die Completion-Engine 92 (beim Block 154) 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-Engine 92 baut dann (in Block 156) das Paket mit dem einen oder allen gelesenen Header und der Nutzlast auf, wenn das Paket eine Nutzlast umfaßt. Wenn (beim Block 158) das unmittelbar vorangehende Paket gesendet wurde, sendet die Completion-Engine 92 (beim Block 160) das vervollständigte Paket über einen der Ports 12a, 12b oder eine der virtuellen Bahnen für einen der Ports. Wenn (beim Block 158) 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 Block 150 zurück, um den Aufbau weiterer Pakete abzuwarten. Nach dem Senden eines aufgebauten Pakets (beim Block 160) bestimmt die Completion-Engine 92 (beim Block 162), ob das nächste Paket in der Folge von Paketen aufgebaut wurde. Wenn dies der Fall ist, wird das nächste Paket übertragen (beim Block 164). Ansonsten, wenn das nächste zu übertragende Paket noch nicht übertragen wurde, kehrt die Steuerung zum Block 150 zurück. Nachdem ein Paket beim Block 164 übertragen wurde, kehrt die Steuerung zum Block 162 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-Engine 82 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-Cluster 70 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-Engine 80 bzw. Nutzlast-Engine 82 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 Hosttakt 90) verwendet, um den Header und die Nutzlast in ihre FIFO-Warteschleifen 76 bzw. 78 zu schreiben, und wird ein anderer Takt (der Sendetakt 88) 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 Hosts 2 sein.
  • Die gezeigten Betriebsschritte aus 4 und 5 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)

  1. 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.
  2. Verfahren nach Anspruch 1, welches des weiteren umfasst: Übertragen des aufgebauten Pakets zu einem Zielknoten.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. 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.
  11. 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.
  12. 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.
  13. 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.
  14. 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).
  15. 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.
  16. 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.
  17. 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.
  18. 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.
  19. 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.
  20. 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.
  21. 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.
  22. 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.
  23. 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.
  24. 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.
  25. 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.
  26. Herstellungsartikel nach Anspruch 25, wobei die Schritte des weiteren umfassen: Übertragen des aufgebauten Pakets zu einem Zielknoten.
  27. 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.
  28. 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.
  29. 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.
  30. 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.
  31. 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.
  32. 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.
  33. 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.
  34. 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.
  35. 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.
DE112004002043T 2003-10-27 2004-10-22 Verfahren, System und Programm zum Aufbau eines Pakets Expired - Fee Related DE112004002043B4 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (5)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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