Ciscoルータのルート選択はどう決まる?Administrative Distanceを徹底解説

音声で聞く

読む前にこの記事のポイントを音声で確認できます。この音声は本記事をもとにAIツール(NotebookLM)で自動生成したもので、発音や言い回しが不自然な箇所や、内容の誤りが含まれる可能性があります。理解の補助としてご利用ください。

同じルーティングプロトコルで、同じ宛先のルートを複数の経路から受け取った場合、ルータはそのプロトコルのメトリック(OSPF ならコスト、RIP ならホップ数など)で最適な経路を選びます。

では、OSPF と RIP のように異なるルーティングプロトコルから同じ宛先のルートを受け取った場合は、どちらを使うのでしょうか。OSPF と RIP ではメトリックの意味が違うので、メトリック同士を比べることはできません。ここで使われるのが、アドミニストレーティブディスタンス(Administrative Distance:AD)です。この記事では、Cisco ルータで同じ宛先のルートを AD 値の大きいプロトコルから順に追加し、どのルートが使われるかを確認します。

この記事でわかること
  1. AD 値の役割と、主なルーティングプロトコルの AD 値
  2. iBGP(200)から eBGP(20)まで、AD 値の小さいルートが優先される動作
  3. EIGRP の集約ルートとスタティックルートの AD 値(5 と 1)
  4. AD 値で比べるのは同じプレフィックスのルートだけであること

Administrative Distance とは

AD は、ルート情報の信頼度を表す値です。ルーティングプロトコルごとに値が決まっていて、同じ宛先のルートが複数のプロトコルから届いたときは、AD 値の小さいルートがルーティングテーブルに入ります。メトリックで比べるのは、同じプロトコルの中で複数の経路があるときです。

OSPF AD 110 IS-IS AD 115 RIP AD 120 AD 値を比較 小さいほうを採用 ルーティングテーブル OSPF のルートが入る
図1 同じ宛先(23.23.23.23/32)を3つのプロトコルから受け取った場合。AD 値の小さいルートが使われる

主なルート情報の AD 値(Cisco ルータの既定値)は次のとおりです。

ルート情報AD 値
直接接続(Connected)0
スタティックルート1
EIGRP 集約ルート5
eBGP20
EIGRP 内部90
OSPF110
IS-IS115
RIP120
EIGRP 外部170
iBGP200

例えば、同じ宛先のルートを OSPF と RIP で受け取った場合、OSPF は 110、RIP は 120 なので、OSPF のルートがルーティングテーブルに入ります。直接接続のネットワークは AD 値 0 で、もっとも優先されます。ルータ自身のインターフェースがつながっているネットワークなので、ほかのどの情報よりも確かだからです。

検証構成

R5 に R2 と R3 をつなぎ、R2 と R3 のどちらにも Loopback23(23.23.23.23/32)を作ります。この 23.23.23.23/32 を、R2 と R3 からさまざまなプロトコルで R5 に広告し、R5 がどのルートを使うかを順に確認します。

Lo23 23.23.23.23/32 Lo23 23.23.23.23/32 R2 R3 R5 192.168.25.0/24 192.168.35.0/24 .2 fa0/0.25 fa0/0.35 .3 fa0/0.25 .5 .5 fa0/0.35
図2 検証構成。R2 と R3 のどちらも 23.23.23.23/32 を持つ

最初に AD 値 200 の iBGP でルートを広告し、そこから AD 値の小さいルートを少しずつ追加していきます。

AD 値の小さいルートを順に追加する

iBGP(AD 200)

R3 と R5 を内部 BGP(iBGP、AS 35)でピアリングし、R3 の Loopback23(23.23.23.23/32)を R5 へ広告します。

Lo23 23.23.23.23/32 Lo23 23.23.23.23/32 R2 R3 R5 iBGP(AS 35) AD 200 R5 は iBGP のルート(B)を使う
図3 R3 から iBGP で 23.23.23.23/32 を広告する

R3

R3(config)#router bgp 35
R3(config-router)#neighbor 192.168.35.5 remote-as 35
R3(config-router)#network 23.23.23.23 mask 255.255.255.255

R5

R5(config)#router bgp 35
R5(config-router)#neighbor 192.168.35.3 remote-as 35

R5 のルーティングテーブルを見ると、23.23.23.23 を BGP のルートとして学習しています。行頭の B は BGP の意味で、出力上部の Codes でも確認できます。[200/0] の先頭の数字が AD 値で、iBGP なので 200 です。

