iBGPの特徴として、ネイバーにルートを広告する際にネクストホップのIPアドレスが変更されません。これにより、到達可能性に問題が発生する場合があります。
NextHopに到達できない場合の例
R1のループバックアドレスをR2にアドバタイズします。
R1(config)#router bgp 1 R1(config-router)#neighbor 192.168.12.2 remote-as 23 R1(config-router)#network 1.1.1.1 mask 255.255.255.255
R2(config)#router bgp 23 R2(config-router)#neighbor 192.168.12.1 remote-as 1 R2(config-router)#neighbor 192.168.23.3 remote-as 23
R3(config)#router bgp 23 R3(config-router)#neighbor 192.168.23.2 remote-as 23
R2のBGPテーブルを確認すると、1.1.1.1/24がベストパスとして認識しています。
R2#sh ip bgp
BGP table version is 2, local router ID is 2.2.2.2
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*> 1.1.1.1/32 192.168.12.1 0 0 1 I
では、R3のBGPテーブルを確認します。
R3#sh ip bgp BGP table version is 2, local router ID is 3.3.3.3 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path * i 1.1.1.1/32 192.168.12.1 0 100 0 1 i
1.1.1.1/32をベストパスとして認識していません。R2からR3へルート広告する際にネクストホップ値は変更されず、192.168.12.1のままです。1.1.1.1/24を詳しくみてみると、
R3#sh ip bgp 1.1.1.1
BGP routing table entry for 1.1.1.1/32, version 2
Paths: (1 available, no best path)
Not advertised to any peer
Refresh Epoch 1
1
192.168.12.1 (inaccessible) from 192.168.23.2 (2.2.2.2)
Origin IGP, metric 0, localpref 100, valid, internal
ネクストホップ 192.168.12.1 へ到達不能(inaccessible)であるため、ベストパスとして認識していません。 これは、R3のルーティングテーブルに192.168.12.1宛のルートがないためです。
Next-Hop-Selfの設定
neighborコマンドのオプション
この解決策として、R2がiBGPでR3にアドバタイズする際に、next-hop-self オプションを使用し、ネクストホップを自身のアドレスに書き換えることができます。
R2(config)#router bgp 23
R2(config-router)#neighbor 192.168.23.3 next-hop-self
R3のBGPテーブルを確認してみます。
R3#sh ip bgp BGP table version is 5, local router ID is 3.3.3.3 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i - IGP, e - EGP, ? - incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path *>i 1.1.1.1/32 192.168.23.2 0 100 0 1 i
Next Hop が R2 ( 192.168.23.2 )に変更されています。このセグメントは、R3から見ると、直接接続のネットワークで到達性があります。
そのため 1.1.1.1/32がベストパスとなりました。
neighborコマンドでroute-mapを適用
ネクストホップは、route-mapを使用して、手動で任意のアドレスに変更することもできます。 R2でR3に対してアドバタイズするルートはネクストホップを192.168.23.2に変更します。
R2(config)#route-map SET_NEXTHOP_TO_R3 permit 10 R2(config-route-map)#set ip next-hop 192.168.23.2
R2(config)#router bgp 23 R2(config-router)#neighbor 192.168.23.3 route-map SET_NEXTHOP_TO_R3 out
R3のBGPテーブルを確認すると、ネクストホップを192.168.23.2に変更されていて、1.1.1.1/32がベストパスになっています。
R3#sh ip bgp
BGP table version is 2, local router ID is 3.3.3.3
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found
Network Next Hop Metric LocPrf Weight Path
*>i 1.1.1.1/32 192.168.23.2 0 100 0 1 i
その他 BGP関連記事は >> ルーティングプロトコル(BGP)まとめ << より参照できます。
コメント