メインコンテンツへスキップ
  1. ネットワーク 記事一覧/
  2. OSPF記事一覧/

OSPFのAS External-LSA(Type 5)

目次

AS External-LSAとは

AS External-LSA(Type 5)は、OSPFの外にある宛先を運ぶLSAです。ASBRがスタティックやBGPなどの経路を再配布すると、宛先1つにつき1つのType 5が生まれます。

この記事の主題はひとつです。Type 5はエリアの境界で作り直されません。 Summary-LSA(Type 3)ASBR Summary-LSA(Type 4)がABRごとに新しく作られるのに対して、Type 5はASBRが作ったものがそのままAS全体に流れます

項目Type 3・Type 4Type 5
生成するルータABR(エリアごとに作り直す)ASBRだけ
届く範囲そのエリアの中だけAS全体(スタブとNSSAを除く)
Advertising Routerエリアごとに変わる元のASBRのまま変わらない
MetricABRごとに再計算される変わらない(シードメトリックのまま)
ABRの役割作り直して広告するそのまま転送するだけ

Type 5の中身、E1とE2の違い、ASBRが複数あるときのパス選択、デフォルトルートの生成はOSPFの外部経路で扱っています。この記事はType 5にしかない性質、つまり作り直されないこと、Link State IDの衝突、External Route Tagに絞ります。

パケットフォーマット

Type 3・4より2フィールド多く、36バイトです。

フィールドサイズ内容
Network Mask4バイト外部の宛先のマスク
E1ビット0ならE1、1ならE2。既定はE2
metric24ビットシードメトリック。既定は20
Forwarding Address4バイト0.0.0.0なら「Advertising Routerまで来い」
External Route Tag4バイト32ビットの任意の値。OSPFは中身を解釈しない

Forwarding Addressが非ゼロになる条件は別記事で解説します。

検証トポロジ

3エリアとも通常エリアなので、Type 5は3エリアすべてに行き渡ります。エリア1のR1がASBRで、スタティック5経路を再配布しています。

作り直されない

R1がエリア1で出した192.168.1.0/24のType 5を、3つのエリアそれぞれで見てみます。まずASBR自身の出力です。

R1(ASBR) show ospf database external self-originate(先頭部分)
RP/0/RP0/CPU0:R1#show ospf database external self-originate
Wed Sep  9 06:57:58.666 UTC


            OSPF Router with ID (1.1.1.1) (Process ID 1)

		Type-5 AS External Link States

  LS age: 123
  Options: (No TOS-capability, DC)
  LS Type: AS External Link
  Link State ID: 192.168.1.0 (External Network Number)
  Advertising Router: 1.1.1.1
  LS Seq Number: 80000001
  Checksum: 0xd25
  Length: 36
  Network Mask: /24
	Metric Type: 2 (Larger than any link state path)
	TOS: 0 
	Metric: 20 
	Forward Address: 0.0.0.0
	External Route Tag: 0

  LS age: 123

これと同じものを、2つ隣のエリア2にいるR11で見ると、すべてのフィールドが一致します

R11(エリア2) show ospf database external(先頭部分)
RP/0/RP0/CPU0:R11#show ospf database external
Wed Sep  9 06:59:32.180 UTC


            OSPF Router with ID (11.11.11.11) (Process ID 1)

		Type-5 AS External Link States

  Routing Bit Set on this LSA
  LS age: 218
  Options: (No TOS-capability, DC)
  LS Type: AS External Link
  Link State ID: 192.168.1.0 (External Network Number)
  Advertising Router: 1.1.1.1
  LS Seq Number: 80000001
  Checksum: 0xd25
  Length: 36
  Network Mask: /24
	Metric Type: 2 (Larger than any link state path)
	TOS: 0 
	Metric: 20 
	Forward Address: 0.0.0.0
	External Route Tag: 0
項目エリア1(ASBR自身)エリア2(2つ隣)
Link State ID192.168.1.0192.168.1.0
Advertising Router1.1.1.11.1.1.1
LS Seq Number8000000180000001
Metric Type / Metric2 / 202 / 20
Forward Address0.0.0.00.0.0.0

シーケンス番号まで同じというのが決定的です。Type 3なら、エリアをまたぐたびに別のABRが自分のシーケンス番号で新しいLSAを作っていました。Type 5では同じ1つのLSAが、そのまま3つのエリアに配られているだけです。ABRは中身に触れません。