R5

R5# show ip route 
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set

      23.0.0.0/32 is subnetted, 1 subnets
B        23.23.23.23 [200/0] via 192.168.35.3, 00:00:50
〜 以降省略
表示意味
BBGP で学習したルート
[200/0][AD 値/メトリック]。iBGP の AD 値は 200
via 192.168.35.3ネクストホップは R3

EIGRP 外部(AD 170)vs iBGP(AD 200)

R2 と R5 で EIGRP(AS 25)を有効にし、R2 の Loopback23 を EIGRP へ再配布します。再配布したルートは、EIGRP の外部ルートとして R5 へ広告されます。

Lo23 23.23.23.23/32 Lo23 23.23.23.23/32 R2 R3 R5 EIGRP 外部(AS 25) AD 170 優先 iBGP(AS 35) AD 200 使われない R5 は EIGRP 外部のルート(D EX)を使う
図4 R2 から EIGRP 外部ルートとして広告する

R2

R2(config)# router eigrp 25 
R2(config-router)#  network 192.168.25.0 
R2(config-router)#  redistribute connected 

R5

R5(config)# router eigrp 25 
R5(config-router)#  network 192.168.25.0 

redistribute connected は、ルータに直接接続しているネットワーク(Connected)を、EIGRP などのルーティングプロトコルへ再配布するコマンドです。これで、R2 の Loopback23 のネットワークがほかのルータにも通知されます。

R5 のルーティングテーブルを見ると、23.23.23.23/32 を EIGRP 外部ルート(D EX)として学習しています。EIGRP 外部の AD 値は 170、iBGP の AD 値は 200 なので、同じ宛先(23.23.23.23/32)では EIGRP 外部のルートが優先され、iBGP のルートはルーティングテーブルから外れます。

R5

R5# show ip route 
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set

      23.0.0.0/32 is subnetted, 1 subnets
D EX     23.23.23.23 
           [170/156160] via 192.168.25.2, 00:02:04, FastEthernet0/0.25
〜 以降省略

RIP(AD 120)vs EIGRP 外部(AD 170)

R3 と R5 で RIP(バージョン2)を有効にし、R3 の Loopback23 を R5 へ広告します。

Lo23 23.23.23.23/32 Lo23 23.23.23.23/32 R2 R3 R5 EIGRP 外部(AS 25) AD 170 使われない RIP(v2) AD 120 優先 R5 は RIP のルート(R)を使う
図5 R3 から RIP で広告する

R3

R3(config)#router rip
R3(config-router)# version 2
R3(config-router)# network 23.0.0.0
R3(config-router)# network 192.168.35.0
R3(config-router)# no auto-summary

R5

R5(config)#router rip 
R5(config-router)# version 2
R5(config-router)# network 192.168.35.0

R5 のルーティングテーブルを見ると、23.23.23.23/32 を RIP で学習しています。RIP の AD 値は 120 で、EIGRP 外部の 170 より小さいため、RIP のルートが優先されます。

R5

R5# show ip route 
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set

      23.0.0.0/32 is subnetted, 1 subnets
R        23.23.23.23 [120/1] via 192.168.35.3, 00:00:28, FastEthernet0/0.35
〜 以降省略

IS-IS(AD 115)vs RIP(AD 120)

R2 と R5 で IS-IS(レベル1)を有効にし、R2 の Loopback23 を R5 へ広告します。

Lo23 23.23.23.23/32 Lo23 23.23.23.23/32 R2 R3 R5 IS-IS(Level-1) AD 115 優先 RIP(v2) AD 120 使われない R5 は IS-IS のルート(i L1)を使う
図6 R2 から IS-IS で広告する

R2

R2(config)# router isis
R2(config-router)#  net 49.0025.0000.0000.0002.00
R2(config-router)#  is-type level-1
R2(config-router)# exit
R2(config)# interface Loopback23
R2(config-if)#  ip router isis
R2(config-if)# exit
R2(config)# interface FastEthernet0/0.25
R2(config-subif)#  ip router isis 

R5

R5(config)# router isis
R5(config-router)#  net 49.0025.0000.0000.0005.00
R5(config-router)#  is-type level-1
R5(config-router)# exit
R5(config)# interface FastEthernet0/0.25
R5(config-subif)#  ip router isis

R5 のルーティングテーブルを見ると、23.23.23.23/32 を IS-IS(i L1)で学習しています。IS-IS の AD 値は 115 で、RIP の 120 より小さいため、IS-IS のルートが優先されます。

