BGPの基本設定
・BGPを使ってRouterAの1.1.1.0/24の経路情報をRouterCまで通知する
・経路情報がBGPできちんと伝わっていることを確認する
ネットワーク構成(画像を別ウインドウで表示)
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 ←BGPのプロセスを(AS100で)有効
no synchronization
bgp log-neighbor-changes
network 1.1.1.0 mask 255.255.255.0 ←1.1.1.0/24の経路情報をBGPで流す
neighbor 192.168.1.2 remote-as 200 ←AS200の192.168.1.2のルーターとピアを確立
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 ←BGPのプロセスを(AS200で)有効
no synchronization
bgp log-neighbor-changes
neighbor 192.168.1.1 remote-as 100 ←AS100の192.168.1.1のルーターとピアを確立
neighbor 192.168.2.2 remote-as 200 ←AS200の192.168.2.2のルーターとピアを確立

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
!
router bgp 200 ←BGPのプロセスを(AS200で)有効
no synchronization
bgp log-neighbor-changes
neighbor 192.168.2.1 remote-as 200 ←AS200の192.168.2.1のルーターとピアを確立
no auto-summary
!
ip route 192.168.1.0 255.255.255.0 192.168.2.1 ←AS200内の疎通確保のためのスタティック・ルート
!
line con 0
line aux 0
line vty 0 4
login
!
!
end
確認
プロバイダ同士で経路情報をやりとりするときに使われるのがBGPです。
膨大な数の経路情報を,効率的かつ柔軟にやりとりする機能を持っています。
BGPの基本的な設定を見てみましょう。

●設定の流れ
BGPを使って経路情報を流すだけなら,そんなに難しくありません。
BGPの設定の流れは以下の3ステップです。

1.ルーターでBGPプロセスを有効にする(router bgpコマンド)
2.ピアを確立するネイバーを指定する(neighborコマンド)
3.通知する経路情報を指定する(networkコマンド)

この設定では,経路情報をほかのASに流してみましょう。
ちなみに「AS」は「自律システム」などとよく言われますが,「プロバイダ」と読み替えてもOKです。

●設定の確認
最初に,RouterAとRouterB同士,RouterBとRouterC同士で,BGP接続を確立しましょう
(ルーター同士でBGP接続することを「ピアを張る」と言います)。

まずは,RouterAを設定します。
BGPのプロセスをAS100で有効にして,AS200にいる192.168.1.2(RouterB)とピアを張ることを宣言します。

RouterA(config)#router bgp 100
RouterA(config-router)#neighbor 192.168.1.2 remote-as 200

次に,RouterCを設定します。
BGPのプロセスをAS200で有効にして,AS200にいる192.168.2.1(RouterC)とピアを張ることを宣言します。

RouterC(config)#router bgp 200
RouterC(config-router)#neighbor 192.168.2.1 remote-as 200

最後が,RouterBの設定です。
RouterA(192.168.1.1)に対してピアを張ります。

RouterB(config)#router bgp 200
RouterB(config-router)#neighbor 192.168.1.1 remote-as 100
00:18:03: %BGP-5-ADJCHANGE: neighbor 192.168.1.1 Up


ネイバーが確立したことを知らせるメッセージが表示されました。
次に,RouterC(192.168.2.2)に対してピアを張ります。

RouterB(config)#router bgp 200
RouterB(config-router)#neighbor 192.168.2.2 remote-as 200
00:19:10: %BGP-5-ADJCHANGE: neighbor 192.168.2.2 Up


ネイバーが確立したことを知らせるメッセージが表示されました。
これで,RouterAとRouterB,RouterBとRouterCの,二つのピアが確立したことになります。

●動作の確認
ピアが張れたか確認してみましょう。
RouterBのネイバーを確認します。
長々と表示が出ますが,赤字の部分に注目します。

RouterB#show ip bgp neighbors
BGP neighbor is 192.168.1.1, remote AS 100, external link
 BGP version 4, remote router ID 1.1.1.1
 BGP state = Established, up for 00:02:48
 Last read 00:00:48, 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:          1     1
  Notifications:     0     0
  Updates:         0     0
  Keepalives:       5     5
  Route Refresh:    0     0
  Total:          6     6
 Default minimum time between advertisement runs is 30 seconds
 (途中略)

