経路集約とは
マルチエリアとABRで、エリアを分けてもABRはプレフィックスの数だけType 3を出すことを確認しました。エリアの中に/32のループバックが100個あれば、Type 3も100個が隣のエリアへ流れ、それを受け取った全ルータのルーティングテーブルに100本の経路が載ります。これをまとめて1本にするのが経路集約(Summarization)です。
集約の効果は「LSDBのLSAが減る」と説明されることが多いのですが、実際に効くのはルーティングテーブル(RIB)と転送テーブル(FIB)の経路数が減ることです。LSAはOSPFプロセスのメモリの話にとどまりますが、経路数は転送ハードウェアの容量とテーブルの書き換え量に直結します。この記事でも実測して確かめます。
OSPFで集約できるのはABRとASBRの2か所だけです。エリアの内部や、バックボーンの途中にいるルータでは集約できません。エリア内はすべてのルータが同じLSDBを持つ前提で動いているため、途中で情報を削ると計算結果が食い違ってしまうからです。
| 種類 | 実行する場所 | IOS XRのコマンド | 対象 |
|---|---|---|---|
| エリア間集約 | ABR | area <ID> 配下のrange <プレフィックス> | エリア内経路 → Type 3 |
| 外部経路の集約 | ASBR | router ospf 直下のsummary-prefix <プレフィックス> | 再配布した経路 → Type 5 / Type 7 |
この記事では、7台の3エリア構成でエリア2の5つのループバックをABRで1本に、再配布した4つの外部経路をASBRで1本にまとめ、集約LSAのメトリックがどう決まるのか、構成要素が落ちるとどうなるのか、集約の副作用は何かを実機で確認します。
検証構成
スタブエリアの記事と同じ3エリア構成に、集約する素材を足しました。
| 項目 | 内容 |
|---|---|
| 集約するエリア内経路 | R11の10.2.0.1/32・10.2.0.2/32、R12の10.2.0.3/32・10.2.0.4/32、R13の10.2.0.5/32(すべてエリア2、passive enable) |
| 集約先(ABR) | R3・R4で10.2.0.0/24にまとめる |
| 集約する外部経路 | R1が再配布する192.168.16.0/24・17.0/24・18.0/24・19.0/24(Null0のスタティック) |
| 集約先(ASBR) | R1で192.168.16.0/22にまとめる |
| 集約しないもの | 192.168.1.0/24(外部経路)。集約したものとの違いを比べるために残す |
| 集約範囲の中の実体 | R1のLoopback4に192.168.16.1/32。集約範囲に実在する宛先として使う |
| 観測点 | R2(エリア外=集約後を受け取る側)とR13(エリア内=集約の影響を受けない側) |
R11の設定は次のようになっています。集約対象のループバックもOSPFのエリア2に入れています。
router ospf 1
router-id 11.11.11.11
area 2
interface Loopback0
passive enable
!
interface Loopback2
passive enable
!
interface Loopback3
passive enable
!
interface GigabitEthernet0/0/0/0
network point-to-point
!
interface GigabitEthernet0/0/0/1
network point-to-point
!
!
!集約前の状態(STEP 0)
まず集約していない状態です。R2(エリア0)から見ると、エリア2の5つの/32が個別のエリア間経路として並び、R1の外部経路も4つ個別に並んでいます。5つのコストが3・3・5・5・4とばらついている点を覚えておいてください。集約LSAのメトリックを決める材料になります。
RP/0/RP0/CPU0:R2#show route ospf
Mon Sep 7 22:00:06.098 UTC
O 1.1.1.1/32 [110/2] via 10.0.12.1, 00:03:33, GigabitEthernet0/0/0/0
O 3.3.3.3/32 [110/2] via 10.0.23.3, 00:04:20, GigabitEthernet0/0/0/1
O 4.4.4.4/32 [110/2] via 10.0.24.4, 00:04:11, GigabitEthernet0/0/0/2
O IA 10.1.11.0/24 [110/3] via 10.0.23.3, 00:04:05, GigabitEthernet0/0/0/1
O IA 10.1.12.0/24 [110/4] via 10.0.23.3, 00:03:39, GigabitEthernet0/0/0/1
O IA 10.2.0.1/32 [110/3] via 10.0.23.3, 00:04:05, GigabitEthernet0/0/0/1
O IA 10.2.0.2/32 [110/3] via 10.0.23.3, 00:04:05, GigabitEthernet0/0/0/1
O IA 10.2.0.3/32 [110/5] via 10.0.23.3, 00:03:38, GigabitEthernet0/0/0/1
O IA 10.2.0.4/32 [110/5] via 10.0.23.3, 00:03:38, GigabitEthernet0/0/0/1
O IA 10.2.0.5/32 [110/4] via 10.0.23.3, 00:03:39, GigabitEthernet0/0/0/1
O IA 11.11.11.11/32 [110/3] via 10.0.23.3, 00:04:05, GigabitEthernet0/0/0/1
O IA 12.12.12.12/32 [110/5] via 10.0.23.3, 00:03:38, GigabitEthernet0/0/0/1
O IA 13.13.13.13/32 [110/4] via 10.0.23.3, 00:03:39, GigabitEthernet0/0/0/1
O IA 172.16.3.0/24 [110/2] via 10.0.23.3, 00:04:20, GigabitEthernet0/0/0/1
O IA 172.16.4.0/24 [110/11] via 10.0.24.4, 00:04:11, GigabitEthernet0/0/0/2
O E2 192.168.1.0/24 [110/20] via 10.0.12.1, 00:03:33, GigabitEthernet0/0/0/0
O E2 192.168.16.0/24 [110/20] via 10.0.12.1, 00:03:33, GigabitEthernet0/0/0/0
O E2 192.168.17.0/24 [110/20] via 10.0.12.1, 00:03:33, GigabitEthernet0/0/0/0
O E2 192.168.18.0/24 [110/20] via 10.0.12.1, 00:03:33, GigabitEthernet0/0/0/0
O E2 192.168.19.0/24 [110/20] via 10.0.12.1, 00:03:33, GigabitEthernet0/0/0/0到達性も確認しておきます。10.2.0.1(エリア2のループバック)と192.168.16.1(R1のLoopback4)には届き、192.168.19.1(192.168.19.0/24の中だが実体がない)には届きません。
RP/0/RP0/CPU0:R2#ping 10.2.0.1 source 2.2.2.2
Mon Sep 7 21:59:23.400 UTC
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.2.0.1 timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 7/7/9 ms
RP/0/RP0/CPU0:R2#ping 192.168.16.1 source 2.2.2.2
Mon Sep 7 21:59:24.313 UTC
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.16.1 timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/4/7 ms
RP/0/RP0/CPU0:R2#ping 192.168.19.1 source 2.2.2.2
Mon Sep 7 21:59:25.296 UTC
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.19.1 timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)ABRで集約する(STEP 1)
エリア2に接続する2台のABR(R3・R4)で、10.2.0.0/24の範囲を設定します。
(R3・R4の2台とも)
router ospf 1
area 2
range 10.2.0.0/24R2から見ると5つの/32が消え、10.2.0.0/24の1本になりました。LSDBを見ると、R3が出した集約LSAのメトリックは4、R4は13です。
RP/0/RP0/CPU0:R2#show route ospf
Mon Sep 7 22:03:40.100 UTC
O 1.1.1.1/32 [110/2] via 10.0.12.1, 00:07:07, GigabitEthernet0/0/0/0
O 3.3.3.3/32 [110/2] via 10.0.23.3, 00:07:54, GigabitEthernet0/0/0/1
O 4.4.4.4/32 [110/2] via 10.0.24.4, 00:07:45, GigabitEthernet0/0/0/2
O IA 10.1.11.0/24 [110/3] via 10.0.23.3, 00:07:39, GigabitEthernet0/0/0/1
O IA 10.1.12.0/24 [110/4] via 10.0.23.3, 00:07:13, GigabitEthernet0/0/0/1
O IA 10.2.0.0/24 [110/5] via 10.0.23.3, 00:00:31, GigabitEthernet0/0/0/1
O IA 11.11.11.11/32 [110/3] via 10.0.23.3, 00:07:39, GigabitEthernet0/0/0/1
O IA 12.12.12.12/32 [110/5] via 10.0.23.3, 00:07:12, GigabitEthernet0/0/0/1
O IA 13.13.13.13/32 [110/4] via 10.0.23.3, 00:07:13, GigabitEthernet0/0/0/1
O IA 172.16.3.0/24 [110/2] via 10.0.23.3, 00:07:54, GigabitEthernet0/0/0/1
O IA 172.16.4.0/24 [110/11] via 10.0.24.4, 00:07:45, GigabitEthernet0/0/0/2
O E2 192.168.1.0/24 [110/20] via 10.0.12.1, 00:07:07, GigabitEthernet0/0/0/0
O E2 192.168.16.0/24 [110/20] via 10.0.12.1, 00:07:07, GigabitEthernet0/0/0/0
O E2 192.168.17.0/24 [110/20] via 10.0.12.1, 00:07:07, GigabitEthernet0/0/0/0
O E2 192.168.18.0/24 [110/20] via 10.0.12.1, 00:07:07, GigabitEthernet0/0/0/0
O E2 192.168.19.0/24 [110/20] via 10.0.12.1, 00:07:07, GigabitEthernet0/0/0/0
RP/0/RP0/CPU0:R2#show ospf database summary 10.2.0.0
Mon Sep 7 22:03:40.301 UTC
OSPF Router with ID (2.2.2.2) (Process ID 1)
Summary Net Link States (Area 0)
Routing Bit Set on this LSA
LS age: 33
Options: (No TOS-capability, DC)
LS Type: Summary Links (Network)
Link State ID: 10.2.0.0 (Summary Network Number)
Advertising Router: 3.3.3.3
LS Seq Number: 80000001
Checksum: 0xbc64
Length: 28
Network Mask: /24
TOS: 0 Metric: 4
LS age: 18このメトリックの決まり方には規格の変遷があります。R3から各構成要素までのコストは10.2.0.1が2、10.2.0.2が2、10.2.0.5が3、10.2.0.3と10.2.0.4が4で、集約LSAのメトリック4はその最大値です。
| 規格 | 規定 |
|---|---|
| RFC 2328(現行) | Section 12.4.3「cost equal to the largest cost of any of the component networks」=最大 |
| RFC 1583(旧版) | Section 12.4.3「cost equal to the smallest cost of any of the component networks」=最小 |
| XRd 26.1.1の実測 | 4=最大。RFC 2328に従っている |
集約したABRには、Null0への破棄経路ができます。集約範囲に含まれるが実際には存在しない宛先へのパケットを、ここで捨ててループを防ぐためのものです。アドミニストレーティブディスタンスは254で、この動作はRFCの規定ではなく実装によるものです。
RP/0/RP0/CPU0:R3#show route | include Null0
Mon Sep 7 22:03:43.840 UTC
O IA 10.2.0.0/24 [254/0] via 0.0.0.0, 00:00:35, Null0このときバックボーン側(R2 - R3間)に流れたLS Updateが、集約の動作をそのまま示しています。添付のキャプチャーのNo.4が集約LSA(メトリック4)の出現、No.5が個別の5本をまとめて取り消すLS Updateです。取り消しはLS Age 3600(MaxAge)とMetric: 16777215(LSInfinity)の組み合わせで行われます。
Open Shortest Path First
OSPF Header
Version: 2
Message Type: LS Update (4)
Packet Length: 56
Source OSPF Router: 3.3.3.3
Area ID: 0.0.0.0 (Backbone)
Checksum: 0x8a29 [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 3 (Summary-LSA (IP network)), len 28
.000 0000 0000 0001 = LS Age (seconds): 1
0... .... .... .... = Do Not Age Flag: 0
Options: 0x22, (DC) Demand Circuits, (E) External Routing
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
.... ..1. = (E) External Routing: Capable
.... ...0 = (MT) Multi-Topology Routing: No
LS Type: Summary-LSA (IP network) (3)
Link State ID: 10.2.0.0
Advertising Router: 3.3.3.3
Sequence Number: 0x80000001
Checksum: 0xbc64
Length: 28
Netmask: 255.255.255.0
TOS: 0
Metric: 4取り消し側は5つのLSAが1パケットに入っています。tsharkの一覧で見ると次のとおりです。
4 13.044742 10.0.23.3 → 224.0.0.5 OSPF 90 LS Update
5 13.149976 10.0.23.3 → 224.0.0.5 OSPF 202 LS Update
10 27.555663 10.0.23.2 → 224.0.0.5 OSPF 90 LS Update
11 27.668405 10.0.23.2 → 224.0.0.5 OSPF 202 LS Update構成要素が1つ落ちたら(STEP 2)
集約の効果が一番はっきり出るのがここです。R11のLoopback2(10.2.0.1/32)を落とします。
(R11)
interface Loopback2
shutdownR2から見た10.2.0.0/24はコストもLSAも一切変わりません。エリアの外へは「何も起きていない」ように見えます。ただし10.2.0.1へのpingは通らなくなり、10.2.0.2は通ります。安定と引き換えに、到達性の変化も隠れるということです。
RP/0/RP0/CPU0:R2#show route 10.2.0.0/24
Mon Sep 7 22:07:35.738 UTC
Routing entry for 10.2.0.0/24
Known via "ospf 1", distance 110, metric 5, type inter area
Installed Sep 7 22:03:08.925 for 00:04:26
Routing Descriptor Blocks
10.0.23.3, from 3.3.3.3, via GigabitEthernet0/0/0/1
Route metric is 5
No advertising protos.
RP/0/RP0/CPU0:R2#show ospf database summary 10.2.0.0
Mon Sep 7 22:07:35.900 UTC
OSPF Router with ID (2.2.2.2) (Process ID 1)
Summary Net Link States (Area 0)
Routing Bit Set on this LSA
LS age: 268
Options: (No TOS-capability, DC)
LS Type: Summary Links (Network)
Link State ID: 10.2.0.0 (Summary Network Number)
Advertising Router: 3.3.3.3 LS age: 267
Options: (No TOS-capability, DC)
LS Type: Summary Links (Network)
Link State ID: 10.2.0.0 (Summary Network Number)
Advertising Router: 2.2.2.2
LS Seq Number: 80000001
Checksum: 0xe43f
Length: 28
Network Mask: /24
TOS: 0 Metric: 5
RP/0/RP0/CPU0:R2#ping 10.2.0.1 source 2.2.2.2
Mon Sep 7 22:07:36.641 UTC
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.2.0.1 timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
RP/0/RP0/CPU0:R2#ping 10.2.0.2 source 2.2.2.2
Mon Sep 7 22:07:47.613 UTC
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.2.0.2 timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 8/8/10 ms一方、エリアの中は素直に反応します。同じエリア2にいるR13では、個別経路がすぐに消えます。集約はあくまで「エリアの外へ出すときの話」です。
RP/0/RP0/CPU0:R13#show route 10.2.0.1/32
Mon Sep 7 22:07:51.571 UTC
% Network not in table構成要素が全部落ちたら(STEP 3)
残りの4つも落とすと、集約LSA自体が消えます。
(R11のLoopback3、R12のLoopback2・Loopback3、R13のLoopback2)
interface LoopbackN
shutdownRP/0/RP0/CPU0:R2#show route 10.2.0.0/24
Mon Sep 7 22:12:03.931 UTC
% Network not in table
RP/0/RP0/CPU0:R2#show ospf database summary 10.2.0.0
Mon Sep 7 22:12:04.217 UTC
OSPF Router with ID (2.2.2.2) (Process ID 1)ABRのNull0の破棄経路も同時に消えます。RFC 2328のSection 12.4.3は「広告していた宛先が到達不能になったらMaxAgeにしてフラッディングし直す」と定めており、構成要素が1つでも生きていれば集約LSAは出続け、全部消えたときだけ取り消されるという動作になります。
RP/0/RP0/CPU0:R3#show route | include Null0
Mon Sep 7 22:12:08.043 UTC集約せずに隠す(STEP 4)
rangeにはnot-advertiseを付けられます。集約LSAも出さず、個別のLSAも出さない、つまりそのエリアの外から完全に隠す動作です。まず構成要素を復旧してから設定します。
(R11・R12・R13のループバックを no shutdown で復旧してから)
(R3・R4の2台とも)
router ospf 1
area 2
range 10.2.0.0/24 not-advertiseRP/0/RP0/CPU0:R2#show route 10.2.0.0/24
Mon Sep 7 22:16:44.339 UTC
% Network not in table
RP/0/RP0/CPU0:R2#show route 10.2.0.1/32
Mon Sep 7 22:16:44.515 UTC
% Network not in table
RP/0/RP0/CPU0:R2#ping 10.2.0.1 source 2.2.2.2
Mon Sep 7 22:16:44.696 UTC
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.2.0.1 timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)エリアの中では変わらず到達できます。RFC 2328のSection 12.4.3も「DoNotAdvertiseのときはType 3を抑止し、構成ネットワークは他エリアから隠される」と規定しています。
RP/0/RP0/CPU0:R13#show route 10.2.0.1/32
Mon Sep 7 22:16:58.253 UTC
Routing entry for 10.2.0.1/32
Known via "ospf 1", distance 110, metric 2, type intra area
Installed Sep 7 22:15:33.422 for 00:01:24
Routing Descriptor Blocks
10.1.11.11, from 11.11.11.11, via GigabitEthernet0/0/0/0
Route metric is 2
No advertising protos. ASBRで外部経路を集約する(STEP 5)
not-advertiseを通常のrangeに戻したうえで、今度はASBR側です。R1が再配布している4つの/24を192.168.16.0/22にまとめます。
(R3・R4は range を通常に戻す)
router ospf 1
area 2
range 10.2.0.0/24
(R1)
router ospf 1
summary-prefix 192.168.16.0/22R2の外部経路が4本から1本になりました。集約していない192.168.1.0/24はそのまま個別に残っています。
RP/0/RP0/CPU0:R2#show route ospf
Mon Sep 7 22:20:53.996 UTC
O 1.1.1.1/32 [110/2] via 10.0.12.1, 00:24:21, GigabitEthernet0/0/0/0
O 3.3.3.3/32 [110/2] via 10.0.23.3, 00:25:08, GigabitEthernet0/0/0/1
O 4.4.4.4/32 [110/2] via 10.0.24.4, 00:24:59, GigabitEthernet0/0/0/2
O IA 10.1.11.0/24 [110/3] via 10.0.23.3, 00:24:53, GigabitEthernet0/0/0/1
O IA 10.1.12.0/24 [110/4] via 10.0.23.3, 00:24:27, GigabitEthernet0/0/0/1
O IA 10.2.0.0/24 [110/5] via 10.0.23.3, 00:00:42, GigabitEthernet0/0/0/1
O IA 11.11.11.11/32 [110/3] via 10.0.23.3, 00:24:53, GigabitEthernet0/0/0/1
O IA 12.12.12.12/32 [110/5] via 10.0.23.3, 00:24:26, GigabitEthernet0/0/0/1
O IA 13.13.13.13/32 [110/4] via 10.0.23.3, 00:24:27, GigabitEthernet0/0/0/1
O IA 172.16.3.0/24 [110/2] via 10.0.23.3, 00:25:08, GigabitEthernet0/0/0/1
O IA 172.16.4.0/24 [110/11] via 10.0.24.4, 00:24:59, GigabitEthernet0/0/0/2
O E2 192.168.1.0/24 [110/20] via 10.0.12.1, 00:24:21, GigabitEthernet0/0/0/0
O E2 192.168.16.0/22 [110/20] via 10.0.12.1, 00:00:13, GigabitEthernet0/0/0/0
RP/0/RP0/CPU0:R2#show ospf database external 192.168.16.0
Mon Sep 7 22:20:54.198 UTCASBRにもNull0の破棄経路ができます。Sで始まるのが再配布元のスタティック、O E2 ... [254/0] ... Null0が集約による破棄経路です。
RP/0/RP0/CPU0:R1#show route | include Null0
Mon Sep 7 22:20:58.112 UTC
S 192.168.1.0/24 is directly connected, 00:24:46, Null0
O E2 192.168.16.0/22 [254/0] via 0.0.0.0, 00:00:17, Null0
S 192.168.16.0/24 is directly connected, 00:24:46, Null0
S 192.168.17.0/24 is directly connected, 00:24:46, Null0
S 192.168.18.0/24 is directly connected, 00:24:46, Null0
S 192.168.19.0/24 is directly connected, 00:24:46, Null0集約の副作用(ブラックホール)
集約すると、集約範囲の中にあるが実際には存在しない宛先へのパケットも、集約したルータまで引き寄せられます。そしてそこでNull0に捨てられます。R13から2つの宛先へpingを打つと違いがはっきり出ます。
192.168.16.1… R1のLoopback4として実在する → 届く192.168.19.1…192.168.19.0/24の中だが実体がない → 届かない(R1のNull0で落ちる)
RP/0/RP0/CPU0:R13#ping 192.168.16.1 source 13.13.13.13
Mon Sep 7 22:25:40.945 UTC
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.16.1 timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 13/14/19 ms
RP/0/RP0/CPU0:R13#ping 192.168.19.1 source 13.13.13.13
Mon Sep 7 22:25:41.993 UTC
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.19.1 timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
RP/0/RP0/CPU0:R13#traceroute 192.168.19.1 source 13.13.13.13 maxttl 5
Mon Sep 7 22:25:53.044 UTC
Type escape sequence to abort.
Tracing the route to 192.168.19.1
1 10.1.11.11 5 msec 62 msec 6 msec
2 172.16.3.3 8 msec 7 msec 7 msec
3 10.0.23.2 10 msec 10 msec 10 msec
4 * * *
5 * * * tracerouteは10.0.23.2(R2)まで進んだあと無応答になります。R1まで届いてNull0で捨てられているためです(maxttl 5で打ち切っています)。集約前はそもそも192.168.19.0/24が個別に広告されていたので同じ結果ですが、集約したことで「範囲内の未使用アドレス全部」がこの動作になる点が違います。
復旧(STEP 6)
ABRのrangeとASBRのsummary-prefixを外すと、元の個別経路に戻ります。
(R3・R4)
router ospf 1
area 2
no range 10.2.0.0/24
(R1)
router ospf 1
no summary-prefix 192.168.16.0/22RP/0/RP0/CPU0:R2#show route ospf
Mon Sep 7 22:27:30.191 UTC
O 1.1.1.1/32 [110/2] via 10.0.12.1, 00:30:57, GigabitEthernet0/0/0/0
O 3.3.3.3/32 [110/2] via 10.0.23.3, 00:31:44, GigabitEthernet0/0/0/1
O 4.4.4.4/32 [110/2] via 10.0.24.4, 00:31:35, GigabitEthernet0/0/0/2
O IA 10.1.11.0/24 [110/3] via 10.0.23.3, 00:31:29, GigabitEthernet0/0/0/1
O IA 10.1.12.0/24 [110/4] via 10.0.23.3, 00:31:03, GigabitEthernet0/0/0/1
O IA 10.2.0.1/32 [110/3] via 10.0.23.3, 00:00:52, GigabitEthernet0/0/0/1
O IA 10.2.0.2/32 [110/3] via 10.0.23.3, 00:00:52, GigabitEthernet0/0/0/1
O IA 10.2.0.3/32 [110/5] via 10.0.23.3, 00:00:52, GigabitEthernet0/0/0/1
O IA 10.2.0.4/32 [110/5] via 10.0.23.3, 00:00:52, GigabitEthernet0/0/0/1
O IA 10.2.0.5/32 [110/4] via 10.0.23.3, 00:00:52, GigabitEthernet0/0/0/1
O IA 11.11.11.11/32 [110/3] via 10.0.23.3, 00:31:29, GigabitEthernet0/0/0/1
O IA 12.12.12.12/32 [110/5] via 10.0.23.3, 00:31:02, GigabitEthernet0/0/0/1
O IA 13.13.13.13/32 [110/4] via 10.0.23.3, 00:31:03, GigabitEthernet0/0/0/1
O IA 172.16.3.0/24 [110/2] via 10.0.23.3, 00:31:44, GigabitEthernet0/0/0/1
O IA 172.16.4.0/24 [110/11] via 10.0.24.4, 00:31:35, GigabitEthernet0/0/0/2
O E2 192.168.1.0/24 [110/20] via 10.0.12.1, 00:30:57, GigabitEthernet0/0/0/0
O E2 192.168.16.0/24 [110/20] via 10.0.12.1, 00:00:21, GigabitEthernet0/0/0/0
O E2 192.168.17.0/24 [110/20] via 10.0.12.1, 00:00:21, GigabitEthernet0/0/0/0
O E2 192.168.18.0/24 [110/20] via 10.0.12.1, 00:00:21, GigabitEthernet0/0/0/0ルーティングテーブルはどれだけ小さくなるか
経路集約の効果としてLSDBのLSAが減ることがよく挙げられますが、運用で効いてくるのは各ルータのルーティングテーブル(RIB)と転送テーブル(FIB)のエントリ数が減ることです。LSAの数はOSPFプロセスのメモリとSPF計算の話ですが、経路数は転送ハードウェアの容量(FIBやTCAM)そのものと、経路が変わったときに書き換える量に直結します。
R2(エリア0)でshow routeの合計を数えると次のとおりです。
| 状態 | show routeの合計 | うちOSPF経路 | エリア2の/32 | 外部の/24 |
|---|---|---|---|---|
| 集約なし(STEP 0) | 27 | 20 | 5 | 5 |
| ABRで集約(STEP 1) | 23 | 16 | 1(集約) | 5 |
not-advertise(STEP 4) | 22 | 15 | 0 | 5 |
| ABR+ASBRで集約(STEP 5) | 20 | 13 | 1(集約) | 2 |
| 復旧(STEP 6) | 27 | 20 | 5 | 5 |
5本と4本を1本ずつにまとめただけで、ルーティングテーブルは27エントリから20エントリへ、26%減りました。実際のネットワークではエリアごとに数百から数千のプレフィックスを持つことも珍しくなく、それがそのまま全台のFIBを消費します。集約はここを直接削ります。
削れるのは集約したルータだけではありません。集約されたLSAを受け取る側のルータでも同じだけ減ります。
| ルータ | 位置 | 集約なし(STEP 0) | ABR+ASBRで集約(STEP 5) |
|---|---|---|---|
| R2 | エリア0(ABRの隣) | 27 | 20 |
| R1 | エリア1(ASBR自身) | 27 | 24 |
| R13 | エリア2の内部 | 26 | 23 |
R13はエリア2の中にいるので10.2.0.x/32は個別に持ったままですが、外部経路を集約した分は効いて3エントリ減っています。集約は「その先にいるルータすべてのテーブル」を小さくします。
副次的な効果として、エリア内でプレフィックスが上下してもエリア外のLSDBが変わらなくなるため(STEP 2)、エリア外でSPFが走らなくなるという利点もあります。
設計上の注意
- 集約できるアドレス設計が前提。 エリアごとに連続したアドレスブロックを割り当てておかないと1本にまとまりません。OSPFはABRとASBRでしか集約できないので、後から詰めるのは大変です
- メトリックは構成要素の最大になる(RFC 2328)。一番遠い構成要素のコストが代表値になるため、集約するとエリア外から見た距離が実際より遠くなることがあります
- 範囲内の未使用アドレスはブラックホールになる。 集約したルータのNull0で落ちます。これはループ防止として意図された動作ですが、トラブルシュート時に「経路はあるのに届かない」と見えるので、集約の範囲は意識しておく必要があります
not-advertiseはフィルタとして使える。 特定の範囲だけをエリア外へ出したくないときに使いますが、その範囲への到達性も失われます- スタブ/NSSAとは目的が違う。 スタブエリアやNSSAは「入れない」仕組み、集約は「まとめる」仕組みです。組み合わせて使えます
IOS XRの設定コマンド
| コマンド | 入れる場所 | 意味 |
|---|---|---|
range <プレフィックス> | ABRのarea <ID>配下 | そのエリアのエリア内経路をまとめてType 3を1本にする |
range <プレフィックス> not-advertise | ABRのarea <ID>配下 | まとめずに隠す(Type 3を出さない) |
summary-prefix <プレフィックス> | ASBRのrouter ospf直下 | 再配布した外部経路をまとめてType 5を1本にする |
(ABR)
router ospf 1
area 2
range 10.2.0.0/24
!
!
(ASBR)
router ospf 1
summary-prefix 192.168.16.0/22
!rangeはそのエリアに接続するABR全台に入れます。1台でも入れ忘れると、そのABR経由では個別のType 3が流れ続け、集約した意味がなくなります。IOS XEではarea <ID> range <アドレス> <マスク>とsummary-address <アドレス> <マスク>になります。設定例は別記事で解説します。
検証Configおよびshow結果
各STEPで7台すべてから、次の3種類をルータごとに分けて取得しています。検証Configはこの..._run.txtです(最終状態はSTEP 6のもの)。
| ファイル | 内容 |
|---|---|
..._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 summary / show ospf database external / show ospf border-routers / show ospf routes / show route 10.2.0.0/24 / show route 10.2.0.1/32 / show route 192.168.16.0/22 / show route 192.168.16.0/24 / show route 192.168.1.0/24 / show ospf trace events |
..._log.txt | そのSTEPの範囲だけに絞ったshow logging。各STEPの開始時にlogmsgでマーカーを入れ、その時刻をshow logging startに指定して取得したもの |
..._run.txt | そのSTEP時点のshow running-config(=そのSTEPの検証Config) |
最終状態は集約をすべて外した状態です。
STEP 0:集約なし — エリア2の/32が5本、外部経路が4本そのまま流れている
| ルータ | 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ではR2からping、R3からNull0の確認も取得しています。
STEP 1:R3・R4にarea 2 range 10.2.0.0/24 — 5本が1本に。集約LSAのメトリックは構成要素の最大(4)
| ルータ | 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ではR2 の show route ospf と show ospf database summary、R3 の Null0の確認、R2 の pingも取得しています。
STEP 2:R11のLoopback2をshutdown — 集約LSAは変化しないが、その宛先には届かなくなる
| ルータ | 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ではR2 の show route / database / ping、R13 の エリア内から見た個別経路も取得しています。
STEP 3:構成要素5つをすべてshutdown — 集約LSAとNull0の破棄経路が消える
| ルータ | 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ではR2 の show route / database、R3 の Null0の確認も取得しています。
STEP 4:構成要素を復旧しrange ... not-advertise — 集約も個別も出さず、エリア外から隠す
| ルータ | 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ではR2 の show route、R13 の エリア内から見た個別経路も取得しています。
STEP 5:rangeを戻し、R1にsummary-prefix 192.168.16.0/22 — 外部経路が4本から1本に
| ルータ | 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ではR2 の show route ospf と show ospf database external、R1 の Null0の確認、R13 の ping / tracerouteも取得しています。
STEP 6:rangeとsummary-prefixを削除(最終状態) — 個別経路に復帰
| ルータ | 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ではR2 の show route ospf と pingも取得しています。
キャプチャーはバックボーン側(R2 - R3間)で、STEP 1の集約を挟んで取得しました(フィルタはip proto 89)。
参考
| RFC | タイトル | 概要 |
|---|---|---|
| RFC 2328 | OSPF Version 2 | エリアアドレス範囲の定義(Section 3.5)。範囲に対するsummary-LSAの生成、コストは構成要素の最大、DoNotAdvertise、到達不能時のMaxAgeフラッシュ(Section 12.4.3)。 |
| RFC 1583 | OSPF Version 2(旧版) | 同じSection 12.4.3でコストは構成要素の最小と規定していた。現行のRFC 2328で最大に変わっている。 |
関連記事
- OSPFとは
- OSPF ルータID
- OSPFパケットの種類とヘッダーフォーマット
- OSPFの状態遷移
- OSPF Optionsフィールド
- DRとBDR
- OSPF ネットワークタイプ
- OSPFの外部経路(スタティックの再配布)
- OSPFのマルチエリアとABR
- OSPFのスタブエリアとトータリースタブエリア
- OSPFのNSSAとトータリーNSSA
- OSPFの経路集約
- OSPFのLSAと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)