Forwarding Address
OSPFのLSA Type 5 (外部ルート) には、Forwarding Addressのフィールドがあり、外部ルートの経路決定に使用される。
普段、あまり気にすることが無いフィールドであるが、
まれに意図しないルーティングとなることもあるため、注意が必要だと思う。
先に個人的な答えを書いておくと、Cisco機器では以下のいずれかの場合は問題が起こらないと考えている。
- OSPF のインターフェースタイプが、Point-to-Pointになっている
- Static ルートのNext-hop宛ての発信インターフェースをOSPFのPassive interfaceにしている
Forwarding Addressが0.0.0.0以外の外部ルートを受け取った場合、そのForwarding Addressへの到達性があるか自身のルーティングテーブルを参照する。
参照した結果、到達性があれば、その外部ルートをルーティングテーブルに載せる訳だが、
その到達性は、OSPFの内部ルートである必要がある。
内部ルートといっているのは、エリア内ルートとエリア間ルートのことである。
OSPFの外部ルートでも、Direct Connectでも無い。
ここまで条件があると、外部ルートはルーティングテーブルに載りにくそうだが、普通に設計していれば載る。
外部と接続する場合、Staticルートを使うだろうが、
外部と接続するインターフェースは、OSPFのプロセスに入れないか入れてもPassiveにするだろう。
そうすると、Forwarding Addressが0.0.0.0で配信されるため、受け取ったルータは、自身のルーティングテーブルを参照することなく、ルーティングテーブルに載せることができる。
なので、通常の設計では出会うケースは少ないと言える。
Forwarding Addressの条件は、Ciscoのページに記載があるが整理すると、
OSPFを有効にしたインターフェースのタイプがブロードキャストで、Passiveにしておらず、
Next-hopのアドレスがnetwork コマンドで指定した範囲に入っている場合、
StaticルートのNext-hopが左記のNext-hopである場合、0.0.0.0以外になる。
RFC1583 と RFC2328
外部ルートの選択
複数のASBRまたはForwarding Addressの有効なパスがある場合、RFC1583 ではコストなどで、優先経路は決まってくるが、RFC2328 それより前に以下のルールで選択される。以下で経路が決まらない場合はコストでの選択となる。
- area0ではないエリア内ルートパスはいつでも最も優先される
- その他のパス、エリア内area0パスとエリア間パスは同じ優先度とする
Catalyst(RFC1583)ではarea0が選択していた気がする。
某SW(RFC2328)ではarea0以外だった気がする。
エリア間集約ルートのコスト
RFC1583 とRFC2328 では、エリア間の集約ルートのコスト値の差分もある。エリア間の集約ルートのコストは、集約対象となるルートから決定される。
- RFC1583 では、最小のコスト (Page 120)
- RFC2328 では、最大のコスト (Page 136)
大分違ってくるので、ABRで機種が混在する場合は、注意が必要である。
DRとBDRがあるネットワークでDR側のインターフェースがダウンすると
DRがエリア内にNetwork LSA(Type2)を出しているため、DRのインターフェースがダウンするとDRがMaxAgeのNetwork LSA(Type2)を送信する。BDRは、自信のリンクがアップしていても、BDRの状態ではNetwork LSA(Type2)を出せないため、そのセグメントへの経路が失われる状態となる。
その後、DRとのDead Timerが切れたあと、自信がDRとなり、エリア内にLSAを送信する。
そのLSAは他にルータが居なけれは、Router LSA(Type1)を送信する。他にまだルータが居る場合は、Network LSAを再度出すことになるはず。
その間、そのセグメントに通信ができず、切り替わり時間が長くなってしまう。