BGP NEXT_HOP パスアトリビュート
BGPのUpdateメッセージのルータ情報に含まれるパスアトリビュートの一つです。
その他BGPパスアトリビュート
今回紹介した以外のBGP パスアトリビュートを含めて紹介しています。
BGP NEXT_HOP 特徴
NEXT_HOPはそのルートに対して到達するためのネクストホップアドレスを示しています。
- タイプコード 3
 - Well known Mandatory(全てのBGPルータが識別でき、必ずUpdateメッセージに含まれる)
 - eBGPピアにてアドバタイズする時は、ネイバー自身のIPアドレスをNEXT_HOPに変更して送信
 - iBGPピアにてアドバタイズする時は、NEXT_HOPを変更せずに送信
 - NEXT_HOPのアドレスに到達性がなければ経路は無効。
 
BGP 経路送信時のNext_HOP変化
- R10のBGPテーブル
		1234567R10#show ip bgp/snip/Network Next Hop Metric LocPrf Weight Path*> 10.0.0.0 0.0.0.0 0 32768 i*> 20.0.0.0 20.10.21.21 0 0 20 i*> 30.0.0.0 20.10.21.21 0 20 30 iR10#
10.0.0.0/8 NEXT_HOP 0.0.0.0 R10がBGPルートを生成
 - R21のBGPテーブル
		12345678910111213R21#show ip bgp summary/snip/Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd20.0.0.22 4 20 77 77 4 0 0 01:05:40 120.10.21.10 4 10 82 84 4 0 0 01:11:57 1R21#R21#show ip bgp/snip/Network Next Hop Metric LocPrf Weight Path*> 10.0.0.0 20.10.21.10 0 0 10 i*> 20.0.0.0 0.0.0.0 0 32768 i*>i 30.0.0.0 20.22.30.30 0 100 0 30 iR21#
10.0.0.0/8 NEXT_HOP 20.10.21.10 R10のBGPneighborのアドレス(20.10.21.10)にNEXT_JHOPが変更されて経路を受信している。
 - R22のBGPテーブル
		1234567R22#show ip bgp/snip/Network Next Hop Metric LocPrf Weight Path*>i 10.0.0.0 20.10.21.10 0 100 0 10 i*>i 20.0.0.0 20.0.0.21 0 100 0 i*> 30.0.0.0 20.22.30.30 0 0 30 iR22#
10.0.0.0/8 NEXT_HOP 20.10.21.10 iBGPにて受け取った経路のため、R21のNEXT_HOPから変更されていない。
 - R30のBGPテーブル
		123456789101112R30#show ip bgp summary/snip/Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd20.22.30.22 4 20 90 90 4 0 0 01:17:40 2R30#R30#show ip bgp/snip/Network Next Hop Metric LocPrf Weight Path*> 10.0.0.0 20.22.30.22 0 20 10 i*> 20.0.0.0 20.22.30.22 0 20 i*> 30.0.0.0 0.0.0.0 0 32768 iR30#
10.0.0.0/8 NEXT_HOP 20.22.30.22 R30のBGPneighborのアドレス(20.20.30.22)にNEXT_JHOPが変更されて経路を受信している。
 
Config およびCML定義ファイル
スポンサーリンク
マルチアクセスネットワーク時のNEXT_HOPの動作について
eBGPはNEXT_HOPのアドレスを変更すると記載していましが、マルチアクセスネットワーク時には変更しません。
- R10 BGPネイバー、テーブル
		1234567891011R10#show ip bgp sum/ snip /Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd90.0.0.20 4 20 240 243 4 0 0 03:34:26 2R10#show ip bgp/ snip /Network Next Hop Metric LocPrf Weight Path*> 10.0.0.0 0.0.0.0 0 32768 i*> 20.0.0.0 90.0.0.20 0 0 20 i*> 30.0.0.0 90.0.0.30 0 20 30 iR10#
R10のBGPネイバーはAS20しか接続されていません。
10.0.0.0/8 AS10が生成元のため、NEXT_HOP 0.0.0.0の状態となっている。 - R20 BGPネイバー、テーブル
		123456789101112R20#show ip bgp summary/ snip /Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd90.0.0.10 4 10 252 249 4 0 0 03:40:44 190.0.0.30 4 30 239 244 4 0 0 03:36:51 1R20#show ip bgp/ snip /Network Next Hop Metric LocPrf Weight Path*> 10.0.0.0 90.0.0.10 0 0 10 i*> 20.0.0.0 0.0.0.0 0 32768 i*> 30.0.0.0 90.0.0.30 0 0 30 iR20#
R20はAS10,AS30の2ネイバー接続している。
10.0.0.0/8 の NEXT_HOP が 90.0.0.10 とeBGPのネイバーのアドレスに変更されている。 - R30 BGPネイバー、テーブル
		1234567891011R30#show ip bgp sum/ snip /Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd90.0.0.20 4 20 252 246 4 0 0 03:39:38 2R30#show ip bgp/ snip /Network Next Hop Metric LocPrf Weight Path*> 10.0.0.0 90.0.0.10 0 20 10 i*> 20.0.0.0 90.0.0.20 0 0 20 i*> 30.0.0.0 0.0.0.0 0 32768 iR30#
