BGPのパスアトリビュート NEXT_HOP は、基本(eBGPでも保持するケースがあります詳細は下記記事)は iBGPへ経路を広報するときは変化せずそのまま維持、eBGPは自身のneighborのアドレスに書き換え広報します。
BGPのNEXT_HOPを、next-hop-selfを設定することで自身のneighborアドレスにNEXT_HOPを書き換えに変更する機能です。今回iBGPへ経路広報するときにBGP next-hop-self を設定する例を紹介します。
BGPのNEXT_HOP パスアトリビュートの解説は下記を参照ください。
BGP NextHop
iBGP next-hop-self
iBGPのNEXT_HOP 未設定
eBGPから受け取った経路をiBGPに再度広報する際は、NEXT_HOPを書き換えません。上記構成ではR21のeBGPインターフェイスの30.10.21.0/24をOSPFが未設定のためR22に30.10.21.0/24経路がない状態です。
1 2 3 |
R22#show ip route 30.10.21.10 % Network not in table R22# |
R22では30.10.21.0の経路がルーティングテーブルに登録されていません。
1 2 3 4 5 6 7 8 9 10 11 12 |
R22#show ip bgp BGP table version is 5, local router ID is 20.0.0.22 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, t secondary path, L long-lived-stale, 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 10.0.0.0 30.10.21.10 0 100 0 10 i R22# |
R22では 10.0.0.0/8 のBGPテーブルを確認すると Next Hop(30.10.21.10) がR10のアドレスから変更されていません。NextHopの到達性チェックの結果経路は有効にならず、Best( > )にならない状態となっています。
1 2 3 4 5 6 7 8 9 10 11 |
R22#show ip bgp 10.0.0.0 BGP routing table entry for 10.0.0.0/8, version 0 Paths: (1 available, no best path) Not advertised to any peer Refresh Epoch 1 10 30.10.21.10 (inaccessible) from 20.0.0.21 (20.0.0.21) Origin IGP, metric 0, localpref 100, valid, internal rx pathid: 0, tx pathid: 0 Updated on Nov 18 2021 12:28:11 UTC R22# |
show ip bgp 10.0.0.0 にて確認すると 30.10.21.10 が ( inaccessible ) と表示されて NextHopの到達性がないことを示しています。
1 2 3 |
R22#show ip route 10.0.0.0 % Network not in table R22# |
R22のルーティングテーブルに 10.0.0.0/8 の経路は登録されませんでした。
10.0.0.0/8の経路を有効にするには NextHop の到達性を確保する必要があります。設定するには、30.10.21.10 の到達性を確保する(R21でOSPFで経路を広報、R22でstaticで30.10.21.10を記載するなど。。)、もう一つの方法としてnext-hop-selfを設定でNEXT_HOPを書き換えることで到達性を確保する。
iBGPのNEXT_HOP 設定
1 2 3 4 5 |
router bgp 20 address-family ipv4 neighbor 20.0.0.22 next-hop-self exit-address-family end |
上記はR21での設定例(Cisco IOS-XE)の BGP next-hop-self の設定例です。neighbor単位で設定します。
設定することでneighborの自身のアドレスをNEXT_HOPに書き換えします。
1 2 3 4 5 6 7 8 9 10 11 12 |
R22#show ip bgp BGP table version is 6, local router ID is 20.0.0.22 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, t secondary path, L long-lived-stale, 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 10.0.0.0 20.0.0.21 0 100 0 10 i R22# |
R22での10.0.0.0/8 BGPテーブルを確認すると Next Hopが20.0.0.21 となり経路は > best となって有効になります。
1 2 3 4 5 6 7 8 9 10 11 |
R22#show ip bgp 10.0.0.0 BGP routing table entry for 10.0.0.0/8, version 2 Paths: (1 available, best #1, table default) Not advertised to any peer Refresh Epoch 1 10 20.0.0.21 (metric 2) from 20.0.0.21 (20.0.0.21) Origin IGP, metric 0, localpref 100, valid, internal, best rx pathid: 0, tx pathid: 0x0 Updated on Nov 18 2021 12:31:17 UTC R22# |
R22でshow ip bgp 10.0.0.0/8 を確認すると NextHopが20.0.0.21となり、 20.0.0.21 までのOSPFのCost 2が ( metric 2 ) として表示されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
R22#show ip route 10.0.0.0 Routing entry for 10.0.0.0/8 Known via "bgp 20", distance 200, metric 0 Tag 10, type internal Last update from 20.0.0.21 00:03:44 ago Routing Descriptor Blocks: * 20.0.0.21, from 20.0.0.21, 00:03:44 ago opaque_ptr 0x7F0F9D832980 Route metric is 0, traffic share count is 1 AS Hops 1 Route tag 10 MPLS label: none R22# |
R22のルーティングテーブルに BGP(Known via "bgp 20")経路として登録されました。
BGP記事一覧
- BGPとは
- BGP Message (メッセージ)
- BGP neighbor 状態
- BGP i-BGP/e-BGP の違い
- BGP next-hop-self
- BGP ルートリフレクタ ( Route-Reflector )
- BGP パスアトリビュート
BGP RFC/関連サイト
- RFC4271 A Border Gateway Protocol 4 (BGP-4)
- RFC6793 BGP Support for Four-Octet Autonomous System (AS) Number Space
- IANA Border Gateway Protocol (BGP) Parameters
BGP参考図書
私が所持しているBGP関連の本を紹介します。ただし絶版になっている本も紹介していますのでご容赦ください。