"のNVMeオーバーファブリック-1_0a - 2018年7月23日 - 批准" を読ん注(1)

1はじめに(入門・プレゼンテーション)

NVMeバージョン1.2.1と以前のホストソフトウェアと不揮発性メモリシステムのバージョンは、レジスタレベルインターフェースのPCIe通信を定義します。この仕様は、他のネットワーク上の操作(ファブリック上のNVMe)によってイネーブルのNVMeへの拡張を定義します。参照のNVMe仕様のNVMe基準はバージョン1.2.1です。

本書では特定の拡張のためのNVMe輸送層の定義は、明細書中のNVMe輸送層制約に示さ。この文書では、RDMAのNVMe輸送層の制約の仕様が含まれています。トランスポート層制約仕様のNVMeのファイバチャネル(FC)はINCITS540 FC-のNVMeを(http://www.incits.orgを参照)定義しました。

1.1適用範囲

この仕様は、ファブリックのNVMe延長上のNVMeを定義するが、ファブリック上に操作を有効のPCIe異なります。仕様はのNVMeの基本仕様を補完します。

1.2の範囲外

これは、PCIeの機能を介してのみのNVMeに適用され、両方のNVMeもののファブリックオーバーのPCIeとのNVMeに適用されますが、のNVMeベース仕様は明確な機能を有しており、もはやこの仕様には含まれていません。

この仕様は、特定のニーズや行動に無関係な実装を定義します。この仕様を超え実装要件と行動。例えば、本明細書はNVMサブシステムがネットワークに直接接続されたSSDによって実現することができる、またはネットワークスイッチは、汎用サーバの実装上で実行しているデバイスの中央、またはソフトウェアでのPCIeのNVMe SSD上に実装することが続きます。

意図的に制限されたの必要な機能の定義の観点からファブリックバージョン1.0上のNVMe。それ以降のバージョンでは制限が含まれ削除される場合があります。

  • SQとCQ一人の個人が1である必要があります:1は、1つの関連する1マップされました。ファブリック上のNVMeはSQ CQの複数の対応する一つをサポートしていません。
  • 流量制御層のNVMe完了の非存在下で。したがって、CQの深さは、処理すべきコマンドの最大数のサイズをサポートしなければなりません。
  • メタデータと、特にデータ伝送を分離するために単一のバッファとして連続的な論理ブロック、などのメタデータ送信部は、サポートされていません。

なお、本明細書に記載されているその他の刊行もコンプライアンス要件は、この仕様の範囲を超えて、この文書で、ネットワークまたは任意の公表のNVMe輸送層制約述べた仕様およびその他の技術仕様を備えています。

1.4規約

1.4.1協会

Iコントローラ/ Oキューの管理キューと、このすべてを含む特定のコントローラと、特定のホストの間で排他的な関係、。

1.4.2認証コマンド

送信するためのネットワーク認証または認証に関連するコマンドが受信されました。

1.4.3カプセル

細胞内のファブリックのNVMe情報交換オーバーのNVMe。コマンドまたは応答を含み、また、コマンド/レスポンスデータとSGLSが含まれていてもよいカプセルは、[注:SGLは、すべてのリストです]。

1.4.4ディスカバリーコントローラ

最小のサポート機能のみ達成するために所望の特性を検出ログページ、そのような制御を得ることを可能にします。ディスカバリーコントローラは、I / Oキューを実装し、また名前空間を想定していません。

1.4.5ディスカバリー・サービス

ディスカバリーはNVMサブシステムのディスカバリーコントローラをサポートするサービスです。ディスカバリサービスは、名前空間提示コントローラをサポートすることはできません。

1.4.6ダイナミックコントローラ

関連会合前までの状態を保持していないDAMAコントローラ。

1.4.7ファブリック(ネットワークファブリック)

複数のベアラネットワークトポロジとの間のデータ伝送の各ノード。

1.4.8交通のNVMe

プロトコル層は、ホストとNVMサブシステム間のデータの受け渡し、コマンドと応答の信頼性の高い配信を提供します。ネットワークトポロジに配置さのNVMeトランス(トランスポート層)、ネットワークトポロジ彼に依存する物理的な相互接続層と下部層のネットワークプロトコル。

1.4.9のNVMe交通バインディング仕様

NVMe送信制約仕様、ホストのNVMe輸送層及びNVMサブシステム、及びコマンド応答仕様との間のデータの信頼できる配信。制約は、トラブルシューティングとのNVMe伝送する能力を制限する可能性があります。

1.4.10ポートポート(NVMサブシステムポート)

これは、ファブリックプロトコルインタフェースを介しNVMサブシステムとファブリックのNVMe間のポートを指します。NVMサブシステムポートはインターフェースとして一緒に1つ以上の物理インターフェイスファブリックの組、です。

1.4.11ポートID

NVMサブシステムポートの16ビットの識別子に関連付けられたポート識別子。

1.4.12プロパティ(属性)

それは、PCIeコントローラレジスタ、メモリ及び配置一般にわたる一般のNVMeの定義に対応します。プロパティ低レベルコントローラは、プロパティを設定し、低レベルコントローラのステータスを取得するために使用されます。

1.4.13静的コントローラ

関連付けが既に存在し、指定された制御コントローラIDに格納されている状態の前に。

1.4.14コマンドを提出します

ホストはSQにカプセルを入れた場合、コマンドが送信された場合でも。SQにコマンドの新しい位置を提出するテール・エントリポインタを増やすホスト。

物理的なネットワークトポロジへ1.4.15インタフェース(物理ポート)

NVMサブシステムとネットワークトポロジとの間の物理的な接続。

操作の1.5理論

ファブリック上のNVMeは、ベースのアーキテクチャ定義のNVMe仕様、コマンドセット、キューに基づいてインターフェイスを確立しました。中央の目標は、必要な一貫性の基本的な定義からの唯一の偏差一般的なネットワークトポロジをサポートするために、ファブリック上のNVMeを作ることです。ファブリックの拡張定義であっオーバーのNVMe:

  • コマンドのために使用されるカプセル、応答、および必要に応じてデータ転送、使用の概念を定義する新しいカプセル。
  • SGL拡張は、拡張SGLアドレッシングキー/オフセットパターンメモリを使用するようなデータ転送のNVMeカプセル画像をサポートします。
  • 拡張された待ち行列モデル、基礎となるトランスポート層のNVMeを提供するいくつかの潜在的な機能を有効にする機能。
  • 接続ホストを確立する方法は、ホストの接続は、管理者またはI / Oキューのキュー内の特定のNVMサブシステムコントローラに接続されます。この方法は、認証することができるステップとアイデンティティを検証するためのホストコントローラを含みます。
  • 各コントローラPCIeメモリ・マップドI / O(MMIO)一般レジスタの特性は、任意のホストのNVMe輸送層によってアクセスすることができます。
  • NVMサブシステムが増加した検出メカニズムによってアクセスすることができるかを決定するためにホストのために。

次のような違いを持つファブリックのNVMeの基本仕様を超えるのNVMe:

  • I / Oの送信キューおよびI / O完了キュー-1のマッピング。ファブリックオーバーのNVMeは同じI / O完了キューを提出するために、複数のI / Oキューのマッピングをサポートしていません。
  • そのコントローラは、ホスト割込みの割込み機構を生成するように、ファブリック上のNVMe割り込みは、ホストネットワーク機能(ホストバスアダプタHBA)ホスト・インターフェースを生成し、定義されていません。
  • ファブリックオーバーのNVMeは、I / Oの完了キューを作成するI / Oの送信キューを作成し、I / O完了キューを削除し、I / Oコマンドの送信キューを削除するために使用されていません。管理者送信キューベースアドレス(AQA)のプロパティを使用することなく、ファブリックオーバーのNVMe。コマンドを使用してキューを作成するために、ファブリックを接続します。
  • メタデータと、それは連続した論理ブロックの一部として送信されるべきです。ファブリック上のNVMeバッファとは別のシングルパスメタデータをサポートしていません。
  • ファブリックオーバーのNVMeはサポートしていないのPRPを、管理、I / O、ファブリックコマンドSGLSする必要があります。これらの違いは、PCIeの上のNVMeです:PCIeのコマンド経由のNVMeは、管理SGLをサポートしていない、のNVMe PCIeの上でI / OコマンドSGLもオプションです。
  • ファブリックオーバーのNVMeは、完全なキュー・フロー・コントロールをサポートしていません。これは、コマンドキューを提出する前に完了するための空きスロットがあることを確認するために、ホストが必要です。

PCIeのオーバーファブリックとのNVMe以上のNVMeは違いがある実現し、それらはすべて同じ構造とコマンドセットを実行しますが。一般的な機能は次のとおりです。

  • ホストコントローラインターフェイスの限られた数。
  • 最適化されたコマンドと完全なパスを提出します。
  • 並列動作のサポートは、各コントローラは、I / Oキューが、各キューは、保留中の最大64K-1処理命令をサポートすることができ、最大64 K-1番目までサポートすることができます。
  • そのようなデータ保護機能をエンドツーエンドのようないくつかのサポートエンタープライズクラスの機能、。
  • 堅牢なエラー報告機能と管理機能。
  • キューの優先度が割り当てられている各I / Oは、明確に定義されたキューコントローラアービトレーションメカニズムを使用します。
  • 効率とコマンドセットを改善しました。
  • 複数の名前空間と名前空間の管理をサポートしています。
  • これは、マルチパスI / Oと名前空間の共有をサポートしています。

1.5.1ネットワーク構造およびトランスポート層

必要なトランスポート層の下の生地のNVMe以上のNVMeは、信頼性の高いデータ転送と配信のNVMeコマンドをサポートしています。NVMeトランスポート層プロトコル層は、任意の物理的な相互接続特性に依存しない、抽象化です。

図1は、図の例を示している。のNVMe輸送層の分類。NVMe輸送層は、メモリモデル、メッセージ・モデル、または両方の組み合わせとして表すことができます。メモリモデルは、ネットワーク内のノード、及び応答データと送信されるコマンドを実行することにより、メモリアクセス動作です。メッセージが唯一のモデルカプセルは、ネットワークのノード、及びデータ応答メッセージカプセルとの間のコマンドが含まれて送信されます。メッセージ/メモリモデルは、コマンドカプセル、カプセル、および応答データを送信するネットワークノード間で読み取り操作および書き込みメッセージ及び表示メモリの組み合わせを使用します。データは、コマンドカプセルに応答して、カプセル内に含まれるかどうかをオプション。

NVMe仕様のNVMe単位で定義されている専用メモリモデルのトランスポート層のNVMeのPCIeをサポート。メッセージモデルおよびメッセージ/メモリモデルのNVMe輸送層は、この文書に詳細に記載します。

図ファブリック図2の上の階層のNVMeで使用されるプロトコル。この仕様は、コアの外観は、トランスポート層のNVMeアーキテクチャから独立している定義します。NVMe輸送層制約の仕様は、対応するトランスポート固有のNVMe特別なリンク、およびサービス・インタフェースマッピングのNVMeは、それぞれのNVMeを送信するために必要な方法を説明するために使用されます。どのネイティブ通信ネットワークのサービスおよびその他の機能とのインタフェース(例えば、図2のネットワーク・プロトコルとネットワーク物理層における)のNVMeのNVMe送信が使用され、本明細書の範囲外です。

1.5.2 NVMサブシステム

ファブリックオーバーのNVMeは、定義されたNVMサブシステムアーキテクチャのNVMe規格に基づいて構築されました。これは、コントローラの名前空間にアクセスするためのNVMサブシステム1(64K-16)の集合を表します。64Kのコントローラ1 NVM・サブシステムのポート(ポート)を介してホストに関連付けられています。

NVMサブシステムポートは、ネットワークとのNVMサブシステムとの間のプロトコルインタフェースです。NVMサブシステムポートは、単一のプロトコルインターフェースとして一緒に来て、1つまたは複数の物理ネットワーク・インターフェースの集合です。場合リンク重合、単一のNVMサブシステムのポートからなる物理ポートのリンク群。

NVMサブシステムは、一つ以上のNVMサブシステムのポートを備えています。[注時にいくつかの場所が説明それはNVMサブシステムポートNVMサブシステムポートに書き込むようにしてもよいです

各NVMサブシステムポートは、16ビットポート識別子ビット(ポートID)を持っています。NVMサブシステムポートはNQNを識別して、ポートID NVMサブシステムによって決定されます。ポートのNVMサブシステムは、異なるのNVMe伝送をサポートすることができます。複数種類ののNVMe輸送層は、下層のネットワークに存在する場合、NVMサブシステムポートは、(例えば、同一のNVMサブシステムポートは、ポートIDとiWARPのROCEをサポートすることができる)複数のトランスポート層のNVMeタイプをサポートすることができます。ポート、またはポートの特異的結合を有する特定のコントローラは、フレキシブルコントローラに割り当てることができるが、接続が成功した後、各特定のコントローラが単一のNVMサブシステムに結合させる、NVMサブシステムを実現上のポート。

同時に、適切なホストにのみ連結コントローラ。ファブリック上のNVMeは、複数のホストが同じポートを介して別のコントローラに接続することを可能にします。他の態様ファブリック上のNVMe、マルチパスI / O、及び仕様のNVMeベースで定義された共有名前空間に相当します。

NVMサブシステムは、不揮発性記憶媒体とコントローラとメディアの不揮発性メモリNVM・サブシステムとの間のインターフェースを含み、それはオプション、不明です。コントローラは、名前空間を介してホストへの不揮発性記憶媒体を提供します。NVMサブシステムは、すべて同じ名前空間上のコントローラを実装するために必要とされていません。NVMサブシステムがレンダリング名前空間またはコントローラディスカバリ機能をサポートすることができ、それはコントローラの混合型にすることはできません、ディスカバリサービスは、唯一のNVMサブシステムディスカバリーコントローラを想定しています。

ホストは(3.3節参照)の良好な関係を確立するためにも、ホストコントローラと、コントローラの管理キューに接続するためのファブリックConnectコマンドを使用している場合。接続コマンドで、ホストは、ホストNQNを指定し、NVMサブシステムNQN、ホストIDの識別は、また、有効なコントローラは、コントローラIDにアクセスすることが指定してもよいです。同時に、コントローラは、[の]ホスト・アソシエーションに関連付けられた一つだけを有することができます。

NVMサブシステムは、動的または静的コントローラーのモデルをサポートすることができます。動的モデルは、コントローラはNVMサブシステムを適用するために必要とされる、新しいアプリケーションのコントローラは、以前の関連付けのステータスが含まれていません。静的モデルは、特定のIDベースのコントローラを要求することができ、ホスト・コントローラは、関連した状態(特性設定)の前に格納されています。4.2節を参照してください。

ホスト・コントローラとの関連が存在した後、唯一のホストは、後続のNQN Connectコマンドで同じホストとの接続を確立するために、コントローラのI / Oキューを使用することができ、マスターID、NVMサブシステムNQNコントローラIDと同じNVMサブシステムポートを使用し、 NVMeトランスポートタイプ、およびのNVMeトランスポートアドレス。

ホストとコントローラの接続が失われたとの間の関連付けは、コントローラをオフに存在し続ける、またはコントローラレベルリセット、又は交通のNVMe。ホストとコントローラのNVMeトランスポート接続部との間の切断は、明確なコマンドはありません。コントローラは、ホストに関連付けられている場合、コントローラがビジーである、他の関連付けられたコントローラと再確立することができません。

1.5.3データ転送カプセル和

NVMeカプセルは、ファブリック上のNVMeに情報交換部に使用されます。カプセルカプセルは、コマンドと応答カプセルに分けることができます。コマンド内部のカプセルは、コマンドを含み、SGLSまたはデータ、またはデータSGLS(SQエントリ・フォーマットのような)この部分は任意ではなく、いくつかのコマンドカプセル内容です。このデータは、オプションである場合、カプセルは、トランスポンダ返信応答(CQエントリの形式)とデータを含みます。記載のカプセルは、データがホストとNVMサブシステムのNVMe輸送層との間に任意のデータ(データ構造に関連する、例えば、データ又はコマンドの論理ブロック)を意味すると述べました。全て独立して、低級カプセルのNVMe搬送ユニット(例えばパケット、メッセージ又はフレームと関連した頭部および尾部)、および場合によってはそのような複数のユニット。

NVMサブシステムへのマスターからのコマンドのカプセル。コマンド、I / Oコマンドを含む管理SQE、またはコマンドファブリック。コマンドは、最小サイズのカプセルでのNVMe制約は、トランスポート層を指定するが、少なくとも64バイトです。NVMe最大コマンドカプセルのサイズは、トランスポート層の制約を指定しています。図3に示す図カプセルコマンドフォーマット。

 回答カプセルをホストにNVMサブシステムから転送されます。回答カプセルフロントは、CQEほとんどの部分である管理コマンドで、応答I / Oコマンドまたはファブリックコマンド。カプセル応答の最大長さと最小長さのNVMe輸送層制約によって指定され、図4は、図3のフォーマットを示します。

 

メッセージおよびメッセージ/メモリのNVMeモデルは、送信されたコマンドがSGLSにあるホスト・コントローラから送信されたすべての送信を必要とします。メッセージとメッセージ/メモリモデルの場合は、データの一部または全部はオプションです内のコマンドまたは応答をサポートしています。

PCIeのコマンドのPRP SGLSおよび必要に応じてデータ送信範囲を指定上のNVMe。ファブリックオーバーのNVMeは、すべてのコマンドのSGLS必要(ファブリック、管理者が、I / OはSGLSでコマンド)。SGLは、データを送信するカプセル内のデータの位置、又は使用情報(例えば、送信RDMA)のNVMe所望の送信データの特定のトランスポート機構を指定することができます。SGLS、データ・カプセルSGL及び配置制約へのNVMe輸送層拘束仕様のNVMe透過型定義。

1.5.4 命令集

図は、図5に示した、ファブリックオーバーのNVMeは、3つのコマンドをサポートしています。ファブリック生地のNVMe以上のコマンドセットは、指定され、管理者とのNVMeに基づく仕様で定義されたI / Oコマンドセットです。

ファブリックコマンドが取得、認証のNVMeで、接続を確立するなど、ファブリックのNVMe上で操作するためのコマンドを設定したり、プロパティセット。すべてのコマンドは、いくつかのコマンドは、ファブリック(CC.EN状態)を有効にするかどうかをコマンドコントローラが対処する必要があるかどうか、管理者およびI / Oコマンドとは異なり、ファブリックI / Oキューに提出することができる、ファブリック管理キューに提出することができます。

この仕様は、SQEサイズが64バイト、CQE 16バイトのサイズ、コマンドNVMに定義されたのと同じ濃度であると仮定します。

1.5.5プロパティ

特性はのNVMe制御レジスタアナログメモリ・マップで定義されたPCIe上のNVMeのファブリック上のNVMeあります。プロパティは、コントローラの設定や状態のサブセットのサブセットを取得するために使用される属性です。

コマンドを取得するプロパティでプロパティの値を取得することができますホストは、プロパティ値プロパティセットコマンド、コマンドを変更することができますし、プロパティは、プロパティセットコマンドが帰属ファブリックコマンドセットです取得します。プロパティは、管理キューによってアクセスすることができます。

いくつかのドメイン・コントローラ・レジスタまたは機能(例えばレジスタドアベル)のPCIeに特異的であり、それらはファブリック上のNVMeではありません。結果は、ドメインコントローラのレジスタおよびファブリック上のNVMeに対して定義された基部のNVMe仕様(セクション3.5.1を参照)です。

1.5.6ディスカバリー

ファブリック検出以上のNVMeはNVMサブシステムにアクセスできるホストを決定するホストのためのメカニズムを定義します。ディスカバリーコントローラはディスカバリーログインページ機能を取得するために要求された操作を実行、最小限の機能をサポートしています。I / Oキューを実行しませんディスカバリーコントローラは、名前空間を提示されていません。ディスカバリサービスは、ディスカバリーコントローラを含むNVMサブシステムです。

ディスカバリログページ項目設け発見コントローラのNVMe輸送層で指定されたホストに接続された各NVMサブシステムのために必要な情報を1つまたは複数のエントリを含みます。エントリエントリがホストに指定することができるNVMサブシステムのプレゼンテーションの名前空間にアクセスすることができ、それはまた別のディスカバリサービスを勧告することができます。推奨最大深さは8です。

初期ディスカバリーサービスに接続するために必要な情報へのアクセスをホストすることは、特定のメソッドの実装に固有のものです。この情報は、ホストプロファイルが決定されるハイパーバイザまたはOS特性またはいくつかの他のメカニズムを使用してもよいです。

1.5.7接続

ファブリックオーバーのNVMeは、キューコントローラAdminまたはI / Oキューを作成するために、Connetコマンドを使用していました。ホストと対応するコントローラ間のキュー管理は、アソシエーションを確立作成します。ファブリックオーバーのNVMeが管理提出キューベースアドレス(ASQ)をサポートしていません、管理者完了キューベースアドレス(ACQ)は、管理キューは、内部の接続コマンドに含まれているすべての必要な情報の管理キューに接続されている(AQA)のプロパティは、属性。ファブリックオーバーのNVMeは、私が管理コマンド/ Oキューの作成と削除によって定義された基本的な仕様をのNVMeサポートしていません。

NVMeトランスポート接続は、前のホストおよびカプセルまたはNVMサブシステム間のデータ転送に確立されています。接続を確立するための搬送機構は、特定のNVMeのNVMe輸送され、説明はそれぞれのNVMe輸送層制約の仕様によって定義されます。NVMe交通運輸のNVMeは、管理者または各I / Oキューとして分離するために個別の接続が必要になる場合があり、また、コントローラは、特別な管理者の使用と同じトランスポート層接続を使用して、すべてのI / OキューのNVMeを行うことができます。(:送受信バッファサイズを収容する交換キューサイズなど)接続の確立中のNVMe伝送は、またホストとコントローラとの間の伝送のNVMeのNVMeレイヤ情報転送を必要とするかもしれません。

connectコマンドは、指定のキューIDおよびタイプ(AdminまたはI / O)、SQとCQサイズ、キューの属性を、ホストNQN、NVMサブシステムNQN、およびホストID。NVMサブシステムコントローラは静的モデルをサポートしている場合、特定のコントローラを指定するには、コマンドを接続します。NVMeインバンド認証を必要に応じて、接続が正常に確立されているか否かを示す応答レスポンスを接続します。

コマンドは、同じ管理に提出されて接続するか、それがI / Oキューを作成するキュー。最初の接続キューを送信下のNVMeを作成し、接続が送信した接続カプセルのNVMeのコマンドと応答を送信します。コマンドを接続するだけキューに一度送信することができます。

Connectコマンドが正常に完了すると、対応するSQとCQが作成されます。あなたが認定応答接続でのNVMeの指示が必要な場合、それはファブリック/管理/ IOコマンドセットを実行する前に認証取得して、内側のNVMeを実行します。管理キューに正常に完了Connectコマンドの前に、コントローラは(CSTS.RDY = 1)準備ができている、唯一のファブリックコマンドを送信してください。コントローラは、ファブリック管理コマンド準備ができていると、コマンドは、管理キューに提出することができるとき。I / connectコマンドのOキューの場合は、コントローラのみを提出する準備ができた後まで待つことができます。正常に完了したI / O接続コマンドキューは、(それが必要な認証が成功した後、認証とのNVMe内にある場合)、I / Oに提出することができた後、キューにコマンド。

接続応答は、ホストに割り当てられたコントローラIDを含みます。これらの条件のいずれかのコマンドを接続あまり満たしていない場合は、後続のすべてのConnectコマンドが同じのNVMe交通を利用して、関連するI / Oキューが同じホストからのものである必要があり、このコントローラを作成するために、同じホスト識別子、ホストNQN、NVMサブシステムNQNを持っています彼らは失敗します。

1.5.8認定

NVMeは、ファブリック支持体上に両方のネットワークセキュリティチャネルはまた、認証とのNVMe内でサポートされています。NVMサブシステムは、ホストがネットワークセキュリティチャネル、のNVMeバンド認証、または両方の要件を使用することができますが必要です。ネットワーク探索サービスは、必要なNVMサブシステムへのセキュアなチャネルかどうかを示します。コントローラの応答が必要かどうかのNVMeインバンド認証の指示を接続します。

セキュアチャネルを確立する前に、NVMサブシステムセキュアネットワーク通路に関連付けられたコントローラは、のNVMe伝送に任意のコマンド(ファブリック、管理又はI / O)を受け入れることができません。接続後のみのNVMeバンド認証へのNVMeコントローラバンド認証を要求するために、正常に完了し、認証に加えて、コントローラは、任意の他のコマンドを受け入れることができないコマンド。第6章を参照してください。

おすすめ

転載: www.cnblogs.com/JamesLi/p/11342031.html