JP2002305535A - Method and apparatus for providing a reliable protocol for transferring data - Google Patents

Method and apparatus for providing a reliable protocol for transferring data

Info

Publication number
JP2002305535A
JP2002305535A JP2001386626A JP2001386626A JP2002305535A JP 2002305535 A JP2002305535 A JP 2002305535A JP 2001386626 A JP2001386626 A JP 2001386626A JP 2001386626 A JP2001386626 A JP 2001386626A JP 2002305535 A JP2002305535 A JP 2002305535A
Authority
JP
Japan
Prior art keywords
data
processing system
sub
request
data packet
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2001386626A
Other languages
Japanese (ja)
Inventor
Giles Roger Frazier
ギレス・ロジャー・フレイツァー
Gregory Francis Pfister
グレゴリー・フランシス・フィスター
Renato John Recio
レナト・ジョン・レシオ
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2002305535A publication Critical patent/JP2002305535A/en
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/25Flow control; Congestion control with rate being modified by the source upon detecting a change of network conditions
    • 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
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/26Flow control; Congestion control using explicit feedback to the source, e.g. choke packets
    • H04L47/266Stopping or restarting the source, e.g. X-on or X-off
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/30Flow control; Congestion control in combination with information about buffer occupancy at either end or at transit nodes

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)
  • Small-Scale Networks (AREA)
  • Communication Control (AREA)

Abstract

PROBLEM TO BE SOLVED: To provide a method, apparatus and computer implemented instructions for transferring data. SOLUTION: A request is sent by a requester to a responder. The request includes the amount of available processing space at the requester. When the request is received from the responder, data are identified using the request. The data are placed into a plurality of subsequences of data packets for transfer to the requester, wherein each packet within the set of subsequences hold data in the amount less than or equal to the amount of available space. These subsequences are then sent to the requester one subsequence at a time. A new subsequence is sent each time the available processing space at the requester becomes free to process data from another subsequence.

Description

【発明の詳細な説明】DETAILED DESCRIPTION OF THE INVENTION

【0001】[0001]

【発明の属する技術分野】本発明は、全般的には、改良
されたネットワーク・データ処理システムに関し、具体
的には、ネットワーク・データ処理システムを管理する
方法および装置に関する。さらに具体的には、本発明
は、データ・パケットの組を使用してデータを転送する
方法および装置に関する。
FIELD OF THE INVENTION The present invention relates generally to improved network data processing systems and, more particularly, to methods and apparatus for managing network data processing systems. More specifically, the present invention relates to a method and apparatus for transferring data using a set of data packets.

【0002】[0002]

【従来の技術】システム・エリア・ネットワーク(SA
N)では、ハードウェアによってメッセージ・パッシン
グ機構が提供され、このメッセージ・パッシング機構
を、入出力装置と、汎用コンピューティング・ノード間
のプロセス間通信(IPC)とに使用することができ
る。装置で実行されるプロセスが、送信/受信メッセー
ジをポストすることによってSANメッセージ・パッシ
ング・ハードウェアにアクセスして、SANチャネル・
アダプタ(CA)上の作業キューを送信/受信する。こ
れらのプロセスを、「コンシューマ」とも称する。送信
/受信作業キュー(WQ)は、キュー対(QP)として
コンシューマに割り当てられる。メッセージは、5つの
異なるトランスポート・タイプすなわち、Reliable Con
nected(RC、信頼できる接続)、Reliable datagram
(RD、信頼できるデータグラム)、Unreliable Conne
cted(UC、信頼できない接続)、Unreliable Datagra
m(UD、信頼できないデータグラム)、Raw Datagram
(RawD、生データグラム)を介して送信することが
できる。コンシューマは、SAN送信受信作業完了(W
C)を介して完了キュー(CQ)からこれらのメッセー
ジの結果を取り出す。ソース・チャネル・アダプタは、
アウトバウンド・メッセージのセグメント化とデスティ
ネーションへの送信を処理する。デスティネーション・
チャネル・アダプタは、インバウンド・メッセージの再
組立と、デスティネーションのコンシューマによって指
定されるメモリ・スペースへのそれらの配置を処理す
る。2つのチャネル・アダプタ・タイプすなわち、ホス
ト・チャネル・アダプタ(HCA)およびターゲット・
チャネル・アダプタ(TCA)が存在する。ホスト・チ
ャネル・アダプタは、汎用コンピューティング・ノード
によって、SANファブリックのアクセスに使用され
る。コンシューマは、SAN動詞を使用して、ホスト・
チャネル・アダプタ機能にアクセスする。動詞を解釈
し、チャネル・アダプタに直接にアクセスするソフトウ
ェアを、チャネル・インターフェース(CI)と称す
る。
2. Description of the Related Art A system area network (SA)
In N), a message passing mechanism is provided by hardware, which can be used for input / output devices and inter-process communication (IPC) between general purpose computing nodes. A process running on the device accesses the SAN message passing hardware by posting a send / receive message to access the SAN channel
Send / receive the work queue on the adapter (CA). These processes are also referred to as "consumers." The send / receive work queue (WQ) is assigned to consumers as a queue pair (QP). The message has five different transport types: Reliable Con
nected (RC, reliable connection), Reliable datagram
(RD, reliable datagram), Unreliable Conne
cted (UC, unreliable connection), Unreliable Datagra
m (UD, unreliable datagram), Raw Datagram
(RawD, raw datagram). The consumer completes the SAN transmission / reception work (W
Retrieve the results of these messages from the completion queue (CQ) via C). The source channel adapter is
Handles outbound message segmentation and transmission to the destination. Destination·
The channel adapter handles the reassembly of inbound messages and their placement in the memory space specified by the consumer of the destination. Two channel adapter types, a host channel adapter (HCA) and a target
There is a channel adapter (TCA). Host channel adapters are used by general purpose computing nodes to access the SAN fabric. Consumers use the SAN verb to
Access channel adapter functions. Software that interprets verbs and accesses the channel adapter directly is called a channel interface (CI).

【0003】[0003]

【発明が解決しようとする課題】特に構成中の、ネット
ワーク管理動作は、しばしば、限られた情報転送機能お
よび情報保管機能を有する比較的単純なルーチンによっ
て実行される。このため、unreliable datagramメッセ
ージ・タイプが使用され、データグラム長が、固定され
た小さい値に制限される。多くの管理動作を、単一のデ
ータグラムまたは要求/応答データグラム対の転送によ
って達成することができる。これらの単純な動作中にエ
ラーが発生した時には、過度のオーバーヘッドをこうむ
らずに動作全体を繰り返すことができる。他の管理動作
は、単一のデータグラムに含めることができない大量の
データの転送を必要とする。これらの動作は、関係する
データグラムを相関させ、失われたデータグラムを認識
し、失われたデータグラムを回復する手段を必要とす
る。また、要求側がデータベースにデータを要求するネ
ットワーク管理「Get」動作では、要求側が、返される
データの量を知らない。要求側が、返されるデータの量
の上限を設定し、追加データが使用可能である場合に要
求に関するより多くのデータを返すことを継続する方式
が必要である。最後に、大量のデータが受信側に送信さ
れるネットワーク管理「Set」動作では、データの受信
側が、当初はすべてのデータを受け取る準備ができてい
ない場合がある。
The network management operations, especially during configuration, are often performed by relatively simple routines having limited information transfer and storage capabilities. For this reason, the unreliable datagram message type is used and the datagram length is limited to a fixed small value. Many management operations can be accomplished by forwarding a single datagram or a request / response datagram pair. If an error occurs during these simple operations, the entire operation can be repeated without incurring excessive overhead. Other management operations require the transfer of large amounts of data that cannot be contained in a single datagram. These operations require means for correlating the datagrams involved, recognizing lost datagrams, and recovering lost datagrams. Also, in a network management "Get" operation where the requester requests data from the database, the requester does not know the amount of data to be returned. There is a need for a scheme in which the requester sets an upper limit on the amount of data returned and continues to return more data about the request if additional data is available. Finally, in a network management "Set" operation where a large amount of data is sent to the receiver, the data receiver may not be initially ready to receive all the data.

【0004】したがって、送信される初期データの量を
制限し、受信側に、データを受け取る準備ができた時に
次のデータを要求する手段を提供する、改良された方法
および装置を有することが有利である。
Accordingly, it would be advantageous to have an improved method and apparatus that limit the amount of initial data transmitted and provide the receiving party with a means to request the next data when it is ready to receive the data. It is.

【0005】[0005]

【課題を解決するための手段】本発明は、要求に応答し
てデータを転送し、前の要求を受け取らずに受信側にデ
ータを転送する方法、装置、およびコンピュータ実施さ
れる命令を提供する。データが、要求に応答して転送さ
れる時には、要求が、要求発行者によって応答側に送信
される。この要求には、要求発行者側で使用可能な処理
スペースの量が含まれる。要求が、応答側から受信され
る時に、データが、その要求を使用して識別される。デ
ータは、要求発行者への転送のために複数のデータ・パ
ケットに配置され、パケットの組のうちの各パケット
が、固定された量のデータを保持する。パケットは、パ
ケットのサブシーケンスにグループ化され、このサブシ
ーケンスのそれぞれが、使用可能なスペースの量以下の
量のデータを保持する。これらのサブシーケンスが、そ
の後、要求発行者に送信される。新しいサブシーケンス
は、要求発行者側の使用可能な処理スペースが空いて、
別のサブシーケンスからのデータを処理できるようにな
るたびに送信される。要求発行者は、使用可能な処理ス
ペースの量が空きになるたびに要求に応答してデータ・
パケットのサブシーケンスを受信し、データ・パケット
の各サブシーケンス内のデータは、使用可能な処理スペ
ースの量におさまる。
SUMMARY OF THE INVENTION The present invention provides a method, apparatus, and computer-implemented instructions for transferring data in response to a request and for transferring data to a receiver without receiving a previous request. . When data is transferred in response to a request, the request is sent by the request issuer to the responder. The request includes the amount of processing space available on the request issuer side. When a request is received from the responder, data is identified using the request. The data is arranged into a plurality of data packets for transfer to the requestor, with each packet of the set of packets holding a fixed amount of data. Packets are grouped into sub-sequences of packets, each of which holds an amount of data less than or equal to the amount of available space. These subsequences are then sent to the requester. The new subsequence has available processing space available on the request issuer side,
Sent whenever data from another subsequence can be processed. The requester responds to the request each time the amount of available processing space becomes available.
A sub-sequence of packets is received, and the data in each sub-sequence of the data packet fits into the amount of available processing space.

【0006】データが、前の要求なしで受信側に送信さ
れる時には、送信側が、まず、デフォルトの量までのデ
ータを保持するデータ・パケットのサブシーケンスを送
信する。送信側は、その後、受信側の処理スペースの量
が空きになるたびに、データの追加のサブシーケンスを
送信する。
When data is sent to a receiver without a previous request, the sender first sends a sub-sequence of data packets holding up to a default amount of data. The sender then sends an additional subsequence of data each time the amount of processing space on the receiver becomes free.

【0007】本発明に特有と思われる新規の特徴を、請
求項に示す。しかし、本発明自体ならびに本発明の使用
の好ましい態様、さらなる目的、および長所は、添付図
面と共に例示的実施形態の以下の詳細な説明を参照する
ことによって最もよく理解される。
[0007] The novel features believed characteristic of the invention are set forth in the following claims. However, the invention itself, as well as preferred aspects, further objects, and advantages of its use, are best understood by referring to the following detailed description of exemplary embodiments in conjunction with the accompanying drawings.

【0008】[0008]

【発明の実施の形態】ここで図面、具体的には図1を参
照すると、本発明の好ましい実施形態による、ネットワ
ーク・グローバル変更コンピューティング・システムの
図が示されている。図1に示された分散コンピュータ・
システムは、システム・エリア・ネットワーク(SA
N)100の形をとり、単に例示のために提供され、下
で説明する本発明の実施形態は、多数の他のタイプおよ
び構成のコンピュータ・システム上で実施することがで
きる。たとえば、本発明を実施するコンピュータ・シス
テムは、1つのプロセッサと少数の入出力アダプタを有
する小型サーバから、数百個または数千個のプロセッサ
と数千個の入出力アダプタを有する大量並列スーパーコ
ンピュータ・システムまでの範囲におよぶものとするこ
とができる。さらに、本発明は、インターネットまたは
イントラネットによって接続されたリモート・コンピュ
ータ・システムのインフラストラクチャ内で実施するこ
とができる。SAN100は、分散コンピュータ・シス
テム内の高帯域幅低待ち時間ネットワーク相互接続ノー
ドである。ノードは、ネットワークの1つまたは複数の
リンクに接続され、ネットワーク内のメッセージの起点
またはデスティネーションを形成する構成要素である。
図示の例では、SAN100に、ホスト・プロセッサ・
ノード102、ホスト・プロセッサ・ノード104、R
AID(新磁気ディスク制御機構)サブシステム・ノー
ド106、および入出力シャシー・ノード108の形の
ノードが含まれる。図1に示されたノードは、例示だけ
を目的とする。というのは、SAN100に、任意の数
のすべてのタイプの独立の処理ノード、入出力アダプタ
・ノード、および入出力装置ノードを接続することがで
きるからである。これらのノードのどれもが、本明細書
でSAN100内のメッセージまたはフレームを発する
か最終的に消費する装置として定義されるエンドノード
として機能することができる。
Referring now to the drawings, and in particular to FIG. 1, there is shown a diagram of a network global change computing system according to a preferred embodiment of the present invention. The distributed computer shown in FIG.
The system uses a System Area Network (SA)
N) The embodiments of the present invention, which are in the form of 100 and are provided merely by way of example, and described below, may be implemented on many other types and configurations of computer systems. For example, a computer system embodying the present invention can be a small server with one processor and a few I / O adapters to a massively parallel supercomputer with hundreds or thousands of processors and thousands of I / O adapters -It can extend to the system. Further, the invention can be implemented within the infrastructure of a remote computer system connected by the Internet or an intranet. SAN 100 is a high bandwidth, low latency network interconnect node in a distributed computer system. A node is a component that is connected to one or more links of a network and that forms the origin or destination of a message in the network.
In the illustrated example, the SAN 100 has a host processor
Node 102, host processor node 104, R
An AID (new magnetic disk control) subsystem node 106 and nodes in the form of I / O chassis nodes 108 are included. The nodes shown in FIG. 1 are for illustration purposes only. The SAN 100 can be connected to any number of all types of independent processing nodes, I / O adapter nodes, and I / O device nodes. Any of these nodes can function as end nodes, defined herein as devices that originate or ultimately consume messages or frames within SAN 100.

【0009】本発明の一実施形態では、分散コンピュー
タ・システム内にエラー処理機構が存在し、このエラー
処理機構によって、SAN100などの分散コンピュー
ティング・システム内のエンド・ノード間のreliable c
onnectionまたはreliable datagram通信が可能になる。
In one embodiment of the present invention, an error handling mechanism is present in the distributed computer system, and the error handling mechanism allows reliable c between end nodes in a distributed computing system such as SAN 100.
Onnection or reliable datagram communication becomes possible.

