経路選択(AS Path)
・RouterAが送り出すBGPパケットのAS PATH属性を使って,AS200が10.10.10.0/24あてに送り出すパケットが192.168.2.1経由になるようにする
・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 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
neighbor 192.168.1.2 remote-as 50
neighbor 192.168.1.2 route-map ADDASPATH out ←出て行く経路情報にルートマップ「ADDASPATH」を適用
neighbor 192.168.2.2 remote-as 60
no auto-summary
!
access-list 1 permit 10.10.10.0 0.0.0.255 ←対象とする経路情報は10.10.10.0/24(以下のルートマップで使用)
!
route-map ADDASPATH permit 10 ←MEDを50にセットするルートマップ
match ip address 1 
←アクセス・リスト1番に該当する経路情報は
set as-path prepend 100 100 
←AS PATHに「100 100」を追加して配信
!
route-map ADDASPATH permit 20

!
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 Serial0
ip address 192.168.1.2 255.255.255.0
!
interface Serial1
ip address 192.168.3.1 255.255.255.0
!
router bgp 50
no synchronization
bgp log-neighbor-changes
neighbor 192.168.1.1 remote-as 100
neighbor 192.168.3.2 remote-as 200
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 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 bgp 60
no synchronization
bgp log-neighbor-changes
neighbor 192.168.2.1 remote-as 100
neighbor 192.168.4.2 remote-as 200
no auto-summary
!
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 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 bgp 200
no synchronization
bgp log-neighbor-changes
neighbor 192.168.3.1 remote-as 50
neighbor 192.168.4.1 remote-as 60
no auto-summary
!
line con 0
line aux 0
line vty 0 4
login
!
end
確認
MED属性を加えた経路情報が伝わるのはは隣接するASまでで,その先のASには伝わりません。
その先のASに優先順位情報を伝えるためには,「AS PATHプリペンド」という方法を使います。

●AS PATH属性とは?
AS PATH属性は,経由してきたASを記録しておくためのものです。
ASを経由するごとにAS PATHにAS番号が追加され,記録されたAS番号の数が少ない方の経路情報を採用します。
他の属性を設定していないときは,この属性によってベストパスが決まります。
ASを「1個のルーター」とみなした場合の,「ホップ数」というイメージです。
また,「AS PATHの中に自分のAS番号が入ってきたら破棄し,経路情報のループを防ぐという役割もあります。

●ネットワーク構成の確認
上のネットワーク構成図を見て下さい。
AS100が外部にBGPピアを2個持っています。
でもAS100では,10.10.10.0/24あてのパケットは,192.168.2.1側のルート(下側のルート)からトラフィックが入ってくるようにしたいと思っています。
そこでASパス属性を使って,10.10.10.0/24あてのパケットが192.168.2.1に流れてくるようにします。
では,RouterAの太字のコマンドを入れていない状態から見ていきましょう。

●設定前の状態確認
RouterDのBGPテーブルを見てみましょう。
10.10.10.0/24あての経路情報は,192.168.3.1(RouterB)経由になっています。

RouterD#show ip bgp
BGP table version is 2, local router ID is 192.168.4.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
* 10.10.10.0/24  192.168.4.1                 0  60 100 i
*>            192.168.3.1                 0  50 100 i


RouterDのルーティング・テーブルも見てみましょう。
ベストパスだった192.168.3.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

C  192.168.4.0/24 is directly connected, Serial1
   10.0.0.0/24 is subnetted, 1 subnets
B    10.10.10.0 [20/0] via 192.168.3.1, 00:12:44
C  192.168.3.0/24 is directly connected, Serial0


●RouterAにAS PATHプリペンドの設定をする
それでは,RouterAにAS PATH属性を設定します。
どういう方法をとるかというと,「RouterBに送出するBGPの経路情報には,AS PATH番号『100 100』を追加する」という方法を取ります。
通常ならばRouterAが他ASのBGPスピーカに経路情報を配信するときには,自分のAS PATH属性「100」を1個だけ追加して送ります。
ですがここでは,意図的にAS番号「100」を2個追加して,「こっちの経路は遠いぞ」と通知してやるわけです。
このように意図的にAS番号を追加することを,「AS PATHプリペンド」と言います。

AS PATHプリペンドの設定は,以下のようになります。
最初に,対象の経路情報である10.10.10.0/24をアクセス・リストで定義します。

RouterA(config)#access-list 1 permit 10.10.10.0 0.0.0.255

次に,ルートマップを定義します。
「アクセスリスト1番にマッチした経路情報は,AS PATHに『100 100』をプリペンドする」と設定します

RouterA(config)#route-map ADDASPATH permit 10
RouterA(config-route-map)#match ip address 1
RouterA(config-route-map)#set as-path prepend 100 100
RouterA(config-route-map)#route-map ADDASPATH permit 20
RouterA(config-route-map)#set as-path prepend


そして定義したルートマップを,ネイバーに適用します。
RouterAが送り出す外向きの経路情報にMED属性を加えるので,「out」と指定します。

RouterA(config)#router bgp 100
RouterA(config-router)#neighbor 192.168.1.2 route-map ADDASPATH out


●設定後の動作確認
RouterAのBGPピアをいったんリセットして再確立させます。
clear ip bgp *コマンドを使います。

RouterA#clear ip bgp *
RouterA#
*Mar 1 00:33:24.839: %BGP-5-ADJCHANGE: neighbor 192.168.1.2 Down User reset
*Mar 1 00:33:24.843: %BGP-5-ADJCHANGE: neighbor 192.168.2.2 Down User reset
*Mar 1 00:34:04.431: %BGP-5-ADJCHANGE: neighbor 192.168.1.2 Up
*Mar 1 00:34:08.071: %BGP-5-ADJCHANGE: neighbor 192.168.2.2 Up


RouterDのBGPテーブルを見てみましょう。

RouterD#show ip bgp
BGP table version is 5, local router ID is 192.168.4.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
*> 10.10.10.0/24  192.168.4.1                0  60 100 i
*             192.168.3.1                0  50 100 100 100 i


10.10.10.0/24あてのベストパスが,192.168.4.1(RouterC)に変更されました。
「Path」の項目に注目してください。
192.168.3.1(RouterB)から受信した経路情報のAS PATHが「50 100 100 100」となっています。
PATHプリペンドで,「100 100」とASパス番号を2個追加したことが確認できます。
ルーターはこの情報を,「ここまでに経由してきたASは,100→100→100→50の4個」と読み取ります。
なのでRouterDは,この経路情報は「遠い」と判断して,ベストパスを他の経路情報にしたわけです。

RouterDのルーティング・テーブルも見てみましょう。

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

C  192.168.4.0/24 is directly connected, Serial1
   10.0.0.0/24 is subnetted, 1 subnets
B    10.10.10.0 [20/0] via 192.168.4.1, 00:01:08
C  192.168.3.0/24 is directly connected, Serial0


BGPテーブルでベストパスだった経路情報が採用され,10.10.10.0/24あてのネクストホップが192.168.4.1(RouterC)になりました。

最後に,RouterAのルートマップを確認してみましょう。

RouterA#show route-map
route-map ADDASPATH, permit, sequence 10
 Match clauses:
  ip address (access-lists): 1
 Set clauses:
  as-path prepend 100 100
 Policy routing matches: 0 packets, 0 bytes
route-map ADDASPATH, permit, sequence 20
 Match clauses:
 Set clauses:
 Policy routing matches: 0 packets, 0 bytes


AS PATHプリペンドで,AS PATHに「100 100」を追加して送っていることがわかります。

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

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

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

バックドア・リンク

BGPコミュニティ