BGP neighbor is 192.168.2.2, remote AS 200, internal link
 BGP version 4, remote router ID 192.168.2.2
 BGP state = Established, up for 00:01:50
 Last read 00:00:50, 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:          1     1
  Notifications:     0     0
  Updates:         0     0
  Keepalives:       4     4
  Route Refresh:    0     0
  Total:          5     5
 Default minimum time between advertisement runs is 5 seconds
 (以下略)

表示前半がRouterA(192.168.1.1)とのピアで,表示後半がRouterC(192.168.2.2)とのピアの状態です。
いずれのピアも「BGP state = Established」となっており,ピアが正常に確立していることがわかります。
RouterAとのピアにある「external link」は,EBGPのピアであることを示しています。
RouterCとのピアにある「internal link」は,IBGPのピアであることを示しています。
これは,neighborコマンドでピアを張るときに,remote-asに自分のASと違う番号を指定すれば,自動的にEBGPが確立するからです。
逆に,remote-asに自分のASと同じ番号を指定すれば,自動的にIBGPが確立します。

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

RouterB#show ip bgp

RouterB#


何も表示されません。
これは,BGPで何も経路情報を流していないからです。
このことは,上のshow ip bgp neighborsの表示で,「Updates:」の項目が「0」になっていることからもわかります(青字の部分)。

では,RouterAからBGPで経路情報を流してみましょう。
networkコマンドを使って,1.1.1.0/24の経路情報を流します。

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 192.168.2.1
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


BGPテーブルに,1.1.1.0/24の経路情報が登録されました。
「*」印はこの経路情報が有効であることを示すステータスコードで,「>」印はベストパスを示しています。
(ベストパスの経路情報が,ルーティング・テーブルに記載されます。)

RouterBのネイバーを再度見てみましょう。

RouterB#show ip bgp neighbors
BGP neighbor is 192.168.1.1, remote AS 100, external link
 BGP version 4, remote router ID 1.1.1.1
 BGP state = Established, up for 00:06:34
 Last read 00:00:33, 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:          1     1
  Notifications:     0     0
  Updates:         0     1
  Keepalives:       9     9
  Route Refresh:    0     0
  Total:          10     11
 Default minimum time between advertisement runs is 30 seconds
 (途中略)

BGP neighbor is 192.168.2.2, remote AS 200, internal link
 BGP version 4, remote router ID 192.168.2.2
 BGP state = Established, up for 00:05:37
 Last read 00:00:37, 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:          1     1
  Notifications:     0     0
  Updates:         1     0
  Keepalives:       8     8
  Route Refresh:    0     0
  Total:          10     9
 Default minimum time between advertisement runs is 5 seconds
 (以下略)


「Updates:」の項目に注目すると,RouterAとのピアは「Rcvd」(受信)が「1」に,RouterCとのピアは「Sent」(送信)が「1」になりました。
RouterAから経路情報を受け取って,RouterCに送ったことがわかります。

次に,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,
       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

ステータスコードに,ベストパスを示す「>」印が付いていません。
そのため,ルーティング・テーブルには,1.1.1.0/24の経路情報は載りません。

RouterC#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.2.0/24 is directly connected, Serial0

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.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に到達できないという意味です。
192.168.1.1というのは,この経路情報(1.1.1.0/24)のネクストホップで,RouterAのアドレスです。
ネクストホップがRouterAになっているのは,「IBGPで経路情報を送るときにはネクストホップが変わらない」というルールがあるためです。
そしてBGPでは,ネクストホップに到達できないと,経路情報として採用されません。
なので,経路情報を受信しても,ベストパスを示す「>」印が付かなかったのです。

そこで,192.168.1.0/24の経路情報をスタティックで追加します。

RouterC(config)#ip route 192.168.1.0 255.255.255.0 192.168.2.1

RouterCの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,
       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

1.1.1.0/24の経路情報のステータスコードに,ベストパスを示す「>」印が付きました。
RouterCのルーティング・テーブルを見てみます。

RouterC#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:00:57
S  192.168.1.0/24 [1/0] via 192.168.2.1
C  192.168.2.0/24 is directly connected, Serial0

BGPで受信した経路情報を表す,「B」の付いた経路情報が登録されました。
これで,RouterAからRouterCまでBGPで経路情報が流れて来たことが確認できました。

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

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

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

バックドア・リンク

BGPコミュニティ