【0010】本明細書で使用するメッセージは、データ
交換のアプリケーション定義の単位であり、共同するプ
ロセスの間の通信のプリミティブな単位である。パケッ
トは、ネットワーキング・プロトコル・ヘッダまたはネ
ットワーキング・プロトコル・トレーラによってカプセ
ル化されたデータの1単位である。ヘッダは、一般に、
SANを介してフレームを送信するための制御情報およ
び経路指定情報を提供する。トレーラには、一般に、パ
ケットが内容を破壊されて送達されないようにするため
の、制御データおよび巡回冗長検査(CRC)データが
含まれる。SAN100には、分散コンピュータ・シス
テム内の入出力およびプロセス間通信(IPC)の両方
をサポートする通信管理インフラストラクチャが含まれ
る。図1に示されたSAN100には、交換回線通信フ
ァブリック116が含まれ、これによって、多数の装置
が、保護されリモート管理される環境で、高帯域幅と低
待ち時間で並列にデータを転送できるようになる。エン
ドノードは、複数のポートを介して通信することがで
き、SANファブリックを介する複数の経路を使用する
ことができる。図1に示された複数のポートおよびSA
Nを介する経路は、フォールト・トレランスおよび改善
された帯域幅のデータ転送に使用することができる。
[0010] A message, as used herein, is an application-defined unit of data exchange and a primitive unit of communication between cooperating processes. A packet is a unit of data encapsulated by a networking protocol header or networking protocol trailer. The header is generally
Provides control and routing information for transmitting frames over the SAN. Trailers typically include control data and cyclic redundancy check (CRC) data to prevent packets from being destroyed and delivered. SAN 100 includes a communication management infrastructure that supports both input / output and inter-process communication (IPC) in a distributed computer system. The SAN 100 shown in FIG. 1 includes a switched communication fabric 116 that allows multiple devices to transfer data in parallel in a protected and remotely managed environment with high bandwidth and low latency. Become like End nodes can communicate over multiple ports and can use multiple paths through the SAN fabric. Multiple ports and SA shown in FIG.
The path through N can be used for data transfer with fault tolerance and improved bandwidth.

【0011】図1のSAN100には、スイッチ11
2、スイッチ114、スイッチ146、およびルータ1
17が含まれる。スイッチとは、複数のリンクを一緒に
接続し、小さいヘッダのDestination Local Identifier
(DLID)フィールドを使用して、サブネット内であ
るリンクから別のリンクへのパケットの経路指定を可能
にする装置である。ルータとは、複数のサブネットを一
緒に接続し、大きいヘッダのDestination Globally Uni
que Identifier(DGUID)を使用して、第1のサブ
ネットのあるリンクから第2のサブネットの別のリンク
へフレームを経路指定することができる装置である。
The SAN 100 shown in FIG.
2, switch 114, switch 146, and router 1
17 are included. A switch connects multiple links together and uses a small header Destination Local Identifier
A device that uses the (DLID) field to route packets from one link to another within a subnet. A router connects multiple subnets together and creates a Destination Globally Uni
A device that can route frames from one link in a first subnet to another link in a second subnet using a que Identifier (DGUID).

【0012】一実施形態では、リンクが、エンドノー
ド、スイッチ、またはルータなどの、2つのネットワー
ク・ファブリック要素の間の全二重チャネルである。適
当なリンクの例には、銅線ケーブル、光ファイバ・ケー
ブル、バックプレーンおよびプリント回路基板上のプリ
ント回路銅トレースが含まれるが、これに制限はされな
い。
In one embodiment, the link is a full-duplex channel between two network fabric elements, such as end nodes, switches, or routers. Examples of suitable links include, but are not limited to, copper cables, fiber optic cables, backplanes and printed circuit copper traces on printed circuit boards.

【0013】信頼できるサービス・タイプの場合、ホス
ト・プロセッサ・エンドノードおよび入出力アダプタ・
エンドノードなどのエンドノードが、要求パケットを生
成し、肯定応答パケットを返す。スイッチおよびルータ
は、ソースからデスティネーションへパケットを渡す。
ネットワークの各ステージで更新される変形CRCトレ
ーラ・フィールドを除いて、スイッチは、パケットを無
変更で渡す。ルータは、パケットが経路指定される際
に、変形CRCトレーラ・フィールドを更新し、ヘッダ
内の他のフィールドを変更する。
For a trusted service type, the host processor end node and the I / O adapter
An end node, such as an end node, generates a request packet and returns an acknowledgment packet. Switches and routers pass packets from the source to the destination.
The switch passes the packet unchanged, except for a modified CRC trailer field that is updated at each stage of the network. The router updates the modified CRC trailer field and changes other fields in the header as the packet is routed.

【0014】図1に示されたSAN100では、ホスト
・プロセッサ・ノード102、ホスト・プロセッサ・ノ
ード104および入出力シャシー・ノード108に、S
AN100とインターフェースするために少なくとも1
つのチャネル・アダプタ(CA)が含まれる。一実施形
態では、各チャネル・アダプタが、SAN100上で伝
送されるパケットのソースまたはシンクになるのに十分
に詳細にチャネル・アダプタ・インターフェースを実装
する端点である。ホスト・プロセッサ・ノード102に
は、ホスト・チャネル・アダプタ118およびホスト・
チャネル・アダプタ120の形のチャネル・アダプタが
含まれる。ホスト・プロセッサ・ノード104には、ホ
スト・チャネル・アダプタ122およびホスト・チャネ
ル・アダプタ124が含まれる。ホスト・プロセッサ・
ノード102には、バス・システム134によって相互
接続される、中央処理装置126ないし130およびメ
モリ132も含まれる。ホスト・プロセッサ・ノード1
04には、同様に、バス・システム144によって相互
接続される、中央処理装置136ないし140およびメ
モリ142が含まれる。
In the SAN 100 shown in FIG. 1, the host processor node 102, the host processor node 104, and the input / output chassis node 108
At least one to interface with AN100
One channel adapter (CA) is included. In one embodiment, each channel adapter is an endpoint that implements the channel adapter interface in sufficient detail to become a source or sink of packets transmitted on SAN 100. The host processor node 102 has a host channel adapter 118 and a host
A channel adapter in the form of a channel adapter 120 is included. Host processor node 104 includes host channel adapter 122 and host channel adapter 124. Host processor
Node 102 also includes central processing units 126-130 and memory 132 interconnected by a bus system 134. Host processor node 1
04 also includes central processing units 136-140 and memory 142 interconnected by a bus system 144.

【0015】ホスト・チャネル・アダプタ118および
120は、スイッチ112への接続を提供し、ホスト・
チャネル・アダプタ122および124は、スイッチ1
12および114への接続を提供する。一実施形態で
は、ホスト・チャネル・アダプタが、ハードウェアで実
施される。この実施形態では、ホスト・チャネル・アダ
プタ・ハードウェアが、中央処理装置および入出力アダ
プタの通信オーバーヘッドの多くをオフロードする。こ
のホスト・チャネル・アダプタのハードウェア実施で
は、通信プロトコルに関連する従来のオーバーヘッドな
しで、交換回線ネットワークを介する複数の同時通信も
可能になる。一実施形態では、図1のホスト・チャネル
・アダプタおよびSAN100が、分散コンピュータ・
システムの入出力コンシューマおよびプロセス間通信
(IPC)コンシューマに、オペレーティング・システ
ム・カーネル・プロセスを伴わずに0プロセッサコピー
・データ転送を提供し、ハードウェアを使用して、信頼
できるフォールト・トレラントな通信を提供する。
Host channel adapters 118 and 120 provide connection to switch 112 and host
Channel adapters 122 and 124 are connected to switch 1
Provide connections to 12 and 114. In one embodiment, the host channel adapter is implemented in hardware. In this embodiment, the host channel adapter hardware offloads much of the central processing unit and I / O adapter communication overhead. This hardware implementation of the host channel adapter also allows multiple simultaneous communications over a switched network without the traditional overhead associated with communication protocols. In one embodiment, the host channel adapter and SAN 100 of FIG.
Provides zero processor copy data transfer without operating system kernel processes to the system's I / O and inter-process communication (IPC) consumers and uses hardware to provide reliable fault-tolerant communication I will provide a.

【0016】図1に示されているように、ルータ117
は、他のホストまたは他のルータへの広域ネットワーク
(WAN)接続またはローカル・エリア・ネットワーク
(LAN)接続に結合される。
As shown in FIG. 1, the router 117
Is coupled to a wide area network (WAN) connection or a local area network (LAN) connection to other hosts or other routers.

【0017】図1の入出力シャシー・ノード108に
は、スイッチ146および複数の入出力モジュール14
8ないし156が含まれる。この例では、入出力モジュ
ールが、アダプタ・カードの形をとる。図1に示された
例のアダプタ・カードには、入出力モジュール148の
SCSIアダプタ・カード、入出力モジュール152の
fiber channelハブおよびfiber channel-arbitrated lo
op(FC−AL)デバイスへのアダプタ・カード、入出
力モジュール150のイーサネット(R)アダプタ・カ
ード、入出力モジュール154のグラフィックス・アダ
プタ・カード、および入出力モジュール156のビデオ
・アダプタ・カードが含まれる。既知のタイプのアダプ
タ・カードのどれでも実装することができる。入出力ア
ダプタには、アダプタ・カードをSANファブリックに
結合するための入出力アダプタ・バックプレーン内のス
イッチも含まれる。これらのモジュールには、ターゲッ
ト・チャネル・アダプタ158ないし166も含まれ
る。この例では、図1のRAIDサブシステム・ノード
106に、プロセッサ168、メモリ170、ターゲッ
ト・チャネル・アダプタ(TCA)172、および複数
の冗長なまたはストライピングされたストレージ・ディ
スク装置174が含まれる。ターゲット・チャネル・ア
ダプタ172は、完全に機能するホスト・チャネル・ア
ダプタとすることができる。
The input / output chassis node 108 of FIG. 1 includes a switch 146 and a plurality of input / output modules 14.
8 to 156 are included. In this example, the input / output module takes the form of an adapter card. The example adapter card shown in FIG. 1 includes a SCSI adapter card for the input / output module 148 and a SCSI adapter card for the input / output module 152.
fiber channel hub and fiber channel-arbitrated lo
The adapter card to the op (FC-AL) device, the Ethernet adapter card for the I / O module 150, the graphics adapter card for the I / O module 154, and the video adapter card for the I / O module 156 included. Any of the known types of adapter cards can be implemented. The I / O adapter also includes a switch in the I / O adapter backplane for coupling the adapter card to the SAN fabric. These modules also include target channel adapters 158-166. In this example, the RAID subsystem node 106 of FIG. 1 includes a processor 168, memory 170, a target channel adapter (TCA) 172, and a plurality of redundant or striped storage disk devices 174. Target channel adapter 172 may be a fully functional host channel adapter.

【0018】SAN100は、入出力およびプロセッサ
間通信に関するデータ通信を処理する。SAN100
は、入出力に必要な高帯域幅およびスケーラビリティを
サポートし、プロセッサ間通信に必要な極度に低い待ち
時間および低いCPUオーバーヘッドもサポートする。
ユーザ・クライアントは、オペレーティング・システム
・カーネル・プロセスをバイパスし、ホスト・チャネル
・アダプタなどの、効率的なメッセージ・パッシング・
プロトコルを可能にするネットワーク通信ハードウェア
に直接にアクセスすることができる。SAN100は、
最新のコンピューティング・モデルに適し、新しい形態
の入出力およびコンピュータ・クラスタ通信の基本構成
要素である。さらに、図1のSAN100を用いると、
入出力アダプタ・ノードが、それら自体の間で通信する
か、分散コンピュータ・システム内のプロセッサ・ノー
ドのいずれかまたはすべてと通信することができるよう
になる。SAN100に付加された入出力アダプタに関
して、結果の入出力アダプタ・ノードは、SAN100
内のホスト・プロセッサ・ノードと実質的に同一の通信
機能を有する。
The SAN 100 processes data communication related to input / output and communication between processors. SAN100
It supports the high bandwidth and scalability required for I / O, and also supports the extremely low latency and low CPU overhead required for inter-processor communication.
User clients can bypass operating system kernel processes and use efficient message passing, such as host channel adapters.
It has direct access to the network communication hardware that enables the protocol. SAN100 is
Suitable for modern computing models, it is a fundamental component of new forms of I / O and computer cluster communication. Further, using the SAN 100 of FIG.
The I / O adapter nodes will be able to communicate between themselves or with any or all of the processor nodes in the distributed computer system. For I / O adapters added to SAN 100, the resulting I / O adapter node is SAN 100
It has substantially the same communication functions as the host processor nodes within.

【0019】次に図2に移ると、本発明の好ましい実施
形態によるホスト・プロセッサ・ノードの機能ブロック
図が示されている。ホスト・プロセッサ・ノード200
は、図1のホスト・プロセッサ・ノード102などのホ
スト・プロセッサ・ノードの例である。
Turning now to FIG. 2, a functional block diagram of a host processor node according to a preferred embodiment of the present invention is shown. Host processor node 200
Is an example of a host processor node, such as host processor node 102 of FIG.

【0020】この例では、図2に示されたホスト・プロ
セッサ・ノード200に、ホスト・プロセッサ・ノード
200上で実行されるプロセスである1組のコンシュー
マ202ないし208が含まれる。ホスト・プロセッサ
・ノード200には、チャネル・アダプタ210および
チャネル・アダプタ212も含まれる。チャネル・アダ
プタ210には、ポート214および216が含まれ、
チャネル・アダプタ212には、ポート218および2
20が含まれる。各ポートは、リンクに接続される。こ
れらのポートを、図1のSAN100などの、1つのS
ANサブネットまたは複数のSANサブネットに接続す
ることができる。この例では、チャネル・アダプタが、
ホスト・チャネル・アダプタの形をとる。コンシューマ
202ないし208は、動詞インターフェース222
と、メッセージおよびデータ・サービス224とを介し
てSANにメッセージを転送する。動詞インターフェー
スは、本質的に、ホスト・チャネル・アダプタの機能性
の抽象記述である。オペレーティング・システムは、そ
のプログラミング・インターフェースを介して動詞機能
性の一部またはすべてを公開することができる。基本的
に、このインターフェースでは、ホストの挙動が定義さ
れる。
In this example, the host processor node 200 shown in FIG. 2 includes a set of consumers 202-208, which are processes running on the host processor node 200. Host processor node 200 also includes channel adapter 210 and channel adapter 212. Channel adapter 210 includes ports 214 and 216,
Channel adapter 212 has ports 218 and 2
20 are included. Each port is connected to a link. These ports are connected to a single S, such as SAN 100 in FIG.
It can be connected to an AN subnet or multiple SAN subnets. In this example, the channel adapter is
Takes the form of a host channel adapter. Consumers 202 through 208 are connected to verb interface 222
And forward the message to the SAN via the message and data service 224. The verb interface is essentially an abstraction of the functionality of the host channel adapter. The operating system can expose some or all of the verb functionality through its programming interface. Basically, this interface defines the behavior of the host.

【0021】さらに、ホスト・プロセッサ・ノード20
0には、メッセージおよびデータ・サービス224が含
まれ、このメッセージおよびデータ・サービス224
は、動詞層より高水準のインターフェースであり、チャ
ネル・アダプタ210およびチャネル・アダプタ212
を介して受け取られたメッセージおよびデータの処理に
使用される。メッセージおよびデータ・サービス224
は、メッセージおよび他のデータを処理するためのイン
ターフェースをコンシューマ202ないし208に提供
する。
Further, the host processor node 20
0 includes the message and data service 224,
Is a higher-level interface than the verb layer, with channel adapters 210 and 212
Used for processing messages and data received via Message and data service 224
Provides an interface to consumers 202-208 for processing messages and other data.

【0022】ここで図3を参照すると、本発明の好まし
い実施形態によるホスト・チャネル・アダプタが示され
ている。図3に示されたホスト・チャネル・アダプタ3
00には、1組のキュー対(QP)302ないし310
が含まれ、これらのキュー対は、ホスト・チャネル・ア
ダプタ・ポート312ないし316にメッセージを転送
するのに使用される。
Referring now to FIG. 3, a host channel adapter according to a preferred embodiment of the present invention is shown. Host channel adapter 3 shown in FIG.
00, a set of queue pairs (QPs) 302-310
And these queue pairs are used to transfer messages to the host channel adapter ports 312-316.

