ルート・リフレクタ
・IBGPで受け取った経路情報は,他のIBGPルーターに通知しないことを確認する
・ルート・リフレクタを使って,AS内のIBGPルーターに経路情報を配布する
ネットワーク構成(画像を別ウインドウで表示)
RouterAのコンフィグ
!
version 12.3
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname RouterA
!
interface Loopback0
ip address 1.1.1.1 255.255.255.0
!
interface Serial0
ip address 192.168.1.1 255.255.255.0
!
router bgp 100
no synchronization
bgp log-neighbor-changes
network 1.1.1.0 mask 255.255.255.0 ←BGPで1.1.1.0/24の経路情報を流す
neighbor 192.168.1.2 remote-as 200
no auto-summary
!
ip route 0.0.0.0 0.0.0.0 192.168.1.2 ←AS200への疎通確保用のデフォルト・ルート
!
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
clockrate 64000
!
interface Serial1
ip address 192.168.2.1 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 3.3.3.3 remote-as 200
neighbor 3.3.3.3 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.3.1 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 2.2.2.2 route-reflector-client ←2.2.2.2(RouterB)をルートリフレクタ・クライアントにする
neighbor 4.4.4.4 remote-as 200
neighbor 4.4.4.4 update-source Loopback0 ←送信元をループバックにしてピアを張る
neighbor 4.4.4.4 route-reflector-client ←3.3.3.3(RouterD)をルートリフレクタ・クライアントにする
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
!
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 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
確認
IBGPの特徴は,「IBGPで受け取った経路情報は,他のIBGPルーターへ流さない」という点です。
そのため,「全IBGPルーターが1ホップでそのほかの全ルーターに経路を配布できるように,フルメッシュでピアを張る」というのが基本になります。
でもこの方法は,ルーターの数が増えるとピアの数が増えてしまうという,弱点があります。
そこで,「ルートリ・フレクション」というテクニックを使います。

●IBGPの特徴
ここで,IBGPの特徴を再確認しておきます。
BGPで受け取る経路情報の数は膨大なので,IGPに再配布しているととても追いつきません。
そこで使うのがIBGPです。
IBGPを使うと,BGPで受け取った経路情報を,自AS内にいるほかのルーターにそのまま伝えることができます。
こうして,自AS内に経路情報を通過(トランジット)させるわけです。
IBGPの特徴は以下です。

【IBGPの特徴】
・BGP同期がある
 →他ASに自分(自AS)の知らない経路情報を送らない(IOS12.2(8)T以降はデフォルトでオフ)
・ネクスト・ホップを変えない
 →ネクスト・ホップは常に,他ASの入り口のルーターになる
・ループバックでピアを張る
 →インタフェースが落ちてもピアが落ちないようにするため
・IBGPで受け取った経路情報は他のIBGPルーターに通知しない(BGPスプリット・ホライズン)
 →IBGPによる経路情報のループを防ぐため

このうち,「BGP同期」と「ネクスト・ホップを変えない」については,「BGP同期」の回で解説しました。
なので今回は,それ以外のところに関する部分を見ていきます。

●設定の確認(ループバックでピアを張る)
IBGPでは,ループバック・インタフェース同士でピアを張るのが一般的です。
相手のインタフェースのアドレスを指定してピアを張る場合,インタフェースが落ちたらピアも消えてしまいます。
そこで,落ちない論理的インタフェースであるループバック・インタフェースに対してピアを設定します。
これは,AS内に,ピア・ルーターに到達する経路が複数ある場合に使えるテクニックです。
(AS内ではIGPが動いているので,だいたい経路が冗長化されています。)
一方EBGPでは,1対1接続が一般的のため,インタフェースのアドレス同士でピアを張るのが一般的です。

ループバックでピアを張るには,ピアを張る際に,「自分のループバックはこれです」と宣言してやります。
例えば,RouterBがRouterCにピアを張るときに,以下のように設定します。

neighbor 3.3.3.3 remote-as 200
neighbor 3.3.3.3 update-source Loopback0

これに対してRouterCがRouterBに張るピアは,以下のように設定します。

neighbor 2.2.2.2 remote-as 200
neighbor 2.2.2.2 update-source Loopback0

こうすると,RouterBとRouterC同士で,ループバック・アドレスを使ったピアが張られます。
今回の設定では,RouterBとRouterC,RouterCとRouterDで,ループバックを使ってピアを張っています。

●動作の確認(ルート・リフレクタ設定前)
次に,「IBGPで受け取った経路情報は,他のIBGPルーターに渡さない」について見てみます。
(この時点では,ルート・リフレクタ関連のコマンドはまだ入れていません。)

RouterAからBGPで経路情報を流します。

RouterA(config)#router bgp 100
RouterA(config-router)#network 1.1.1.0 mask 255.255.255.0


経路情報はどのように流れたでしょうか。
まずはRouterBのBGPテーブルを見てみます。

RouterB#show ip bgp
BGP table version is 2, 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
*> 1.1.1.0/24    192.168.1.1       0          0 100 i


RouterBにはきちんと流れてきていますね。
では,次のRouterCはどうでしょうか。

RouterC#show ip bgp
BGP table version is 2, local router ID is 3.3.3.3
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
*>i1.1.1.0/24    192.168.1.1       0   100   0  100 i


RouterCにもきちんと流れてきています。
左のステータスコードには,経路情報をIBGPで受信したことを示す「i」が記されています。
IBGPで流れてきたので,ネクスト・ホップもそのままですね。
では,RouterCの先にあるRouterDはどうでしょうか。

RouterD#show ip bgp

RouterD#


