BGP

BGP NEXT_HOP パスアトリビュート

BGP NEXT_HOP パスアトリビュート

BGPのUpdateメッセージのルータ情報に含まれるパスアトリビュートの一つです。

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テーブル
    R10#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 i
    R10#

    10.0.0.0/8 NEXT_HOP 0.0.0.0 R10がBGPルートを生成

  • R21のBGPテーブル
    R21#show ip bgp summary 
     /snip/
    Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
    20.0.0.22       4           20      77      77        4    0    0 01:05:40        1
    20.10.21.10     4           10      82      84        4    0    0 01:11:57        1
    R21#
    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 i
    R21#

    10.0.0.0/8 NEXT_HOP 20.10.21.10 R10のBGPneighborのアドレス(20.10.21.10)にNEXT_JHOPが変更されて経路を受信している。

  • R22のBGPテーブル
    R22#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 i
    R22#

    10.0.0.0/8 NEXT_HOP 20.10.21.10 iBGPにて受け取った経路のため、R21のNEXT_HOPから変更されていない。

  • R30のBGPテーブル
    R30#show ip bgp summary 
     /snip/
    Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
    20.22.30.22     4           20      90      90        4    0    0 01:17:40        2
    R30#
    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 i
    R30#

    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ネイバー、テーブル
    R10#show ip bgp sum
     / snip / 
    Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
    90.0.0.20       4           20     240     243        4    0    0 03:34:26        2
    R10#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 i
    R10#

    R10のBGPネイバーはAS20しか接続されていません。
    10.0.0.0/8 AS10が生成元のため、NEXT_HOP 0.0.0.0の状態となっている。

  • R20 BGPネイバー、テーブル
    R20#show ip bgp summary 
     / snip / 
    Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
    90.0.0.10       4           10     252     249        4    0    0 03:40:44        1
    90.0.0.30       4           30     239     244        4    0    0 03:36:51        1
    R20#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 i
    R20#

    R20はAS10,AS30の2ネイバー接続している。
    10.0.0.0/8 の NEXT_HOP が 90.0.0.10 とeBGPのネイバーのアドレスに変更されている。

  • R30 BGPネイバー、テーブル
    R30#show ip bgp sum
     / snip / 
    Neighbor        V           AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
    90.0.0.20       4           20     252     246        4    0    0 03:39:38        2
    R30#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 i
    R30#

    R30はAS20と接続されている。※AS10とは直接接続されていません。
    10.0.0.0/8 の NEXT_HOP が 90.0.0.10 とR20の時と同じで変更されていません。

    R30#traceroute 10.0.0.10
    Type escape sequence to abort.
    Tracing the route to 10.0.0.10
    VRF info: (vrf in name/id, vrf out name/id)
      1 90.0.0.10 2 msec *  8 msec
    R30#

    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テーブルを確認しています。

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 となっています。

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 として認識されています。

R22のルーティングテーブルでは、10.0.0.0/8はKnown via "bgp 20"としてBGPから経路としてルーティングテーブルに登録されています。

BGP NEXT_HOP 到達性確認NG例

R21のeBGPから受信したinterfaceのアドレス(30.10.21.0/24)のOSPFへの広報設定を削除

R22ではR21のOSPFの設定を削除したため、30.10.21.0/24の経路が削除されました。

R22ではBGPの経路として10.0.0.0/8を受信していますが、NEXT_HOP 30.10.21.10 に経路到達性がないため inaccessible と表示され無効(Bestに選択されない)となっています。

R22ではBGPとして10.0.0.0/8の経路は受信していますがNEXT_HOPの到達性NGのため、経路として扱われずにルーティングテーブルには登録されません(not in table)

このようなケースでiBGPがNEXT_HOPが書き換えないために発生するケースです。BGP next-hop-self を利用することでnexthopのiBGPをeBGPのよう変更することが可能です。

BGP NextHop 到達性NG例 のConfig (Cisco-XE)

BGP記事一覧

BGP RFC/関連サイト

その他ネットワーク

-BGP