【0023】ホスト・チャネル・アダプタ・ポート31
2ないし316へのデータのバッファリングは、仮想レ
ーン(VL)318ないし334を介してチャネル化さ
れ、各VLが、それ自体のフロー制御を有する。サブネ
ット・マネージャが、各物理ポートのローカル・アドレ
スすなわちポートのLIDを用いてチャネル・アダプタ
を構成する。サブネット・マネージャ・エージェント
(SMA)336は、チャネル・アダプタを構成するた
めにサブネット・マネージャと通信する実体である。メ
モリ変換および保護(MTP)338は、仮想アドレス
を物理アドレスに変換し、アクセス権の妥当性検査を行
う機構である。直接メモリ・アクセス(DMA)340
は、キュー対302ないし310に関してメモリ342
を使用する直接メモリ・アクセス動作を提供する。
Host channel adapter port 31
The buffering of data into 2-316 is channelized via virtual lanes (VL) 318-334, each VL having its own flow control. A subnet manager configures the channel adapter with the local address of each physical port, or port LID. A subnet manager agent (SMA) 336 is an entity that communicates with the subnet manager to configure a channel adapter. The memory translation and protection (MTP) 338 is a mechanism that translates a virtual address into a physical address and performs a validity check of an access right. Direct memory access (DMA) 340
Is stored in memory 342 for queue pairs 302-310.
Provides a direct memory access operation using

【0024】図3に示されたホスト・チャネル・アダプ
タ300などの単一のチャネル・アダプタが、数千個の
キュー対をサポートすることができる。対照的に、入出
力アダプタ内のターゲット・チャネル・アダプタは、通
常は、はるかに少数のキュー対をサポートする。
A single channel adapter, such as the host channel adapter 300 shown in FIG. 3, can support thousands of queue pairs. In contrast, target channel adapters in I / O adapters typically support a much smaller number of queue pairs.

【0025】各キュー対は、送信作業キュー(SWQ)
および受信作業キューからなる。送信作業キューは、チ
ャネル・セマンティック・メッセージおよびメモリ・セ
マンティック・メッセージを送信するのに使用される。
受信作業キューは、チャネル・セマンティック・メッセ
ージを受信する。コンシューマは、本明細書で動詞と称
するオペレーティング・システム固有のプログラミング
・インターフェースを呼び出して、作業キューに作業要
求(WR)を置く。
Each queue pair has a transmission work queue (SWQ).
And a receiving work queue. The send work queue is used to send channel semantic messages and memory semantic messages.
The receive work queue receives channel semantic messages. The consumer invokes an operating system-specific programming interface, referred to herein as a verb, to place a work request (WR) on a work queue.

【0026】ここで図4を参照すると、本発明の好まし
い実施形態による、作業要求の処理を示す図が示されて
いる。図4では、受信作業キュー400、送信作業キュ
ー402、および完了キュー404が、コンシューマ4
06からの要求およびコンシューマ406に関する要求
を処理するために存在する。これらのコンシューマ40
6からの要求は、最終的にハードウェア408に送られ
る。この例では、コンシューマ406が、作業要求41
0および412を生成し、作業完了414を受け取る。
図4からわかるように、作業キューに置かれた作業要求
を、作業キュー要素(WQE)と称する。送信作業キュ
ー402には、SANファブリックに送信されるデータ
を記述する作業キュー要素(WQE)422ないし42
8が含まれる。受信作業キュー400には、SANファ
ブリックからの着信チャネル・セマンティック・データ
を置く位置を記述する、作業キュー要素(WQE)41
6ないし420が含まれる。作業キュー要素は、ホスト
・チャネル・アダプタ内のハードウェア408によって
処理される。
Referring now to FIG. 4, there is shown a diagram illustrating the processing of a work request according to a preferred embodiment of the present invention. In FIG. 4, the reception work queue 400, the transmission work queue 402, and the completion queue 404 are
Exist to handle requests from the consumer 06 and requests for the consumer 406. These consumers 40
6 is finally sent to the hardware 408. In this example, the consumer 406 determines that the work request 41
Generate 0 and 412 and receive work done 414.
As can be seen from FIG. 4, the work request placed in the work queue is called a work queue element (WQE). The transmission work queue 402 includes work queue elements (WQEs) 422 to 42 that describe data to be transmitted to the SAN fabric.
8 is included. The receive work queue 400 has a work queue element (WQE) 41 that describes where to put incoming channel semantic data from the SAN fabric.
6 to 420 are included. Work queue elements are handled by hardware 408 in the host channel adapter.

【0027】動詞も、完了キュー404から完了した作
業を取り出す機構を提供する。図4からわかるように、
完了キュー404には、完了キュー要素(CQE)43
0ないし436が含まれる。完了キュー要素には、前に
完了した作業キュー要素に関する情報が含まれる。完了
キュー404は、複数のキュー対に関する完了通知の単
一の点を作成するのに使用される。完了キュー要素は、
完了キュー上のデータ構造である。この要素では、完了
した作業キュー要素が記述される。完了キュー要素に
は、完了したキュー対および特定の作業キュー要素を判
定するのに十分な情報が含まれる。完了キュー・コンテ
キストは、個々の完了キューへのポインタ、長さ、およ
び個々の完了キューを管理するのに必要な他の情報を含
む情報のブロックである。
Verbs also provide a mechanism to retrieve completed work from completion queue 404. As can be seen from FIG.
The completion queue 404 has a completion queue element (CQE) 43
0 to 436 are included. The completion queue element includes information about a previously completed work queue element. Completion queue 404 is used to create a single point of completion notification for multiple queue pairs. The completion queue element is
It is a data structure on a completion queue. This element describes a completed work queue element. The completion queue element contains sufficient information to determine the completed queue pair and the particular work queue element. A completion queue context is a block of information that contains pointers to individual completion queues, lengths, and other information needed to manage each completion queue.

【0028】図4に示された送信作業キュー402に関
してサポートされる作業要求の例は、次の通りである。
送信作業要求は、リモート・ノードの受信作業キュー要
素によって参照されるデータ・セグメントへローカル・
データ・セグメントの組をプッシュする、チャネル・セ
マンティック動作である。たとえば、作業キュー要素4
28に、データ・セグメント4 438、データ・セグ
メント5 440、およびデータ・セグメント6 44
2への参照が含まれる。送信作業要求のデータ・セグメ
ントのそれぞれに、仮想的に連続したメモリ領域が含ま
れる。ローカル・データ・セグメントを参照するのに使
用される仮想アドレスは、ローカル・キュー対を作成し
たプロセスのアドレス・コンテキスト内にある。
An example of a work request supported for the send work queue 402 shown in FIG. 4 is as follows.
The send work request is sent to the data segment referenced by the receive work queue element at the remote node.
A channel semantic operation that pushes a set of data segments. For example, work queue element 4
28, data segment 4 438, data segment 5 440, and data segment 6 44
2 is included. Each of the data segments of the transmission work request includes a virtually contiguous memory area. The virtual address used to reference the local data segment is in the address context of the process that created the local queue pair.

【0029】リモート直接メモリ・アクセス(RDM
A)読取作業要求によって、リモート・ノード上の仮想
的に連続したメモリ・スペースを読み取るためのメモリ
・セマンティック動作が提供される。メモリ・スペース
は、メモリ領域の一部またはメモリ・ウィンドウの一部
のいずれかとすることができる。メモリ領域は、仮想ア
ドレスおよび長さによって定義される、仮想的に連続し
たメモリ・アドレスの前に登録された組を指す。メモリ
・ウィンドウは、前に登録された領域にバインドされて
いる仮想的に連続したメモリ・アドレスの組を指す。
Remote direct memory access (RDM
A) A read operation request provides a memory semantic operation for reading a virtually contiguous memory space on a remote node. The memory space can be either part of a memory area or part of a memory window. The memory area refers to a set registered before a virtual contiguous memory address defined by a virtual address and a length. A memory window refers to a set of virtually contiguous memory addresses bound to a previously registered area.

【0030】RDMA Read作業要求では、リモー
ト・エンドノード上の仮想的に連続したメモリ・スペー
スが読み取られ、そのデータが、仮想的に連続したロー
カル・メモリ・スペースに書き込まれる。送信作業要求
に類似して、ローカル・データ・セグメントを参照する
RDMA Read作業キュー要素によって使用される
仮想アドレスは、ローカル・キュー対を作成したプロセ
スのアドレス・コンテキスト内にある。たとえば、受信
作業キュー400の作業キュー要素416は、データ・
セグメント1 444、データ・セグメント2 44
6、およびデータ・セグメント3 448を参照する。
リモート仮想アドレスは、RDMA Read作業キュ
ー要素によってターゲットにされるリモート・キュー対
を所有するプロセスのアドレス・コンテキスト内にあ
る。
An RDMA Read operation request reads a virtually contiguous memory space on a remote end node and writes the data to a virtually contiguous local memory space. Similar to the send work request, the virtual address used by the RDMA Read work queue element that references the local data segment is in the address context of the process that created the local queue pair. For example, the work queue element 416 of the receive work queue 400
Segment 1 444, data segment 2 44
6, and data segment 3 448.
The remote virtual address is in the address context of the process that owns the remote queue pair targeted by the RDMA Read work queue element.

【0031】RDMA Write作業キュー要素によ
って、リモート・ノード上の仮想的に連続したメモリ・
スペースに書き込むメモリ・セマンティック動作が提供
される。RDMA Write作業キュー要素には、ロ
ーカルの仮想的に連続したメモリ・スペースおよびロー
カル・メモリ・スペースが書き込まれるリモート・メモ
リ・スペースの仮想アドレスの分散リストが含まれる。
The RDMA Write work queue element allows virtually contiguous memory on a remote node.
A memory semantic operation for writing to a space is provided. The RDMA Write work queue element contains a distributed list of virtual addresses in the local virtual contiguous memory space and the remote memory space where the local memory space is written.

【0032】RDMA FetchOp作業キュー要素
によって、リモート・ワードに対するアトミック・オペ
レーションを実行するメモリ・セマンティック動作が提
供される。RDMA FetchOp作業キュー要素
は、RDMA Read動作、Modify動作、およ
びRDMA Write動作の組合せである。RDMA
FetchOp作業キュー要素は、Compare and Swap i
f equalなどの、複数の読取−修正−書込動作をサポー
トすることができる。
The RDMA FetchOp work queue element provides a memory semantic operation that performs atomic operations on remote words. The RDMA FetchOp work queue element is a combination of an RDMA Read operation, a Modify operation, and an RDMA Write operation. RDMA
The FetchOp work queue element is Compare and Swap i
Multiple read-modify-write operations, such as f equal, can be supported.

【0033】バインド(アンバインド)リモート・アク
セス・キー(R_Key)作業キュー要素によって、メ
モリ・ウィンドウをメモリ領域に関連付ける(関連付け
を解除する)ことによってメモリ・ウィンドウを修正
(破壊)する、ホスト・チャネル・アダプタ・ハードウ
ェアに対するコマンドが提供される。R_Keyは、各
RDMAアクセスの一部であり、リモート・プロセスが
バッファへのアクセスを許可したことの検証に使用され
る。
A host channel that modifies (destroys) a memory window by associating (disassociating) the memory window with a memory area through a bind (unbind) remote access key (R_Key) work queue element. -Commands for the adapter hardware are provided. R_Key is part of each RDMA access and is used to verify that the remote process has granted access to the buffer.

【0034】一実施形態では、図4の受信作業キュー4
00が、受信作業キュー要素と称する1つのタイプの作
業キュー要素だけをサポートする。受信作業キュー要素
によって、着信送付メッセージが書き込まれるローカル
・メモリ・スペースを記述するチャネル・セマンティッ
ク動作が提供される。受信作業キュー要素には、複数の
仮想的に連続したメモリ・スペースを記述する分散リス
トが含まれる。着信送付メッセージは、これらのメモリ
・スペースに書き込まれる。仮想アドレスは、ローカル
・キュー対を作成したプロセスのアドレス・コンテキス
ト内にある。
In one embodiment, the receiving work queue 4 of FIG.
00 supports only one type of work queue element, called a receive work queue element. The receive work queue element provides a channel semantic operation that describes the local memory space to which incoming sent messages are written. The receive work queue element includes a distributed list describing a plurality of virtually contiguous memory spaces. Incoming send messages are written to these memory spaces. The virtual address is in the address context of the process that created the local queue pair.

【0035】プロセス間通信に関して、ユーザモード・
ソフトウェア・プロセスは、バッファがメモリ内に常駐
する場所から直接にキュー対を介してデータを転送す
る。一実施形態では、キュー対を介する転送で、オペレ
ーティング・システムがバイパスされ、消費するホスト
命令サイクル数が減る。キュー対は、オペレーティング
・システム・カーネル介入を伴わない、0プロセッサコ
ピー・データ転送を可能にする。0プロセッサコピー・
データ転送によって、高帯域幅低待ち時間通信の効率的
なサポートがもたらされる。
Regarding the inter-process communication, the user mode
The software process transfers data via the queue pair directly from where the buffer resides in memory. In one embodiment, the transfer over the queue pair bypasses the operating system and consumes fewer host instruction cycles. Queue pairs allow zero processor copy data transfers without operating system kernel intervention. 0 processor copy
Data transfer provides efficient support for high bandwidth, low latency communication.

【0036】キュー対が作成される時に、キュー対は、
選択されたタイプのトランスポート・サービスを提供す
るようにセットされる。一実施形態では、本発明を実施
する分散コンピュータ・システムが、4つのタイプのト
ランスポート・サービスをサポートする。
When a queue pair is created, the queue pair:
Set to provide the selected type of transport service. In one embodiment, a distributed computer system implementing the present invention supports four types of transport services.

【0037】Reliable connectedサービスおよびUnreli
able connectedサービスでは、ローカル・キュー対が、
1つだけのリモート・キュー対と関連付けられる。Conn
ectedサービスは、プロセスが、プロセスごとに1つの
キュー対を作成することを必要とし、このキュー対は、
SANファブリックを介して通信するためのものであ
る。したがって、N個のホスト・プロセッサ・ノードの
それぞれにP個のプロセスが含まれ、各ノードのP個の
プロセスのすべてが、他のすべてのノード上のすべての
プロセスとの通信を望む場合には、各ホスト・プロセッ
サ・ノードに、P 2×(N−1)個のキュー対が必要で
ある。さらに、プロセスは、キュー対を、同一のホスト
・チャネル・アダプタ上の別のキュー対に接続すること
ができる。
[0037] Reliable connected service and Unreli
In the able connected service, the local queue pair is
Associated with only one remote queue pair. Conn
The expected service is a process where one process is
You need to create a queue pair, and this queue pair
For communicating over a SAN fabric.
You. Therefore, the N host processor nodes
Each contains P processes, and each node has P
All of the processes are running on all other nodes
If you want to communicate with the process,
The P Two× (N-1) queue pairs are required
is there. In addition, the process uses the queue pair as the same host
To another queue pair on the channel adapter
Can be.

【0038】Reliable datagramサービスでは、ローカ
ル・エンド−エンド(EE)コンテキストが、1つのリ
モート・エンド−エンド・コンテキストだけに関連付け
られる。reliable datagramサービスでは、1つのキュ
ー対のクライアント・プロセスが、他のいずれかのリモ
ート・ノード上の他のいずれかのキュー対と通信するこ
とが許可される。受信作業キューでは、reliable datag
ramサービスで、他のいずれかのリモート・ノード上の
いずれかの送信作業キューからの着信メッセージが許可
される。reliable datagramサービスは、コネクション
レスなので、reliable datagramサービスでは、スケー
ラビリティが大幅に改善される。したがって、固定され
た個数のキュー対を有するエンドノードが、reliable c
onnectionトランスポート・サービスの場合よりもはる
かに多数の、reliable datagramサービスを用いるプロ
セスおよびエンドノードと通信することができる。たと
えば、N個のホスト・プロセッサ・ノードのそれぞれに
P個のプロセスが含まれ、各ノードのP個のプロセスの
すべてが、他のすべてのノードのすべてのプロセスと通
信することを望む場合に、reliable connectionサービ
スでは、各ノードにP2×(N−1)個のキュー対が必
要になる。これに比べて、コネクションレスのreliable
datagramサービスでは、正確に同一の数の通信のため
に、各ノードでP個のキュー対+(N−1)個のEEコ
ンテキストだけが必要である。
In the Reliable datagram service, a local end-to-end (EE) context is associated with only one remote end-to-end context. The reliable datagram service allows a client process in one queue pair to communicate with any other queue pair on any other remote node. In the receive work queue, reliable datag
The ram service allows incoming messages from any outgoing work queue on any other remote node. Because reliable datagram services are connectionless, scalability is significantly improved with reliable datagram services. Therefore, an end node having a fixed number of queue pairs is a reliable c
A much larger number of processes and end nodes using reliable datagram services can be communicated than with the onnection transport service. For example, if each of the N host processor nodes contains P processes, and all of the P processes at each node want to communicate with all the processes at all other nodes, In the reliable connection service, each node requires P 2 × (N−1) queue pairs. In comparison, connectionless reliable
The datagram service requires only P queue pairs + (N-1) EE contexts at each node for exactly the same number of communications.

