要約
- RFC 7145では、iSERの発信側は相手がローカルSTagを無効化すると期待してはならない。Send with Invalidateは任意であり、無効化されるはずのタグはローカル層が確認し、まだ有効なら自ら無効化する。
- これはメッセージ処理だけの話ではない。有効なSTagが残れば、I/Oバッファーは元のタスク終了後もRDMA経由でネットワークからアクセス可能なままになる。
コマンドの完了とアクセス権の終了は別だ
ストレージコマンドの終わりは見えやすい。応答が届き、タスクが片付き、ソフトウェアはバッファーを再利用しようとする。しかしRDMAでは、もう一つ確認すべきことがある。相手がそのメモリーに触れる能力は本当に取り消されたのか。iSERのSteering Tag(STag)はI/Oバッファーを識別する。発信側がタグを相手に知らせると、相手はRDMA ReadやWriteでその領域にアクセスできる。
2014年に公開されRFC 5046を置き換えたRFC 7145は、最後の確認責任を発信側に置く。基盤となるRDMA対応プロトコルがサポートすれば、ターゲットはSCSI応答を運ぶSend with Invalidateでタグを自動的に無効化できる。だが、このメッセージは必須ではない。発信側は、相手がその方法を使ったと決めつけてはならない。タスク終了後にSTagが無効になっているべきなら、ローカルのiSER層が状態を確認し、有効なままなら無効化する。RFC 7145
応答を受け取った事実と、ローカルのメモリー登録状態が変わった事実は同じではない。通常完了では、公開したSTagの無効化が推奨される。一方、双方向コマンドや異常終了では自動処理に例外が生じる。Send with Invalidateが指定できるタグは一つだけなので、双方向転送ではもう一方を発信側が明示的に無効化する必要もある。応答PDUなしでタスクが終わった場合、RFC 7145は別のリソース解放手順を定め、関連するタグとローカルマッピングを探して無効化させる。
理由はアクセスできる時間にある。タグをキャッシュして再利用するために残すと、対応するバッファーは元のiSCSI処理を過ぎてもRDMA経由でネットワークに露出する。保持したこと自体は不正アクセスの証拠ではない。しかし、アクセス可能な期間は延びる。処理完了だけでは、その窓が閉じたとは言えない。
自動無効化などの最適化が禁じられているわけではない。基盤プロトコルが対応するなら使える。ただし、任意のリモート動作だけをローカル状態遷移の唯一の証明にしてはならない。RFC 7145は具体的な侵害、製品の欠陥、実装違反の頻度を報告していない。また、無効化はiSCSIやRDMAの認証その他の安全策を代替しない。RFC 5046からの変更履歴は、セキュリティ上の理由から、ローカル無効化の責任が発信側にあると明確化したことを記している。RFC 5046 · RFC 7143 出典:RFC Editorの情報ページ。
会員向け解説
プロフィールの詳細
適切な会員レベルでログインすると、解説全文と出典メモをご覧いただけます。
Strategic Circle 限定
Strategic Circle
すべての読者に公開されています。参加してログインすると プロフィール解説 を閲覧できます。
Strategic Circle に参加Leadership Alliance 会員限定
Leadership Alliance
対象となる IP 資産の所有者・管理者向けです。ログインすると Leadership Alliance の解説を閲覧できます。
Leadership Alliance に参加
