概要

BGPルートのアドミニストレイティブディスタンスを制御すると、他のルーティングプロセスのルートよりもBGPルートを優先させられます。BGPルートのアドミニストレイティブディスタンスの制御方法について解説します。

アドミニストレイティブディスタンスの制御方法

BGPルートのデフォルトのアドミニストレイティブディスタンスは、以下の通りです。

  • EBGPルート:20
  • IBGPルート:200

BGPルートのアドミニストレイティブディスタンスを制御することで、他のルーティングプロセスのルートよりもBGPルートを優先できます。BGPルートのアドミニストレイティブディスタンスを制御する主な方法として、以下の3つあります。

  • distanceコマンド
  • distance bgpコマンド
  • BGPバックドア

distanceコマンド

BGPルートのアドミニストレイティブディスタンスの変更には、次のような設定を行います。

BGP distanceコマンド

(config)#router bgp <AS>
(config-router)#distance <AD-value> <neighbor-address> <wildcard-mask> <ACL>

<AS>:AS番号
<AD-value>:変更したいアドミニストレイティブディスタンス値
<neighbor-address>:ネイバーのIPアドレス
<wildcard-mask>:ネイバーアドレスに対するワイルドカードマスク
<ACL>:アクセスリスト番号。

<neighbor-address>と<wildcard-mask>によって、特定のネイバーから受信したルートのアドミニストレイティブディスタンスを変更することができます。なお、<neighbor-address>と<wildcard-mask>の指定を0.0.0.0 255.255.255.255とすると、「any」と同じ意味になります。

また、最後にアクセスリスト番号を関連付けることによって、アクセスリストでpermitされたルートのアドミニストレイティブディスタンスだけを変更することができます。

distanceコマンドの設定例

次のネットワーク構成でdistanceコマンドを設定します。

図 distanceコマンドの確認用トポロジ
図 distanceコマンドの確認用トポロジ

まず、R1のBGPテーブルとルーティングテーブルを確認します。

R1 BGPテーブル、ルーティングテーブル

R1#show ip bgp
-- omitted --

   Network          Next Hop            Metric LocPrf Weight Path
*> 100.1.1.0/24     172.16.1.11              0             0 1 i
*> 100.1.2.0/24     172.16.1.11              0             0 1 i
*> 100.1.3.0/24     172.16.1.11              0             0 1 i
r>i100.100.1.0/24   3.3.3.3                  0    100      0 i
r>i100.100.2.0/24   3.3.3.3                  0    100      0 i
r>i100.100.3.0/24   3.3.3.3                  0    100      0 i
R1#show ip route
-- omitted --


Gateway of last resort is not set

     1.0.0.0/32 is subnetted, 1 subnets
C       1.1.1.1 is directly connected, Loopback0
C    192.168.13.0/24 is directly connected, FastEthernet0/1
     100.0.0.0/24 is subnetted, 6 subnets
O       100.100.1.0 [110/2] via 192.168.13.3, 00:03:43, FastEthernet0/1
O       100.100.2.0 [110/2] via 192.168.13.3, 00:03:43, FastEthernet0/1
O       100.100.3.0 [110/2] via 192.168.13.3, 00:03:43, FastEthernet0/1
B       100.1.1.0 [20/0] via 172.16.1.11, 01:34:59
B       100.1.3.0 [20/0] via 172.16.1.11, 01:34:59
B       100.1.2.0 [20/0] via 172.16.1.11, 01:34:59
     3.0.0.0/32 is subnetted, 1 subnets
O       3.3.3.3 [110/2] via 192.168.13.3, 01:35:01, FastEthernet0/1
     172.16.0.0/24 is subnetted, 1 subnets
C       172.16.1.0 is directly connected, FastEthernet0/0

100.100.1.0/24、100.100.2.0/24、100.100.3.0/24はIBGPとOSPF両方で学習しています。アドミニストレイティブディスタンスによって、OSPFのルートがルーティングテーブルに載せられています。BGPテーブル上では、ベストパスがルーティングテーブルに載っていないので「r」がつけられています。「r」はRIB-Failure状態を意味します。

100.1.1.0/24、100.1.2.0/24、100.1.3.0/24はEBGPで学習しています。EBGPルートなのでアドミニストレイティブディスタンスがデフォルトの20であることがわかります。

この状態から、R1で次のようにアドミニストレイティブディスタンスを変更します。

  • R3から受信する100.100.1.0/24のアドミニストレイティブディスタンスを90に
  • ISP1から受信するルートのアドミニストレイティブディスタンスを100に

R1の設定は下記のように行います。

R1 アドミニストレイティブディスタンスの変更

access-list 1 permit 100.100.1.0
!
router bgp 100
 distance 90 3.3.3.3 0.0.0.0 1
 distance 100 172.16.1.11 0.0.0.0

設定後、R1のBGPテーブルおよびルーティングテーブルは次のように変わります。

R1 BGPテーブル、ルーティングテーブル(アドミニストレイティブディスタンス変更後)

