要約

  • RFC 3344 では、Mobile IPv4 の登録要求に S ビットを立て、新しい気付アドレスを受理するときも以前のモビリティ・バインディングを維持するようホームエージェントへ求められた。
  • 同時バインディングを支援するホームエージェントは、到着した各データグラムを有効な気付アドレスごとに複製した。新しい登録の成功は、古い経路の終了や単一の現在地を証明しない。

モビリティ表を一行の上書き履歴として見ると、この仕様を読み違える。ホームアドレスは一つでも、気付アドレスの行は複数存在できた。各行は別々の寿命を持ち、ホームエージェントはその中から一つを選ぶのではなく、すべてにパケットを送ることがあった。

その複数性は暗黙の例外ではない。Registration Request の固定部分に S、すなわち simultaneous bindings のビットが置かれていた。移動ノードは、以前のバインディングを保持してほしいときにこのビットを設定する。設定しない場合、またはホームエージェントが対応しない場合、古い集合は新しいバインディングで置き換えられた。

気付アドレスは場所の証明ではない

Mobile IPv4 は、ノードがホームネットワークを離れても長期のホームアドレスを使えるようにした。気付アドレスが示すのはトンネル終端である。外部エージェントのアドレスならそこで復号ならぬデカプセル化が行われ、co-located care-of address なら移動ノード自身が終端になる。

したがって、その値は転送命令であって地理証明ではない。人や端末の物理的位置、無線リンクの健全性、外部エージェントの visitor list、アプリケーションへの到達を単独では示さない。登録の認証は状態変更の権限を支えるが、保存されたアドレスに配送結果まで語らせるものではない。

RFC 3344 は、ノードが複数の外部エージェントの無線範囲に入る状況を用途として挙げた。同時バインディングを許すホームエージェントは、ホームアドレス宛てのデータグラムを捕捉し、各気付アドレス向けに別々のコピーをトンネルする。IP はデータグラムの複製を許しており、ノードが複数のコピーを受け取ることも仕様上の結果だった。

同じ内容が二経路から来ても、直ちにリプレイ攻撃や故障とはいえない。一方、二つの表エントリがあっても、双方で実際に配送できるとは限らない。制御面の受理とデータ面の結果は別の証拠である。

成功コード 0 と 1 の差

Registration Reply のコード 0 は登録受理を意味した。コード 1 も成功だが、「同時モビリティ・バインディングは未対応」という条件が付く。現在の IANA Mobile IPv4 Numbers も、この二つを成功コードとして分けている。

S を要求したノードにとって、コード 0 は新旧のエントリが共存し得ることを示す。コード 1 は新しい登録自体は成立したものの、以前の行を残す能力が得られなかったことを示す。コード 135 はさらに別で、同時バインディングが多すぎるための拒否だった。

運用画面が 0 と 1 を同じ「正常」に丸めれば、後の重複や欠落を説明する鍵が失われる。必要なのは S の要求、応答コード、バインディング集合、各寿命、各トンネルでの観測である。一つの緑色表示では足りない。

終了も集合単位ではなかった

寿命ゼロの要求で気付アドレス欄がホームアドレスと同じなら、ホームエージェントはすべてのバインディングを削除し、モビリティ・サービスを終える。特定の非ホーム気付アドレスなら、その一行だけを削除し、ほかの有効行を残す。

非ゼロ寿命では新しい行を加える。S があり対応していれば以前の行を保持し、そうでなければ取り除く。ある行が期限切れになった場合も、その行だけを消し、未期限の同時バインディングを維持しなければならない。

期限切れだけを理由に Registration Reply は送られない。外部エージェントの visitor list は自然に期限を迎えることがある。この沈黙から全経路の停止を推論できない。逆に、一行の削除からノード全体の到達不能も推論できない。

同一の登録要求の再送にも限界があった。ホームアドレス、気付アドレス、Identification が一致する重複要求は、最初に与えられた期限を越えて寿命を延長できない。照合とリプレイ防止の番号は、新しいリースの代わりにはならなかった。

後継仕様は複数経路を識別可能にした

RFC 3344 は 2002 年 8 月に公開され、RFC 2002 から続く系譜で RFC 3220 を置き換えた。2010 年の RFC 5944 がさらに置き換えたが、複数登録と各気付アドレスへのコピーは残った。RFC Editor にある一件の編集上の保留 erratum と一件の却下済み技術 erratum は、この仕組みを変更しない。

Mobile IPv6 の RFC 3775 は primary care-of address と、円滑なハンドオーバーのために残す旧非 primary address を区別した。RFC 5648 は Binding Identifier で複数の IPv6 バインディングを独立管理した。実験的 RFC 7629 は Mobile IPv4 に明示的な識別子、複数トンネル、フロー別ポリシーを追加した。

この発展から、古い S ビットの境界が見える。それは全有効アドレスへの一括複製であり、最適経路選択、負荷分散、健全性判定ではない。古い行は冗長性かもしれず、無駄な帯域かもしれず、すでに配送不能かもしれない。登録だけでは決まらない。

歴史から引き継ぐべき台帳も集合でなければならない。保持要求、能力応答、各アドレス、各寿命、各コピー、各到達観測を分離する。最新という順序に、以前の状態を消したと主張する権限はない。

出典