手当たり次第に書くんだ

飽きっぽいのは本能

Cisco BGP の基本設定 – neighbor / network / AS 番号と経路広告を確認する

Cisco IOS / IOS XE で BGP を設定するには、ローカル AS、対向 neighbor、広告するプレフィックスを決めます。ただし、コマンドを投入しただけでは、隣接関係や経路広告が成立するとは限りません。対向 IP アドレスへの到達性、TCP 179 番ポート、ルーティングテーブル上の経路、入出力ポリシーが互いに依存しているためです。

この記事では、ローカル AS を 65000、対向 AS を 65010、対向 IP アドレスを 192.0.2.2 とした例で、BGP の基本設定と確認方法を説明します。特に、network が経路を作るコマンドではないこと、デフォルトルートの広告方法を混同しないことが重要です。

BGP の最小構成で決めるもの

項目設定例意味
ローカル AS65000自分のルーターが所属する AS
対向 AS65010neighbor が所属する AS
対向 IP アドレス192.0.2.2BGP セッションを確立する相手
広告プレフィックス10.10.0.0/16自 AS から対向へ広告する経路
Router ID192.0.2.1BGP ルーターを識別する 32 ビット値

この例では AS 番号が異なるため eBGP です。同じ AS 番号同士で接続する iBGP とは、next-hop の扱いや経路伝播の規則が異なります。まずは eBGP の最小構成を成立させ、その後に経路ポリシーを追加します。

neighbor の前に IP 到達性を確認する

BGP は TCP 上で動作し、接続先には 179 番ポートを使用します。したがって、neighbor の設定が正しくても、対向 IP アドレスへ到達できなければセッションは確立しません。

  • 対向 IP アドレスへルーティングできること
  • ACL やファイアウォールが TCP 179 番を遮断していないこと
  • 双方の remote-as が相手側の AS 番号と一致していること
  • Loopback を接続元に使う場合は update-source と到達経路を用意していること
  • 直接接続ではない eBGP の場合は、必要性を確認したうえで ebgp-multihop を設計していること

最初に ping 192.0.2.2 やルーティングテーブルを確認し、BGP より下の IP 到達性を切り分けておくと、Idle や Active の原因を追いやすくなります。

Cisco IOS / IOS XE の BGP 最小設定

次の例では、10.10.0.0/16 を Null0 の静的経路としてルーティングテーブルに登録し、そのプレフィックスを BGP へ投入します。

ip route 10.10.0.0 255.255.0.0 Null0

router bgp 65000
 bgp router-id 192.0.2.1
 bgp log-neighbor-changes
 neighbor 192.0.2.2 remote-as 65010
 network 10.10.0.0 mask 255.255.0.0
  • router bgp 65000 は、ローカル AS 65000 の BGP プロセスを起動します。
  • bgp router-id 192.0.2.1 は、BGP Router ID を明示します。
  • neighbor 192.0.2.2 remote-as 65010 は、対向 IP アドレスと対向 AS を関連づけます。
  • network 10.10.0.0 mask 255.255.0.0 は、RIB に存在する同一プレフィックスを BGP テーブルへ投入します。

network コマンドは経路を作らない

network は、インターフェースへ IP アドレスを設定するコマンドでも、新しい経路を生成するコマンドでもありません。指定したプレフィックスとマスクに一致する経路がルーティングテーブルに存在するとき、その経路を BGP テーブルへ投入します。

たとえば network 10.10.0.0 mask 255.255.0.0 を設定しても、RIB に 10.10.0.0/16 が存在しなければ広告されません。10.10.1.0/24 のような、より具体的な経路だけが存在していても、/16 の完全一致にはならない点に注意が必要です。

Null0 の静的経路を使う意味

複数の詳細経路を 10.10.0.0/16 として集約広告したい場合、Null0 への静的経路を用意する方法があります。これにより RIB 上に集約プレフィックスが成立し、配下の詳細経路が消えた場合にも、集約範囲の未知宛てパケットを誤って別のデフォルトルートへ流すことを防げます。

ip route 10.10.0.0 255.255.0.0 Null0

router bgp 65000
 network 10.10.0.0 mask 255.255.0.0

タイマーと no auto-summary は最小設定に不要

Cisco IOS の BGP タイマーは、デフォルトで keepalive 60 秒、holdtime 180 秒です。同じ値を明示する必要はありません。変更する場合の正しい構文は timers bgp です。

router bgp 65000
 timers bgp 30 90

タイマーを短くすると障害検知は速くなりますが、瞬間的な遅延や CPU 負荷でセッションが不安定になる可能性もあります。BFD を使う設計との役割分担も含めて決めるべきであり、基本設定へ習慣的に追加するものではありません。

no auto-summary も、現在の Cisco IOS / IOS XE では自動集約がデフォルトで無効なので、通常は最小設定へ書く必要がありません。古い設定例から引き継ぐ場合は、対象バージョンのデフォルト動作を確認します。

静的経路の再配布は対象を限定する

