Cisco IOS ルーティング – BGP Nexthop Reachabilityの考察

スポンサーリンク

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

設定全文は下記ファイルです。詳細設定は下記を参照ください。

BB3
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname BB3
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
!
!
ip cef
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Loopback0
 ip address 28.119.16.1 255.255.255.0
!
interface Loopback1
 ip address 28.119.17.1 255.255.255.0
!
interface Loopback10
 ip address 30.0.0.1 255.255.0.0
!
interface Loopback11
 ip address 30.1.0.1 255.255.0.0
!
interface Loopback12
 ip address 30.2.0.1 255.255.0.0
!
interface Loopback13
 ip address 30.3.0.1 255.255.0.0
!
interface Loopback14
 ip address 31.0.0.1 255.255.0.0
!
interface Loopback15
 ip address 31.1.0.1 255.255.0.0
!
interface Loopback16
 ip address 31.2.0.1 255.255.0.0
!
interface Loopback17
 ip address 31.3.0.1 255.255.0.0
!
interface Loopback112
 ip address 112.0.0.1 255.0.0.0
!
interface Loopback113
 ip address 113.0.0.1 255.0.0.0
!
interface Loopback114
 ip address 114.0.0.1 255.0.0.0
!
interface Loopback115
 ip address 115.0.0.1 255.0.0.0
!
interface Loopback116
 ip address 116.0.0.1 255.0.0.0
!
interface Loopback117
 ip address 117.0.0.1 255.0.0.0
!
interface Loopback118
 ip address 118.0.0.1 255.0.0.0
!
interface Loopback119
 ip address 119.0.0.1 255.0.0.0
!
interface Ethernet0/0
 ip address 204.12.1.254 255.255.255.0
 half-duplex
!
interface Ethernet0/1
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/2
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/3
 no ip address
 shutdown
 half-duplex
!
!
router bgp 54
 no synchronization
 bgp log-neighbor-changes
 network 28.119.16.0 mask 255.255.255.0
 network 28.119.17.0 mask 255.255.255.0
 network 30.0.0.0 mask 255.255.0.0
 network 30.1.0.0 mask 255.255.0.0
 network 30.2.0.0 mask 255.255.0.0
 network 30.3.0.0 mask 255.255.0.0
 network 31.0.0.0 mask 255.255.0.0
 network 31.1.0.0 mask 255.255.0.0
 network 31.2.0.0 mask 255.255.0.0
 network 31.3.0.0 mask 255.255.0.0
 network 112.0.0.0
 network 113.0.0.0
 network 114.0.0.0
 network 115.0.0.0
 network 116.0.0.0
 network 117.0.0.0
 network 118.0.0.0
 network 119.0.0.0
 neighbor 204.12.1.4 remote-as 100
 neighbor 204.12.1.4 ebgp-multihop 255
 neighbor 204.12.1.4 send-community
 neighbor 204.12.1.4 route-map BGP_OUT out
 no auto-summary
!
ip http server
ip forward-protocol nd
!
!
!
!
ip prefix-list BGP_PREPEND_1 seq 5 permit 112.0.0.0/8
ip prefix-list BGP_PREPEND_1 seq 10 permit 113.0.0.0/8
!
route-map BGP_OUT permit 10
 match ip address prefix-list BGP_PREPEND_1
 set as-path prepend 50 60
!
route-map BGP_OUT permit 10000
!
!
!
control-plane
!
!
!
!
mgcp behavior g729-variants static-pt
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
 login
!
!
end
R4
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R4
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
!
!
ip cef
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Loopback0
 ip address 150.1.4.4 255.255.255.0
!
interface Ethernet0/0
 ip address 155.1.146.4 255.255.255.0
 half-duplex
!
interface Ethernet0/1
 ip address 204.12.1.4 255.255.255.0
 half-duplex
!
interface Ethernet0/2
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/3
 no ip address
 shutdown
 half-duplex
!
!
router rip
 version 2
 network 150.1.0.0
 network 155.1.0.0
 no auto-summary
!
router bgp 100
 no synchronization
 bgp log-neighbor-changes
 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
!
ip http server
ip forward-protocol nd
!
!
!
!
!
!
control-plane
!
!
!
!
mgcp behavior g729-variants static-pt
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
 login
!
!
end
R1
!
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R1
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
!
!
ip cef
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface Loopback0
 ip address 150.1.1.1 255.255.255.0
!
interface Ethernet0/0
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/1
 ip address 155.1.146.1 255.255.255.0
 half-duplex
!
interface Ethernet0/2
 no ip address
 shutdown
 half-duplex
!
interface Ethernet0/3
 no ip address
 shutdown
 half-duplex
!
!
router rip
 version 2
 network 150.1.0.0
 network 155.1.0.0
 no auto-summary
!
router bgp 100
 no synchronization
 bgp log-neighbor-changes
 neighbor 155.1.146.4 remote-as 100
 no auto-summary
!
ip http server
ip forward-protocol nd
!
!
!
!
!
!
control-plane
!
!
!
!
mgcp behavior g729-variants static-pt
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
 login
!
!
end

仕様説明

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#
タイトルとURLをコピーしました