このため、エリア0やエリア2のルータもASBRのルータID(1.1.1.1)を直接知ることになります。ただしルータIDが分かってもそこへの行き方は分からないので、Type 4が別途必要になる、という関係です。

取り消しも全エリアがほぼ同時

作り直しが無いことは、変化の伝わり方にそのまま出ます。R1で192.168.1.0/24のスタティックを削除したときの取り消しを、エリア0とエリア2で同時にキャプチャーしました。

エリア0 No.275 Type 5の取り消し(tshark -V)
Open Shortest Path First
    OSPF Header
        Version: 2
        Message Type: LS Update (4)
        Packet Length: 64
        Source OSPF Router: 2.2.2.2
        Area ID: 0.0.0.0 (Backbone)
        Checksum: 0xc9c8 [correct]
        Instance ID: Base IPv4 Unicast Instance (0)
        Auth Type: Null (0)
        Auth Data (none): 0000000000000000
    LS Update Packet
        Number of LSAs: 1
        LSA-type 5 (AS-External-LSA (ASBR)), len 36
            .000 1110 0001 0000 = LS Age (seconds): 3600
            0... .... .... .... = Do Not Age Flag: 0
            Options: 0x20, (DC) Demand Circuits
                0... .... = DN: Not set
                .0.. .... = (O) Opaque: Not set
                ..1. .... = (DC) Demand Circuits: Supported
                ...0 .... = (L) LLS Data block: Not Present
                .... 0... = (N) NSSA: Not supported
                .... .0.. = (MC) Multicast: Not capable
                .... ..0. = (E) External Routing: Not capable
                .... ...0 = (MT) Multi-Topology Routing: No
            LS Type: AS-External-LSA (ASBR) (5)
            Link State ID: 192.168.1.0
            Advertising Router: 1.1.1.1
            Sequence Number: 0x80000004
            Checksum: 0x3e05
            Length: 36
            Netmask: 255.255.255.0
            1... .... = External Type: Type 2 (metric is larger than any other link state path)
            .000 0000 = TOS: 0
            Metric: 16777215
            Forwarding Address: 0.0.0.0
            External Route Tag: 0
上のtshark出力のパケット(エリア0 No.275 Type 5の取り消し)のpcapをダウンロード
エリア2 No.274 同じLSAの取り消し(tshark -V)
Open Shortest Path First
    OSPF Header
        Version: 2
        Message Type: LS Update (4)
        Packet Length: 64
        Source OSPF Router: 3.3.3.3
        Area ID: 0.0.0.2
        Checksum: 0xc7c4 [correct]
        Instance ID: Base IPv4 Unicast Instance (0)
        Auth Type: Null (0)
        Auth Data (none): 0000000000000000
    LS Update Packet
        Number of LSAs: 1
        LSA-type 5 (AS-External-LSA (ASBR)), len 36
            .000 1110 0001 0000 = LS Age (seconds): 3600
            0... .... .... .... = Do Not Age Flag: 0
            Options: 0x20, (DC) Demand Circuits
                0... .... = DN: Not set
                .0.. .... = (O) Opaque: Not set
                ..1. .... = (DC) Demand Circuits: Supported
                ...0 .... = (L) LLS Data block: Not Present
                .... 0... = (N) NSSA: Not supported
                .... .0.. = (MC) Multicast: Not capable
                .... ..0. = (E) External Routing: Not capable
                .... ...0 = (MT) Multi-Topology Routing: No
            LS Type: AS-External-LSA (ASBR) (5)
            Link State ID: 192.168.1.0
            Advertising Router: 1.1.1.1
            Sequence Number: 0x80000004
            Checksum: 0x3e05
            Length: 36
            Netmask: 255.255.255.0
            1... .... = External Type: Type 2 (metric is larger than any other link state path)
            .000 0000 = TOS: 0
            Metric: 16777215
            Forwarding Address: 0.0.0.0
            External Route Tag: 0
上のtshark出力のパケット(エリア2 No.274 Type 5の取り消し)のpcapをダウンロード

Advertising Routerもシーケンス番号(0x80000004)も同じで、LS Age 3600Metric 16777215の取り消し方もType 3と同じです。違うのは時刻です。

LSAの種類エリア0エリア2
Type 312:52:24.68812:52:24.878190ミリ秒
Type 414:46:45.21214:46:45.338126ミリ秒
Type 516:18:19.77516:18:19.78510ミリ秒

