アトリビュート NEXT HOP


BGP で経路を学習したときに、その宛先ネットワークへ到達するために使うべき IP アドレスのこと。

  • ルーターが BGP で受け取った経路に対して
    「この IP に向けてパケットを送れば目的地に届くよ」
    と教えてくれる値が NEXT_HOP

Next-Hop の決まりごと

1. EBGP では Next-hop を送信元の IP に書き換える

  • 外部 BGP(EBGP)は異なる AS なので、
    送信元 Router の IP アドレスに Next-Hop を書き換えるのが通常動作。


AS 65001 → AS 65002 に広告

  • 65002 側が受ける経路の NEXT_HOP は「65001 側のインターフェース IP」になる。

2. IBGP では Next-hop を書き換えない(そのまま渡す)

超重要!多くのトラブル原因!

  • 内部 BGP(IBGP)は「Next-hop を変更しない」という仕様。
  • つまり、EBGP から受け取った next-hop を そのまま IBGP ピアに流す


R1(EBGP) → R2(IBGP) → R3(IBGP)

  • R1 が EBGP で受け取った NEXT_HOP は
    R2 → R3 にそのまま渡される
    → R3 から見ると R1 の IP が NEXT_HOP になる

ここで問題

R3 が R1 の Next-hop を IGP で到達できない場合、BGP 経路を使えない

これが「BGPは Next-hop を解決できないと経路を FIB(ルーティングテーブル)に入れない」という仕様。

3. Next-hop を IGP(OSPF / IS-IS / static)で到達可能にする必要がある

  • BGP の Next-hop は IGP が解決できて初めて使える
  • BGP は IGPを見て「この Next-hop の IP に行ける?」と判断する。

到達できなければ

  • BGP table(BGP RIB)には載る
  • Routing table(FIB / RIB)には載らない

BGP がブラックホールになる or 経路が使われない

Next-Hop に関する代表的コマンド

Cisco

show ip bgp
show ip bgp <prefix>
show ip route <nexthop>

よくあるトラブルと原因

トラブル1:IBGP で学習した経路がRIBに入らない

原因:

  • Next-hop の IP に IGP が到達できない

例:
R3 から見て、Next-hop R1 のアドレスが IGP に無い → BGP 経路が無効化。

トラブル2:EBGP マルチホップで Next-hop が外向きIFになってしまう

対策:

  • next-hop-self
  • static route
  • route-map で next-hop 指定

トラブル3:Route Reflector で Next-hop が変わらない問題

反射ルーター(RR)は next-hop を変更しない。

対策:

  • RR に next-hop-self を付ける
  • RR クライアント同士で Next-hop 解決できる IGP を組む

対策:Next-hop を変更したい場合

1. next-hop-self(IBGPで必須レベル)

Cisco:

router bgp 65001
 neighbor 10.0.0.2 next-hop-self

IBGP の経路を渡すときに next-hop を 自分の IP に書き換える設定。
→ Route Reflector では必須級。

2. route-map で next-hop を意図的に設定

Cisco:

route-map SETNH permit 10
  set ip next-hop 192.0.2.1

router bgp 65001
  neighbor 10.0.0.2 route-map SETNH out

まとめ

項目内容
EBGPnext-hop を自動で書き換える
IBGPnext-hop を書き換えない(そのまま渡す)
BGPnext-hop が IGP で解決できなければ経路を使わない
対策next-hop-self / IGP で Next-hop を到達可能にする