KUSONEKOの見る世界

OSPF 備忘録

※注意!当方の経験に基づく内容なので間違っている場合があります

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が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パスとエリア間パスは同じ優先度とする
→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を再度出すことになるはず。

その間、そのセグメントに通信ができず、切り替わり時間が長くなってしまう。