【0039】unreliable datagramサービスは、コネク
ションレスである。unreliable datagramサービスは、
管理アプリケーションによって、新しいスイッチ、ルー
タ、およびエンドノードを発見し、所与の分散コンピュ
ータ・システムに統合するのに使用される。unreliable
datagramサービスは、reliable connectionサービスお
よびreliable datagramサービスの信頼性保証を提供し
ない。したがって、unreliable datagramサービスは、
各エンドノードで維持される、より少ない状態情報を用
いて動作する。次に、図5に移ると、本発明の好ましい
実施形態による、データ・パケットの図が示されてい
る。メッセージ・データ500には、データ・セグメン
ト1 502、データ・セグメント2 504、および
データ・セグメント3 506が含まれ、これらは、図
4に示されたデータ・セグメントに類似する。この例で
は、これらのデータ・セグメントがパケット508を形
成し、パケット508は、データ・パケット512内の
パケット・ペイロード510に置かれる。さらに、デー
タ・パケット512に、エラー検査に使用されるCRC
514が含まれる。さらに、経路指定ヘッダ516およ
びトランスポート・ヘッダ518が、データ・パケット
512内に存在する。経路指定ヘッダ516は、データ
・パケット512のソース・ポートおよびデスティネー
ション・ポートを識別するのに使用される。この例のト
ランスポート・ヘッダ518では、データ・パケット5
12のデスティネーション・キュー対が指定される。
The unreliable datagram service is connectionless. unreliable datagram service
Used by management applications to discover new switches, routers, and end nodes and integrate them into a given distributed computer system. unreliable
The datagram service does not provide reliable connection service or reliable datagram service reliability guarantee. Therefore, the unreliable datagram service
It operates with less state information maintained at each end node. Turning now to FIG. 5, a diagram of a data packet is shown in accordance with a preferred embodiment of the present invention. Message data 500 includes data segment 1 502, data segment 2 504, and data segment 3 506, which are similar to the data segments shown in FIG. In this example, these data segments form packet 508, which is placed in packet payload 510 within data packet 512. In addition, the data packet 512 may include a CRC used for error checking.
514 are included. In addition, a routing header 516 and a transport header 518 are present in the data packet 512. The routing header 516 is used to identify the source port and the destination port of the data packet 512. In the transport header 518 in this example, the data packet 5
Twelve destination queue pairs are designated.

【0040】さらに、トランスポート・ヘッダ518
は、データ・パケット512に関する、命令コード、パ
ケット・シーケンス番号、および区画などの情報も提供
する。命令コードによって、パケットが、メッセージの
先頭、最後、中間、または唯一のパケットのどれである
かが識別される。命令コードによって、動作が送信RD
MAの書込、読取、またはアトミックのどれであるかも
指定される。パケット・シーケンス番号は、通信が確立
される時に初期化され、キュー対が新しいパケットを作
成するたびに増分される。エンドノードのポートは、区
画と称する1つまたは複数のおそらくはオーバーラップ
する組のメンバになるように構成することができる。
Further, the transport header 518
Also provides information about the data packet 512, such as instruction code, packet sequence number, and partition. The opcode identifies whether the packet is the beginning, end, middle, or only packet of a message. Operation is transmitted RD according to the instruction code
It is also specified whether it is an MA write, read, or atomic. The packet sequence number is initialized when communication is established and is incremented each time a queue pair creates a new packet. The ports of the end nodes can be configured to be members of one or more possibly overlapping sets called partitions.

【0041】信頼できるトランスポート・サービスが使
用される場合に、要求パケットがそのデスティネーショ
ン・エンドノードに達した時に、デスティネーション・
エンドノードが肯定応答パケットを使用して、要求パケ
ットがデスティネーションで検証され、受け入れられた
ことを要求パケット送信側に知らせる。肯定応答パケッ
トは、1つまたは複数の有効で受け入れられた要求パケ
ットを肯定応答する。要求側は、肯定応答を受信する前
に、複数の保留中の要求パケットを有することができ
る。一実施形態では、複数の保留中のメッセージの数
が、QPを作成する時に決定される。
When a reliable transport service is used, when the request packet reaches its destination end node, the destination
The end node uses the acknowledgment packet to inform the request packet sender that the request packet has been verified at the destination and accepted. The acknowledgment packet acknowledges one or more valid and accepted request packets. The requester may have multiple pending request packets before receiving the acknowledgment. In one embodiment, the number of multiple pending messages is determined when creating the QP.

【0042】本発明は、データを要求する要求発行者
と、要求されたデータを要求発行者に送り返す応答側と
の間のデータの転送を管理する機構を提供する。本発明
は、送信側と、データに関する要求を前に送っていない
受信側との間のデータの転送の管理も提供する。これら
の機構は、要求発行者および応答側、または送信側およ
び受信側のプロセスを介すると同時に、管理データグラ
ム(MAD)と称するunreliable datagramを使用して
信頼できるデータ転送をもたらすためにデータ・パケッ
ト内にフィールドを配置することによって、実施され
る。要求側がデータを要求する機構に、要求発行者が照
会またはデータの要求を送信することが含まれる。この
場合、応答のサイズ、データの量が、未知である。この
要求には、応答で返されるデータを処理するために要求
発行者側で使用可能なバッファ・スペースの量が含まれ
る。応答側は、要求に応答するデータを含むデータ・パ
ケットを送信することによって応答する。これらの例で
は、データが、MADのシーケンスに含まれる。MAD
のシーケンスで送信されるデータの量は、要求発行者側
で使用可能なバッファ・スペースの量を超えない。すべ
てのデータをデータ・パケットの単一のシーケンスで送
信するのではなく、この形で一連のMADが送信され
る。これらのデータ・パケットのシーケンスを、サブシ
ーケンスとも称する。
The present invention provides a mechanism for managing the transfer of data between a requester requesting data and a responder sending the requested data back to the requester. The present invention also provides for managing the transfer of data between a sender and a receiver that has not previously sent a request for data. These mechanisms use data packets to provide reliable data transfer through requester and responder or sender and receiver processes while using unreliable datagrams referred to as managed datagrams (MADs). This is implemented by placing the fields within. The mechanism by which the requester requests data includes the request issuer sending a query or request for data. In this case, the size of the response and the amount of data are unknown. The request includes the amount of buffer space available at the requestor to process the data returned in the response. The responder responds by sending a data packet containing data that responds to the request. In these examples, the data is included in the sequence of the MAD. MAD
Does not exceed the amount of buffer space available at the requestor. Instead of transmitting all data in a single sequence of data packets, a series of MADs is transmitted in this manner. These sequences of data packets are also called subsequences.

【0043】サブシーケンスを送信した後に、応答側
は、次のサブシーケンスの送信の前に、前のサブシーケ
ンスの正しい受信とバッファ・スペースの可用性を示す
応答を待つ。エラーが発生した場合には、応答全体を再
送信するのではなく、サブシーケンスを再送信すること
ができる。
After transmitting a subsequence, the responder waits for a response indicating the correct reception of the previous subsequence and the availability of buffer space before transmitting the next subsequence. If an error occurs, the subsequence can be retransmitted instead of retransmitting the entire response.

【0044】さらに、バッファ・スペースの量を変更す
ることができ、使用可能なバッファ・スペースの量のこ
の変更を、要求発行者からの応答に反映することができ
る。また、最後のデータ・パケットには、使用可能バッ
ファ・スペースの量までデータが含まれない場合があ
る。言い換えると、このデータ・パケットには、使用可
能バッファ・スペースの量より少ないデータが含まれる
場合がある。そのような場合には、データ・パケット内
のフラグメント・フラグをセットして、データ・パケッ
トがどれほど満杯であるかを示し、現在のパケットを、
要求に応答するデータを含む最後に送信されるデータ・
パケットとして識別することができる。
Furthermore, the amount of buffer space can be changed, and this change in the amount of available buffer space can be reflected in the response from the requestor. Also, the last data packet may not contain data up to the amount of available buffer space. In other words, this data packet may contain less data than the amount of available buffer space. In such a case, the fragment flag in the data packet is set to indicate how full the data packet is, and the current packet is
Last transmitted data, including data responding to requests
It can be identified as a packet.

【0045】次に図6に移ると、本発明の好ましい実施
形態による、MADの図が示されている。MAD600
は、図5のパケット・ペイロード510などの、データ
・パケットのパケット・ペイロード・フィールドの例で
ある。セグメント番号フィールド602、ペイロード長
フィールド604、フラグメント・フラグ・フィールド
606、およびウィンドウ・パラメータ・フィールド6
08は、要求発行者と応答側の間の信頼できるデータ転
送をもたらすのに使用される追加フィールドである。こ
れらの例では、要求発行者を、図1のホスト・プロセッ
サ・ノード102とすることができ、応答側を、図1の
RAIDサブシステム・ノード106とすることができ
る。
Turning now to FIG. 6, a diagram of a MAD according to a preferred embodiment of the present invention is shown. MAD600
Is an example of a packet payload field of a data packet, such as the packet payload 510 of FIG. Segment number field 602, payload length field 604, fragment flag field 606, and window parameter field 6
08 is an additional field used to provide reliable data transfer between the requester and responder. In these examples, the request issuer may be the host processor node 102 of FIG. 1 and the responder may be the RAID subsystem node 106 of FIG.

【0046】セグメント番号フィールド602によっ
て、要求または応答の中でのパケットの相対位置が識別
される。たとえば、特定のパケットを、処理される一連
のパケットの最初のパケットとすることができる。その
代わりに、パケットを、最後のパケット、または他のパ
ケットに配置されたデータに関して途中のどこかのパケ
ットとすることができる。セグメント番号フィールド6
02では、パケット内のデータの相対位置が識別され、
その結果、このデータを、他のデータ・パケットからの
データと共に正しい順序で再組立することができる。
[0046] The segment number field 602 identifies the relative position of the packet in the request or response. For example, a particular packet may be the first packet in a series of packets to be processed. Alternatively, the packet may be the last packet or somewhere in the middle with respect to the data located in other packets. Segment number field 6
02 identifies the relative position of the data in the packet,
As a result, this data can be reassembled in the correct order with data from other data packets.

【0047】これらの例では、ペイロード長フィールド
604が、複数パケット要求および複数パケット応答の
最初のパケットで有効になる。ペイロード長フィールド
604では、複数パケットの要求または応答の全体の期
待される長さが指定される。ペイロード長フィールド
は、動作の最後のパケットにどれだけのデータが含まれ
るかを指定するために、複数パケット送信動作または応
答の最後のパケットでも有効になる。送信されたデータ
の実際の量が、動作の最初のパケットのペイロード長フ
ィールドで示されたデータの期待される量と等しくない
場合に、最後のパケットの有効なデータ・バイトの数を
指定するために、複数パケット動作の最後のパケットに
ペイロード長を含めることが必要である。フラグメント
・フラグ・フィールド606では、パケットが、(1)
要求または応答の最初のパケットまたは最後のパケット
と、(2)パケットの受信を肯定応答する肯定応答パケ
ットと、(3)パケットの再送信を要求する再送信要求
パケットと、(4)トランザクションをリセットするタ
イマを要求するパケットのいずれであるかが指定され
る。
In these examples, the payload length field 604 is valid for the first packet of a multiple packet request and multiple packet response. The payload length field 604 specifies the overall expected length of a multiple packet request or response. The Payload Length field is also valid in the last packet of a multi-packet transmission operation or response to specify how much data is included in the last packet of the operation. To specify the number of valid data bytes in the last packet when the actual amount of data transmitted is not equal to the expected amount of data indicated in the payload length field of the first packet of the operation First, it is necessary to include the payload length in the last packet of the multi-packet operation. In the fragment flag field 606, the packet is (1)
The first or last packet of a request or response, (2) an acknowledgment packet acknowledging receipt of the packet, (3) a retransmission request packet requesting retransmission of the packet, and (4) resetting the transaction. It is specified which of the packets requires a timer to perform.

【0048】ウィンドウ・パラメータ・フィールド60
8では、後続のサブシーケンスについて受信側で使用可
能なバッファ・スペースの量が指定される。ウィンドウ
・パラメータ・フィールドは、要求パケットまたは肯定
応答パケットで有効になる。
Window parameter field 60
At 8, the amount of buffer space available at the receiver for the subsequent subsequence is specified. The window parameter field is valid in request or acknowledgment packets.

【0049】図7および図8に、データの要求に応答し
て送信される、複数パケット要求を含むプロトコルのプ
ロセスを示す。図9および図10に、前の要求を受信し
ない、複数パケット・メッセージの送信を含むプロトコ
ルのプロセスを示す。
FIGS. 7 and 8 show the process of a protocol that includes a multiple packet request and is transmitted in response to a request for data. 9 and 10 illustrate the process of a protocol involving the transmission of a multi-packet message without receiving a previous request.

【0050】次に図7に移ると、本発明の好ましい実施
形態による、データの要求および受信に使用されるプロ
セスの流れ図が示されている。図7に示されたプロセス
は、要求発行者側で実施することができる。
Turning now to FIG. 7, a flowchart of a process used for requesting and receiving data is shown in accordance with a preferred embodiment of the present invention. The process shown in FIG. 7 can be performed on the request issuer side.

【0051】プロセスは、要求を送信することによって
開始される(ステップ700)。この要求には、要求発
行者が、ウィンドウ・フィールドを含め、これによっ
て、サブシーケンスで送信することができるデータのブ
ロックの処理に使用可能なバッファ・スペースまたは他
のメモリ・スペースの量を指定する。次に、タイマを始
動する(ステップ702)。タイマを始動した後に、サ
ブシーケンスを受信した場合には、肯定応答を送信する
(ステップ704)。この肯定応答では、サブシーケン
スの受信を肯定応答する。その後、要求全体の最後のデ
ータ・パケットを受信したかどうかに関する判定を行う
(ステップ706)。そのような識別は、図6のフラグ
メント・フラグ・フィールド606などのフラグメント
・フラグ・フィールドに配置されるフラグメント・フラ
グを使用することによって行うことができる。最後のデ
ータ・パケットを受信した場合には、プロセスを終了す
る。
The process begins by sending a request (step 700). In this request, the requester includes a window field, thereby specifying the amount of buffer space or other memory space available for processing blocks of data that can be transmitted in a subsequence. . Next, a timer is started (step 702). If a subsequence is received after starting the timer, an acknowledgment is sent (step 704). This acknowledgment acknowledges receipt of the subsequence. Thereafter, a determination is made as to whether the last data packet of the entire request has been received (step 706). Such identification can be performed by using a fragment flag located in a fragment flag field, such as the fragment flag field 606 of FIG. If the last data packet has been received, the process ends.

