要約

  • RFC 3980 は naa. 形式を追加し、既存の Network Address Authority 識別子を、Fibre Channel や SAS と共有できる iSCSI ノード名の基礎にした。
  • 永続するのは論理ノードの識別であり、IP アドレス、TCP ポート、ネットワークポータル、現在の経路、発見結果、認証、認可、セッション、I/O の成否ではない。

装置の同一性は、ケーブルをたどって決めるには重要すぎる。一つのアレイに Fibre Channel のポートと SAS の接続、それに IP 上の iSCSI が備わるとき、管理者が知りたいのは「どの口か」だけではなく、「その口の向こうにある論理装置は昨日と同じものか」である。経路ごとに別名を与えれば、冗長化は資産の重複に見え、移行は装置の消失に見える。

2005 年の RFC 3980 は、その混乱を命名層で小さくした。iSCSI 名に naa. という形式を加え、INCITS T11 の Network Address Authority 識別子を16進文字列として続ける。公式のステータス、エラッタ、Datatracker の履歴から、この追加が Standards Track の変更だったことを確認できる。64ビットと128ビットの NAA 値を扱え、後者でも指定子の後は32桁で済むため、iSCSI 名の上限には十分な余裕があった。

この仕様の意味は新しい綴り方よりも、既存の割り当てを再利用できる点にある。NAA はすでに Fibre Channel と SAS の識別で使われていた。同じ値を iSCSI 名の基礎にできれば、三つの転送方式を持つ装置を三つの管理対象へ分裂させずに済む。インターフェースの違いを消したのではない。違うインターフェースの背後に同じ論理ノードがある、と表現する手段を与えたのである。

したがって naa. 名は検索窓ではない。RFC 3720 は、iSCSI ノード名と、そのノードへ到達するアドレスを区別した。RFC 3721 も命名と発見を一緒に論じながら、役割を混ぜなかった。SendTargets の応答や発見サービスが、ターゲット名を一つ以上のポータルへ結び付ける。名前だけを見ても、どの IP アドレスと TCP ポートを使うべきかは得られない。RFC 4171 の iSNS が別個の発見・管理機構であることも、この分業を裏付ける。

後継の統合仕様はさらに明快である。RFC 7143 では、iSCSI 名は場所もアドレスも含意しない。ノードは移動でき、複数のアドレスを持て、インターフェースを交換しても名前を維持できる。IP アドレスと、ターゲット側の待受 TCP ポートを持つのはネットワークポータルであって、ノード名ではない。同 RFC のステータス、エラッタ、Datatrackerは、RFC 3980 を廃止・統合しつつ naa. 形式を引き継いだ経緯を示す。

この区別から、運用上の非対称性が生まれる。二つのポータルが一つのターゲットへ通じることはある。一方が停止しても、ターゲット名は無効にならない。しかし、構文上正しい名前が存在しても、使えるポータルが一つでもあるとは限らない。RFC 1737 が URN に求めた永続性と大域性も、識別子をロケータから切り離すからこそ意味を持つ。

文字列の正規化にも限界がある。RFC 3722 は iSCSI 名を一貫して比較するための文字列プロファイルを定めた。正規化は、二つの表記が同じ名前かどうかを判定しやすくする。しかし、NAA の割り当てが正当だったか、名乗る相手が装置を支配しているか、装置が今も稼働しているかまでは証明しない。

認証を足しても、名前が資格情報に変わるわけではない。RFC 7143 は iSCSI 名を認証で用いるプリンシパルの対象として扱うが、プリンシパル名そのものは秘密でも署名でもない。RFC 3723 は認証、完全性、機密性を別のセキュリティ構造として規定した。正しい名前を含むログインが認証で失敗し得る。認証後に認可で拒否されることもある。両方を通過しても、セッション確立や I/O は失敗し得る。RFC 3980 が述べたのは、新しい形式が他の iSCSI 名形式を超える新たな問題を持ち込まない、という限定的な評価だった。

仕様の系譜は監査材料であって、現場の健全性証明ではない。RFC 4850 は iSCSI ノードアーキテクチャを修正し、RFC 5048 は訂正をまとめ、その後 RFC 7143 が初期文書を統合した。IANA の iSCSI Parameters は現在の登録情報を示すが、特定ベンダーの実装、個々の割り当て、ライブな経路、ログイン完了、マルチパスの正常性、保存データの持続性を保証しない。

RFC 3980 が残した設計上の教訓は、変化するものから名前を一段上へ持ち上げることだった。一つの識別子が三つのストレージ転送を横断できるからこそ、住所、発見、認証、セッション、I/O はそれぞれ別の検証を要求できる。

出典