OSPFの外部経路とは
これまでの記事では、1つのOSPFドメインの中だけで経路を交換してきました。実際のネットワークでは、OSPFで動いていない範囲(スタティックルートで到達する先、別のルーティングプロトコルが動いている範囲、インターネット側)への経路もOSPFに載せる必要があります。
OSPFの外から持ち込んだ経路を「外部経路(External Route)」、持ち込む操作を「再配布(Redistribution)」、再配布を行うルータを「ASBR(Autonomous System Boundary Router、AS境界ルータ)」と呼びます。ASBRは外部経路をAS External-LSA(Type 5)に変換し、エリアをまたいでAS全体へフラッディングします。
| 用語 | 説明 |
|---|---|
| ASBR | OSPFの外から経路を持ち込むルータ。Router-LSAに「AS境界ルータ」のフラグが立つ |
| AS External-LSA(Type 5) | 外部経路を表すLSA。エリアの境界を越えてAS全体に広がる(スタブエリアを除く) |
| メトリックタイプ E1 / E2 | 外部経路のコストの数え方。E1はASBRまでの内部コストを加算し、E2は加算しない |
| シードメトリック | ASBRが外部経路に付ける初期メトリック。IOS XRのredistributeでは既定20 |
| Forwarding Address | 外部宛てのトラフィックを実際に渡す先。0.0.0.0ならASBR自身に送る |
この記事では、スタティックルートの再配布を題材に、Type 5 LSAの中身、E1とE2の違い、そしてASBRが2台あるときにどちらの経路が選ばれるかを実機で確認します。Forwarding Addressの詳細は別記事で解説します。
検証構成
Cisco IOS XR(XRd 26.1.1)のルータ7台で、2つの独立したOSPFドメインを作りました。ドメインA(router ospf 1)とドメインB(router ospf 2)は、R3–R11間とR4–R12間の2本のリンクで物理的につながっていますが、このリンク上ではOSPFの隣接を張っていません(各ドメインでpassive enableにしています)。つまりドメインAからドメインBの経路は、再配布しない限り見えません。
| 項目 | 内容 |
|---|---|
| ドメインA | router ospf 1 エリア0。R1・R2・R3・R4 |
| ドメインB | router ospf 2 エリア0。R11・R12・R13 |
| ASBRになるルータ | ドメインA側はR3とR4、ドメインB側はR11とR12 |
| 外部経路の宛先 | ドメインAから見ると13.13.13.13/32(R13のLoopback0)、ドメインBから見ると1.1.1.1/32(R1のLoopback0) |
| 観測点 | R1(両ASBRから距離が違う位置)。疎通確認はR1とR13でping / traceroute |
| リンクのコスト | すべてのリンクとLoopback0が既定のコスト1。IOS XRの既定の参照帯域幅は100 Mbpsで、Gigabit Ethernetはこれを超えるためコストが1になる。STEP 4以降のみ、R2のGigabitEthernet0/0/0/2(R4向け)をcost 10に設定する |
境界リンクをpassive enableでOSPFに入れている理由は2つあります。隣接を張らないので2つのドメインは独立したままですが、172.16.3.0/24と172.16.4.0/24が各ドメイン内に広告されるため、tracerouteの中間ホップに戻り経路ができて経路が読めます。また、この状態ではForwarding Addressが0.0.0.0になるため、外部経路の基本動作に集中できます。
検証は次の10段階(STEP 0〜9)で進めます。各STEPで7台すべてから取得したshow出力・syslog・running-configは、記事末尾の検証Configおよびshow結果にまとめました。
| STEP | 操作 | 結果 |
|---|---|---|
| 0 | 初期状態(再配布なし) | R1はドメインBの経路を知らない。pingは失敗 |
| 1 | R3とR11で相互にスタティックを再配布 | Type 5が出現。両方向でping / tracerouteが通る |
| 2 | R3をmetric-type 1(E1)に | 観測点によってメトリックが変わる |
| 3 | R3をE2に戻す | どの観測点でも同じメトリックに戻る |
| 4 | R2のR4向けにcost 10、R4とR12も再配布(同じシードメトリック20) | Type 5が2つ。ASBRまでのコストで決まる |
| 5 | R4のシードメトリックを15に下げる | R4経由に切り替わる |
| 6 | R3をmetric-type 1(E1・20)に | E1が優先されR3経由に戻る |
| 7 | R4もmetric-type 1(E1・15)に | 合計で比較され、R3経由のまま |
| 8 | R3でdefault-information originate always | デフォルトルートがType 5で配布される |
| 9 | すべて削除(最終状態) | 初期状態に復旧 |
再配布する前(STEP 0)
R1にはドメインBの経路が1つもありません。13.13.13.13宛てのpingは失敗し、tracerouteもR1自身が!N(宛先ネットワークに到達不能)を返して終わります。
RP/0/RP0/CPU0:R1#show route 13.13.13.13/32
Sun Sep 6 07:43:23.632 UTC
% Network not in table
RP/0/RP0/CPU0:R1#ping 13.13.13.13 source 1.1.1.1 count 2
Sun Sep 6 07:43:23.767 UTC
Type escape sequence to abort.
Sending 2, 100-byte ICMP Echos to 13.13.13.13 timeout is 2 seconds:
..
Success rate is 0 percent (0/2)
RP/0/RP0/CPU0:R1#traceroute 13.13.13.13 source 1.1.1.1
Sun Sep 6 07:43:28.625 UTC
Type escape sequence to abort.
Tracing the route to 13.13.13.13
1 1.1.1.1 !N * !N このときR1が学習しているのはドメインA内の経路と、境界リンクの2つのセグメントだけです。
RP/0/RP0/CPU0:R1#show route ospf
Sun Sep 6 07:40:10.467 UTC
O 2.2.2.2/32 [110/2] via 10.0.12.2, 00:00:30, GigabitEthernet0/0/0/0
O 3.3.3.3/32 [110/3] via 10.0.12.2, 00:00:30, GigabitEthernet0/0/0/0
O 4.4.4.4/32 [110/3] via 10.0.12.2, 00:00:30, GigabitEthernet0/0/0/0
O 10.0.23.0/24 [110/2] via 10.0.12.2, 00:00:30, GigabitEthernet0/0/0/0
O 10.0.24.0/24 [110/2] via 10.0.12.2, 00:00:30, GigabitEthernet0/0/0/0
O 172.16.3.0/24 [110/3] via 10.0.12.2, 00:00:30, GigabitEthernet0/0/0/0
O 172.16.4.0/24 [110/3] via 10.0.12.2, 00:00:30, GigabitEthernet0/0/0/0スタティックを再配布してASBRにする(STEP 1)
R3にドメインBの宛先へのスタティックルートを設定し、それをOSPFに再配布します。戻り経路も必要なので、R11でも同じことを逆向きに行います。
router static
address-family ipv4 unicast
13.13.13.13/32 172.16.3.11
!
!
router ospf 1
redistribute static
!router static
address-family ipv4 unicast
1.1.1.1/32 172.16.3.3
!
!
router ospf 2
redistribute static
!neighborにroute-policyが必須ですが、OSPFのredistributeはroute-policyなしで動きます(XRd 26.1.1で確認)。フィルタしたい場合にroute-policyを付けます。再配布したR3は、show ospfに「AS境界ルータである」と表示されるようになります。
RP/0/RP0/CPU0:R3#show ospf
Sun Sep 6 07:46:25.276 UTC
Routing Process "ospf 1" with ID 3.3.3.3
Role: Primary Active
NSR (Non-stop routing) is Enabled
Supports only single TOS(TOS0) routes
Supports opaque LSA
It is an autonomous system boundary routerR1のLSDBには、R3が生成したType 5のLSAが現れます。この記事で何度も見ることになる4つのフィールドが並んでいます。
RP/0/RP0/CPU0:R1#show ospf database external
Sun Sep 6 07:45:46.443 UTC
OSPF Router with ID (1.1.1.1) (Process ID 1)
Type-5 AS External Link States
Routing Bit Set on this LSA
LS age: 106
Options: (No TOS-capability, DC)
LS Type: AS External Link
Link State ID: 13.13.13.13 (External Network Number)
Advertising Router: 3.3.3.3
LS Seq Number: 80000001
Checksum: 0x352b
Length: 36
Network Mask: /32
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 ID | 13.13.13.13 | 外部経路のネットワーク番号 |
Advertising Router | 3.3.3.3 | この経路を持ち込んだASBR |
Metric Type | 2 | E2。ASBRまでの内部コストを加算しない |
Metric | 20 | シードメトリック。IOS XRのredistributeの既定値 |
Forward Address | 0.0.0.0 | トラフィックはASBR(R3)へ送る |
ルーティングテーブルにはtype extern 2として入り、show route ospfではO E2と表示されます。
RP/0/RP0/CPU0:R1#show route 13.13.13.13/32
Sun Sep 6 07:45:47.816 UTC
Routing entry for 13.13.13.13/32
Known via "ospf 1", distance 110, metric 20, type extern 2
Installed Sep 6 07:44:03.182 for 00:01:44
Routing Descriptor Blocks
10.0.12.2, from 3.3.3.3, via GigabitEthernet0/0/0/0
Route metric is 20
No advertising protos. 疎通も取れました。tracerouteはR2→R3→R11→R13と4ホップで、境界リンクの172.16.3.11もホップとして見えています。
RP/0/RP0/CPU0:R1#ping 13.13.13.13 source 1.1.1.1 count 3
Sun Sep 6 07:45:10.691 UTC
Type escape sequence to abort.
Sending 3, 100-byte ICMP Echos to 13.13.13.13 timeout is 2 seconds:
!!!
Success rate is 100 percent (3/3), round-trip min/avg/max = 12/15/21 ms
RP/0/RP0/CPU0:R1#traceroute 13.13.13.13 source 1.1.1.1
Sun Sep 6 07:45:11.638 UTC
Type escape sequence to abort.
Tracing the route to 13.13.13.13
1 10.0.12.2 6 msec 3 msec 4 msec
2 10.0.23.3 7 msec 22 msec 6 msec
3 172.16.3.11 10 msec 9 msec 9 msec
4 10.1.11.13 13 msec * 18 msec 戻り方向も同じ構成なので、R13からR1へも到達します。
RP/0/RP0/CPU0:R13#ping 1.1.1.1 source 13.13.13.13 count 3
Sun Sep 6 07:45:18.563 UTC
Type escape sequence to abort.
Sending 3, 100-byte ICMP Echos to 1.1.1.1 timeout is 2 seconds:
!!!
Success rate is 100 percent (3/3), round-trip min/avg/max = 11/13/15 ms
RP/0/RP0/CPU0:R13#traceroute 1.1.1.1 source 13.13.13.13
Sun Sep 6 07:45:19.532 UTC
Type escape sequence to abort.
Tracing the route to 1.1.1.1
1 10.1.11.11 6 msec 4 msec 7 msec
2 172.16.3.3 7 msec 9 msec 7 msec
3 10.0.23.2 11 msec 10 msec 10 msec
4 10.0.12.1 14 msec * 21 msec E1とE2の違い(STEP 2・3)
外部経路のメトリックの数え方には2種類あります。
| メトリックタイプ | 表示 | コストの数え方 |
|---|---|---|
| External Type 2(E2) | O E2 | シードメトリックそのまま。 ASBRまでの内部コストを加算しない |
| External Type 1(E1) | O E1 | シードメトリック+ASBRまでの内部コスト。 OSPF内部の経路と同じ尺度で比較できる |
R3の再配布をmetric-type 1に変更して、ASBRからの距離が違う2台(R1はR3までコスト2、R2はコスト1)で見比べます。
router ospf 1
redistribute static metric-type 1
!RP/0/RP0/CPU0:R1#show route 13.13.13.13/32
Sun Sep 6 07:50:04.397 UTC
Routing entry for 13.13.13.13/32
Known via "ospf 1", distance 110, metric 22, type extern 1
Installed Sep 6 07:48:50.086 for 00:01:14
Routing Descriptor Blocks
10.0.12.2, from 3.3.3.3, via GigabitEthernet0/0/0/0
Route metric is 22
No advertising protos. RP/0/RP0/CPU0:R2#show route 13.13.13.13/32
Sun Sep 6 07:50:27.611 UTC
Routing entry for 13.13.13.13/32
Known via "ospf 1", distance 110, metric 21, type extern 1
Installed Sep 6 07:48:50.079 for 00:01:37
Routing Descriptor Blocks
10.0.23.3, from 3.3.3.3, via GigabitEthernet0/0/0/1
Route metric is 21
No advertising protos. 同じLSA(シードメトリック20)を見ているのに、R1では22、R2では21になりました。それぞれ20 + 2と20 + 1で、ASBRまでの内部コストが足されています。
E2に戻すと、どちらも20で揃います。
RP/0/RP0/CPU0:R1#show route 13.13.13.13/32
Sun Sep 6 07:53:53.531 UTC
Routing entry for 13.13.13.13/32
Known via "ospf 1", distance 110, metric 20, type extern 2
Installed Sep 6 07:52:59.278 for 00:00:54
Routing Descriptor Blocks
10.0.12.2, from 3.3.3.3, via GigabitEthernet0/0/0/0
Route metric is 20
No advertising protos. RP/0/RP0/CPU0:R2#show route 13.13.13.13/32
Sun Sep 6 07:54:16.928 UTC
Routing entry for 13.13.13.13/32
Known via "ospf 1", distance 110, metric 20, type extern 2
Installed Sep 6 07:52:59.271 for 00:01:17
Routing Descriptor Blocks
10.0.23.3, from 3.3.3.3, via GigabitEthernet0/0/0/1
Route metric is 20
No advertising protos. E2は「OSPFの外の距離」を表す値で、AS内のどこから見ても同じです。一方E1はAS内の距離を含むので、観測点によって変わります。どちらを使うべきかは後述の設計上の注意で整理します。
外部経路のパス選択
ここからが本題です。同じ外部プレフィックスを2台のASBRが広告しているとき、どちらが選ばれるのかを確かめます。
ASBRまでのコストを確認する
パス選択の判断材料になる「ASBRまでの内部コスト」はshow ospf border-routersで確認できます。R1から見ると、R3までが2、R4までが11です(R2のR4向けインタフェースにコスト10を設定したため)。
RP/0/RP0/CPU0:R1#show ospf border-routers
Sun Sep 6 07:58:29.441 UTC
OSPF 1 Internal Routing Table
Codes: i - Intra-area route, I - Inter-area route
i 3.3.3.3 [2] via 10.0.12.2, GigabitEthernet0/0/0/0, ASBR , Area 0, SPF 8
i 4.4.4.4 [11] via 10.0.12.2, GigabitEthernet0/0/0/0, ASBR , Area 0, SPF 8以降のSTEPでは、この R3まで2 / R4まで11 という差を使って判定ルールを切り分けていきます。
同じE2が2つある場合(STEP 4)
R4にもR3と同じプレフィックスを、同じシードメトリック20・同じE2で再配布させます。
router static
address-family ipv4 unicast
13.13.13.13/32 172.16.4.12
!
!
router ospf 1
redistribute static metric 20
!LSDBにはType 5が2つ並びます。Advertising Routerだけが違い、メトリックは同じです。
RP/0/RP0/CPU0:R1#show ospf database external
Sun Sep 6 07:58:28.845 UTC
OSPF Router with ID (1.1.1.1) (Process ID 1)
Type-5 AS External Link States
Routing Bit Set on this LSA
LS age: 332
Options: (No TOS-capability, DC)
LS Type: AS External Link
Link State ID: 13.13.13.13 (External Network Number)
Advertising Router: 3.3.3.3
LS Seq Number: 80000003
Checksum: 0x312d
Length: 36
Network Mask: /32
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: 96
Options: (No TOS-capability, DC)
LS Type: AS External Link
Link State ID: 13.13.13.13 (External Network Number)
Advertising Router: 4.4.4.4
LS Seq Number: 80000001
Checksum: 0x1745
Length: 36
Network Mask: /32
Metric Type: 2 (Larger than any link state path)
TOS: 0
Metric: 20
Forward Address: 0.0.0.0
External Route Tag: 0シードメトリックが同点なので、ASBRまでのコストが小さいR3側(2 < 11)が選ばれました。tracerouteもR3経由です。
RP/0/RP0/CPU0:R1#show route 13.13.13.13/32
Sun Sep 6 07:58:01.829 UTC
Routing entry for 13.13.13.13/32
Known via "ospf 1", distance 110, metric 20, type extern 2
Installed Sep 6 07:52:59.278 for 00:05:02
Routing Descriptor Blocks
10.0.12.2, from 3.3.3.3, via GigabitEthernet0/0/0/0
Route metric is 20
No advertising protos.
RP/0/RP0/CPU0:R1#traceroute 13.13.13.13 source 1.1.1.1
Sun Sep 6 07:58:01.959 UTC
Type escape sequence to abort.
Tracing the route to 13.13.13.13
1 10.0.12.2 33 msec 4 msec 5 msec
2 10.0.23.3 8 msec 7 msec 7 msec
3 172.16.3.11 42 msec 10 msec 9 msec
4 10.1.11.13 13 msec * 16 msec E2のシードメトリックが違う場合(STEP 5)
R4のシードメトリックを15に下げます。R4はASBRまでのコストが11で不利ですが、E2ではその内部コストは比較に使われません。
router ospf 1
redistribute static metric 15
!RP/0/RP0/CPU0:R1#show route 13.13.13.13/32
Sun Sep 6 08:02:12.442 UTC
Routing entry for 13.13.13.13/32
Known via "ospf 1", distance 110, metric 15, type extern 2
Installed Sep 6 08:01:27.256 for 00:00:45
Routing Descriptor Blocks
10.0.12.2, from 4.4.4.4, via GigabitEthernet0/0/0/0
Route metric is 15
No advertising protos.
RP/0/RP0/CPU0:R1#traceroute 13.13.13.13 source 1.1.1.1
Sun Sep 6 08:02:12.635 UTC
Type escape sequence to abort.
Tracing the route to 13.13.13.13
1 10.0.12.2 7 msec 6 msec 44 msec
2 10.0.24.4 8 msec 7 msec 7 msec
3 172.16.4.12 10 msec 8 msec 9 msec
4 10.1.12.13 14 msec * 14 msec R4経由に切り替わり、tracerouteの2ホップ目以降が10.0.24.4 → 172.16.4.12 → 10.1.12.13に変わりました。
ここが重要な点です。もし内部コストを加算して比較しているなら、R3は20 + 2 = 22、R4は15 + 11 = 26となりR3が勝つはずです。実際にはR4が選ばれたので、E2の比較にはシードメトリックしか使われていないことが確認できます。
E1とE2が混在する場合(STEP 6)
R3だけをmetric-type 1(E1・シードメトリック20)に戻します。R3のメトリックは20 + 2 = 22で、R4のE2の15より大きい値です。
router ospf 1
redistribute static metric 20 metric-type 1
!RP/0/RP0/CPU0:R1#show route 13.13.13.13/32
Sun Sep 6 08:06:15.782 UTC
Routing entry for 13.13.13.13/32
Known via "ospf 1", distance 110, metric 22, type extern 1
Installed Sep 6 08:05:29.579 for 00:00:46
Routing Descriptor Blocks
10.0.12.2, from 3.3.3.3, via GigabitEthernet0/0/0/0
Route metric is 22
No advertising protos.
RP/0/RP0/CPU0:R1#traceroute 13.13.13.13 source 1.1.1.1
Sun Sep 6 08:06:15.990 UTC
Type escape sequence to abort.
Tracing the route to 13.13.13.13
1 10.0.12.2 6 msec 5 msec 5 msec
2 10.0.23.3 8 msec 7 msec 7 msec
3 172.16.3.11 10 msec 9 msec 9 msec
4 10.1.11.13 12 msec * 17 msec メトリックの数値は22(R3)対15(R4)でR4のほうが小さいのに、R3が選ばれました。 外部経路の比較では、メトリックを見る前にメトリックタイプで優先順位が決まります。E1はE2より常に優先されます。
E1が2つある場合(STEP 7)
R4もmetric-type 1(シードメトリック15)にします。両方がE1になったので、今度はメトリックで比較されます。
- R3:
20 + 2 = 22 - R4:
15 + 11 = 26
router ospf 1
redistribute static metric 15 metric-type 1
!RP/0/RP0/CPU0:R1#show route 13.13.13.13/32
Sun Sep 6 08:10:17.038 UTC
Routing entry for 13.13.13.13/32
Known via "ospf 1", distance 110, metric 22, type extern 1
Installed Sep 6 08:05:29.579 for 00:04:47
Routing Descriptor Blocks
10.0.12.2, from 3.3.3.3, via GigabitEthernet0/0/0/0
Route metric is 22
No advertising protos. tracerouteもR3経由のままです。
RP/0/RP0/CPU0:R1#traceroute 13.13.13.13 source 1.1.1.1
Sun Sep 6 08:10:17.805 UTC
Type escape sequence to abort.
Tracing the route to 13.13.13.13
1 10.0.12.2 7 msec 5 msec 5 msec
2 10.0.23.3 8 msec 8 msec 7 msec
3 172.16.3.11 11 msec 10 msec 9 msec
4 10.1.11.13 13 msec * 17 msec R4のほうがシードメトリックは小さい(15 < 20)のに、合計では負けてR3が選ばれました。
STEP 5とSTEP 7を並べると分かりやすいです。シードメトリックの組み合わせは20と15でまったく同じなのに、E2ならR4、E1ならR3と結果が逆になります。
| STEP | R3の広告 | R4の広告 | 選ばれる | 理由 |
|---|---|---|---|---|
| 5 | E2 / 20 | E2 / 15 | R4 | シードメトリックだけで比較(15 < 20) |
| 7 | E1 / 20 | E1 / 15 | R3 | 内部コストを加算して比較(22 < 26) |
同じ条件が並ぶとECMPになる(STEP 4のドメインB側)
ドメインB側も同じ構成になっています。R13から見ると、R11とR12が1.1.1.1/32を同じE2・同じシードメトリック20で広告し、しかもR13から両ASBRまでの内部コストが同じ1です。この場合はどちらも選べないため、両方がルーティングテーブルに入ります(等コストマルチパス)。
RP/0/RP0/CPU0:R13#show route 1.1.1.1/32
Sun Sep 6 08:00:52.365 UTC
Routing entry for 1.1.1.1/32
Known via "ospf 2", distance 110, metric 20, type extern 2
Installed Sep 6 07:57:10.361 for 00:03:42
Routing Descriptor Blocks
10.1.11.11, from 11.11.11.11, via GigabitEthernet0/0/0/0
Route metric is 20
10.1.12.12, from 12.12.12.12, via GigabitEthernet0/0/0/1
Route metric is 20
No advertising protos. パス選択のまとめ
ここで確認した順序は、Ciscoの実装が独自に決めたものではなく RFC 2328 Section 16.4 のステップ(6) に規定されているものです。RFCは(a)から(d)の順に評価すると定めています。
| RFCの順序 | 規定されている内容 | 今回の検証 |
|---|---|---|
| (a) | エリア内経路・エリア間経路は、AS外部経路より常に優先される | 外部経路同士の比較なので今回は該当せず |
| (b) | E1はE2より常に優先される(“Type 1 external paths are always preferred over type 2 external paths” — RFC 2328 Section 16.4)。すべてE2の場合は、広告されたType 2メトリック(シードメトリック)が小さい方を優先する | STEP 6(E1優先)とSTEP 5(シードメトリックで比較) |
| (c) | まだ区別が付かずRFC1583Compatibilityが無効なら、ASBR/Forwarding Addressへ至るAS内部の経路の種別でSection 16.4.1に従って絞り込む | R3もR4もエリア0のエリア内経路で到達するため、この段階では差が付かない |
| (d) | まだ区別が付かなければコストで比較する。E1はForwarding Addressまでの距離+広告されたType 1メトリック(X+Y)、Type 2メトリックが等しいE2同士はForwarding Addressまでの距離で比較する | STEP 7(E1の合計 22 対 26)とSTEP 4(E2同点時の距離 2 対 11) |
同じ優先度と判定された経路は、ステップ(6)の冒頭の規定によりそのままエントリの経路リストに追加されます。これがドメインB側で観測した等コストマルチパスです。
0.0.0.0だったため、ステップ(3)の規定によりASBR自身が宛先になり、結果としてshow ospf border-routersが示すASBRまでのコストが比較に使われました。Forwarding Addressが非0のときに何が変わるかは別記事で解説します。一方、次の値はRFCの規定ではなく実装が決めているものです。他ベンダーや他バージョンでは異なる可能性があるため、設計時は実機で確認してください。
| 項目 | IOS XR(XRd 26.1.1)での値 |
|---|---|
redistributeのシードメトリックの既定 | 20 |
redistributeのメトリックタイプの既定 | E2(Type 2) |
default-information originateのメトリックの既定 | 1 |
| 外部経路のアドミニストレーティブディスタンス | 110(O E1 / O E2という表示形式もCisco独自) |
デフォルトルートの生成(STEP 8)
個別のプレフィックスを再配布するかわりに、デフォルトルート(0.0.0.0/0)をType 5として配布することもできます。ASBRが「AS外はすべて自分に送れ」と広告する形です。
router ospf 1
default-information originate always
!alwaysを付けているのは、R3自身がデフォルトルートを持っていなくても広告させるためです。付けない場合、R3のルーティングテーブルにデフォルトルートがあるときだけ広告されます。
RP/0/RP0/CPU0:R1#show route ospf
Sun Sep 6 08:14:25.707 UTC
O*E2 0.0.0.0/0 [110/1] via 10.0.12.2, 00:00:46, GigabitEthernet0/0/0/0
O 2.2.2.2/32 [110/2] via 10.0.12.2, 00:34:45, GigabitEthernet0/0/0/0
O 3.3.3.3/32 [110/3] via 10.0.12.2, 00:34:45, GigabitEthernet0/0/0/0
O 4.4.4.4/32 [110/12] via 10.0.12.2, 00:17:45, GigabitEthernet0/0/0/0
O 10.0.23.0/24 [110/2] via 10.0.12.2, 00:34:45, GigabitEthernet0/0/0/0
O 10.0.24.0/24 [110/11] via 10.0.12.2, 00:17:45, GigabitEthernet0/0/0/0
O E1 13.13.13.13/32 [110/22] via 10.0.12.2, 00:08:56, GigabitEthernet0/0/0/0
O 172.16.3.0/24 [110/3] via 10.0.12.2, 00:34:45, GigabitEthernet0/0/0/0
O 172.16.4.0/24 [110/12] via 10.0.12.2, 00:17:45, GigabitEthernet0/0/0/0
RP/0/RP0/CPU0:R1#show route 0.0.0.0/0
Sun Sep 6 08:14:25.849 UTC
Routing entry for 0.0.0.0/0
Known via "ospf 1", distance 110, metric 1, candidate default path
Tag 1, type extern 2
Installed Sep 6 08:13:39.774 for 00:00:46
Routing Descriptor Blocks
10.0.12.2, from 3.3.3.3, via GigabitEthernet0/0/0/0
Route metric is 1
No advertising protos. O*E2の*はデフォルトルートの候補であることを示します。メトリックは1で、redistributeの既定値20とは別の既定値が使われる点に注意してください。show route 0.0.0.0/0にもcandidate default pathと出ています。
なおこの出力には、これまでのSTEPの結果も残っています。O E1 13.13.13.13/32 [110/22]がSTEP 7で選んだE1の外部経路、4.4.4.4/32が[110/12]、10.0.24.0/24が[110/11]になっているのはSTEP 4で入れたcost 10の影響です。
設計上の注意
- E2(既定)は「AS外までの距離」だけを表します。 AS内のどこから見ても同じ値になるので、複数のASBRのうち「どのASBRから出るか」をAS内の距離で決めたい場合に向きます(STEP 4の挙動)。
- E1はAS内の距離を含めた総コストで比較したいときに使います。 ただし、E1とE2が混在するとメトリックの数値に関係なくE1が勝つため(STEP 6)、複数のASBRで再配布するならメトリックタイプは揃えるべきです。片方だけE1にすると、意図せずそちらに全部寄ります。
- シードメトリックの既定値は20です。 複数のASBRで既定のまま再配布すると、STEP 4のようにASBRまでの内部コストだけで決まります。意図した振り分けをしたい場合は明示的に設定します。
- 相互に再配布する構成ではループに注意します。 今回はドメインA・Bそれぞれがスタティックだけを再配布しているので問題になりませんが、双方でOSPFを相互に再配布すると経路が往復して不安定になることがあります。
- ASBR自身は再配布元の経路を使い続けます。 R3のルーティングテーブルではスタティック(アドミニストレーティブディスタンス1)がOSPFの外部経路(110)より優先されるため、外部経路は入りません。観測はASBR以外のルータで行う必要があります。
Forwarding Addressについて
今回のすべてのSTEPで、Type 5 LSAのForward Addressは0.0.0.0でした。これは「この外部経路宛てのトラフィックはASBR自身に送れ」という意味です。
条件が揃うと、ASBRはここに自分ではない次ホップのアドレスを入れることがあり、そうなるとトラフィックはASBRを経由せずに直接その宛先へ向かいます。条件と挙動は別記事で解説します。
検証Configおよびshow結果
各STEPで7台すべてから、次の3種類をルータごとに分けて取得しています。検証Configはこの..._run.txtです(最終状態はSTEP 9のもの)。
| ファイル | 内容 |
|---|---|
..._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 external / show ospf border-routers / show route 13.13.13.13/32 / show route 1.1.1.1/32 / show ospf routes / show ospf trace events |
..._log.txt | そのSTEPの範囲だけに絞ったshow logging。各STEPの開始時にlogmsgでマーカーを入れ、その時刻をshow logging startに指定して取得したもの(STEP 0のみ起動時からの全履歴) |
..._run.txt | そのSTEP時点のshow running-config(=そのSTEPの検証Config) |
疎通確認(ping / traceroute)は、意味のあるR1とR13でのみ..._trace.txtとして別途取得しています。
STEP 0:初期状態(再配布なし) — R1はドメインBの経路を知らない。pingは失敗
| ルータ | show出力 | syslog | running-config |
|---|---|---|---|
| R1 | show | log | run |
| R2 | show | log | run |
| R3 | show | log | run |
| R4 | show | log | run |
| R11 | show | log | run |
| R12 | show | log | run |
| R13 | show | log | run |
追加取得: R1 経路とping / R13 経路とping
STEP 1:R3とR11で相互にスタティックを再配布 — Type 5が出現。両方向でping / tracerouteが通る
| ルータ | show出力 | syslog | running-config |
|---|---|---|---|
| R1 | show | log | run |
| R2 | show | log | run |
| R3 | show | log | run |
| R4 | show | log | run |
| R11 | show | log | run |
| R12 | show | log | run |
| R13 | show | log | run |
追加取得: R1 経路とping/traceroute / R13 経路とping/traceroute
STEP 2:R3をmetric-type 1(E1)に — R1は22、R2は21(内部コストが加算される)
| ルータ | show出力 | syslog | running-config |
|---|---|---|---|
| R1 | show | log | run |
| R2 | show | log | run |
| R3 | show | log | run |
| R4 | show | log | run |
| R11 | show | log | run |
| R12 | show | log | run |
| R13 | show | log | run |
追加取得: R1 経路とtraceroute
STEP 3:R3をE2に戻す — R1もR2も20
| ルータ | show出力 | syslog | running-config |
|---|---|---|---|
| R1 | show | log | run |
| R2 | show | log | run |
| R3 | show | log | run |
| R4 | show | log | run |
| R11 | show | log | run |
| R12 | show | log | run |
| R13 | show | log | run |
STEP 4:R2のR4向けにcost 10、R4とR12も再配布(E2・20) — Type 5が2つ。ASBRまでのコスト2のR3側が選ばれる
| ルータ | show出力 | syslog | running-config |
|---|---|---|---|
| R1 | show | log | run |
| R2 | show | log | run |
| R3 | show | log | run |
| R4 | show | log | run |
| R11 | show | log | run |
| R12 | show | log | run |
| R13 | show | log | run |
追加取得: R1 ASBRまでのコストとtraceroute / R13 経路とtraceroute
STEP 5:R4のシードメトリックを15に — R4経由に切り替わる(シードメトリックだけで比較)
| ルータ | show出力 | syslog | running-config |
|---|---|---|---|
| R1 | show | log | run |
| R2 | show | log | run |
| R3 | show | log | run |
| R4 | show | log | run |
| R11 | show | log | run |
| R12 | show | log | run |
| R13 | show | log | run |
追加取得: R1 経路とtraceroute
STEP 6:R3をmetric-type 1(E1・20)に — E1が優先されR3経由に戻る
| ルータ | show出力 | syslog | running-config |
|---|---|---|---|
| R1 | show | log | run |
| R2 | show | log | run |
| R3 | show | log | run |
| R4 | show | log | run |
| R11 | show | log | run |
| R12 | show | log | run |
| R13 | show | log | run |
追加取得: R1 経路とtraceroute
STEP 7:R4もmetric-type 1(E1・15)に — 合計22 < 26でR3経由のまま
| ルータ | show出力 | syslog | running-config |
|---|---|---|---|
| R1 | show | log | run |
| R2 | show | log | run |
| R3 | show | log | run |
| R4 | show | log | run |
| R11 | show | log | run |
| R12 | show | log | run |
| R13 | show | log | run |
追加取得: R1 経路とType 5とtraceroute
STEP 8:R3でdefault-information originate always — O*E2 0.0.0.0/0が配布される
| ルータ | show出力 | syslog | running-config |
|---|---|---|---|
| R1 | show | log | run |
| R2 | show | log | run |
| R3 | show | log | run |
| R4 | show | log | run |
| R11 | show | log | run |
| R12 | show | log | run |
| R13 | show | log | run |
追加取得: R1 デフォルトルートの確認
STEP 9:再配布・スタティック・コスト設定を削除(最終状態) — 初期状態に復旧
| ルータ | show出力 | syslog | running-config |
|---|---|---|---|
| R1 | show | log | run |
| R2 | show | log | run |
| R3 | show | log | run |
| R4 | show | log | run |
| R11 | show | log | run |
| R12 | show | log | run |
| R13 | show | log | run |
追加取得: R1 復旧の確認
参考
| RFC | タイトル | 概要 |
|---|---|---|
| RFC 2328 | OSPF Version 2 | AS External-LSA(Type 5)の定義(Section 12.4.4、A.4.5)。外部経路の計算とパス選択の規則(Section 16.4のステップ(3)〜(6))。ASBR/Forwarding Addressへの経路の優先順位(Section 16.4.1)。 |