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

OSPFのNSSA External-LSA(Type 7)

目次

NSSA External-LSAとは

NSSA External-LSA(Type 7)は、NSSAの中にいるASBRが外部経路を運ぶためのLSAです。NSSAはType 5を受け付けないため、その中のASBRはType 7で経路を出し、出口のABRがType 5に作り直して外へ出します。AS External-LSA(Type 5)がエリアを越えても作り直されないのとは対照的です。

この記事では、作り直しで何が書き換わるか、Forwarding Addressの役割、同じ経路を2台が出したときの動きを、RFC 3101と実機で確かめます。

Type 5と何が違うのか

RFC 3101のSection 2.3は「Type-7 LSAs are identical to Type-5 LSAs except for the following」として6点を挙げています。フォーマットは同じで、違うのは扱われ方です。

#違い
1LSAヘッダーのLS Typeが 7
2そのNSSAの中だけにフラッディングされる(Type 1・2と同じ範囲)
3エリアのデータ構造に置かれる。Type 5はASのデータ構造に置かれる
4どのType 7をType 5に変換するかは、NSSAのABRが選ぶ
5ヘッダーのOptionsに P(Propagate)ビット がある
6変換されるType 7は、Forwarding Addressが必ず非ゼロでなければならない

4番と6番がこの記事の中心です。Nビットやトータリー NSSA など、エリア種別としてのNSSAはOSPFのNSSAとトータリーNSSAで解説しています。

パケットフォーマット

ヘッダー20バイト+本体16バイトの36バイトで、Type 5と同じです(RFC 3101のAppendix C。フィールドの定義はRFC 2328のAppendix A.4.5)。

フィールドサイズ内容
Network Mask4バイト外部の宛先のマスク
E1ビット0ならE1、1ならE2。既定はE2
metric3バイト外部コスト
Forwarding Address4バイトPビットが立つType 7では非ゼロが必須
External Route Tag4バイト32ビットの任意の値

検証構成

CML上のXRd(IOS XR 26.1.1)7台の構成です。エリア2がNSSAで、ABRのR3とR4のうちルータIDが大きいR4が変換役になります。R5とR6はNSSAの中のASBRで、OSPFを動かさないGWの先にある192.168.99.0/24を、同じネクストホップ10.2.0.254あてで再配布できます。エリア0のR1とR2は、Type 5と比べるための通常のASBRです。

ルータ間のリンクはすべてpoint-to-pointです。R5・R6・GWの3台がつながるLANだけは、3台が同じセグメントにいるのでブロードキャストにしています。

STEP操作確かめること
0初期状態(R6が192.168.99.0/24を、R1が192.168.1.0/24を再配布)Type 7と変換後のType 5で何が変わるか。変換役とForwarding Address
1R6の再配布を止めるType 7と変換後のType 5がそろって取り消される
2R6の再配布を戻すどちらも0x80000001から作り直される
3R5にもR6と同じ経路を再配布させる宛先・コスト・Forwarding Addressがそろうと、R5はType 7を出さない
4R2にもR1と同じ192.168.1.0/24を再配布させるType 5なら2つとも残る
5R5のメトリックを10にするコストが違うと2つ並び、変換後のType 5の中身がR5のものになる
6R5のメトリックを20に戻す再び等価になり、R5が取り下げる
7R5のネクストホップを10.2.0.6に変えるForwarding Addressだけ違っても2つ並ぶ
8R4にnssa default-information-originateを入れる(最終状態)ABRのデフォルトのType 7はPビットなし、Forwarding Addressは0.0.0.0

以降の節はSTEP順ではなく、Type 7の性質ごとにまとめています。

変換で何が書き換わるか

NSSAのABRが複数あるとき、変換を受け持つのはルータIDが最大のABRです(RFC 3101 Section 3.1)。変換役は、Pビットが立ちForwarding Addressが非ゼロのType 7だけを選び、次の規則でType 5を作ります(Section 3.2)。

  • ネットワーク、マスク、経路種別(E1/E2)、メトリック、Forwarding Address、タグはType 7から引き継ぐ
  • Advertising Routerは変換役自身のルータIDになる
  • LS Typeは5になる。Type 5にはPビットが無いので、Optionsからも消える

この構成ではR4(4.4.4.4)がR3(3.3.3.3)よりルータIDが大きいので、R4が変換役です。show ospfのエリア2の部分に、R4にだけ変換の行があります。

