JP6047158B2

Transporting operations of arbitrary size over remote direct memory access

Abstract

This record has no abstract on file.

JP6047158B2, drawing sheet 1
Sheet 1 of 17

Term

5.7 yearsleft in the term

Expires 6 June 2032.

  1. Priority
  2. Filed
  3. Granted
  4. Today
  5. Expires

15 claims: 3 independent, 12 dependent

  1. 1
    コンピューター実行可能命令を格納するコンピューター読み取り可能記憶媒体であって、プロセッサーによって前記命令を実行すると、リモート・ダイレクト・メモリー・アクセス(RDMA)によるデーター動作を使用してデーターを交換する方法を実行し、 前記プロセッサーがクライアント内に設けられ、 前記方法が、 前記クライアントに対し サーバーとの接続を作るステップと、 前記サーバーとの接続をネゴシエートするステップであって、前記ネゴシエー ト が、前記接続において前記サーバーが受信する最大バイト数を決める、ステップと、 前記サーバーへの接続に関連するデーターを送るパケット数を決定するステップと、 前記データーの断片化を使用するか否か判断するステップと、 前記データーの断片化を使用しないとき、第1プロトコル・パケットを前記データーと共に前記サーバーに送るステップと、 前記データーの断片化を使用するとき、 送信バッファーにおける最初のバイトを、前記第1プロトコル・パケットにおけるデーターとして送るように初期化するステップと、 前記第1プロトコル・パケットにおいてDataLengthフィールドおよびRemainingDataLengthフィールドを設定するステップであって、RemainingDataLengthフィールドは前記 サーバー が未だ受信していない断片化メッセージのバイト数に等しい、ステップと、 前記第1プロトコル・パケットを前記サーバーに送るステップと、 少なくとも1つの第2プロトコル・パケットに対して、 前記送信バッファー内にあるバイトを、 前記 少なくとも 1つの 第2プロトコル・パケットにおいてデーターとして送るように初期化し、 前記少なくとも1つの第2プロトコル・パケットにおける前記RemainingDataLengthフィールドを設定し、 前記少なくとも1つの第2プロトコル・パケットを前記サーバーに送る、ことを含む命令を繰り返すステップと、を含む、コンピューター読み取り可能記憶媒体。
  2. 2
    請求項1記載のコンピューター読み取り可能記憶媒体において、断片化を使用するか否か判断する前記ステップが、前記データーを送るためのパケットの数が1よりも大きいか否か判断するステップを含む、コンピューター読み取り可能記憶媒体。
  3. 3
    請求項2記載のコンピューター読み取り可能記憶媒体において、前記接続に関連するデーターを前記サーバーに送るためのパケット数を決定する前記ステップが、前記サーバーが前記接続において受信する最大バイト数が、送られるデーターのバイト数未満であるか否か判断するステップを含む、コンピューター読み取り可能記憶媒体。
  4. 4
    請求項1記載のコンピューター読み取り可能記憶媒体において、前記サーバーとの接続をネゴシエートするステップが、 受信をプリポストするステップと、 プロトコル・ネゴシエート要求を作るステップと、 前記プロトコル・ネゴシエート要求を前記サーバーに送るステップと、 ネゴシエート満了タイマーを設定するステップと、 前記ネゴシエート満了タイマーが満了する前に、前記プロトコル・ネゴシエート要求に対する応答が受信されたか否か判断するステップと、 前記ネゴシエート満了タイマーが満了する前に前記プロトコル・ネゴシエート要求に対する応答が受信されない場合、 前記サーバーとの接続を落とす ステップと、 前記ネゴシエート満了タイマーが満了する前に前記プロトコル・ネゴシエートに対する応答が受信された場合、プロトコル・ネゴシエート応答を受信するステップと、 前記プロトコル・ネゴシエート応答の有効性を判断するステップと、 前記プロトコル・ネゴシエート応答を処理するステップであって、前記プロトコル・ネゴシエート応答が、前記プロトコル・パケットを送るための少なくとも1つのクレジットを前記 クライアント に供給する、ステップと、を含む、コンピューター読み取り可能記憶媒体。
  5. 5
    請求項4記載のコンピューター読み取り可能記憶媒体であって、更に、 前記少なくとも1つの第2プロトコル・パケットを送るための十分なクレジットが存在する場合、前記少なくとも1つの第2プロトコル・パケットを送るステップと、 前記少なくとも1つの第2プロトコル・パケットを送るための十分なクレジットが存在しない場合、少なくとも1つの追加クレジットを前記サーバーに要求するステップと、 十分なクレジットが受信されたか否か判断するステップと、 十分なクレジットが受信されない場合、前記接続を終了するステップと、 十分なクレジットが受信された場合、前記少なくとも1つの第2プロトコル・パケットを送るステップと、を含む、コンピューター読み取り可能記憶媒体。
  6. 6
    リモート・ダイレクト・メモリー・アクセス(RDMA)によってサーバー・メッセージ・ブロック(SMB/SMB2)を使用してデーターを 、送信側と受信側との間で 交換するように構成されたシステムであって、 RDMAメッセージによってデーターを転送するように動作可能なRDMAネットワーク・インターフェース・カード(RNIC)と、 プロセッサーによって実行可能なコンピューター・プログラム命令を格納するように動作可能なメモリーと、を含み、前記プロセッサーが、前記RNICおよび前記メモリーと通信して、カーネルを実行するように動作可能であり、前記カーネルが、 第1プロトコル を実施する第1 クライアントを含み、この 第1 クライアントが、 2つ以上のRDMAメッセージにおいて断片化SMBデーターを伝達し、各RDMAメッセージがRemainingDataLengthフィールドを含み、RemainingDataLengthフィールドは前記受信側が未だ受信していない断片化メッセージのバイト数に等しく、 クレジットを交換するために受信バッファーを作る、ように動作可能であり、前記クレジットが、 前記 送信側が 前記 受信側に送ることができるRDMAメッセージ数を決定する、システム。
  7. 7
    請求項6記載のシステムであって、更に、前記第1 クライアント と通信可能なRDMAインターフェースを含み、前記RDMAインターフェースが、前記RNICを介してRDMA接続を開くように動作可能である、システム。
  8. 8
    請求項7記載のシステムであって、更に、 第2プロトコル を実施する第2 クライアントを含み、この第2 クライアント が、 RDMAダイレクト・データー転送を実行することをサーバーに命令するためにSMB2リード/ライト要求を作り、 前記SMB2リード/ライト要求を前記第1 クライアント に送るように動作可能であり、 前記第1 クライアント が、更に、 前記SMB2リード/ライト要求を第1プロトコル・データー転送パケットにカプセル化し、 前記第1プロトコル・データー転送パケットを前記サーバーに送るように動作可能である、システム。
  9. 9
    請求項8記載のシステムにおいて、前記SMB2リード/ライト要求が、RDMAチャネル記述子情報を特定するフィールドを含み、前記第1プロトコル が SMBダイレクト・プロトコルである、システム。
  10. 10
    請求項9記載のシステムにおいて、前記RDMAチャネル記述子情報が、誘導情報を含み、前記サーバーが、前記誘導情報を決定し、前記誘導情報によって特定されたメモリー・アドレスに対して、エンコードされていないアプリケーション・データーのRDMAライトまたはRDMAリードを実行する、システム。
  11. 11
    リモート・ダイレクト・メモリー・アクセス(RDMA)によってサーバー・メッセージ・ブロック(SMB/SMB2)を使用してデーターを 、送信側と受信側との間で 交換する接続を作るためのコンピューター実装方法であって、 第1SMBダイレクト・データー転送パケットを 前記受信側が 受信するステップであって、前記第1SMBダイレクト・データー転送パケットが、RemainingDataLengthフィールドおよびSMB2データーを含み、RemainingDataLengthフィールドは前記受信側が未だ受信していない断片化メッセージのバイト数に等しい、ステップと、 前記RemainingDataLengthフィールドが非ゼロであるか否か判断するステップと、 RemainingDataLengthフィールド前記がゼロであるとき、前記第1SMBダイレクト・データー転送パケットにおける前記SMB2データーを処理するステップと、 前記RemainingDataLengthフィールドが非ゼロであるとき、再組み立てバッファーを前記接続に割り当てるステップと、 前記SMB2データーを前記第1SMBダイレクト・データー転送パケットから前記再組み立てバッファーにコピーするステップと、 少なくとも1つの他のSMBダイレクト・データー転送パケットを受信するステップと、 前記SMB2データーを、前記少なくとも1つの他のSMBダイレクト・データー転送パケットから前記再組み立てバッファーにコピーするステップと、を含む、コンピューター実装方法。
  12. 12
    請求項11記載の方法において、前記SMBダイレクト・データー転送パケットが、CreditsRequested、CreditsGranted、DataOffset、およびDataLengthから成るグループからの1つ以上のフィールドを含む、方法。
  13. 13
    請求項12記載の方法において、前記CreditsGrantedフィールドが、前記SMBダイレクト・データー転送パケットの送信側にどれだけのクレジットが供給されたかを示す、方法。
  14. 14
    請求項11記載の方法において、クレジットが、前記送信側によって送ることができるRDMAメッセージの数に対する値である、方法。
  15. 15
    請求項11記載の方法であって、更に、 前記少なくとも1つの他のSMBダイレクト・データー転送パケットが最後のパケットであるか否か判断するステップと、 前記少なくとも1つの他のSMBダイレクト・データー転送パケットが最後のパケットである場合、前記再組み立てバッファーにおける前記SMB2データーを処理するステップと、 前記少なくとも1つの他のSMBダイレクト・データー転送パケットが最後のパケットではない場合、少なくとも1つの他のSMBダイレクト・データー転送パケットを受信し、前記少なくとも1つの他のSMBダイレクト・データー転送パケットからの前記SMB2データーを、前記再組み立てバッファーにコピーするステップを繰り返すステップと、を含む、方法。
Independent claims15