JP4464969B2 - Rdma完了および再送信システムおよび方法 - Google Patents

Rdma完了および再送信システムおよび方法 Download PDF

Info

Publication number
JP4464969B2
JP4464969B2 JP2006542745A JP2006542745A JP4464969B2 JP 4464969 B2 JP4464969 B2 JP 4464969B2 JP 2006542745 A JP2006542745 A JP 2006542745A JP 2006542745 A JP2006542745 A JP 2006542745A JP 4464969 B2 JP4464969 B2 JP 4464969B2
Authority
JP
Japan
Prior art keywords
message
channel
completion
sequence number
requestout
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006542745A
Other languages
English (en)
Other versions
JP2007513583A5 (ja
JP2007513583A (ja
Inventor
ビラン、ジオラ
マチュルスキー、ゾリック
マクヘルヴァクス、ヴァディム
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 JP2007513583A publication Critical patent/JP2007513583A/ja
Publication of JP2007513583A5 publication Critical patent/JP2007513583A5/ja
Application granted granted Critical
Publication of JP4464969B2 publication Critical patent/JP4464969B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data
    • G06F11/3086Monitoring arrangements determined by the means or processing involved in reporting the monitored data where the reporting involves the use of self describing data formats, i.e. metadata, markup languages, human readable formats
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4405Initialisation of multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/4493Object persistence
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Library & Information Science (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Communication Control (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、一般的に、リモート・データ・メモリ・アクセス(RDMA)完了および再送信システムに関し、より特定的には、ResponseOutチャンネルと、RequestOutチャンネルとの間の順序を維持するRDMA完了および再送信の実施に関する。
RDMA(リモート・データ・メモリ・アクセス)は、あるコンピュータが情報を他のコンピュータのメモリ内に直接置くことができるようにするネットワーク・インターフェイス・カード(NIC)機能である。本技術は、帯域幅および処理オーバヘッドに対する要求を最小限にすることによって、待ち時間を削減している。従来のハードウェアおよびソフトウェア・アーキテクチャは、サーバのCPUおよびメモリに対して著しく負担を課している。なぜならば、カーネルとアプリケーションとの間でデータをコピーしなければならないからである。メモリ障害は、接続速度がサーバの処理能力およびメモリ帯域幅を上回るに従っていっそう深刻になる。
RDMAは、この点の回避を、ハードウェアにおける確実なトランスポート・プロトコルをRNIC(RDMAネットワーク・インターフェイス・カード)上で実施し、かつ、カーネルバイパスを使用するコピーなしのネットワーキングをサポートすることによって行う。コピーなしのネットワーキングによって、RNICは、データをアプリケーションメモリへまたはそこから直接転送することができ、アプリケーション・メモリとカーネルとの間でデータをコピーすることが不要となる。
カーネルバイパスによって、アプリケーションは、カーネル呼び出しを実行しなくてもRNICに対してコマンドを発行することができる。カーネルの介在をなんら必要とすることなく、RDMA要求は、ユーザ空間からローカルRNICへ、およびネットワークを越えてリモートRNICへ発行される。これにより、ネットワーク・トラフィックを取り扱っている間のカーネル空間とユーザ空間との間のコンテキスト切り換え数が削減される。
RDMA消費者(アプリケーション)は、通信にメッセージ意味論を使用する。データは、メッセージ内での送信用に書き込まれ、メッセージ内で受信され、完了はメッセージ単位で通知されることが期待されている。それに対して、TCPは、バイト・ストリーム重視のプロトコルであって、ULPデータのメッセージという範囲がありうることに気づいていない。したがって、メッセージからバイト・ストリームへの意味論の変換というタスクは、RDMAおよびそこから肩代わりされた実施によって行われることになる。
RDMAは、TCPの信頼性サービスを使用するメッセージ重視のULPである。RDMAは、メッセージ重視のULPをバイト重視のTCP意味論へマッピングする際に別レベルの複雑性を加えることになる。RDMAは、同一のTCP接続を使用して、2つの独立したソースによって書き込まれたメッセージを送信する。
・RequestOut−ローカル消費者によって発せられたRDMA要求
・ResponsOut−リモート消費者によって送られた受信RDMA読み出し要求の受信および処理の結果として、RNICによって発せられたRDMA応答
RNICは、RequestOutメッセージおよびResponseOutメッセージを同一のTCP接続を通じて送信する場合にインターリーブする。バイト・ストリームからメッセージ・ストリームへのマッピングに加えて、RNICは、完了処理および再送信処理中に、RequestOutおよびResponseOutからのメッセージ間における「送信順序」を保存する必要がある。
異なるRDMA要求(例えば、フェンス(Fence))および完了順序規則(例えば、RNICがRDMA読み出し応答を受信すると、RDMA読み出し要求が完了する)は、RequestOutにおける送信または完了処理を中断させてもよい。しかしながら、この中断によって、ResponseOutがRDMA読み出し応答の送信および完了を行わなくなるわけではない。したがって、RDMA要求キューとRDMA応答キューとの間の独立性を保存するためには、当該2つのキュー間の順番を効率的に保存する必要がある。
この問題を解決する取り組みの一つとしては、例えば、制御構造(記述子)を使用するか、またはデータの別個のコピーを保持するか、あるいはその両方によって、単一の要求/応答チャンネルを実施して構築することが挙げられよう。そのような取り組みには、いくつかの短所があり、以下のものが含まれる。
・追加のコピー動作が必要である。
・その様な取り組みを実施するには、より多くのRNICリソースが必要となる(データ/制御はアダプタ・メモリにコピーされる)。
・柔軟性の欠如(アダプタ・メモリは、限られたリソースであり、有線上において未処理となりうるRDMAメッセージの数を制限する。)
・RDMA要求とRDMA応答との間の完了順序付けを実施するのはいっそう困難である。
従って、上述の問題に対処するための解決策が必要である。
本発明は、追加のコピーまたは順序を維持するための制御構造を必要せずにRDMAストリームの完了および再送信のための効率的な解決策を提供することによって、上記の問題およびその他の問題に対処するものである。第1の局面において、本発明は、RequestOutチャンネルおよびResponseOutチャンネルを有するリモート・データ・メモリ・アクセス(RDMA)環境における完了要求を取り扱うための処理であって、チャンネル毎の記述子リストであって、その各々が、チャンネル内のメッセージ毎のメッセージ記述子を含む、記述子リストと、チャンネル交換がRequestOutチャンネルとResponseOutチャンネルとの間で生じる度に、メッセージ記述子内のメッセージ長フィールドをメッセージ内の最終バイトのシーケンス番号で更新するための更新機構と、完了コンテキスト内の値を検査して、次回完了メッセージのシーケンス番号と最終受け取りシーケンス番号とを比較して、メッセージを完了すべきかどうかを決定する肯定応答(Ack)完了システムとを備える処理を提供するものである。
第2の局面において、本発明は、RequestOutチャンネルおよびResponseOutチャンネルを有するリモート・データ・メモリ・アクセス(RDMA)環境における完了処理を取り扱うための方法であって、各チャンネルにおける肯定応答完了を、次回完了メッセージのシーケンス番号が無効である場合には、完了処理の処理の過程が終了したると判断するステップと、次回完了メッセージのシーケンス番号が最終受け取りシーケンス番号よりも大きい場合には、完了処理の過程が終了したと判断するステップと、次回完了メッセージのシーケンス番号が最終受け取りシーケンス番号以下である場合には、チャンネル内のメッセージを完了させるステップとを伴って実行するステップを含む方法を提供するものである。
第3の局面において、本発明は、RequestOutチャンネルおよびResponseOutチャンネルを有するリモート・データ・メモリ・アクセス(RDMA)環境における再送信要求に対して再送信すべきセグメントの位置を特定するための方法であって、RequestOutチャンネルおよびResponseOutチャンネルの両方について候補メッセージを識別するステップと、2つの候補メッセージから、送信すべきセグメントを搬送するメッセージを選択するステップと、再送信すべきセグメントの開始を指すポインタ記述子の位置を決定するステップとを備える方法を提供するものである。
第4の局面において、本発明は、RequestOutチャンネルおよびResponseOutチャンネルを有するリモート・データ・メモリ・アクセス(RDMA)環境における送信要求を取り扱うためのシステムであって、チャンネル毎の記述子リストであって、その各々が、チャンネル内のメッセージ毎のメッセージ記述子を含む、記述子リストと、チャンネル交換がRequestOutチャンネルとResponseOutチャンネルとの間で生じる度に、メッセージ記述子内のメッセージ長フィールドをメッセージ内の最終バイトのシーケンス番号で更新するための更新機構とを備えるシステムを提供するものである。
本発明のこれらの特徴および他の特徴は、添付の図面と共に本発明の様々な局面についての以下の詳細な説明から、いっそう容易に理解されるだろう。
RDMA完了および再送信を実施するためのシステムおよび方法を以下に説明する。RDMAプロトコル内では、「完了(completion)」は、特定のRDMA動作が配置および配信を含むRDMA動作について指定されたすべての機能を行ったことをULP(上層プロトコル)へ通知する処理として規定される。各RDMA動作の完了の意味論は、固有に規定される。「再送信(retransmit)」は、チャンネル上でデータを再送信する処理として規定される。
以下に説明するように、本発明は、二重チャンネルの実施(すなわち、1つはResponseOut用で、1つはRequestOut用)を利用する。そのような実施を達成するには、本発明は、完了または再送信動作が必要な場合にはいつでも、2つのチャンネル間の順序を保存するための手法を提供する。
この説明の目的のために、RDMAプロコルと、そのRNIC環境での実施とを読者が理解しているものとする。RDMAプロトコルは、ウェブ上の<www.rdmaconsortium.org/home>にて入手可能である。
背景−RDMAプロトコル順序規則
RDMAプロトコルは、RequestOutチャンネルを介して送信されたメッセージについての完了順序規則を規定する。これらの規則の概要は以下の通りである。
すべてのRDMA要求は、消費者によって書き込まれた順番で完了されなければならない。RDMA要求は、3種類の要求を有する。
(1)単一のRDMAメッセージ(例えば、送出(Send)、書き込み(Write))からなるRDMA動作。これらの動作では、ローカルからリモート・ホストへデータを転送することになっており、リモートからローカル・ホストへ送られた単一のRDMAメッセージからなる。送出および書き込み動作は、これらのメッセージを備えるすべてのTCPセグメントがTCP接続の他の終点へ確実に送信されるであろうことをRNICが保証できる場合に、完了したものとみなされる。
(2)例えば読み出し(Read)などのいくつか(通常2つ)のRDMAメッセージからなるRDMA動作。これらの動作では、リモート・メモリからデータを読み出すことになっている。そのような動作は、読み出し要求(Read Request)および読み出し応答(Read Request)という2つのRDMAメッセージからなる。読み出し要求は、要求発信者によってデータ・ソースへ送られるメッセージである。このメッセージは、リモート・メモリからデータを読み出すのに必要なすべての情報を搬送しており、応答メッセージを構築する。応答メッセージは、リモート・ホストによって生成される読み出し応答である。このメッセージは、要求者のメモリへ書き込まれるべきデータを搬送しており、また、データが書き込まれるべき位置の説明を含む。読み出し動作は、RDMA読み出し応答メッセージが読み出し開始者によって正常に受信された場合に完了したものとみなされる。RDMA読み出し応答は、別個のRDMA動作ではない(すなわち、読み出し動作の一部である)ので、メッセージは、トランスポート層が正常に送信した場合に完了したものとみなされる。
(3)ローカルRDMA動作(例えば、結合(Bind)、高速レジスタ(Fast−Register)など)。これらの動作の結果、いかなるデータ(例えば、TCPセグメント)も送信されるものではない。ローカルRDMA動作は、その処理がRNICによって終了した場合に完了したものとみなされる。
概要
図1を参照すると、ResponseOutチャンネルとRequestOutチャンネルとの間の順序を保存するための完了および再送信システム10が示されている。完了アルゴリズム24または再送信アルゴリズム26のいずれかを使用して「完了のための要求」または「再送信のための要求」が発行される場合に、順序は維持される。処理を促進するために、システム10は、
(1)RequestOutチャンネル16およびResponseOutチャンネル18について別個の記述子リスト12および14を提供し、
(2)これらの記述子リストからの情報を使用して、送信、完了、および再送信動作を行う。
この取り組みにおいて、各ワーク・キュー・エントリ(WQE)は2回処理され(例えば、読み出され)、1回目はWQEの送信時、2回目はWQEの完了時に行われる(なお、再送信動作は、再送信されたWQEをさらに読み出す必要がある場合がある)。
RNICは、接続を維持する必要がある各RDMA接続について情報を保持する。この情報は、接続コンテキスト22に保持され、本実施形態においては、接続コンテキスト・フィールドの組を使用して、完了アルゴリズム24および再送信アルゴリズム26の実施を促進する。一実施形態例において、コンテキスト・フィールドは、Context[Ch#]::FieldNameによって示される。本発明に関連するのは、以下のコンテキスト・フィールドである。
1.Context[Ch#]::PendingCompletionRequest−取り扱う保留AckまたはRDMA読み出し完了要求をRNICが有することを表すために使用されるビットである。
2.Context[Ch#]::CompletedReadRequestsNum−完了した読み出し要求の数を表すために使用される。
3.Context[Ch#]::ReqOutLastCompletedMsgSn−request outチャンネルにおける最終完了済みメッセージのシーケンス番号(SN)を表すために使用される。
4.Context[Ch#]::ReqOutNextToCompleteMsgSN−request outチャンネルにおける次回完了メッセージのシーケンス番号(SN)を表すために使用される。
5.Context[Ch#]::RespOutLastCompletedMsgSN−response outチャンネルにおける最終完了済みメッセージのシーケンス番号(SN)を表すために使用される。
6.Context[Ch#]::RespOutNextToCompleteMsgSN−response outチャンネルにおける次回完了メッセージのシーケンス番号(SN)を表すために使用される。
7.Context[Ch#]::LastAckedSN−最終受信済みACKのシーケンス番号である。
8.Context[Ch#]::PendingReadRequest−このビットは、完了動作を実行中にRNICがRDMA読み出し要求で停止したため、受信論理によるRDMA読み出し応答の受信および配信を待った上でこの読み出し要求を完了させ、任意の後続のRDMA要求の完了に進まなくてはならないことを示している
9.Context[Ch#]::PendingReadRequestsCount−送信済みで未完了のRDMA読み出し要求の数を表すために使用される値である。
10.Context[Ch#]::PendingReadRequestCompletion−PendingReadRequestビットを使用する必要がある。
11.Context[Ch#]::TotalPostedMsgCount−書き込み済みで未送信のメッセージの数を表す。
12.Context[Ch#]::TotalPendingMsgCount−接続毎に完了を待っている送信済みのメッセージの数を表す。
記述子リスト内のRDMAメッセージを表すために、いくつかの記述子の種類が使用される。そのうちの1つがメッセージ記述子であり、図2に示すようなものである。この記述子は、各RDMAメッセージを開始させ、メッセージ記述と、メッセージを表すために使用される他の記述子についての情報とを搬送する。本発明に関連するのは、以下のフィールドである。
1.MessageDescriptor::MessageLengthは、メッセージ長またはシーケンス番号のいずれかを搬送するために使用される。
2.MessageDescriptor::SN/MsgLengthBitは、MessageDescriptor::MessageLengthの内容を説明するために使用される。
完了アルゴリズム
本発明に係る完了アルゴリズム24は、2つの完了トリガを有する。
(1)TCP肯定応答(Ack)の受信。これは、送信されたデータが接続の他の終点で正常に受信され、かつ、本Ackの範囲であるRDMA動作(送出、書き込み)が完了することを示す。読み出し動作の一部としてのRDMA読み出し応答メッセージは、このメッセージの範囲であるAckが受信されると完了する。
(2)RDMA読み出し応答の受信および配信。これは、対応するRDMA読み出し要求(または保留読み出し動作)が完了することを示す。
保留完了要求の表示は、Context[Ch#]::PendingCompletionRequest(RNICが完了動作を行う必要なことを表す。これは、受信論理が新たなTCP Ackを受信したか、もしくはRDMA読み出し応答を受信および配信したかのいずれかを実際には意味し、完了論理は、もしあればどの動作が完了したかを把握して、これらの動作の完了を消費者に報告しなければならない)と、Context[Ch#]::CompletedReadReqeustsNum(完了した読み出し要求の数を含む)とを含む接続コンテキスト22内に保持される。このフィールドは、読み出し論理によって受信されかつ配信された、RDMA読み出し応答メッセージの数を保持する。これは、完了論理が、消費者によって書き込まれたこれらの数多くの保留RDMA読み出しメッセージを完了できることを事実上意味する。RNICの観点からは、完了論理は、これらの数多くのRDMA読み出し要求を完了しており、当該完了を消費者に対して報告する必要がまだある。
これらの場合を取り扱うための全手法を図3に示す。はじめに、ステップS1において、Context[Ch#]::CompletedReadRequetsNumがチェックされる。値が非ゼロである場合(ステップS2)、これは、当該接続が保留読み出し要求完了を有することを意味する。この場合には、RNICは、後述の「読み出し要求完了」動作をまず行い、その後、Context[Ch#]::PendingCompletionRequestビットに関わらず、同じく後述の「Ack完了」(ステップS3およびS4)を行う。Context[Ch#]::CompletedReadRequestNumが0に等しく、かつ、Context[Ch#]::PendingCompletionRequestビットが設定されている場合には(ステップS5)、RNICは、同じく後述のAck完了を行う(ステップS4)
Ack完了
受信されたTCP Ackは、RequestOutチャンネル16およびResponseOutチャンネル18に書き込まれたRDMA要求を完了させる。完了処理の主な課題は、ResponseOutチャンネルおよびRequestOutチャンネルからのメッセージが送信された順番に従うということである。この順番を保存するためには、RNICは、更新機構25を使用して、メッセージの最終バイトのシーケンス番号(SN)を搬送する選択されたメッセージのメッセージ記述子を更新する。この更新処理は、「書き戻し(write−back)」とも称され、RNICがメッセージの最終セグメントを送信するときに行われる。RNICは、MessageDescriptor::MessageLengthフィールドを使用して、メッセージ長またはシーケンス番号のいずれかを搬送する。MessageDescriptor::SN/MsgLengthBitは、MessageDescriptor::MessageLengthフィールドの内容を記述する。
RNICは、すべてのメッセージを更新するのではなく、チャンネル交換後、すなわち、チャンネル交換後に第1のメッセージが更新された後に使用されたもののみを更新する。RDMAメッセージを送信する際に、RNICは、RequestOutメッセージおよびResponseOutメッセージをインターリーブする。RNICは、ResponseOutチャンネルとRequestOutチャンネルとの間を仲裁して、これらのチャンネルのうちの1つを選択して、次のメッセージを送信する。送信済みメッセージの途中では、チャンネル交換は行われない。チャンネル間で交換が行われる場合に、更新機構25は、チャンネル交換後のチャンネル内の次のメッセージのSNで、メッセージ記述子を更新する。交換後、メッセージ記述子は、新たなチャンネル内の第1のメッセージについてのみ更新され、関連SNは、当該メッセージの最終送信済みバイトのSNへ更新される。図2に示すように、メッセージ長フィールド(メッセージ長またはシーケンス番号のいずれか)に保持された情報は、その後、完了および再送信処理中に使用される。
更新処理の一例を図4に示す。この例において、RNICは、チャンネルを4回交換する。RequestOutチャンネルにおけるメッセージ#1で開始し、その後、ResponseOutチャンネルに交換して(メッセージ#2)、このメッセージを、このメッセージ#2の最終バイトのSNで更新する。メッセージ#3の後、RNICは、RequestOutチャンネルへの交換をメッセージ#4のために行い、その更新を行う。メッセージ#5の後、RNICは、ResponseOutチャンネルへの交換をメッセージ#6のために行い、その更新を行う。メッセージ#7の後、RNICは、RequestOutチャンネルへの交換をメッセージ#8のために行い、その更新を行う。
書き戻し動作は、両方のチャンネルを利用する接続についてのみ行われる。接続が1つのチャンネルしか使用しない場合には、書き戻し動作は行われない。
RNCは、Context[Ch#]::ReqOutLastCompletedMsgSN,Context[Ch#]::ReqOutNextToCompleteMsgSN,Context[Ch#]::RespOutLastCompletedMsgSN,およびContext[Ch#]::RespOutNextToCompleteMsgSNの各チャンネルについて、いくつかのシーケンス番号を接続コンテキスト22に保持し、これらは、各チャンネルにおける最終完了済みおよび最初の未完了メッセージのシーケンス番号(SN)をそれぞれ搬送する。これらは、初期接続シーケンス番号を搬送するように初期化されて、完了動作中に更新される。
Ack完了フロー
完了フローは、ResponseOutチャンネルおよびRequestOutチャンネルの両方について別個に、一連のステップを通じてRNICルーピングによって実施される。この処理を以下に説明する。なお、最終受信済みACKのシーケンス番号は、Context[Ch#]::LasAckedSNに示される。
ステップは、図5のフロー図を参照すると、以下のような概略となる。
ステップ1(S10):チャンネルがRDMA読み出し要求の完了を待っている場合(すなわち、Context[Ch#]::PendingReadRequestが設定されている場合)、RNICは、完了要求を無視する(S11)。なお、この規則は、ResponseOutチャンネルには妥当ではない。なぜならば、ResponseOutチャンネルは、RDMA読み出し応答のみを搬送するからである。
ステップ2(S12):Context[Ch#]::NextToCompleteMsgSNが無効である場合には、このチャンネルについての完了要求の処理を完了する(S13)。これは、これ以上メッセージか書き込まれていないか、次に書き込まれたメッセージが完全には送信されなかったことのいずれかを示す。
ステップ3(S14):Context[Ch#]::NextToCompleteMsgSN>Context[Ch#]::LastAckedSNである場合には、受信された完了要求は、当該チャンネル内のいかなるメッセージをも完了させず、このチャンネルについての完了要求の処理を終了させる(S13)。
ステップ4(S15):その他の場合には、完了要求は、当該チャンネル内の少なくとも1つのメッセージを完了させて、RNICは、接続コンテキストを以下のように更新する。
・Context[Ch#]::LastCompletedMsgSNは、Context[Ch#]::NextToCompleteMsgSNで更新され、
・Context[Ch#]::NextToCompleteMsgSNは、チャンネル内の次のメッセージの最終SNで更新される。次のメッセージの最終SNは、以下のやり方のうちの1つで取り出されることができる。
(1)本フィールドがシーケンス番号を搬送している旨をMessageDescriptor::SN/MsgLengthBitが示している場合には、MessageDescriptor::MessageLength/SNフィールドにおいて明示的に、
(2)MessageDescriptor::MessageLengthをアプリケーションペイロードの大きさとして使用して、プロトコル・ヘッダ、フッタ、および制御情報(DDPヘッダ、マーカ、パディング、CRC)を付加して暗示的に、
(3)チャンネルが次の送信済みメッセージを有していない場合には、無効である。これは、メッセージが全く書き込まれていない場合、およびメッセージは書き込まれたが、完全には送信されていない場合が含まれる。
なお、完了したメッセージがRDMA読み出し要求でない場合には、RNICは、RDMA動作の完了を行うが、その詳細は本発明には関連しない。
RDMA読み出し要求の場合には、RNICは、RDMA読み出し応答を待って、完了を行い、Context[Ch#]::PendingReadRequestビットを設定する。
ステップ5:ステップ1へ戻る。
RDMA読み出し要求完了
RNICは、要求の範囲に含むTCP Ackを受信すると、書き込まれたRDMA要求を完了させる。RDMA読み出し要求は、対応RDMA読み出し応答が受信される場合に完了される例外的な場合である。
RDMA順序規則は、送られた順番でRDMA要求を完了することを要求する。これは、RDM読み出し要求に続くRDMA要求を完了する前に、RNICはRDMA読み出し応答の受信するのを待つ必要があることを意味する。受信されたRDMA読み出し応答の処理を図6におけるフロー・チャートに示し、以下のステップを含む。
ステップ1(S20):必要があれば、RDMA読み出し要求に先立つRDMA要求の完了を行う。
これは非常に稀な場合であり、完了要求がRDMA読み出し応答を受信するまでに処理されない場合に生じる。よって、RNICは、RDMA読み出し要求に先立つすべての要求をまず完了させる必要がある。この場合は、非ゼロContext[Ch#]::PendingReadRequestCountと、クリアContext[Ch#]::PendingReadRequestビットとによって示される。
ステップ2(S21):RDMA読み出し要求自体の完了を行う。
RNICは、RDMA読み出し動作の完了を行うが、その詳細は本願には関連しない。
ステップ3(S22):完了したRDMA読み出し要求に続く任意のRDMA要求の完了を実行する。
ステップ4(S23):ステップ2および3をN回繰り返す。ここで、Nは、
Context[Ch#]::CompletedReadRequestsNum
によって規定された完了したRDMA読み出し要求の数である。
これらの処理の一例は、図7にも示されている。
再送信要求フロー
再送信要求の処理は、以下の問題に対処することを含む。
問題1:RNICは、この接続についてのすべての保留完了要求を処理する必要がある。したがって、未処理の完了要求を接続が有する場合には、RNICは、この要求を処理することが要求される。再送信要求の処理は、当該接続についての完了処理が終了した後にのみ再開される。
問題2:再送信は、高速再送信機構によって、またはタイムアウトによって要求される。タイムアウトによる再送信には、送信されたが完了されていないすべてのTCPセグメントの再送信が含まれる。高速再送信機構による再送信には、最初の未完了のTCPセグメントのみの再送信が含まれる。RNICは、互いに異なる再送信要求の種類を使用する。再送信要求の処理は、要求の種類に依存しており、このことは後述する。
問題3:再送信処理の極めて重要な部分の1つは、RequestOutまたはResponseOut記述子リストにおける、再送信するセグメントの位置である。この処理は後述する。
再送信は、送信されたセグメントの範囲を保存するものでは必ずしもない。再送信を開始すべき位置は、LastAckedSNによって示される。ソケットおよびiSCSIは、送信済みのセグメント範囲の変更の影響を受けない。iSCSIは、TCPが見送信のデータについて再送信を実行する要求を送り出さないと推定する。これにより、iSCSIデータ処理論理は、再送信中に、すべての受信中間コマンド記述子が、送信中に計算された有効なiSCSI CRCを搬送すると推定することができる。
RDMAは、DDPセグメントの境界線を保存し、よってLastAckedSN以外の位置を再送信を開始してもよい。
再送信要求の種類
図8に示すように、TCPは、3種類の再送信要求を書き込む。
(1)高速再送信による再送信
(2)タイムアウトによる開始再送信
(3)進行タイムアウト再送信
すべての種類の再送信要求には、単一のTCPセグメントの再送信が含まれる。RNICは、NextToCompletion(次回完了)ポインタおよびNextToSend(次回送出)ポインタを使用して、各RequestOutチャンネルおよびResponseOutチャンネルについて、完了済みメッセージ、完了待ちメッセージ、および送信待ちメッセージの範囲を保持する。RNICは、また、書き込まれたが未送信のメッセージの数(Context[Ch#]::TotalPostedMsgCount)と、完了待ちの送信済みメッセージの数(Context[Ch#]::TotalPendingMsgCount)とを接続毎に保持する。なお、Context[Ch#]::TotalPostedMsgCountおよびContext[Ch#]::TotalPendingMsgCountは共に、接続毎に保持され、ResponseOutチャンネルおよびRequestOutチャンネルの両方について使用される。高速再送信の場合には、RNICは、上述のポインタまたはカウンタのいずれをも更新せずに、最初の未完了セグメント(すなわち、NextToCompleteによって参照されたTCPセグメント内部メッセージ)を単に再送信する。再送信を行うチャンネルは、以下のように選択される。
タイムアウトによる開始再送信の場合は、RNICは、チャンネルのうちの1つまたは両方のNextToSendポインタを更新して、当該チャンネルの最初の未完了TCPセグメントをNextToComplete(N2C)によって参照されたメッセージの内部で参照し、この位置から単一のTCPセグメントを再送信する。Context[Ch#]::TotalPostedMsgCountおよびContext[Ch#]::TotalPendingMsgCountは、それぞれ更新される。NextToSend(N2S)チャンネル・ポインタが進められて、当該チャンネル内の再送信(または送信)すべき次のセグメントを参照する。進行タイムアウト再送信の場合には、RNICは単一のTCPセグメントを、NextToSendによって参照された位置から再送信し、NextToSendと、Context[Ch#]::TotalPendingMsgCountとをそれぞれ更新する。なお、TCPは、送信されていないTCPデータの再送信を要求するものではない。
再送信すべきセグメントの位置特定
再送信すべきTCPセグメントの位置特定は、送信されたメッセージを有するRequestOutおよびResponseOutという2つのチャンネルを有することによって、影響を受ける。再送信すべきセグメントの位置特定は、いくつかのステップからなり、その概要を以下に示す。
ステップ1:RequestOutチャンネルにおける最初の未完了メッセージを見つける。
このステップ後、各チャンネル(RequestOutおよびResponseOut)は、候補メッセージを有する。このステップは、チャンネルが保留RDMA読み出し要求(すなわち、Context[Ch#]::PendingReadRequestビットセット)の完了を待つ場合にのみ関連があるので、RequestOutチャンネルについてのみ関連がある。
これには、「完了フロー」という表題の段落における計算オプションで説明する、上述のチャンネル・メッセージ処理の通常の完了ウォーク・スルーに非常に類似した処理が含まれる。この処理の目的は、Context[Ch#]::LastAckedSNを超える最終シーケンス番号を有するメッセージを見つけることである。このメッセージは、再送信するセグメントを搬送している場合がある。図9に示すように、これは、例Aにおけるメッセージ#5であり、例Bにおけるメッセージ#8である。ウォーク・スルー処理には、メッセージの最終シーケンス番号の計算が含まれる。RequestOut記述子についてのこのウォーク・スルーと、上述のようにTCP Ackの受信による通常の完了処理について説明したウォーク・スルーとの重要な違いに注意されたい。この違いとは、再送信によるウォーク・スルーにおいては、RNICはRDMA順序規則を無視し、RDMA読み出し要求を(送出、またはRDMA書き込みのような)単方向のRDMA動作として扱う。これが行われるのは、TCPによって正常に送信されなかった最初のRDMAメッセージにたどり着くのが目的だからである。
RDMA読み出し応答の受信による完了の場合についての図9における上述の例において、通常の完了取り扱い処理は、両方の場合とも、ReqOut::NCSN=100,ReqOUt::LCSN=0,RespOut::NCSN=600,RespOut::LCSN=300で終了する(なお、RespOutは、既に候補WQEを指し示している)。両方の場合のReqOutチャンネルにおいて、完了処理は、最初の保留RDMA読み出し要求(これらの例における最初のWQE#)で停止することがある。2つの例の違いは、最後に受信したAckのAckSNが例Aでは450であり、例Bでは550であろうということである。これが、再送信動作の初期条件である。再送信動作は、ReqOutチャンネルにおけるウォーク・スルーで開始する。例Aにおいては、RNICは、WQE#1およびWQE#4をウォーク・スルーして、WQE#5に到達し、これはLastAckedSN(450)よりも大きなSN(500)で終了する。例Bにおいては、ウォーク・スルーはWQE#8で終了する。その後、NCSNおよびLCSNは、各例についてそれぞれ更新される。
なお、ウォーク・スルー処理は、保留RDMA読み出し要求を有するRequestOutチャンネルに関連する。その他の場合には、読み出し要求がない場合、またはResponseOutチャンネルの場合には、次回完了(N2C)は常にメッセージ候補を指し示す。なお、再送信要求の実行に先立って、保留完了動作がないことを単に確認するために、通常の完了が両方のチャンネルに対して行われなければならない。
ステップ2:2つの候補メッセージ(1つは各RequestOutチャンネルおよびResponseOutチャンネルに属する)間で、再送信するセグメントを搬送するメッセージを選択する。
再送信するセグメントを保持するメッセージを選択するために、RNICは、Context[Ch#]::ReqOutNextToCompleteMsgSNをContext[Ch#]::RespOutNextToCompleteMsgSNと比較する。小さな値であるほど、再送信するセグメントを有するメッセージを保持するチャンネルに属している。
図9は、2つの例を示している。例Aにおいて(ReqOut::NCSN=500,RespOut::NCSN=600)、選択されたメッセージは、RequestOutチャンネル、すなわち、メッセージ#5に属している。例Bにおいて(ReqOut::NCSN=800,RespOut::NCSN=600)、選択されたメッセージは、ResponseOutチャンネル、すなわち、メッセージ#6に属している。
ステップ3:再送信を開始するメッセージに属するデータ・バッファを見つける。
メッセージ選択の後、このステップは、再送信すべきセグメントの開始を参照するポインタ記述子の位置を決定する。ポインタ記述子を見つけるためには、RNICは、メッセージの開始シーケンス番号を計算する必要がある。なお、メッセージの開始SNを使用して、メッセージ内のバッファ・オフセットを見つける助けとすることができ、このオフセットを使用して、再送信をすべきバッファを見つけることができる。メッセージの最終シーケンスは既知であり、接続コンテキストに保持されている(Context[Ch#]::ReqOutNextToCompleteMsgSNまたはContext[Ch#]::RespOutNextToCompleteMsgSN)。
メッセージの開始シーケンス番号を計算するためには、RNICは、Context[Ch#]::ReqOutLastCompletedMsgSNをContext[Ch#]::RespOutLastCompletedMsgSNと比較する。大きな値であるほど、メッセージの開始シーケンス番号を示しており、より正確には、このメッセージの開始シーケンス番号は、max(Context[Ch#]::ReqOutLastCompletedMsgSN,Context[Ch#]::RespOutLastCompletedMsgSN)+1に等しい。
図9に示すように、例Aにおいては、開始シーケンス番号は401であり、例Bにおいては、開始シーケンス番号は501である。メッセージの開始シーケンス番号が見つかると、RNICは、ポインタ記述子をウォーク・スルーして、再送信すべきセグメントの開始を保持するポインタ記述子を探す。なお、一般的に、LastAckedSNは、再送信すべきセグメントの開始を示す。
本明細書に記載されたシステム、機能、機構、方法、エンジン、およびモジュールは、ハードウェア、ソフトウェア、またはハードウェアおよびソフトウェアの組み合わせにおいて実施できることは当然である。これらは、任意の種類のコンピュータ・システムおよび本明細書に記載された方法を実行するために適応された他の装置によって実施されてもよい。ハードウェアおよびソフトウェアの典型的な組み合わせとしては、コンピュータ・プログラムを有する汎用コンピュータ・システムであって、当該コンピュータ・プログラムは、ロードされ実行されると本明細書に記載された方法を実行するように当該コンピュータ・システムを制御するものが挙げられよう。代わりに、特定用途のコンピュータであって、本発明の機能的なタスクのうちの1つ以上を実行するための専用のハードウェアを含んでいるものを使用することもできよう。本発明は、コンピュータ・プログラム製品に埋め込まれることもでき、本コンピュータ・プログラム製品は、本明細書に記載の方法および機能の実施を可能にするすべての特徴を備え、コンピュータ・システムにロードされると、これらの方法および機能を実行することができるものである。コンピュータ・プログラム、ソフトウェア・プログラム、プログラム、プログラム製品、またはソフトウェアは、本件においては、任意の言語、コードまたは表記による、情報処理能力を有するシステムに対して、直接、もしくは、(a)他の言語、コード、または表記への変換、または(b)異なる物質的な形式のいずれかあるいはその両方の後のいずれかにおいて、特定の機能を行わせることが意図された命令の組の任意の表現を意味する。
本発明の好ましい実施形態の上記説明を、例示および説明の目的で提示してきた。これらは、網羅的なものでも、また、開示された明確な形式に本発明を限定するものでもなく、当然ながら、数多くの修正および変形物が上記教示の観点から可能である。当業者にとって明白なそのような修正および変形物は、添付の請求項によって規定されるような本発明の範囲内に含まれるものである。
本発明は、コンピュータ・プログラミングおよび情報技術の分野において有用である。
本発明に係る順序を維持するための完了および送信システムを示す。 本発明に係るメッセージ記述子を示す。 本発明に係る完了アルゴリズムのフロー・チャートを示す。 本発明に係るRequestOutチャンネルおよびResponseOutチャンネルのシーケンス番号を更新する一例を示す。 Ack完了動作を示すフロー・チャートを示す。 RDMA読み出し要求完了動作を示すフロー・チャートを示す。 本発明に係るRequestOutおよびResponseOutチャンネルにおける完了順序を維持するための一対の例を示す。 本発明に係る3つの再送信の場合を示す。 本発明に係るRequestOutおよびResponseOutチャンネルにおける完了順序を維持するための一対の例を示す。

Claims (15)

  1. RequestOutチャンネル(16)およびResponseOutチャンネル(18)を有するリモート・データ・メモリ・アクセス(RDMA)環境における完了処理を取り扱うためのシステムであって、
    チャンネル毎の記述子リスト(12,14)であって、その各々が、当該チャンネル内のメッセージ毎のメッセージ記述子を含む、各記述子リスト(12,14)と、
    チャンネル交換が前記RequestOutチャンネル(16)と前記ResponseOutチャンネル(18)との間で生じる度に、前記メッセージ記述子内のメッセージ長フィールドを前記メッセージ内の最終バイトのシーケンス番号で更新するための更新機構(25)と、
    完了コンテキスト(22)内の値を検査して、次回完了メッセージのシーケンス番号と最終受け取りシーケンス番号とを比較して、前記メッセージを完了すべきかどうかを決定する肯定応答(Ack)完了システムと、
    読み出し要求の完了を行う読み出し要求完了システムと
    を備える、システム。
  2. 前記肯定応答完了システムは、各前記RequestOutチャンネル(16)および前記ResponseOutチャンネル(18)に別個に提供される一連の反復論理ステップを含む、請求項1に記載のシステム。
  3. 前記反復論理ステップは、
    前記次回完了メッセージの前記シーケンス番号が無効である場合には、前記完了処理の過程が終了したと判断するステップと、
    前記次回完了メッセージの前記シーケンス番号が前記最終受け取りシーケンス番号より大きい場合には、前記完了処理の過程が終了したと判断するステップと、
    前記次回完了メッセージの前記シーケンス番号が前記受け取りシーケンス番号以下である場合には、前記チャンネル内の前記メッセージを完了させるステップと
    を含む、請求項2に記載のシステム。
  4. 前記反復論理ステップは、前記RequestOutチャンネル(16)が読み出し要求の完了を待っている場合には、前記RequestOutチャンネル(16)における前記完了処理を終了させる更なるステップを含む、請求項3に記載のシステム。
  5. 前記チャンネル内の前記メッセージを完了させる前記ステップは、
    最終完了メッセージのシーケンス番号を前記次回完了メッセージの前記シーケンス番号で更新するステップと、
    前記次回完了メッセージの前記シーケンス番号を前記チャンネル内の次のメッセージの最終シーケンス番号で更新するステップと
    をさらに含む、請求項3に記載のシステム。
  6. 前記チャンネル内の前記メッセージを完了させる前記ステップは、
    前記完了されたメッセージが読み出し要求メッセージでない場合には、動作の完了を行うステップと、
    前記メッセージが読み出し要求メッセージである場合には、完了を行う前に、読み出し応答の受信および配信を待ってから完了を行い、その後、完了コンテキスト内の保留読み出し要求ビットを設定するステップと
    をさらに含む、請求項5に記載のシステム。
  7. 前記読み出し要求完了システムは、
    前記読み出し要求に先立つ任意の要求を完了させるステップと、
    前記読み出し要求を完了させるステップと、
    前記読み出し要求に続く任意の要求を完了させるステップと
    を含む第2の一連の論理ステップとを提供する、請求項2に記載のシステム。
  8. 前記第2の組の論理ステップの最後の2つのステップは、N回繰り返され、ここで、Nは、完了された読み出し要求の数を表す完了コンテキストに記憶された値である、請求項7に記載のシステム。
  9. 再送信すべきセグメントの位置特定のための第3の一連の論理ステップを含む再送信要求を取り扱うためのシステムをさらに備え、前記ステップは、
    保留完了がないことを保証するための完了動作を行うステップと、
    前記RequestOutチャンネル(16)および前記ResponseOutチャンネル(18)の両方について、候補メッセージを識別するステップと、
    2つの候補メッセージから、送信すべき前記セグメントを搬送するメッセージを選択するステップと、
    再送信すべき前記セグメントの開始を示すポインタ記述子の位置を決定するステップとを含む、請求項1に記載のシステム。
  10. 前記RequestOutチャンネル(16)が保留読み出し要求の完了を待っている場合には、前記RequestOutチャンネル(16)内の前記候補メッセージは、前記RequestOutチャンネル(16)内の最初の未完了メッセージのいずれかを備え、
    前記RequestOutチャンネル(16)が保留読み出し要求の完了を待っていない場合には、前記RequestOutチャンネル(16)内の前記候補メッセージは、次回完了(N2C)ポインタによって与えられ、
    前記ResponseOutチャンネル(18)内の前記候補メッセージは、次回完了(N2C)ポインタによって与えられる、
    請求項9に記載のシステム。
  11. 送信すべき前記セグメントを搬送する前記メッセージは、前記次回完了メッセージについての最下位のシーケンス番号を有するチャンネルにある候補メッセージである、請求項9に記載のシステム。
  12. 再送信すべき前記セグメントの前記開始を示す前記ポインタ記述子の前記位置は、
    前記RequestOutチャンネル(16)内の最終完了メッセージのシーケンス番号と、
    前記ResponseOutチャンネル(18)内の最終完了メッセージのシーケンス番号と
    のうちの最大値より1大きい、請求項9に記載のシステム。
  13. RequestOutチャンネル(16)およびResponseOutチャンネル(18)を有するリモート・データ・メモリ・アクセス(RDMA)環境における完了処理を取り扱うための方法であって、各チャンネルにおける肯定応答完了を、
    次回完了メッセージのシーケンス番号が無効である場合には、前記完了処理の過程が終了したと判断するステップと、
    前記次回完了メッセージの前記シーケンス番号が最終受け取りシーケンス番号よりも大きい場合には、前記完了処理の前記処理を終了させると判断するステップと、
    前記次回完了メッセージの前記シーケンス番号が最終受け取りシーケンス番号以下である場合には、前記チャンネル内の前記メッセージを完了させるステップと、
    前記RequestOutチャンネル(16)が読み出し要求の完了を待っている場合に、前記RequestOutチャンネル(16)における前記完了処理を終了させるステップと
    を伴って実行するステップを含む、方法。
  14. RequestOutチャンネル(16)およびResponseOutチャンネル(18)を有するリモート・データ・メモリ・アクセス(RDMA)環境における再送信要求に対して再送信すべきセグメントの位置を特定するための方法であって、
    完了動作を行うステップと、
    前記RequestOutチャンネル(16)および前記ResponseOutチャンネル(18)の両方について候補メッセージを識別するステップと、
    前記2つの候補メッセージから、送信すべき前記セグメントを搬送するメッセージを選択するステップと、
    再送信すべき前記セグメントの開始を指すポインタ記述子の位置を決定するステップとを備える、方法。
  15. RequestOutチャンネル(16)およびResponseOutチャンネル(18)を有するリモート・データ・メモリ・アクセス(RDMA)環境における送信要求を取り扱うためのシステムであって、
    チャンネル毎の記述子リスト(12,14)であって、その各々が、チャンネル内のメッセージ毎のメッセージ記述子を含む、記述子リスト(12,14)と、
    チャンネル交換が前記RequestOutチャンネル(16)と前記ResponseOutチャンネル(18)との間で生じる度に、前記メッセージ記述子内のメッセージ長フィールドを前記メッセージ内の最終バイトのシーケンス番号で更新するための更新機構(25)と
    を備える、システム。
JP2006542745A 2003-12-02 2004-12-02 Rdma完了および再送信システムおよび方法 Expired - Fee Related JP4464969B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/725,740 US7543037B2 (en) 2003-12-02 2003-12-02 RDMA completion and retransmit system and method
PCT/US2004/040371 WO2005057416A1 (en) 2003-12-02 2004-12-02 Rdma completion and retransmit system and method

Publications (3)

Publication Number Publication Date
JP2007513583A JP2007513583A (ja) 2007-05-24
JP2007513583A5 JP2007513583A5 (ja) 2007-11-15
JP4464969B2 true JP4464969B2 (ja) 2010-05-19

Family

ID=34620335

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006542745A Expired - Fee Related JP4464969B2 (ja) 2003-12-02 2004-12-02 Rdma完了および再送信システムおよび方法

Country Status (6)

Country Link
US (1) US7543037B2 (ja)
EP (1) EP1692621A4 (ja)
JP (1) JP4464969B2 (ja)
KR (1) KR100946013B1 (ja)
CN (1) CN100412847C (ja)
WO (1) WO2005057416A1 (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
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
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
US20060067346A1 (en) * 2004-04-05 2006-03-30 Ammasso, Inc. System and method for placement of RDMA payload into application memory of a processor system
GB0408876D0 (en) * 2004-04-21 2004-05-26 Level 5 Networks Ltd User-level stack
ATE483293T1 (de) * 2005-04-18 2010-10-15 Research In Motion Ltd System und verfahren für nachrichtenverkehrsoptimierung
US7610415B2 (en) * 2005-07-28 2009-10-27 Digi International System and method for processing data streams
KR100834431B1 (ko) 2006-01-02 2008-06-04 인터내셔널 비지네스 머신즈 코포레이션 개시자에 의한 iSCSI 데이터 이동 기능의 RNIC기반 오프로드
US20080155571A1 (en) * 2006-12-21 2008-06-26 Yuval Kenan Method and System for Host Software Concurrent Processing of a Network Connection Using Multiple Central Processing Units
US8688799B2 (en) * 2011-06-30 2014-04-01 Nokia Corporation Methods, apparatuses and computer program products for reducing memory copy overhead by indicating a location of requested data for direct access
CN103002046B (zh) * 2012-12-18 2015-07-08 无锡众志和达数据计算股份有限公司 多系统数据拷贝的rdma装置
US11966355B2 (en) * 2013-03-10 2024-04-23 Mellanox Technologies, Ltd. Network adapter with a common queue for both networking and data manipulation work requests
CN103248467B (zh) * 2013-05-14 2015-10-28 中国人民解放军国防科学技术大学 基于片内连接管理的rdma通信方法
CN104065465B (zh) * 2014-06-06 2018-03-16 华为技术有限公司 一种报文重传的方法、请求端、响应端以及系统
US9892071B2 (en) * 2015-08-03 2018-02-13 Pure Storage, Inc. Emulating a remote direct memory access (‘RDMA’) link between controllers in a storage array
JP6740683B2 (ja) * 2016-04-07 2020-08-19 富士通株式会社 並列処理装置及び通信制御方法
CN105893323A (zh) * 2016-05-23 2016-08-24 华为技术有限公司 一种读数据的方法及设备
US10891253B2 (en) * 2016-09-08 2021-01-12 Microsoft Technology Licensing, Llc Multicast apparatuses and methods for distributing data to multiple receivers in high-performance computing and cloud-based networks
US20200007608A1 (en) * 2018-06-29 2020-01-02 R-Stor Inc. System and method for performing fast file transfers
US11019132B2 (en) 2018-06-29 2021-05-25 R-Stor Inc. System and method for performing fast file transfers with dynamic bandwidth provisioning
FR3088744B1 (fr) 2018-11-15 2021-06-18 Innovative Resources Dispositif de detection de la presence de personnes a des postes de travail dans une bibliotheque
CN112559436B (zh) * 2020-12-16 2023-11-03 中国科学院计算技术研究所 一种rdma通信设备的上下文访问方法及系统

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6493343B1 (en) 1998-01-07 2002-12-10 Compaq Information Technologies Group System and method for implementing multi-pathing data transfers in a system area network
US7281030B1 (en) * 1999-09-17 2007-10-09 Intel Corporation Method of reading a remote memory
US6691178B1 (en) 2000-02-22 2004-02-10 Stmicroelectronics, Inc. Fencepost descriptor caching mechanism and method therefor
US6629166B1 (en) * 2000-06-29 2003-09-30 Intel Corporation Methods and systems for efficient connection of I/O devices to a channel-based switched fabric
KR100434270B1 (ko) 2001-05-30 2004-06-04 엘지전자 주식회사 가전기기 네트워크 제어시스템
US20030061296A1 (en) * 2001-09-24 2003-03-27 International Business Machines Corporation Memory semantic storage I/O
US6912602B2 (en) 2001-11-20 2005-06-28 Broadcom Corporation System having two or more packet interfaces, a switch, and a shared packet DMA circuit
US7263103B2 (en) * 2002-07-23 2007-08-28 Mellanox Technologies Ltd. Receive queue descriptor pool
DE10262080B4 (de) * 2002-10-25 2005-01-27 Advanced Micro Devices, Inc., Sunnyvale SMBus-Testgerät und zugehöriges Verfahren
US20040199660A1 (en) 2003-02-14 2004-10-07 Nokia Corporation Method of multiplexing compressed and uncompressed internet protocol packets
US7610340B2 (en) * 2003-10-09 2009-10-27 International Business Machines Corporation Method, system and storage medium for providing interoperability of email and instant messaging services
US6981074B2 (en) 2003-10-14 2005-12-27 Broadcom Corporation Descriptor-based load balancing

Also Published As

Publication number Publication date
KR100946013B1 (ko) 2010-03-09
CN1890657A (zh) 2007-01-03
EP1692621A1 (en) 2006-08-23
WO2005057416A1 (en) 2005-06-23
EP1692621A4 (en) 2007-09-05
KR20060123236A (ko) 2006-12-01
US7543037B2 (en) 2009-06-02
CN100412847C (zh) 2008-08-20
JP2007513583A (ja) 2007-05-24
US20050120360A1 (en) 2005-06-02

Similar Documents

Publication Publication Date Title
JP4464969B2 (ja) Rdma完了および再送信システムおよび方法
US10430374B2 (en) Selective acknowledgement of RDMA packets
US7818362B2 (en) Split socket send queue apparatus and method with efficient queue flow control, retransmission and sack support mechanisms
JP4921569B2 (ja) オフロードユニットを使用したtcp接続のためのデータ処理
US7496690B2 (en) Method, system, and program for managing memory for data transmission through a network
US6615383B1 (en) System and method for message transmission between network nodes connected by parallel links
EP0762705B1 (en) Method for transmitting data via a network
JP4583383B2 (ja) Tcp再送信プロセス速度の向上方法
US7580406B2 (en) Remote direct memory access segment generation by a network controller
US20110134930A1 (en) Packet-based networking system
JP4508195B2 (ja) アウト・オブ・オーダのrdma送信メッセージの配信に関する書き込み動作の回数の減少
US9667729B1 (en) TCP offload send optimization
US7213045B2 (en) Apparatus and method for transmit transport protocol termination
US20050141425A1 (en) Method, system, and program for managing message transmission through a network
US20070255866A1 (en) Method and system for a user space TCP offload engine (TOE)
JP2013511884A (ja) 動的接続された移送サービス
JPH11143845A (ja) ネットワークノード間のメッセージ送信用システム及び方法
US6898638B2 (en) Method and apparatus for grouping data for transfer according to recipient buffer size
CN114520711A (zh) 数据包的选择性重传
JP4979823B2 (ja) データ転送エラー検査

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070926

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070926

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100210

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: 20100216

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: 20100219

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130226

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: 20130226

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140226

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees