BGPはネクストホップ到達性を考慮しなければなりません。ネクストホップ到達性を保障するためには、IGP操作やroute-mapを用いた制御を行わなければなりません。
概要
BGP nexthop reachabilityについてまとめます。BGPはIGPを参照するプロトコルです。BGPにてadvertiseされたルートのnexthopが到達不能な場合は、そのルートは無効であると判断します。
このページではnexthopへの到達性を確保する方法についてまとめます。nexthopへの到達性を確保する方法一覧は以下の通りです。
- next-hop-selfキーワードを使用
- route-mapによりnext-hopを変更する
- eBGP neighborへのprefixをBGPでadvertiseする
- eBGP neighborへのprefixをIGPでadvertiseする
コマンド一覧
このシナリオで重要なコマンド一覧は以下の通りです。
Router(config)# router bgp <as> Router(config-router)# neighbor <remote_addr> next-hop-self Router(config)# route-map <map_name> Router(config-route-map)# set ip {[ next-hop peer-address | <remote_addr> ]} Router(config)# router bgp <as> Router(config-router)# neighbor <remote_addr> route-map <map_name> out Router(config)# route-map <map_name> Router(config-router)# network <bb_addr> mask <bb_mask> Router(config)# router <igp> Router(config-router)# network <bb_addr>
構成図
以下の構成で動作確認を行います。
e0/0 e0/1 e0/0 e0/1 +--------+.254 .4+--------+.4 .1+--------+ | BB3 +--------+ R4 +--------+ R1 | +--------+ +--------+ +--------+ 204.12.1.0/24 155.1.146.0/24
[BB3] router bgp 54 no synchronization neighbor 204.12.1.4 remote-as 100 no auto-summary [R4] router rip version 2 network 150.1.0.0 network 155.1.0.0 no auto-summary ! router bgp 100 no synchronization network 150.1.4.0 mask 255.255.255.0 network 155.1.146.0 mask 255.255.255.0 aggregate-address 150.1.0.0 255.255.0.0 summary-only aggregate-address 155.1.0.0 255.255.0.0 summary-only neighbor 155.1.146.1 remote-as 100 neighbor 204.12.1.254 remote-as 54 no auto-summary [R1] router rip version 2 network 150.1.0.0 network 155.1.0.0 no auto-summary ! router bgp 100 no synchronization neighbor 155.1.146.4 remote-as 100 no auto-summary
設定全文は下記ファイルです。詳細設定は下記を参照ください。
仕様説明
next-hop-self
next-hop-selfキーワードを使用すると、iBGP neighborへadvertiseするprefixのnext-hopを自ルータに変更することができます。
Router(config)# router bgp <as> Router(config-router)# neighbor <remote_addr> next-hop-self
route-map
以下のようにroute-mapを使用すると、next-hopを変更する事ができます。next-hop-selfキーワードを使うのと全く同じ効果です。
Router(config)# route-map <map_name> Router(config-route-map)# set ip next-hop {[ peer-address | <remote_addr> ]} Router(config)# router bgp <as> Router(config-router)# neighbor <remote_addr> route-map <map_name> out
BGP advertise
eBGPへのprefixをBGPとしてadvertiseする事でも、nexthopへの到達性を確保する事ができます。
Router(config)# route-map <map_name> Router(config-router)# network <bb_addr> mask <bb_mask>
IGP advertise
eBGPへのprefixをIGPとしてadvertiseする事でも、nexthopへの到達性を確保する事ができます。
Router(config)# router <igp> Router(config-router)# network <bb_addr>
諸問題の確認
動作確認
R1からBB3へ疎通不能である事を確認します。
[R1] R1#ping 112.0.0.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 112.0.0.1, timeout is 2 seconds: .. Success rate is 0 percent (0/2) R1#
BB3へのprefix(例えば112.0.0.0)はBGPテーブルに存在しますが、これはvalidなprefixではありません。validかどうかは“>”マークがあるかどうかで判断できます。112.0.0.0のnexthop 204.12.1.254がルーティングテーブルに存在しないため、どこにパケットを送ってよいかわからずvalidではない状態になっています。
R1#show ip bgp BGP table version is 21, local router ID is 150.1.1.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 * i28.119.16.0/24 204.12.1.254 0 100 0 54 i * i28.119.17.0/24 204.12.1.254 0 100 0 54 i * i30.0.0.0/16 204.12.1.254 0 100 0 54 i * i30.1.0.0/16 204.12.1.254 0 100 0 54 i * i30.2.0.0/16 204.12.1.254 0 100 0 54 i * i30.3.0.0/16 204.12.1.254 0 100 0 54 i * i31.0.0.0/16 204.12.1.254 0 100 0 54 i * i31.1.0.0/16 204.12.1.254 0 100 0 54 i * i31.2.0.0/16 204.12.1.254 0 100 0 54 i * i31.3.0.0/16 204.12.1.254 0 100 0 54 i * i112.0.0.0 204.12.1.254 0 100 0 54 50 60 i * i113.0.0.0 204.12.1.254 0 100 0 54 50 60 i * i114.0.0.0 204.12.1.254 0 100 0 54 i * i115.0.0.0 204.12.1.254 0 100 0 54 i * i116.0.0.0 204.12.1.254 0 100 0 54 i * i117.0.0.0 204.12.1.254 0 100 0 54 i * i118.0.0.0 204.12.1.254 0 100 0 54 i * i119.0.0.0 204.12.1.254 0 100 0 54 i *>i150.1.0.0 155.1.146.4 0 100 0 i *>i155.1.0.0 155.1.146.4 0 100 0 i R1#
next-hop-self
設定投入
next-hop-selfを用いて、R4からR1へadvertiseする際のnexthopを変更します。
[R4] router bgp 100 neighbor 155.1.146.1 next-hop-self ! do clear ip bgp * soft
動作確認
nexthopが155.1.146.4に変わり、R1からBB3(112.0.0.1)への疎通が可能になった事を確認します。
[R1] R1#show ip bgp | include 112 *>i112.0.0.0 155.1.146.4 0 100 0 54 50 60 i R1# R1#ping 112.0.0.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 112.0.0.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 28/54/88 ms R1#
route-map
設定投入
route-mapを用いて、R4からR1へadvertiseする際のnexthopを変更します。
[R4] route-map RMAP_TO_R1 set ip next-hop peer-address ! router bgp 100 no neighbor 155.1.146.1 next-hop-self neighbor 155.1.146.1 route-map RMAP_TO_R1 out ! do clear ip bgp * soft
動作確認
nexthopが155.1.146.4に変わり、R1からBB3(112.0.0.1)への疎通が可能になった事を確認します。
[R1] R1#show ip bgp | include 112 *>i112.0.0.0 155.1.146.4 0 100 0 54 50 60 i R1# R1#ping 112.0.0.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 112.0.0.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 40/48/72 ms R1#
その他 設定方法
peer-addressキーワードを使用せずIPアドレスを静的に指定しても差し支えありません。
[R4] route-map RMAP_TO_R1 set ip next-hop 155.1.146.4 ! router bgp 100 neighbor 155.1.146.1 route-map RMAP_TO_R1 out
prefix受信時にnexthopを変更しても差し支えありません。
[R1] route-map RMAP_FROM_R4 set ip next-hop 155.1.146.4 ! router bgp 100 neighbor 155.1.146.4 route-map RMAP_FROM_R4 in
BGP advertise
設定投入
eBGP neighborへのルートをBGPとしてadvertiseしても差し支えありません。
[R4] router bgp 100 no neighbor 155.1.146.1 route-map RMAP_TO_R1 out network 204.12.1.0 mask 255.255.255.0 ! do clear ip bgp * soft
動作確認
nexthopはBB3(204.12.1.254)のまま不変ですが、BB3へのprefix(204.12.1.0/24)がBGPとしてadvertiseされているため、R1からBB3(112.0.0.1)へ問題なく疎通できます。
[R1] R1#show ip bgp | include (i204|i112) *>i112.0.0.0 204.12.1.254 0 100 0 54 50 60 i *>i204.12.1.0 155.1.146.4 0 100 0 i R1# R1#ping 112.0.0.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 112.0.0.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 40/53/108 ms R1#
IGP advertise
設定投入
eBGP neighborへのルートをIGPとしてadvertiseしても差し支えありません。
[R4] router bgp 100 no network 204.12.1.0 mask 255.255.255.0 ! router rip network 204.12.1.0 ! do clear ip bgp * soft
動作確認
nexthopはBB3(204.12.1.254)のまま不変ですが、BB3へのprefix(204.12.1.0/24)がBGPとしてadvertiseされているため、R1からBB3(112.0.0.1)へ問題なく疎通できます。
[R1] R1#show ip route rip R 204.12.1.0/24 [120/1] via 155.1.146.4, 00:00:05, Ethernet0/1 150.1.0.0/16 is variably subnetted, 3 subnets, 2 masks R 150.1.4.0/24 [120/1] via 155.1.146.4, 00:00:05, Ethernet0/1 R1# R1# R1#show ip bgp | include 112 *>i112.0.0.0 204.12.1.254 0 100 0 54 50 60 i R1# R1#ping 112.0.0.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 112.0.0.1, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 32/54/92 ms R1#