redistribute static を設定すると、RIB 上の静的経路を BGP へ再配布できます。しかし、意図しない管理用経路やデフォルトルートまで広告対象に含める危険があるため、route-map と prefix-list で対象を限定します。

ip prefix-list BGP-STATIC seq 10 permit 10.10.0.0/16

route-map REDIST-STATIC permit 10
 match ip address prefix-list BGP-STATIC

router bgp 65000
 redistribute static route-map REDIST-STATIC

単一プレフィックスを広告するだけなら、RIB の完全一致を前提にする network の方が意図を読み取りやすい場合があります。再配布は、複数の経路を一定の条件で BGP へ取り込む必要がある場合に使います。

デフォルトルートの広告方法を分ける

BGP でデフォルトルートを広告する方法は一つではありません。どの neighbor に、どの条件で広告するかによって使い分けます。

方法主な用途前提
network 0.0.0.0RIB にあるデフォルトルートを BGP へ投入する0.0.0.0/0 が RIB に存在する
neighbor ... default-originate特定 neighbor へデフォルトルートを広告する必要に応じて route-map で広告条件を付ける
default-information originate別プロトコルから再配布されるデフォルトルートを BGP へ取り込む再配布設定も必要

RIB 上のデフォルトルートを明示的に BGP へ投入する場合は、次のように設定できます。

ip route 0.0.0.0 0.0.0.0 203.0.113.1

router bgp 65000
 network 0.0.0.0

特定の対向だけへデフォルトルートを送るなら、neighbor 単位の設定を使えます。

router bgp 65000
 neighbor 192.0.2.2 default-originate

default-information originate は、単独で設定してもデフォルトルートを広告しません。Cisco のコマンドリファレンスでは、再配布設定も必要とされています。また、同じルーターで neighbor default-originate と併用せず、どちらの責任でデフォルトルートを生成するのかを一つに決めます。

BGP セッションと経路広告を確認する

設定後は、セッション、BGP テーブル、RIB、neighbor への広告結果を別々に確認します。Established になったことだけでは、必要な経路を正しく広告できているとは限りません。

show ip bgp summary
show ip bgp 10.10.0.0 255.255.0.0
show ip route 10.10.0.0 255.255.0.0
show ip bgp neighbors 192.0.2.2 advertised-routes
show ip route bgp
確認対象見ること
show ip bgp summaryneighbor の状態が Established か、受信プレフィックス数が想定どおりか
show ip bgp 10.10.0.0 255.255.0.0対象プレフィックスが BGP テーブルに存在するか
show ip route 10.10.0.0 255.255.0.0network の前提となる完全一致経路が RIB にあるか
advertised-routes対象 neighbor へ実際に何を広告しているか
show ip route bgpBGP で学習した経路が RIB に採用されているか

状態別の切り分け

症状主な確認点
Idle / Active のままIP 到達性、TCP 179 番、remote-as、接続元アドレス、eBGP の TTL
Established だが広告されない対象経路の RIB 完全一致、BGP テーブル、outbound の prefix-list / route-map
広告済みだが対向 RIB に入らない対向側の inbound policy、next-hop 到達性、より優先される別経路
意図しない経路まで広告される再配布範囲、prefix-list、route-map、デフォルトルート生成方法

BGP の障害調査では、「セッションが成立するか」と「経路が BGP テーブルへ入るか」と「対向へ広告されるか」と「対向 RIB に採用されるか」を分けます。この境界を混ぜると、neighbor 設定、経路生成、ポリシーのどこに原因があるのか分からなくなります。

Established の後に経路ポリシーを設定する

実運用では、neighbor が確立しただけの無制限な状態で終わらせず、広告するプレフィックスを明示します。次の例では、10.10.0.0/16 だけを対向へ広告します。

ip prefix-list BGP-OUT seq 10 permit 10.10.0.0/16

route-map BGP-OUT permit 10
 match ip address prefix-list BGP-OUT

router bgp 65000
 neighbor 192.0.2.2 route-map BGP-OUT out

同様に受信側にも prefix-list や route-map を設け、受け入れる経路、local preference、AS path、community などの判断基準を定義します。BGP の設計対象は neighbor の確立ではなく、どの経路をどの条件で交換するかです。

参考情報

参考情報:

参考書籍

参考
書籍
参考書籍

マスタリング TCP/IP ルーティング編

OSPF、IS-IS、BGP、経路制御、ルーティング設計の基礎を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。

Amazon で見る

このリンクは Amazon アソシエイトリンクです。

あわせて読みたい:

まとめ

Cisco IOS / IOS XE の BGP 最小設定は、ローカル AS、neighbor、対向 AS、広告プレフィックスから始まります。ただし、network は経路を生成せず、RIB に完全一致する経路がある場合に、そのプレフィックスを BGP テーブルへ投入します。

セッションが Established になった後も、BGP テーブル、RIB、advertised-routes、対向側の受信ポリシーを分けて確認する必要があります。再配布やデフォルトルート広告は影響範囲が大きいため、どの経路を、どの neighbor に、どの条件で広告するのかを明示して設定します。

Cisco BGP の基本設定 – neighbor / network / AS 番号と経路広告を確認する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る