BGP(基本設定 next-hop-self )④

 ここでは、「BGP基本設定①」で構築したBGPネットワークを使用し、「next-hop-self」オプションを指定したピアを張り方を紹介します。

そして、その検証を行います。

 まずは、各ルータは、各BGPスピーカとピアを張りますが、「next-hop-self」オプションの指定は行わずに、設定していきます。

使用するネットワークは下図になります。

BGP同期は、無効にしておきます。BGP同期については、この後のコンテンツで紹介します。

 ちなみに、BGP同期とは、『たとえBGPで経路情報を学習してもIGPで学習するまでは、その経路情報を有効にしない。』という機能のことです。

※BGP同期は、IOS12.2(8)以前のバージョンでは、デフォルトで有効になっています。

「no synchronization」コマンドで、BGP同期を無効にすることができます。

Router(config-router)#no synchronization

●各ルータの設定

各ルータの設定は、「BGP基本設定①」でも紹介していますが、ここでも掲載しておきます。

 強制的にインターフェイスをUPさせるために、Router_AのE0インターフェイスで「no keepalive」コマンドを設定しておきます。

●Router_Aの設定

!
version 11.2
no service udp-small-servers
no service tcp-small-servers
!
hostname Router_A
!
enable password cisco
!
interface Ethernet0
 ip address 10.10.10.1 255.255.255.0
 no keepalive
!
interface Serial0
 ip address 172.16.0.1 255.255.0.0
 clockrate 64000
!
router bgp 100
 no synchronization
 network 10.10.10.0 mask 255.255.255.0
 neighbor 172.16.0.2 remote-as 200
 no auto-summary
!
ip classless
ip route 0.0.0.0 0.0.0.0 172.16.0.2
!
line vty 0 4
 password cisco
 login
!
end

●Router_Bの設定

!
version 11.2
no service udp-small-servers
no service tcp-small-servers
!
hostname Router_B
!
enable password cisco
!
interface Serial0
 ip address 172.16.0.2 255.255.0.0
!
interface Serial1
 ip address 172.17.0.1 255.255.0.0
 clockrate 64000
!
router bgp 200
 no synchronization
 neighbor 172.16.0.1 remote-as 100
 neighbor 172.17.0.2 remote-as 200
 no auto-summary
!
ip classless
!
line vty 0 4
 password cisco
 login
!
end

●Router_Cの設定

!
version 11.2
no service udp-small-servers
no service tcp-small-servers
!
hostname Router_C
!
enable password cisco
!
interface Serial0
 ip address 172.17.0.2 255.255.0.0
!
router bgp 200
 no synchronization
 neighbor 172.17.0.1 remote-as 200
 no auto-summary
!
ip classless
!
line vty 0 4
 password cisco
 login
!
end

各ルータのルーティングテーブルを確認してみます。

●Router_Aのルーティングテーブル

Gateway of last resort is 172.16.0.2 to network 0.0.0.0

     10.0.0.0/24 is subnetted, 1 subnets
C       10.10.10.0 is directly connected, Ethernet0
C    172.16.0.0/16 is directly connected, Serial0
S*   0.0.0.0/0 [1/0] via 172.16.0.2

●Router_Bのルーティングテーブル

Gateway of last resort is not set

     10.0.0.0/24 is subnetted, 1 subnets
B       10.10.10.0 [20/0] via 172.16.0.1, 00:13:22
C    172.16.0.0/16 is directly connected, Serial0
C    172.17.0.0/16 is directly connected, Serial1

●Router_Cのルーティングテーブル

Gateway of last resort is not set

C    172.17.0.0/16 is directly connected, Serial0

Router_Bでは、BGPによる「10.10.10.0」の経路があります。

Router_Cでは、BGPによる「10.10.10.0」の経路がありません。

Router_Cで、BGPテーブルを確認します。

Router_C#show ip bgp
BGP table version is 1, local router ID is 172.17.0.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
* i10.10.10.0/24    172.16.0.1             0    100      0 100 i

上の黄色のマークを見て下さい。黄色の網掛け部分から以下のことが分かります。

「*」は、「10.10.10.0/24」の経路情報が、有効であることを示していますが、「>」が付いていない。

「10.10.10.0/24」の前に「i」が表示されていることから、iBGPで学習している。

つまり、「10.10.10.0/24」は、ベストパスではないことを示しています。

「10.10.10.0/24」の経路情報をBGPで受け取っているが、ルーティングテーブルに反映させていません。

Router_Cにおいて、「10.10.10.0/24」の「Next Hop」が「172.16.0.1」になっています。

iBGPで経路情報を送る時には、「Next Hop」を変更しないのです。

その為、Router_Cでは、「Next Hop」に到達できず、ルーティングテーブルに反映されません。

 「BGP(基本設定 ベストパスの確認 その2)」では、Router_Cに以下の静的ルートを加えることでこの問題しましたが、ここでは、違うアプローチでこの問題を解決します。

Router_C(config)#ip route 172.16.0.0 255.255.0.0 172.17.0.1

そもそも、この問題が起こったのは、Router_Bが、「Next Hop」を変更しなかったからです。

 もしも、Router_Bが、eBGPで学習した「10.10.10.0/24」経路の「Next Hop」を自分のインターフェイスである「172.17.0.1」に変更してRouter_Cに通知してくれていたら、この問題は、起こらなかったはずです。

 そこで、AS200のRouter_Cへのピア設定に加え、neighbor コマンドで、「next-hop-self」オプションを指定します。

Router_B(config)#router bgp 200
Router_B(config-router)#neighbor 172.17.0.2 remote-as 200
Router_B(config-router)#neighbor 172.17.0.2 next-hop-self

設定の反映を早めるために、「clear ip bgp *」で確立しているBGPピアをリセットします。

Router_C#clear ip bgp *

しばらく待ってから(直ぐに反映されます)

Router_Cで、BGPテーブルを確認します。

Router_C#sh ip bgp
BGP table version is 2, local router ID is 172.17.0.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
*>i10.10.10.0/24    172.17.0.1             0    100      0 100 i

「Next Hop」が、「172.17.0.1」に変わり、「10.10.10.0/24」の左側に「>」が付いてベストパスになりました。

再度、Router_Cのルーティングテーブルを確認してみます。


Gateway of last resort is not set

     10.0.0.0/24 is subnetted, 1 subnets
B       10.10.10.0 [200/0] via 172.17.0.1, 00:03:29
C    172.17.0.0/16 is directly connected, Serial0

ルーティングテーブルに、BGPによる「10.10.10.0/24」のルートが追加されました。

 このように、neighbor コマンドで、「next-hop-self」オプションを指定することで、自分のインターフェイスを「Next Hop」として通知させることができます。

次の「BGP(基本設定 iBGPの設定)⑤」では、iBGPの設定方法を紹介します。