R5

R5# show ip route 
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set

      23.0.0.0/32 is subnetted, 1 subnets
i L1     23.23.23.23 [115/20] via 192.168.25.2, 00:11:52, FastEthernet0/0.25
〜 以降省略

OSPF(AD 110)vs IS-IS(AD 115)

R3 と R5 で OSPF を有効にし、R3 の Loopback23 を R5 へ広告します。

Lo23 23.23.23.23/32 Lo23 23.23.23.23/32 R2 R3 R5 IS-IS(Level-1) AD 115 使われない OSPF(Area 0) AD 110 優先 R5 は OSPF のルート(O)を使う
図7 R3 から OSPF で広告する

R3

R3(config)# router ospf 1 
R3(config-router)# network 192.168.35.0 0.0.0.255 area 0 
R3(config-router)# network 23.23.23.23 0.0.0.0 area 0 

R5

R5(config)# router ospf 1 
R5(config-router)# network 192.168.35.0 0.0.0.255 area 0 

R5 のルーティングテーブルを見ると、23.23.23.23/32 を OSPF で学習しています。OSPF の AD 値は 110 で、IS-IS の 115 より小さいため、OSPF のルートが優先されます。

R5

R5# show ip route 
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set

      23.0.0.0/32 is subnetted, 1 subnets
O        23.23.23.23 [110/2] via 192.168.35.3, 00:00:30, FastEthernet0/0.35
〜 以降省略

EIGRP 内部(AD 90)vs OSPF(AD 110)

R2 の EIGRP の設定から再配布(redistribute connected)を削除し、network コマンドで Loopback23 のインターフェースでも EIGRP を動かします。これで 23.23.23.23/32 は、EIGRP の内部ルートとして R5 へ広告されます。

Lo23 23.23.23.23/32 Lo23 23.23.23.23/32 R2 R3 R5 EIGRP 内部(AS 25) AD 90 優先 OSPF(Area 0) AD 110 使われない R5 は EIGRP 内部のルート(D)を使う
図8 R2 から EIGRP 内部ルートとして広告する

R2

R2(config)# router eigrp 25
R2(config-router)# no redistribute connected 
R2(config-router)# network 23.23.23.23

R5 のルーティングテーブルを見ると、23.23.23.23/32 を EIGRP(D)で学習しています。EIGRP 内部の AD 値は 90 で、OSPF の 110 より小さいため、EIGRP のルートが優先されます。

R5

R5# show ip route 
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set

      23.0.0.0/32 is subnetted, 1 subnets
D        23.23.23.23 
           [90/156160] via 192.168.25.2, 00:00:24, FastEthernet0/0.25
〜 以降省略

eBGP(AD 20)vs EIGRP 内部(AD 90)

R3 と R5 の iBGP の設定を削除し、外部 BGP(eBGP)の設定に入れ替えます。R3 を AS 3、R5 を AS 5 にしてピアリングし、R3 の Loopback23 を R5 へ広告します。

Lo23 23.23.23.23/32 Lo23 23.23.23.23/32 R2 R3 R5 EIGRP 内部(AS 25) AD 90 使われない eBGP(AS 3 → AS 5) AD 20 優先 R5 は eBGP のルート(B)を使う
図9 R3 から eBGP で広告する

R3

R3(config)# no router bgp 35 
R3(config)# router bgp 3
R3(config-router)# neighbor 192.168.35.5 remote-as 5
R3(config-router)# network 23.23.23.23 mask 255.255.255.255

R5

R5(config)# no router bgp 35
R5(config)# router bgp 5
R5(config-router)# neighbor 192.168.35.3 remote-as 3

R5 のルーティングテーブルを見ると、23.23.23.23/32 を BGP で学習しています。eBGP の AD 値は 20 で、EIGRP 内部の 90 より小さいため、eBGP のルートが優先されます。同じ B でも、iBGP(STEP 1)の 200 とは AD 値が違うことがわかります。

R5

R5# show ip route 
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set

      23.0.0.0/32 is subnetted, 1 subnets
B        23.23.23.23 [20/0] via 192.168.35.3, 00:00:15
〜 以降省略

集約ルートとスタティックルートの AD

EIGRP 集約(AD 5)

ここからは、ルータ間で AD を比べるのではなく、R5 だけで動作を確認します。R5 で、23.23.23.0/24 の EIGRP 集約ルートを作ります。

R5