R30はAS20と接続されている。※AS10とは直接接続されていません。
10.0.0.0/8 の NEXT_HOP が 90.0.0.10 とR20の時と同じで変更されていません。123456R30#traceroute 10.0.0.10Type escape sequence to abort.Tracing the route to 10.0.0.10VRF info: (vrf in name/id, vrf out name/id)1 90.0.0.10 2 msec * 8 msecR30#tracerouteの結果からR20を通過せず、R10に直接送信している。
 
Config およびCML定義ファイル
BGP NEXT_HOP 到達性確認
BGPのルータは、BGPのパスアトリビュートのNEXT_HOPのアドレスに到達性(ルーティングテーブルに存在するか)を確認します。到達性がないBGP経路は無効扱いとなります。上記で説明したようにiBGPではNEXT-HOPを変更しないため、構成によってはBGPのNEXT_HOPの到達性確認に失敗するケースがあります。
BGP NEXT_HOP 到達性確認OK例
上記の構成図のR22のルーティングテーブルおよびBGPテーブルを確認しています。
| 
					 1 2 3 4 5 6 7 8  | 
						R22#show ip route 30.10.21.10 Routing entry for 30.10.21.0/24   Known via "ospf 1", distance 110, metric 2, type intra area   Last update from 20.21.22.21 on GigabitEthernet1, 00:33:18 ago   Routing Descriptor Blocks:   * 20.21.22.21, from 20.0.0.21, 00:33:18 ago, via GigabitEthernet1       Route metric is 2, traffic share count is 1 R22#  | 
					
R22のshow ip route で 30.10.21.21 を調べると 30.10.21.0/24 がKnown via "ospf 1"とOSPFを元にルーティングテーブルに経路が登録されています。R22からの30.10.21.0/24へまではコストmetric 2 となっています。
| 
					 1 2 3 4 5 6 7 8 9 10 11 12  | 
						R22#show ip bgp 10.0.0.0/8 BGP routing table entry for 10.0.0.0/8, version 2 Paths: (1 available, best #1, table default)   Flag: 0x100   Not advertised to any peer   Refresh Epoch 1   10     30.10.21.10 (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 7 2021 07:28:58 UTC R22#  | 
					
show ip bgp 10.0.0.0/8 の詳細表示で NEXT_HOP 30.10.21.10 が (metric 2) となり、metricはOSPFのコストが表示されます。※この値は ベストパスセレクション ( NEXT_HOPのIPアドレスにルーティングテーブルのIGP(OSPFなど)のメトリックを比較して最小のルータを優先させます。) に利用されます。
show ip bgp 10.0.0.0/8 NEXT_HOPには到達性があり、経路が有効となり best として認識されています。
| 
					 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 30.10.21.10 00:00:01 ago   Routing Descriptor Blocks:   * 30.10.21.10, from 20.0.0.21, 00:00:01 ago       opaque_ptr 0x7F0F9D832980       Route metric is 0, traffic share count is 1       AS Hops 1       Route tag 10       MPLS label: none R22#  | 
					
R22のルーティングテーブルでは、10.0.0.0/8はKnown via "bgp 20"としてBGPから経路としてルーティングテーブルに登録されています。
BGP NEXT_HOP 到達性確認NG例
R21のeBGPから受信したinterfaceのアドレス(30.10.21.0/24)のOSPFへの広報設定を削除
| 
					 1 2 3  | 
						R22#show ip route 30.10.21.10 % Network not in table R22#  | 
					
R22ではR21のOSPFの設定を削除したため、30.10.21.0/24の経路が削除されました。
| 
					 1 2 3 4 5 6 7 8 9 10 11  | 
						R22#show ip bgp 10.0.0.0/8 BGP routing table entry for 10.0.0.0/8, version 3 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 7 2021 07:28:58 UTC R22#  | 
					
R22ではBGPの経路として10.0.0.0/8を受信していますが、NEXT_HOP 30.10.21.10 に経路到達性がないため inaccessible と表示され無効(Bestに選択されない)となっています。
| 
					 1 2 3  | 
						R22#show ip route 10.0.0.0 % Network not in table R22#  | 
					
R22ではBGPとして10.0.0.0/8の経路は受信していますがNEXT_HOPの到達性NGのため、経路として扱われずにルーティングテーブルには登録されません(not in table)。
このようなケースでiBGPがNEXT_HOPが書き換えないために発生するケースです。BGP next-hop-self を利用することでnexthopのiBGPをeBGPのよう変更することが可能です。
next-hop-self
BGP NextHop 到達性NG例 のConfig (Cisco-XE)
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
 