R1#show ip bgp
-- omitted --

   Network          Next Hop            Metric LocPrf Weight Path
*> 100.1.1.0/24     172.16.1.11              0             0 1 i
*> 100.1.2.0/24     172.16.1.11              0             0 1 i
*> 100.1.3.0/24     172.16.1.11              0             0 1 i
*>i100.100.1.0/24   3.3.3.3                  0    100      0 i
r>i100.100.2.0/24   3.3.3.3                  0    100      0 i
r>i100.100.3.0/24   3.3.3.3                  0    100      0 i
R1#show ip route
-- omitted --

Gateway of last resort is not set

     1.0.0.0/32 is subnetted, 1 subnets
C       1.1.1.1 is directly connected, Loopback0
C    192.168.13.0/24 is directly connected, FastEthernet0/1
     100.0.0.0/24 is subnetted, 6 subnets
B       100.100.1.0 [90/0] via 3.3.3.3, 00:00:06
O       100.100.2.0 [110/2] via 192.168.13.3, 00:00:06, FastEthernet0/1
O       100.100.3.0 [110/2] via 192.168.13.3, 00:00:06, FastEthernet0/1
B       100.1.1.0 [100/0] via 172.16.1.11, 00:00:07
B       100.1.3.0 [100/0] via 172.16.1.11, 00:00:07
B       100.1.2.0 [100/0] via 172.16.1.11, 00:00:07
     3.0.0.0/32 is subnetted, 1 subnets
O       3.3.3.3 [110/2] via 192.168.13.3, 00:00:09, FastEthernet0/1
     172.16.0.0/24 is subnetted, 1 subnets
C       172.16.1.0 is directly connected, FastEthernet0/0

100.100.1.0/24のアドミニストレイティブディスタンスが90になったことで、100.100.1.0/24のルートはBGPのルートに変わりました。BGPテーブル上でも100.100.1.0/24は「r」の表示がなくなっています。

また、100.1.1.0/24、100.1.2.0/24、100.1.3.0/24のアドミニストレイティブディスタンスが100に変わったことも確認できます。

distance bgpコマンド

BGPルートのアドミニストレイティブディスタンスを変更するには、distance bgpコマンドもあります。distance bgpコマンドの構文は次の通りです。

distance bgpコマンド

(config)#router bgp <AS>
(config-router)#distance bgp <external> <internal> <local>

<AS>:AS番号
<external>:EBGPルートのアドミニストレイティブディスタンス値
<internal>:IBGPルートのアドミニストレイティブディスタンス値
<local>:集約設定時のNull0ルートやnetworkコマンド、再配送でローカルに生成したルートのアドミニストレイティブディスタンス値

distance bgpコマンドは、EBGPルート、IBGPルートおよびローカルで生成したBGPルートといったBGPルートの分類ごとにアドミニストレイティブディスタンスを変更します。

distance bgpコマンドの設定例

図 distance bgpコマンド確認用トポロジ
図 distance bgpコマンド確認用トポロジ

図のR1でdistance bgpコマンドを設定します。R1では、199.1.0.0/16の集約ルートを生成しています。R1のBGPテーブルおよびルーティングテーブルは次のようになっています。

R1 BGPテーブル、ルーティングテーブル

R1#show ip bgp
-- omitted --

   Network          Next Hop            Metric LocPrf Weight Path
*> 100.1.1.0/24     172.16.1.11              0             0 1 i
*> 100.1.2.0/24     172.16.1.11              0             0 1 i
*> 100.1.3.0/24     172.16.1.11              0             0 1 i
r>i100.100.1.0/24   3.3.3.3                  0    100      0 i
r>i100.100.2.0/24   3.3.3.3                  0    100      0 i
r>i100.100.3.0/24   3.3.3.3                  0    100      0 i
*> 199.1.0.0/16     0.0.0.0                            32768 i
s> 199.1.1.0        0.0.0.0                  0         32768 i
R1#show ip route
-- omitted --

     1.0.0.0/32 is subnetted, 1 subnets
C       1.1.1.1 is directly connected, Loopback0
C    192.168.13.0/24 is directly connected, FastEthernet0/1
     100.0.0.0/24 is subnetted, 6 subnets
O       100.100.1.0 [110/2] via 192.168.13.3, 00:00:06, FastEthernet0/1
O       100.100.2.0 [110/2] via 192.168.13.3, 00:00:06, FastEthernet0/1
O       100.100.3.0 [110/2] via 192.168.13.3, 00:00:06, FastEthernet0/1
B       100.1.1.0 [20/0] via 172.16.1.11, 00:00:07
B       100.1.3.0 [20/0] via 172.16.1.11, 00:00:07
B       100.1.2.0 [20/0] via 172.16.1.11, 00:00:07
     3.0.0.0/32 is subnetted, 1 subnets
O       3.3.3.3 [110/2] via 192.168.13.3, 00:00:08, FastEthernet0/1
     172.16.0.0/24 is subnetted, 1 subnets