BGPテーブルには何も表示されません。
BGPで経路情報が来ていないからですね。
これは,「IBGPで受け取った経路情報は,他のIBGPルーターに渡さない」というルールがあるからです。
EBGPではAS-PATHを使ってループを検出できますが,IBGPは一つのAS内のお話なので,この方法が使えません。
なので,こうしたループ防止のルールがあるわけです。

●動作の確認(ルート・リフレクタ設定後)
RouterDまでBGPで経路情報を運ぶには,新たにRouterBとRouterDでIBGPピアを張ればOKです。
でもここは,ピア数を減らすために,「ルート・リフレクタ」を使いましょう。
ルート・リフレクタになっているルーターは,経路情報を受け取とると,ルート・リフレクタ・クライアントに設定してあるルーターに経路情報を転送(反射:reflection)します。

設定は,ルート・リフレクタにするルーターにroute-reflector-cliantコマンドを入れて,ルート・リフレクタ・クライアントのアドレスを指定すればOKです。
ここでは,RouterCをルート・リフレクタにして,RouterBとRouterDをルート・リフレクタ・クライアントにします。

RouterC(config-router)#neighbor 2.2.2.2 route-reflector-client
00:38:05: %BGP-5-ADJCHANGE: neighbor 2.2.2.2 Down RR client config change
00:38:33: %BGP-5-ADJCHANGE: neighbor 2.2.2.2 Up

RouterC(config-router)#neighbor 4.4.4.4 route-reflector-client
00:39:07: %BGP-5-ADJCHANGE: neighbor 4.4.4.4 Down RR client config change
00:39:35: %BGP-5-ADJCHANGE: neighbor 4.4.4.4 Up


いずれのピアもいったんダウンして,再びアップしました。
RouterDのBGPテーブルを見てみましょう。

RouterD#show ip bgp
BGP table version is 4, 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
*>i1.1.1.0/24    192.168.1.1       0   100   0  100 i


経路情報が来ました。
RouterBが受け取った経路情報がルート・リフレクタであるRouterCに伝わり,それが(反射して)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

   1.0.0.0/24 is subnetted, 1 subnets
B    1.1.1.0 [200/0] via 192.168.1.1, 00:13:44
   2.0.0.0/32 is subnetted, 1 subnets
O    2.2.2.2 [110/129] via 192.168.3.1, 02:33:35, Serial0
   3.0.0.0/32 is subnetted, 1 subnets
O    3.3.3.3 [110/65] via 192.168.3.1, 02:33:35, Serial0
   4.0.0.0/32 is subnetted, 1 subnets
C    4.4.4.4 is directly connected, Loopback0
O  192.168.1.0/24 [110/192] via 192.168.3.1, 02:33:35, Serial0
O  192.168.2.0/24 [110/128] via 192.168.3.1, 02:33:35, Serial0
C  192.168.3.0/24 is directly connected, Serial0


RouterCでshow ip bgp neighborsコマンドの表示を見ると,「Route-Reflector Client」という表示があるのがわかります(赤字の部分)。

RouterC#show ip bgp neighbors
BGP neighbor is 2.2.2.2, remote AS 200, internal link
 BGP version 4, remote router ID 2.2.2.2
 BGP state = Established, up for 00:07:00
 Last read 00:00:00, hold time is 180, keepalive interval is 60 seconds
 Neighbor capabilities:
  Route refresh: advertised and received(old & new)
  Address family IPv4 Unicast: advertised and received
 Message statistics:
  InQ depth is 0
  OutQ depth is 0
              Sent    Rcvd
  Opens:           2     2
  Notifications:      0     0
  Updates:         0     2
  Keepalives:       29     29
  Route Refresh:     0     0
  Total:           31     33
 Default minimum time between advertisement runs is 5 seconds

For address family: IPv4 Unicast
 BGP table version 4, neighbor version 4
 Index 1, Offset 0, Mask 0x2
 Route-Reflector Client
                  Sent    Rcvd
 Prefix activity:        ----    ----
  Prefixes Current:       0     1 (Consumes 48 bytes)
  Prefixes Total:         0     1
  Implicit Withdraw:       0     0
  Explicit Withdraw:       0     0
  Used as bestpath:       n/a     1
  Used as multipath:      n/a     0
(途中略)

BGP neighbor is 4.4.4.4, remote AS 200, internal link
 BGP version 4, remote router ID 4.4.4.4
 BGP state = Established, up for 00:06:26
 Last read 00:00:25, hold time is 180, keepalive interval is 60 seconds
 Neighbor capabilities:
  Route refresh: advertised and received(old & new)
  Address family IPv4 Unicast: advertised and received
 Message statistics:
  InQ depth is 0
  OutQ depth is 0
             Sent    Rcvd
  Opens:         2     2
  Notifications:     0     0
  Updates:        2     0
  Keepalives:      27     27
  Route Refresh:    0     0
  Total:          31     29
 Default minimum time between advertisement runs is 5 seconds

For address family: IPv4 Unicast
 BGP table version 4, neighbor version 4
 Index 2, Offset 0, Mask 0x4
 Route-Reflector Client
                  Sent    Rcvd
 Prefix activity:        ----    ----
  Prefixes Current:       1     0
  Prefixes Total:         1     0
  Implicit Withdraw:       0     0
  Explicit Withdraw:       0     0
  Used as bestpath:       n/a     0
  Used as multipath:      n/a     0
(以下略)


ルート・リフレクタであるRouterCが,RouterBとRouterDをルート・リフレクタ・クライアントとして認識していることが,これで確認できました。
こうして,ピア数を押さえつつIBGPでの疎通を図るのが,ルート・リフレクタの機能というわけです。

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

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

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

バックドア・リンク

BGPコミュニティ