経路選択(MED)
・RouterAが通知する経路情報(10.10.10.0/24)にMED属性を加えて配信し,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 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
network 20.20.20.0 mask 255.255.255.0
neighbor 192.168.1.2 remote-as 200
neighbor 192.168.1.2 route-map MED100 out ←出て行く経路情報にルートマップ「MED100」を適用
neighbor 192.168.2.2 remote-as 200
neighbor 192.168.2.2 route-map MED50 out ←出て行く経路情報にルートマップ「MED50」を適用
no auto-summary
!
access-list 1 permit 10.10.10.0 0.0.0.255 ←10.10.10.0/24の経路情報にMEDをセット(以下のルートマップで使用)
!
route-map MED50 permit 10 ←MEDを50にセットするルートマップ
match ip address 1
set metric 50
!
route-map MED50 permit 20

!
route-map MED100 permit 10 ←MEDを100にするルートマップ
match ip address 1
set metric 100
!
route-map MED100 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 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
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 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属性を使うと,ピアリングしているASに「こっちの経路を優先して使って下さい」という操作もできます。
それが,MED(multi exit discriminator)と呼ばれる属性です。

●MED属性とは?
MED属性は,接続相手のASと複数のピアでつないでいるときに,相手のASからどのピアを使ってもらうかを指定したいときに使います。
LOCAL_PREFが「自ASが相手ASに」送るパケットを操作するのに対して,MEDは「相手ASが自ASに」送るパケットを操作するわけです。
ルーターは,BGPで同じあて先の経路情報を複数受信すると,MED値が小さい方の経路情報をベストパスとして採用します。
また,MED属性を加えた経路情報が伝わるのはは隣接するASまでで,その先のASには伝わりません。

●ネットワーク構成の確認
上のネットワーク構成図を見て下さい。
AS100とAS200をつなぐ経路は二つありますが,AS100の管理者は,「10.10.10.0/24あてのパケットは,下のRouterC経由で受け取りたい」と思っているとします。
例えば,RouterAとRouterB間の帯域が,RouterAとRouterCの帯域より小さいケースです。
そこでMED属性を使って,10.10.10.0/24あてのパケットが下のRouterC経由で流れてくるようにします。
では,RouterAの太字のコマンドを入れていない状態から見ていきましょう

●設定前の状態確認
RouterAにMEDを設定する前に,RouterBの状態を見てみましょう。
まずはRouterBのBGPテーブル。
10.10.10.0/24の経路情報に注目すると,ネクストホップが192.168.1.1の経路情報がベストパスになっています。

RouterB#show ip bgp
BGP table version is 3, 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  100   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


RouterBのルーティング・テーブルも見てみましょう。
10.10.10.0/24の経路情報は,192.168.1.1がネクストホップになっています。
BGPテーブルでベストパスだった経路情報がルーティング・テーブルに採用されているわけですね。

RouterB#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
C    2.2.2.2 is directly connected, Loopback0
   3.0.0.0/32 is subnetted, 1 subnets
O    3.3.3.3 [110/129] via 192.168.3.2, 00:12:49, Serial1
   4.0.0.0/32 is subnetted, 1 subnets
O    4.4.4.4 [110/65] via 192.168.3.2, 00:12:49, Serial1
   20.0.0.0/24 is subnetted, 1 subnets
B    20.20.20.0 [20/0] via 192.168.1.1, 00:11:35
O  192.168.4.0/24 [110/128] via 192.168.3.2, 00:12:49, Serial1
   10.0.0.0/24 is subnetted, 1 subnets
B    10.10.10.0 [20/0] via 192.168.1.1, 00:11:36
C  192.168.1.0/24 is directly connected, Serial0
O  192.168.2.0/24 [110/192] via 192.168.3.2, 00:12:51, Serial1
C  192.168.3.0/24 is directly connected, Serial1


●RouterAにMEDを設定する
それでは,RouterAにMEDを設定します。
ここでは,RouterB転送用とRouterC転送用の二つのルートマップを作ります。
具体的には,RouterBに送る経路情報のMED値を100にし,RouterCに送る経路情報のMED値を50にします。
こうすればAS100内のBGPスピーカは,RouterCが広報したMED値の小さい方の経路情報を採用するはずです。

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

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

BGPの経路情報のMED値を50にするルートマップを作ります。
ルートマップ名は「MED50」にします。

RouterA(config)#route-map MED50 permit 10
RouterA(config-route-map)#match ip address 1
RouterA(config-route-map)#set metric 50
RouterA(config-route-map)#exit
RouterA(config)#route-map MED50 permit 20
RouterA(config-route-map)#set metric


続いて,BGPの経路情報のMED値を100にするルートマップを作ります。
ルートマップ名は「MED100」にします。

