要約

  • RFC 1587 の NSSA は、外部経路をエリア内限定の Type-7 LSA として取り込みつつ、通常の stub area と同様に全域の Type-5 外部 LSA を葉側へ流さなかった。
  • P ビットと非ゼロの forwarding address は翻訳の前提であって完了通知ではない。境界の翻訳者が自分を Advertising Router とする別の Type-5 を生成する必要があった。
  • RFC 3101 は翻訳者選挙と四十秒の移行安定期間を追加し、P=0 で非伝播の Type-7 も境界で外部トラフィックに影響し得るという政策上の逆説を明記した。

stub area は受け取らない代わりに軽かった

OSPF の stub area は Type-5 AS-external LSA を受けず、境界からのデフォルト経路に頼る。低速リンクや資源の少ない葉ルータに、全外部宛先を保持させずに済む。

しかし葉の内部ルータが RIP などから外部ネットワークを学ぶと、その軽さが制約になった。stub area は外部経路の取り込みを認めない。通常エリアへ戻せば取り込めるが、隠したかった外部 Type-5 まで流れ込む。

NSSA は、内向きには stub、外向きには限定的な輸出口という非対称を選んだ。境界を消さず、変換の場所として固定したのである。

N と E の一致は隣接条件だった

RFC 1587 は N ビットを導入した。NSSA インターフェースでは N を立て、通常の外部 LSA 能力を示す E を落とす。Hello の N/E が受信側設定と一致しなければ処理を止め、隣接関係は形成されない。

これは相手が同じオプション体系を実装したことを確かめる。外部経路の存在、起点の正しさ、再配布の許可、外部への広告までは確かめない。

Type-7 は生成元 NSSA の中だけで flooding され、同エリアのデータ構造に置かれた。Type-5 は Type-5 capable area 全体へ広がる。書式の類似は、scope と作者の相違を消さなかった。

データベースにある経路が採用されるとは限らない

Type-7 を受け取った計算は、生成 ASBR に NSSA 内で到達できるかを確認する。forwarding address があれば、そのアドレスへの intra-area path も要る。内部 OSPF 経路は外部経路より優先され、外部同士では path type と metric が比較される。

したがって、LSA の受領、ルーティング計算への採用、転送表への反映は別の証拠である。LSDB の一行だけでは、パケットが使う道は決まらない。

P は境界への依頼だった

NSSA 内部の ASBR は、そのネットワークを OSPF domain の transit topology に出したい場合、Type-7 の P を立て、非ゼロで有効な forwarding address を設定する。P が落ちていれば ABR は Type-5 に翻訳しない。

それでも P=1 は依頼にすぎない。RFC 1587 では、Type-5 と Type-7 の経路計算後、NSSA 内で到達可能な ABR のうち Router ID が最大のものだけが翻訳を行った。

集約しない翻訳では、宛先、mask、path type、metric、forwarding address、external route tag が Type-5 に引き継がれる。一方、Advertising Router は翻訳 ABR に変わる。元 ASBR の Type-7 がそのまま移動したのではない。別の主体が新しい投影を起源化した。

default route には役割別の例外があった。NSSA ABR が生成する Type-7 default は P=0 でなければならず、Type-5 へは決して翻訳されない。ABR ではない NSSA 内部 ASBR が生成する Type-7 default は P=1 にでき、翻訳され得る。二つの生成主体は交換可能ではなかった。

range は外に見せる粒度を決めた

Type-7 address range は複数経路を一つの Type-5 に集約でき、Advertise と DoNotAdvertise を選べた。後者なら、NSSA 内部で利用中の構成経路を外へ一つも示さないこともできる。

集約は状態量を減らすが、出所も圧縮する。外部から見える Type-5 の metric は派生値で、広告者は翻訳者である。その一件から内部の全 Type-7 を復元できない。

翻訳条件が失われれば、派生 Type-5 は flush または再生成される。局所 Type-7 が残ったまま外部投影だけが消える場合もある。両者の寿命は連動しても同一ではない。

RFC 3101 は翻訳者の交代を状態にした

2003年1月の RFC 3101 は RFC 1587 を obsolete にし、NSSATranslatorRole、NSSATranslatorState、Nt ビットを定めた。ABR は Always として常時翻訳するか、Candidate として選挙に入る。候補者は NSSA と AS transit topology の両方での到達性、Nt、Router ID を評価する。

選挙で交代が決まっても、旧翻訳者は既定で四十秒動き続ける。TranslatorStabilityInterval により Type-5 の flush と flooding の反復を抑えた。権限の移行には、仕様化された重複時間があった。

同 RFC の P-bit policy paradox はさらに重要である。P=0 の非デフォルト Type-7 は外部へ翻訳されないが、ABR のローカル経路表には採用され得る。すると NSSA 外から ABR を通るトラフィックが、その非伝播経路に引かれて NSSA へ入る可能性がある。広告しないという政策と、境界で使うという動作が衝突した。

認証済みパケットでも政策は未証明だった

RFC 1587 は Security Considerations で問題を論じなかった。RFC 3101 は OSPF 交換の認証、共有鍵、広告反復、データベース overflow を扱い、それらが NSSA 固有ではないとも述べた。

message digest の検証は、設定したプロトコル認証を通ったことを示す。外部経路の真実、P と range の運用意図、翻訳者設定、遠隔選路、実際の転送は別に検証しなければならない。機密性も得られない。

RFC 3101 は、最初に知られた完全実装が本文に実質的変更をもたらしたと記録する。これは running code が仕様を修正した証拠であり、多ベンダー相互接続や普及率の証明ではない。

凍結した資料は、現在の導入状況、ベンダーの挙動、または名指しされた運用者の設定も立証しない。

Heng Lu のRunning-Code Primacy、最小初期仕様とローカルな将来判断、主張ではなく現実を記述する編集原則に従えば、仕様、実装、局所状態、派生広告、観測結果は一列に並べても一体化させてはならない。

残すべき鎖は、外部 source、Type-7 origination、NSSA flooding、局所計算、P/range policy、translator state、Type-5 origination、広域 flooding、remote selection、forwarding、measured outcome である。エリアが学んだ時点で、バックボーンの事実まで完成したわけではなかった。

出典