R5(config)# interface FastEthernet0/0.25
R5(config-subif)# ip summary-address eigrp 25 23.23.23.0 255.255.255.0

R5 のルーティングテーブルを見ると、23.23.23.0/24 の EIGRP のルートが、宛先 Null0 で作られています。EIGRP で集約ルートを作ると、集約したルータ自身に、集約ルートと同じ宛先で Null0 を向くルートが自動で作られます。

R5

R5# show ip route 
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set

      23.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
D        23.23.23.0/24 is a summary, 00:02:24, Null0
B        23.23.23.23/32 [20/0] via 192.168.35.3, 00:01:22
〜 以降省略

この Null0 のルートの AD 値は、宛先を指定して show ip route を実行すると確認できます。

R5

R5# show ip route 23.23.23.0
Routing entry for 23.23.23.0/24
  Known via "eigrp 25", distance 5, metric 156160, type internal
  Redistributing via eigrp 25
  Routing Descriptor Blocks:
  * directly connected, via Null0
      Route metric is 156160, traffic share count is 1
      Total delay is 5100 microseconds, minimum bandwidth is 100000 Kbit
      Reliability 255/255, minimum MTU 1500 bytes
      Loading 1/255, Hops 0

スタティック(AD 1)vs EIGRP 集約(AD 5)

最後に、23.23.23.0/24 宛ての Null0 のルートをスタティックルートで設定します。

R5

R5(config)# ip route 23.23.23.0 255.255.255.0 null 0

R5 のルーティングテーブルを見ると、23.23.23.0/24 の Null0 のルートはスタティックルート(S)として登録されています。スタティックルートの AD 値は 1 で、EIGRP 集約の 5 より小さいため、スタティックルートが優先されます。

R5

R5# show ip route 
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area 
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route, H - NHRP, l - LISP
       + - replicated route, % - next hop override

Gateway of last resort is not set

      23.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
S        23.23.23.0/24 is directly connected, Null0
B        23.23.23.23/32 [20/0] via 192.168.35.3, 00:03:58
〜 以降省略

宛先を指定して確認すると、AD 値は 1 です。インターフェース(Null0)を指定したスタティックルートは directly connected と表示されますが、AD 値は直接接続の 0 ではなく、スタティックルートの 1 です。

R5

R5# show ip route 23.23.23.0
Routing entry for 23.23.23.0/24
  Known via "static", distance 1, metric 0 (connected)
  Routing Descriptor Blocks:
  * directly connected, via Null0
      Route metric is 0, traffic share count is 1

AD の比較で押さえておくこと

STEP 8・9 の出力では、23.23.23.0/24(EIGRP 集約やスタティックルート)と 23.23.23.23/32(eBGP)の両方がルーティングテーブルに入っています。AD 値で比べるのは、宛先とプレフィックス長がまったく同じルートどうしです。プレフィックス長が違えば別の宛先として扱われ、両方ともルーティングテーブルに入ります。パケットを転送するときは、AD 値に関係なく、宛先にもっとも長く一致するルート(ロンゲストマッチ)が使われます。

また、AD 値の比較で負けたルートも、OSPF や EIGRP、BGP などではプロトコル側にバックアップとして残ります。ルーティングテーブルに入っているルートが消えると、残っているルートの中から AD 値のもっとも小さいものがルーティングテーブルに入ります。この動作を使って、AD 値を大きくしたスタティックルートをバックアップにする設定がフローティングスタティックです。

補足

フローティングスタティックの設定と動作は、【Cisco】フローティングスタティック で確認しています。

まとめ

STEP比べたルートR5 が使ったルート
1iBGP(200)のみB [200/0]
2EIGRP 外部(170)vs iBGP(200)D EX [170/156160]
3RIP(120)vs EIGRP 外部(170)R [120/1]
4IS-IS(115)vs RIP(120)i L1 [115/20]
5OSPF(110)vs IS-IS(115)O [110/2]
6EIGRP 内部(90)vs OSPF(110)D [90/156160]
7eBGP(20)vs EIGRP 内部(90)B [20/0]
8EIGRP 集約(5)D 23.23.23.0/24 is a summary, Null0(distance 5)
9スタティック(1)vs EIGRP 集約(5)S 23.23.23.0/24 is directly connected, Null0(distance 1)

同じ宛先のルートが複数のプロトコルから届いたときは AD 値の小さいものが、同じプロトコルの中ではメトリックの小さいものが使われます。どちらも、宛先とプレフィックス長が同じルートどうしの比較です。

コメント