経路選択(Local Preference)
・RouterCが転送するBGPパケットにLocal Preference属性を設定して,10.10.10.0/24あてのパケットがRouterCを経由するようにする
・AS200内のルーターが10.10.10.0/24あてにパケットを送るとき,192.168.2.1経由になることを確認する
ネットワーク構成(画像を別ウインドウで表示)
RouterAのコンフィグ
!
version 12.3
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname RouterA
!
interface Loopback0
ip address 10.10.10.10 255.255.255.0
!
interface Loopback1
ip address 20.20.20.20 255.255.255.0
!
interface Serial0
ip address 192.168.1.1 255.255.255.0
clockrate 64000
!
interface Serial1
ip address 192.168.2.1 255.255.255.0
clockrate 64000
!
router bgp 100
no synchronization
bgp log-neighbor-changes
network 10.10.10.0 mask 255.255.255.0 ←BGPで10.10.10.0/24の経路情報を通知
network 20.20.20.0 mask 255.255.255.0 ←BGPで20.20.20.0/24の経路情報を通知
neighbor 192.168.1.2 remote-as 200
neighbor 192.168.2.2 remote-as 200
no auto-summary
!
line con 0
line aux 0
line vty 0 4
login
!
!
end
RouterBのコンフィグ
!
version 12.3
service timestamps debug uptime
service timestamps log uptime
no service password-encryption
!
hostname RouterB
!
interface Loopback0
ip address 2.2.2.2 255.255.255.255
!
interface Serial0
ip address 192.168.1.2 255.255.255.0
!
interface Serial1
ip address 192.168.3.1 255.255.255.0
!
router ospf 1
log-adjacency-changes
passive-interface Serial0
network 0.0.0.0 255.255.255.255 area 0
!
router bgp 200
no synchronization
bgp log-neighbor-changes
neighbor 3.3.3.3 remote-as 200
neighbor 3.3.3.3 update-source Loopback0
neighbor 4.4.4.4 remote-as 200
neighbor 4.4.4.4 update-source Loopback0
neighbor 192.168.1.1 remote-as 100
no auto-summary
!
line con 0
line aux 0
line vty 0 4
login
!
end
RouterCのコンフィグ
!
version 12.3
service timestamps debug uptime
service timestamps log uptime
no service password-encryption
!
hostname RouterC
!
interface Loopback0
ip address 3.3.3.3 255.255.255.255
!
interface Serial0
ip address 192.168.2.2 255.255.255.0
no fair-queue
!
interface Serial1
ip address 192.168.4.1 255.255.255.0
!
router ospf 1
log-adjacency-changes
passive-interface Serial0
network 0.0.0.0 255.255.255.255 area 0
!
router bgp 200
no synchronization
bgp log-neighbor-changes
neighbor 2.2.2.2 remote-as 200
neighbor 4.4.4.4 remote-as 200
neighbor 192.168.2.1 remote-as 100
neighbor 192.168.2.1 route-map LOCALPREF in ←入ってきた経路情報にルートマップ「LOCALPREF」を適用
no auto-summary
!
access-list 1 permit 10.10.10.0 0.0.0.255 ←10.10.10.0/24をアクセス・リスト1番として定義
!
route-map LOCALPREF permit 10 ←ルートマップ名「LOCALPREF」(10行目)
match ip address 1     ←IPアドレスがアクセスリスト1番にマッチしたら
set local-preference 200 ←BGP属性のLOCAL_PREFを200にセットする

!
route-map LOCALPREF permit 20 ←ルートマップ名「LOCALPREF」(20行目)
set local-preference 100 ←BGP属性のLOCAL_PREFを100にセットする

!
line con 0
line aux 0
line vty 0 4
login
!
end
RouterDのコンフィグ
!
version 12.3
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname RouterD
!
interface Loopback0
ip address 4.4.4.4 255.255.255.255
!
interface Serial0
ip address 192.168.3.2 255.255.255.0
clockrate 64000
!
interface Serial1
ip address 192.168.4.2 255.255.255.0
clockrate 64000
!
router ospf 1
log-adjacency-changes
network 0.0.0.0 255.255.255.255 area 0
!
router bgp 200
no synchronization
bgp log-neighbor-changes
neighbor 2.2.2.2 remote-as 200
neighbor 2.2.2.2 update-source Loopback0
neighbor 3.3.3.3 remote-as 200
neighbor 3.3.3.3 update-source Loopback0
no auto-summary
!
line con 0
line aux 0
line vty 0 4
login
!
!
end
確認
BGPの特徴は,BGPパケットに属性値をセットして,パケットの経路を柔軟に操作できるところです。
ここでは,AS内のBGPスピーカに対して経路情報の優先度を知らせる,local preference(LOCAL_PREF)属性を使ってみましょう。

