JP4508195B2 - アウト・オブ・オーダのrdma送信メッセージの配信に関する書き込み動作の回数の減少 - Google Patents
アウト・オブ・オーダのrdma送信メッセージの配信に関する書き込み動作の回数の減少 Download PDFInfo
- Publication number
- JP4508195B2 JP4508195B2 JP2006543909A JP2006543909A JP4508195B2 JP 4508195 B2 JP4508195 B2 JP 4508195B2 JP 2006543909 A JP2006543909 A JP 2006543909A JP 2006543909 A JP2006543909 A JP 2006543909A JP 4508195 B2 JP4508195 B2 JP 4508195B2
- Authority
- JP
- Japan
- Prior art keywords
- segment
- tcp
- rdma
- connection
- ddp
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 230000005540 biological transmission Effects 0.000 title claims description 53
- 238000000034 method Methods 0.000 claims description 75
- 238000004590 computer program Methods 0.000 claims description 7
- 239000000872 buffer Substances 0.000 abstract description 85
- 238000010200 validation analysis Methods 0.000 abstract description 48
- 238000011084 recovery Methods 0.000 abstract description 17
- 230000008859 change Effects 0.000 abstract description 6
- 239000003550 marker Substances 0.000 description 56
- 238000012546 transfer Methods 0.000 description 55
- 230000008569 process Effects 0.000 description 45
- 238000012545 processing Methods 0.000 description 36
- 238000010586 diagram Methods 0.000 description 29
- 238000004364 calculation method Methods 0.000 description 28
- 230000004044 response Effects 0.000 description 20
- 230000006870 function Effects 0.000 description 13
- 238000013459 approach Methods 0.000 description 8
- PVCRZXZVBSCCHH-UHFFFAOYSA-N ethyl n-[4-[benzyl(2-phenylethyl)amino]-2-(4-phenoxyphenyl)-1h-imidazo[4,5-c]pyridin-6-yl]carbamate Chemical compound N=1C(NC(=O)OCC)=CC=2NC(C=3C=CC(OC=4C=CC=CC=4)=CC=3)=NC=2C=1N(CC=1C=CC=CC=1)CCC1=CC=CC=C1 PVCRZXZVBSCCHH-UHFFFAOYSA-N 0.000 description 7
- 125000004122 cyclic group Chemical group 0.000 description 5
- 238000001914 filtration Methods 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 238000003860 storage Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000009432 framing Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Computer And Data Communications (AREA)
- Communication Control (AREA)
- Bus Control (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Description
図1を参照すると、従来のデータ転送環境1のブロック図が示されている。データ転送環境1は、データ・ソース2(すなわちピア(peer))を含み、これは、データ転送3Aを、1つ以上の遠隔メモリ・データ・アクセス(RDMA:remote memory data access)対応ネットワーク・インタフェース・コントローラ(複数のコントローラ)(RNIC)4を介して、データ転送3Bを受信するデータ・シンク(data sink)5(すなわちピア)に送信する。RNIC4は、とりわけ(更に以下で説明する)、リアセンブリ・バッファ6を含む。最近、ネットワーキング通信速度は、毎秒10メガビット(Mbps)から100Mbpsを経て毎秒1ギガビット(Gbps)まで著しく高速化し、今や10Gbpsの範囲の速度に近付いている。しかしながら、現在、通信帯域幅の拡大は、中央演算処理装置(CPU)がデータを効率的に処理することができる速度を上回り始めており、結果として、例えばRNIC4のようなサーバ・プロセッサにおけるネックになっている。例えば、一般的な1Gbpsネットワーク通信は、いっぱいに利用された場合、2GHzのCPUに対して大きな負担となり得る。特に、このようなCPUは、その処理能力の約半分を拡張して、ネットワーク・カードから来るデータから低レベルの伝送制御プロトコル(TCP:transmission control protocol)処理を扱うことができるだけである。
これより、図2を参照して、iWARPを含む様々なプロトコルの簡単な概要、および、データ転送フォーマット構造について説明する。図に見られるように、各データ転送は、多数の異なるプロトコルに関連する情報を含む場合があり、その各々がデータ転送に関する異なる機能性を提供する。例えば、図2に示すように、イーサネット・プロトコル100は、IEEE規格802.3によって規定されているようなローカル・エリア・ネットワーク(LAN)アクセスを提供する。インターネット・プロトコル(IP)102は、必要なネットワーク・ルーティング情報を追加する。転送制御プロトコル(TCP)104は、アウトバウンドTCPセグメント106のスケジュールを設定し、配信保証を満足させる。プロトコル・データ・ユニット(PDU)整列プロトコルを有するマーカ(MPA)108は、MPAフレーム109を提供し、これは、DDPセグメント112(1つのみ図示するが、ストリームである場合がある)間に、固定間隔で(すなわち512バイトごとに)、後方MPAマーカ(複数のマーカ)110を含み、さらに、各MPAフレーム109に対して、長さフィールド114および巡回冗長検査(CRC)フィールド116を追加する。更に、直接データ配置(DDP:direct data placement)プロトコル120は、アウトバウンド・メッセージを1つ以上のDDPセグメント112に分け、1つ以上のDDPセグメントをDDPメッセージ113へとリアセンブルする(組み立て直す)。遠隔データ・メモリ・アクセス(RDMA)プロトコル122は、DDPメッセージ内に/DDPメッセージから、RDMAの書き込み、読み取り、送信を変換する。明確さのため、DDPセグメント112は1つのみ図示するが、各TCPセグメント106に多数のDDPセグメント112を提供可能であることは認められよう。
ハードウェア設定においてRDMAおよびDDPを用いてTCP/IPを効率的に実施することに伴う1つの課題は、標準的なTCP/IPオフロード・エンジン(TOE)実施において、アウト・オブ・オーダの受信TCPストリームを配列させるためのリアセンブリ・バッファが受信ロジック内に含まれ、このためにコピー動作が増えることである。更に、受信器のデータ・バッファに対する直接データ配置を完了させるために、RNICは、到着するTCPセグメント・ペイロード127の各々について宛先バッファの位置を特定することができなければならない。この結果、全てのTCPセグメントは、それらがイン・オーダ(in-order)であり宛先バッファの位置を特定可能であることを保証するために、リアセンブリ・バッファにセーブされる。この問題に対処するため、iWARP仕様では、送信RNICに対して、RDMAメッセージのセグメント化を実行する際に、生成されるDDPセグメントがTCPセグメントに対して「整列」するように行うことが強く推薦される。それにもかかわらず、多くの場合、特にデータ転送が多数の相互接続を通過する場合には、非整列の(non-aligned)DDPセグメントは避けられない。
これより、図4から図8を参照して、後の記載のために、DDP/RDMA動作フローの簡単な概要を説明する。特にDDPプロトコル120(図2)に関して述べると、DDPは、タグ付きメッセージおよびタグなしメッセージと称する2つのタイプのメッセージを提供する。図4を参照すると、「タグ付きメッセージ」において、各DDPセグメント112(図2)は、DDP/RDMAヘッダ124内に、データを直接配置することができる受信器上の宛先バッファ内のメモリ領域/ウインドウ(例えば図7のメモリ領域232)を識別するステアリング・タグ(「STag」:steering tag)、この領域/ウインドウ内のターゲット・オフセット(TO)、およびセグメント・ペイロード(図示せず)を保持する。この場合、宛先バッファの可用性は、STagを介して「発表」される。図5を参照すると、「タグなしメッセージ」は、遠隔の送信器が受信器におけるバッファを知らず、キューID(QN)、メッセージ・シーケンス番号(MSN)、およびメッセージ・オフセット(MO)を用いてメッセージを送信するものであり、これらが受信器によって用いられて、適切なバッファを判定することができる。
A.環境
添付図面を参照すると、図9は、本発明の一実施形態によるデータ転送環境10のブロック図である。データ転送環境10は、データ・ソース12(すなわちピア)を含み、これは、データ転送14Aを、1つ以上の遠隔メモリ・データ・アクセス(RDMA)対応ネットワーク・インタフェース・コントローラ(複数のコントローラ)(RNIC)16を介して、データ転送14Bを受信するデータ・シンク18(すなわちピア)に送信する。説明の目的のため、データ転送を開始するエンティティを、本明細書において「要求側」と称し、データ転送に応答するものを、本明細書において「応答側」と称する。同様に、データを伝送するエンティティを、本明細書において「送信側」と称し、データ転送を受信するものを、本明細書において「受信側」と称する。データ・ソース12およびデータ・シンク18の各々は、異なる時点で、データの送信側もしくは受信側、または要求側もしくは応答側になる場合があり、「ソース」および「シンク」という表示は、転送するデータを保持するエンティティを最初に表す目的のためにのみ与えることを認識すべきである。また、以下の説明は、上述のエンティティの1つを「コンシューマ」と示す場合があり(RNIC16のリソースを消費するので)、この場合、これより具体的な表示は必要ない。「宛先バッファ」は、受信側においてデータを最終的に受信するデータ・ストレージ、すなわちデータ・ソース12またはデータ・シンク18のデータ・バッファ50を示す。データ・ソース12およびデータ・シンク18は、各々、データをストアするためのデータ・バッファ50を含む。
図9に戻ると、動作において、RNIC16は、イン・ロジック32に対するアクセスを制御するアクセス制御30を介して、データ転送14Aを受信する。接続を維持するための情報は、従来のように、他のコンテキストデータ60(図10)に保持されている。イン・ロジック32は、データ転送14AにおけるインバウンドTCPセグメントを処理し、TCPチェックサム・ロジック66(図11)によって受信したTCPセグメントの妥当性確認を実行し、CRCロジック64(図11)によってMPA CRCを計算し、FAST接続データ・ストリームをSLOW接続データ・ストリームから分離する。後者の機能に関して、以下で更に充分に説明するイン・ロジック32は、SLOW接続でRNIC16が受信した全てのデータをリアセンブリ・バッファ34に送出し、FAST接続を多数の異なる方法で処理する。FAST接続に関して説明すると、イン・ロジック32が整列の違反を検出した(すなわち、TCPヘッダのすぐ後にDDPヘッダがなく、DDPセグメントが完全に1つのTCPセグメント内に含まれていない)場合、接続はSLOW接続に格下げされ、データはリアセンブリ・バッファ34に送出される。これに対して、整列の違反が存在しない場合、イン・ロジック32は、整列したインバウンドDDPストリームを、内部データ・バッファ38に、次いでアウト・ロジック40に送出して、宛先データ・バッファ50に直接配置する。あるいは、TCPセグメント106がドロップされ、肯定応答(Ack)が送信されず、このためセグメントの再送信を必要とする場合がある。
図12を参照して、本発明によるイン・ロジック32(図9)およびそのデータ転送14Aの処理のフロー図を更に詳細に記載する。上述したように、イン・ロジック32は、インバウンドTCPセグメントを処理し、受信したセグメントのTCP妥当性確認を実行し、MPA CRCを計算し、SLOW接続データ・ストリームからFAST接続データ・ストリームを分離する。特に注記しない限り、「S」が付かない参照番号は、図9から図11に示す構造を示す。
検出されたエラーの原因の不明確さに関連した代替的な実施形態として(例えば、図12のステップS10においてNOの場合は、かかる状況を生じる結果となり得る1つの例示的な判定である)、「有限再送信試行モード」を実施して、再送信試行の回数を制限して、デッドロックを回避し、不必要にSLOW接続に変えられるFAST接続の数を減らすことができる。具体的には、上述のように、ケースC、D、およびEが表すいくつかの例では、検出されたエラーの原因が不明確であるために、接続をSLOW接続に格下げし(ステップS3)、DDPセグメント112の整列が損なわれたためでなくデータ破損によってエラーが生じた場合には、接続が終了する可能性がある(アウト・ロジック40によって)。
これより、図15を参照して、高速経路モードにおいて1つ以上のアウト・オブ・オーダの受信DDPセグメント112を宛先データ・バッファ50に配置した後に接続を格下げする(図12のステップS3)という独特の状況の処理について説明する。図15に示すように、パケット(Pkt)と標示された4つのTCPセグメントは、アウト・オブ・オーダで、すなわち3、4、1、2の順序で受信される。接続をSLOW接続に格下げすると、格下げの時点で受信された全てのデータはリアセンブリ・バッファ34に配置され、イン・オーダに、すなわちPkt1、2、3、4にリアセンブルされる。この場合、TCPプロトコルに従って、イン・ロジック32はそれらのセグメントが受信されたことの記録を維持する。
別の代替的な実施形態として、本発明は、図16に示すような接続格上げ手順を含むことができる。上述の高速経路モード手法の目的は、整列DDPセグメント112を保持する接続について、リアセンブリ・バッファ34の回避を可能とすることである。しかしながら、FAST接続においても、データ・ソース12または中間ネットワーク・デバイスは、間欠的な非整列DDPセグメント112NAを発生する可能性があり、これによって、FAST接続は上述の技法に従ってSLOW接続に格下げされる。間欠的な挙動は、例えば、TCP再送信の間に最大セグメント・サイズ(MSS)が変化すること、または他の単発的な状況によって生じる場合がある。
別の代替的な実施形態では、TCPセグメント106が受信されるが、例えばDDPセグメントの破損、無効なCRC等のようなRDMAまたはULPの問題点のためにドロップされるという状況に対処する。上述の手順に従って、TCPセグメント106が受信されてTCPチェックサムを通過するが、セグメントをカバーするTCP Ackを送信することなくイン・ロジック32によってドロップされる(すなわち図12のステップS9)ということは数多い。従来の手順では、次いで、それらのパケットの再送信試行が行われる。具体的には、基本的な方式(いわゆる「Renoプロトコル」)では、TCP送信側は、3つの複写Ack(すなわち、イン・オーダで受信されたデータのシーケンス番号を進めないAck)を得た場合、「高速再送信」モードを開始する。例えば、2つのTCPセグメントAおよびBを想定し、TCPオーダにおいてセグメントBがセグメントAの次に来ると想定する。セグメントAがドロップされると、受信側は、セグメントBを受信した場合にのみ複写Ackを送信する。この複写Ackが示すのは、「私はセグメントAを待っているが、別のセグメントを受信した」ということ、すなわちセグメントBである。Renoプロトコルのもとでの「高速再送信」モードでは、送信側は、1つのセグメントを送信し、次いで別の3つの複写Ackを待って、別のパケットを再送信する。もっと進んだ方式(いわゆる「New−Renoプロトコル」のような)では、「高速回復」モードにおいて受信した複写の各々について、セグメントの再送信が可能である。このプロセスの背後にある論理は、1つのセグメントがネットワークから出ると、送信側は別のパケットをネットワークに置くことができるということである。
入来するイーサネット・フレームの従来の処理は、フィルタリング・プロセスから始まる。フィルタリングの目的は、有効なイーサネット・フレームを無効なものを分離することである。「無効フレーム」は、破損したフレームではなく、RNIC16によって受信してはならないフレームである。例えば、MACフィルタリングすなわちMACアドレスに基づくフレーム選択、仮想ローカル・エリア・ネットワーク(VLAN)フィルタリングすなわちVLADタグに基づくフレーム選択等である。有効フレームは、RNIC16内に入ることができ、異なるタイプに分離される。これらのタイプの1つがTCPセグメントである。フィルタリング・プロセスは実行中に行われ、全イーサネット・フレームの蓄積交換処理を行う必要はない。
DDPセグメント112長を正確に計算するための第1の代替的な実施形態は、StartNumフィールド248(図10)としてストアされている初期シーケンス番号の接続コンテキスト42のプリフェッチを実施することを含む。ここでは、MPA仕様の変更は提示しない。現在のMPA仕様では、TCPセグメント106内のMPAマーカ110の位置を識別するために、初期シーケンス番号(StartNum)を知ることが必要である。初期シーケンス番号は、TCP接続属性であり、これは接続ごとに異なり、接続確立時に取り決められる。従って、StartNum248(図10)は、接続ごとに維持される。MPAマーカ110の位置を識別するため、CRCロジック64(図11)は、512を法とした特定のセグメントのシーケンス番号(SeqNum)およびStartNumの剰余(SeqNum-StartNum)がゼロであることを調べる。すなわち、各TCPセグメント106のヘッダがそのペイロードの第1のバイトのシーケンス番号を保持するので、CRCロジック64は、特定のセグメントのシーケンス番号とStartNum248との間の差を取り、次いでこの位置から始めて、512バイトごとにマーカを位置付けることによって、どこでマーカを探すべきかを判定することができる。MPA仕様は、上述のマーカ検出方法を定義する。このように、ハッシュ照合(TCPタプルに基づく)および接続コンテキスト42のプリフェッチを、TCPチェックサム妥当性確認を行う前に実行することができる。これは、通常の接続コンテキスト42のフェッチ・フローである。RNIC16が接続コンテキスト42を取得したい場合、まず、このコンテキストがどこに位置付けられているかを理解するか、または接続IDを得る必要がある。TCPセグメント106ヘッダは、TCPタプル(IPアドレス(ソースおよび宛先)ならびにTCPポート(ソースおよび宛先))を保持する。タプルは、ハッシュ関数に対する入力である。ハッシュ関数の出力は接続IDである。むろん、異なるタプルに対して同じ接続IDを使う結果となる場合があり、これは「衝突」と呼ばれる。衝突を処理するために、RNIC16は、接続コンテキスト42を読み取り、接続コンテキスト42におけるタプルをパケット内のタプルと照合し、一致しない場合、RNIC16は次の接続コンテキスト42に対するポインタを取得する。RNIC16は、一致を見出すまで、またはセグメントが既知の接続のどれにも属さないと認識されるまで、タプル照合を続ける。このプロセスによって、TCPストリーム内でMPAマーカ110の位置を特定することができる。この結果、CRC計算および妥当性確認は、TCPチェックサム妥当性確認と同時に行うことができる。
第2の代替的な実施形態では、MPA仕様に多数の変更を行うことによって、接続コンテキストのフェッチを行うことなく、DPセグメント長を正確に計算することができる。第1に、MPA仕様におけるMPAマーカ110の配置の定義を変更する。上述の接続コンテキストプリフェッチ方法の1つの欠点は、TCPセグメント106においてMPAフレーム109の境界を識別するために、ハッシュ照合および接続コンテキスト42のプリフェッチを行う必要があるということである。これを防ぐため、本発明は、MPAマーカ110を512バイトごとに配置し、初期シーケンス番号(SN)(StartNum248としてセーブされている)で開始する512バイトごと(これは、上述の512を法としたSN-StartNum処理を必要とする)には配置しない。このように、MPAマーカ110の位置は、MPAマーカ110の位置を特定するための512を法としたシーケンス番号プロセスによって求めることができ、接続コンテキスト42のフェッチは必要ない。
接続コンテキストフェッチを行うことなくDDPセグメント112長を正確に計算するための第3の代替的な実施形態では、MPA仕様におけるMPA長フィールド114の定義を変更する。従来、MPA長フィールド114は、各MPAフレーム109のULPペイロードの長さを保持するように規定され、MPAレイヤによって追加されたマーカ110、パディング121(図2)、CRCデータ116は除く。しかしながら、この情報では、TCPセグメント106が提供する情報を用いてMPAフレーム境界の位置を特定することができない。これに対処するため、この代替的な実施形態によれば、MPA仕様におけるMPA長の定義を変更して、次のものを含む全MPAフレーム109の長さを明記する。すなわち、MPA長フィールド114の最上位14ビット(MSB)、ULPペイロード118長、MPAマーカ110、CRCデータ116、MPAG長フィールド114の最下位2ビット(LSB)、およびパディング121における有効ビットである。
第4の代替的な実施形態では、CRC計算および妥当性確認に関して、マーカなしのカットスルー実施を用いる。これについて以下で説明する。DDPセグメント長を正確に計算するための上述の3つの代替的な実施形態の欠点は、各々が、MPA仕様の変更または接続コンテキスト42のプリフェッチを必要とすることである。この実施形態は、到着するMPAフレームのCRCを計算するために接続コンテキスト42のプリフェッチを行うことなく、更に、MPA仕様に対する追加の変更を行うことなく、インバウンド・セグメントのカットスルー処理を実施する。更に、この実施形態は、MPAマーカを用いることなく、アウト・オブ・オーダの直接データ配置を可能とする。この実施形態は、MPA仕様の新しい更新バージョンに従って、所与の接続について「マーカなし」のオプションを取り決めることができる受信側の能力に部分的に基づいている。具体的には、更新されたMPA仕様によって、MPA受信側は、所与の接続についてマーカを用いるか否かを決定することができ、送信側は受信側の決定を尊重しなければならない。この実施形態は、妥当性確認ユニット44ロジックを変更して、TCPチェックサム計算と同時に、接続コンテキスト42のプリフェッチを行うことなく、実行中にCRC計算を行うことを可能とする。
アウト・ロジック40(図9)は、RDMAメッセージごとの情報を保持することなく、RDMAメッセージのイン・オーダ配信を実行する。対処される状況は2つある。すなわち、(1)送信メッセージを除く全てのRDMAメッセージについて、および、(2)RDMA送信メッセージ、である。
配置に関して、アウト・ロジック40は、RDMA読み取りメッセージを除いて、RDMAメッセージの従来の配置を行う。これについて、以下で述べる。
RDMAプロトコルによって、アウト・オブ・オーダのデータ配置が可能となるが、配信はイン・オーダである必要がある。従って、従来の実施では、メモリに(全体的にまたは部分的に)配置されたがまだ配信されていない各メッセージに関する情報を維持する必要がある。しかしながら、単一のTCPセグメントが失われると、多くのアウト・オブ・オーダのRDMAメッセージが受信されることになる恐れがあり、これは宛先バッファに配置され、失われたセグメントが再送信されてメモリに正常に配置されるまで完了しない。従来の環境のもとでは、アウト・オブ・オーダのストリームをストアするために限られたリソースを利用可能であり、アウト・オブ・オーダのストリームを受信した後に、ある数のみの以降のメッセージをストアすることができるようになっている。
先の考察において、この方法ステップは、本発明の機能タスクの1つ以上を実行するための専門のハードウェアを含む特定のユーザ・コンピュータ、すなわち有限状態マシンによって実行されることが好ましい。しかしながら、この方法ステップは、メモリにストアされたプログラムの命令を実行するCPU等のプロセッサによっても実行可能である。本明細書中で記載した様々なデバイス、モジュール、機構、およびシステムは、ハードウェア、ソフトウェア、またはハードウェアおよびソフトウェアの組み合わせによって実現可能であり、図示したもの以外に区分化することができることは理解されよう。それらは、本明細書中に記載した方法を実行するために適合されたいずれかのタイプのコンピュータ・システムまたは他の装置によって実施可能である。ハードウェアおよびソフトウェアの典型的な組み合わせは、コンピュータ・プログラムを有する汎用コンピュータ・システムであり、このプログラムがロードされて実行されると、コンピュータ・システムを制御して、本明細書中に記載した方法を実行するようになっている。また、本発明は、コンピュータ・プログラムに埋め込むことも可能である。このプロダクトは、本明細書中に記載した方法および機能の実施を可能とする全ての特徴を含み、コンピュータ・システムにロードされた場合、これらの方法および機能を実行することができる。このコンテキストにおいて、コンピュータ・プログラム、ソフトウェア・プログラム、プログラム、またはソフトウェアは、いずれの言語、記号体系、または表記においても、1組の命令の表現を意味し、直接に、または、(a)別の言語、符号体系、または表記への変換、あるいは(b)異なる材料形態での再生、またはその両方の後に、情報処理機能を有するシステムに特定の機能を実行させるように意図されている。
Claims (14)
- アウト・オブ・オーダの遠隔メモリ・データ・アクセス(RDMA)送信メッセージの配信において受信キューへのワーク・キュー要素(WQE)の書き込み動作及び完了キューへの完了キュー要素(CQE)の書き込み動作の回数を減らす方法であって、システムに下記ステップを実行させることを含み、前記完了キューはCQEを格納し、前記CQEは当該CQEが完了させるWQEの参照カウンタを保持し、
前記ステップは、
アウト・オブ・オーダのTCPセグメントを受信した結果としてTCPストリーム内に生成される空きのために完了されたRDMA送信メッセージの数に前記参照カウンタをセットするステップと、
完了ポーリング動作ごとに、前記参照カウンタを1だけ減らすステップと、
前記参照カウンタがゼロになった完了キューからCQEを除去するステップと
を含む、前記方法。 - 前記システムに、
待ち状態のRDMA送信メッセージの数がその閾値の数より大きい場合にのみ送信キューのWQEを更新するステップを更に実行させることを含む、請求項1に記載の方法。 - 前記閾値が、待ち状態のRDMA送信メッセージについての情報をストアするために割り当てられたリソースの数である、請求項2に記載の方法。
- 前記システムに、
前記CQEに完了データの少なくとも一部を含ませるステップを更に実行させることを含む、請求項1に記載の方法。 - 前記完了データの残りが、1つ以上のRDMA送信メッセージに関連付けられたWQEに含まれる、請求項4に記載の方法。
- 前記システムに、
(1)前記CQEが全ての完了データを含むこと、および、(2)CQE完了データが、1つ以上のRDMA送信メッセージに関連付けられたWQEに少なくとも部分的に含まれること、の一方を示すステップを更に実行させることを含む、請求項4に記載の方法。 - 書き込み動作の回数がN+1に等しく、ここで、Nは、前記空きが閉じる前に待ち状態であった完了されたRDMA送信メッセージの数である、請求項1に記載の方法。
- アウト・オブ・オーダの遠隔メモリ・データ・アクセス(RDMA)送信メッセージの配信において受信キューへのワーク・キュー要素(WQE)の書き込み動作及び完了キューへの完了キュー要素(CQE)の書き込み動作の回数を減らすためのシステムであって、
CQEを格納する完了キューであって、前記CQEは当該CQEが完了させるWQEの参照カウンタを保持する、前記完了キューと、
アウト・オブ・オーダのTCPセグメントを受信した結果としてTCPストリーム内に生成される空きのために完了されたRDMA送信メッセージの数に前記参照カウンタをセットする手段と、
完了ポーリング動作ごとに、前記参照カウンタを1だけ減らす手段と、
前記参照カウンタがゼロになった完了キューからCQEを除去する手段と
を備えている、前記システム。 - 待ち状態のRDMA送信メッセージの数がその閾値の数より大きい場合にのみ送信キューのWQEを更新する手段を更に備えている、請求項8に記載のシステム。
- 前記閾値が、待ち状態のRDMA送信メッセージについての情報をストアするために割り当てられたリソースの数である、請求項9に記載のシステム。
- 前記CQEに完了データの少なくとも一部をストアし、前記完了データの残りを1つ以上のRDMA送信メッセージに関連付けられたWQEにストアする手段を更に備えている、請求項8に記載のシステム。
- (1)前記CQEが全ての完了データを含むこと、および、(2)CQE完了データが、1つ以上のRDMA送信メッセージに関連付けられたWQEに少なくとも部分的に含まれること、の一方を示す手段を更に備えている、請求項11に記載のシステム。
- 書き込み動作の回数がN+1に等しく、ここで、Nは、前記空きが閉じる前に待ち状態であった完了したRDMA送信メッセージの数である、請求項8に記載のシステム。
- アウト・オブ・オーダの遠隔メモリ・データ・アクセス(RDMA)送信メッセージの配信において受信キューへのワーク・キュー要素(WQE)の書き込み動作及び完了キューへの完了キュー要素(CQE)の書き込み動作の回数を減らすためのコンピュータ・プログラムであって、コンピュータに、請求項1〜7のいずれか一項に記載の方法の各ステップを実行させるコンピュータ・プログラム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/733,594 US7441006B2 (en) | 2003-12-11 | 2003-12-11 | Reducing number of write operations relative to delivery of out-of-order RDMA send messages by managing reference counter |
PCT/US2004/040745 WO2005060579A2 (en) | 2003-12-11 | 2004-12-07 | Reducing number of write operations relative to delivery of out-of-order rdma send messages |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2007515719A JP2007515719A (ja) | 2007-06-14 |
JP4508195B2 true JP4508195B2 (ja) | 2010-07-21 |
Family
ID=34653127
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006543909A Expired - Fee Related JP4508195B2 (ja) | 2003-12-11 | 2004-12-07 | アウト・オブ・オーダのrdma送信メッセージの配信に関する書き込み動作の回数の減少 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7441006B2 (ja) |
EP (1) | EP1692582B1 (ja) |
JP (1) | JP4508195B2 (ja) |
KR (1) | KR100850254B1 (ja) |
CN (1) | CN100476769C (ja) |
WO (1) | WO2005060579A2 (ja) |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7539780B2 (en) * | 2003-12-01 | 2009-05-26 | International Business Machines Corporation | Asynchronous completion notification for an RDMA system |
CA2548085C (en) * | 2003-12-11 | 2014-04-29 | International Business Machines Corporation | Data transfer error checking |
US20060259570A1 (en) * | 2005-05-13 | 2006-11-16 | Microsoft Corporation | Method and system for closing an RDMA connection |
US7693138B2 (en) * | 2005-07-18 | 2010-04-06 | Broadcom Corporation | Method and system for transparent TCP offload with best effort direct placement of incoming traffic |
US7596628B2 (en) * | 2006-05-01 | 2009-09-29 | Broadcom Corporation | Method and system for transparent TCP offload (TTO) with a user space library |
US20070255866A1 (en) * | 2006-05-01 | 2007-11-01 | Eliezer Aloni | Method and system for a user space TCP offload engine (TOE) |
US7765317B1 (en) * | 2008-06-30 | 2010-07-27 | Qlogic, Corporation | System and methods for locating FPDU headers when markers are disabled |
CN102388385B (zh) * | 2011-09-28 | 2013-08-28 | 华为技术有限公司 | 数据处理的方法和装置 |
US9490988B2 (en) | 2012-04-10 | 2016-11-08 | Intel Corporation | Continuous information transfer with reduced latency |
DE112012006227B4 (de) * | 2012-04-10 | 2023-07-27 | Intel Corporation | Systeme und verfahren für den remotezugriff auf den direkten speicher mit reduzierter latenzzeit |
US8989037B2 (en) * | 2012-06-01 | 2015-03-24 | Broadcom Corporation | System for performing data cut-through |
US9558146B2 (en) * | 2013-07-18 | 2017-01-31 | Intel Corporation | IWARP RDMA read extensions |
US10223326B2 (en) * | 2013-07-31 | 2019-03-05 | Oracle International Corporation | Direct access persistent memory shared storage |
EP3126977A4 (en) * | 2014-04-02 | 2017-11-01 | Strato Scale Ltd. | Remote asymmetric tcp connection offload over rdma |
US10509764B1 (en) * | 2015-06-19 | 2019-12-17 | Amazon Technologies, Inc. | Flexible remote direct memory access |
US11340814B1 (en) | 2017-04-27 | 2022-05-24 | EMC IP Holding Company LLC | Placing data in a data storage array based on detection of different data streams within an incoming flow of data |
US11243899B2 (en) | 2017-04-28 | 2022-02-08 | International Business Machines Corporation | Forced detaching of applications from DMA-capable PCI mapped devices |
US10778767B2 (en) * | 2017-04-28 | 2020-09-15 | International Business Machines Corporation | Persistent memory replication in RDMA-capable networks |
US10803039B2 (en) | 2017-05-26 | 2020-10-13 | Oracle International Corporation | Method for efficient primary key based queries using atomic RDMA reads on cache friendly in-memory hash index |
US10719446B2 (en) | 2017-08-31 | 2020-07-21 | Oracle International Corporation | Directly mapped buffer cache on non-volatile memory |
US10956335B2 (en) | 2017-09-29 | 2021-03-23 | Oracle International Corporation | Non-volatile cache access using RDMA |
US11086876B2 (en) | 2017-09-29 | 2021-08-10 | Oracle International Corporation | Storing derived summaries on persistent memory of a storage device |
US10802766B2 (en) | 2017-09-29 | 2020-10-13 | Oracle International Corporation | Database with NVDIMM as persistent storage |
US10732836B2 (en) | 2017-09-29 | 2020-08-04 | Oracle International Corporation | Remote one-sided persistent writes |
CN109067506A (zh) * | 2018-08-15 | 2018-12-21 | 无锡江南计算技术研究所 | 一种基于多滑动窗口并发的轻量级异步消息实现方法 |
US11025564B2 (en) * | 2019-02-22 | 2021-06-01 | Microsoft Technology Licensing, Llc | RDMA transport with hardware integration and out of order placement |
US11068412B2 (en) * | 2019-02-22 | 2021-07-20 | Microsoft Technology Licensing, Llc | RDMA transport with hardware integration |
CN114090495A (zh) * | 2019-03-01 | 2022-02-25 | 华为技术有限公司 | 数据处理的方法、网卡和服务器 |
CN113874848A (zh) | 2019-05-23 | 2021-12-31 | 慧与发展有限责任合伙企业 | 用于促进网络接口控制器(nic)中对加速器的操作管理的系统和方法 |
CN110602211B (zh) * | 2019-09-16 | 2022-06-14 | 无锡江南计算技术研究所 | 一种带异步通知的乱序rdma方法与装置 |
CN111064680B (zh) * | 2019-11-22 | 2022-05-17 | 华为技术有限公司 | 一种通信装置及数据处理方法 |
CN110830516B (zh) * | 2019-12-19 | 2022-03-22 | 深信服科技股份有限公司 | 一种网络访问方法、装置、网络控制设备及存储介质 |
CN112073434B (zh) * | 2020-09-28 | 2022-06-07 | 山东产研集成电路产业研究院有限公司 | 降低基于toe的高频交易终端接收通道传输延迟的方法 |
CN113572575B (zh) * | 2021-07-16 | 2024-06-25 | 北京东方国信科技股份有限公司 | 一种自适应数据传输方法及系统 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62183638A (ja) * | 1986-02-07 | 1987-08-12 | Fujitsu Ltd | ロ−カルエリア・ネツトワ−クにおける同報通信制御方式 |
US8051212B2 (en) * | 2001-04-11 | 2011-11-01 | Mellanox Technologies Ltd. | Network interface adapter with shared data send resources |
US20030050990A1 (en) * | 2001-06-21 | 2003-03-13 | International Business Machines Corporation | PCI migration semantic storage I/O |
US6839896B2 (en) * | 2001-06-29 | 2005-01-04 | International Business Machines Corporation | System and method for providing dialog management and arbitration in a multi-modal environment |
US20030105931A1 (en) * | 2001-11-30 | 2003-06-05 | Weber Bret S. | Architecture for transparent mirroring |
US20030145230A1 (en) * | 2002-01-31 | 2003-07-31 | Huimin Chiu | System for exchanging data utilizing remote direct memory access |
US7543037B2 (en) * | 2003-12-02 | 2009-06-02 | International Business Machines Corporation | RDMA completion and retransmit system and method |
-
2003
- 2003-12-11 US US10/733,594 patent/US7441006B2/en not_active Expired - Fee Related
-
2004
- 2004-12-07 KR KR1020067010995A patent/KR100850254B1/ko not_active IP Right Cessation
- 2004-12-07 CN CNB2004800366332A patent/CN100476769C/zh not_active Expired - Fee Related
- 2004-12-07 WO PCT/US2004/040745 patent/WO2005060579A2/en active Search and Examination
- 2004-12-07 JP JP2006543909A patent/JP4508195B2/ja not_active Expired - Fee Related
- 2004-12-07 EP EP04813117A patent/EP1692582B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
WO2005060579A2 (en) | 2005-07-07 |
EP1692582A4 (en) | 2011-06-29 |
EP1692582A2 (en) | 2006-08-23 |
US7441006B2 (en) | 2008-10-21 |
CN100476769C (zh) | 2009-04-08 |
KR100850254B1 (ko) | 2008-08-04 |
US20050132017A1 (en) | 2005-06-16 |
KR20070001892A (ko) | 2007-01-04 |
EP1692582B1 (en) | 2012-07-11 |
JP2007515719A (ja) | 2007-06-14 |
WO2005060579A3 (en) | 2006-08-17 |
CN1997977A (zh) | 2007-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4583383B2 (ja) | Tcp再送信プロセス速度の向上方法 | |
JP4508195B2 (ja) | アウト・オブ・オーダのrdma送信メッセージの配信に関する書き込み動作の回数の減少 | |
US7383483B2 (en) | Data transfer error checking | |
US7243284B2 (en) | Limiting number of retransmission attempts for data transfer via network interface controller | |
US20220311544A1 (en) | System and method for facilitating efficient packet forwarding in a network interface controller (nic) | |
US7912979B2 (en) | In-order delivery of plurality of RDMA messages | |
US20050129039A1 (en) | RDMA network interface controller with cut-through implementation for aligned DDP segments | |
JP4979823B2 (ja) | データ転送エラー検査 | |
US20140310369A1 (en) | Shared send queue | |
US9692560B1 (en) | Methods and systems for reliable network communication |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20071002 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20091126 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20091201 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100126 Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20100126 |
|
RD12 | Notification of acceptance of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7432 Effective date: 20100126 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20100127 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20100419 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20100419 |
|
RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20100419 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100426 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130514 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140514 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |