Cisco IOS / IOS XE で BGP を設定するには、ローカル AS、対向 neighbor、広告するプレフィックスを決めます。ただし、コマンドを投入しただけでは、隣接関係や経路広告が成立するとは限りません。対向 IP アドレスへの到達性、TCP 179 番ポート、ルーティングテーブル上の経路、入出力ポリシーが互いに依存しているためです。
この記事では、ローカル AS を 65000、対向 AS を 65010、対向 IP アドレスを 192.0.2.2 とした例で、BGP の基本設定と確認方法を説明します。特に、network が経路を作るコマンドではないこと、デフォルトルートの広告方法を混同しないことが重要です。
BGP の最小構成で決めるもの
| 項目 | 設定例 | 意味 |
|---|---|---|
| ローカル AS | 65000 | 自分のルーターが所属する AS |
| 対向 AS | 65010 | neighbor が所属する AS |
| 対向 IP アドレス | 192.0.2.2 | BGP セッションを確立する相手 |
| 広告プレフィックス | 10.10.0.0/16 | 自 AS から対向へ広告する経路 |
| Router ID | 192.0.2.1 | BGP ルーターを識別する 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.0router 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.0 | RIB にあるデフォルトルートを 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-originatedefault-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 summary | neighbor の状態が Established か、受信プレフィックス数が想定どおりか |
show ip bgp 10.10.0.0 255.255.0.0 | 対象プレフィックスが BGP テーブルに存在するか |
show ip route 10.10.0.0 255.255.0.0 | network の前提となる完全一致経路が RIB にあるか |
advertised-routes | 対象 neighbor へ実際に何を広告しているか |
show ip route bgp | BGP で学習した経路が 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 の確立ではなく、どの経路をどの条件で交換するかです。
参考情報
参考情報:
- Cisco IOS XE 17.x – Configuring a Basic BGP Network
Cisco IOS XE における基本的な BGP 設定と確認コマンドの公式資料です。 - Cisco IOS IP Routing: BGP Command Reference – BGP Commands: C through I
default-information originateの前提と関連コマンドを確認できます。
参考書籍
書籍
マスタリング TCP/IP ルーティング編
OSPF、IS-IS、BGP、経路制御、ルーティング設計の基礎を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
あわせて読みたい:
- Cisco ルーターの初期設定 – SSH、enable secret、VTY を最初に整える
BGP を設定する前提となる管理アクセスと基本セキュリティを確認する記事です。 - Cisco HSRP と Object Tracking – デフォルトゲートウェイ冗長化で上流障害を反映する
経路障害とデフォルトゲートウェイ冗長化を連動させる考え方を説明しています。
まとめ
Cisco IOS / IOS XE の BGP 最小設定は、ローカル AS、neighbor、対向 AS、広告プレフィックスから始まります。ただし、network は経路を生成せず、RIB に完全一致する経路がある場合に、そのプレフィックスを BGP テーブルへ投入します。
セッションが Established になった後も、BGP テーブル、RIB、advertised-routes、対向側の受信ポリシーを分けて確認する必要があります。再配布やデフォルトルート広告は影響範囲が大きいため、どの経路を、どの neighbor に、どの条件で広告するのかを明示して設定します。