Type 3・4では、ABRが「自分のLSDBを再計算して、新しいLSAを作って、流す」という手順を踏むので一段ぶんの時間がかかります。Type 5にはその手順が無く、受け取ったLSAをそのまま隣へ流すだけなので、フラッディングの遅延しか乗りません。同じ検証を5回繰り返して、差はすべて5〜10ミリ秒でした。

「作り直される/されない」は、収束時間の差として実際に測れます。

Link State IDが衝突したら

Type 5のLink State IDは宛先のネットワーク番号で、マスクは本体のNetwork Maskにあります。ということは、10.90.0.0/1610.90.0.0/24を両方再配布すると、Link State IDが同じ10.90.0.0になってしまいます

LSAは「LS Type・Link State ID・Advertising Router」の3つ組で識別されるので、このままでは同じASBRが出した2つの経路が区別できません。RFC 2328のAppendix Eは、この場合ホストビットを立てて区別すると規定しています。実際にやってみました。

R11 STEP 1:LSIDが衝突する2経路を再配布した状態
  Routing Bit Set on this LSA
  LS age: 192
  Options: (No TOS-capability, DC)
  LS Type: AS External Link
  Link State ID: 10.90.0.0 (External Network Number)
  Advertising Router: 1.1.1.1
  LS Seq Number: 80000001
  Checksum: 0xb2d
  Length: 36
  Network Mask: /16
	Metric Type: 2 (Larger than any link state path)
	TOS: 0 
	Metric: 20 
	Forward Address: 0.0.0.0
	External Route Tag: 0

  Routing Bit Set on this LSA
  LS age: 192
  Options: (No TOS-capability, DC)
  LS Type: AS External Link
  Link State ID: 10.90.0.255 (External Network Number)
  Advertising Router: 1.1.1.1
  LS Seq Number: 80000001
  Checksum: 0xb2d
  Length: 36
  Network Mask: /24
	Metric Type: 2 (Larger than any link state path)
	TOS: 0 
	Metric: 20 
	Forward Address: 0.0.0.0
	External Route Tag: 0
再配布した経路Link State IDNetwork Mask
10.90.0.0/1610.90.0.0/16
10.90.0.0/2410.90.0.255/24

より細かいほう(/24)のLink State IDにホストビットが立ちました。 10.90.0.255という値は宛先そのものではなく、LSAを区別するための識別子として使われているだけです。宛先は本体のNetwork Mask: /24と組み合わせて10.90.0.0/24と正しく解釈されます。

パケットでも、2つのType 5が1つのLSUに入って流れているのが見えます。

エリア0 No.45 LSIDが衝突した2つのType 5(tshark -V)
Open Shortest Path First
    OSPF Header
        Version: 2
        Message Type: LS Update (4)
        Packet Length: 100
        Source OSPF Router: 2.2.2.2
        Area ID: 0.0.0.0 (Backbone)
        Checksum: 0x89fd [correct]
        Instance ID: Base IPv4 Unicast Instance (0)
        Auth Type: Null (0)
        Auth Data (none): 0000000000000000
    LS Update Packet
        Number of LSAs: 2
        LSA-type 5 (AS-External-LSA (ASBR)), len 36
            .000 0000 0000 0010 = LS Age (seconds): 2
            0... .... .... .... = Do Not Age Flag: 0
            Options: 0x20, (DC) Demand Circuits
                0... .... = DN: Not set
                .0.. .... = (O) Opaque: Not set
                ..1. .... = (DC) Demand Circuits: Supported
                ...0 .... = (L) LLS Data block: Not Present
                .... 0... = (N) NSSA: Not supported
                .... .0.. = (MC) Multicast: Not capable
                .... ..0. = (E) External Routing: Not capable
                .... ...0 = (MT) Multi-Topology Routing: No
            LS Type: AS-External-LSA (ASBR) (5)
            Link State ID: 10.90.0.0
            Advertising Router: 1.1.1.1
            Sequence Number: 0x80000001
            Checksum: 0x0b2d
            Length: 36
            Netmask: 255.255.0.0
            1... .... = External Type: Type 2 (metric is larger than any other link state path)
            .000 0000 = TOS: 0
            Metric: 20
            Forwarding Address: 0.0.0.0
            External Route Tag: 0
        LSA-type 5 (AS-External-LSA (ASBR)), len 36
            .000 0000 0000 0010 = LS Age (seconds): 2
            0... .... .... .... = Do Not Age Flag: 0
            Options: 0x20, (DC) Demand Circuits
                0... .... = DN: Not set
                .0.. .... = (O) Opaque: Not set
                ..1. .... = (DC) Demand Circuits: Supported
                ...0 .... = (L) LLS Data block: Not Present
                .... 0... = (N) NSSA: Not supported
                .... .0.. = (MC) Multicast: Not capable
                .... ..0. = (E) External Routing: Not capable
                .... ...0 = (MT) Multi-Topology Routing: No
            LS Type: AS-External-LSA (ASBR) (5)
            Link State ID: 10.90.0.255
            Advertising Router: 1.1.1.1
            Sequence Number: 0x80000001
            Checksum: 0x0b2d
            Length: 36
            Netmask: 255.255.255.0
            1... .... = External Type: Type 2 (metric is larger than any other link state path)
            .000 0000 = TOS: 0
            Metric: 20
            Forwarding Address: 0.0.0.0
            External Route Tag: 0