【0052】もう一度ステップ702を参照すると、タ
イマを始動した後に、タイムアウトまたはエラーが発生
した場合には、再試行の最大回数を超えたかどうかに関
する判定を行う(ステップ708)。許容される再試行
の最大回数を超えていない場合には、再送信要求を送信
し(ステップ710)、プロセスはステップ702に戻
る。タイムアウトは、タイマが満了した場合に発生す
る。エラーは、データ・パケットが正しく受信されなか
った場合、またはエラー検査の後にデータ・パケットに
エラーが含まれる場合に発生する可能性がある。許容さ
れる再試行の最大回数を超えている場合には、動作に割
り振られたリソースを解放し(ステップ712)、その
後、プロセスが終了する。
Referring again to step 702, if a timeout or error occurs after starting the timer, a determination is made as to whether the maximum number of retries has been exceeded (step 708). If the maximum number of allowed retries has not been exceeded, a retransmission request is sent (step 710) and the process returns to step 702. The timeout occurs when the timer expires. An error can occur if a data packet was not received correctly, or if the data packet contains an error after error checking. If the maximum number of allowed retries has been exceeded, the resources allocated to the operation are released (step 712), with the process terminating thereafter.

【0053】タイマを始動した後に、キープアライブ応
答を受信した場合には、プロセスはステップ702に戻
る。これらの例では、キープアライブ応答は、データを
要求発行者に転送するのに追加の時間が必要である場合
に、応答側から受信される。
If a keep-alive response is received after starting the timer, the process returns to step 702. In these examples, a keep-alive response is received from the responder if additional time is required to transfer the data to the requestor.

【0054】もう一度ステップ706を参照すると、最
後のデータ・パケットを受信していない場合には、プロ
セスはステップ702に戻る。
Referring again to step 706, if the last data packet has not been received, the process returns to step 702.

【0055】次に図8に移ると、本発明の好ましい実施
形態による、データの要求を処理するのに使用されるプ
ロセスの流れ図が示されている。図8に示されたプロセ
スは、これらの例では応答側で実施することができる。
Turning now to FIG. 8, there is illustrated a flowchart of a process used to process a request for data, according to a preferred embodiment of the present invention. The process illustrated in FIG. 8 may be performed on the responder in these examples.

【0056】プロセスは、要求発行者から要求を受信す
ることによって開始される(ステップ800)。次に、
データにアクセスする(ステップ802)。このデータ
は、要求に対応するデータである。アクセスされるデー
タの量は、要求のウィンドウ・フィールドで指定された
長さに等しい。その後、データを送信する(ステップ8
04)。ステップ804で送信されるデータは、ウィン
ドウ・フィールドで指定された、要求発行者によって使
用可能とされたスペースの量までの量のデータを含むサ
ブシーケンスで送信される。さらに、データが、ユーザ
に送信される最後のデータ・パケットに関するものであ
る場合には、フラグメント・フラグをセットして、その
データ・パケットが最後のデータ・パケットであること
を示す。次に、このプロセスは、要求発行者からの肯定
応答を待つ(ステップ806)。肯定応答を受信した場
合には、最後のデータ・パケットを送信したかどうかに
関する判定を行う(ステップ808)。最後のデータ・
パケットを送信した場合には、プロセスが終了する。
The process begins by receiving a request from a request issuer (step 800). next,
Access data (step 802). This data is data corresponding to the request. The amount of data accessed is equal to the length specified in the request's window field. Then, the data is transmitted (step 8).
04). The data transmitted in step 804 is transmitted in a sub-sequence that includes an amount of data up to the amount of space made available by the requestor specified in the window field. Further, if the data is for the last data packet sent to the user, a fragment flag is set to indicate that the data packet is the last data packet. Next, the process waits for an acknowledgment from the requestor (step 806). If an acknowledgment is received, a determination is made as to whether the last data packet has been transmitted (step 808). Last data
If the packet has been sent, the process ends.

【0057】ステップ802をもう一度参照すると、デ
ータにアクセスするのにさらに時間が必要な場合には、
キープアライブを送信し(ステップ810)、プロセス
はステップ802に戻る。
Referring again to step 802, if more time is required to access the data,
A keepalive is sent (step 810) and the process returns to step 802.

【0058】ステップ806をもう一度参照すると、肯
定応答を待っている間に再送信要求を受信した場合に
は、プロセスはステップ804に戻る。この再送信要求
は、要求発行者によって受信されたデータのエラーに応
答して受信される可能性がある。肯定応答を待っている
間にタイムアウトを受け取った場合には、リソースを解
放し(ステップ812)、その後、プロセスが終了す
る。
Referring again to step 806, if a retransmission request is received while waiting for an acknowledgment, the process returns to step 804. This retransmission request may be received in response to an error in the data received by the request issuer. If a timeout is received while waiting for an acknowledgment, resources are released (step 812), and the process ends thereafter.

【0059】次に図9に移ると、本発明の好ましい実施
形態による、前の要求を送信していない送信側からデー
タを受信するのに使用されるプロセスの流れ図が示され
ている。
Turning now to FIG. 9, there is shown a flowchart of a process used to receive data from a sender that has not sent a previous request, according to a preferred embodiment of the present invention.

【0060】プロセスは、最初のサブシーケンスを受信
することによって開始される(ステップ900)。この
最初のサブシーケンスには、デフォルトの量のデータが
含まれ、送信動作に関して送信されるデータの量全体を
指定する情報が含まれる。次に、送信側に肯定応答を送
信する(ステップ902)。タイマを始動する(ステッ
プ904)。ステップ904では、サブシーケンス全体
を受信した場合に、送信側に肯定応答を送り返す(ステ
ップ906)。その後、送信動作全体の最後のデータ・
パケットを受信したかどうかに関する判定を行う(ステ
ップ908)。送信動作全体の最後のデータ・パケット
を受信した場合には、プロセスが終了する。このデータ
・パケットは、データ・パケットの最後のサブシーケン
スの最後のデータ・パケットである。
The process begins by receiving the first subsequence (step 900). This first subsequence contains a default amount of data and contains information specifying the overall amount of data transmitted for the transmission operation. Next, an acknowledgment is transmitted to the transmitting side (step 902). A timer is started (step 904). In step 904, when the entire sub-sequence is received, an acknowledgment is sent back to the transmitting side (step 906). After that, the last data
A determination is made as to whether a packet has been received (step 908). If the last data packet of the entire transmission operation has been received, the process ends. This data packet is the last data packet of the last subsequence of the data packet.

【0061】ステップ904をもう一度参照すると、キ
ープアライブを受信した場合に、プロセスはステップ9
04に戻る。エラーまたはタイムアウトが発生した場合
には、再試行の最大回数を超えたかどうかに関する判定
を行う(ステップ910)。再試行の最大回数を超えて
いない場合には、送信側に再送信要求を送信し(ステッ
プ912)、プロセスはステップ904に戻る。ステッ
プ910で、再試行の最大回数を超えている場合には、
動作に割り振られたすべてのリソースを解放し(ステッ
プ914)、プロセスが終了する。ステップ908をも
う一度参照すると、最後のデータ・パケットを受信して
いない場合には、プロセスはステップ904に戻る。
Referring again to step 904, if a keepalive has been received, the process proceeds to step 9
Return to 04. If an error or timeout has occurred, a determination is made as to whether the maximum number of retries has been exceeded (step 910). If the maximum number of retries has not been exceeded, a retransmission request is sent to the sender (step 912) and the process returns to step 904. In step 910, if the maximum number of retries has been exceeded,
Release all resources allocated to the operation (step 914) and the process ends. Referring back to step 908, if the last data packet has not been received, the process returns to step 904.

【0062】次に図10に移ると、本発明の好ましい実
施形態による、それに関する前の要求が送信されていな
いデータを受信するのに使用されるプロセスの流れ図が
示されている。
Turning now to FIG. 10, there is shown a flowchart of a process used to receive data for which a previous request has not been transmitted, in accordance with a preferred embodiment of the present invention.

【0063】プロセスは、送信側が最初のサブシーケン
スを送信することによって開始される(ステップ100
0)。このサブシーケンスには、デフォルトの量のデー
タが含まれる。次に、タイマを始動して、肯定応答の受
信の時間を計る(ステップ1002)。肯定応答を受信
した場合には、追加データにアクセスする(ステップ1
004)。アクセスされるデータの量は、肯定応答パケ
ットのウィンドウ・パラメータ・フィールドで指定され
た値に等しい。データが、設定された時間以内にアクセ
スされる場合には、データを送信し(ステップ100
6)、プロセスは、肯定応答の受信を待つ(ステップ1
008)。データは、サブシーケンス内で送信され、サ
ブシーケンス内のデータの量は、受信側から受信された
最初の肯定応答パケットのウィンドウ・パラメータ・フ
ィールドで示される、受信側で使用可能なメモリまたは
バッファ・スペース以下になる。送信したデータについ
て肯定応答を受信する場合には、最後のパケットを送信
したかどうかに関する判定を行う(ステップ101
0)。最後のパケットを送信した場合には、プロセスが
終了する。
The process is started by the sender transmitting the first subsequence (step 100).
0). This subsequence contains a default amount of data. Next, a timer is started to time the receipt of the acknowledgment (step 1002). If an acknowledgment is received, additional data is accessed (step 1).
004). The amount of data accessed is equal to the value specified in the window parameter field of the acknowledgment packet. If the data is accessed within the set time, the data is transmitted (step 100).
6) The process waits for an acknowledgment (step 1)
008). The data is transmitted in a sub-sequence and the amount of data in the sub-sequence is determined by the memory or buffer available at the receiver, as indicated by the window parameter field of the first acknowledgment packet received from the receiver. Less than space. If an acknowledgment is received for the transmitted data, a determination is made as to whether the last packet has been transmitted (step 101).
0). If the last packet has been sent, the process ends.

【0064】ステップ1002をもう一度参照すると、
タイムアウトが発生する場合に、再試行の最大回数を超
えたかどうかに関する判定を行う(ステップ101
2)。再試行の最大回数を超えていない場合には、動作
を再試行し(ステップ1014)、プロセスはステップ
1000に戻る。許容される再試行の最大回数を超えて
いる場合には、プロセスが終了し、動作に割り振られた
すべてのリソースが解放される。
Referring again to step 1002,
If a timeout occurs, a determination is made as to whether the maximum number of retries has been exceeded (step 101).
2). If the maximum number of retries has not been exceeded, the operation is retried (step 1014) and the process returns to step 1000. If the maximum number of retries allowed has been exceeded, the process is terminated and all resources allocated for the operation are released.

【0065】ステップ1004をもう一度参照すると、
データのアクセスにさらに時間が必要な場合には、キー
プアライブ応答を受信側に送信し(ステップ101
6)、プロセスはステップ1004に戻る。
Referring again to step 1004,
If more time is required to access the data, a keep-alive response is sent to the receiving side (step 101).
6) The process returns to step 1004.

【0066】ステップ1008をもう一度参照すると、
肯定応答または再送信要求のいずれかを受信する前にタ
イムアウトが発生した場合に、動作が終了し、リソース
が、送信側で解放される(ステップ1018)。ステッ
プ1012で再試行の最大回数を超えた場合にも、プロ
セスはステップ1018に進む。
Referring again to step 1008,
If a timeout occurs before receiving either an acknowledgment or a retransmission request, the operation ends and resources are released at the sender (step 1018). If the maximum number of retries is exceeded in step 1012, the process also proceeds to step 1018.

【0067】ステップ1010をもう一度参照すると、
最後のデータ・パケットを送信していない場合には、プ
ロセスはステップ1004に戻る。
Referring again to step 1010,
If the last data packet has not been transmitted, the process returns to step 1004.

【0068】したがって、本発明は、データを転送する
方法、装置、およびコンピュータ実施される命令を提供
する。この機構は、MADを使用する信頼できる転送を
提供する。データは、受信側でデータの処理に使用可能
なメモリ・スペースを超えない量で送信される。追加デ
ータは、データが処理されたことの肯定応答が受信され
た時に送信される。この形で、要求に応答するデータ
が、単一のMADではなく複数のMADからなるサブシ
ーケンスで送信される。
Accordingly, the present invention provides a method, apparatus, and computer-implemented instructions for transferring data. This mechanism provides a reliable transfer using MAD. The data is transmitted in an amount that does not exceed the memory space available for processing the data at the receiving end. Additional data is sent when an acknowledgment is received that the data has been processed. In this manner, the data responding to the request is transmitted in a sub-sequence of multiple MADs instead of a single MAD.

【0069】完全に機能するデータ処理システムに関し
て本発明を説明したが、本発明のプロセスを、命令のコ
ンピュータ可読媒体の形およびさまざまな形で配布する
ことができることと、本発明が、配布の実行に実際に使
用される信号担持媒体の特定の種類に無関係に同等に適
用されることを、当業者が諒解するであろうことに留意
することが重要である。コンピュータ可読媒体の例に
は、フロッピー(R)ディスク、ハード・ディスク、R
AM、CD−ROM、DVD−ROMなどの記録可能型
媒体と、ディジタル通信リンク、アナログ通信リンク、
たとえば無線伝送および光波伝送などの伝送形態を使用
する有線通信リンクまたは無線通信リンクなどの伝送型
媒体が含まれる。コンピュータ可読媒体は、特定のデー
タ処理システムでの実際の使用のためにデコードされる
コード化されたフォーマットの形をとることができる。
Although the invention has been described in terms of a fully functioning data processing system, it should be understood that the process of the invention can be distributed in the form of computer readable media of instructions and in various forms, and that the invention has been described in terms of performing the distribution. It is important to note that those skilled in the art will appreciate that the same applies irrespective of the particular type of signal-bearing medium actually used. Examples of computer readable media include a floppy disk, a hard disk,
Recordable media such as AM, CD-ROM, DVD-ROM, digital communication link, analog communication link,
Transmission media such as a wired or wireless communication link using transmission forms such as wireless and lightwave transmission are included. The computer readable medium may take the form of an encoded format that is decoded for actual use in a particular data processing system.

【0070】本発明の説明は、例示と説明のために提示
されたものであり、網羅的であることまたは開示された
形態に本発明を宣言することを意図されてはいない。多
くの修正形態および変形形態が、当業者には明白であろ
う。実施形態は、本発明の原理、実用的な応用例を最も
よく説明するため、および、当業者が、企図された特定
の使用に適するさまざまな修正を加えたさまざまな実施
形態のために本発明を理解できるようにするために、選
択され、説明された。
The description of the present invention has been presented for purposes of illustration and description, and is not intended to be exhaustive or to declare the invention in the form disclosed. Many modifications and variations will be apparent to those skilled in the art. The embodiments are described in order to best explain the principles of the invention, practical applications, and for those skilled in the art to make various modifications with various modifications suitable for the particular use contemplated. Was selected and described in order to be able to understand.

【0071】まとめとして、本発明の構成に関して以下
の事項を開示する。
In summary, the following matters are disclosed regarding the configuration of the present invention.

