はじめに
RIP では経路を学習した interface に対して update を行わない sprit-horizon ルールがありますが、static route を再配信する際、経路の学習状況によって sprit-horizon の対象 interface が変わり update の状況が変わることがあります。
このドキュメントでは、その動作についてコマンド出力とともに紹介します。
構成
(各機器の詳細設定はドキュメント最後に掲載)
※以下、出力例はすべて 15.1(4)M3 を使用
E0/0---172.20.1.0/24---E0/0[R2]E1/0---+
[R1] 10.1.1.0/8 |
E1/0---172.20.2.0/24---E0/0[R3]E1/0---+
R1 にて
ip route 192.168.1.0 255.255.255.0 10.1.1.1
ip route 192.168.2.0 255.255.255.0 ethernet0/0
を設定し、RIP で再配信。
E1/0 に対し
offset-list 0 in 2 Ethernet1/0
でメトリック加算
期待される動作
interface 指定のある static の場合
RIP に static route を再配信する際、interface 指定のある static route はその指定された interface から学習したものとして update 処理を行います。そのため、static で指定した interface において sprit-horizon が有効な場合、その interface にはその static 経路が update されません。
R1#show ip route 192.168.2.0
Routing entry for 192.168.2.0/24
Known via "static", distance 1, metric 0 (connected)
Redistributing via rip
Advertised by rip
Routing Descriptor Blocks:
* directly connected, via Ethernet1/0
Route metric is 0, traffic share count is 1
R1#
05:46:49.639: RIP: sending v2 update to 224.0.0.9 via Ethernet1/0 (172.20.2.1)
05:46:49.639: RIP: build update entries
05:46:49.639: 10.0.0.0/8 via 0.0.0.0, metric 2, tag 0
05:46:49.639: 172.20.1.0/24 via 0.0.0.0, metric 1, tag 0
05:46:49.639: 192.168.1.0/24 via 0.0.0.0, metric 1, tag 0
R1#
05:46:55.119: RIP: sending v2 update to 224.0.0.9 via Ethernet0/0 (172.20.1.1)
05:46:55.119: RIP: build update entries
05:46:55.119: 172.20.2.0/24 via 0.0.0.0, metric 1, tag 0
05:46:55.119: 192.168.2.0/24 via 0.0.0.0, metric 1, tag 0
R1#
192.168.2.0/24 は Ethernet1/0 が指定されているため、Ethernet1/0 から学習した扱いとなり、Ethernet0/0 からしか update されません。Ethernet1/0 で sprit-horizon を無効にすれば、同じ状況下でも update されるようになります。
R1(config)#int e 1/0
R1(config-if)#no ip split-horizon
R1(config-if)#end
R1#
05:56:39.487: %SYS-5-CONFIG_I: Configured from console by console
05:56:58.083: RIP: sending v2 update to 224.0.0.9 via Ethernet1/0 (172.20.2.1)
05:56:58.083: RIP: build update entries
05:56:58.083: 10.0.0.0/8 via 0.0.0.0, metric 2, tag 0
05:56:58.083: 172.20.1.0/24 via 0.0.0.0, metric 1, tag 0
05:56:58.083: 172.20.2.0/24 via 0.0.0.0, metric 1, tag 0
05:56:58.083: 192.168.1.0/24 via 0.0.0.0, metric 1, tag 0
05:56:58.083: 192.168.2.0/24 via 0.0.0.0, metric 1, tag 0
interface 指定のない static の場合
interface 指定がない next-hop address のみの、いわゆる recursive static の場合、next-hop に到達可能な経路の学習元 interface から学習したとみなします。
R1#show ip route 192.168.1.0
Routing entry for 192.168.1.0/24
Known via "static", distance 1, metric 0
Redistributing via rip
Advertised by rip
Routing Descriptor Blocks:
* 10.1.1.1
Route metric is 0, traffic share count is 1
R1#
R1#show ip route 10.1.1.1
Routing entry for 10.0.0.0/8
Known via "rip", distance 120, metric 1
Redistributing via rip
Last update from 172.20.1.2 on Ethernet0/0, 00:00:14 ago
Routing Descriptor Blocks:
* 172.20.1.2, from 172.20.1.2, 00:00:14 ago, via Ethernet0/0
Route metric is 1, traffic share count is 1
R1#
この構成の場合、static 192.168.1.0/24 が使用する next-hop 10.1.1.1 に到達可能な経路は 10.0.0.0/8 として Ethernet0/0 から学習しているため、192.168.1.0/24 はsprit-horizon により Ethernet0/0 から update されていません。
R1#
06:25:42.227: RIP: sending v2 update to 224.0.0.9 via Ethernet0/0 (172.20.1.1)
06:25:42.227: RIP: build update entries
06:25:42.227: 172.20.2.0/24 via 0.0.0.0, metric 1, tag 0
06:25:42.227: 192.168.2.0/24 via 0.0.0.0, metric 1, tag 0
R1#
06:25:44.115: RIP: sending v2 update to 224.0.0.9 via Ethernet1/0 (172.20.2.1)
06:25:44.115: RIP: build update entries
06:25:44.115: 10.0.0.0/8 via 0.0.0.0, metric 2, tag 0
06:25:44.115: 172.20.1.0/24 via 0.0.0.0, metric 1, tag 0
06:25:44.115: 192.168.1.0/24 via 0.0.0.0, metric 1, tag 0
R1#
このパターンの特徴は、経路に更新があった場合に経路の更新状況に応じて学習元とする interface も合わせて更新され、update されない interface も変化するという点です。Ethernet0/0 から学習している経路 10.0.0.0/8 が消え、代わりに同じものを Ethernet1/0 から学習するようになると、192.168.1.0/24 も Ethernet1/0 から update されなくなり、代わりに Ethernet0/0 からは update されるようになります。
R1#show ip route 10.1.1.1
Routing entry for 10.0.0.0/8
Known via "rip", distance 120, metric 3
Redistributing via rip
Last update from 172.20.2.3 on Ethernet1/0, 00:00:19 ago
Routing Descriptor Blocks:
* 172.20.2.3, from 172.20.2.3, 00:00:19 ago, via Ethernet1/0
Route metric is 3, traffic share count is 1
R1#
------------------------------------------------------------------------------------------------------------
Aug 17 06:51:35.687: RIP: sending v2 update to 224.0.0.9 via Ethernet0/0 (172.20.1.1)
06:51:35.687: RIP: build update entries
06:51:35.687: 10.0.0.0/8 via 0.0.0.0, metric 4, tag 0
06:51:35.687: 172.20.2.0/24 via 0.0.0.0, metric 1, tag 0
06:51:35.687: 192.168.1.0/24 via 0.0.0.0, metric 1, tag 0
06:51:35.687: 192.168.2.0/24 via 0.0.0.0, metric 1, tag 0
R1#
06:51:38.615: RIP: sending v2 update to 224.0.0.9 via Ethernet1/0 (172.20.2.1)
06:51:38.615: RIP: build update entries
06:51:38.615: 172.20.1.0/24 via 0.0.0.0, metric 1, tag 0
機器設定
hostname R1
!
!
interface Ethernet0/0
ip address 172.20.1.1 255.255.255.0
!
interface Ethernet1/0
ip address 172.20.2.1 255.255.255.0
!
router rip
version 2
redistribute static
offset-list 0 in 2 Ethernet1/0
network 172.20.0.0
!
ip forward-protocol nd
ip route 192.168.1.0 255.255.255.0 10.1.1.1
ip route 192.168.2.0 255.255.255.0 Ethernet1/0
!
------------------------------------------------------------------------------------------------------------
hostname R2
!
interface Ethernet0/0
ip address 172.20.1.2 255.255.255.0
!
interface Ethernet1/0
ip address 10.1.1.2 255.0.0.0
!
router rip
version 2
network 10.0.0.0
network 172.20.0.0
------------------------------------------------------------------------------------------------------------
hostname R3
!
!
interface Ethernet0/0
ip address 172.20.2.3 255.255.255.0
!
interface Ethernet1/0
ip address 10.1.1.3 255.0.0.0
!
router rip
version 2
network 10.0.0.0
network 172.20.0.0