JP2008529109A - ターゲットによるiSCSIデータ移動機能のRNICベースのオフロード - Google Patents

ターゲットによるiSCSIデータ移動機能のRNICベースのオフロード Download PDF

Info

Publication number
JP2008529109A
JP2008529109A JP2007551569A JP2007551569A JP2008529109A JP 2008529109 A JP2008529109 A JP 2008529109A JP 2007551569 A JP2007551569 A JP 2007551569A JP 2007551569 A JP2007551569 A JP 2007551569A JP 2008529109 A JP2008529109 A JP 2008529109A
Authority
JP
Japan
Prior art keywords
iscsi
rdma
data
target function
scsi
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2007551569A
Other languages
English (en)
Other versions
JP2008529109A5 (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 JP2008529109A publication Critical patent/JP2008529109A/ja
Publication of JP2008529109A5 publication Critical patent/JP2008529109A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/10Streamlined, light-weight or high-speed protocols, e.g. express transfer protocol [XTP] or byte stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • 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
    • 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/326Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the transport layer [OSI layer 4]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Bus Control (AREA)
  • Computer And Data Communications (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

RDMA(リモート・ダイレクト・メモリ・アクセス)機能のために使用されるRNIC(リモート−ダイレクト−メモリ−アクセス−イネーブルド・ネットワーク・インターフェース・コントローラ)メカニズムでiSCSI(インターネット・スモール・コンピュータ・システム・インターフェース)オフロード・ターゲット機能を実行することを含む方法及びシステム。

Description

本発明は、一般的にホスト・コンピュータと入出力(I/O)装置との間の通信プロトコルに関し、特にリモート・ダイレクト・メモリ・アクセス(Remote Direct Memory Access(RDMA))によるiSCSI(インターネット・スモール・コンピュータ・システム・インターフェース(Internet Small Computer System Interface)オフロード・インプリメンテーションに関する。
リモート・ダイレクト・メモリ・アクセス(RDMA)は高速トランスポートを介するデータの効率的移動のための手法である。RDMAは、メモリ保護セマンティクスを維持しながら、メモリ・バス帯域幅及びCPU処理オーバーヘッドに対する最小限の要求で、コンピュータが他のコンピュータのメモリに情報を直接配置することを可能にする。RNICは、コンシューマにRDMAサービスを提供するネットワーク・インターフェース・カードである。RNICは、TCP(トランスポート制御プロトコル)上でRDMAのためにサポートを提供することができる。
RNICの多くの重要な特徴のうちの1つは、iSCSI(インターネット・スモール・コンピュータ・システム・インターフェース)ターゲット又はイニシエータ・アダプタとして働くことができることである。iSCSIは、イニシエータ及びターゲットという用語を次のように定義している。すなわち、“イニシエータ”はSCSIコマンド要求側(例えば、ホスト)を指し、“ターゲット”はSCSIコマンド応答側(例えば、SCSIドライブ・キャリヤ、テープなどのI/O装置)を指す。RNICはiSER(“iSCSI Extensions for RDMA(RDMAのためのiSCSI拡張)”)サービスを提供することもできる。iSERはiSCSIのデータ転送モデルの拡張であって、これはiSCSIプロトコルがRDMAプロトコルの直接データ配置手法を利用することを可能にする。iSERデータ転送プロトコルは、RNICを有するiSCSIインプリメンテーションが、iSCSIインフラストラクチャとのコンパチビリティを維持しながら、TCP/IP処理オーバーヘッドをなくすることによって真のゼロ・コピー動作を達成するデータ転送を持つことを可能にする。iSERは、RDMAワイヤ・プロトコルを使用し、遠隔側(ターゲット又はイニシエータ)に対してはトランスペアレントではない。それはRDMA上のiSCSIインプリメンテーションを僅かに変更又は改変する。例えば、それは、データ・アウト(DataOut)及びデータ・イン(DataIn)のようなiSCSI PDUを除去し、代わりにRDMA読み出しメッセージ及びRDMA書き込みメッセージを使用する。基本的にiSERは上側の層にiSCSIのような能力を与えるが、データ移動のプロトコルとワイヤ・プロトコルとは異なる。
iSCSIプロトコルは、SCSI層により提供されるSCSIコマンドを実行するためにiSCSIプロトコル・データ・ユニット(PDU)を交換する。iSCSIプロトコルは、局所的に取り付けられたSCSI記憶装置から遠く隔たって取り付けられたSCSI記憶装置へのシームレスな遷移を可能にする。iSCSIサービスはiSCSI機能の部分的オフロードを提供することができ、オフロードのレベルはインプリメンテーションに依存し得る。要するに、iSCSIは正規のTCP接続を使用するが、iSERはRDMA上でiSCSIを実行する。iSERは、RDMA接続を使用し、より良好な回復能力を達成すると共に呼び出し時間及び性能を改善するためにいろいろなRDMA能力を利用する。RNICはiSCSI及びiSERサービスの両方をサポートするので、それは、いろいろなレベルのiSCSIインプリメンテーションをサポートする装置とのSCSI通信を可能にする。プロトコル選択(iSCSI対iSER)は、iSCSIログイン・フェーズで実行される。
RDMAは、作業リクエスト(WR)を作業待ち行列に置くために、“動詞(verb)と称されるオペレーティング・システム・プログラミング・インターフェースを使用する。作業リクエストでのiSERの実行の一例が、IBM社に譲渡されたボイド(Boyd)他の米国特許出願第20040049600号に記載されている。その出願では、iSCSIコマンドを含む作業リクエストは、ネットワーク・オフロード・エンジンにおいてホストから受信され得、そしてその作業リクエストの受信に応答して、ホストに関連付けられているメモリ領域が変換テーブルにおいて登録され得る。RDMAの場合と同じく、作業リクエストは送信待ち行列を通して受信され得、メモリ領域の登録に応答して完了待ち行列要素が完了待ち行列に置かれ得る。
本発明は、RNICによる効率的iSCSIオフロード・インプリメンテーションを提供し、以下により詳しく記載されているように、RDMAのために開発されたRNICメカニズムを用いてこのオフロード・レベルを達成しようとするものである。
本発明によれば、iSCSIオフロード・ターゲット機能は、RDMA機能のために使われる容易に入手し得るRNICメカニズムで実現され得る。これは、RDMA書込み操作については、データ・イン及びデータ・アウト・ペイロードの、予め登録されたSCSIバッファへの任意の順序での任意のバッファ・オフセットでのリモート・ダイレクト・データ配置を含むが、これに限定はされない。インバウンドR2T(“転送可(ready to transfer)”)PDUは処理され得、データ・アウトPDUはRDMA読み出しリクエストのためのものと同じメカニズムを用いて生成され得る。制御iSCSI PDUは、例えば受信待ち行列と共有される受信待ち行列とを用いて配置され得る。
本発明の第1の側面により1つの方法が開示され、この方法は、
RDMA(リモート・ダイレクト・メモリ・アクセス(Remote Direct Memory Access))機能のために使われるRNIC(リモート−ダイレクト−メモリ−アクセス−イネーブルド・ネットワーク・インターフェース・コントローラ(Remote−direct−memory−access−enabled Network Interface Controller))メカニズムでiSCSI(インターネット・スモール・コンピュータ・システム・インターフェース(Internet Small Computer System Interface)オフロード・ターゲット機能を実行するステップを含む。
本発明の第2の側面により1つのコンピュータ・プログラム製品が開示され、このコンピュータ・プログラム製品は、
RDMA機能のために使われるRNICメカニズムでiSCSIオフロード・ターゲット機能を実行するための命令を含む。
本発明の第3の側面により1つのシステムが開示され、このシステムは、
RDMAサービス・ユニットと、
インバウンドRDMAメッセージ及びアウトゴーイングRDMAメッセージを処理し、前記RDMAサービス・ユニットにより提供されるサービスを用いて直接配置動作及び配信動作を実行するRDMAメッセージング・ユニットと、iSCSIオフロード・ターゲット機能を実行すると共にインバウンドiSCSI PDU及びアウトゴーイングiSCSI PDUを処理するiSCSIメッセージング・ユニットとを含み、前記iSCSIメッセージング・ユニットは、前記RDMAサービス・ユニットにより提供されるサービスを用いて、前記PDUにより担持されるiSCSIペイロードの登録されたSCSIバッファへの直接配置及び配信を実行するようになされている。
本発明は、以下の詳細な説明を添付図面と関連させて検討することからより充分に理解され評価されるであろう。
本発明をより良く理解するため、ここで(図1及び2を参照して)iSCSIデータ移動及びオフロード機能について一般的説明が与えられる。後に、(図4以降からの)RDMA動詞及びメカニズムでの(図3を参照して記載される)分散型コンピュータ・システムにおけるiSCSIデータ移動及びオフロード機能の実行が説明される。
iSCSIプロトコルは、SCSI層により提供されるSCSIコマンドを実行するためにiSCSIプロトコル・データ・ユニット(PDU)を交換する。iSCSIプロトコルは、局所的に取り付けられたSCSI記憶装置から遠く隔たって取り付けられたSCSI記憶装置へのシームレスな遷移を可能にする。
iSCSI PDUの2つの主要なグループ、すなわちiSCSI制御PDUとiSCSIデータ移動PDUと、がある。iSCSI制御は、特にSCSIコマンド、SCSI応答、タスク管理リクエストなどの多くのタイプの制御PDUを定義する。データ移動PDUは、R2T(転送可)、SCSIデータ・アウト(請求又は非請求)及びSCSIデータ・インPDUを、限定無しに、含むより小さなグループである。
上記のように、“イニシエータ”はSCSIコマンド要求側(例えば、ホスト)を指し、“ターゲット”はSCSIコマンド応答側(例えば、SCSIドライブ・キャリヤ、テープなどのI/O装置)を指す。全てのiSCSI制御及びデータ移動コマンドは、イニシエータによって生成されてターゲットにより処理されるもの、ターゲットにより生成されてイニシエータによって処理されるものにより分割され得る。
ここで図1を参照するが、これは夫々SCSI書き込みトランザクション及びSCSI読み出しトランザクションのフローを示す。
SCSI書き込みフローでは、イニシエータはSCSI書き込みコマンド(参照数字101により示されている)をターゲットに送る。このコマンドは、いろいろなフィールドの中に、ディスク(又はターゲットの他の部分)に配置されるべきSCSIバッファを特定するイニシエータ・タスク・タグ(ITT)を担持する。SCSI書き込みコマンドは即値データを担持することもでき、その最大サイズはiSCSI論理フェーズで交渉され得る。更に、SCSI書き込みコマンドの後に、いわゆる非請求データ・アウトPDU(unsolicited Data−Out PDUs)が続くことができる。非請求データ・アウトPDUはターゲット転送タグ(TTT)により識別され、この場合にはTTTは0xFFFFFFFFに等しくあるべきである。非請求データのサイズも、iSCSIログイン・フェーズで交渉され得る。これら2つのデータ転送モードは、短いSCSI書き込み動作での呼び出し時間を短縮することを可能にし得るけれども、これを使って大きなトランザクションでもデータの初めの量を転送することができる。非請求又は即値モードで転送され得る最大データ・サイズは、ターゲットのバッファリング能力に依存する。
ターゲットがSCSI書き込みコマンドを受け取った後、ターゲットは1つ以上のR2T(参照数字102により示されている)で応答する。R2Tは、ターゲットがSCSIバッファ内の特定されたオフセットから特定された量のデータを(必ずしも順序正しくとは限らない)受け取る準備ができていることを示す。R2Tは2つのタグ、すなわちSCSIコマンドからのITTと、データが配置されるべきターゲット・バッファを示すTTTと、を担持する。
各々の受信されたR2Tについて、イニシエータは1つ以上のデータ・アウトPDU(参照数字103により示されている)を送ることができる。データ・アウトPDUはSCSIバッファからのデータ(ITTにより示されている)を担持する。各々の受信されたデータ・アウトは、データを何処に配置するべきかを示すTTTを担持する。最後に受信されたデータ・アウトはF−ビットも担持する(参照数字104により示されている)。このビットは最後のデータ・アウトが受信されたことを示し、これはR2T交換が完了したことをターゲットに知らせる。
ターゲットは、全てのR2Tが完了したことを知らされると、SCSI応答PDU(参照数字105により示されている)を送る。このSCSI応答は、ITTを担持し、SCSI書き込み動作が首尾よく完了したか否かを示す。
SCSI読み出しフローでは、イニシエータはSCSI読み出しコマンドをターゲットに送る(参照数字106により示されている)。このコマンドは、いろいろなフィールドの中に、データをそこに読むところのSCSIバッファを特定するITTを担持する。
ターゲットは1つ以上のデータ・インPDU(参照数字107により示されている)で応答することができる。各データ・インは、SCSIバッファに配置されるべきデータを担持する。データ・インは、任意の順序で到来することができ、任意のサイズを持つことができる。各データ・インは、データを配置するSCSIバッファとバッファ・オフセットとを特定するITTを担持する。
データ・インPDUのストリームの後にSCSI応答(参照数字108により示されている)が続く。SCSI応答は、ITTを担持し、SCSI読み出し動作が首尾よく完了したか否かを示す。
本発明によれば、従来技術とは異なって、RNICがデータ・アウト及びデータ・イン及びR2Tのフローを処理する。
ここで図2を参照し、これはiSCSIプロトコルの例を示す。iSCSIプロトコルは、明確な順序制御規則を有する。iSCSIタスク(参照数字201)は1つ以上のSCSIコマンド202を含む。何時でも、iSCSIタスク201は単一の未処理のコマンドを持ち得る。各タスク201は、ITT203によって識別される。単一のiSCSI接続が複数の未処理iSCSIタスクを持ち得る。iSCSIタスク201のPDU204は接続ストリームにおいてインターリーブすることができる。各iSCSI PDU204は数個のシーケンス番号を担持することができる。データ移動PDUに関連するシーケンス番号はR2TSN(R2Tシーケンス番号)、DataSN及びExpDataSN、及びStatSN及びExpStatSNを、限定無しに、含む。
DataSNは、データ(データ・アウト及びデータ・イン)を担持する各iSCSI PDU204により担持される。データ・インについては、DataSNは各SCSI読み出しコマンドについて0から始まることができ、各々の送られたデータ・インについてターゲットによりインクリメントされ得る。データ・インに続くSCSI応答は、夫々のSCSIコマンドのために送られたデータ・インの数を示すExpDataSNを担持する。双方向SCSIコマンドについては、DataSNはデータ・インとR2Tとにより共有され、R2TはDataSNの代わりにR2TSNを担持するが、これらは同じフィールドのための異なる名前であり、これはiSCSIヘッダにおいて同じ位置を有する(BHS−バッファ・セグメント・ハンドル・スタック(Buffer Segment Handle Stack))。
データ・アウトについては、DataSNは各R2Tについて0から始まることができ、各々の送られるデータ・アウトについてイニシエータによりインクリメントされ得る。R2TSNはR2Tにより担持され得る。R2TSNは、各SCSI書き込みコマンドについて0から始まることができ、各々の送られたR2Tについてターゲットによりインクリメントされ得る。
DataSN及びR2TSNの両方が、受信されるデータ移動PDUの順序に従うように使用され得る。iSCSIは、受信されたデータの順番どおりでない配置と、R2Tの順番どおりでない実行とを許す。しかし、iSCSIは、既に配置されているデータの配置或いは既に実行されたR2Tの実行を防止するためにイニシエータ及びターゲットからの実行を要求する。
StatSNとExpStatSNとは、ターゲット応答バッファの管理に使用され得る。ターゲットは、各々の生成された応答についてStatSNをインクリメントすることができる。応答、及び潜在的にはそのコマンドで使用されるデータは、イニシエータがExpStatSNを使用して応答の受信を知らせるまで、内部ターゲットに維持され得る。ExpStatSNは、イニシエータからターゲットへの方向に流れる全てのiSCSI PDUにより担持され得る。イニシエータは、ターゲットの効率的実行を可能にするために単調に増大するExpStatSNを維持することができる。
上記のように、本発明の非限定的な実施態様によれば、iSCSIオフロード機能は、RDMA機能のために使用されるRNICメカニズムで実行され得る。初めに、分散型コンピュータ・システムで使用されるRDMAにおける作業待ち行列のコンセプトに関して一般的に説明する。
ここで図3を参照し、これは本発明の実施態様による、分散型コンピュータ・システム300を示す。分散型コンピュータ・システム300は、例えば、限定無しに、インターネット・プロトコル・ネットワーク(IPネット)と、他の多数のタイプ及び構成の他の多くのコンピュータ・システムとを含むことができる。例えば、本発明を実施するコンピュータ・システムは、1つのプロセッサと数個の入出力(I/O)アダプタとを有する小型サーバから、多数のプロセッサ及びI/Oアダプタを有する大規模並列スーパーコンピュータにまで及ぶことができる。更に、本発明は、インターネット又はイントラネットにより接続されたリモート・コンピュータ・システムのインフラストラクチャにおいて実施され得る。
分散型コンピュータ・システム300は、任意の数の任意のタイプの、独立プロセッサ・ノード、記憶装置ノード、及び特殊目的処理ノードのような(これらに限定はされない)ホスト・プロセッサ・ノード301を接続することができる。それらのノードのいずれもエンド・ノードとして機能することができ、これは本書では分散型コンピュータ・システム300においてメッセージ又はフレームを生じさせ又は最終的に消費する装置であると定義される。各ホスト・プロセッサ・ノード301はコンシューマ302を含むことができ、それらは、そのホスト・プロセッサ・ノード301上で実行するプロセスである。ホスト・プロセッサ・ノード301は1つ以上のIPスイート・オフロード・エンジン(IPSOE)303も含むことができ、これはハードウェアで又はハードウェアとオフロード・マイクロプロセッサとの組み合わせで実現され得る。オフロード・エンジン303は、メッセージをIPSOEポート305に転送するために使われる多数の待ち行列ペア304をサポートすることができる。各待ち行列ペア304は、送信作業待ち行列(SWQ)及び受信作業待ち行列(RWQ)を含むことができる。送信作業待ち行列は、チャネル及びメモリ・セマンティック・メッセージを送信するために使用され得る。受信作業待ち行列は、チャネル・セマンティック・メッセージを受信することができる。コンシューマは、作業リクエスト(WR)を作業待ち行列に配置するために実行されなければならないセマンティクスを定義する“動詞”を使用することができる。動詞は、完了した作業を完了待ち行列から取り出すためのメカニズムも提供することができる。
例えば、コンシューマは作業リクエストを生成することができ、それは作業待ち行列要素(WQE)として作業待ち行列に配置される。従って、送信作業待ち行列はWQEを含むことができ、それは分散型コンピュータ・システム300の構造上で送信されるべきデータを記述する。受信作業待ち行列はWQEを含むことができ、それは分散型コンピュータ・システム300の構造から入ってくるインカミング・チャネル・セマンティック・データを何処に配置するかを記述する。作業待ち行列要素は、オフロード・エンジン303においてハードウェア又はソフトウェアにより処理され得る。
完了待ち行列は完了待ち行列要素(CQE)を含むことができ、それは前もって完了した作業待ち行列要素に関する情報を含む。完了待ち行列は、複数の待ち行列ペアのために完了通知の1つ又は複数のポイントを作るために使用され得る。完了待ち行列要素は、待ち行列ペアと完了した特定の作業待ち行列要素とを判定するのに充分な情報を含む完了待ち行列上のデータ構造である。完了待ち行列コンテキストは、個々の完了待ち行列を管理するために必要なポインタ、長さ及びその他の情報を含む情報のブロックである。
RDMA読み出し作業リクエストは、リモート・ノード上の仮想的に連続しているメモリ空間を読み出すメモリ・セマンティック動作を提供する。メモリ空間は、メモリ領域の一部分又はメモリ・ウィンドウの一部分であり得る。メモリ領域は、仮想アドレスと長さとにより定義される仮想的に連続しているメモリ・アドレスの前もって登録されているセットを参照する。メモリ・ウィンドウは、前もって登録されている領域に束縛されている仮想的に連続しているメモリ・アドレスのセットを参照する。同様に、RDMA書き込み作業待ち行列要素は、リモート・ノード上の仮想的に連続しているメモリ空間に書き込むメモリ・セマンティック動作を提供する。
バインド(アンバインド)リモート・アクセス・キー(ステアリング・タグ−STag)作業待ち行列要素は、メモリ・ウィンドウをメモリ領域に関連付ける(又は切り離す(disassociating))ことによってメモリ・ウィンドウを改変(又は破壊)するコマンドをオフロード・エンジン・ハードウェアに提供する。このSTagは、各RDMAアクセスの一部であって、リモート・プロセスがバッファへのアクセスを許可したことを確認するために使用される。
以下で示され記述される方法及びシステムは、ネットワーク・インターフェース・カード、ハード・ディスク、光ディスク、記憶装置など(これらに限定されない)のコンピュータ・プログラム製品306により実行され得、これらは本書に記載されている方法及びシステムを実行するための命令を含むことができる。
ここで、iSCSIオフロード機能を実行するための幾つかの適切な関連するRDMAメカニズムについて図4を参照して説明する。
RDMAでは、ホストAはホストBの関与無しにホストBのメモリにアクセスすることができる。ホストAはホストBのメモリにどういう事態において何時アクセスするかを決定し、ホストBは、ホストAが明示的な通知を提供しなければ、このアクセスが行われたことに気づかない。
ホストAがホストBのメモリにアクセスし得るようになる前に、ホストBはアクセスされるメモリ領域を登録しなければならない。各々の登録されたメモリ領域はSTagを得る。STagは、保護ブロック(PB)と称される保護テーブル内のエントリと関連付けられる。このPBは、境界、アクセス権などを含めて登録済みメモリ領域を完全に記述する。RDMAは、物理的に不連続の複数のメモリ領域の登録を許す。そのような領域はページ・リスト(又はブロック・リスト)によって表される。PBは、また、メモリ領域ページ・リスト(又はブロック・リスト)を指す。
RDMAは、登録済みメモリ領域のみへのリモート・アクセスを許す。メモリ領域Stagは、リモート・サイトにより、それにアクセスするときにメモリを参照するために使用される。格納アプリケーションについては、RDMAはメモリ領域にゼロ・ベース・アクセス(zero−based access)でアクセスする。ゼロ・ベース・アクセスでは、タグド・ダイレクト・データ・プレースメント・プロトコル(Tagged Direct Data Placement Protocol(DDP))セグメントにより担持されるターゲット・オフセット(TO)は、登録済みメモリ領域におけるオフセットを定める。
ここで図5を参照し、これはRDMAのリモート・メモリ・アクセス動作、すなわち読み出し及び書き込み、を示す。リモート書き込み動作はRDMA書き込みメッセージ−タグドDDPメッセージ(Tagged DDP Message)を用いることにより実行され得るが、これはリモート・メモリに配置されるべきデータを担持する(参照数字501により示されている)。
リモート読み出し動作は2つのRDMAメッセージ、すなわちRDMA読み出しリクエスト・メッセージ及びRDMA読み出し応答メッセージ、を用いることにより実行され得る(参照数字502により示されている)。RDMA読み出しはアンタグドDDPメッセージ(Untagged DDP Message)であり、これはデータがフェッチされなければならない記憶場所と、データを配置するための記憶場所との両方を特定する。RDMA読み出し応答は、RDMA読み出しリクエストにより要求されたデータを担持するタグドDDPメッセージである。
インバウンド・タグドDDPセグメントを処理するプロセス(これはRDMA書き込み及びRDMA読み出し応答の両方のために使用される)は、STagにより参照させられた(referred)PBを読み出すこと(503)、アクセス確認(504)、領域ページ−リスト(変換テーブル)を読み出すこと(505)、及びメモリへの直接書き込み動作(506)を、限定無しに、含み得る。インバウンドRDMA読み出しリクエストは、RNICにより待ち行列に入れられ得る(507)。この待ち行列は読み出し応答作業待ち行列(ReadResponse WorkQueue)と呼ばれる。
RNICは、全ての先行するRDMAリクエストが完了した後に、RDMA読み出しリクエストを順番に処理することができ(508)、そしてRDMA読み出し応答メッセージを生成することができ(509)、これは要求側に送り戻される。
RDMA読み出しリクエストの処理のプロセスは、RDMA読み出しリクエストの読み出し応答WQへのオプションのキューイング及びデキューイング(dequeuing)(510)、データ・ソースSTag(読み出すメモリ領域を指示するSTag)により参照させられたPBを読むこと(511)、アクセス確認(512)、領域ページ−リスト(変換テーブル)を読むこと(513)、メモリからの直接読み出し動作及びRDMA読み出し応答セグメントの生成(514)を、限定無しに、含み得る。
RDMAはシステム・メモリに局所的にアクセスすること及び遠く隔たってアクセスすることの両方を可能にするアドレス変換及び保護(Address Translation and Protection(ATP))メカニズムを定義する。ここで図6を参照して説明されるように、このメカニズムは、アクセスされなければならないメモリの登録に基く。
メモリ登録は、リモート・メモリ・アクセスのために必要とされる必須の動作である。RDMAにおいて2つのアプローチ、すなわちメモリ・ウィンドウ及び高速メモリ登録、が使用され得る。
メモリ・ウィンドウ・アプローチ(参照数字600)は、遠く隔たってアクセスされるべきメモリが静的であって、そのアクセスされるべきメモリが前もって分かっているときに使用され得る(601)。その場合には、メモリ領域はいわゆる古典的メモリ登録方式を用いることにより登録され、PB及び変換テーブル(TT)の割り当て及び更新は、ハードウェア補助を受け或いは受けずにドライバにより実行される(602)。これは同期動作であって、PB及びTTの両方が夫々の情報で更新されるときにだけ完成され得る。メモリ・ウィンドウは、登録済みメモリ領域の全体(又は一部分)へのリモート・メモリ・アクセスを可能にする(或いは禁止する)ために使用される(603)。このプロセスはウィンドウ・バインディング(Window Binding)と呼ばれ、コンシューマ・リクエスト時にRNICにより実行される。これはメモリ登録より遥かに高速である。しかし、メモリ・ウィンドウはリモート・アクセスを可能にする唯一の方法ではない。この目的のために領域自体のStagが使用され得る。従って、登録済みメモリにアクセスするために3つのメカニズム、すなわち、静的に登録された領域を用いること、それらの領域に制限されたウィンドウを用いること、及び高速登録された領域(fast registered regions)を用いること、のうちの少なくとも1つ、が使用され得る。
リモート・アクセスのためのメモリが前もって分かっていなければ(604)、予め登録された領域の使用は効率的でない。その代わりとしてRDMAは高速メモリ登録及び失効アプローチ(605)を定義している。
このアプローチはメモリ登録プロセスを2つの部分、すなわち、領域により消費されるべきRNICリソースの割り当て(606)(例えば、PBと、ページ−リストを保持するために使用されるTTの部分と)、及び領域特有情報を保持するためのPB及びTTの更新(607)、に分ける。第1の動作606は、ソフトウェアにより実行されて良く、各Stagについて1回実行され得る。第2の動作607は、ソフトウェアにより公表され(posted)てハードウェアによって実行され得、複数回(登録されるべき各々の新しい領域/バッファについて)実行され得る。高速メモリ登録に加えて、RDMAは失効動作(Invalidate operation)も定義しており、これはSTagを失効させ、それを後に再使用することを可能にする(608)。
高速メモリ・レジスタ(FastMemoryRegister)及び失効動作の両方は非同期動作として定義される。これらは作業リクエストとしてRNIC送信待ち行列に記入され、その完了は、関連する完了待ち行列を介して報告される。
RDMAは2つのタイプの受信待ち行列(Receive Queue)、すなわち共有されるRQ及び共有されないRQ、を定義する。共有されるRQは複数の接続に共有され得、そのような待ち行列に記入された受信WRは、いろいろな接続で受信された送信メッセージにより消費され得る。共有されないRQは常に1つの接続に関連付けられ、そのようなRQに記入されたWRは、この接続を介して受信された送信(Sends)により消費される。
ここで図7及び8を参照し、これらは、本発明の実施態様による、RNICをサポートするRDMAによるiSCSIデータ移動動作のオフロードを示す。
初めに、特に図7を参照する。本発明の非限定的実施態様によれば、在来のRDMAオフロード機能は2つの部分、すなわちRDMAサービス・ユニット700とRDMAメッセージング・ユニット701とに分割され得る。RDMAメッセージング・ユニット701は、インバウンドRDMAメッセージ及びアウトゴーイングRDMAメッセージを処理することができて、RDMAサービス・ユニット700により提供されるサービスを使用して直接配置及び配信動作を実行することができる。iSCSIオフロードを可能にするために、iSCSIオフロード機能は、iSCSIメッセージング・ユニット702により取って代わられて該ユニットにより実行され得る。iSCSIメッセージング・ユニット702は、インバウンドiSCSI PDU及びアウトゴーイングiSCSI PDUを処理する責任を持つことができ、RDMAサービス・ユニット700により提供されるサービスを使用して直接配置及び配信を実行することができる。
RDMAサービス・ユニット700により提供されるサービス及びインターフェースは、iSCSI及びRDMAオフロード機能の両方について同一である。
ここで図8を参照する。ハードウェアで生成されるデータ・アウト(802)を除いて、全てのiSCSI PDUはソフトウェアで生成される(参照数字801)。生成されたiSCSI PDUは、送信作業リクエストとして送信待ち行列に記入され得る(803)。RNICは、これらのWRの完了(送信動作成功)を、関連する完了待ち行列を介して、報告する(804)。
ソフトウェアは、バッファを(例えば、受信作業リクエストを有する)受信待ち行列に記入する責任を有する(805)。不快な競争事態を避けるために、受信バッファは一般に送信バッファより先に記入され得る。送信バッファ及び受信バッファを記入する具体的順序は本発明にとって本質的ではなく、実施者に任されてよい。バッファは、インバウンド制御及び非請求データ・アウト PDUのために使用され得る(806)。RNICは、2つのRQ、すなわち1つはインバウンドiSCSI制御PDUのためのもの及び他の1つはインバウンド非請求データ・アウトのためのもの、をサポートするように拡張され得る(807)。iSCSI制御PDUのために使用されるバッファのメモリ管理及びユーティライゼーションを改善するために、ソフトウェアは共有されるRQを使用することができる(808)。
制御受信又は非請求データ・アウトPDUは、完了待ち行列を用いて報告され得る(809)。iSCSI PDUデータにおいて検出されたデータ破損又は他のエラーは、RQ内のWQEを消費するiSCSI PDUのための完了待ち行列を介して、又はデータ移動iSCSI PDUのための非同期イベント待ち行列(Asynchronous Event Queue)を介して報告され得る(810)。RNICは、その後、次のPDUを処理することができる(811)。
本発明の非限定的実施態様によれば、RDMAベースのメカニズムを使用するiSCSIセマンティクスのインプリメンテーションは、iSCSI及びiSERベースの解決策のための統合ソフトウェア・アーキテクチャで実行され得る。
ここで図9を参照し、これはRDMAベースのiSCSIオフロードを用いて実現されたソフトウェア構造を示す。SCSI層900は、iSCSIアプリケーション・プロトコルを介してiSCSIドライバ901と通信する。データムーバ(datamover)インターフェース902は、iSCSIドライバ901及びiSERデータムーバ903及びiSCSIデータムーバ904とインターフェースする。データムーバ・インターフェース902がこれらのエレメントとどの様にインターフェースするかは、RDMAコンソーシアムにより定められた標準データムーバ・インターフェースに従って良い。そのようなソフトウェア構造の1つの非限定的な利点は、iSCSI及びiSERソフトウェア・スタックの間でソフトウェア・コンポーネント及びインターフェースが高度に共有されることである。データムーバ・インターフェースは、iSCSIドライバのデータ移動及びiSCSI管理機能を分割することを可能にする。簡単に言えば、データムーバ・インターフェースは、例えばイニシエータのためにSCSIコマンドを完了させるためにコマンドを送信すること、又は例えばターゲットのためにSCSIコマンドの一部を完了させるためにiSCSIデータ・シーケンスを送信/受信することをSCSI層900が要求したときに全ての必要なデータ転送が行われることを保証する。
iSCSIデータムーバ904及びiSERデータムーバ903の機能は、RNIC906により実現されるRDMAベースのサービス905でオフロードされ得る。本発明の実施態様によれば、RDMAメカニズムを用いてiSCSI機能をオフロードすることは、iSCSIターゲット機能及びiSCSIイニシエータ機能の両方をオフロードすることを含む。オフロード機能(ターゲット又はイニシエータ或いはその両方)の各々は、他方の機能又はエンド・ポイントとは別に且つ無関係に実行され得る。換言すれば、イニシエータは、データ移動動作をオフロードされて、なんらの変更又は改変を必要とすること無くターゲットの他のiSCSIインプリメンテーションとなお通信することができる。同じことが、オフロードされたiSCSIターゲット機能についても当てはまる。iSCSIデータ移動機能をオフロードするために使用される全てのRDMAメカニズムは、局所的であって、遠隔側に対してトランスペアレントである。
ここで図10を参照すると、これは本発明の実施態様により、ハードウェア/ソフトウェア相互作用無しのiSCSIデータ移動PDUのSCSIバッファへの直接データ配置を示す。初めに、RNICにSCSIバッファの記述が供給される(例えば、ソフトウェアにより)(参照数字1001)。各SCSIバッファはITT又はTTTにより夫々一意に特定され得る(1002)。SCSIバッファは、1つ以上のページ又はブロックから成り得、ページ・リスト又はブロック・リストにより表され得る。
直接データ配置を実行するために、RNICは2ステップ分解(two−step resolution)プロセスを実行することができる。第1ステップ(1003)は、ITT(又はTTT)を前提としてSCSIバッファを特定することを含み、第2ステップ(1004)は、このページ/ブロックを読む/書き込むためにリストにおいてページ/ブロックの位置を突き止めることを含む。第1及び第2ステップの両方が、RDMAにより定義されたアドレス変換及び保護メカニズムを採用し、iSCSI ITT及びTTTセマンティクスを実行するためにSTag及びRDMAメモリ登録セマンティクスを使用することができる。例えば、RDMA保護メカニズムは、SCSIバッファの位置を突き止めてそれを請求されていないアクセスから保護するために使用され得(1005)、アドレス変換メカニズムはページ・リスト又はブロック・リスト中のページ/ブロックへの効率的アクセスを可能にすることができる(1006)。iSCSIデータ移動PDUのためにRDMAのようなリモート・メモリ・アクセスを実行するために、イニシエータ又はターゲット・ソフトウェアはSCSIバッファを登録することができる(1007)(例えば、登録メモリ領域セマンティクスを用いて)。メモリ登録は、保護ブロックがSCSIバッファと関連付けられるという結果をもたらす。この様にして、保護ブロックは、SCSIバッファを記述するページ・リスト又はブロック・リストを保持する変換テーブル・エントリを指す。登録済みメモリ領域はゼロ・ベース・タイプのメモリ領域であって良く、これはSCSIバッファにアクセスするためにiSCSIデータ移動PDU内のバッファ・オフセット(BufferOffset)を用いることを可能にする。
iSCSI制御PDUにおいて使用されるITT及びTTTは、登録済みSCSIバッファを参照するSTagの値を得ることができる(1008)。例えば、イニシエータにより生成されるSCSI読み出しコマンドは、登録済みSCSIバッファのSTagに等しいITTを担持することができる。対応するデータ・イン及びSCSI応答PDUもこのSTagを担持することができる。従って、STagは、イニシエータによりリモート・ダイレクト・データ配置を実行するために使用され得る。SCSI書き込みコマンドのために、ターゲットはインバウンド請求データ・アウトPDUのために割り当てられたそのSCSIバッファを登録することができ、R2T PDUにおいてSCSIバッファのSTagに等しいTTTを使用することができる(1009)。
本発明のこの非限定的方法は、現存するハードウェア及びソフトウェア・メカニズムを利用してiSCSIデータ移動動作の効率的オフロードを実行することを可能にし、iSCSI仕様で定義されているこれらの動作の柔軟性を維持する。
ここで図11及び12を参照し、これらは、本発明の実施態様による、RNICによるデータ・イン及び請求データ・アウトの処理と、図10を参照して記載されたRDMA保護及びアドレス変換アプローチの使用と、これらのPDUにより担持されるiSCSIペイロードの登録済みSCSIバッファへの直接データ配置の実行とを示している。更に、RNICは、データ・イン及びデータ・アウトのデータ順序制御を追跡し、iSCSI仕様により定義されたiSCSI順序制御規則を実施し、データ・トランザクション終了時のPBの失効を実行することができる。
インバウンド・データ・イン及び請求データ・アウトはRNICにより全く同様に(夫々イニシエータ及びターゲットにより)処理され得る。これらのPDUタイプの両方に共通の処理をここで説明する。
RNICは、初めにiSCSIデータ・イン及び請求データ・アウトPDUを検出する(1101)。これは、BHS:オペコード及びBHS:TTTフィールドを用いることにより、限定無しに、達成され得る(TTT=h’FFFFFFFF’はデータ・アウトPDUが請求されていなくて、そのようなPDUが上記のように制御iSCSI PDUとして処理されることを示す)。RNICは、データ・インPDUのためにBHS:ITTを、またデータ・アウトPDUのためにBHS:TTTを、STagとして使用することができる(これは、以前にドライバにより、それがSCSIコマンド又はR2Tを夫々生成したときに、使用された)。
RNICは、例えば、夫々の登録済みSCSIバッファを記述すると共にアクセス許可を確認するSTagのインデックス・フィールドを用いることによりPBを見出す(1102)。RNICは、例えばBHS:BufferOffset(BHS:バッファ・オフセット)を用いることによって、登録済みSCSIバッファの中のデータがアクセスされる記憶場所を知ることができる(1103)。RNICは、アドレス変換メカニズムを使用してページ/ブロックを分解し、登録済みSCSIバッファへの直接データ配置(又は直接データ読み出し)を実行することができる(1104)。
コンシューマ・ソフトウェア(ドライバ)は、RNICにより実行される直接配置動作に気づかない。’F−ビット’がセットされている請求データ・アウトPDUの場合以外には完了通知は無い。
直接配置動作の他に(例えば、その前に)、RNICはインバウンドPDUのシーケンス確認を実行することができる(1105)。データ・インPDU及びデータ・アウトPDUの両方がDataSNを担持する。DataSNは、データ・インの場合には各SCSIコマンドについて、またデータ・アウトの場合には各R2Tについて、ゼロにされ得る(1106)。RNICは、保護ブロックにおいてExpDataSNを維持することができる(1107)。このフィールドはPB初期化時にゼロに初期化され得る(高速メモリ登録)(1108)。各々のインバウンド・データ・イン又は請求データ・アウトPDUについて、このフィールドはBHS:DataSNと比較され得る(1109)。
a. DataSN=ExpDataSNならば、PDUは受け入れられてRNICにより処理され、ExpDataSNは大きくされる(1110)。
b. DataSN>ExpDataSNならば、非同期イベント通知メカニズムを用いることなどにより(関連非同期エラー−順序制御エラー)エラーがソフトウェアに報告される(1111)。PB内のErrorBit(エラー・ビット)がセットされ得、(STagを用いて)このPBを参照する各々の入ってくるPDUは、このポイント以降、廃棄される。これは、実際上、iSCSIドライバがiSCSIコマンド・レベル(又は夫々R2Tレベル)で回復する必要があるということを意味する。
c. 最後の場合はゴーストPDUの受信である(DataSN<ExpDataSN)。この場合、受信されたPDUは廃棄され、エラーはソフトウェアに報告されない(1112)。これは、iSCSI仕様により定められているように重複するiSCSI PDUの処理を許す。
SCSI読み出しコマンドの場合、イニシエータは、SCSI応答が後に続く1つ以上のデータ・インPDUを受信する(1113)。このSCSI応答はBHS:ExpDataSNを担持することができる。このフィールドは、SCSI応答の前のデータ・インの数を示す。iSCSI順序制御規則の実施を終えるために、RNICは、BHS:ExpDataSNを、そのSCSI応答により担持されるSTag(ITT)により参照させられたPB:ExpDataSNと比較することができる。不一致の場合には、完了エラーが報告され、順序制御エラーが検出されたことを示す(1114)。
’F−ビット’がセットされている請求データ・アウトPDUは、このPDUが対応するR2Tにより要求されたトランザクションを完了させるということを示す(1115)。その場合、完了通知がコンシューマ・ソフトウェアに渡される(1116)。例えば、RNICは受信待ち行列から1つのWQEを省いて、夫々の完了待ち行列にCQEを加え、データ・アウト・トランザクションの完了を示すことができる。ターゲット・ソフトウェアは、R2T動作が完了したか否かを知るために、またそれがSCSI書き込み動作の全体が完了したことを確認するSCSI応答を生成し得るか否かを知るために、この通知を要求することができる。この通知は、インバウンド・データ・イン及び請求データ・アウトPDUを処理するとき、RNICからソフトウェアへの唯一の通知であり得る。上記の順序制御確認は、全てのデータ・アウトが首尾よく受信されて登録済みバッファに配置されたことを保証する。最後のデータ・アウトPDU(セットされた’F−ビット’を担持している)を失った場合はソフトウェアによりカバーされ得る(タイムアウト・メカニズム)。
データ・イン及び請求データ・アウトPDUの処理を終えるためにRNICにより実行され得る最後の動作は、保護ブロックの失効である(1117)。これは、’Fビット’がセットされているデータ・イン及び請求データ・アウトPDUのために行われ得る。失効は、PDUヘッダから集められたSTagにより参照させられたPBに対して実行され得る。失効したSTagは、請求データ・アウトのためのCQEを用いて、又はSCSI書き込みコマンドを終わらせるSCSI応答のヘッダ(ITTフィールド)で、SCSIドライバに配信され得る。これは、iSCSIドライバが次のSCSIコマンドのために解放されたSTagを再使用することを可能にする。
ターゲットにより登録された領域の失効(1118)も同様に実行され得る。失効のための代わりのアプローチは、受信されたSCSI応答においてSTag(ITT)により参照させられたPBの失効であり得る。
ここで図12を参照すると、これは、本発明の実施態様による、ハードウェアでのインバウンドR2Tの処理と、データ・アウトPDUの生成とを示す。
SCSI書き込みコマンドは、イニシエータがターゲットから複数のR2Tを受信するという結果をもたらし得る(1201)。各R2Tは、登録済みSCSIバッファ内の特定された記憶場所から特定された量のデータをフェッチし、このデータをデータ・アウトPDUを用いてターゲットに送るようにイニシエータに要求することができる(1202)。R2Tは、SCSIコマンドにおいてイニシエータにより提供されたITTを担持する(1203)。上記のように、ドライバがSCSIコマンドを生成したとき、登録済みSCSIバッファのSTagがITTの代わりにドライバにより使用され得る(1204)。
R2T PDUはBHS:オペコード・フィールドを用いて識別され得る。RNICは、BHS:R2TSNフィールドを用いて、R2T順序制御の確認を実行することができる(1205)。RNICはPBにおいてExpDataSNフィールドを保持する。単方向コマンドについてはイニシエータは入ってくるR2T又はデータ・インを見ることができるので、順序制御確認のために同じフィールドが使用され得る。インバウンドR2Tのためのシーケンス確認は、上で論じられたデータ・イン及びデータ・アウトのために使用されるシーケンス確認のプロセスと同一であり得る(1206)。
RNICは、インバウンドRDMA読み出しリクエストを処理するためのものと同じメカニズムを用いてシーケンス確認を通過したR2Tを処理することができる(1207)。RNICは、RNIC送信論理により送られる必要のあるデータ・アウトを記述するWQEを記入するために独立の読み出し応答作業待ち行列(readResponse WorkQueue)を使用することができる(1208)(RDMA読み出しリクエストの場合には、RNICはRDMA読み出し応答を記述するWQEを待ち行列に入れることができる)。送信論理は送信WQと読み出し応答(readResponse)WQとの間を調停することができ、これらの各々からのWQEを内部調停規則に従って処理することができる(1209)。
各々の受信されたR2Tは、単一のデータ・アウトPDUを生じさせ得る(1210)。生成されたデータ・アウトPDUは、BHS:ITT(ドライバはSCSIコマンド生成時にそこにSTagを配置した)により参照させられた登録済みSCSIバッファからのデータを担持することができる。BHS:BufferOffset(BHS:バッファオフセット)とBHS:DesireDataTransferLength(BHS:所望データ転送長さ)は、SCSIバッファにおけるオフセットとデータ・トランザクションのサイズとを特定することができる。
F−ビットがセットされているR2T PDUのためのデータ・アウトをRNICが送信したとき、RNICは、遠隔側がそのデータ・アウト PDUの受信成功を確認した後にSTag(ITT)により参照させられた保護ブロックを失効させることができる。このSCSI書き込みコマンドのために使用されるSTagは、対応するSCSI応答PDUが配信されるときにソフトウェアにより再使用され得る。
メモリ領域失効のための代わりのアプローチは、受信されたSCSI応答においてSTag(ITT)により参照させられたPBの失効であり得る。
本発明についての記述は解説及び記述の目的で提示されており、網羅的であることや、発明を開示された形に限定することは意図されていない。多くの改変及び変形が当業者にとっては明白であろう。実施態様は、本発明の原理、実際的用途を最善に説明するために、また他の当業者が、意図した具体的用途に適するようにいろいろに改変された種々の実施態様について本発明を理解できるようにするために、選択され記載された。
SCSI書き込みトランザクション及びSCSI読み出しトランザクションの略フローチャートである。 iSCSIプロトコルの略フローチャートであり、順序制御規則とSCSIコマンドとを示す。 本発明の実施態様による、分散型コンピュータ・システムの略ブロック図である。 本発明の実施態様による、iSCSIオフロード機能を実行するためのRDMAメカニズムの略ブロック図である。 RDMAのリモート・メモリ・アクセス動作、読み出し及び書き込み、の略フローチャートである。 本発明の実施態様による、システム・メモリに局所的にアクセスすること及び遠く隔たってアクセスすることの両方を可能にし得る、RDMAにおけるメモリ登録の略フローチャートである。 本発明の実施態様による、RNICをサポートするRDMAによるiSCSIデータ移動動作のオフロードの略ブロック図である。 本発明の実施態様による、RNICをサポートするRDMAによるiSCSIデータ移動動作のオフロードのフローチャートである。 本発明の実施態様による、RDMAベースのiSCSIオフロードを用いて実現されるソフトウェア構造の略ブロック図である。 本発明の実施態様による、ハードウェア/ソフトウェア相互作用無しでのiSCSIデータ移動PDUのSCSIバッファへの直接データ配置の略フローチャートである。 本発明の実施態様による、RNICによるデータ・イン及び請求データ・アウトの取り扱いと、これらのPDUにより担持されるiSCSIペイロードの登録されたSCSIバッファへの直接データ配置の実行との略フローチャートを形成する。 本発明の実施態様による、RNICによるデータ・イン及び請求データ・アウトの取り扱いと、これらのPDUにより担持されるiSCSIペイロードの登録されたSCSIバッファへの直接データ配置の実行との略フローチャートを形成する。 本発明の実施態様による、ハードウェアでのインバウンドR2Tの処理と、データ・アウトPDUの生成との略フローチャートである。

Claims (28)

  1. RDMA(リモート・ダイレクト・メモリ・アクセス)機能のために使用されるRNIC(リモート−ダイレクト−メモリ−アクセス−イネーブルド・ネットワーク・インターフェース・コントローラ)メカニズムでiSCSI(インターネット・スモール・コンピュータ・システム・インターフェース)オフロード・ターゲット機能を実行するステップを含むことを特徴とする方法。
  2. iSCSIイニシエータ機能とは別に且つ無関係にiSCSIターゲット機能をオフロードするステップを更に含むことを特徴とする請求項1に記載の方法。
  3. iSCSIオフロード・ターゲット機能を実行するステップは、RDMA書き込み動作の論理を用いてのデータ・アウト・ペイロードの、予め登録されたSCSIバッファへの任意の順序での任意のバッファ・オフセットでのリモート・ダイレクト・データ配置を含むことを特徴とする請求項1に記載の方法。
  4. STag(ステアリング・タグ)として使用されるTTT(ターゲット・タスク・タグ)によって前記予め登録されたSCSIバッファを識別するステップを含むことを特徴とする請求項3に記載の方法。
  5. 前記iSCSIオフロード・ターゲット機能を実行するステップは、受信作業リクエストを有するRDMA受信待ち行列を用いて制御iSCSI PDUを配置するステップを含むことを特徴とする請求項1に記載の方法。
  6. 関連する完了待ち行列を介して前記受信作業リクエストの完了を報告するステップを更に含むことを特徴とする請求項5に記載の方法。
  7. 前記iSCSIオフロード・ターゲット機能を実行するステップは、
    iSCSIアプリケーション・プロトコルを介してiSCSIドライバと通信するSCSI層を設けるステップと、
    前記iSCSIドライバ及びiSER(“iSCSI Extensions for RDMA(RDMAのためのiSCSI拡張)”)データムーバ及びiSCSIデータムーバとインターフェースするデータムーバ・インターフェースを設けるステップと、
    含むことを特徴とする請求項1に記載の方法。
  8. 前記iSCSIドライバのデータ移動及びiSCSI管理機能を分割するために前記データムーバ・インターフェースを用いるステップを更に含むことを特徴とする請求項7に記載の方法。
  9. 前記iSCSIオフロード・ターゲット機能を実行するステップは、生成されたiSCSI PDUを送信作業リクエストとして送信待ち行列に記入するステップと、関連する完了待ち行列を介して前記送信作業リクエストの完了を報告するステップとを含むことを特徴とする請求項1に記載の方法。
  10. 前記iSCSIオフロード・ターゲット機能を実行するステップは、予め登録されたSCSIバッファへの直接アクセスを行うためにRDMA ATP(Address Translation and Protection(アドレス変換及び保護))メカニズムを実行するステップと、STagとして使用されるTTTによって前記予め登録されたSCSIバッファを識別するステップと、ページ及びブロックの少なくとも一方の位置を突き止めるステップと、ページ及びブロックの前記少なくとも一方に対して読み出し及び書き込み動作の少なくとも一方を実行するステップと、を含むことを特徴とする請求項1に記載の方法。
  11. RDMA機能のために使われるRNICメカニズムでiSCSIオフロード・ターゲット機能を実行するための命令を含むことを特徴とするコンピュータ・プログラム製品。
  12. 前記iSCSIオフロード・ターゲット機能を実行するための前記命令は、iSCSIイニシエータ機能とは別に且つ無関係にiSCSIターゲット機能をオフロードするための命令を含むことを特徴とする請求項11に記載のコンピュータ・プログラム製品。
  13. 前記iSCSIオフロード・ターゲット機能を実行するための前記命令は、RDMA書き込み動作の論理を用いてのデータ・アウト・ペイロードの、予め登録されたSCSIバッファへの任意の順序での任意のSCSIバッファ・オフセットでのリモート・ダイレクト・データ配置のための命令を含むことを特徴とする請求項11に記載のコンピュータ・プログラム製品。
  14. STagとして使用されるTTTによって前記予め登録されたSCSIバッファを識別するための命令を含むことを特徴とする請求項13に記載のコンピュータ・プログラム製品。
  15. 前記iSCSIオフロード・ターゲット機能を実行するための前記命令は、受信作業リクエストを有するRDMA受信待ち行列を用いて制御iSCSI PDUを配置するための命令を含み、関連する完了待ち行列を介して前記受信作業リクエストの完了を報告するための命令を含むことを特徴とする請求項11に記載のコンピュータ・プログラム製品。
  16. 前記iSCSIオフロード・ターゲット機能を実行するための前記命令は、
    iSCSIアプリケーション・プロトコルを介してiSCSIドライバと通信するSCSI層を設けるための命令と、
    前記iSCSIドライバ及びiSER(“iSCSI Extensions for RDMA(RDMAのためのiSCSI拡張)”)データムーバ及びiSCSIデータムーバとインターフェースするデータムーバ・インターフェースを設けるための命令と、
    を含むことを特徴とする請求項11に記載のコンピュータ・プログラム製品。
  17. 前記iSCSIドライバのデータ移動及びiSCSI管理機能を分割するために前記データムーバ・インターフェースを用いるための命令を更に含むことを特徴とする請求項16に記載のコンピュータ・プログラム製品。
  18. 前記iSCSIオフロード・ターゲット機能を実行するための前記命令は、生成されたiSCSI PDUを送信作業リクエストとして送信待ち行列に記入するための命令と、関連する完了待ち行列を介して前記送信作業リクエストの完了を報告するための命令とを含むことを特徴とする請求項11に記載のコンピュータ・プログラム製品。
  19. 前記iSCSIオフロード・ターゲット機能を実行するための前記命令は、予め登録されたSCSIバッファへの直接アクセスを行うためにRDMA ATP(Address Translation and Protection(アドレス変換及び保護))メカニズムを実行するための命令と、STagとして使用されるTTTによって前記予め登録されたSCSIバッファを識別するための命令と、ページ及びブロックの少なくとも一方の位置を突き止め、ページ及びブロックの前記少なくとも一方に対して読み出し及び書き込み動作の少なくとも一方を実行するための命令と、を含むことを特徴とする請求項11に記載のコンピュータ・プログラム製品。
  20. RDMAサービス・ユニットと、
    インバウンドRDMAメッセージ及びアウトゴーイングRDMAメッセージを処理し、前記RDMAサービス・ユニットにより提供されるサービスを用いて直接配置及び配信動作を実行するRDMAメッセージング・ユニットと、
    iSCSIオフロード・ターゲット機能を実行すると共にインバウンドiSCSI PDU及びアウトゴーイングiSCSI PDUを処理するiSCSIメッセージング・ユニットとを含むシステムであって、前記iSCSIメッセージング・ユニットは、前記RDMAサービス・ユニットにより提供されるサービスを用いて、前記PDUにより担持されるiSCSIペイロードの登録されたSCSIバッファへの直接配置を実行するようになされていることを特徴とするシステム。
  21. 前記iSCSIオフロード・ターゲット機能は、iSCSIイニシエータ機能とは別に且つ無関係にiSCSIターゲット機能をオフロードすることを含むことを特徴とする請求項20に記載のシステム。
  22. 前記iSCSIオフロード・ターゲット機能は、RDMA書き込み動作の論理を用いてのデータ・アウト・ペイロードの、予め登録されたSCSIバッファへの任意の順序での任意のSCSIバッファ・オフセットでのリモート・ダイレクト・データ配置を含むことを特徴とする請求項20に記載のシステム。
  23. 前記iSCSIオフロード・ターゲット機能は、STagとして使用されるTTTによって前記予め登録されたSCSIバッファを識別することを更に含むことを特徴とする請求項22に記載のシステム。
  24. 前記iSCSIオフロード・ターゲット機能は、受信作業リクエストを有するRDMA受信待ち行列を用いて制御iSCSI PDUを配置することと、関連する完了待ち行列を介して前記受信作業リクエストの完了を報告することとを含むことを特徴とする請求項20に記載のシステム。
  25. 前記iSCSIオフロード・ターゲット機能は、
    iSCSIアプリケーション・プロトコルを介してiSCSIドライバと通信するSCSI層と、
    前記iSCSIドライバ及びiSER(“iSCSI Extensions for RDMA(RDMAのためのiSCSI拡張)”)データムーバ及びiSCSIデータムーバとインターフェースするデータムーバ・インターフェースと、
    を含むことを特徴とする請求項20に記載のシステム。
  26. 前記データムーバ・インターフェースは、前記iSCSIドライバのデータ移動及びiSCSI管理機能を分割することを特徴とする請求項25に記載のシステム。
  27. 前記iSCSIオフロード・ターゲット機能は、生成されたiSCSI PDUを送信作業リクエストとして送信待ち行列に記入することと、関連する完了待ち行列を介して前記送信作業リクエストの完了を報告することとを含むことを特徴とする請求項20に記載のシステム。
  28. 前記iSCSIオフロード・ターゲット機能は、予め登録されたSCSIバッファへの直接アクセスを行うためにRDMA ATP(Address Translation and Protection(アドレス変換及び保護))メカニズムを実行することと、STagとして使用されるTTTによって前記予め登録されたSCSIバッファを識別することと、ページ及びブロックの少なくとも一方の位置を突き止めることと、ページ及びブロックの前記少なくとも一方に対して読み出し及び書き込み動作の少なくとも一方を実行することと、を含むことを特徴とする請求項20に記載のシステム。
JP2007551569A 2005-01-21 2005-12-12 ターゲットによるiSCSIデータ移動機能のRNICベースのオフロード Pending JP2008529109A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/905,811 US20060165084A1 (en) 2005-01-21 2005-01-21 RNIC-BASED OFFLOAD OF iSCSI DATA MOVEMENT FUNCTION BY TARGET
PCT/EP2005/056690 WO2006076993A1 (en) 2005-01-21 2005-12-12 RNIC-BASED OFFLOAD OF iSCSI DATA MOVEMENT FUNCTION BY TARGET

Publications (2)

Publication Number Publication Date
JP2008529109A true JP2008529109A (ja) 2008-07-31
JP2008529109A5 JP2008529109A5 (ja) 2008-10-30

Family

ID=36178240

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007551569A Pending JP2008529109A (ja) 2005-01-21 2005-12-12 ターゲットによるiSCSIデータ移動機能のRNICベースのオフロード

Country Status (6)

Country Link
US (1) US20060165084A1 (ja)
EP (1) EP1839162A1 (ja)
JP (1) JP2008529109A (ja)
CN (1) CN101095125A (ja)
TW (1) TW200634531A (ja)
WO (1) WO2006076993A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012001908A1 (ja) 2010-06-28 2012-01-05 パナソニック株式会社 応答装置とその集積回路、応答方法、および応答システム
JP2015512083A (ja) * 2012-12-11 2015-04-23 インテル・コーポレーション 暗示的なメモリの登録のための明示的なフロー制御
EP3012740A1 (en) 2014-10-23 2016-04-27 Fujitsu Limited Inter-process communication program, release requesting method, and parallel computing apparatus

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8396981B1 (en) * 2005-06-07 2013-03-12 Oracle America, Inc. Gateway for connecting storage clients and storage servers
US8316276B2 (en) 2008-01-15 2012-11-20 Hicamp Systems, Inc. Upper layer protocol (ULP) offloading for internet small computer system interface (ISCSI) without TCP offload engine (TOE)
US8892789B2 (en) * 2008-12-19 2014-11-18 Netapp, Inc. Accelerating internet small computer system interface (iSCSI) proxy input/output (I/O)
US9749413B2 (en) 2012-05-29 2017-08-29 Intel Corporation Peer-to-peer interrupt signaling between devices coupled via interconnects
US9229901B1 (en) 2012-06-08 2016-01-05 Google Inc. Single-sided distributed storage system
US8862561B1 (en) 2012-08-30 2014-10-14 Google Inc. Detecting read/write conflicts
US9058122B1 (en) 2012-08-30 2015-06-16 Google Inc. Controlling access in a single-sided distributed storage system
US8676851B1 (en) 2012-08-30 2014-03-18 Google Inc. Executing transactions in distributed storage systems
US9164702B1 (en) 2012-09-07 2015-10-20 Google Inc. Single-sided distributed cache system
US20140304513A1 (en) * 2013-04-01 2014-10-09 Nexenta Systems, Inc. Storage drive processing multiple commands from multiple servers
US9313274B2 (en) 2013-09-05 2016-04-12 Google Inc. Isolating clients of distributed storage systems
CN105518611B (zh) * 2014-12-27 2019-10-25 华为技术有限公司 一种远程直接数据存取方法、设备和系统
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
GB2576005B (en) 2018-07-31 2020-10-07 Advanced Risc Mach Ltd Handling guard tag loss
EP3900308A4 (en) 2019-01-30 2022-02-23 Huawei Technologies Co., Ltd. I/O PROCESSING IN A DISTRIBUTED STORAGE NODE WITH RDMA
US11068412B2 (en) 2019-02-22 2021-07-20 Microsoft Technology Licensing, Llc RDMA transport with hardware integration
US11025564B2 (en) 2019-02-22 2021-06-01 Microsoft Technology Licensing, Llc RDMA transport with hardware integration and out of order placement
CN113127387A (zh) * 2021-03-12 2021-07-16 山东英信计算机技术有限公司 一种存储器和服务器

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003027877A2 (en) * 2001-09-28 2003-04-03 Maranti Networks, Inc. Protocol translation in a storage system
US20040037299A1 (en) * 2002-06-11 2004-02-26 Pandya Ashish A. Data processing system using internet protocols
WO2004023305A1 (en) * 2002-09-05 2004-03-18 International Business Machines Corporation Remote direct memory access enabled network interface controller switchover and switchback support
EP1460805A2 (en) * 2003-03-20 2004-09-22 Broadcom Corporation System and method for network interfacing (FKA mechanism for handling out-of-order TCP/IP frames)
JP2005505036A (ja) * 2001-09-28 2005-02-17 マランティ ネットワークス インコーポレイテッド サーバ不要の記憶サービス
US20050066060A1 (en) * 2003-09-19 2005-03-24 Pinkerton James T. Multiple offload of network state objects with support for failover events
JP2005085284A (ja) * 2003-09-10 2005-03-31 Microsoft Corp フェイルオーバーイベントをサポートするネットワーク状態オブジェクトの多重オフロード
US7260631B1 (en) * 2003-12-19 2007-08-21 Nvidia Corporation System and method for receiving iSCSI protocol data units

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7299266B2 (en) * 2002-09-05 2007-11-20 International Business Machines Corporation Memory management offload for RDMA enabled network adapters
US7114096B2 (en) * 2003-04-02 2006-09-26 International Business Machines Corporation State recovery and failover of intelligent network adapters

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003027877A2 (en) * 2001-09-28 2003-04-03 Maranti Networks, Inc. Protocol translation in a storage system
JP2005505036A (ja) * 2001-09-28 2005-02-17 マランティ ネットワークス インコーポレイテッド サーバ不要の記憶サービス
US20040037299A1 (en) * 2002-06-11 2004-02-26 Pandya Ashish A. Data processing system using internet protocols
JP2006516054A (ja) * 2002-06-11 2006-06-15 アシシュ エイ パンドヤ Tcp/ip、rdma、及びipストレージアプリケーションのための高性能ipプロセッサ
WO2004023305A1 (en) * 2002-09-05 2004-03-18 International Business Machines Corporation Remote direct memory access enabled network interface controller switchover and switchback support
JP2005538588A (ja) * 2002-09-05 2005-12-15 インターナショナル・ビジネス・マシーンズ・コーポレーション リモート・ダイレクト・メモリ・アクセス対応ネットワーク・インタフェース・コントローラのスイッチオーバーとスイッチバックのサポート
EP1460805A2 (en) * 2003-03-20 2004-09-22 Broadcom Corporation System and method for network interfacing (FKA mechanism for handling out-of-order TCP/IP frames)
JP2005085284A (ja) * 2003-09-10 2005-03-31 Microsoft Corp フェイルオーバーイベントをサポートするネットワーク状態オブジェクトの多重オフロード
US20050066060A1 (en) * 2003-09-19 2005-03-24 Pinkerton James T. Multiple offload of network state objects with support for failover events
US7260631B1 (en) * 2003-12-19 2007-08-21 Nvidia Corporation System and method for receiving iSCSI protocol data units

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012001908A1 (ja) 2010-06-28 2012-01-05 パナソニック株式会社 応答装置とその集積回路、応答方法、および応答システム
US9043427B2 (en) 2010-06-28 2015-05-26 Panasonic Intellectual Property Management Co., Ltd. Response device, integrated circuit of same, response method, and response system
JP2015512083A (ja) * 2012-12-11 2015-04-23 インテル・コーポレーション 暗示的なメモリの登録のための明示的なフロー制御
US9176911B2 (en) 2012-12-11 2015-11-03 Intel Corporation Explicit flow control for implicit memory registration
EP3012740A1 (en) 2014-10-23 2016-04-27 Fujitsu Limited Inter-process communication program, release requesting method, and parallel computing apparatus
US10078446B2 (en) 2014-10-23 2018-09-18 Fujitsu Limited Release requesting method and parallel computing apparatus

Also Published As

Publication number Publication date
US20060165084A1 (en) 2006-07-27
CN101095125A (zh) 2007-12-26
WO2006076993A1 (en) 2006-07-27
EP1839162A1 (en) 2007-10-03
TW200634531A (en) 2006-10-01

Similar Documents

Publication Publication Date Title
JP2008529109A (ja) ターゲットによるiSCSIデータ移動機能のRNICベースのオフロード
US20060168091A1 (en) RNIC-BASED OFFLOAD OF iSCSI DATA MOVEMENT FUNCTION BY INITIATOR
US7343527B2 (en) Recovery from iSCSI corruption with RDMA ATP mechanism
US20060168286A1 (en) iSCSI DATAMOVER INTERFACE AND FUNCTION SPLIT WITH RDMA ATP MECHANISM
EP1374521B1 (en) Method and apparatus for remote key validation for ngio/infiniband applications
US7320041B2 (en) Controlling flow of data between data processing systems via a memory
US6725296B2 (en) Apparatus and method for managing work and completion queues using head and tail pointers
US20070041383A1 (en) Third party node initiated remote direct memory access
JP4755391B2 (ja) メモリを介してデータ処理システムの間でデータのフローを制御する方法および装置
US20070226750A1 (en) Pipelined processing of RDMA-type network transactions
US7092401B2 (en) Apparatus and method for managing work and completion queues using head and tail pointers with end-to-end context error cache for reliable datagram
US9390036B2 (en) Processing data packets from a receive queue in a remote direct memory access device
US7761529B2 (en) Method, system, and program for managing memory requests by devices
US20040054822A1 (en) Transferring interrupts from a peripheral device to a host computer system
US7529886B2 (en) Method, system and storage medium for lockless InfiniBand™ poll for I/O completion
KR100834431B1 (ko) 개시자에 의한 iSCSI 데이터 이동 기능의 RNIC기반 오프로드
EP1543658B1 (en) One shot rdma having a 2-bit state
US20050165938A1 (en) Method, system, and program for managing shared resources
US7383312B2 (en) Application and verb resource management
US20060168092A1 (en) Scsi buffer memory management with rdma atp mechanism
US20060168094A1 (en) DIRECT ACCESS OF SCSI BUFFER WITH RDMA ATP MECHANISM BY iSCSI TARGET AND/OR INITIATOR
US20090271802A1 (en) Application and verb resource management

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080910

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080910

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110111

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110712