RouterA(config)#route-map MED100 permit 10
RouterA(config-route-map)#match ip address 1
RouterA(config-route-map)#set metric 100
RouterA(config-route-map)#exit
RouterA(config)#route-map MED100 permit 20
RouterA(config-route-map)#set metric

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

RouterA(config)#router bgp 100
RouterA(config-router)#neighbor 192.168.2.2 route-map MED50 out
RouterA(config-router)#neighbor 192.168.1.2 route-map MED100 out

設定は以上です。

●設定後の動作確認
RouterBとRouterCが確立しているBGPピアをいったんリセットして再確立させます。
すべてのBGPピアをリセットするには,clear ip bgp *コマンドを使います。

RouterC#
clear ip bgp *
RouterC#
00:39:07: %BGP-5-ADJCHANGE: neighbor 2.2.2.2 Down User reset
00:39:07: %BGP-5-ADJCHANGE: neighbor 4.4.4.4 Down User reset
00:39:07: %BGP-5-ADJCHANGE: neighbor 192.168.2.1 Down User reset
00:39:36: %BGP-5-ADJCHANGE: neighbor 2.2.2.2 Up
00:39:37: %BGP-5-ADJCHANGE: neighbor 4.4.4.4 Up
00:39:45: %BGP-5-ADJCHANGE: neighbor 192.168.2.1 Up


三つのピアがリセットされて,しばらくすると三つとも再確立しました。
RouterBも同様に再確立させます。

RouterB#clear ip bgp *
RouterB#
00:40:08: %BGP-5-ADJCHANGE: neighbor 3.3.3.3 Down User reset
00:40:08: %BGP-5-ADJCHANGE: neighbor 4.4.4.4 Down User reset
00:40:08: %BGP-5-ADJCHANGE: neighbor 192.168.1.1 Down User reset
00:40:37: %BGP-5-ADJCHANGE: neighbor 4.4.4.4 Up
00:40:38: %BGP-5-ADJCHANGE: neighbor 3.3.3.3 Up
00:40:50: %BGP-5-ADJCHANGE: neighbor 192.168.1.1 Up


RouterBのBGPテーブルを見てみましょう。
10.10.10.0/24の経路情報のベストパスが,ネクストホップが192.168.2.1のものに変わりました。
この経路情報を見てみると,「Metric」の項目が50になっており,これがMEDです。
もう一方の経路情報のMetricは100であり,値の小さい192.168.2.1経由の経路情報を選んだわけです。

RouterB#
show ip bgp
BGP table version is 3, 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
* 10.10.10.0/24  192.168.1.1      100        0   100 i
*>i            192.168.2.1       50  100   0   100 i
*> 20.20.20.0/24  192.168.1.1       0         0   100 i
* i            192.168.2.1       0  100    0   100 i


RouterBのルーティング・テーブルも見ておきましょう。
BGPテーブルでベストパスに選ばれていた192.168.2.1経由の経路情報を採用しているのがわかります。

RouterB#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
C    2.2.2.2 is directly connected, Loopback0
   3.0.0.0/32 is subnetted, 1 subnets
O    3.3.3.3 [110/129] via 192.168.3.2, 00:33:53, Serial1
   4.0.0.0/32 is subnetted, 1 subnets
O    4.4.4.4 [110/65] via 192.168.3.2, 00:33:53, Serial1
   20.0.0.0/24 is subnetted, 1 subnets
B    20.20.20.0 [20/0] via 192.168.1.1, 00:05:51
O  192.168.4.0/24 [110/128] via 192.168.3.2, 00:33:53, Serial1
   10.0.0.0/24 is subnetted, 1 subnets
B    10.10.10.0 [200/50] via 192.168.2.1, 00:05:52
C  192.168.1.0/24 is directly connected, Serial0
O  192.168.2.0/24 [110/192] via 192.168.3.2, 00:33:54, Serial1
C  192.168.3.0/24 is directly connected, Serial1


RouterBにとってみると,10.10.10.0/24あてにパケットを送るときに192.168.2.1を経由するのは遠回りまです。
こうして,BGPの経路情報にMED属性を付加することで,相手ASのパケットを操作できるわけです。

ちなみに,RouterAでshow route-mapと入力すると,作ったルートマップを確認することができます。

RouterA#show route-map
route-map MED50, permit, sequence 10
 Match clauses:
  ip address (access-lists): 1
 Set clauses:
  metric 50
 Policy routing matches: 0 packets, 0 bytes
route-map MED50, permit, sequence 20
 Match clauses:
 Set clauses:
 Policy routing matches: 0 packets, 0 bytes

route-map MED100, permit, sequence 10
 Match clauses:
  ip address (access-lists): 1
 Set clauses:
  metric 100
 Policy routing matches: 0 packets, 0 bytes
route-map MED100, permit, sequence 20
 Match clauses:
 Set clauses:
 Policy routing matches: 0 packets, 0 bytes


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

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

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

バックドア・リンク

BGPコミュニティ