●LOCAL_PREF属性とは?
LOCAL_PREF属性は,IBGP専用の属性で,AS内のBGPスピーカーに,経路情報の優先度を知らせる用途で使います。
「低速回線のピアよりも高速回線のピアを使いたい」などという場合に使います。
IBGPで同じあて先の経路情報を複数取得したとき,LOCAL_PREF値の大きい方をベストパスとして採用します。
設定できる値は0〜4294967295で,何も設定しなければデフォルトで100が設定されます。

●ネットワーク構成の確認
上のネットワーク構成図を見て下さい。
ここで操作するのは,10.10.10.0/24の経路情報です。
AS200から見ると,10.10.10.0/24あての経路は,上(192.168.1.1)経由と下(192.168.2.1)経由の二つあります。
ここでは,RouterCに入ってきた10.10.10.0/24の経路情報のLOCAL_PREFを,デフォルトの100から200に変更して,AS200内に伝達するようにします。
こうすることにより,AS200内では10.10.10.0/24あてのパケットは,下(192.168.2.1)の経路を経由するようにします。

では,RouterCの太字のコマンドを入れていない状態から見ていきましょう

●設定前の状態確認
RouterCにLOCAL_PREFを設定する前の,RouterDのBGPテーブルを見てみます。
10.10.10.0/24あてのパケットは,192.168.1.1を経由するようになっています。

RouterD#show ip bgp
BGP table version is 5, local router ID is 4.4.4.4
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
       r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

  Network       Next Hop      Metric LocPrf Weight Path
*>i10.10.10.0/24  192.168.1.1       0  100   0    100 i
* i            192.168.2.1       0  100   0    100 i
*>i20.20.20.0/24  192.168.1.1       0  100   0    100 i
* i            192.168.2.1       0  100   0    100 i


RouterDのルーティング・テーブルも見てみましょう。
10.10.10.0/24の経路情報は,BGPテーブルでベストパスだった192.168.1.1経由になっています。

RouterD#show ip route
Codes: 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

Gateway of last resort is not set

   2.0.0.0/32 is subnetted, 1 subnets
O    2.2.2.2 [110/65] via 192.168.3.1, 00:02:10, Serial0
   3.0.0.0/32 is subnetted, 1 subnets
O    3.3.3.3 [110/65] via 192.168.4.1, 00:02:10, Serial1
   4.0.0.0/32 is subnetted, 1 subnets
C    4.4.4.4 is directly connected, Loopback0
   20.0.0.0/24 is subnetted, 1 subnets
B    20.20.20.0 [200/0] via 192.168.1.1, 00:02:04
C  192.168.4.0/24 is directly connected, Serial1
   10.0.0.0/24 is subnetted, 1 subnets
B    10.10.10.0 [200/0] via 192.168.1.1, 00:02:05
O  192.168.1.0/24 [110/128] via 192.168.3.1, 00:02:11, Serial0
O  192.168.2.0/24 [110/128] via 192.168.4.1, 00:02:11, Serial1
C  192.168.3.0/24 is directly connected, Serial0



●RouterCにLOCAL_PREFを設定する
RouterCにLOCAL_PREFを設定して配布するようにしましょう。
BGP属性を変更してアドバタイズするには,ルートマップを使います。
ルートマップは,「経路情報が〜の条件にマッチしたら〜せよ」というように,経路情報を細かく操作できます。
今回はRouterCに,「10.10.10.10/24の経路情報が入ってきたら,LOCAL_PREF属性を200にして配布せよ」と設定します。
コマンドは,以下のようになります。

RouterC(config)#route-map LOCALPREF permit 10
RouterC(config-route-map)#match ip address 1
RouterC(config-route-map)#set local-preference 200
RouterC(config-route-map)#exit
RouterC(config)#route-map LOCALPREF permit 20
RouterC(config-route-map)#set local-preference 100
RouterC(config-route-map)#exit
RouterC(config)#access-list 1 permit 10.10.10.0 0.0.0.255
RouterC(config)#router bgp 200
RouterC(config-router)#neighbor 192.168.2.1 route-map LOCALPREF in