上のtshark出力のパケット(エリア0 No.45 衝突した2つのType 5)のpcapをダウンロード

Link State ID: 10.90.0.0Link State ID: 10.90.0.255 が並び、Netmask がそれぞれ 255.255.0.0255.255.255.0 になっています。

実務では、集約経路とその構成要素を両方再配布したときにこれが起きます。 show ospf database externalで見慣れない.255.15のようなLink State IDを見つけたら、「衝突を避けた結果」だと分かれば戸惑わずに済みます。

External Route Tag

Type 5には32ビットのタグを載せられます。OSPFはこの値を一切解釈せず、そのまま運ぶだけです。他プロトコルへ再び再配布するときのループ防止や、ポリシーの分岐に使われます。

R1でredistribute static tag 65001としたときの、エリア2での見え方です。

R11 STEP 3:タグ付きで再配布したType 5(エリア2)
RP/0/RP0/CPU0:R11#show ospf database external
Wed Sep  9 07:12:46.096 UTC


            OSPF Router with ID (11.11.11.11) (Process ID 1)

		Type-5 AS External Link States

  Routing Bit Set on this LSA
  LS age: 206
  Options: (No TOS-capability, DC)
  LS Type: AS External Link
  Link State ID: 192.168.1.0 (External Network Number)
  Advertising Router: 1.1.1.1
  LS Seq Number: 80000002
  Checksum: 0x5bed
  Length: 36
  Network Mask: /24
	Metric Type: 2 (Larger than any link state path)
	TOS: 0 
	Metric: 20 
	Forward Address: 0.0.0.0
	External Route Tag: 65001

External Route Tag: 65001が、2つのエリアを越えてそのまま届いています。Advertising Routerも1.1.1.1のままです。

タグを付け外ししたときのシーケンス番号の動きも記録しました。

STEP操作External Route TagLS Seq Number
0起動直後080000001
3tag 65001を付ける6500180000002
4タグを外す080000003

タグを変えただけでもLSAは作り直され、シーケンス番号が1つ進みます。タグはLSAの中身の一部なので当然ですが、運用でタグを付け替えるとAS全体にフラッディングが走る、ということでもあります。

STEPごとの結果

STEP操作エリア2で観測したこと
0起動直後Type 5が5件。3エリアで全フィールドが一致
110.90.0.0/16/24を再配布LSIDが10.90.0.010.90.0.255に分かれる
2元に戻す5件に戻る
3tag 65001を付けて再配布タグ65001が全エリアに届く。Seqが+1
4タグを外すタグ0に戻る。Seqがさらに+1
5192.168.1.0/24の再配布を止める取り消しが全エリアほぼ同時(10ミリ秒)
6全復旧(最終状態)新しいLSAとして80000001から再開

STEP 6で注目したいのは、復旧後のシーケンス番号が80000001に戻っていることです。STEP 5で取り消したときにLSAはLSDBから削除されたので、作り直されたものはまったく新しいLSAとして扱われます。同じ宛先でも、いったん消えたら番号は1から始まります。

Type 5が届かない場所

AS全体に流れるType 5ですが、例外が2つあります。

エリアの種類Type 5代わりに
通常エリア届く
スタブエリア入らないABRがType 3のデフォルトルートを出す
NSSA入らないNSSA内のASBRはType 7を使う

