BGPの基本設定
・IOS12.2以前のルーターで,BGP同期がデフォルトで動作していることを確認する
・BGP同期を無効にして,経路情報がRouterAからRouterCへ伝わるようにする
ネットワーク構成(画像を別ウインドウで表示)
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 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 bgp 200
no synchronization
bgp log-neighbor-changes
neighbor 192.168.1.1 remote-as 100
neighbor 192.168.2.2 remote-as 200
neighbor 192.168.2.2 next-hop-self ←ネクストホップのアドレスを自分のアドレスにして通知
no auto-summary
!
line con 0
line aux 0
line vty 0 4
login
!
!
end
RouterCのコンフィグ
!
version 12.2 ←IOS12.2(8)Tより前のものはBGP同期がデフォルトで有効
no service single-slot-reload-enable
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
!
router bgp 200
no synchronization ←BGP同期を無効にする
bgp log-neighbor-changes
neighbor 192.168.2.1 remote-as 200
!
line con 0
transport input none
line aux 0
line vty 0 4
login
!
end
確認
BGPには,「BGP同期」と呼ばれる機能が備わっています。
「BGPで経路情報を受信しても,その経路情報をIGPで学習するまで有効にしない」という機能です。
こうすることで,確実に到達できる経路情報のみを他のASに流すようにします。

●設定の確認
BGP同期は,IOS12.2(8)T以前のルーターで,デフォルトで有効です。
今回は,RouterCがIOS12.2(1)なので,RouterCでBGP同期が有効になっています
そのほかのRouterAとRouterBのIOSは12.3なので,あらかじめBGP同期を無効にする「no synchronization」コマンドが入っています。

●動作の確認
RouterAとRouterB同士,RouterBとRouterC同士で,ピアを確立した状態から見ていきましょう。
つまり上の設定で,
・RouterBでneighbor 192.168.2.2 next-hop-self
・RouterCでno synchronization
という二つのコマンドのみを,まだ入力していない状態です。

まずは,RouterCに1.1.1.0/24の経路情報がBGPで流れて来ているか確認してみます。

RouterC#show ip route
Codes: C - connected, S - static, I - IGRP, 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, E - EGP
    i - IS-IS, 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.2.0/24 is directly connected, Serial0


BGPで学習した経路情報を示す「B」の文字がある経路情報がありません。
show ip bgpで,RouterCのBGPテーブルを見てみます。

RouterC#show ip bgp
BGP table version is 1, local router ID is 192.168.2.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
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

1.1.1.0/24のエントリはあるので,BGPで経路情報自体は流れて来ています。
ただ,ベストパスになっていないため,ルーティング・テーブルに載せられていません。
(ベストパスになると,左部分に「>」の記号が付きます。)

ベストパスになってない原因は何でしょうか?
「show ip bgp」のあとに経路情報のアドレスを入力すると,その経路情報の詳しく調べることができます。

RouterC#show ip bgp 1.1.1.0
BGP routing table entry for 1.1.1.0/24, version 0
Paths: (1 available, no best path)
 Not advertised to any peer
 100
  192.168.2.1 from 192.168.2.1 (192.168.2.1)
   Origin IGP, metric 0, localpref 100, valid, internal, not synchronized

「not synchronized」という表示が見えます。
これは,「BGP同期がとれていない」ということを示しています。
つまり,1.1.1.0/24の経路情報がBGPで流れて来たけど,IGPでは学習していない状態です。
この問題を解決するには,RouterCに1.1.1.0/24の経路情報を,スタティックで追加すればOKです。
でも今回は,IOS12.3のデフォルト設定のように,BGP同期を無効にしましょう。

RouterC(config)#router bgp 200
RouterC(config-router)#no synchronization

BGPテーブルはどうなったでしょうか。再びshow ip bgpで確認してみます。

RouterC#show ip bgp
BGP table version is 1, local router ID is 192.168.2.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
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

むむ,さっきと変わりません。
相変らず,1.0.0.0/24の経路情報は,ベストパスになりません。
再び,show ip bgp 1.1.1.0コマンドで調べてみます。

RouterC#show ip bgp 1.1.1.0
BGP routing table entry for 1.1.1.0/24, version 0
Paths: (1 available, no best path)
 Not advertised to any peer
 100
  192.168.1.1 (inaccessible) from 192.168.2.1 (192.168.2.1)
   Origin IGP, metric 0, localpref 100, valid, internal


今度は,192.168.1.1の部分に「inaccessible」と表示されています。
これは,192.168.1.1(この経路情報のネクストホップ)へ到達できないことを意味しています。
このネクストホップへの到達性がないので,まだルーティング・テーブルに載せられなかったわけです。
(IBGPではネクストホップを変えずに経路情報を通知するため,1.1.1.0/24のネクストホップは192.168.1.1(RouterA)のままRouterCに通知されます。)

BGPの基本設定」では,RouteCに経路情報をスタティックに追加して,この問題を解決しました。
今回は,RouterBが通知する192.168.1.0/24のネクストホップを,自分のアドレスに変更しちゃいましょう。
neighborコマンドに「next-hop-self」とパラメータを付けると,ネクストホップを自身のIPアドレスに変更して通知します。
このコマンドをRouterBに設定します。

RouterB(config)#router bgp 200
RouterB(config-router)#neighbor 192.168.2.2 next-hop-self


BGPテーブルを見てみます。

RouterC#show ip bgp
BGP table version is 2, local router ID is 192.168.2.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
Origin codes: i - IGP, e - EGP, ? - incomplete

  Network     Next Hop      Metric LocPrf Weight Path
*>i1.1.1.0/24    192.168.2.1       0   100    0 100 i


経路情報に,ベストパスを示す「>」マークが付きました。
ルーティング・テーブルを確認してみます。

RouterC#show ip route
Codes: C - connected, S - static, I - IGRP, 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, E - EGP
    i - IS-IS, 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.2.1, 00:01:44
C  192.168.2.0/24 is directly connected, Serial0


ルーティング・テーブルにBGPで受信した1.1.1.0/24の経路情報が登録されました。
ネクストホップはRouterBの192.168.1.2になっており,RouterBで入力したnext-hop-selfが効いています。

【参考URL】
●BGPで最適パスを選択するアルゴリズム
http://www.cisco.com/japanese/warp/public/3/jp/service/tac/459/25-j.html
「BGP同期は無効化するケースが多い」,「ネクストホップに到達できないとベストパスになれない」

●BGP同期のsynchronizationコマンド
http://www.cisco.com/univercd/cc/td/doc/product/software/ios123/123tcr/123tip2r/ip2_s4gt.htm#wp1165960
「BGP同期は,IOS12.2(8)T以降ではデフォルトで無効」

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

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

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

バックドア・リンク

BGPコミュニティ