3-10 経路の再配送と route-map 制御
OSPF と EIGRP の境界 ASBR で双方向の再配送を扱う。seed metric、外部経路 O E1 / O E2 の違い、route-map + tag によるループ防止を、CML2.9 IOS-XE 17.x で実機検証する。
1. 前節の振り返りと本節の内容
3-6 から 3-9 まで、BGP (Border Gateway Protocol) を題材に AS (Autonomous System) 間の経路交換とポリシーを扱ってきました。3-6 でパスベクトル型 (Path Vector) のベストパス選定、3-7 で Route Reflector、3-8 で community 属性、3-9 で Confederation と、いずれも「AS という境界をまたいで、どの経路をどう伝えるか」という観点が共通していました。BGP のポリシーは AS 間 の経路制御です。
本節の 再配送 (Route Redistribution) は、これと対になる プロトコル間 の経路制御です。OSPF (Open Shortest Path First) と EIGRP (Enhanced Interior Gateway Routing Protocol) のように、別々のルーティングプロトコルが動いている 2 つのドメインがあるとき、片方のドメインの経路をもう片方へ注入する操作を再配送と呼びます。BGP がポリシーで「AS をまたぐ経路の見せ方」を制御したのに対し、再配送は「プロトコルをまたぐ経路の見せ方」を制御します。
OSPF → EIGRP の一方向再配送、seed metric の必須性、AD (Administrative Distance) 170 = D EX の実物観察は、3-5 OSPF §13 で一度扱いました。本節はこれらを焼き直さず、その先を主役に据えます。具体的には、EIGRP → OSPF 側の外部経路 (O E2 / O E1)、双方向 (相互) 再配送が生む準最適経路とループ、そして route-map + tag によるループ防止が本節の中心です。
実機検証では、Cisco IOS-XE 17.x が教科書通りに動く部分と、教科書記述の前提を素直には満たさない部分の両方を別物として並べて記録します。特に、OSPF 再配送の subnets キーワードが IOS-XE 17.x ではデフォルトで効く挙動、単一 ASBR (Autonomous System Boundary Router) では逆流が起きず ASBR が 2 台になって初めて逆流が現実化する条件を、§12 の落とし穴に正直に記録します。
2. 再配送とは — ドメイン境界での経路注入
再配送は、あるルーティングプロトコルが学習した経路を、別のルーティングプロトコルに注入する操作です。RIP / EIGRP / OSPF / BGP は、それぞれ独立したルーティングプロセスとして RIB (Routing Information Base) に経路を登録します。あるプロセスが学習した経路は、そのプロセスの中だけで広告され、別プロセスには自動では渡りません。3-5 OSPF と 3-4 EIGRP を同じルータ上で動かしても、OSPF が学習した経路は EIGRP の隣接には届かず、その逆も同様です。
このプロセス境界をまたいで経路を渡すのが再配送で、外部の経路情報を自ドメインへ注入するルータを ASBR (Autonomous System Boundary Router) と呼びます。本節のように 2 つのルーティングプロトコルに同時に所属して片方の経路をもう片方へ注入するルータが典型ですが、静的経路や connected を OSPF へ再配送するルータも ASBR になります (ASBR の本質は「外部経路を自ドメインへ広告すること」で、必ずしも 2 つ以上の動的ルーティングプロトコルを動かす必要はありません)。ASBR が注入する経路は「外部経路 (External Route)」と呼ばれ、OSPF では Type 5 (AS-External LSA)、EIGRP では D EX でマークされる経路に該当します。
再配送が必要になる場面は、主に 3 つに整理できます。第一に、IGP (Interior Gateway Protocol) の移行期で、RIP から OSPF へ、EIGRP から OSPF へと段階的に切り替える間、新旧プロトコルを境界で相互注入して到達性を保ちます。第二に、企業統合 / 合併で、別々のプロトコルを使う 2 社のネットワークを境界ルータで接続します。第三に、マルチベンダ境界で、EIGRP (Cisco 独自系譜) を使う区画と OSPF (標準プロトコル) を使う区画が混在する場合です。
BGP のポリシー (3-6〜3-9) が AS 間の経路を community や AS_PATH で制御したのに対し、再配送はプロトコル間の経路を seed metric / metric-type / route-map / tag で制御します。制御の語彙は異なるものの、「境界で経路の見せ方を意図的に操作する」という発想は共通です。本節では、この操作の中で最も事故が起きやすい 相互 (双方向) 再配送 を実機で組み、ループや準最適経路がどう発生し、どう止めるかを観察します。
3. 本ラボのトポロジ — OSPF area 0 と EIGRP AS100 の境界
検証ラボは、3-5 OSPF の R1/R2/R3 三角構成を流用しつつ、R3 を OSPF と EIGRP の両ドメインに所属させた ASBR にします。OSPF area 0 ドメイン (R1 / R2 / R3) と EIGRP AS100 ドメイン (R3 / R4) の境界が R3 に一点集中する単純な構成にして、再配送の因果を追いやすくします。
各ルータの役割は以下のとおりです。
| ルータ | プロトコル | Router-ID | 広告するサービス網 | 役割 |
|---|---|---|---|---|
| R1 | OSPF 1 area 0 | 1.1.1.1 | Lo10 = 10.10.1.0/24 | OSPF internal。EIGRP は知らない |
| R2 | OSPF 1 area 0 | 2.2.2.2 | Lo20 = 10.20.2.0/24 | OSPF internal。EIGRP は知らない |
| R3 | OSPF 1 + EIGRP 100 | 3.3.3.3 | (中継のみ) | ASBR。相互再配送の主役 |
| R4 | EIGRP 100 | 4.4.4.4 | Lo40 = 10.40.4.0/24 | EIGRP internal。OSPF は知らない |
直結リンクはすべて /30 で、R1↔R2 (10.0.12.0/30) / R1↔R3 (10.0.13.0/30) / R2↔R3 (10.0.23.0/30) が OSPF area 0 区間、R3↔R4 (10.0.34.0/30) が EIGRP AS100 区間です。R3 の Gi4 だけが EIGRP 側に向き、それ以外は OSPF 側に向いています。
再配送を一切行わない baseline では、各ドメインの経路は境界で止まります。R1 (OSPF internal) の RIB には OSPF 経路だけが並び、EIGRP 側の 10.40.4.0/24 は学習されません。
show ip route
1.0.0.0/32 is subnetted, 1 subnets
C 1.1.1.1 is directly connected, Loopback0
10.0.0.0/8 is variably subnetted, 8 subnets, 3 masks
C 10.0.12.0/30 is directly connected, GigabitEthernet2
L 10.0.12.1/32 is directly connected, GigabitEthernet2
C 10.0.13.0/30 is directly connected, GigabitEthernet3
L 10.0.13.1/32 is directly connected, GigabitEthernet3
O 10.0.23.0/30 [110/2] via 10.0.13.2, 00:08:35, GigabitEthernet3
[110/2] via 10.0.12.2, 00:08:17, GigabitEthernet2
C 10.10.1.0/24 is directly connected, Loopback10
L 10.10.1.1/32 is directly connected, Loopback10
O 10.20.2.1/32 [110/2] via 10.0.12.2, 00:08:21, GigabitEthernet2
R1#show ip route 10.40.4.0
% Subnet not in table
R1#逆に R4 (EIGRP internal) の RIB には EIGRP 経路だけが並び、OSPF 側の 10.10.1.0/24 / 10.20.2.0/24 は % Subnet not in table で返ります。
show ip route
4.0.0.0/32 is subnetted, 1 subnets
C 4.4.4.4 is directly connected, Loopback0
10.0.0.0/8 is variably subnetted, 4 subnets, 3 masks
C 10.0.34.0/30 is directly connected, GigabitEthernet2
L 10.0.34.2/32 is directly connected, GigabitEthernet2
C 10.40.4.0/24 is directly connected, Loopback40
L 10.40.4.1/32 is directly connected, Loopback40
R4#show ip route 10.10.1.0
% Subnet not in table
R4#show ip route 10.20.2.0
% Subnet not in table
R4#ドメイン間の到達性が境界で途切れているこの状態が、再配送を入れる前の出発点です。以降の節で、R3 に再配送を段階的に投入して、経路がどう注入されるかを観察します。
4. seed metric — 再配送のデフォルト挙動のプロトコル差
再配送で最初に直面する罠が、EIGRP は seed metric を明示しないと経路を捨てるという挙動です。seed metric は、再配送で持ち込んだ経路に EIGRP が割り当てる初期メトリック (帯域 / 遅延 / 信頼性 / 負荷 / MTU の 5 要素) で、これが指定されないと EIGRP はメトリックを infinity 扱いにして経路を topology table に乗せません。3-5 §13 で一度触れたとおりですが、本節では「乗らない」「乗る」を実機で対比します。
R3 で redistribute ospf 1 を seed metric なしで EIGRP に投入した直後、R4 では経路が学習されません。OSPF 由来の経路が EIGRP topology table に存在しないことが確認できます。
R4#show ip route 10.10.1.0
% Subnet not in table
R4#show ip eigrp topology
EIGRP-IPv4 Topology Table for AS(100)/ID(10.40.4.1)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
r - reply Status, s - sia Status
P 10.0.34.0/30, 1 successors, FD is 2816
via Connected, GigabitEthernet2
P 10.40.4.0/24, 1 successors, FD is 128256
via Connected, Loopback40
R4#R3 で redistribute ospf 1 metric 10000 100 255 1 1500 と seed metric を明示して再投入すると、R4 に OSPF 由来の経路が D EX (EIGRP external) として現れます。seed metric の有無で経路の出現が決まる挙動が、この 2 つの出力の差として読み取れます。
show ip route
4.0.0.0/32 is subnetted, 1 subnets
C 4.4.4.4 is directly connected, Loopback0
10.0.0.0/8 is variably subnetted, 9 subnets, 3 masks
D EX 10.0.12.0/30 [170/281856] via 10.0.34.1, 00:00:43, GigabitEthernet2
D EX 10.0.13.0/30 [170/281856] via 10.0.34.1, 00:00:43, GigabitEthernet2
D EX 10.0.23.0/30 [170/281856] via 10.0.34.1, 00:00:43, GigabitEthernet2
C 10.0.34.0/30 is directly connected, GigabitEthernet2
L 10.0.34.2/32 is directly connected, GigabitEthernet2
D EX 10.10.1.1/32 [170/281856] via 10.0.34.1, 00:00:43, GigabitEthernet2
D EX 10.20.2.1/32 [170/281856] via 10.0.34.1, 00:00:43, GigabitEthernet2
C 10.40.4.0/24 is directly connected, Loopback40
L 10.40.4.1/32 is directly connected, Loopback40
R4#ここで注入された OSPF 由来の経路が 10.10.1.1/32 / 10.20.2.1/32 と /32 (ホスト経路) である点が、3-5 §13 で扱った Cisco OSPF の Loopback デフォルト動作の表れです。R1 の Lo10 (10.10.1.0/24) / R2 の Lo20 (10.20.2.0/24) は OSPF が /32 で広告するため、それを学習した R3 が EIGRP へ再配送すると /32 のまま注入されます。この点は §12 の落とし穴で改めて整理します。
OSPF 側は事情が異なります。EIGRP → OSPF の再配送では seed metric が省略でき、redistribute eigrp 100 だけで経路が O E2 / metric 20 で乗ります (§6 で詳述)。EIGRP は seed metric 必須、OSPF は省略可という、プロトコルごとの「再配送のデフォルト挙動」の違いが、再配送設定でまず押さえるべき非対称性です。
5. OSPF→EIGRP 再配送と AD 170
OSPF → EIGRP の再配送経路が EIGRP external (D EX) として AD 170 で RIB に乗ることは、3-5 §13 で実物を観察済みです。本節では深掘りせず、AD 値とメトリックの確認に留めます。§4 の RIB に現れた D EX 10.10.1.1/32 [170/281856] の角括弧 [170/281856] が、AD 170 (EIGRP external) と composite metric 281856 を表します。
composite metric 281856 は、§4 で投入した seed metric から算出されます。seed metric の帯域 10000 Kbit から scaled bandwidth が 10^7 / 10000 = 1000、delay フィールド 100 (10 マイクロ秒単位) が R3 ingress で 1000 マイクロ秒、R3↔R4 の GigabitEthernet を 1 ホップ越えて R4 では 1010 マイクロ秒となり、(1000 + 1010/10) × 256 = 1101 × 256 = 281856 です。EIGRP topology table を見ると、この composite metric の内訳 (281856/281600) が確認できます。括弧内の 2 番目の値 281600 は R3 が広告する advertised distance で、GigE 1 ホップ手前の (1000 + 1000/10) × 256 = 1100 × 256 = 281600 に一致します。
R4#show ip eigrp topology
EIGRP-IPv4 Topology Table for AS(100)/ID(10.40.4.1)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
r - reply Status, s - sia Status
P 10.0.34.0/30, 1 successors, FD is 2816
via Connected, GigabitEthernet2
P 10.40.4.0/24, 1 successors, FD is 128256
via Connected, Loopback40
P 10.10.1.1/32, 1 successors, FD is 281856
via 10.0.34.1 (281856/281600), GigabitEthernet2
P 10.0.13.0/30, 1 successors, FD is 281856
via 10.0.34.1 (281856/281600), GigabitEthernet2
P 10.20.2.1/32, 1 successors, FD is 281856
via 10.0.34.1 (281856/281600), GigabitEthernet2
P 10.0.23.0/30, 1 successors, FD is 281856
via 10.0.34.1 (281856/281600), GigabitEthernet2
P 10.0.12.0/30, 1 successors, FD is 281856
via 10.0.34.1 (281856/281600), GigabitEthernet2
R4#AD 170 (EIGRP external) は、AD 90 (EIGRP internal) と大きく離れています。3-4 §10 で触れたとおり、EIGRP は「自前の AS 内で計算した経路 (internal、AD 90) は信用するが、外部から再配送で持ち込まれた経路 (external、AD 170) は疑う」という設計で、再配送境界での経路を internal より優先順位を下げます。AD 170 の詳しい意味と 3-4 / 3-5 での宿題回収は 3-5 §13 を参照してください。本節の主役は、ここから先の EIGRP → OSPF 側 (§6) と相互再配送 (§7-8) です。
6. EIGRP→OSPF 再配送 — O E2 / O E1 / subnets
EIGRP → OSPF の再配送は、3-5 OSPF が扱わなかった逆方向です。OSPF に注入された外部経路は、デフォルトで External Type 2 (O E2) としてマークされ、metric-type 1 を指定すると External Type 1 (O E1) に変わります。両者はメトリックの計算方法が決定的に異なります。
R3 で redistribute eigrp 100 を OSPF に投入すると、R1 / R2 に EIGRP 由来の 10.40.4.0/24 が O E2 [110/20] で現れます。R1 の詳細表示と OSPF 経路一覧は以下のとおりです。
R1#show ip route 10.40.4.0
Routing entry for 10.40.4.0/24
Known via "ospf 1", distance 110, metric 20, type extern 2, forward metric 1
Last update from 10.0.13.2 on GigabitEthernet3, 00:00:56 ago
Routing Descriptor Blocks:
* 10.0.13.2, from 3.3.3.3, 00:00:56 ago, via GigabitEthernet3
Route metric is 20, traffic share count is 1
R1#show ip route ospf
10.0.0.0/8 is variably subnetted, 10 subnets, 3 masks
O 10.0.23.0/30 [110/2] via 10.0.13.2, 00:13:35, GigabitEthernet3
[110/2] via 10.0.12.2, 00:13:17, GigabitEthernet2
O E2 10.0.34.0/30 [110/20] via 10.0.13.2, 00:01:00, GigabitEthernet3
O 10.20.2.1/32 [110/2] via 10.0.12.2, 00:13:21, GigabitEthernet2
O E2 10.40.4.0/24 [110/20] via 10.0.13.2, 00:01:00, GigabitEthernet3
R1#O E2 のメトリックは AS 内のどこから見ても固定値 20 です。type extern 2, forward metric 1 の forward metric 1 は ASBR (R3) までの内部コストですが、E2 では表示される external metric にこの内部コストが 加算されません。R1 から見ても R2 から見ても、10.40.4.0/24 の metric は一律 20 です。E2 は「外部からの距離 (ASBR が付けた seed コスト) を主に評価し、表示 metric には AS 内部の距離を加算しない」モデルで、再配送経路のデフォルトです (ただし複数 ASBR が同一の Type 2 external metric で同じ経路を広告した場合は、ASBR までの内部距離 = forward metric が tie-break に使われます。RFC 2328 §16.4。内部距離を完全に無視するわけではない点に注意)。
metric-type 1 を指定して再投入すると、同じ経路が O E1 に変わり、メトリックが ASBR までの内部コストを加算した値になります。R1 では metric が 20 から 21 に変わります。
show ip route 10.40.4.0
Routing entry for 10.40.4.0/24
Known via "ospf 1", distance 110, metric 21, type extern 1
Last update from 10.0.13.2 on GigabitEthernet3, 00:00:51 ago
Routing Descriptor Blocks:
* 10.0.13.2, from 3.3.3.3, 00:00:51 ago, via GigabitEthernet3
Route metric is 21, traffic share count is 1
R1#show ip route ospf
10.0.0.0/8 is variably subnetted, 10 subnets, 3 masks
O 10.0.23.0/30 [110/2] via 10.0.13.2, 00:18:04, GigabitEthernet3
[110/2] via 10.0.12.2, 00:17:46, GigabitEthernet2
O E1 10.0.34.0/30 [110/21] via 10.0.13.2, 00:00:57, GigabitEthernet3
O 10.20.2.1/32 [110/2] via 10.0.12.2, 00:17:50, GigabitEthernet2
O E1 10.40.4.0/24 [110/21] via 10.0.13.2, 00:00:57, GigabitEthernet3
R1#O E1 の metric 21 は、外部メトリック 20 + R1 から ASBR (R3) までの内部コスト 1 の合計です。R1↔R3 は GigabitEthernet 1 ホップで、OSPF cost は Reference Bandwidth (既定 100 Mbps) を IF 帯域 1 Gbps で割った 0.1 が Cisco OSPF の最小値 1 に丸められて cost 1 となる (3-5 §10) ため、内部コストが 1 加算されて 21 となります。E1 は「外部からの距離 + AS 内部の距離」の両方を評価するモデルで、ASBR が複数あるとき「どの ASBR が物理的に近いか」を経路選択に反映できる点が E2 との違いです。
E2 と E1 の違いを整理すると、以下のとおりです。
| 観点 | O E2 (Type 2、既定) | O E1 (Type 1) |
|---|---|---|
| メトリックの内容 | 外部メトリック (seed コスト) のみ | 外部メトリック + ASBR までの内部コスト |
| AS 内での見え方 | どこでも固定 (本ラボでは 20) | ASBR から遠いほど大きくなる (本ラボでは 21〜) |
| 適する場面 | ASBR が 1 台、または外部距離だけで選びたい | ASBR が複数で、近い ASBR を優先したい |
| 設定 | redistribute eigrp 100 (デフォルト) | redistribute eigrp 100 metric-type 1 |
subnets キーワードについては、教科書の多くが「OSPF への再配送には subnets が必須で、付けないと classful な major network しか再配送されない」と記述します。ところが本ラボの IOS-XE 17.x では、redistribute eigrp 100 を subnets なしで投入しても、サブネット化された 10.40.4.0/24 がそのまま /24 で再配送されます。R3 の running-config と show ip protocols を対比すると、設定上は subnets を書いていないのに includes subnets in redistribution と表示されます。
show ip protocols
*** IP Routing is NSF aware ***
...
Routing Protocol is "ospf 1"
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is not set
Router ID 3.3.3.3
It is an autonomous system boundary router
Redistributing External Routes from,
eigrp 100, includes subnets in redistribution
Number of areas in this router is 1. 1 normal 0 stub 0 nssa
...
R3#show running-config | section router ospf
router ospf 1
router-id 3.3.3.3
redistribute eigrp 100
network 10.0.13.0 0.0.0.3 area 0
network 10.0.23.0 0.0.0.3 area 0
R3#IOS-XE 17.x では subnets がデフォルトで有効になっており、教科書の「subnets 必須」という記述は実機の挙動と一致しません。この教科書ギャップは §12 の落とし穴で改めて整理します。
7. 相互再配送のループと準最適経路
ここまでは一方向の再配送でした。相互 (双方向) 再配送 (Mutual Redistribution) では、R3 が OSPF → EIGRP と EIGRP → OSPF の両方を同時に行います。双方向再配送は、教科書で「ループや準最適経路を生む危険な操作」として警告される代表例です。
ループが起きる原理は、AD の大小と再配送の往復にあります。OSPF external (O E2) は AD 110、EIGRP external (D EX) は AD 170 で、同じ宛先を両方が広告すると AD の小さい OSPF (110) が RIB で勝ちます。ASBR が複数あると、ある ASBR が OSPF から EIGRP へ注入した経路を、別の ASBR が EIGRP から OSPF へ再注入し、それが AD 比較で元の経路を上書きして、本来の起点とは違う方向に経路が向く (準最適経路)、あるいは経路が往復し続ける (ループ) という事故が起きえます。
本ラボでは、この破滅的なループは 起きません。理由は、ASBR が R3 の 1 台に集中しているためです。R3 が双方向再配送を行っても、自分が OSPF へ注入した経路を EIGRP 経由で再び自分が受け取って OSPF へ再注入する経路が存在しないため、経路は安定します。route-map を一切付けない素の双方向再配送でも、R1 (OSPF 側) は 10.40.4.0/24 を O E2 [110/20] で安定して学習します。
show ip route
1.0.0.0/32 is subnetted, 1 subnets
C 1.1.1.1 is directly connected, Loopback0
10.0.0.0/8 is variably subnetted, 10 subnets, 3 masks
C 10.0.12.0/30 is directly connected, GigabitEthernet2
L 10.0.12.1/32 is directly connected, GigabitEthernet2
C 10.0.13.0/30 is directly connected, GigabitEthernet3
L 10.0.13.1/32 is directly connected, GigabitEthernet3
O 10.0.23.0/30 [110/2] via 10.0.13.2, 00:13:26, GigabitEthernet3
[110/2] via 10.0.12.2, 00:13:08, GigabitEthernet2
O E2 10.0.34.0/30 [110/20] via 10.0.13.2, 00:00:51, GigabitEthernet3
C 10.10.1.0/24 is directly connected, Loopback10
L 10.10.1.1/32 is directly connected, Loopback10
O 10.20.2.1/32 [110/2] via 10.0.12.2, 00:13:12, GigabitEthernet2
O E2 10.40.4.0/24 [110/20] via 10.0.13.2, 00:00:51, GigabitEthernet3
R1#R4 (EIGRP 側) でも EIGRP external が安定して乗り、経路の往復やフラッピングは観察されません。
show ip route
4.0.0.0/32 is subnetted, 1 subnets
C 4.4.4.4 is directly connected, Loopback0
10.0.0.0/8 is variably subnetted, 9 subnets, 3 masks
D EX 10.0.12.0/30 [170/281856] via 10.0.34.1, 00:08:53, GigabitEthernet2
D EX 10.0.13.0/30 [170/281856] via 10.0.34.1, 00:08:53, GigabitEthernet2
D EX 10.0.23.0/30 [170/281856] via 10.0.34.1, 00:08:53, GigabitEthernet2
C 10.0.34.0/30 is directly connected, GigabitEthernet2
L 10.0.34.2/32 is directly connected, GigabitEthernet2
D EX 10.10.1.1/32 [170/281856] via 10.0.34.1, 00:08:53, GigabitEthernet2
D EX 10.20.2.1/32 [170/281856] via 10.0.34.1, 00:08:53, GigabitEthernet2
C 10.40.4.0/24 is directly connected, Loopback40
L 10.40.4.1/32 is directly connected, Loopback40
R4#つまり、単一 ASBR の相互再配送は安全で、危険なのは ASBR が複数あって、注入した経路が別の ASBR を経由して元のドメインへ戻る経路が存在する場合です。本ラボでは破滅的ループを再現しませんが、ASBR が複数になる実運用を見据えて、「自分が注入した経路を逆流させない」防御を tag で実装するのが §8 の主題です。教科書の警告は誇張ではなく、ASBR が複数になった瞬間に現実の問題となるため、単一 ASBR の段階から防御を仕込んでおく価値があります。
8. route-map + tag によるループ防止
相互再配送のループを止める定石が、route-map による tag の付与とマッチです。考え方はシンプルで、「自分が一方のプロトコルへ注入する経路に tag を付け、逆方向の再配送ではその tag を持つ経路を deny する」というものです。これにより、片方のドメインから注入した経路が、もう片方を経由して元のドメインへ逆流するのを防ぎます。
R3 に投入する route-map は、双方向で対称な構成にします。OSPF → EIGRP 方向では、EIGRP 由来 (tag 100) の経路を EIGRP へ戻さないよう deny し、OSPF 由来の経路には tag 1 を付けます。EIGRP → OSPF 方向では、OSPF 由来 (tag 1) の経路を OSPF へ戻さないよう deny し、EIGRP 由来の経路には tag 100 を付けます。
route-map OSPF_TO_EIGRP deny 10
match tag 100
route-map OSPF_TO_EIGRP permit 20
set tag 1
route-map EIGRP_TO_OSPF deny 10
match tag 1
route-map EIGRP_TO_OSPF permit 20
set tag 100この route-map を再配送文に紐付けます。R3 の OSPF / EIGRP プロセスへの紐付けは以下のとおりです。
router ospf 1
router-id 3.3.3.3
redistribute eigrp 100 route-map EIGRP_TO_OSPF
network 10.0.13.0 0.0.0.3 area 0
network 10.0.23.0 0.0.0.3 area 0
router eigrp 100
network 10.0.34.0 0.0.0.3
redistribute ospf 1 metric 10000 100 255 1 1500 route-map OSPF_TO_EIGRProute-map の deny 10 シーケンスは「マッチした経路を再配送から除外する」フィルタ、permit 20 シーケンスは「残りの経路を再配送しつつ tag を付ける」マークです。deny で逆流を止め、permit で出自を tag に刻む二段構えが、相互再配送の tag 防御の骨格です。この構成は infraexpert などで定石とされる tag ループ防止と同じ考え方です。
tag が実際に経路へ付与されたことは、各ドメインの末端で確認できます。OSPF 側の R1 では、EIGRP 由来 (tag 100) の 10.40.4.0/24 に Tag 100 が刻まれています。
show ip route 10.40.4.0
Routing entry for 10.40.4.0/24
Known via "ospf 1", distance 110, metric 20
Tag 100, type extern 2, forward metric 1
Last update from 10.0.13.2 on GigabitEthernet3, 00:06:53 ago
Routing Descriptor Blocks:
* 10.0.13.2, from 3.3.3.3, 00:06:53 ago, via GigabitEthernet3
Route metric is 20, traffic share count is 1
Route tag 100
R1#EIGRP 側の R4 では、OSPF 由来 (tag 1) の 10.10.1.1/32 に Tag 1 が刻まれます。
show ip route 10.10.1.1
Routing entry for 10.10.1.1/32
Known via "eigrp 100", distance 170, metric 281856
Tag 1, precedence routine (0), type external
Redistributing via eigrp 100
Last update from 10.0.34.1 on GigabitEthernet2, 00:07:27 ago
Routing Descriptor Blocks:
* 10.0.34.1, from 10.0.34.1, 00:07:27 ago, via GigabitEthernet2
Route metric is 281856, traffic share count is 1
Total delay is 1010 microseconds, minimum bandwidth is 10000 Kbit
Reliability 255/255, minimum MTU 1500 bytes
Loading 1/255, Hops 1
Route tag 1
R4#EIGRP topology の External data には、この経路の出自が External protocol is OSPF, external metric is 2, Administrator tag is 1 と記録されます。経路の出自 (OSPF) と tag (1) が EIGRP の属性として保持されることが確認できます。
R4#show ip eigrp topology 10.10.1.1/32
EIGRP-IPv4 Topology Entry for AS(100)/ID(10.40.4.1) for 10.10.1.1/32
State is Passive, Query origin flag is 1, 1 Successor(s), FD is 281856
Descriptor Blocks:
10.0.34.1 (GigabitEthernet2), from 10.0.34.1, Send flag is 0x0
Composite metric is (281856/281600), route is External
Vector metric:
Minimum bandwidth is 10000 Kbit
Total delay is 1010 microseconds
Reliability is 255/255
Load is 1/255
Minimum MTU is 1500
Hop count is 1
Originating router is 3.3.3.3
External data:
AS number of route is 1
External protocol is OSPF, external metric is 2
Administrator tag is 1 (0x00000001)
R4#tag は OSPF の Type 5 LSA にも External Route Tag として運ばれます。R3 の show ip ospf database external を見ると、OSPF へ注入された各経路に External Route Tag: 100 が刻まれており、tag が LSA の属性として AS 全域に flooding されることが確認できます。
show ip ospf database external
OSPF Router with ID (3.3.3.3) (Process ID 1)
Type-5 AS External Link States
LS age: 94
Options: (No TOS-capability, DC, Upward)
LS Type: AS External Link
Link State ID: 10.0.34.0 (External Network Number )
Advertising Router: 3.3.3.3
LS Seq Number: 80000003
Checksum: 0x8C78
Length: 36
Network Mask: /30
Metric Type: 2 (Larger than any link state path)
MTID: 0
Metric: 20
Forward Address: 0.0.0.0
External Route Tag: 100
LS age: 94
Options: (No TOS-capability, DC, Upward)
LS Type: AS External Link
Link State ID: 10.40.4.0 (External Network Number )
Advertising Router: 3.3.3.3
LS Seq Number: 80000003
Checksum: 0x8EF
Length: 36
Network Mask: /24
Metric Type: 2 (Larger than any link state path)
MTID: 0
Metric: 20
Forward Address: 0.0.0.0
External Route Tag: 100本ラボの単一 ASBR では、tag を付けなくても経路は安定していました (§7)。それでも tag を仕込んでおく意味は、ASBR を 2 台目に増やしたとき、片方が注入した経路をもう片方が逆流させる事故を「設計の時点で」防ぐためです。次節では、その「2 台目 ASBR を増やすと実際に逆流が起き、tag deny でそれが止まる」場面を実機で確かめます。
9. 2 台目 ASBR で逆流を止める — deny シーケンスの効き目を実機で見る
§7-8 では単一 ASBR (R3) の安定構成を扱いました。tag deny を仕込んでも、逆流させる相手 (2 台目 ASBR) が存在しないため、deny シーケンスが実際に「逆流を止める」場面は §7-8 では見えていません。ここでは R2 を 2 台目の ASBR に役割変更して、(1) tag deny なしで逆流 (準最適経路) を起こし、(2) tag deny を入れて止まることを before / after で対照します。
構成 — R2 を 2 台目 ASBR にする
ノードは増やしません。既存の R2 (これまで OSPF internal) に、EIGRP ドメインの R4 へ向かう EIGRP リンク (10.0.24.0/30) を 1 本足し、R2 を OSPF 1 + EIGRP 100 の両方に所属させて 2 台目の ASBR にします。これで ASBR が R3 / R2 の 2 台になり、相互再配送の逆流が物理的に成立する構成になります。
| ルータ | 役割 (Phase F 以降) | OSPF から見た内部コスト |
|---|---|---|
| R3 | ASBR 1 (既存)。Gi4→R4 | R1 から直結 Gi3 で 1 |
| R2 | ASBR 2 (新)。Gi4→R4 (10.0.24.0/30) | R1 から R3 経由で 2 |
| R1 | OSPF internal の観測点 | — |
| R4 | EIGRP internal。R3 と R2 の 2 隣接 | — |
(R1 → R2 の直リンクには ip ospf cost 50 を入れ、R1 が ASBR 2 (R2) へは三角の R3 経由で到達する = R3 より一段遠い ASBR になるようにしています。これは次節 §10 の E1 / E2 観察のための内部距離の作り込みです。)
before — tag deny なしの逆流 (準最適経路)
R3 / R2 の両 ASBR を tag deny なしの素の双方向再配送にすると、一方の ASBR が OSPF → EIGRP で注入した OSPF 由来経路を、もう一方の ASBR が EIGRP → OSPF で OSPF へ再注入する逆流が起きます。分かりやすい犠牲者が R2 自身のサービス網 (Lo20、OSPF 由来) です。
ここで本ラボ固有のプレフィックス長に注意します。Cisco OSPF の Loopback 既定動作 (§4・§12) により、R2 の Lo20 は OSPF 内部では 10.20.2.1/32 (ホスト経路) として広告されます。逆流で OSPF に再注入される外部経路は、これとは別の 10.20.2.0/24 (サブネット経路) です。R1 で 10.20.2.0/24 を見ると、本来 OSPF に存在しないはずの 外部経路 (O E2) が、R3 (3.3.3.3) 経由で現れます。
R1#show ip route 10.20.2.0
Routing entry for 10.20.2.0/24
Known via "ospf 1", distance 110, metric 20, type extern 2, forward metric 1
Last update from 10.0.13.2 on GigabitEthernet3, 00:02:23 ago
Routing Descriptor Blocks:
* 10.0.13.2, from 3.3.3.3, 00:02:23 ago, via GigabitEthernet3
Route metric is 20, traffic share count is 1
R1#これは「R2 のサービス網 (10.20.2.0/24) が、自分の OSPF ドメインから出て EIGRP を一周し、R3 によって OSPF 外部経路として戻ってきた」逆流の足跡です。R2 自身が起点であるサブネットが、外部経路として OSPF に現れること自体が異常です (R2 の loopback ホスト 10.20.2.1 宛ての実トラフィックは、longest-prefix match で内部 /32 が優先されるため遠回りはしませんが、/24 の幽霊外部経路が LSDB に居座る状態は再配送が漏れている証拠です)。この外部経路の出所は、R1 の OSPF 外部 LSDB に現れる Type 5 LSA です。Link State ID: 10.20.2.0 を Advertising Router: 3.3.3.3 (R3) が広告しており、R3 が R2 由来の経路を OSPF 外部として再注入している (= 逆流) ことが読み取れます。
R1#show ip ospf database external
...
LS Type: AS External Link
Link State ID: 10.20.2.0 (External Network Number )
Advertising Router: 3.3.3.3
LS Seq Number: 80000002
Checksum: 0x271
Length: 36
Metric Type: 2 (Larger than any link state path)
MTID: 0
Metric: 20
Forward Address: 0.0.0.0
External Route Tag: 0R2 側の EIGRP topology には、もっと直接的に逆流が現れます。R2 自身の Lo20 の /32 (10.20.2.1/32) が、R4 経由 (10.0.24.2) で EIGRP external として戻ってきて FD is Infinity (採用できない無限距離) で滞留しています。自分が OSPF へ持つ経路が、R3 → R4 → R2 と一周して EIGRP 側から戻ってきた逆流の足跡です。
R2#show ip eigrp topology
EIGRP-IPv4 Topology Table for AS(100)/ID(10.20.2.1)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
r - reply Status, s - sia Status
P 10.0.34.0/30, 1 successors, FD is 3072
via 10.0.24.2 (3072/2816), GigabitEthernet4
P 10.40.4.0/24, 1 successors, FD is 130816
via 10.0.24.2 (130816/128256), GigabitEthernet4
P 10.10.1.1/32, 1 successors, FD is 281600
via Redistributed (281600/0)
P 10.0.13.0/30, 1 successors, FD is 281600
via Redistributed (281600/0)
P 10.20.2.0/24, 1 successors, FD is 281600
via Redistributed (281600/0)
P 10.20.2.1/32, 0 successors, FD is Infinity
via 10.0.24.2 (282112/281856), GigabitEthernet4
P 10.0.23.0/30, 1 successors, FD is 281600
via Redistributed (281600/0)
P 10.0.12.0/30, 1 successors, FD is 281600
via Redistributed (281600/0)
P 10.0.24.0/30, 1 successors, FD is 2816
via Connected, GigabitEthernet4
R2#after — tag deny を両 ASBR に入れる
§8 と同じ route-map (OSPF_TO_EIGRP / EIGRP_TO_OSPF) を、今度は R3 と R2 の両方に投入します。OSPF 由来には tag 1、EIGRP 由来には tag 100 を刻み、戻り方向の deny match tag で逆流を止めます。
投入後、R1 で 10.20.2.0/24 を見ると、逆流の幽霊だった外部経路 (O E2) が消えています (R2 の loopback ホスト経路 10.20.2.1/32 は元から内部経路として健在で、消えたのは余分な /24 外部経路だけです)。
R1#show ip route 10.20.2.0
% Subnet not in table
R1#R1 の OSPF 外部 LSDB からも 10.20.2.0 の Type 5 LSA が消え、R2 由来の経路が OSPF 外部として再注入されなくなりました。残った外部 LSA はすべて External Route Tag: 100 (EIGRP 由来) を持ち、tag によって出自が刻まれていることが確認できます。逆流が止まったかどうかは、この外部 LSA / 外部経路が消えたかという LSDB / RIB の差分で読み取ります。
R1#show ip ospf database external
...
LS Type: AS External Link
Link State ID: 10.40.4.0 (External Network Number )
Advertising Router: 3.3.3.3
LS Seq Number: 80000006
Checksum: 0x2F2
Length: 36
Metric Type: 2 (Larger than any link state path)
MTID: 0
Metric: 20
Forward Address: 0.0.0.0
External Route Tag: 100before では 10.20.2.0 の外部 LSA が存在して R1 が準最適経路を掴んでいたのに対し、after ではその LSA が消えて準最適経路が解消した。この LSDB / RIB の差分こそが、「deny シーケンスが逆流を止めた」直接の証跡です。R2 の EIGRP topology を見ると、各経路に出自を示す tag is 1 (OSPF 由来) が刻まれているのも確認できます。
R2#show ip eigrp topology
EIGRP-IPv4 Topology Table for AS(100)/ID(10.20.2.1)
Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
r - reply Status, s - sia Status
P 10.0.34.0/30, 1 successors, FD is 3072
via 10.0.24.2 (3072/2816), GigabitEthernet4
P 10.40.4.0/24, 1 successors, FD is 130816
via 10.0.24.2 (130816/128256), GigabitEthernet4
P 10.10.1.1/32, 1 successors, FD is 281600, tag is 1
via Redistributed (281600/0)
P 10.0.13.0/30, 1 successors, FD is 281600, tag is 1
via Redistributed (281600/0)
P 10.20.2.0/24, 1 successors, FD is 281600, tag is 1
via Redistributed (281600/0)
P 10.20.2.1/32, 0 successors, FD is Infinity, tag is 1
via 10.0.24.2 (282112/281856), GigabitEthernet4
P 10.0.23.0/30, 1 successors, FD is 281600, tag is 1
via Redistributed (281600/0)
P 10.0.12.0/30, 1 successors, FD is 281600, tag is 1
via Redistributed (281600/0)
P 10.0.24.0/30, 1 successors, FD is 2816
via Connected, GigabitEthernet4
R2#show route-map の match counter は増えない — 証跡は LSDB 差分で取る
ここで実機ならではの注意点があります。「deny がマッチした回数」を show route-map で数えたくなりますが、再配送 route-map ではこの counter は動きません。投入後の show route-map を見ると、deny シーケンスを含む全シーケンスが Policy routing matches: 0 packets, 0 bytes のままです。
R2#show route-map
route-map OSPF_TO_EIGRP, deny, sequence 10
Match clauses:
tag 100
Set clauses:
Policy routing matches: 0 packets, 0 bytes
route-map OSPF_TO_EIGRP, permit, sequence 20
Match clauses:
Set clauses:
tag 1
Policy routing matches: 0 packets, 0 bytes
route-map EIGRP_TO_OSPF, deny, sequence 10
Match clauses:
tag 1
Set clauses:
Policy routing matches: 0 packets, 0 bytes
route-map EIGRP_TO_OSPF, permit, sequence 20
Match clauses:
Set clauses:
tag 100
Policy routing matches: 0 packets, 0 bytes
R2#この Policy routing matches counter は、PBR (Policy-Based Routing、ip policy route-map) でルータを通過したパケットのヒット数を数えるためのもので、再配送 route-map が経路 (route entry) に対して行う match / deny は数えません。再配送 route-map が効いているかは、この counter ではなく RIB / LSDB の差分 (before に在った準最適経路や逆流 LSA が after で消えたか) で判断します。tag deny が逆流を止めた証跡は、先に見た「R1 から 10.20.2.0 の外部経路が消えた」「外部 LSDB から 10.20.2.0 LSA が消えた」という状態変化そのものです。
10. 複数 ASBR の E2 / E1 — 経路選択結果の違いを見る
§6 では単一 ASBR (R3) で O E2 (固定 20) と O E1 (20 + 内部コスト 1 = 21) のメトリックの値の違いを見ました。しかし単一 ASBR では「E2 と E1 で経路選択の結果が変わるのか」は見えません。ASBR が 1 台なら、どちらを選ぶ余地もないからです。§9 で R2 を 2 台目 ASBR にした構成を使い、2 台の ASBR が同じ外部 prefix を別々の内部距離で OSPF に注入したとき、E2 と E1 で経路選択の現れ方がどう違うかを観察します。
観測対象は 10.40.4.0/24 (R4 origin、EIGRP internal) です。R3 (ASBR 1) と R2 (ASBR 2) の両方がこれを EIGRP → OSPF で再注入するので、R1 の OSPF 外部 LSDB には 2 台の ASBR の Type 5 LSA が並びます。R1 から各 ASBR への内部コストは、show ip ospf border-routers で確認できます。
R1#show ip ospf border-routers
OSPF Router with ID (1.1.1.1) (Process ID 1)
Base Topology (MTID 0)
Internal Router Routing Table
Codes: i - Intra-area route, I - Inter-area route
i 2.2.2.2 [2] via 10.0.13.2, GigabitEthernet3, ASBR, Area 0, SPF 22
i 3.3.3.3 [1] via 10.0.13.2, GigabitEthernet3, ASBR, Area 0, SPF 22
R1#R1 から見て ASBR 1 (R3 = 3.3.3.3) は内部コスト 1 (直結 Gi3)、ASBR 2 (R2 = 2.2.2.2) は内部コスト 2 (R1↔R2 直リンクを高コスト化したため R3 経由) と、距離が非対称です。この非対称な 2 ASBR に対し、E2 と E1 で 10.40.4.0/24 の経路選択がどう見えるかを対比します。
E2 — 近い ASBR を選ぶが、その理由は metric に現れない
既定の E2 で R1 の 10.40.4.0/24 を見ると、metric は固定 20、選ばれたのは近い ASBR の R3 (3.3.3.3) 経由です。
R1#show ip route 10.40.4.0
Routing entry for 10.40.4.0/24
Known via "ospf 1", distance 110, metric 20
Tag 100, type extern 2, forward metric 1
Last update from 10.0.13.2 on GigabitEthernet3, 00:01:36 ago
Routing Descriptor Blocks:
* 10.0.13.2, from 3.3.3.3, 00:01:36 ago, via GigabitEthernet3
Route metric is 20, traffic share count is 1
Route tag 100
R1#ここで R1 が近い R3 を選んだ理由は、RIB に表示される metric 20 ではありません。2 台の ASBR の external metric はどちらも固定 20 で同値なので、決め手は forward metric 1 — ASBR までの内部コスト (R3 が 1、R2 が 2) のタイブレークです。E2 では内部距離が経路選択の決め手として働くものの、RIB に出る metric 値 (20) には「どちらの ASBR か」「どれだけ遠いか」が現れません。もし R3 が落ちて R2 に切り替わっても、metric は 20 のまま (R2 が遠いことが metric に出ない) です。
E1 — 内部距離が metric に現れる
両 ASBR を metric-type 1 (E1) にして同じ経路を見ると、metric が external 20 + R3 までの内部コスト 1 = 21 になります。選ばれる ASBR は同じ R3 ですが、内部距離が metric 値 (21) に明示的に加算されています。
R1#show ip route 10.40.4.0
Routing entry for 10.40.4.0/24
Known via "ospf 1", distance 110, metric 21
Tag 100, type extern 1
Last update from 10.0.13.2 on GigabitEthernet3, 00:01:36 ago
Routing Descriptor Blocks:
* 10.0.13.2, from 3.3.3.3, 00:01:36 ago, via GigabitEthernet3
Route metric is 21, traffic share count is 1
Route tag 100
R1#R3 経由は 20 + 1 = 21、R2 経由なら 20 + 2 = 22 で、metric の大小として「R3 のほうが近い」ことが読めます。E2 では forward metric のタイブレークに隠れていた ASBR の近遠が、E1 では RIB の metric 値そのものに出るわけです。
両者を整理すると、複数 ASBR がある構成で、E1 は「どの ASBR が近いか」を AS 内の各ルータの RIB metric に反映する点が E2 との違いです。E2 は外部距離 (固定 20) だけを metric に映し、近い ASBR を選ぶ判断は forward metric のタイブレークで暗黙に行います。E1 は内部距離を metric に加算するので、距離に応じた ASBR 選択が経路全体に metric の差として正しく伝わります。これが §6 の落とし穴 4 で「ASBR が複数ある構成で近い ASBR を優先したいなら E1」と述べた理由の実機での裏付けです。
なお本ラボの三角構成では、R1 が ASBR 2 (R2) へも R3 を経由して到達するため、E2 / E1 のどちらでも最終的に選ばれる出口は R3 単一になります。「選ぶ ASBR が変わる」のではなく「近い ASBR を選ぶ理由が RIB metric に見えるか、forward metric のタイブレークに隠れるか」が E2 と E1 の差として観察できる、という点が、本ラボの構成での E2 / E1 の差を理解する鍵です。
11. route-map による再配送フィルタ
route-map は、tag によるループ防止だけでなく、特定の経路だけを再配送する選別フィルタとしても使えます。§8 で使った match tag / set tag に加えて、match ip address で prefix-list や ACL を参照すると、「この prefix だけ注入する」「この prefix は注入しない」という経路選別が表現できます。
考え方は §8 と同じ二段構えです。deny シーケンスで除外したい prefix をマッチさせ、permit シーケンスで残りを通します。例として「R2 の Lo20 だけを EIGRP へ再配送し、R1 の Lo10 は注入しない」という選別を行うなら、prefix-list で対象を定義し、route-map で match ip address prefix-list を使って permit / deny を組み立てます。
ここで本ラボ固有の注意点があります。§4・§5・§12 で触れたとおり、Cisco OSPF の Loopback 既定動作により R2 の Lo20 は OSPF 上 10.20.2.1/32 として学習・再配送されています (config 上の 10.20.2.0/24 ではなく /32)。prefix-list は ge / le を付けない場合 exact match なので、permit 10.20.2.0/24 では 10.20.2.1/32 に一致せず、意図した経路を通せません。本ラボの実態に合わせるなら、学習されている /32 を直接書きます。
ip prefix-list ALLOW_LO20 seq 5 permit 10.20.2.1/32
!
route-map OSPF_TO_EIGRP permit 5
match ip address prefix-list ALLOW_LO20
set tag 1
route-map OSPF_TO_EIGRP deny 99(Lo20 を本来の /24 で再配送したい場合は、R2 の Loopback に ip ospf network point-to-point を入れて /24 で広告させたうえで permit 10.20.2.0/24 を使うか、permit 10.20.2.0/24 le 32 のように prefix 長範囲を広げる手があります。)
このように route-map の match 条件を tag から ip address に差し替えるだけで、ループ防止フィルタが経路選別フィルタに変わります。再配送境界で「全部通す」か「全部止める」かの二択ではなく、prefix 単位で注入を制御できる柔軟性が route-map の強みです。
再配送における route-map の役割は、match (何を選ぶか) と set (どう加工するか) の組合せで整理できます。
| 句 | 用途 | 本節での例 |
|---|---|---|
match tag | 出自で経路を選別 (ループ防止) | tag 1 / tag 100 の逆流を deny |
match ip address | prefix で経路を選別 (フィルタ) | prefix-list で特定 prefix だけ注入 |
set tag | 注入する経路に出自を刻む | OSPF 由来に tag 1、EIGRP 由来に tag 100 |
set metric / set metric-type | 注入時のメトリックや E1/E2 を制御 | seed metric の上書き、E2→E1 変更 |
route-map / prefix-list / match / set という語彙は、再配送に限らず BGP のポリシー (3-6〜3-9) でも共通して使われる、ルーティングポリシーの基本部品です。次節 3-11 では、本節で具体的に使った route-map を出発点に、prefix-list / AS-PATH ACL / community-list を含めたルーティングポリシーの語彙を横断的に整理します。
本節は IGP どうし (OSPF と EIGRP) の再配送に範囲を絞りました。IGP から BGP への再配送も再配送の一種ですが、BGP は redistribute で IGP を流し込むよりも、3-6 で扱った network 文で広告対象の prefix を明示的に選ぶ運用が基本となります。IGP を BGP に redistribute した経路は Origin が Incomplete (?) となり、ベストパス選定で IGP (i) < EGP (e) < Incomplete (?) の最下位グループに置かれます。この BGP 側の事情は 3-6 §で扱ったため、本節では IGP 間の再配送に集中しました。BGP への経路注入の設計判断は、3-6〜3-9 の BGP 系列を参照してください。
12. 落とし穴・補足
本節の相互再配送で整理すべき論点と、教科書 / Web 解説の記述との差をまとめます。3-3〜3-9 と同じ「正直記録」枠で、Cisco IOS-XE 17.x の実装の振る舞いを優先します。
落とし穴 1: EIGRP は seed metric 必須、OSPF は省略可
再配送のデフォルト挙動はプロトコルごとに非対称です。本節のように OSPF など別ルーティングプロトコルから EIGRP へ再配送するときは、seed metric (redistribute ... metric <bw> <delay> <reliability> <load> <mtu>、または default-metric 文) を明示しないとメトリックが infinity 扱いとなり経路が topology table に乗りません (§4)。一方、OSPF へ再配送するときは seed metric を省略でき、redistribute eigrp 100 だけで外部経路が O E2 / metric 20 で乗ります (§6)。なお EIGRP 全般では例外もあり、Cisco の EIGRP command reference は connected route・出力 IF 指定の static route・別 EIGRP インスタンスからの再配送は seed metric なしでも再配送できると説明しています (本節の OSPF→EIGRP のケースでは必須)。「再配送すれば経路が届くはず」という思い込みで EIGRP の seed metric を忘れると経路が無言で消えるため、再配送が効かないときはまず seed metric の有無を確認します。
落とし穴 2: subnets は IOS-XE 17.x ではデフォルトで効く
多くの教科書は「OSPF への再配送には subnets キーワードが必須で、付けないと classful な major network しか再配送されず、サブネット化された経路が落ちる」と記述します。これは Classic IOS の古い挙動に基づく記述です。本ラボの IOS-XE 17.x では、redistribute eigrp 100 を subnets なしで投入しても、show ip protocols に includes subnets in redistribution と表示され、サブネット化された 10.40.4.0/24 が /24 のまま再配送されます (§6)。本ラボで使った CML の IOS-XE 17.x では subnets がデフォルトで有効になっており、教科書の「subnets 必須」は実機と一致しません。これは IOS のバージョンや機種に依存する挙動なので、「すべての Cisco IOS で常にそうなる」と一般化はできません。明示的に subnets を書いても害はないため、バージョンや複数のプラットフォームをまたぐ設定では明示しておくのが安全です。
落とし穴 3: 相互再配送のループは ASBR が複数になって初めて現実化する
教科書は相互再配送を「ループや準最適経路を生む危険な操作」として警告しますが、この警告が現実の問題になるのは ASBR が複数あって、注入した経路が別の ASBR を経由して元のドメインへ戻る経路が存在する場合です。ASBR が R3 の 1 台に集中していると、R3 が双方向再配送を行っても自分が注入した経路が自分へ戻る経路が存在しないため、route-map を付けない素の双方向再配送でも経路は安定します (§7)。一方、§9 で R2 を 2 台目 ASBR にすると、片方が OSPF へ注入した経路を他方が EIGRP へ再注入する逆流が実際に起き、R2 自身のサービス網が OSPF 外部経路 (O E2 の /24) として OSPF に逆流する事象が発生しました。「相互再配送 = 必ずループ」ではなく、「ASBR が複数になった瞬間にループ・準最適化の危険が現実化する」が正確な理解です。だからこそ単一 ASBR の段階から tag 防御をテンプレートに入れておきます (§8-9)。
落とし穴 4: E2 はメトリックが固定、E1 は内部コストを加算
OSPF への再配送経路はデフォルトで External Type 2 (O E2) となり、メトリックは AS 内のどこから見ても seed コストの固定値 (本ラボでは 20) です (§6)。metric-type 1 で External Type 1 (O E1) にすると、ASBR までの内部コストが加算され、ASBR から遠いルータほどメトリックが大きくなります (本ラボでは R1 で 21)。E2 は外部距離だけ、E1 は外部距離 + AS 内部距離を評価します。ASBR が 1 台なら E2 と E1 で選ぶ経路は変わりませんが、ASBR が複数ある構成では差が出ます。§10 で 2 台の ASBR を異なる内部距離に置いて観察したとおり、E2 では近い ASBR を選ぶ判断が forward metric のタイブレークに隠れて RIB の metric 値 (20) には現れないのに対し、E1 では内部距離が metric 値 (21) に加算されて「どの ASBR が近いか」が読めます。「物理的に近い ASBR を優先したい」「その選択理由を AS 内の各ルータの metric に明示したい」場合は E1 を選びます。
落とし穴 5: OSPF Loopback の /32 が再配送で持ち込まれる
OSPF → EIGRP の再配送で R4 に注入された経路が 10.10.1.1/32 / 10.20.2.1/32 と /32 (ホスト経路) になるのは、3-5 §13 で扱った Cisco OSPF の Loopback デフォルト動作と同根です。R1 の Lo10 (10.10.1.0/24) / R2 の Lo20 (10.20.2.0/24) を OSPF が /32 で広告するため、それを学習した R3 が EIGRP へ再配送すると /32 のまま注入されます (§4)。サービス網を本来のサブネット長で再配送したい場合は、Loopback IF に ip ospf network point-to-point を指定して OSPF 側で /24 広告に変える必要があります。再配送境界では、注入される経路のプレフィックス長が「元のドメインでどう広告されているか」に依存する点に注意します。
13. 次節
3-6 から 3-9 で BGP の AS 間ポリシー、本節 3-10 でプロトコル間の再配送を扱い、第 3 章 L3 編の 10/16 を消化しました。再配送では、ASBR が seed metric / metric-type / route-map / tag を使ってプロトコル境界の経路を制御すること、特に 2 台目 ASBR で実際に起きる逆流と tag deny によるその停止、複数 ASBR での EIGRP → OSPF の E2 / E1 の経路選択の差を実機で確認しました。本節で具体的に使った route-map / prefix-list / match / set は、再配送に限らずルーティングポリシー全般の基本部品です。
次節 3-11 ルーティングポリシー総括 では、本節の route-map 体験を出発点に、prefix-list / AS-PATH ACL / community-list を含めたルーティングポリシーの語彙を横断的に整理します。BGP のポリシー (3-6〜3-9) と再配送 (3-10) で別々に使ってきた制御部品を 1 つの体系として束ね、第 3 章前半の IGP と後半の BGP を横断する締めとしていきましょう。