【0072】(1)データを転送する、データ処理シス
テムにおける方法であって、要求を送信するステップで
あって、前記要求が、前記データ処理システムで使用可
能な処理スペースの量を含む、ステップと、使用可能な
処理スペースの前記量が空くたびに前記要求に応答して
データ・パケットのサブシーケンスの組からデータ・パ
ケットのサブシーケンスを受信するステップであって、
データ・パケットのサブシーケンスの前記組内の各サブ
シーケンス内のデータが、使用可能な処理スペースの前
記量におさまる、ステップとを含む方法。 (2)前記データ・パケットが、管理データグラムであ
る、上記(1)に記載の方法。 (3)データ・パケットのサブシーケンスの前記組内の
データ・パケットの特定のサブシーケンスが、使用可能
な処理スペースの前記量より少ない量のデータを有す
る、上記(1)に記載の方法。 (4)サブシーケンス内の特定のデータ・パケットが、
前記特定のデータ・パケットがデータ転送動作の最初の
データ・パケットまたは最後のデータ・パケットである
かどうかを示すフラグメント・フラグを含む、上記
(1)に記載の方法。 (5)特定のデータ・パケットが、データ・パケットの
サブシーケンスの前記組内の最後のデータ・パケットで
ある、上記(1)に記載の方法。 (6)データ・パケットのサブシーケンスの前記組内の
各サブシーケンスが、異なる量のデータを有する、上記
(1)に記載の方法。 (7)前記データ・パケットが、セグメント番号を含
む、上記(1)に記載の方法。 (8)前記データ・パケット内のデータを正しい順序に
再組立するステップをさらに含む、上記(1)に記載の
方法。 (9)データ・パケットのサブシーケンスの前記組内の
各データ・パケットが、セグメント番号を含み、前記デ
ータが、前記セグメント番号を使用して再組立される、
上記(8)に記載の方法。 (10)使用可能なスペースの前記量が、前記データ処
理システム内のバッファである、上記(1)に記載の方
法。 (11)使用可能な処理スペースの前記量が、前記デー
タ処理システムのメモリ内で割り振られたバッファであ
る、上記(1)に記載の方法。 (12)データを転送する、データ処理システムにおけ
る方法であって、要求発行者から要求を受信するステッ
プであって、前記要求が、使用可能なスペースの量を含
む、ステップと、前記要求を使用してデータを識別する
ステップと、前記データをデータ・パケットの複数のサ
ブシーケンスに配置するステップであって、サブシーケ
ンスの組内の各サブシーケンスが、使用可能なスペース
の前記量以下の量のデータを保持する、ステップと、前
記要求発行者にデータ・パケットの前記複数のサブシー
ケンスを送信するステップとを含む方法。 (13)データ・パケットの前記複数のサブシーケンス
内の最初のデータ・パケットおよび最後のデータ・パケ
ットが、ペイロード長を含む、上記(12)に記載の方
法。 (14)データ・パケットの前記複数のサブシーケンス
内のデータ・パケットが、前記データ・パケットがデー
タ転送動作について送信される最初のデータ・パケット
または最後のデータ・パケットであるかどうかを示すフ
ラグメント・フラグを含む、上記(12)に記載の方
法。 (15)前記送信するステップが、データ・パケットの
前記複数のサブシーケンス内のデータ・パケットの未送
信のサブシーケンスを前記要求発行者に送信するステッ
プと、使用可能なスペースの前記量が前記要求発行者側
で空きであることを示す応答を監視するステップと、デ
ータ・パケットのもう1つの未送信のサブシーケンスが
データ・パケットの前記複数のサブシーケンス内に存在
することと、前記応答の検出とに応答して、前記送信ス
テップおよび監視ステップを繰り返すステップとを含
む、上記(12)に記載の方法。 (16)データ処理システムであって、バス・システム
と、前記バス・システムに接続された通信ユニットであ
って、データが、前記通信ユニットを使用して送信さ
れ、受信される、通信ユニットと、前記バス・システム
に接続されたメモリであって、命令の組が、前記メモリ
内に配置される、メモリと、前記バス・システムに接続
されたプロセッサ・ユニットであって、前記プロセッサ
・ユニットが、要求を送信するために命令の前記組を実
行し、前記要求が、前記データ処理システムで使用可能
な処理スペースの量を含み、前記プロセッサ・ユニット
が、使用可能な処理スペースの前記量が空きになるたび
に前記要求に応答してデータ・パケットの組からデータ
・パケットのサブシーケンスを受信し、データ・パケッ
トの各サブシーケンス内のデータが、使用可能な処理ス
ペースの前記量におさまる、プロセッサ・ユニットとを
含むデータ処理システム。 (17)前記バス・システムが、主バスおよび副バスを
含む、上記(16)に記載のデータ処理システム。 (18)前記プロセッサ・ユニットが、単一のプロセッ
サを含む、上記(16)に記載のデータ処理システム。 (19)前記プロセッサ・ユニットが、複数のプロセッ
サを含む、上記(16)に記載のデータ処理システム。 (20)前記通信ユニットが、イーサネット(R)アダ
プタである、上記(16)に記載のデータ処理システ
ム。 (21)データ処理システムであって、バス・システム
と、前記バス・システムに接続された通信ユニットであ
って、データが、前記通信ユニットを使用して送信さ
れ、受信される、通信ユニットと、前記バス・システム
に接続されたメモリであって、命令の組が、前記メモリ
内に配置される、メモリと、前記バス・システムに接続
されたプロセッサ・ユニットであって、前記プロセッサ
・ユニットが、要求発行者から要求を受信するために命
令の前記組を実行し、前記要求が、使用可能なスペース
の量を含み、前記プロセッサ・ユニットが、応答を使用
してデータを識別し、前記データをデータ・パケットの
複数のサブシーケンスに配置し、サブシーケンスの前記
組内の各サブシーケンスが、使用可能なスペースの前記
量以下の量のデータを保持し、前記プロセッサ・ユニッ
トが、前記要求発行者にデータ・パケットの前記複数の
サブシーケンスを送信する、プロセッサ・ユニットとを
含むデータ処理システム。 (22)データを転送するデータ処理システムであっ
て、要求を送信する送信手段であって、前記要求が、前
記データ処理システムで使用可能な処理スペースの量を
含む、送信手段と、使用可能な処理スペースの前記量が
空きになるたびに、前記要求に応答して、データ・パケ
ットのサブシーケンスの組からデータ・パケットのサブ
シーケンスを受信する受信手段であって、データ・パケ
ットの各サブシーケンス内のデータが、使用可能な処理
スペースの前記量におさまる、受信手段とを含むデータ
処理システム。 (23)前記データ・パケットが、管理データグラムで
ある、上記(22)に記載のデータ処理システム。 (24)データ・パケットのサブシーケンスの前記組内
の特定のデータ・パケットが、使用可能な処理スペース
の前記量より少ない量のデータを有する、上記(22)
に記載のデータ処理システム。 (25)サブシーケンス内の特定のデータ・パケット
が、前記特定のパケットがデータ転送動作の最初のデー
タ・パケットまたは最後のデータ・パケットであるかど
うかを示すフラグメント・フラグを含む、上記(22)
に記載のデータ処理システム。 (26)前記特定のデータ・パケットが、データ・パケ
ットのサブシーケンスの前記組内の最後のデータ・パケ
ットである、上記(22)に記載のデータ処理システ
ム。 (27)データ・パケットのサブシーケンスの前記組内
の各サブシーケンスが、異なる量のデータを有する、上
記(22)に記載のデータ処理システム。 (28)前記データ・パケットが、セグメント番号を含
む、上記(22)に記載のデータ処理システム。 (29)前記データ・パケット内のデータを正しい順序
に再組立する再組立手段をさらに含む、上記(22)に
記載のデータ処理システム。 (30)データ・パケットのサブシーケンスの前記組内
の各データ・パケットが、セグメント番号を含み、前記
データが、前記セグメント番号を使用して再組立され
る、上記(29)に記載のデータ処理システム。 (31)使用可能なスペースの前記量が、前記データ処
理システム内のバッファである、上記(22)に記載の
データ処理システム。 (32)使用可能な処理スペースの前記量が、前記デー
タ処理システムのメモリ内で割り振られたバッファであ
る、上記(22)に記載のデータ処理システム。 (33)データを転送するデータ処理システムであっ
て、要求発行者から要求を受信する受信手段であって、
前記要求が、使用可能なスペースの量を含む、受信手段
と、応答を使用してデータを識別する識別手段と、前記
データをデータ・パケットの複数のサブシーケンスに配
置する配置手段であって、データ・パケットの前記複数
のサブシーケンス内の各サブシーケンスが、使用可能な
スペースの前記量以下の量のデータを保持する、配置手
段と、前記要求発行者にデータ・パケットの前記複数の
サブシーケンスを送信する送信手段とを含むデータ処理
システム。 (34)データ・パケットの前記複数のサブシーケンス
内の最初のデータ・パケットおよび最後のデータ・パケ
ットが、ペイロード長を含む、上記(33)に記載のデ
ータ処理システム。 (35)データ・パケットの前記複数のサブシーケンス
内のデータ・パケットが、前記データ・パケットがデー
タ転送動作について送信される最初のデータ・パケット
または最後のデータ・パケットであるかどうかを示すフ
ラグメント・フラグを含む、上記(33)に記載のデー
タ処理システム。 (36)前記送信手段が、データ・パケットの前記複数
のサブシーケンス内の未送信のデータ・パケットを前記
要求発行者に送信する送信手段と、前記使用可能なスペ
ースの量が前記要求発行者側で空きであることを示す応
答を監視する監視手段と、もう1つの未送信のデータ・
パケットがデータ・パケットの前記複数のサブシーケン
ス内に存在することと、前記応答の検出とに応答して、
前記送信手段および監視手段の開始を繰り返す繰返し手
段とを含む、上記(33)に記載のデータ処理システ
ム。 (37)データ処理システム内でデータを転送するのに
使用される、コンピュータ可読媒体内のコンピュータ・
プログラム製品であって、要求を送信する第1命令であ
って、前記要求が、前記データ処理システムで使用可能
な処理スペースの量を含む、第1命令と、使用可能な処
理スペースの前記量が空くたびに前記要求に応答してデ
ータ・パケットのサブシーケンスの組からデータ・パケ
ットのサブシーケンスを受信する第2命令であって、デ
ータ・パケットの各サブシーケンス内のデータが、使用
可能な処理スペースの前記量におさまる、第2命令とを
含むコンピュータ・プログラム製品。 (38)データ処理システム内でデータを転送する、コ
ンピュータ可読媒体内のコンピュータ・プログラム製品
であって、要求発行者から要求を受信する第1命令であ
って、前記要求が、使用可能なスペースの量を含む、第
1命令と、応答を使用してデータを識別する第2命令
と、前記データをデータ・パケットの複数のサブシーケ
ンスに配置する第3命令であって、サブシーケンスの組
内の各サブシーケンスが、使用可能なスペースの前記量
以下の量のデータを保持する、第3命令と、前記要求発
行者にデータ・パケットの前記複数のサブシーケンスを
送信する第4命令とを含むコンピュータ・プログラム製
品。
(1) A method in a data processing system for transferring data, the method comprising: sending a request, the request including an amount of processing space available in the data processing system. Receiving a sub-sequence of data packets from a set of sub-sequences of data packets in response to said request each time said amount of available processing space becomes available,
The data in each subsequence in said set of subsequences of data packets fit into said amount of available processing space. (2) The method according to (1), wherein the data packet is a management datagram. (3) The method of (1) above, wherein a particular sub-sequence of data packets in the set of sub-sequences of data packets has less data than the amount of available processing space. (4) The specific data packet in the subsequence is
The method of claim 1, further comprising a fragment flag indicating whether the particular data packet is the first data packet or the last data packet of a data transfer operation. (5) The method of (1) above, wherein the particular data packet is the last data packet in the set of data packet sub-sequences. (6) The method of (1) above, wherein each subsequence in the set of subsequences of data packets has a different amount of data. (7) The method according to (1), wherein the data packet includes a segment number. (8) The method according to (1), further comprising the step of reassembling the data in the data packet into a correct order. (9) each data packet in the set of sub-sequences of data packets includes a segment number, and the data is reassembled using the segment number;
The method according to the above (8). (10) The method of (1) above, wherein the amount of available space is a buffer in the data processing system. (11) The method of (1) above, wherein the amount of available processing space is a buffer allocated in memory of the data processing system. (12) A method in a data processing system for transferring data, comprising: receiving a request from a request issuer, wherein the request includes an amount of available space; and using the request. Identifying the data and placing the data in a plurality of sub-sequences of data packets, each sub-sequence in the set of sub-sequences having an amount less than or equal to the amount of available space. Retaining the data; and transmitting the plurality of sub-sequences of data packets to the requestor. (13) The method according to (12), wherein the first data packet and the last data packet in the plurality of sub-sequences of data packets include a payload length. (14) A fragment packet indicating whether the data packet in the plurality of sub-sequences of a data packet is the first data packet or the last data packet transmitted for a data transfer operation. The method according to (12), including a flag. (15) the transmitting comprises: transmitting an untransmitted sub-sequence of data packets in the plurality of sub-sequences of data packets to the requestor; Monitoring for a response at the issuer indicating that it is free, detecting that another untransmitted subsequence of the data packet is present in the plurality of subsequences of the data packet, and detecting the response Repeating the transmitting step and the monitoring step in response to the method. (16) A data processing system, comprising: a bus system; and a communication unit connected to the bus system, wherein data is transmitted and received using the communication unit. A memory connected to the bus system, wherein the set of instructions is located in the memory; and a processor unit connected to the bus system, wherein the processor unit comprises: Executing the set of instructions to send a request, wherein the request includes an amount of processing space available in the data processing system and the processor unit causes the amount of available processing space to become free. Receiving a sub-sequence of data packets from the set of data packets in response to said request Data of the inner is fit to the amount of available processing space, data processing system including a processor unit. (17) The data processing system according to (16), wherein the bus system includes a main bus and a sub bus. (18) The data processing system according to (16), wherein the processor unit includes a single processor. (19) The data processing system according to (16), wherein the processor unit includes a plurality of processors. (20) The data processing system according to (16), wherein the communication unit is an Ethernet® adapter. (21) A data processing system, comprising: a bus system; and a communication unit connected to the bus system, wherein data is transmitted and received using the communication unit. A memory connected to the bus system, wherein the set of instructions is located in the memory; and a processor unit connected to the bus system, wherein the processor unit comprises: Executing the set of instructions to receive a request from a request issuer, wherein the request includes an amount of available space, and wherein the processor unit identifies data using a response, and A plurality of sub-sequences of data packets, wherein each sub-sequence in said set of sub-sequences has less than said amount of available space Held, the processor unit, for transmitting the plurality of sub-sequence of the data packets to the requestor, the data processing system including a processor unit. (22) A data processing system for transferring data, the transmitting unit transmitting a request, wherein the request includes an amount of processing space available in the data processing system; Receiving means for receiving a sub-sequence of data packets from a set of sub-sequences of data packets in response to said request each time said amount of processing space becomes free, comprising: Receiving means wherein the data within the data fits into said amount of available processing space. (23) The data processing system according to (22), wherein the data packet is a management datagram. (24) The specific data packet in the set of sub-sequences of data packets has a smaller amount of data than the amount of available processing space.
A data processing system according to claim 1. (22) The specific data packet in the sub-sequence includes a fragment flag indicating whether the specific packet is the first data packet or the last data packet of a data transfer operation.
A data processing system according to claim 1. (26) The data processing system according to (22), wherein the specific data packet is the last data packet in the set of data packet sub-sequences. (27) The data processing system according to (22), wherein each subsequence in the set of subsequences of data packets has a different amount of data. (28) The data processing system according to (22), wherein the data packet includes a segment number. (29) The data processing system according to (22), further including reassembly means for reassembling data in the data packet in a correct order. (30) The data processing of (29), wherein each data packet in the set of sub-sequences of data packets includes a segment number, and wherein the data is reassembled using the segment number. system. (31) The data processing system according to (22), wherein the amount of available space is a buffer in the data processing system. (32) The data processing system according to (22), wherein the amount of available processing space is a buffer allocated in a memory of the data processing system. (33) A data processing system for transferring data, a receiving means for receiving a request from a request issuer,
Receiving means including the amount of available space, identifying means for identifying data using a response, and arranging means for arranging the data in a plurality of subsequences of data packets; Arranging means, wherein each subsequence in the plurality of subsequences of data packets holds an amount of data less than or equal to the amount of available space; and the plurality of subsequences of data packets to the requestor. And a transmission means for transmitting the data. (34) The data processing system according to (33), wherein the first data packet and the last data packet in the plurality of sub-sequences of a data packet include a payload length. (35) A fragment indicating whether the data packet in the plurality of sub-sequences of a data packet is the first data packet or the last data packet transmitted for a data transfer operation. The data processing system according to (33), including a flag. (36) transmitting means for transmitting an untransmitted data packet in the plurality of sub-sequences of data packets to the request issuer, and wherein the amount of available space is on the request issuer side. Monitoring means for monitoring a response indicating that the data is free, and another untransmitted data
In response to the packet being present in the plurality of sub-sequences of a data packet and detecting the response,
The data processing system according to (33), further including: a repeating unit that repeats the start of the transmitting unit and the monitoring unit. (37) A computer in a computer-readable medium used to transfer data in the data processing system.
A program product, wherein the first instruction to send a request, wherein the request comprises an amount of processing space available in the data processing system; A second instruction for receiving a sub-sequence of data packets from the set of sub-sequences of data packets in response to the request each time the data is available, wherein the data in each sub-sequence of data packets is available for processing A second instruction that fits in said amount of space. (38) A computer program product in a computer readable medium for transferring data in a data processing system, the first instruction receiving a request from a request issuer, the request comprising: A first instruction that includes an amount, a second instruction that identifies data using the response, and a third instruction that places the data in a plurality of subsequences of the data packet. A computer including a third instruction wherein each subsequence holds less than or equal to the amount of available space, and a fourth instruction for transmitting the plurality of subsequences of data packets to the requestor.・ Program products.

