Appearance
BGP
基本概念
BGP (Border Gateway Protocol) はインターネット規模で使うパスベクター型EGP (Exterior Gateway Protocol)。 AS (Autonomous System) 間の経路制御を属性ベースで行う。
| 項目 | 内容 |
|---|---|
| 種別 | パスベクター型 EGP |
| 利用領域 | AS間(外部接続)、大規模DC/ISP |
| メトリック思想 | 距離より属性(Policy)重視 |
| 代表分類 | eBGP (external BGP), iBGP (internal BGP) |
eBGP と iBGP
| 項目 | eBGP | iBGP |
|---|---|---|
| 接続相手 | 別AS | 同一AS |
| 既定TTL | 1 | 255 |
| AS_PATH | 自ASを追加して広告 | 自ASは追加しない |
| Next Hop | 送信元に書き換わるのが基本 | そのまま渡るため next-hop-self を使うことが多い |
| こういうとき | 選ぶ方式 | 理由 |
|---|---|---|
| ISPや他社ネットワークと接続する | eBGP | 別AS間で経路交換するため |
| 自AS内でBGP経路を全体共有したい | iBGP | 同一AS内で経路配布するため |
| AS境界のルータ同士で経路を受け渡す | eBGP | 境界制御(ポリシー/属性調整)を行うため |
| 受け取った外部経路を社内BGP網へ広げる | iBGP | AS内伝搬(RR設計含む)が必要なため |
| 判定の最短ルール | 内容 |
|---|---|
| AS番号が違う隣接 | eBGP |
| AS番号が同じ隣接 | iBGP |
主なPath Attribute
| 属性 | 役割 | 備考 |
|---|---|---|
| Weight | Cisco独自の最優先属性 | 大きい方を優先(ローカル装置のみ有効) |
| Local Preference | AS内の出口選択 | 大きい方を優先 |
| AS_PATH | 経由AS列 | 短い方を優先 |
| Origin | 経路生成元 | IGP > EGP > incomplete |
| MED | 隣接ASへの入口制御 | 小さい方を優先(比較条件あり) |
| Next Hop | 次ホップ到達性 | 到達不能なら経路不採用 |
Local Preference(Local_Preference)の主な特徴
| 項目 | 内容 |
|---|---|
| デフォルト値 | 100 |
| 優先ルール | 値が大きい経路を優先 |
| 設定タイミング(実運用) | AS内で一貫性を持たせるため、境界ルータで eBGP 受信時(in)に設定することが多い |
| 有効範囲 | 自AS内のみ有効(iBGPで伝搬)。eBGPへ広告する際は Local Preference は送られない |
| 設定目的 | コンフィグモード | コマンド例 |
|---|---|---|
| 受信経路に Local Preference を付与 | Route-map config | set local-preference 200 |
| eBGP受信時に適用 | Router config | neighbor <peer-ip> route-map <map-name> in |
| 確認コマンド | 見るポイント |
|---|---|
show ip bgp | LocPrf 列の値 |
show ip bgp <prefix> | 対象プレフィックスでの LocPrf 比較 |
BGP ベストパス(試験向け順序)
| 順位 | 比較項目 | 判定 | デフォルト値/既定動作 |
|---|---|---|---|
| 1 | Weight | 大きい方 | 受信経路は 0、自装置起源経路は 32768 |
| 2 | Local Preference | 大きい方 | 100 |
| 3 | Locally originated | 自装置起源を優先 | 数値既定なし(自装置起源なら優先) |
| 4 | AS_PATH長 | 短い方 | 数値既定なし(経路ごとに変動) |
| 5 | Origin | IGP > EGP > incomplete | network 起源は通常 IGP、redistribute 起源は incomplete |
| 6 | MED | 小さい方 | 未設定MEDは通常 0 として扱う(既定) |
| 7 | eBGP / iBGP | eBGPを優先 | 同条件時は eBGP 優先(既定動作) |
| 8 | IGP metric to next hop | 小さい方 | 数値既定なし(IGP計算結果に依存) |
show ip bgp の見方
| 列/記号 | 意味 | 見るポイント |
|---|---|---|
Network | 宛先プレフィックス | どの経路の比較かを確認 |
Next Hop | 次ホップIP | 到達不能ならベストパスになれない |
Metric | MED | 小さい方が有利(比較条件あり) |
LocPrf | Local Preference | 大きい方が有利(iBGP内で有効) |
Weight | Cisco独自属性 | 大きい方が有利(最優先) |
Path | AS_PATH | 通過AS列。AS_PATH属性はここで確認する |
* | 有効経路 | BGPで有効な候補経路 |
> | ベストパス | この経路が最終選出(*> なら有効かつベスト) |
Network が空欄 | 省略表示 | 直前行と同じプレフィックスの別候補経路 |
Path 列の読み方 | 内容 |
|---|---|
| 先頭側 | 直近で追加されたASが左側に並ぶ |
例: 3 2 1 | AS1起源の経路が AS2 → AS3 を通過して受信側に到達 |
| ベストパス判定 | 同条件なら AS_PATH が短い方を優先 |
| 確認コマンド | 見るポイント |
|---|---|
show ip bgp | 全経路の *>, Weight, LocPrf, Path |
show ip bgp <prefix> | 指定プレフィックスの属性比較を深掘り |
show ip bgp summary | ピア状態(Established / 受信プレフィックス数) |
重要: 問題で「AS_PATH属性はどこか」と聞かれたら Path 列で判定する。
重要: デフォルトルートは Network 列に 0.0.0.0 と表示される。空欄表示とは意味が違う。
BGP メッセージ一覧
| メッセージ | 役割 | 主な送信タイミング | 補足 |
|---|---|---|---|
OPEN | ピア確立の初期交渉 | TCP確立後、最初に送る | AS番号、BGPバージョン、Hold Time、Router ID、Capabilityを交換 |
KEEPALIVE | セッション維持確認 | OPEN 後、および定期送信 | Hold Time切れを防ぐ |
UPDATE | 経路広告/撤回 | 経路変化時 | NLRIとPath Attributeを運ぶ |
NOTIFICATION | エラー通知と切断 | 異常検知時 | 送信後に通常セッション終了 |
ROUTE-REFRESH | 経路再広告要求(拡張) | ポリシー変更後など | セッションを切らずに再評価させる |
| 状態遷移 | 主に関わるメッセージ | 意味 |
|---|---|---|
Connect/Active → OpenSent | OPEN(送信) | TCP接続後にBGP交渉開始 |
OpenSent → OpenConfirm | OPEN(相互交換完了) | 能力交渉が成立 |
OpenConfirm → Established | KEEPALIVE(相互確認) | セッション確立 |
Established 維持 | KEEPALIVE / UPDATE | 生存確認しつつ経路交換 |
| 任意状態 → 切断 | NOTIFICATION | 異常を通知して終了 |
| 確認コマンド | 見るポイント |
|---|---|
show ip bgp summary | State/PfxRcd で確立可否を確認 |
show ip bgp neighbors | ピア詳細、Capability、メッセージ関連情報 |
BGP セッション状態一覧(show ip bgp summary)
| 状態 | 意味 | 最初に見るポイント |
|---|---|---|
Idle | ピア接続開始前/再試行待ち | neighbor 設定、到達性、shutdown 有無 |
Idle (Admin) | 管理的にBGPピアを停止中 | neighbor <peer-ip> shutdown の有無 |
Connect | TCP接続を開始中(TCP/179) | ACL/FW、対向IP、経路到達性 |
Active | 接続失敗後に再試行中 | Connect と同様。疎通不良が多い |
OpenSent | OPENメッセージ送信済み、応答待ち | AS番号不一致、認証不一致、能力不一致 |
OpenConfirm | OPEN交換完了、KEEPALIVE待ち | タイマー/認証/対向状態 |
Established | セッション確立、経路交換中 | PfxRcd 件数が期待通りか |
State/PfxRcd 列の見方 | 解釈 |
|---|---|
文字列が表示される(例: Active) | まだ Established ではない |
数字が表示される(例: 23) | Established で、受信プレフィックス数が 23 |
| 切断方法と表示 | 典型表示 |
|---|---|
neighbor <peer-ip> shutdown で停止 | Idle (Admin) |
インターフェース shutdown で切断 | Idle / Active(通常 Admin は付かない) |
最短確認: show ip bgp summary で State/PfxRcd を見て、文字列ならセッション障害、数字なら経路内容を show ip bgp で確認する。
運用トラブルシュート(Established/Idle Trap 多発)
| 症状 | 典型原因 |
|---|---|
Established / Idle のTrapが大量発生 | セッションフラップ(回線不安定、設定不一致、NOTIFICATION 連発) |
| 切り分け順 | コマンド | 見るポイント |
|---|---|---|
| 1 | show ip bgp summary | 揺れているピアと State/PfxRcd の遷移を特定 |
| 2 | show ip bgp neighbors <peer-ip> | Last reset理由、NotificationのError Code/Subcode |
| 3 | show logging | include BGP|NOTIFICATION | 同一エラーの連続発生有無 |
| 4 | show ip route <peer-ip> / show interface | 到達性、IFエラー、物理断・揺らぎ |
| 5 | show running-config | section router bgp | remote-as、認証、timer、capability設定差分 |
重要: 原因が残ると Connect/Active → NOTIFICATION → Idle を繰り返すため、Trapだけ止めても根本解決にはならない。
BGP ピアグループ(Peer Group)設定
| 目的 | 内容 |
|---|---|
| 設定簡素化 | 複数ピアに共通のBGP設定をまとめて適用する |
| 運用効率化 | 設定変更時の作業量とミスを減らす |
| 設定手順 | コンフィグモード | コマンド |
|---|---|---|
| BGPプロセスに入る | Global config | router bgp <asn> |
| ピアグループ作成 | Router config | neighbor <group-name> peer-group |
| グループ共通パラメータ設定 | Router config | neighbor <group-name> remote-as <asn> |
| ピアをグループへ所属 | Router config | neighbor <peer-ip> peer-group <group-name> |
| 共通設定の例(任意) | コマンド |
|---|---|
| update-source 共通化 | neighbor <group-name> update-source loopback0 |
| route-map 共通化 | neighbor <group-name> route-map <map-name> in |
| next-hop-self 共通化 | neighbor <group-name> next-hop-self |
bash
router bgp 65001
neighbor group1 peer-group
neighbor group1 remote-as 65001
neighbor 2.2.2.2 peer-group group1
neighbor 3.3.3.3 peer-group group1
neighbor 4.4.4.4 peer-group group1| よくあるミス | 説明 |
|---|---|
neighbor peer-group group1 | 構文誤り(正しくは neighbor group1 peer-group) |
neighbor <peer-ip> group1 peer-group | 構文順が逆(正しくは neighbor <peer-ip> peer-group group1) |
| 自分自身のIPを所属させる | ピアとして不適切(相手ピアIPを指定する) |
| 確認コマンド | 見るポイント |
|---|---|
show running-config | section router bgp | グループ定義と所属ピアの整合 |
show ip bgp summary | メンバー各ピアがEstablishedか |
show ip bgp neighbors | 各ピアに適用された属性/セッション詳細 |
eBGP におけるループ回避
| デフォルト動作 | 内容 |
|---|---|
| AS_PATH確認 | 受信経路のAS_PATHに「自AS番号」が含まれている場合、その経路を破棄する |
| 目的 | AS間で経路が戻ってくるループを防止する |
| 具体例 | 判定 |
|---|---|
自ASが 13、受信AS_PATHが 2 13 | 自AS 13 を含むため破棄 |
自ASが 13、受信AS_PATHが 2 3 | 自ASを含まないため受信候補 |
| 回避策 | 使う側 | 何をするか |
|---|---|---|
as-override | 送信側(中間ルータ) | 広告時にAS_PATH内の相手ASを送信側ASへ置換して送る |
allowas-in | 受信側 | 自ASを含むAS_PATHでも受け入れる |
| 確認コマンド | 見るポイント |
|---|---|
show ip bgp | Path 列に自ASが含まれているか |
show ip bgp neighbors <IP> received-routes | 受信経路が拒否/受理されているか(機種依存) |
重要: eBGPの基本は「自ASを含む経路は捨てる」。設計上必要な場合のみ as-override や allowas-in を使う。
as-override
| 目的 | 内容 |
|---|---|
| 受信拒否回避 | 受信側が「自ASをAS_PATH内に含む経路」を破棄する動作を回避する |
| 典型シーン | 同一顧客ASが複数拠点で接続され、途中ASを跨いで相互到達させたいとき |
| 動作 | 説明 |
|---|---|
as-override 有効時 | 指定ネイバへ広告する際、AS_PATH内の相手AS番号を送信側ASへ置換して送る |
| 効果 | 受信側に自AS番号が見えなくなり、経路を受け取れるようになる |
| 設定目的 | コンフィグモード | コマンド |
|---|---|---|
| as-override有効化 | Router config | neighbor <neighbor-ip> as-override |
| 反映を促進(任意) | Privileged EXEC | clear ip bgp * soft |
| 例 | コマンド |
|---|---|
| R2がR1/R3向けにas-override | neighbor 192.168.12.1 as-override / neighbor 192.168.23.3 as-override |
as-override と allowas-in | 違い |
|---|---|
as-override | 送信側でAS_PATHを書き換える(通常は中間PE側で設定) |
allowas-in | 受信側で「自ASを含む経路」を受け入れる(CE側で設定) |
| よくあるミス | 説明 |
|---|---|
| 自分自身のIPをneighbor指定 | ネイバ指定ミス(対向ピアIPを指定する) |
as-override の適用先誤り | 「経路を送り出す側」のneighborへ設定する必要がある |
BGP Router ID
| 項目 | 内容 |
|---|---|
| 役割 | BGPベストパス選択で最後のタイブレーク要素として使われる |
| 比較ルール | タイブレーク時は Router ID が小さい方を優先 |
| ベストプラクティス | bgp router-id で静的に明示設定する |
| 理由 | 自動選出に依存すると、IFアドレス変更や再起動タイミングで意図せず変わる可能性がある |
| 未設定時の選出順 | 内容 |
|---|---|
| 1 | 有効なLoopback IFのうち最大IPアドレス |
| 2 | Loopbackが無ければ、その他有効IFの最大IPアドレス |
| 設定目的 | コンフィグモード | コマンド |
|---|---|---|
| Router IDを明示設定 | Router config | bgp router-id <A.B.C.D> |
| 確認コマンド | 見るポイント |
|---|---|
show ip bgp summary | BGP router identifier の値 |
show running-config | section router bgp | bgp router-id の設定有無 |
重要: Router ID変更の反映にはBGPセッション再確立が必要になるため、変更タイミングを設計して実施する。
BGP 基本設定
| 設定目的 | コンフィグモード | コマンド |
|---|---|---|
| BGPプロセス開始 | Global config | router bgp <asn> |
| ピア定義 | Router config | neighbor <peer-ip> remote-as <asn> |
| 広告プレフィックス指定 | Router config | network <prefix> mask <mask> |
| iBGPでNext Hopを書き換え | Router config | neighbor <peer-ip> next-hop-self |
| Loopback終端で張る | Router config | neighbor <peer-ip> update-source loopback0 |
neighbor ... route-map ... in/out | 意味(自分視点) | 例 |
|---|---|---|
in | 隣接ルータから受信した経路に適用 | neighbor 10.0.0.2 route-map RM-IN in |
out | 隣接ルータへ送信する経路に適用 | neighbor 10.0.0.2 route-map RM-OUT out |
| 確認コマンド | 見るポイント |
|---|---|
show ip bgp summary | ピア状態(Established/PfxRcd) |
show ip bgp | ベストパス(*>)と属性 |
show ip bgp neighbors | セッション詳細、受信/送信プレフィックス |
show ip route bgp | RIB採用済みBGP経路 |
| コマンド使い分け | 使う場面 |
|---|---|
show ip bgp summary | まず全体ヘルス確認したいとき(ピアが張れているか、件数が入っているか) |
show ip bgp | 経路そのものを確認したいとき(*> のベスト、AS_PATH/Next Hop/MED/LocalPrefの比較) |
最短手順: show ip bgp summary で異常ピアを特定してから、show ip bgp で経路属性を深掘りする。
BGPのリセット(Hard / Soft)
| 種別 | コマンド | 動作 | 使うとき |
|---|---|---|---|
| ハードリセット | clear ip bgp * | 全BGPピアを切断して再確立。経路を再学習し直す | OPEN/Capability不一致などでセッション自体を作り直したいとき |
| ソフトリセット | clear ip bgp * soft | セッションは維持したまま経路情報を再評価/再交換 | Route-map、Local Preference、MED などポリシー変更を即時反映したいとき |
| 補足 | 内容 |
|---|---|
| 影響範囲 | * は全ピア対象。影響を絞るなら clear ip bgp <peer-ip> 系を使う |
| 運用目線 | 本番はまず soft を優先し、hard は通信影響を理解して実施する |
RIB-Failure
| 項目 | 内容 |
|---|---|
| 意味 | BGPテーブルでは有効/ベストでも、RIB(ルーティングテーブル)へ投入されなかった状態 |
| 典型原因 | 同一プレフィックスで、より優先される経路(主にADが小さい経路)が既にRIBへ入っている |
| 試験ポイント | show ip bgp のステータスコード r は RIB-failure を示す |
| よくあるパターン | 例 |
|---|---|
| iBGP経路(AD 200)とOSPF経路(AD 110)が競合 | OSPFがRIB採用、BGP側はRIB-failure |
| iBGP経路(AD 200)とStatic経路(AD 1)が競合 | StaticがRIB採用、BGP側はRIB-failure |
| 確認コマンド | 見るポイント |
|---|---|
show ip bgp | 対象経路に r が付いているか |
show ip bgp rib-failure | RIBへ入らない理由の確認 |
show ip route <prefix> | 実際にRIBへ採用された経路種別 |
| 必要時の調整 | コンフィグモード | コマンド |
|---|---|---|
| BGP ADの調整 | Router config | distance bgp <external-ad> <internal-ad> <local-ad> |
重要: RIB-failure は「BGP不達」ではなく「優先度の結果」で起きることが多い。設計意図どおりなら問題ない。
試験での最短チェック
| チェック | 見るポイント |
|---|---|
| ピアが張れない | remote-as / update-source / 到達性 / ACL |
| 受信しているが使われない | Next Hop 到達不能、属性負け |
| 期待経路が広告されない | network 条件(RIB存在)やポリシー |
覚え方: 「BGPは距離よりポリシー。Weight/LocalPrefで出口を決める」。