R4 STEP 0:show ospfのエリア2の部分
    Area 2
	Number of interfaces in this area is 1
	It is a NSSA area
        Perform type-7/type-5 LSA translation
R3 STEP 0:show ospfのエリア2の部分
    Area 2
	Number of interfaces in this area is 1
	It is a NSSA area

R6が再配布を戻した直後(STEP 2)に、NSSAのLANへ流れたLSUです。1つのLSUにType 7とR6のRouter-LSAが入っています。Type 7はPビットが立ち、Forwarding AddressはR6のネクストホップ10.2.0.254です。

STEP 2 NSSAのLAN No.2 LSU(R6のType 7)tshark -V
Open Shortest Path First
    OSPF Header
        Version: 2
        Message Type: LS Update (4)
        Packet Length: 136
        Source OSPF Router: 6.6.6.6
        Area ID: 0.0.0.2
        Checksum: 0x341f [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 7 (NSSA AS-External-LSA), len 36
            .000 0000 0000 0001 = LS Age (seconds): 1
            0... .... .... .... = Do Not Age Flag: 0
            Options: 0x28, (DC) Demand Circuits, (P) Propagate
                0... .... = DN: Not set
                .0.. .... = (O) Opaque: Not set
                ..1. .... = (DC) Demand Circuits: Supported
                ...0 .... = (L) LLS Data block: Not Present
                .... 1... = (P) Propagate: Set
                .... .0.. = (MC) Multicast: Not capable
                .... ..0. = (E) External Routing: Not capable
                .... ...0 = (MT) Multi-Topology Routing: No
            LS Type: NSSA AS-External-LSA (7)
            Link State ID: 192.168.99.0
            Advertising Router: 6.6.6.6
            Sequence Number: 0x80000001
            Checksum: 0x2086
            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: 10.2.0.254
            External Route Tag: 0
        LSA-type 1 (Router-LSA), len 72
            .000 0000 0000 0001 = LS Age (seconds): 1
            0... .... .... .... = Do Not Age Flag: 0
            Options: 0x28, (DC) Demand Circuits, (N) NSSA
                0... .... = DN: Not set
                .0.. .... = (O) Opaque: Not set
                ..1. .... = (DC) Demand Circuits: Supported
                ...0 .... = (L) LLS Data block: Not Present
                .... 1... = (N) NSSA: Supported
                .... .0.. = (MC) Multicast: Not capable
                .... ..0. = (E) External Routing: Not capable
                .... ...0 = (MT) Multi-Topology Routing: No
            LS Type: Router-LSA (1)
            Link State ID: 6.6.6.6
            Advertising Router: 6.6.6.6
            Sequence Number: 0x80000008
            Checksum: 0xd823
            Length: 72
            Flags: 0x02, (E) AS boundary router
                0... .... = (H) Host: No
                ..0. .... = (S) Shortcut-capable ABR: No
                ...0 .... = (N) NSSA translation: No
                .... 0... = (W) Wild-card multicast receiver: No
                .... .0.. = (V) Virtual link endpoint: No
                .... ..1. = (E) AS boundary router: Yes
                .... ...0 = (B) Area border router: No
            Number of Links: 4
            Type: Stub     ID: 6.6.6.6         Data: 255.255.255.255 Metric: 1
                Link ID: 6.6.6.6 - IP network/subnet number
                Link Data: 255.255.255.255
                Link Type: 3 - Connection to a stub network
                Number of Metrics: 0 - TOS
                0 Metric: 1
            Type: PTP      ID: 4.4.4.4         Data: 10.2.46.6       Metric: 1
                Link ID: 4.4.4.4 - Neighboring router's Router ID
                Link Data: 10.2.46.6
                Link Type: 1 - Point-to-point connection to another router
                Number of Metrics: 0 - TOS
                0 Metric: 1
            Type: Stub     ID: 10.2.46.0       Data: 255.255.255.0   Metric: 1
                Link ID: 10.2.46.0 - IP network/subnet number
                Link Data: 255.255.255.0
                Link Type: 3 - Connection to a stub network
                Number of Metrics: 0 - TOS
                0 Metric: 1
            Type: Transit  ID: 10.2.0.6        Data: 10.2.0.6        Metric: 1
                Link ID: 10.2.0.6 - IP address of Designated Router
                Link Data: 10.2.0.6
                Link Type: 2 - Connection to a transit network
                Number of Metrics: 0 - TOS
                0 Metric: 1
上のtshark出力のパケット(No.2 LSU)のpcapをダウンロード

56ミリ秒後に、R4がarea 0へ出したType 5です。Advertising Routerが4.4.4.4に変わり、Pビットが消えています。ネットワーク、マスク、E2、メトリック20、Forwarding Address、タグはType 7と同じです。

STEP 2 area 0 No.2 LSU(R4が変換したType 5)tshark -V
Open Shortest Path First
    OSPF Header
        Version: 2
        Message Type: LS Update (4)
        Packet Length: 64
        Source OSPF Router: 4.4.4.4
        Area ID: 0.0.0.0 (Backbone)
        Checksum: 0xaef8 [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 0000 0000 0001 = LS Age (seconds): 1
            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.99.0
            Advertising Router: 4.4.4.4
            Sequence Number: 0x80000001
            Checksum: 0xf0c7
            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: 10.2.0.254
            External Route Tag: 0
上のtshark出力のパケット(area 0 No.2 LSU)のpcapをダウンロード

Forwarding Addressの役割

Type 7のForwarding Addressには、再配布した経路のネクストホップがそのまま入ります。条件は、そのネクストホップがNSSAで動いているインタフェースのネットワーク上にあることです(RFC 3101 Section 2.3)。Pビットが立つType 7ではForwarding Addressが非ゼロでなければならず、Pビットが無ければ0.0.0.0でもかまいません。

変換後のType 5もこのアドレスを引き継ぐので、area 0のルータは変換役ではなくForwarding Addressへ向かって転送します。RFC 3101は、NSSAに出口が複数あるときに効率のよい経路になると説明しています。area 0のASBRが出す通常のType 5はForwarding Addressが0.0.0.0で、宛先へはASBR自身へ向かいます(この構成ではR1の192.168.1.0/24)。

この構成でType 5を出しているのはR4ですが、R1はR4を通りません。STEP 0のtracerouteでは、R1はR3からR5を、R2はR4からR6を経て、どちらも10.2.0.254に届いています。それぞれ10.2.0.254への最短経路です。

R1 STEP 0:GWへのpingとtraceroute
RP/0/RP0/CPU0:R1#ping 192.168.99.1 source 1.1.1.1 count 50 timeout 1
Sun Sep 13 15:47:30.372 UTC
Type escape sequence to abort.
Sending 50, 100-byte ICMP Echos to 192.168.99.1 timeout is 1 seconds:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Success rate is 100 percent (50/50), round-trip min/avg/max = 10/13/50 ms
RP/0/RP0/CPU0:R1#traceroute 192.168.99.1 source 1.1.1.1
Sun Sep 13 15:47:32.354 UTC

Type escape sequence to abort.
Tracing the route to 192.168.99.1

 1  10.0.13.3 25 msec  4 msec  3 msec 
 2  10.2.35.5 10 msec  9 msec  5 msec 
 3  10.2.0.254 25 msec  *  13 msec 
R2 STEP 0:GWへのpingとtraceroute
RP/0/RP0/CPU0:R2#ping 192.168.99.1 source 2.2.2.2 count 50 timeout 1
Sun Sep 13 15:48:11.226 UTC
Type escape sequence to abort.
Sending 50, 100-byte ICMP Echos to 192.168.99.1 timeout is 1 seconds:
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Success rate is 100 percent (50/50), round-trip min/avg/max = 9/11/34 ms
RP/0/RP0/CPU0:R2#traceroute 192.168.99.1 source 2.2.2.2
Sun Sep 13 15:48:12.789 UTC

Type escape sequence to abort.
Tracing the route to 192.168.99.1

 1  10.0.24.4 61 msec  6 msec  7 msec 
 2  10.2.46.6 12 msec  8 msec  50 msec 
 3  10.2.0.254 15 msec  *  14 msec 

ABRが入れるデフォルトのType 7

ABRがNSSAにデフォルト経路をType 7で入れるときは、Pビットを落とさなければなりません(RFC 3101 Section 2.4)。Pビットが無いのでForwarding Addressは0.0.0.0でよく、変換役も変換しません(Section 3.2 (1))。

STEP 8でR4にnssa default-information-originateを入れたときのType 7です。LSUの送信元がR6なのは、LANのDRであるR6がR4から受け取ったLSAを流し直したためです。

STEP 8 NSSAのLAN No.3 LSU(R4のデフォルトのType 7)tshark -V
Open Shortest Path First
    OSPF Header
        Version: 2
        Message Type: LS Update (4)
        Packet Length: 64
        Source OSPF Router: 6.6.6.6
        Area ID: 0.0.0.2
        Checksum: 0x3567 [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 7 (NSSA AS-External-LSA), 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... = (P) Propagate: Not set
                .... .0.. = (MC) Multicast: Not capable
                .... ..0. = (E) External Routing: Not capable
                .... ...0 = (MT) Multi-Topology Routing: No
            LS Type: NSSA AS-External-LSA (7)
            Link State ID: 0.0.0.0
            Advertising Router: 4.4.4.4
            Sequence Number: 0x80000001
            Checksum: 0x940d
            Length: 36
            Netmask: 0.0.0.0
            1... .... = External Type: Type 2 (metric is larger than any other link state path)
            .000 0000 = TOS: 0
            Metric: 1
            Forwarding Address: 0.0.0.0
            External Route Tag: 0
上のtshark出力のパケット(No.3 LSU)のpcapをダウンロード

このType 7は変換されず、area 0のキャプチャーにLSUは流れていません。デフォルト経路が入るのはNSSAの中だけです。

R5 STEP 8:show route ospf
RP/0/RP0/CPU0:R5#show route ospf
Sun Sep 13 16:32:37.900 UTC

O*N2 0.0.0.0/0 [110/1] via 10.2.0.6, 00:03:13, GigabitEthernet0/0/0/1
O IA 1.1.1.1/32 [110/3] via 10.2.35.3, 01:34:26, GigabitEthernet0/0/0/0
O IA 2.2.2.2/32 [110/4] via 10.2.35.3, 01:33:46, GigabitEthernet0/0/0/0
                [110/4] via 10.2.0.6, 01:33:46, GigabitEthernet0/0/0/1
O IA 3.3.3.3/32 [110/2] via 10.2.35.3, 01:34:26, GigabitEthernet0/0/0/0
O IA 4.4.4.4/32 [110/3] via 10.2.35.3, 01:33:46, GigabitEthernet0/0/0/0
                [110/3] via 10.2.0.6, 01:33:46, GigabitEthernet0/0/0/1
O    6.6.6.6/32 [110/2] via 10.2.0.6, 01:33:46, GigabitEthernet0/0/0/1
O IA 10.0.13.0/24 [110/2] via 10.2.35.3, 01:34:26, GigabitEthernet0/0/0/0
O IA 10.0.24.0/24 [110/3] via 10.2.35.3, 01:33:46, GigabitEthernet0/0/0/0
                  [110/3] via 10.2.0.6, 01:33:46, GigabitEthernet0/0/0/1
O IA 10.0.34.0/24 [110/2] via 10.2.35.3, 01:34:26, GigabitEthernet0/0/0/0
O    10.2.46.0/24 [110/2] via 10.2.0.6, 01:33:46, GigabitEthernet0/0/0/1
R1 STEP 8:show route ospf
RP/0/RP0/CPU0:R1#show route ospf
Sun Sep 13 16:30:10.027 UTC

O    2.2.2.2/32 [110/4] via 10.0.13.3, 01:31:53, GigabitEthernet0/0/0/0
O    3.3.3.3/32 [110/2] via 10.0.13.3, 01:32:02, GigabitEthernet0/0/0/0
O    4.4.4.4/32 [110/3] via 10.0.13.3, 01:31:56, GigabitEthernet0/0/0/0
O IA 5.5.5.5/32 [110/3] via 10.0.13.3, 01:31:58, GigabitEthernet0/0/0/0
O IA 6.6.6.6/32 [110/4] via 10.0.13.3, 01:31:56, GigabitEthernet0/0/0/0
O    10.0.24.0/24 [110/3] via 10.0.13.3, 01:31:56, GigabitEthernet0/0/0/0
O    10.0.34.0/24 [110/2] via 10.0.13.3, 01:32:02, GigabitEthernet0/0/0/0
O IA 10.2.0.0/24 [110/3] via 10.0.13.3, 01:31:58, GigabitEthernet0/0/0/0
O IA 10.2.35.0/24 [110/2] via 10.0.13.3, 01:32:02, GigabitEthernet0/0/0/0
O IA 10.2.46.0/24 [110/3] via 10.0.13.3, 01:31:56, GigabitEthernet0/0/0/0
O E2 192.168.99.0/24 [110/20] via 10.0.13.3, 00:11:05, GigabitEthernet0/0/0/0

同じ経路を2台が出したら

NSSAの中で2台のルータが、宛先・コスト・非ゼロのForwarding AddressがそろったType 7を出すと、劣後するほうが自分のType 7を取り下げます(RFC 3101 Section 2.4)。優劣は次の順で決まります。

  1. Pビットが立つほうが優先
  2. Pビットが同じなら、ルータIDが大きいほうが優先

1つでも違えば、両方のType 7がNSSAの中に残ります。変換役がType 5にするのは、自分がインストールしたType 7だけです。変換済みのType 5を作り直すのは、経路種別やコストが変わったときと、Forwarding Addressが変換できるType 7に対応しなくなったときです(Section 3.2 (2))。

area 0のType 5には、このような取り下げの規定がありません。同じ宛先を2台が出せば2つとも残ります。

R5(5.5.5.5)とR6(6.6.6.6)はどちらもPビットを立てるので、ルータIDの小さいR5が劣後側です。各STEPに当てはめると次のとおりです。

STEPR5のType 73つの条件NSSAの中変換後のType 5
3R6と同じ(メトリック20、FA 10.2.0.254)そろうR6の1つ変わらない
5メトリック10コストが違う2つR5の中身(メトリック10)に作り直す
6メトリック20に戻すそろうR5が取り下げ、R6の1つR6の中身に作り直す
7FA 10.2.0.6FAが違う2つR6の中身のまま

条件がそろうとR5はType 7を出さない(STEP 3)

R5に同じスタティックと再配布を入れた直後のsyslogです。R6がすでに広告しているので再配布しない、と出ています。

R5 STEP 3:show loggingのOSPFの行
RP/0/RP0/CPU0:Sep 13 16:03:35.694 UTC: ospf[1035]: %ROUTING-OSPF-6-NOTREDIST3 : build_ex_route(): don't redistribute net 192.168.99.0/24, 6.6.6.6 advertises it already 

R5が自分で出したType 7はありません。

R5 STEP 3:show ospf database nssa-external self-originate
RP/0/RP0/CPU0:R5#show ospf database nssa-external self-originate
Sun Sep 13 16:06:57.575 UTC


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

Type 5は2つとも残る(STEP 4)

R2にもR1と同じ192.168.1.0/24を再配布させると、area 0には2つのType 5が並びます。

R3 STEP 4:show ospf database external
RP/0/RP0/CPU0:R3#show ospf database external
Sun Sep 13 16:11:04.846 UTC


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

		Type-5 AS External Link States

  Routing Bit Set on this LSA
  LS age: 391
  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: 80000003
  Checksum: 0x927
  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: 138
  Options: (No TOS-capability, DC)
  LS Type: AS External Link
  Link State ID: 192.168.1.0 (External Network Number)
  Advertising Router: 2.2.2.2
  LS Seq Number: 80000001
  Checksum: 0xee3f
  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

  Routing Bit Set on this LSA
  LS age: 763
  Options: (No TOS-capability, DC)
  LS Type: AS External Link
  Link State ID: 192.168.99.0 (External Network Number)
  Advertising Router: 4.4.4.4
  LS Seq Number: 80000001
  Checksum: 0xf0c7
  Length: 36
  Network Mask: /24
	Metric Type: 2 (Larger than any link state path)
	TOS: 0 
	Metric: 20 
	Forward Address: 10.2.0.254
	External Route Tag: 0

コストが違えば2つ並び、Type 5が作り直される(STEP 5)

R5のメトリックを10にすると、NSSAの中にType 7が2つ並びます。Routing Bit Set on this LSAはR4がインストールしたLSAに付き、メトリックの小さいR5のほうだけに出ています。

R4 STEP 5:show ospf database nssa-external
RP/0/RP0/CPU0:R4#show ospf database nssa-external
Sun Sep 13 16:16:45.511 UTC


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

		Type-7 AS External Link States (Area 2)

  Routing Bit Set on this LSA
  LS age: 174
  Options: (No TOS-capability, Type 7/5 translation, DC)
  LS Type: AS External Link
  Link State ID: 192.168.99.0 (External Network Number)
  Advertising Router: 5.5.5.5
  LS Seq Number: 80000001
  Checksum: 0xd9da
  Length: 36
  Network Mask: /24
	Metric Type: 2 (Larger than any link state path)
	TOS: 0 
	Metric: 10 
	Forward Address: 10.2.0.254
	External Route Tag: 0

  LS age: 1104
  Options: (No TOS-capability, Type 7/5 translation, DC)
  LS Type: AS External Link
  Link State ID: 192.168.99.0 (External Network Number)
  Advertising Router: 6.6.6.6
  LS Seq Number: 80000001
  Checksum: 0x2086
  Length: 36
  Network Mask: /24
	Metric Type: 2 (Larger than any link state path)
	TOS: 0 
	Metric: 20 
	Forward Address: 10.2.0.254
	External Route Tag: 0

area 0のType 5は1つのままで、メトリックが10に、Seqが80000002に変わりました。Advertising Routerは4.4.4.4のままです。

R1 STEP 5:show ospf database external
RP/0/RP0/CPU0:R1#show ospf database external
Sun Sep 13 16:14:49.438 UTC


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

		Type-5 AS External Link States

  LS age: 615
  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: 80000003
  Checksum: 0x927
  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

  Routing Bit Set on this LSA
  LS age: 364
  Options: (No TOS-capability, DC)
  LS Type: AS External Link
  Link State ID: 192.168.1.0 (External Network Number)
  Advertising Router: 2.2.2.2
  LS Seq Number: 80000001
  Checksum: 0xee3f
  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

  Routing Bit Set on this LSA
  LS age: 57
  Options: (No TOS-capability, DC)
  LS Type: AS External Link
  Link State ID: 192.168.99.0 (External Network Number)
  Advertising Router: 4.4.4.4
  LS Seq Number: 80000002
  Checksum: 0x8a37
  Length: 36
  Network Mask: /24
	Metric Type: 2 (Larger than any link state path)
	TOS: 0 
	Metric: 10 
	Forward Address: 10.2.0.254
	External Route Tag: 0

そろい直すとR5が取り下げる(STEP 6)

R5のメトリックを20に戻すと、STEP 3と同じsyslogが出ます。

R5 STEP 6:show loggingのOSPFの行
RP/0/RP0/CPU0:Sep 13 16:19:04.175 UTC: ospf[1035]: %ROUTING-OSPF-6-NOTREDIST3 : build_ex_route(): don't redistribute net 192.168.99.0/24, 6.6.6.6 advertises it already 

続けてR5が流した取り下げのLSUです。LS ageが3600(MaxAge)になっています。168ミリ秒後に、R4がType 5をメトリック20の中身に作り直しました(Seq 0x80000003)。

STEP 6 NSSAのLAN No.2 LSU(R5のType 7の取り下げ)tshark -V
Open Shortest Path First
    OSPF Header
        Version: 2
        Message Type: LS Update (4)
        Packet Length: 64
        Source OSPF Router: 5.5.5.5
        Area ID: 0.0.0.2
        Checksum: 0x1173 [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 7 (NSSA AS-External-LSA), len 36
            .000 1110 0001 0000 = LS Age (seconds): 3600
            0... .... .... .... = Do Not Age Flag: 0
            Options: 0x28, (DC) Demand Circuits, (P) Propagate
                0... .... = DN: Not set
                .0.. .... = (O) Opaque: Not set
                ..1. .... = (DC) Demand Circuits: Supported
                ...0 .... = (L) LLS Data block: Not Present
                .... 1... = (P) Propagate: Set
                .... .0.. = (MC) Multicast: Not capable
                .... ..0. = (E) External Routing: Not capable
                .... ...0 = (MT) Multi-Topology Routing: No
            LS Type: NSSA AS-External-LSA (7)
            Link State ID: 192.168.99.0
            Advertising Router: 5.5.5.5
            Sequence Number: 0x80000002
            Checksum: 0x734a
            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: 10.2.0.254
            External Route Tag: 0
上のtshark出力のパケット(No.2 LSU)のpcapをダウンロード

Forwarding Addressだけ違っても2つ並ぶ(STEP 7)

R5のネクストホップを10.2.0.6に変えると、R5のType 7のForwarding Addressも10.2.0.6になります。コストは同じなので、R4はどちらもインストールしています。

R4 STEP 7:show ospf database nssa-external
RP/0/RP0/CPU0:R4#show ospf database nssa-external
Sun Sep 13 16:27:04.030 UTC


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

		Type-7 AS External Link States (Area 2)

  Routing Bit Set on this LSA
  LS age: 171
  Options: (No TOS-capability, Type 7/5 translation, DC)
  LS Type: AS External Link
  Link State ID: 192.168.99.0 (External Network Number)
  Advertising Router: 5.5.5.5
  LS Seq Number: 80000001
  Checksum: 0xa003
  Length: 36
  Network Mask: /24
	Metric Type: 2 (Larger than any link state path)
	TOS: 0 
	Metric: 20 
	Forward Address: 10.2.0.6
	External Route Tag: 0

  Routing Bit Set on this LSA
  LS age: 1722
  Options: (No TOS-capability, Type 7/5 translation, DC)
  LS Type: AS External Link
  Link State ID: 192.168.99.0 (External Network Number)
  Advertising Router: 6.6.6.6
  LS Seq Number: 80000001
  Checksum: 0x2086
  Length: 36
  Network Mask: /24
	Metric Type: 2 (Larger than any link state path)
	TOS: 0 
	Metric: 20 
	Forward Address: 10.2.0.254
	External Route Tag: 0

変換後のType 5はR6のType 7と同じForwarding Address 10.2.0.254に対応したままなので作り直されず、area 0のキャプチャーにLSUは流れていません。

取り消しと作り直し

LSAを取り消すときは、LS ageをMaxAge(3600秒)にして流し直します(RFC 2328 Section 14.1)。Type 7が取り消されると、そこから作ったType 5も変換役が取り消します(RFC 3101 Section 3.3)。LSDBから消えたあとに出し直すLSAは、シーケンス番号が初期値の0x80000001から始まります(RFC 2328 Section 12.1.6)。

STEP 1でR6の再配布を止めたときのキャプチャーです。R6のType 7と、121ミリ秒後にR4のType 5が、どちらもLS age 3600で流れています。どちらもメトリックは16777215(LSInfinity)です。

STEP 1 NSSAのLAN No.2 LSU(R6のType 7の取り消し)tshark -V
Open Shortest Path First
    OSPF Header
        Version: 2
        Message Type: LS Update (4)
        Packet Length: 64
        Source OSPF Router: 6.6.6.6
        Area ID: 0.0.0.2
        Checksum: 0x7709 [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 7 (NSSA AS-External-LSA), len 36
            .000 1110 0001 0000 = LS Age (seconds): 3600
            0... .... .... .... = Do Not Age Flag: 0
            Options: 0x28, (DC) Demand Circuits, (P) Propagate
                0... .... = DN: Not set
                .0.. .... = (O) Opaque: Not set
                ..1. .... = (DC) Demand Circuits: Supported
                ...0 .... = (L) LLS Data block: Not Present
                .... 1... = (P) Propagate: Set
                .... .0.. = (MC) Multicast: Not capable
                .... ..0. = (E) External Routing: Not capable
                .... ...0 = (MT) Multi-Topology Routing: No
            LS Type: NSSA AS-External-LSA (7)
            Link State ID: 192.168.99.0
            Advertising Router: 6.6.6.6
            Sequence Number: 0x80000003
            Checksum: 0x08a3
            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: 6.6.6.6
            External Route Tag: 0
上のtshark出力のパケット(No.2 LSU)のpcapをダウンロード
STEP 1 area 0 No.1 LSU(R4のType 5の取り消し)tshark -V
Open Shortest Path First
    OSPF Header
        Version: 2
        Message Type: LS Update (4)
        Packet Length: 64
        Source OSPF Router: 4.4.4.4
        Area ID: 0.0.0.0 (Backbone)
        Checksum: 0x6c1e [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.99.0
            Advertising Router: 4.4.4.4
            Sequence Number: 0x80000003
            Checksum: 0x24a6
            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: 10.2.0.254
            External Route Tag: 0
上のtshark出力のパケット(area 0 No.1 LSU)のpcapをダウンロード

STEP 2で再配布を戻すと、Type 7とType 5はどちらも0x80000001で作り直されます(「変換で何が書き換わるか」のキャプチャー)。

参考

文書節内容
RFC 3101Section 2.3Type 7の定義。Type 5との6つの違い、Forwarding Addressの選び方
RFC 3101Section 2.4Type 7の生成。等価なType 7の取り下げ、ABRが出すデフォルトのType 7のPビット
RFC 3101Section 3.1変換役の選出
RFC 3101Section 3.2Type 7からType 5への変換
RFC 3101Section 3.3変換したType 5の取り消し
RFC 3101Appendix CType 7のパケットフォーマット
RFC 2328Appendix A.4.5Type 5のパケットフォーマット
RFC 2328Section 12.1.6LSのシーケンス番号
RFC 2328Section 14.1LSAの取り消し(premature aging)

検証Configおよびshow結果

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

ファイル内容
..._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 nssa-external / show ospf database nssa-external self-originate / show ospf database external / show ospf database database-summary
..._log.txtそのSTEPの範囲だけに絞ったshow logging
..._run.txtそのSTEP時点のshow running-config(=そのSTEPの検証Config)
..._trace.txtshow ospf trace spf_ext / show ospf trace adj_cycle / show ospf trace events / show ospf trace adj
..._ping.txtR1・R2からGW(192.168.99.1)へのpingとtraceroute
..._commit.cfgそのSTEPで設定を変えたルータのshow configuration commit changes last 1

STEP 0:初期状態(R6が192.168.99.0/24を、R1が192.168.1.0/24を再配布)

ルータshow出力syslogrunning-configtraceping投入した設定
R1showlogruntraceping-
R2showlogruntraceping-
R3showlogruntrace--
R4showlogruntrace--
R5showlogruntrace--
R6showlogruntrace--
GWshowlogruntrace--

STEP 1:R6の再配布を止める

ルータshow出力syslogrunning-configtraceping投入した設定
R1showlogruntraceping-
R2showlogruntraceping-
R3showlogruntrace--
R4showlogruntrace--
R5showlogruntrace--
R6showlogruntrace-commit
GWshowlogruntrace--

STEP 2:R6の再配布を戻す

ルータshow出力syslogrunning-configtraceping投入した設定
R1showlogruntraceping-
R2showlogruntraceping-
R3showlogruntrace--
R4showlogruntrace--
R5showlogruntrace--
R6showlogruntrace-commit
GWshowlogruntrace--

STEP 3:R5にもR6と同じ経路を再配布させる

ルータshow出力syslogrunning-configtraceping投入した設定
R1showlogruntraceping-
R2showlogruntraceping-
R3showlogruntrace--
R4showlogruntrace--
R5showlogruntrace-commit
R6showlogruntrace--
GWshowlogruntrace--

STEP 4:R2にもR1と同じ192.168.1.0/24を再配布させる

ルータshow出力syslogrunning-configtraceping投入した設定
R1showlogruntraceping-
R2showlogruntracepingcommit
R3showlogruntrace--
R4showlogruntrace--
R5showlogruntrace--
R6showlogruntrace--
GWshowlogruntrace--

STEP 5:R5のメトリックを10にする

ルータshow出力syslogrunning-configtraceping投入した設定
R1showlogruntraceping-
R2showlogruntraceping-
R3showlogruntrace--
R4showlogruntrace--
R5showlogruntrace-commit
R6showlogruntrace--
GWshowlogruntrace--

STEP 6:R5のメトリックを20に戻す

ルータshow出力syslogrunning-configtraceping投入した設定
R1showlogruntraceping-
R2showlogruntraceping-
R3showlogruntrace--
R4showlogruntrace--
R5showlogruntrace-commit
R6showlogruntrace--
GWshowlogruntrace--

STEP 7:R5のネクストホップを10.2.0.6に変える

ルータshow出力syslogrunning-configtraceping投入した設定
R1showlogruntraceping-
R2showlogruntraceping-
R3showlogruntrace--
R4showlogruntrace--
R5showlogruntrace-commit
R6showlogruntrace--
GWshowlogruntrace--

STEP 8:R4にnssa default-information-originateを入れる(最終状態)

ルータshow出力syslogrunning-configtraceping投入した設定
R1showlogruntraceping-
R2showlogruntraceping-
R3showlogruntrace--
R4showlogruntrace-commit
R5showlogruntrace--
R6showlogruntrace--
GWshowlogruntrace--

パケットキャプチャーはSTEPごとに、NSSAのLAN(R6 — LAN-SW)とarea 0(R3 — R4)の2か所で取得しています。本文で引用したLSUは、STEP 1のNo.2(NSSAのLAN)とNo.1(area 0)、STEP 2のNo.2(両方)、STEP 6のNo.2とSTEP 8のNo.3(NSSAのLAN)です。

STEPNSSAのLAN(R6 — LAN-SW間)area 0(R3 — R4間)
0pcappcap
1pcappcap
2pcappcap
3pcappcap
4pcappcap
5pcappcap
6pcappcap
7pcappcap
8pcappcap

関連記事