【図面の簡単な説明】[Brief description of the drawings]

【図1】本発明の好ましい実施形態による、ネットワー
ク・グローバル変更コンピューティング・システムを示
す図である。
FIG. 1 illustrates a network global change computing system according to a preferred embodiment of the present invention.

【図2】本発明の好ましい実施形態による、ホスト・プ
ロセッサ・ノードの機能ブロック図である。
FIG. 2 is a functional block diagram of a host processor node according to a preferred embodiment of the present invention.

【図3】本発明の好ましい実施形態による、ホスト・チ
ャネル・アダプタを示す図である。
FIG. 3 illustrates a host channel adapter according to a preferred embodiment of the present invention.

【図4】本発明の好ましい実施形態による、作業要求の
処理を示す図である。
FIG. 4 illustrates the processing of a work request according to a preferred embodiment of the present invention.

【図5】本発明の好ましい実施形態による、データ・パ
ケットを示す図である。
FIG. 5 illustrates a data packet according to a preferred embodiment of the present invention.

【図6】本発明の好ましい実施形態による、管理データ
グラム・データ・パケットを示す図である。
FIG. 6 illustrates a management datagram data packet according to a preferred embodiment of the present invention.

【図7】本発明の好ましい実施形態による、データの要
求および受信に使用されるプロセスの流れ図である。
FIG. 7 is a flowchart of a process used for requesting and receiving data, according to a preferred embodiment of the present invention.

【図8】本発明の好ましい実施形態による、データの要
求を処理するのに使用されるプロセスの流れ図である。
FIG. 8 is a flowchart of a process used to process a request for data, according to a preferred embodiment of the present invention.

【図9】本発明の好ましい実施形態による、データに関
する前の要求を送信せずに、送信側からデータを受信す
るのに使用されるプロセスの流れ図である。
FIG. 9 is a flowchart of a process used to receive data from a sender without sending a previous request for data, according to a preferred embodiment of the present invention.

【図10】本発明の好ましい実施形態による、データに
関する前の要求を受信せずにデータを送信するのに使用
されるプロセスの流れ図である。
FIG. 10 is a flowchart of a process used to send data without receiving a previous request for data, according to a preferred embodiment of the present invention.

【符号の説明】[Explanation of symbols]

500 メッセージ・データ 502 データ・セグメント1 504 データ・セグメント2 506 データ・セグメント3 508 パケット 510 パケット・ペイロード 512 データ・パケット 514 CRC 516 経路指定ヘッダ 518 トランスポート・ヘッダ 600 MAD 602 セグメント番号フィールド 604 ペイロード長フィールド 606 フラグメント・フラグ・フィールド 608 ウィンドウ・パラメータ・フィールド 500 message data 502 data segment 1 504 data segment 2 506 data segment 3 508 packet 510 packet payload 512 data packet 514 CRC 516 routing header 518 transport header 600 MAD 602 segment number field 604 payload length field 606 Fragment flag field 608 Window parameter field

───────────────────────────────────────────────────── フロントページの続き (72)発明者 ギレス・ロジャー・フレイツァー アメリカ合衆国78703 テキサス州オース チン ノーサンバーランド・ロード 1604 (72)発明者 グレゴリー・フランシス・フィスター アメリカ合衆国78746 テキサス州オース チン サー・アイバー・コーブ 5905 (72)発明者 レナト・ジョン・レシオ アメリカ合衆国78759 テキサス州オース チン ウィンペグ・コーブ 6707 Fターム(参考) 5B089 GA02 GB01 JA11 JB14 KD09 5K030 HA08 HB28 JA05 KA03 LA01 LC01 MB15 5K033 BA04 CB01 CB06 CC01 DB12 5K034 AA05 HH50 MM24  ────────────────────────────────────────────────── ─── Continued on the front page (72) Inventor Gilles Roger Freitzer United States 78703 Austin, Texas Northumberland Road 1604 (72) Inventor Gregory Francis Pfister United States 78746 Austin, TX Sir Iver Cove 5905 (72) Inventor Renato John Ratio United States 78759 Austin, Texas Wimpeg Cove 6707 F-term (reference) 5B089 GA02 GB01 JA11 JB14 KD09 5K030 HA08 HB28 JA05 KA03 LA01 LC01 MB15 5K033 BA04 CB01 CB06 CC01 DB12 5K03 A

Claims (38)

