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
まとめ
| 項目 | 内容 |
|---|---|
| EBGP | next-hop を自動で書き換える |
| IBGP | next-hop を書き換えない(そのまま渡す) |
| BGP | next-hop が IGP で解決できなければ経路を使わない |
| 対策 | next-hop-self / IGP で Next-hop を到達可能にする |