ルートマップ名「LOCALPREF」
 10:経路情報が10.10.10.0/24だったらLOCAL_PREF値に200をセット
 20:それ以外だったらLOCAL_PREF値に100をセット(デフォルトと同じ動き)
→このルートマップを,ネイバー192.168.2.1から入ってきた経路情報に対して適用する

という感じです。

●設定後の動作確認
設定を反映させるため,RouterCのBGPピアをリセットして再確立させます。
二つのピアがダウンして,しばらくすると二つのピアが再確立されました。

RouterC#clear ip bgp *
RouterC#
01:36:01: %BGP-5-ADJCHANGE: neighbor 4.4.4.4 Down User reset
01:36:01: %BGP-5-ADJCHANGE: neighbor 192.168.2.1 Down User reset
01:36:30: %BGP-5-ADJCHANGE: neighbor 4.4.4.4 Up
01:36:45: %BGP-5-ADJCHANGE: neighbor 192.168.2.1 Up


RouterDのBGPテーブルを見てみましょう。
すると,ベストパスを示す「>」のステータス・コードが,ネクストホップが192.168.2.1の経路情報の方に変わりました(赤字の部分)。
この経路情報のLocPrefの項目を見ると,「200」になっています。
つまりRouterDは,LOCAL_PREF値が大きいこちらの方の経路情報を,ベストパスに選んだわけです。

RouterD#show ip bgp
BGP table version is 8, local router ID is 4.4.4.4
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
       r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

  Network      Next Hop      Metric LocPrf Weight  Path
* i10.10.10.0/24  192.168.1.1       0  100   0    100 i
*>i            192.168.2.1       0  200   0    100 i
*>i20.20.20.0/24  192.168.1.1       0  100   0    100 i
* i            192.168.2.1       0  100   0    100 i


RouterDのルーティング・テーブルも見てみましょう。
10.10.10.0/24の経路情報のネクストホップが,192.168.2.1に変わりました。

RouterD#show ip route
Codes: 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

Gateway of last resort is not set

   2.0.0.0/32 is subnetted, 1 subnets
O    2.2.2.2 [110/65] via 192.168.3.1, 00:09:06, Serial0
   3.0.0.0/32 is subnetted, 1 subnets
O    3.3.3.3 [110/65] via 192.168.4.1, 00:09:06, Serial1
   4.0.0.0/32 is subnetted, 1 subnets
C    4.4.4.4 is directly connected, Loopback0
   20.0.0.0/24 is subnetted, 1 subnets
B    20.20.20.0 [200/0] via 192.168.1.1, 00:09:01
C  192.168.4.0/24 is directly connected, Serial1
   10.0.0.0/24 is subnetted, 1 subnets
B    10.10.10.0 [200/0] via 192.168.2.1, 00:01:34
O  192.168.1.0/24 [110/128] via 192.168.3.1, 00:09:07, Serial0
O  192.168.2.0/24 [110/128] via 192.168.4.1, 00:09:07, Serial1
C  192.168.3.0/24 is directly connected, Serial0


念のため,RouterBのBGPテーブルも見てみましょう。

RouterB#show ip bgp
BGP table version is 4, local router ID is 2.2.2.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
       r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

  Network      Next Hop      Metric LocPrf Weight  Path
*>i10.10.10.0/24  192.168.2.1       0  200   0    100 i
*             192.168.1.1       0       0    100 i
* i20.20.20.0/24  192.168.2.1       0  100   0    100 i
*>            192.168.1.1       0       0     100 i


LOCAL_PREFが200の経路情報を受信して,それがベストパスになっています。
RouterBが10.10.10.0/24あてにパケットを送るときは,RouterD,RouterCという遠回りの経路を採用するようになったわけです。
このように,BGPパケットのLOCAL_PREF属性を操作することで,AS内で特定のパス優先的に通せるわけです。

BGPラボ
BGPの基本設定
BGP同期
BGPの経路集約
ルート・リフレクタ

経路選択(Local Preference)
経路選択(MED)

経路選択(AS Path)
経路情報のフィルタ(ネットワーク番号)
経路情報のフィルタ(AS Path)
BGPコンフェデレーション

バックドア・リンク

BGPコミュニティ