【特許請求の範囲】[Claims] 【請求項1】データを転送する、データ処理システムに
おける方法であって、 要求を送信するステップであって、前記要求が、前記デ
ータ処理システムで使用可能な処理スペースの量を含
む、ステップと、 使用可能な処理スペースの前記量が空くたびに前記要求
に応答してデータ・パケットのサブシーケンスの組から
データ・パケットのサブシーケンスを受信するステップ
であって、データ・パケットのサブシーケンスの前記組
内の各サブシーケンス内のデータが、使用可能な処理ス
ペースの前記量におさまる、ステップとを含む方法。
1. A method in a data processing system for transferring data, the method comprising: sending a request, the request including an amount of processing space available in the data processing system; Receiving a sub-sequence of data packets from a set of sub-sequences of data packets in response to the request each time the amount of available processing space becomes available, wherein the set of sub-sequences of data packets is The data in each subsequence within the said amount of available processing space.
【請求項2】前記データ・パケットが、管理データグラ
ムである、請求項1に記載の方法。
2. The method of claim 1, wherein said data packet is a management datagram.
【請求項3】データ・パケットのサブシーケンスの前記
組内のデータ・パケットの特定のサブシーケンスが、使
用可能な処理スペースの前記量より少ない量のデータを
有する、請求項1に記載の方法。
3. The method of claim 1, wherein a particular subsequence of data packets in the set of data packet subsequences has less data than the amount of available processing space.
【請求項4】サブシーケンス内の特定のデータ・パケッ
トが、前記特定のデータ・パケットがデータ転送動作の
最初のデータ・パケットまたは最後のデータ・パケット
であるかどうかを示すフラグメント・フラグを含む、請
求項1に記載の方法。
4. A particular data packet in the subsequence includes a fragment flag indicating whether the particular data packet is the first data packet or the last data packet of a data transfer operation. The method of claim 1.
【請求項5】特定のデータ・パケットが、データ・パケ
ットのサブシーケンスの前記組内の最後のデータ・パケ
ットである、請求項1に記載の方法。
5. The method of claim 1, wherein the particular data packet is the last data packet in the set of data packet subsequences.
【請求項6】データ・パケットのサブシーケンスの前記
組内の各サブシーケンスが、異なる量のデータを有す
る、請求項1に記載の方法。
6. The method of claim 1, wherein each subsequence in the set of subsequences of data packets has a different amount of data.
【請求項7】前記データ・パケットが、セグメント番号
を含む、請求項1に記載の方法。
7. The method of claim 1, wherein said data packet includes a segment number.
【請求項8】前記データ・パケット内のデータを正しい
順序に再組立するステップをさらに含む、請求項1に記
載の方法。
8. The method of claim 1, further comprising the step of reassembling the data in said data packets into the correct order.
【請求項9】データ・パケットのサブシーケンスの前記
組内の各データ・パケットが、セグメント番号を含み、
前記データが、前記セグメント番号を使用して再組立さ
れる、請求項8に記載の方法。
9. Each data packet in said set of sub-sequences of data packets includes a segment number;
The method of claim 8, wherein the data is reassembled using the segment number.
【請求項10】使用可能なスペースの前記量が、前記デ
ータ処理システム内のバッファである、請求項1に記載
の方法。
10. The method of claim 1, wherein said amount of available space is a buffer in said data processing system.
【請求項11】使用可能な処理スペースの前記量が、前
記データ処理システムのメモリ内で割り振られたバッフ
ァである、請求項1に記載の方法。
11. The method of claim 1, wherein said amount of available processing space is a buffer allocated in memory of said data processing system.
【請求項12】データを転送する、データ処理システム
における方法であって、 要求発行者から要求を受信するステップであって、前記
要求が、使用可能なスペースの量を含む、ステップと、 前記要求を使用してデータを識別するステップと、 前記データをデータ・パケットの複数のサブシーケンス
に配置するステップであって、サブシーケンスの組内の
各サブシーケンスが、使用可能なスペースの前記量以下
の量のデータを保持する、ステップと、 前記要求発行者にデータ・パケットの前記複数のサブシ
ーケンスを送信するステップとを含む方法。
12. A method in a data processing system for transferring data, the method comprising: receiving a request from a request issuer, wherein the request comprises an amount of available space; Identifying the data using sub-sequences, and placing the data in a plurality of sub-sequences of data packets, each sub-sequence in the set of sub-sequences being less than or equal to the amount of available space. Maintaining a quantity of data; and transmitting the plurality of sub-sequences of data packets to the requestor.
【請求項13】データ・パケットの前記複数のサブシー
ケンス内の最初のデータ・パケットおよび最後のデータ
・パケットが、ペイロード長を含む、請求項12に記載
の方法。
13. The method of claim 12, wherein a first data packet and a last data packet in said plurality of sub-sequences of a data packet include a payload length.
【請求項14】データ・パケットの前記複数のサブシー
ケンス内のデータ・パケットが、前記データ・パケット
がデータ転送動作について送信される最初のデータ・パ
ケットまたは最後のデータ・パケットであるかどうかを
示すフラグメント・フラグを含む、請求項12に記載の
方法。
14. The data packet in the plurality of sub-sequences of data packets indicates whether the data packet is the first data packet or the last data packet transmitted for a data transfer operation. 13. The method of claim 12, comprising a fragment flag.
【請求項15】前記送信するステップが、 データ・パケットの前記複数のサブシーケンス内のデー
タ・パケットの未送信のサブシーケンスを前記要求発行
者に送信するステップと、 使用可能なスペースの前記量が前記要求発行者側で空き
であることを示す応答を監視するステップと、 データ・パケットのもう1つの未送信のサブシーケンス
がデータ・パケットの前記複数のサブシーケンス内に存
在することと、前記応答の検出とに応答して、前記送信
ステップおよび監視ステップを繰り返すステップとを含
む、請求項12に記載の方法。
15. The method according to claim 15, wherein said transmitting comprises: transmitting an untransmitted sub-sequence of data packets in said plurality of sub-sequences of data packets to said requester; Monitoring the requester for a response indicating that it is empty; another unsent subsequence of data packets being present in the plurality of subsequences of data packets; Repeating the transmitting and monitoring steps in response to the detection of
【請求項16】データ処理システムであって、 バス・システムと、 前記バス・システムに接続された通信ユニットであっ
て、データが、前記通信ユニットを使用して送信され、
受信される、通信ユニットと、 前記バス・システムに接続されたメモリであって、命令
の組が、前記メモリ内に配置される、メモリと、 前記バス・システムに接続されたプロセッサ・ユニット
であって、前記プロセッサ・ユニットが、要求を送信す
るために命令の前記組を実行し、前記要求が、前記デー
タ処理システムで使用可能な処理スペースの量を含み、
前記プロセッサ・ユニットが、使用可能な処理スペース
の前記量が空きになるたびに前記要求に応答してデータ
・パケットの組からデータ・パケットのサブシーケンス
を受信し、データ・パケットの各サブシーケンス内のデ
ータが、使用可能な処理スペースの前記量におさまる、
プロセッサ・ユニットとを含むデータ処理システム。
16. A data processing system, comprising: a bus system; and a communication unit connected to the bus system, wherein data is transmitted using the communication unit.
A communication unit received, a memory connected to the bus system, wherein the set of instructions is located in the memory; and a processor unit connected to the bus system. The processor unit executing the set of instructions to send a request, the request including an amount of processing space available in the data processing system;
The processor unit receives sub-sequences of data packets from the set of data packets in response to the request each time the amount of available processing space becomes free, and within each sub-sequence of data packets. Data fit into said amount of available processing space,
A data processing system including a processor unit.
【請求項17】前記バス・システムが、主バスおよび副
バスを含む、請求項16に記載のデータ処理システム。
17. The data processing system according to claim 16, wherein said bus system includes a main bus and a sub bus.
【請求項18】前記プロセッサ・ユニットが、単一のプ
ロセッサを含む、請求項16に記載のデータ処理システ
ム。
18. The data processing system according to claim 16, wherein said processor unit comprises a single processor.
【請求項19】前記プロセッサ・ユニットが、複数のプ
ロセッサを含む、請求項16に記載のデータ処理システ
ム。
19. The data processing system according to claim 16, wherein said processor unit includes a plurality of processors.
【請求項20】前記通信ユニットが、イーサネット
(R)アダプタである、請求項16に記載のデータ処理
システム。
20. The data processing system according to claim 16, wherein said communication unit is an Ethernet® adapter.
【請求項21】データ処理システムであって、 バス・システムと、 前記バス・システムに接続された通信ユニットであっ
て、データが、前記通信ユニットを使用して送信され、
受信される、通信ユニットと、 前記バス・システムに接続されたメモリであって、命令
の組が、前記メモリ内に配置される、メモリと、 前記バス・システムに接続されたプロセッサ・ユニット
であって、前記プロセッサ・ユニットが、要求発行者か
ら要求を受信するために命令の前記組を実行し、前記要
求が、使用可能なスペースの量を含み、前記プロセッサ
・ユニットが、応答を使用してデータを識別し、前記デ
ータをデータ・パケットの複数のサブシーケンスに配置
し、サブシーケンスの前記組内の各サブシーケンスが、
使用可能なスペースの前記量以下の量のデータを保持
し、前記プロセッサ・ユニットが、前記要求発行者にデ
ータ・パケットの前記複数のサブシーケンスを送信す
る、プロセッサ・ユニットとを含むデータ処理システ
ム。
21. A data processing system, comprising: a bus system; and a communication unit connected to the bus system, wherein data is transmitted using the communication unit.
A communication unit received, a memory connected to the bus system, wherein the set of instructions is located in the memory; and a processor unit connected to the bus system. Wherein the processor unit executes the set of instructions to receive a request from a request issuer, wherein the request includes an amount of available space, and wherein the processor unit uses Identifying data and placing said data in a plurality of sub-sequences of data packets, wherein each sub-sequence in said set of sub-sequences comprises:
A data processing system, the processor unit holding an amount of data less than or equal to the amount of available space, wherein the processor unit sends the plurality of sub-sequences of data packets to the requestor.
【請求項22】データを転送するデータ処理システムで
あって、 要求を送信する送信手段であって、前記要求が、前記デ
ータ処理システムで使用可能な処理スペースの量を含
む、送信手段と、 使用可能な処理スペースの前記量が空きになるたびに、
前記要求に応答して、データ・パケットのサブシーケン
スの組からデータ・パケットのサブシーケンスを受信す
る受信手段であって、データ・パケットの各サブシーケ
ンス内のデータが、使用可能な処理スペースの前記量に
おさまる、受信手段とを含むデータ処理システム。
22. A data processing system for transferring data, the transmitting means for transmitting a request, wherein the request includes an amount of processing space available in the data processing system. Each time said amount of available processing space becomes available,
Receiving means for receiving a sub-sequence of data packets from a set of sub-sequences of data packets in response to the request, wherein data in each sub-sequence of data packets comprises a sub-sequence of available processing space. A data processing system that includes receiving means that fits in volume.
【請求項23】前記データ・パケットが、管理データグ
ラムである、請求項22に記載のデータ処理システム。
23. The data processing system according to claim 22, wherein said data packet is a management datagram.
【請求項24】データ・パケットのサブシーケンスの前
記組内の特定のデータ・パケットが、使用可能な処理ス
ペースの前記量より少ない量のデータを有する、請求項
22に記載のデータ処理システム。
24. The data processing system of claim 22, wherein a particular data packet in the set of data packet subsequences has less data than the amount of available processing space.
【請求項25】サブシーケンス内の特定のデータ・パケ
ットが、前記特定のパケットがデータ転送動作の最初の
データ・パケットまたは最後のデータ・パケットである
かどうかを示すフラグメント・フラグを含む、請求項2
2に記載のデータ処理システム。
25. A particular data packet in a subsequence includes a fragment flag indicating whether the particular packet is the first data packet or the last data packet of a data transfer operation. 2
3. The data processing system according to 2.
【請求項26】前記特定のデータ・パケットが、データ
・パケットのサブシーケンスの前記組内の最後のデータ
・パケットである、請求項22に記載のデータ処理シス
テム。
26. The data processing system of claim 22, wherein said particular data packet is the last data packet in said set of data packet subsequences.
【請求項27】データ・パケットのサブシーケンスの前
記組内の各サブシーケンスが、異なる量のデータを有す
る、請求項22に記載のデータ処理システム。
27. The data processing system of claim 22, wherein each subsequence in the set of subsequences of data packets has a different amount of data.
【請求項28】前記データ・パケットが、セグメント番
号を含む、請求項22に記載のデータ処理システム。
28. The data processing system according to claim 22, wherein said data packet includes a segment number.
【請求項29】前記データ・パケット内のデータを正し
い順序に再組立する再組立手段をさらに含む、請求項2
2に記載のデータ処理システム。
29. The apparatus of claim 2, further comprising reassembly means for reassembling the data in said data packets in the correct order.
3. The data processing system according to 2.
【請求項30】データ・パケットのサブシーケンスの前
記組内の各データ・パケットが、セグメント番号を含
み、前記データが、前記セグメント番号を使用して再組
立される、請求項29に記載のデータ処理システム。
30. The data of claim 29, wherein each data packet in the set of data packet subsequences includes a segment number, and wherein the data is reassembled using the segment number. Processing system.
【請求項31】使用可能なスペースの前記量が、前記デ
ータ処理システム内のバッファである、請求項22に記
載のデータ処理システム。
31. The data processing system of claim 22, wherein said amount of available space is a buffer in said data processing system.
【請求項32】使用可能な処理スペースの前記量が、前
記データ処理システムのメモリ内で割り振られたバッフ
ァである、請求項22に記載のデータ処理システム。
32. The data processing system of claim 22, wherein said amount of available processing space is a buffer allocated in memory of said data processing system.
【請求項33】データを転送するデータ処理システムで
あって、 要求発行者から要求を受信する受信手段であって、前記
要求が、使用可能なスペースの量を含む、受信手段と、 応答を使用してデータを識別する識別手段と、 前記データをデータ・パケットの複数のサブシーケンス
に配置する配置手段であって、データ・パケットの前記
複数のサブシーケンス内の各サブシーケンスが 、使用可能なスペースの前記量以下の量のデータを保持
する、配置手段と、前記要求発行者にデータ・パケット
の前記複数のサブシーケンスを送信する送信手段とを含
むデータ処理システム。
33. A data processing system for transferring data, said receiving means receiving a request from a request issuer, said request including an amount of available space, and using a response. Identification means for identifying the data in a plurality of sub-sequences of a data packet, wherein each of the sub-sequences in the plurality of sub-sequences of a data packet has an available space. A data processing system, comprising: an arrangement unit that holds an amount of data equal to or less than the amount of data packets;
【請求項34】データ・パケットの前記複数のサブシー
ケンス内の最初のデータ・パケットおよび最後のデータ
・パケットが、ペイロード長を含む、請求項33に記載
のデータ処理システム。
34. The data processing system of claim 33, wherein a first data packet and a last data packet in the plurality of sub-sequences of a data packet include a payload length.
【請求項35】データ・パケットの前記複数のサブシー
ケンス内のデータ・パケットが、前記データ・パケット
がデータ転送動作について送信される最初のデータ・パ
ケットまたは最後のデータ・パケットであるかどうかを
示すフラグメント・フラグを含む、請求項33に記載の
データ処理システム。
35. The data packet in the plurality of sub-sequences of a data packet indicates whether the data packet is a first data packet or a last data packet transmitted for a data transfer operation. The data processing system of claim 33, comprising a fragment flag.
【請求項36】前記送信手段が、 データ・パケットの前記複数のサブシーケンス内の未送
信のデータ・パケットを前記要求発行者に送信する送信
手段と、 前記使用可能なスペースの量が前記要求発行者側で空き
であることを示す応答を監視する監視手段と、 もう1つの未送信のデータ・パケットがデータ・パケッ
トの前記複数のサブシーケンス内に存在することと、前
記応答の検出とに応答して、前記送信手段および監視手
段の開始を繰り返す繰返し手段とを含む、請求項33に
記載のデータ処理システム。
36. A transmitting means for transmitting unsent data packets in said plurality of sub-sequences of data packets to said request issuer; and wherein said amount of available space is determined by said request issuer. Monitoring means for monitoring a response indicating that the data packet is free on the side of the user; and responding to the presence of another untransmitted data packet in the plurality of subsequences of the data packet and detecting the response. 34. The data processing system according to claim 33, further comprising: repetition means for repeating the start of the transmission means and the monitoring means.
【請求項37】データ処理システム内でデータを転送す
るのに使用される、コンピュータ可読媒体内のコンピュ
ータ・プログラム製品であって、 要求を送信する第1命令であって、前記要求が、前記デ
ータ処理システムで使用可能な処理スペースの量を含
む、第1命令と、 使用可能な処理スペースの前記量が空くたびに前記要求
に応答してデータ・パケットのサブシーケンスの組から
データ・パケットのサブシーケンスを受信する第2命令
であって、データ・パケットの各サブシーケンス内のデ
ータが、使用可能な処理スペースの前記量におさまる、
第2命令とを含むコンピュータ・プログラム製品。
37. A computer program product in a computer readable medium used to transfer data in a data processing system, the first instructions for sending a request, the request comprising the data A first instruction including an amount of processing space available in the processing system; and a sub-sequence of the data packet from the set of data packet sub-sequences in response to the request each time the amount of available processing space becomes available. A second instruction for receiving the sequence, wherein the data in each subsequence of the data packet fits in said amount of available processing space;
Computer program product comprising the second instruction.
【請求項38】データ処理システム内でデータを転送す
る、コンピュータ可読媒体内のコンピュータ・プログラ
ム製品であって、 要求発行者から要求を受信する第1命令であって、前記
要求が、使用可能なスペースの量を含む、第1命令と、 応答を使用してデータを識別する第2命令と、 前記データをデータ・パケットの複数のサブシーケンス
に配置する第3命令であって、サブシーケンスの組内の
各サブシーケンスが、使用可能なスペースの前記量以下
の量のデータを保持する、第3命令と、 前記要求発行者にデータ・パケットの前記複数のサブシ
ーケンスを送信する第4命令とを含むコンピュータ・プ
ログラム製品。
38. A computer program product in a computer readable medium for transferring data within a data processing system, wherein the first instructions receive a request from a request issuer, the request comprising: A first instruction that includes an amount of space; a second instruction that identifies data using a response; and a third instruction that places the data in a plurality of subsequences of a data packet, the set of subsequences. A third instruction in which each subsequence holds less than or equal to the amount of available space; and a fourth instruction that sends the plurality of subsequences of data packets to the requestor. Including computer program products.
JP2001386626A 2001-01-11 2001-12-19 Method and apparatus for providing a reliable protocol for transferring data Pending JP2002305535A (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/758737 2001-01-11
US09/758,737 US6898638B2 (en) 2001-01-11 2001-01-11 Method and apparatus for grouping data for transfer according to recipient buffer size

Publications (1)

Publication Number Publication Date
JP2002305535A true JP2002305535A (en) 2002-10-18

Family

ID=25052893

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001386626A Pending JP2002305535A (en) 2001-01-11 2001-12-19 Method and apparatus for providing a reliable protocol for transferring data

Country Status (3)

Country Link
US (1) US6898638B2 (en)
JP (1) JP2002305535A (en)
KR (1) KR100464195B1 (en)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005064982A (en) * 2003-08-15 2005-03-10 Nippon Telegr & Teleph Corp <Ntt> Terminal device
JP2007534073A (en) * 2004-04-21 2007-11-22 レベル、ファイブ、ネットワークス、インコーポレーテッド User level stack
JP2012514386A (en) * 2008-12-30 2012-06-21 インテル・コーポレーション Message communication method
US8645596B2 (en) 2008-12-30 2014-02-04 Intel Corporation Interrupt techniques
JP2017157020A (en) * 2016-03-02 2017-09-07 富士通株式会社 Control circuit, information processing device, and control method for information processing device
JP2019504557A (en) * 2015-12-29 2019-02-14 アマゾン テクノロジーズ インコーポレイテッド Networking technology
US10645019B2 (en) 2015-12-29 2020-05-05 Amazon Technologies, Inc. Relaxed reliable datagram
US10673772B2 (en) 2015-12-29 2020-06-02 Amazon Technologies, Inc. Connectionless transport service
US10917344B2 (en) 2015-12-29 2021-02-09 Amazon Technologies, Inc. Connectionless reliable transport
US11451476B2 (en) 2015-12-28 2022-09-20 Amazon Technologies, Inc. Multi-path transport design

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE323360T1 (en) * 2002-04-03 2006-04-15 Cit Alcatel METHOD AND DEVICE FOR REORDERING PACKETS IN A NETWORK PROCESSOR
US20040240388A1 (en) * 2003-05-28 2004-12-02 Lee Albion System and method for dynamic assignment of timers in a network transport engine
US7698361B2 (en) * 2003-12-31 2010-04-13 Microsoft Corporation Lightweight input/output protocol
US7347794B2 (en) 2004-03-17 2008-03-25 Karsten Manufacturing Corporation Method of manufacturing a face plate for a golf club head
US7895329B2 (en) * 2006-01-12 2011-02-22 Hewlett-Packard Development Company, L.P. Protocol flow control
US8832216B2 (en) * 2011-08-31 2014-09-09 Oracle International Corporation Method and system for conditional remote direct memory access write
US10425371B2 (en) * 2013-03-15 2019-09-24 Trane International Inc. Method for fragmented messaging between network devices
JP7032631B2 (en) * 2017-07-04 2022-03-09 富士通株式会社 Transmission / reception system, control method of transmission / reception system, and transmission device
CN114443206A (en) * 2020-10-31 2022-05-06 华为技术有限公司 Communication method and device
JP2022076620A (en) * 2020-11-10 2022-05-20 キオクシア株式会社 Memory system and control method

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61292767A (en) * 1985-06-20 1986-12-23 Nec Corp Output control system for on-line system
DE3889550T2 (en) * 1987-01-12 1994-09-01 Fujitsu Ltd Data transfer buffer circuits for data exchange.
DE68924755D1 (en) * 1988-10-31 1995-12-14 Ibm Multiple processing system and shared memory method.
US5287500A (en) * 1991-06-03 1994-02-15 Digital Equipment Corporation System for allocating storage spaces based upon required and optional service attributes having assigned piorities
KR19990079650A (en) * 1998-04-08 1999-11-05 김영환 Variable length data processing method using packets in data communication between two processors
US6738821B1 (en) * 1999-01-26 2004-05-18 Adaptec, Inc. Ethernet storage protocol networks
KR100411131B1 (en) * 2000-04-21 2003-12-18 주식회사 정소프트 A multi-user computer system and a control method thereof

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005064982A (en) * 2003-08-15 2005-03-10 Nippon Telegr & Teleph Corp <Ntt> Terminal device
JP2007534073A (en) * 2004-04-21 2007-11-22 レベル、ファイブ、ネットワークス、インコーポレーテッド User level stack
JP4825794B2 (en) * 2004-04-21 2011-11-30 ソーラーフレア コミュニケーションズ インコーポレーテッド User level stack
JP2012514386A (en) * 2008-12-30 2012-06-21 インテル・コーポレーション Message communication method
US8645596B2 (en) 2008-12-30 2014-02-04 Intel Corporation Interrupt techniques
US8751676B2 (en) 2008-12-30 2014-06-10 Intel Corporation Message communication techniques
US11451476B2 (en) 2015-12-28 2022-09-20 Amazon Technologies, Inc. Multi-path transport design
JP2019092218A (en) * 2015-12-29 2019-06-13 アマゾン テクノロジーズ インコーポレイテッド Networking techniques
JP2019504557A (en) * 2015-12-29 2019-02-14 アマゾン テクノロジーズ インコーポレイテッド Networking technology
JP2019092217A (en) * 2015-12-29 2019-06-13 アマゾン テクノロジーズ インコーポレイテッド Networking techniques
US10645019B2 (en) 2015-12-29 2020-05-05 Amazon Technologies, Inc. Relaxed reliable datagram
US10673772B2 (en) 2015-12-29 2020-06-02 Amazon Technologies, Inc. Connectionless transport service
US10917344B2 (en) 2015-12-29 2021-02-09 Amazon Technologies, Inc. Connectionless reliable transport
US11343198B2 (en) 2015-12-29 2022-05-24 Amazon Technologies, Inc. Reliable, out-of-order transmission of packets
US11770344B2 (en) 2015-12-29 2023-09-26 Amazon Technologies, Inc. Reliable, out-of-order transmission of packets
JP2017157020A (en) * 2016-03-02 2017-09-07 富士通株式会社 Control circuit, information processing device, and control method for information processing device

Also Published As

Publication number Publication date
US6898638B2 (en) 2005-05-24
KR100464195B1 (en) 2005-01-03
US20020091852A1 (en) 2002-07-11
KR20020060623A (en) 2002-07-18

Similar Documents

Publication Publication Date Title
US6748559B1 (en) Method and system for reliably defining and determining timeout values in unreliable datagrams
US6766467B1 (en) Method and apparatus for pausing a send queue without causing sympathy errors
US7519650B2 (en) Split socket send queue apparatus and method with efficient queue flow control, retransmission and sack support mechanisms
US7668984B2 (en) Low latency send queues in I/O adapter hardware
US7095750B2 (en) Apparatus and method for virtualizing a queue pair space to minimize time-wait impacts
US7895601B2 (en) Collective send operations on a system area network
US7133405B2 (en) IP datagram over multiple queue pairs
JP4012545B2 (en) Switchover and switchback support for network interface controllers with remote direct memory access
US8370447B2 (en) Providing a memory region or memory window access notification on a system area network
US6789143B2 (en) Infiniband work and completion queue management via head and tail circular buffers with indirect work queue entries
US8265092B2 (en) Adaptive low latency receive queues
US8341237B2 (en) Systems, methods and computer program products for automatically triggering operations on a queue pair
US20020073257A1 (en) Transferring foreign protocols across a system area network
US7165110B2 (en) System and method for simultaneously establishing multiple connections
EP1499984B1 (en) System, method, and product for managing data transfers in a network
JP5735883B2 (en) How to delay the acknowledgment of an operation until the local adapter read operation confirms the completion of the operation
US20030061296A1 (en) Memory semantic storage I/O
JP2002305535A (en) Method and apparatus for providing a reliable protocol for transferring data
US7113995B1 (en) Method and apparatus for reporting unauthorized attempts to access nodes in a network computing system
US20030005039A1 (en) End node partitioning using local identifiers
US20050018669A1 (en) Infiniband subnet management queue pair emulation for multiple logical ports on a single physical port
US6990528B1 (en) System area network of end-to-end context via reliable datagram domains
US20020198927A1 (en) Apparatus and method for routing internet protocol frames over a system area network
US7099955B1 (en) End node partitioning using LMC for a system area network
US20030058875A1 (en) Infiniband work and completion queue management via head only circular buffers

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20041126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041130

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050125

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20050322