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点を挙げています。フォーマットは同じで、違うのは扱われ方です。
| # | 違い |
|---|---|
| 1 | LSAヘッダーの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 Mask | 4バイト | 外部の宛先のマスク |
| E | 1ビット | 0ならE1、1ならE2。既定はE2 |
| metric | 3バイト | 外部コスト |
| Forwarding Address | 4バイト | Pビットが立つType 7では非ゼロが必須 |
| External Route Tag | 4バイト | 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 |
| 1 | R6の再配布を止める | Type 7と変換後のType 5がそろって取り消される |
| 2 | R6の再配布を戻す | どちらも0x80000001から作り直される |
| 3 | R5にもR6と同じ経路を再配布させる | 宛先・コスト・Forwarding Addressがそろうと、R5はType 7を出さない |
| 4 | R2にもR1と同じ192.168.1.0/24を再配布させる | Type 5なら2つとも残る |
| 5 | R5のメトリックを10にする | コストが違うと2つ並び、変換後のType 5の中身がR5のものになる |
| 6 | R5のメトリックを20に戻す | 再び等価になり、R5が取り下げる |
| 7 | R5のネクストホップを10.2.0.6に変える | Forwarding Addressだけ違っても2つ並ぶ |
| 8 | R4に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にだけ変換の行があります。
Area 2
Number of interfaces in this area is 1
It is a NSSA area
Perform type-7/type-5 LSA translation Area 2
Number of interfaces in this area is 1
It is a NSSA areaR6が再配布を戻した直後(STEP 2)に、NSSAのLANへ流れたLSUです。1つのLSUにType 7とR6のRouter-LSAが入っています。Type 7はPビットが立ち、Forwarding AddressはR6のネクストホップ10.2.0.254です。
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: 156ミリ秒後に、R4がarea 0へ出したType 5です。Advertising Routerが4.4.4.4に変わり、Pビットが消えています。ネットワーク、マスク、E2、メトリック20、Forwarding Address、タグはType 7と同じです。
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: 0Forwarding 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への最短経路です。
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 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を流し直したためです。
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このType 7は変換されず、area 0のキャプチャーにLSUは流れていません。デフォルト経路が入るのはNSSAの中だけです。
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/1RP/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)。優劣は次の順で決まります。
- Pビットが立つほうが優先
- 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に当てはめると次のとおりです。
| STEP | R5のType 7 | 3つの条件 | NSSAの中 | 変換後のType 5 |
|---|---|---|---|---|
| 3 | R6と同じ(メトリック20、FA 10.2.0.254) | そろう | R6の1つ | 変わらない |
| 5 | メトリック10 | コストが違う | 2つ | R5の中身(メトリック10)に作り直す |
| 6 | メトリック20に戻す | そろう | R5が取り下げ、R6の1つ | R6の中身に作り直す |
| 7 | FA 10.2.0.6 | FAが違う | 2つ | R6の中身のまま |
条件がそろうとR5はType 7を出さない(STEP 3)
R5に同じスタティックと再配布を入れた直後のsyslogです。R6がすでに広告しているので再配布しない、と出ています。
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はありません。
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が並びます。
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のほうだけに出ています。
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: 0area 0のType 5は1つのままで、メトリックが10に、Seqが80000002に変わりました。Advertising Routerは4.4.4.4のままです。
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が出ます。
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)。
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: 0Forwarding Addressだけ違っても2つ並ぶ(STEP 7)
R5のネクストホップを10.2.0.6に変えると、R5のType 7のForwarding Addressも10.2.0.6になります。コストは同じなので、R4はどちらもインストールしています。
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)です。
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: 0Open 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: 0STEP 2で再配布を戻すと、Type 7とType 5はどちらも0x80000001で作り直されます(「変換で何が書き換わるか」のキャプチャー)。
参考
| 文書 | 節 | 内容 |
|---|---|---|
| RFC 3101 | Section 2.3 | Type 7の定義。Type 5との6つの違い、Forwarding Addressの選び方 |
| RFC 3101 | Section 2.4 | Type 7の生成。等価なType 7の取り下げ、ABRが出すデフォルトのType 7のPビット |
| RFC 3101 | Section 3.1 | 変換役の選出 |
| RFC 3101 | Section 3.2 | Type 7からType 5への変換 |
| RFC 3101 | Section 3.3 | 変換したType 5の取り消し |
| RFC 3101 | Appendix C | Type 7のパケットフォーマット |
| RFC 2328 | Appendix A.4.5 | Type 5のパケットフォーマット |
| RFC 2328 | Section 12.1.6 | LSのシーケンス番号 |
| RFC 2328 | Section 14.1 | LSAの取り消し(premature aging) |
検証Configおよびshow結果
各STEPで7台すべてから、次のファイルをルータごとに分けて取得しています。検証Configはこの..._run.txtです(最終状態はSTEP 8のもの)。
| ファイル | 内容 |
|---|---|
..._show.txt | show 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.txt | show ospf trace spf_ext / show ospf trace adj_cycle / show ospf trace events / show ospf trace adj |
..._ping.txt | R1・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出力 | syslog | running-config | trace | ping | 投入した設定 |
|---|---|---|---|---|---|---|
| R1 | show | log | run | trace | ping | - |
| R2 | show | log | run | trace | ping | - |
| R3 | show | log | run | trace | - | - |
| R4 | show | log | run | trace | - | - |
| R5 | show | log | run | trace | - | - |
| R6 | show | log | run | trace | - | - |
| GW | show | log | run | trace | - | - |
STEP 1:R6の再配布を止める
| ルータ | show出力 | syslog | running-config | trace | ping | 投入した設定 |
|---|---|---|---|---|---|---|
| R1 | show | log | run | trace | ping | - |
| R2 | show | log | run | trace | ping | - |
| R3 | show | log | run | trace | - | - |
| R4 | show | log | run | trace | - | - |
| R5 | show | log | run | trace | - | - |
| R6 | show | log | run | trace | - | commit |
| GW | show | log | run | trace | - | - |
STEP 2:R6の再配布を戻す
| ルータ | show出力 | syslog | running-config | trace | ping | 投入した設定 |
|---|---|---|---|---|---|---|
| R1 | show | log | run | trace | ping | - |
| R2 | show | log | run | trace | ping | - |
| R3 | show | log | run | trace | - | - |
| R4 | show | log | run | trace | - | - |
| R5 | show | log | run | trace | - | - |
| R6 | show | log | run | trace | - | commit |
| GW | show | log | run | trace | - | - |
STEP 3:R5にもR6と同じ経路を再配布させる
| ルータ | show出力 | syslog | running-config | trace | ping | 投入した設定 |
|---|---|---|---|---|---|---|
| R1 | show | log | run | trace | ping | - |
| R2 | show | log | run | trace | ping | - |
| R3 | show | log | run | trace | - | - |
| R4 | show | log | run | trace | - | - |
| R5 | show | log | run | trace | - | commit |
| R6 | show | log | run | trace | - | - |
| GW | show | log | run | trace | - | - |
STEP 4:R2にもR1と同じ192.168.1.0/24を再配布させる
| ルータ | show出力 | syslog | running-config | trace | ping | 投入した設定 |
|---|---|---|---|---|---|---|
| R1 | show | log | run | trace | ping | - |
| R2 | show | log | run | trace | ping | commit |
| R3 | show | log | run | trace | - | - |
| R4 | show | log | run | trace | - | - |
| R5 | show | log | run | trace | - | - |
| R6 | show | log | run | trace | - | - |
| GW | show | log | run | trace | - | - |
STEP 5:R5のメトリックを10にする
| ルータ | show出力 | syslog | running-config | trace | ping | 投入した設定 |
|---|---|---|---|---|---|---|
| R1 | show | log | run | trace | ping | - |
| R2 | show | log | run | trace | ping | - |
| R3 | show | log | run | trace | - | - |
| R4 | show | log | run | trace | - | - |
| R5 | show | log | run | trace | - | commit |
| R6 | show | log | run | trace | - | - |
| GW | show | log | run | trace | - | - |
STEP 6:R5のメトリックを20に戻す
| ルータ | show出力 | syslog | running-config | trace | ping | 投入した設定 |
|---|---|---|---|---|---|---|
| R1 | show | log | run | trace | ping | - |
| R2 | show | log | run | trace | ping | - |
| R3 | show | log | run | trace | - | - |
| R4 | show | log | run | trace | - | - |
| R5 | show | log | run | trace | - | commit |
| R6 | show | log | run | trace | - | - |
| GW | show | log | run | trace | - | - |
STEP 7:R5のネクストホップを10.2.0.6に変える
| ルータ | show出力 | syslog | running-config | trace | ping | 投入した設定 |
|---|---|---|---|---|---|---|
| R1 | show | log | run | trace | ping | - |
| R2 | show | log | run | trace | ping | - |
| R3 | show | log | run | trace | - | - |
| R4 | show | log | run | trace | - | - |
| R5 | show | log | run | trace | - | commit |
| R6 | show | log | run | trace | - | - |
| GW | show | log | run | trace | - | - |
STEP 8:R4にnssa default-information-originateを入れる(最終状態)
| ルータ | show出力 | syslog | running-config | trace | ping | 投入した設定 |
|---|---|---|---|---|---|---|
| R1 | show | log | run | trace | ping | - |
| R2 | show | log | run | trace | ping | - |
| R3 | show | log | run | trace | - | - |
| R4 | show | log | run | trace | - | commit |
| R5 | show | log | run | trace | - | - |
| R6 | show | log | run | trace | - | - |
| GW | show | log | run | trace | - | - |
パケットキャプチャーは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)です。
| STEP | NSSAのLAN(R6 — LAN-SW間) | area 0(R3 — R4間) |
|---|---|---|
| 0 | pcap | pcap |
| 1 | pcap | pcap |
| 2 | pcap | pcap |
| 3 | pcap | pcap |
| 4 | pcap | pcap |
| 5 | pcap | pcap |
| 6 | pcap | pcap |
| 7 | pcap | pcap |
| 8 | pcap | pcap |
関連記事
- OSPFとは
- OSPFのルータID
- OSPFのルータIDが重複したときの挙動
- OSPFパケットの種類とヘッダーフォーマット
- OSPFの認証
- OSPFの状態遷移
- OSPF Optionsフィールド
- OSPFのDRとBDR
- OSPF ネットワークタイプ
- OSPFのコスト(メトリック)
- OSPFのECMP(等コストマルチパス)
- OSPFの外部経路(スタティックの再配布)
- OSPFのRFC1583互換(外部経路の選択規則)
- OSPFのAS外部経路のForwarding Address
- OSPFのマルチエリアとABR
- OSPFのバーチャルリンク
- OSPFのスタブエリアとトータリースタブエリア
- OSPFのNSSAとトータリーNSSA
- OSPFのデフォルトルート
- OSPFの経路集約
- OSPFのLSAとLSAヘッダー
- OSPFのHelloとDeadインターバル
- OSPFの収束タイマー(SPF / LSAスロットル)
- OSPFのLSAリフレッシュとペーシング
- OSPFのRouter-LSA(Type 1)
- OSPFのNetwork-LSA(Type 2)
- OSPFのSummary-LSA(Type 3)
- OSPFのASBR Summary-LSA(Type 4)
- OSPFのAS External-LSA(Type 5)
- OSPFのNSSA External-LSA(Type 7)