どちらも「外部経路の詳細を持たせない代わりにデフォルトルートで出す」という設計です。エリアを分けてもType 5だけはAS全体に配られてしまうため、それを止めたいときにスタブやNSSAを使う、という関係になっています。

まとめ

見たいものどこを見るか
どのASBRが出した経路かAdvertising Router(エリアをまたいでも変わらない
E1かE2かMetric Type
見慣れないLink State IDの意味衝突を避けてホストビットを立てた結果(Appendix E)
タグが付いているかExternal Route Tag
取り消されたかLS Age 3600 または Metric 16777215

Type 3・4を読むときは「誰が、どこから測って言っているのか」を意識する必要がありました。Type 5はその心配がありません。 どのエリアで見ても発信元と値が同じなので、LSDBのどこで見ても同じものが見える——これがType 5のいちばんの特徴です。

参考

文書内容
RFC 2328Section 12.4.4Type 5の生成規則。AS全体にフラッディングされ、ABRで作り直されない
RFC 2328Appendix A.4.5Type 5のパケットフォーマット(Eビット、Forwarding Address、External Route Tag)
RFC 2328Appendix ELink State IDが衝突する場合にホストビットを立てる規定
RFC 2328Section 16.4Type 5の計算。ASBRまたはForwarding Addressへの到達性が必要
RFC 2328Section 3.6スタブエリアにType 5が入らない規定

検証構成

CMLに7台のXRd(IOS XR 26.1.1)で組んだ3エリアのラボです(weight 120・160・170と同じラボを再起動して流用しました)。3エリアとも通常エリアなので、Type 5が全エリアに行き渡る様子を観察できます。キャプチャーはエリア0(R2 - R3)とエリア2(R3 - R11)の2か所で、取り消しの同時性を測るために同時に取りました。

エリア0(R2 - R3)のキャプチャーをダウンロード

エリア2(R3 - R11)のキャプチャーをダウンロード

検証Configおよびshow結果

各STEPで7台すべてから、次の3種類をルータごとに分けて取得しています。検証Configはこの..._run.txtです(最終状態はSTEP 6のもの)。

ファイル内容
..._show.txtshow version / show interface description / show route / show route ospf / show ospf / show ospf interface / show ospf interface brief / show ospf neighbor / show ospf neighbor detail / show ospf database / show ospf database router / show ospf database network / show ospf statistics interface / show ospf database external self-originate / show ospf database external / show ospf database database-summary / show ospf border-routers / show ospf routes
..._log.txtそのSTEPの範囲だけに絞ったshow logging
..._run.txtそのSTEP時点のshow running-config(=そのSTEPの検証Config)

show ospf database external self-originateASBR自身でしか中身が出ません。Type 5を作れるのはASBRだけなので、この出力が空でないルータを探せばASBRが特定できます。

STEP 0:起動直後

ルータshow出力syslogrunning-config
R1showlogrun
R2showlogrun
R3showlogrun
R4showlogrun
R11showlogrun
R12showlogrun
R13showlogrun

STEP 1:10.90.0.0/1610.90.0.0/24を再配布(LSIDが衝突する)

ルータshow出力syslogrunning-config
R1showlogrun
R2showlogrun
R3showlogrun
R4showlogrun
R11showlogrun
R12showlogrun
R13showlogrun

STEP 2:元に戻す

ルータshow出力syslogrunning-config
R1showlogrun
R2showlogrun
R3showlogrun
R4showlogrun
R11showlogrun
R12showlogrun
R13showlogrun

STEP 3:tag 65001を付けて再配布

ルータshow出力syslogrunning-config
R1showlogrun
R2showlogrun
R3showlogrun
R4showlogrun
R11showlogrun
R12showlogrun
R13showlogrun

STEP 4:タグを外す

ルータshow出力syslogrunning-config
R1showlogrun
R2showlogrun
R3showlogrun
R4showlogrun
R11showlogrun
R12showlogrun
R13showlogrun

STEP 5:192.168.1.0/24の再配布を止める

ルータshow出力syslogrunning-config
R1showlogrun
R2showlogrun
R3showlogrun
R4showlogrun
R11showlogrun
R12showlogrun
R13showlogrun

STEP 6:全復旧(最終状態)

ルータshow出力syslogrunning-config
R1showlogrun
R2showlogrun
R3showlogrun
R4showlogrun
R11showlogrun
R12showlogrun
R13showlogrun

関連記事