OSPFv2 LSA Type5 のフォーマット
OSPFv2 において使われる LSA Type5 (AS External LSA) のフォーマットを以下に示します。
Age
その LSA が生成されてから現在までの時間 (単位:秒) です。LSDB にいる間 1 秒につき 1 が加算されます。また、LSA が他のルータへ送られる際は "InfTransDelay" の設定値の分だけ加算されます。
Options
詳細はこちらに記載します。
LSA Type
その名の通り、LSA Type を表します。今回は Type 5 なので Ox05 が入ります。
Link State ID
再配送する外部ルートの NW アドレスが入ります。
Advertising Router
その LSA を生成したルータのルータ ID が入ります。
Sequence Number
新しい LSA インスタンスが生成されるたびに 1 ずつ増え、全てのルータが 最新の LSA インスタンスを識別できるようにします。
Checksum
Fletcher チェックサムを利用しており、Age 以外の部分の bit エラーが無いかを確認します。
Length
ヘッダ長を含めた LSA 全体の長さ (単位:オクテット) を表します。
Network Mask
Link State ID の NW アドレスのサブネットマスクを表現します。
"E"フラグ
外部ルートのメトリックタイプを示します。0 の場合はメトリックタイプ 1 (E1) となり、1 の場合はメトリックタイプ 2 (E2) となります。
メトリック
その外部ルートまでのメトリック (コスト) が入ります。
前述の通り、このメトリックはどのルータに伝達されても変化しません。ルーティングテーブルに入るタイミングであれば変化させることができます。
その場合はメトリックタイプ 1 を設定しますが、それでもやはり LSA Type5 のメトリック値は変わらず、(エリア内の場合は) LSA Type1 もしくは (エリア外の場合は) LSA Type4 の情報と合わせてコスト計算します。
詳細は LSA Type 4 の説明を参照下さい。
ToS と ToSメトリック
LSA Type1 と同様です。
Forwarding Address
その外部ルートへの転送先を表しますが特殊な場合を除き、0.0.0.0 がセットされます。
0.0.0.0 以外の場合は、その外部ルートがルーティングテーブルに載る際は ASBR までのルート情報を再帰的に見て行き、Connected の NW の NextHop に変換されます。
0.0.0.0 以外になる場合は例えば以下のときです。
R1 は OSPF には参加していないが、RIPv2 を動作しており、R2 は RIPv2 と OSPF の両方に参加、R3 は OSPF のみに参加している場合を考えます。
R1 の Loopback 0 のインタフェースの NW アドレス「1.1.1.0/24」が RIP 経由で R2 の再配送で R3 に外部ルートとして 伝達されます。
このとき、R2 はルーティング情報として 1.1.1.0/24 の NextHop が 10.0.123.1 であることを意識し、R3 へ伝える際に Forwarding Address を 10.0.123.1 にセットします。
そしてルーティングテーブルの NextHop にはこの 10.0.123.1 が入ります。
External Route Tag
再配送する際にタグを付けて管理をすることができます。
例えば、以下のような RIP と OSPF の再配送を考えます。
R4 が R3 よりも先に R2 から1.1.1.0/24 の情報を受け取ったとします。
すると R4 は R3 へ AD 値 110 で 1.1.1.0/24 を伝えます。
R3 では AD 値に従って RIP より OSPF のルートを優先しますので、OSPF から RIP への再配送で R1 に NextHop=R3 で 1.1.1.0/24 のルート情報を送ります。
これにより R3⇒R4⇒R2⇒R1⇒R3 のループが生成されます。
仮に R4 が R2 よりも先に R3 から 1.1.1.0/24 の情報を受け取った場合は逆向きのループが生成されます。
ループを防ぐため、RIP から OSPF に再配送する際に External Route Tag に値をセットします。
R2 で tag=2 をセットし、R3 で tag=3 をセットします。また、R2 では tag=3 のルートを受信拒否、 R3 では tag=2 のルートを受信拒否します。
このように、タグを使うことで簡単にループを回避できます。
コメント