C       172.16.1.0 is directly connected, FastEthernet0/0
C    199.1.1.0/24 is directly connected, Loopback1
B    199.1.0.0/16 [200/0] via 0.0.0.0, 00:00:08, Null0

100.100.1.0/24、100.100.2.0/24、100.100.3.0/24はIBGPとOSPF両方で学習しています。アドミニストレイティブディスタンスによって、OSPFのルートがルーティングテーブルに載せられています。BGPテーブル上では、ベストパスがルーティングテーブルに載っていないので「r」がつけられています。

100.1.1.0/24、100.1.2.0/24、100.1.3.0/24はEBGPで学習しています。EBGPルートなのでアドミニストレイティブディスタンスがデフォルトの20であることがわかります。

また、R1で生成した集約ルート199.1.0.0/16に対するNull0向けのルートは、アドミニストレイティブディスタンス値が200です。

ここからR1でdistance bgpコマンドで、次のようにアドミニストレイティブディスタンスを変更します。

  • EBGPルートのアドミニストレイティブディスタンス値:50
  • IBGPルートのアドミニストレイティブディスタンス値:80
  • 集約ルートのNull0エントリのアドミニストレイティブディスタンス値:30

R1 distance bgp

router bgp 100
 distance bgp 50 80 30

distance bgp設定後のR1のBGPテーブル、ルーティングテーブルは次の通りです。

R1 BGPテーブル、ルーティングテーブル(distance bgp設定後)

R1#show ip bgp
-- omitted --

   Network          Next Hop            Metric LocPrf Weight Path
*> 100.1.1.0/24     172.16.1.11              0             0 1 i
*> 100.1.2.0/24     172.16.1.11              0             0 1 i
*> 100.1.3.0/24     172.16.1.11              0             0 1 i
*>i100.100.1.0/24   3.3.3.3                  0    100      0 i
*>i100.100.2.0/24   3.3.3.3                  0    100      0 i
*>i100.100.3.0/24   3.3.3.3                  0    100      0 i
*> 199.1.0.0/16     0.0.0.0                            32768 i
s> 199.1.1.0        0.0.0.0                  0         32768 i
R1#show ip route
-- omitted --

     1.0.0.0/32 is subnetted, 1 subnets
C       1.1.1.1 is directly connected, Loopback0
C    192.168.13.0/24 is directly connected, FastEthernet0/1
     100.0.0.0/24 is subnetted, 6 subnets
B       100.100.1.0 [80/0] via 3.3.3.3, 00:00:06
B       100.100.2.0 [80/0] via 3.3.3.3, 00:00:06
B       100.100.3.0 [80/0] via 3.3.3.3, 00:00:06
B       100.1.1.0 [50/0] via 172.16.1.11, 00:00:06
B       100.1.3.0 [50/0] via 172.16.1.11, 00:00:07
B       100.1.2.0 [50/0] via 172.16.1.11, 00:00:07
     3.0.0.0/32 is subnetted, 1 subnets
O       3.3.3.3 [110/2] via 192.168.13.3, 00:00:08, FastEthernet0/1
     172.16.0.0/24 is subnetted, 1 subnets
C       172.16.1.0 is directly connected, FastEthernet0/0
C    199.1.1.0/24 is directly connected, Loopback1
B    199.1.0.0/16 [30/0] via 0.0.0.0, 00:00:08, Null0

IBGPルートのアドミニストレイティブディスタンス値が80になったことで、100.100.1.0/24、100.100.2.0/24、100.100.3.0/24についてOSPFよりもIBGPルートが優先され、ルーティングテーブルに載せられています。BGPテーブル上の「r」の表示も消えています。

また、EBGPルートのアドミニストレイティブディスタンス値が50になり、集約ルートのNull0エントリのアドミニストレイティブディスタンス値が30になったこともわかります。

BGPバックドア

特定のEBGPルートのアドミニストレイティブディスタンス値を変更するためのBGPバックドア機能もあります。BGPバックドアでは、特定のEBGPルートのアドミニストレイティブディスタンス値を200にします。

ASをまたがってIGPを利用していて、EBGPルートよりもIGPルートを優先したいときにBGPバックドアを利用できます。BGPバックドアは、次のようにnetworkコマンドの最後にオプションとしてbackdoorを追加します。

BGPバックドア

(config)#router bgp <AS>
(config-router)#network <address> {mask <subnetmask>} backdoor

<AS>:AS番号
<address>:ネットワークアドレス
<subnetmask>:サブネットマスク

これにより、指定したネットワークアドレス/サブネットマスクのEBGPルートのアドミニストレイティブディスタンス値を200に変更することができます。

まとめ

ポイント

  • BGPルートのアドミニストレイティブディスタンスを制御することで、他のルーティングプロセスのルートよりもBGPルートを優先させられます。
  • BGPルートのアドミニストレイティブディスタンスを制御する主な方法として、以下の3つあります。
    • distanceコマンド
    • distance bgpコマンド
    • BGPバックドア

BGPの仕組み