【BGP】Next-Hop-Self 動作確認 Cisco

 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)まとめ << より参照できます。

コメント