JP4979823B2 - データ転送エラー検査 - Google Patents
データ転送エラー検査 Download PDFInfo
- Publication number
- JP4979823B2 JP4979823B2 JP2011053884A JP2011053884A JP4979823B2 JP 4979823 B2 JP4979823 B2 JP 4979823B2 JP 2011053884 A JP2011053884 A JP 2011053884A JP 2011053884 A JP2011053884 A JP 2011053884A JP 4979823 B2 JP4979823 B2 JP 4979823B2
- Authority
- JP
- Japan
- Prior art keywords
- segment
- ddp
- data transfer
- tcp
- mpa
- 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
- 238000012546 transfer Methods 0.000 title claims description 103
- 239000000872 buffer Substances 0.000 claims abstract description 87
- 238000000034 method Methods 0.000 claims abstract description 69
- 239000003550 marker Substances 0.000 claims description 61
- 230000005540 biological transmission Effects 0.000 claims description 42
- 238000003860 storage Methods 0.000 claims description 10
- 125000004122 cyclic group Chemical group 0.000 claims description 9
- 238000010200 validation analysis Methods 0.000 abstract description 48
- 230000008859 change Effects 0.000 abstract description 6
- 230000008569 process Effects 0.000 description 43
- 238000012545 processing Methods 0.000 description 38
- 238000004364 calculation method Methods 0.000 description 31
- 238000010586 diagram Methods 0.000 description 29
- 230000004044 response Effects 0.000 description 20
- 238000011084 recovery Methods 0.000 description 15
- 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
- 238000004891 communication Methods 0.000 description 5
- 238000001914 filtration Methods 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 4
- 238000004590 computer program 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
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 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
- 238000011156 evaluation Methods 0.000 description 1
- 238000009432 framing Methods 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
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/18—Automatic repetition systems, e.g. Van Duuren systems
- H04L1/1829—Arrangements specially adapted for the receiver end
- H04L1/1835—Buffer management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/163—In-band adaptation of TCP data exchange; In-band control procedures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Theoretical Computer Science (AREA)
- Communication Control (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のスケジュールを設定し、配信保証を満足させる。マーカ付きプロトコル・データ・ユニット整列(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 (18)
- データ転送を処理するためのネットワーク・インタフェース・コントローラ(NIC)であって、
前記データ転送をリアセンブリのためにストアするための第1のストレージ手段と、
前記データ転送を宛先バッファに対して直接データ配置するためにストアするための第2のストレージ手段と、
前記データ転送を受信するための手段であって、前記データ転送が第1のタイプおよび第2のタイプの一方として示される、手段と、
前記データ転送について巡回冗長検査(CRC)を計算するための手段と、
伝送制御プロトコル(TCP)セグメントの長さと、マーカ付きプロトコル・データ・ユニット整列(MPA)フレームの長さとの比較、および、前記データ転送内の直接データ配置(DDP)セグメントのCRCの妥当性に基づいて、
(c1)前記データ転送をドロップし受信を確認しないこと、
(c2)前記データ転送を前記第1のストレージ手段に配置すること、
(c3)前記データ転送を、宛先バッファに直接データ配置するため、前記第2のストレージ手段に配置すること、
のうち1つを実行するための手段と、
を含む、NIC。 - 前記データ転送が前記第1のタイプである場合に、前記実行する手段が(c2)を実行する、請求項1に記載のNIC。
- 前記データ転送が単一または複数の直接データ配置(DDP)セグメントを含むことを判定するための手段を更に含む、請求項1に記載のNIC。
- 前記データ転送が複数のDDPセグメントを含み、全てのDDPセグメントが有効CRCを有し、TCPセグメントに完全に含まれる場合に、前記実行する手段が(c3)を実行する、請求項3に記載のNIC。
- 前記データ転送が複数のDDPセグメントを含み、第1のDDPセグメントが無効CRCを有し、前記第1のDDPセグメントのDDPヘッダが以前のDDPセグメントに関連したMPA長によって参照される場合に、前記実行する手段が(c1)を実行する、請求項3に記載のNIC。
- 前記データ転送が複数のDDPセグメントを含み、第1のDDPセグメントが無効CRCを有し、前記第1のDDPセグメントのDDPヘッダが以前のDDPセグメントに関連したMPA長によって参照されない場合に、
前記DDPヘッダがMPAマーカによって参照される場合には(c1)を実行し、
前記DDPヘッダが前記MPAマーカによって参照されない場合には(c2)を実行する、請求項3に記載のNIC。 - 前記データ転送が複数のDDPセグメントを含み、最後のDDPセグメントが前記TCPセグメントの境界の外側まで延出する場合、前記実行する手段が(c1)を実行し、
前記データ転送が複数のDDPセグメントを含み、最後のDDPセグメントが前記TCPセグメントの境界の外側まで延出しない場合、前記実行する手段が(c2)を実行する、請求項3に記載のNIC。 - 前記データ転送が単一のDDPセグメントを含み、前記単一のDDPセグメントに関連したMPA長が前記データ転送の伝送制御プロトコル(TCP)セグメント長よりも大きい場合、前記実行する手段が(c2)を実行する、請求項3に記載のNIC。
- 前記データ転送が単一のDDPセグメントを含み、このセグメントが、TCPセグメント長に等しい前記単一DDPセグメントに関連したMPA長および有効CRCを有する場合、前記実行する手段が(c3)を実行する、請求項3に記載のNIC。
- 前記データ転送が単一のDDPセグメントを含み、このセグメントが、TCPセグメント長に等しい前記単一DDPセグメントに関連したMPA長、無効CRC、および以前のDDPセグメントに関連したMPA長によって参照されるDDPヘッダを有する場合、前記実行する手段が(c1)を実行する、請求項3に記載のNIC。
- 前記単一のDDPセグメントが、
TCPセグメント長に等しい前記単一DDPセグメントに関連したMPA長、無効CRC,およびMPAマーカによって参照されないDDPヘッダを有する場合、前記実行する手段が、
前記DDPヘッダがMPAマーカによって参照される場合、(c1)を実行し、
前記DDPヘッダがMPAマーカによって参照されない場合、(c2)を実行する、請求項10に記載のNIC。 - 前記実行する手段が(c2)を実行する場合、前記データ転送タイプを前記第1のタイプにセットするための手段を更に含む、請求項1に記載のNIC。
- 接続コンテキストにおいてTCPホール情報をクリアし、前記実行するための手段が(c3)を実行するアウト・オブ・オーダのデータ転送の報告の受信を停止させるための手段を更に含む、請求項1に記載のNIC。
- 前記データ転送がDDPセグメントを含み、前記計算する手段が前記データ転送の全DDPセグメントについて共にCRCを計算する、請求項1に記載のNIC。
- 前記データ転送がMPAマーカを含まない、請求項1に記載のNIC。
- エラーを含む各データ転送について、再送信試行の回数をストアするための第3のストレージ手段と、
最大のシーケンス番号をストアするための第4のストレージ手段と、
を含む、請求項1に記載のNIC。 - 前記データ転送についてCRCが無効であることは、前記データ転送が新たに受信されたエラーを含むデータ転送であることを示し、この場合、
前記再送信試行の回数が前記データ転送についての最大再送信試行回数を超えた場合、前記新たに受信したエラーを含むデータ転送に対して、前記実行する手段が(c2)を実行し、
前記再送信試行の回数が前記データ転送についての最大再送信試行回数を超えていない場合、前記新たに受信したエラーを含むデータ転送に対して、前記実行する手段が(c1)を実行し、
前記NICが、
前記実行する手段が(c1)を実行する場合、前記新たに受信したエラーを含むデータ転送についての前記再送信試行回数を1だけ増やすための手段と、
前記実行する手段が(c1)を実行する場合、前記第4のストレージ手段を更新して、少なくとも1つの以前に受信したエラーを含むデータ転送と前記新たに受信したエラーを含むデータ転送との間の最大のシーケンス番号を保持するための手段と、
を含む、請求項15に記載のNIC。 - イン・オーダのデータ転送について前記CRCが有効であり、前記イン・オーダのデータ転送のシーケンス番号が前記ストアされた最大のシーケンス番号よりも大きい場合、前記再送信試行回数をリセットするための手段を更に含み、
前記実行する手段が、
(a)イン・オーダのデータ転送について前記CRCが有効であり、前記イン・オーダのデータ転送の前記シーケンス番号が前記ストアされた最大のシーケンス番号以下である場合、および
(b)前記リセットする手段が前記再送信試行回数をリセットする場合、(c3)を実行する、請求項15に記載のNIC。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/733,734 | 2003-12-11 | ||
US10/733,588 US7383483B2 (en) | 2003-12-11 | 2003-12-11 | Data transfer error checking |
US10/733,588 | 2003-12-11 | ||
US10/733,734 US20050129039A1 (en) | 2003-12-11 | 2003-12-11 | RDMA network interface controller with cut-through implementation for aligned DDP segments |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006543925A Division JP4755596B2 (ja) | 2003-12-11 | 2004-12-08 | データ転送エラー検査 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011176835A JP2011176835A (ja) | 2011-09-08 |
JP4979823B2 true JP4979823B2 (ja) | 2012-07-18 |
Family
ID=34713901
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006543925A Expired - Fee Related JP4755596B2 (ja) | 2003-12-11 | 2004-12-08 | データ転送エラー検査 |
JP2011053884A Expired - Fee Related JP4979823B2 (ja) | 2003-12-11 | 2011-03-11 | データ転送エラー検査 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006543925A Expired - Fee Related JP4755596B2 (ja) | 2003-12-11 | 2004-12-08 | データ転送エラー検査 |
Country Status (5)
Country | Link |
---|---|
EP (1) | EP1692707B1 (ja) |
JP (2) | JP4755596B2 (ja) |
KR (1) | KR100974155B1 (ja) |
CA (1) | CA2548085C (ja) |
WO (1) | WO2005060594A2 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101753605B (zh) * | 2008-12-02 | 2012-08-08 | 北大方正集团有限公司 | 一种数据验证方法及一种服务器 |
US9037753B2 (en) | 2013-08-29 | 2015-05-19 | International Business Machines Corporation | Automatic pinning and unpinning of virtual pages for remote direct memory access |
US9213576B2 (en) | 2014-01-31 | 2015-12-15 | Google Inc. | Efficient resource utilization in data centers |
WO2016076631A1 (en) | 2014-11-11 | 2016-05-19 | Samsung Electronics Co., Ltd. | Transmitting apparatus, receiving apparatus and controlling method thereof |
KR101800428B1 (ko) * | 2014-11-11 | 2017-11-23 | 삼성전자주식회사 | 송신 장치, 수신 장치 및 그 제어 방법 |
KR101581614B1 (ko) * | 2014-12-24 | 2015-12-31 | 한국산업기술대학교산학협력단 | 스마트 클램프 미터와의 통신 단절 탐지 장치 및 통신 단절 탐지의 운용 방법 |
JP2019159735A (ja) * | 2018-03-13 | 2019-09-19 | 日本電気株式会社 | コントローラおよびデータ転送方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69427924T2 (de) * | 1994-01-03 | 2002-04-11 | Norton-Lambert Corp., Santa Barbara | Datenübertragungsverfahren und -vorrichtung, die hash-zahlen verwenden |
US6226680B1 (en) * | 1997-10-14 | 2001-05-01 | Alacritech, Inc. | Intelligent network interface system method for protocol processing |
US6256307B1 (en) * | 1998-03-27 | 2001-07-03 | Hewlett-Packard Co. | Local area network receive filter |
US8019901B2 (en) * | 2000-09-29 | 2011-09-13 | Alacritech, Inc. | Intelligent network storage interface system |
JP3509095B2 (ja) * | 2001-03-30 | 2004-03-22 | 日本電気株式会社 | 可変長フレーム同期装置、及び、可変長フレーム多重伝送装置 |
US7295555B2 (en) | 2002-03-08 | 2007-11-13 | Broadcom Corporation | System and method for identifying upper layer protocol message boundaries |
US7543037B2 (en) * | 2003-12-02 | 2009-06-02 | International Business Machines Corporation | RDMA completion and retransmit system and method |
US7441006B2 (en) * | 2003-12-11 | 2008-10-21 | International Business Machines Corporation | Reducing number of write operations relative to delivery of out-of-order RDMA send messages by managing reference counter |
US7177941B2 (en) * | 2003-12-11 | 2007-02-13 | International Business Machines Corporation | Increasing TCP re-transmission process speed |
US10217283B2 (en) * | 2015-12-17 | 2019-02-26 | Google Llc | Navigation through multidimensional images spaces |
-
2004
- 2004-12-08 KR KR1020067011283A patent/KR100974155B1/ko not_active IP Right Cessation
- 2004-12-08 JP JP2006543925A patent/JP4755596B2/ja not_active Expired - Fee Related
- 2004-12-08 EP EP04813260A patent/EP1692707B1/en active Active
- 2004-12-08 CA CA2548085A patent/CA2548085C/en active Active
- 2004-12-08 WO PCT/US2004/040919 patent/WO2005060594A2/en active Application Filing
-
2011
- 2011-03-11 JP JP2011053884A patent/JP4979823B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP4755596B2 (ja) | 2011-08-24 |
JP2007537616A (ja) | 2007-12-20 |
JP2011176835A (ja) | 2011-09-08 |
CA2548085A1 (en) | 2005-07-07 |
CA2548085C (en) | 2014-04-29 |
EP1692707A2 (en) | 2006-08-23 |
KR20060123274A (ko) | 2006-12-01 |
KR100974155B1 (ko) | 2010-08-04 |
EP1692707A4 (en) | 2011-04-20 |
WO2005060594A3 (en) | 2007-03-01 |
WO2005060594A2 (en) | 2005-07-07 |
EP1692707B1 (en) | 2013-02-27 |
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 | |
US6898638B2 (en) | Method and apparatus for grouping data for transfer according to recipient buffer size |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20120215 |
|
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: 20120321 |
|
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: 20120417 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150427 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4979823 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |