BGPって「インターネットを支える超重要技術」なのに、勉強を始めると AS/属性/ベストパス で一気に難しく感じますよね。
この記事は、初心者がつまずきやすいポイントを先回りして、CCNP(ENCOR/ENARSI)で点が取れる理解まで一直線でつなげます。

1. BGPを一言でいうと?
1-1 BGPが必要な理由
1-1-1 IGPとの違いを3行で
BGPは一言でいうと、**「ネットワークの“会社同士”が、行ける場所(宛先)を教え合う仕組み」**です。
ここで言う“会社同士”は、**AS(自治システム)**という単位で考えます。
ASは「一つの組織が管理しているネットワークのまとまり」くらいでOKです。
BGPは、このAS同士をつないで、インターネット全体が迷子にならない様に道案内をしています。(nic.ad.jp)
一方で、OSPFみたいなIGPは「会社の中(同じASの中)」の道案内が得意です。
例えば、同じ学校の校内で教室に行く道はIGP、学校から別の学校へ行く道はBGP、みたいなイメージです。
BGPが強いのは、ただ最短ルートを選ぶだけじゃなくて、“こうしたい”という方針(ポリシー)で道を選べるところです。
「この回線は高いからなるべく使わない」「この出口を使わせたい」みたいな“都合”を反映できるのがBGPの特徴です。(nic.ad.jp)
2. CCNPでBGPが出る範囲
2-1 ENCORで問われる「直結eBGP」
2-1-1 ベストパスの超基本
CCNP ENCORでは、「BGPを設定出来るか」だけでなく、**“どうやって動いてるか説明出来るか”**が大事です。
実際、試験範囲に「直接つながっている相手どうしのeBGPを設定・確認(ベストパス選びとネイバー関係)」が書かれています。(learningnetwork.cisco.com)
初心者が最初にやる事はシンプルで、流れはこの順です。
- 相手と友だちになる(セッション確立)
- 道(経路)を交換する
- 同じ目的地への道が複数あるとき、どれが“代表”になるか(ベストパス)
「ベストパス」は、ざっくり言うと“評価の順番”があり、その順番で勝ち残った道が選ばれます。
Ciscoの説明でも「複数の道が来たとき、ベストパスを決めてルーティングテーブルに入れる」と整理されています。(Cisco)
試験でも現場でも役立つ“確認コマンド”はこれです(暗記より、見て判断出来るのが強い)。
show ip bgp summary
show ip bgp
show ip route
2-2 ENARSIで問われる「トラシュー&設計」
2-2-1 RR/ポリシー/属性
ENARSIは、もっと“現場寄り”です。試験範囲にも、**route-map(ルートマップ:条件つきのルール)**やフィルタ、ルートリフレクタ(RR)など、運用っぽい項目が入っています。(learningnetwork.cisco.com)
ENARSIをラクにするコツは、BGPのトラブルを次の順で考える事です。
- つながってる?(セッション)
- 次の行き先(next-hop)に行ける?
- フィルタで落としてない?
- iBGPの仕組み(RRなど)で止まってない?
- 属性(ルートの“性格”)で負けてない?
この順番で見ていくと、原因が見つかり易いです。
Ciscoのトラブルシュート資料でも「次ホップに行けるようにルートを用意する」「iBGPなら動的ルーティングで伝える」など、まず到達性を見る考え方が出てきます。(Cisco)
3. BGPの基本用語を“絵”で覚える
3-1 ASとAS番号
3-1-1 AS_PATHがループを防ぐ
BGPでよく出るのが AS番号 と AS_PATH(エーエスパス)です。
AS_PATHは「この道はどのASを通ってきたか」という通り道の記録です。
これがあるおかげで、BGPは大きなネットワークでも“ぐるぐる回る”事故(ループ)を減らせます。
JPNICの解説でも、BGPはAS番号を使い、UPDATEで経路情報と属性(パス属性)を運ぶ、とまとめられています。(nic.ad.jp)
イメージは「スタンプラリー」です。
道の説明に「通った場所の一覧」が付いてきます。
もしその一覧に自分のAS番号が入っていたら、「同じ場所に戻ってきてる=危ない」ので、その道は基本使いません。
これが“ループを防ぐ”考え方です。
ここが分かると、あとで出てくる **AS-PATH prepend(わざと遠回りに見せる)**も理解しやすくなります(prependは“スタンプを増やして遠く見せる”イメージ)。(nic.ad.jp)
3-2 eBGPとiBGP
3-2-1 iBGPは勝手に中継しない
ここが初心者の最大のつまずきポイントです。
**iBGP(同じASの中のBGP)は、iBGPで覚えた道を、別のiBGP相手にそのまま流しません。
だからiBGPだけでちゃんと経路を広げたいなら、基本は全員が全員と話す(フルメッシュ)**が必要になります。
RFCでも、iBGPをフルメッシュにしないとスケールが問題になり、解決策としてRRが説明されています。(IETF Datatracker)
なぜそんなルールがあるかというと、同じASの中だと「通り道(AS_PATH)」が変わらず、雑に中継すると混乱しやすいからです。
現実にはフルメッシュはつらいので、次の章で出てくる RR(Route Reflector:中継役) を使って楽にします。(IETF Datatracker)
4. セッション確立:BGPはTCPでしゃべる
4-1 4つのメッセージ
4-1-1 OPEN/UPDATE/KEEPALIVE/NOTIFICATION
BGPは、TCPでつながります。
だから、まず“会話の回線”を作ってから話します。
RFC 4271でも、確立後にUPDATE/KEEPALIVE/NOTIFICATIONを交換する(Established状態)事が書かれています。(IETF Datatracker)
メッセージは基本この4つを覚えればOKです。
- OPEN(オープン):最初の自己紹介。「私はAS65001だよ」みたいに名刺交換する
- KEEPALIVE(キープアライブ):生きてる確認。「まだつながってるよ」
- UPDATE(アップデート):道を渡す本番。「この宛先へはこう行けるよ」
- NOTIFICATION(ノーティフィケーション):大きなエラー通知。これが出ると切れることが多い
JPNICの資料でも、UPDATEが経路情報を運び、KEEPALIVEはタイマーとセットで“落ちたか判断する”ような話が説明されています。(nic.ad.jp)
5. ルート選択:ベストパスはこう決まる
5-1 まずロンゲストマッチ
5-1-1 「経路の粒度」で勝負が決まる
ベストパスの前に、超重要な大前提があります。
ルータは宛先を決めるとき、**一番細かく合う道(最長一致=ロンゲストプレフィックスマッチ)**を使います。
これはルータの基本ルールとしてRFC 1812にもはっきり書かれています。(IETF)
例:
- 10.0.0.0/8(ざっくり)
- 10.1.2.0/24(細かい)
が両方あると、10.1.2.3宛ては /24が勝ちです。つまり、属性でベストパスを頑張っても、もっと細かい経路が別にあればそっちが使われる事があります。だから、思った通りにならないときは「/何(プレフィックス長)が入ってる?」を最初に見るのが近道です。(IETF)
5-2 属性の優先順位(Cisco例)
5-2-1 Weight/LocalPref/AS_PATH/Origin/MED
ベストパスは「道の点数勝負」です。
BGPには**属性(その道の“性格”)**があり、順番に比べて勝った道が選ばれます。
Ciscoの説明では、Weight、Local Preference、AS_PATH、Origin、MEDなどを順に見てベストパスを決める流れがまとまっています。(Cisco)
中学生向けに超ざっくり言うと:
- Weight(重み):そのルータだけの“えこひいき”
- Local Preference(ローカルプリファレンス):ASの中の“みんなのルール”。大きいほど優先
- AS_PATH:通るASが少ないほど有利(短い方が勝ちやすい)
- Origin/MED:細かい調整(条件つきで効く)
そして超大事なのがこれ。
next-hop(次ホップ)に行けない道は、最初から候補から落ちる事がある、という点です。
Ciscoも「なぜルータがパスを無視するか」を説明していて、次ホップ到達性は重要ポイントです。(Cisco)
Juniperの説明でも「次ホップに行けない経路は選ばれない」という考え方が明確に書かれています。(Juniper Networks)
6. ルート制御:CCNPで点が取れる設定の型
6-1 フィルタ(prefix-list/route-map)
6-1-1 “許可リスト”から作る
BGPは広い範囲に影響が出るので、初心者ほど 「通していいものだけ通す」 が安全です。
これが“許可リスト方式”です。
- prefix-list(プレフィックスリスト):通していい宛先のリスト
- route-map(ルートマップ):条件に合うものだけに、追加のルールを当てる仕組み
Ciscoの資料でも、不要な経路更新を減らすためにフィルタを使う考え方(prefixベースのフィルタ)や、ルート制御の重要性が説明されています。(Cisco)
やり方の“型”はこれです。
- prefix-listで「許可」する宛先を作る
- route-mapで「その宛先だけ」通したり、属性を変えたりする
- neighborに in/out で当てる(入ってくる道/出していく道)
この型を作ると、「なぜ経路が来ない?」「なぜ広告しない?」のときに、まずフィルタを疑えるようになります。(Cisco)
6-2 トラフィックエンジニアリング
6-2-1 LocalPref・AS-PATH prepend・Community
ここは言葉が難しく見えるけど、やる事は単純です。
コツは “行き”と“帰り”を分ける事。
- 行き(自分のASから外へ出る道):自分のASの中で決めやすい → Local Preferenceが主役
- 帰り(外から自分のASへ入ってくる道):相手が選ぶ → AS-PATH prependで“遠く見せる”工夫がよく使われる
そして便利なのが Community(コミュニティ)。
これは「この道はこう扱ってね」という“タグ”みたいな物です。
例えば NO_ADVERTISE(誰にも広告しない) や NO_EXPORT(ASの外へ出さない) の様な“有名タグ”があります。
Ciscoコミュニティの記事や解説でも、no-advertise等の意味が説明されています。(community.cisco.com)
初心者はまず、「LocalPrefは内側で効かせる」「prependは外側にお願いする」「communityはラベル」という3点だけ覚えれば十分です。(Cisco)
6-3 経路集約
6-3-1 aggregate-addressとsummary-only
経路が増えると、BGPの表が大きくなって重くなります。
そこで使うのが 経路集約(たくさんの道を、まとめて短くする)です。
Ciscoの資料では aggregate-address で集約でき、ただし属性が継承されないなどの注意点が説明されています。(Cisco)
集約を中学生向けに言うと、「住所をまとめる」感じです。
- 「東京都千代田区1丁目、2丁目、3丁目…」を
- 「東京都千代田区」みたいにまとめる
というイメージです。便利だけど、まとめると細かい情報が消えます。だから、集約するときは「何が消えるか」を意識する必要があります。(Cisco)
また、summary-only(集約した経路だけ出したい)という考え方もあり、細かい経路を出したくないときに使います(状況によっては運用上助かります)。(Cisco)
7. トラブルシュート:詰まるのは大体ここ
7-1 Next-Hop到達性
7-1-1 next-hop-selfとIGPを疑う
BGPトラブルで一番多いのはこれです。
「相手とはつながってる(Established)っぽいのに、経路が使えない/入ってこない」
この時、まず見るのが **next-hop(次ホップ)**です。
次ホップは「次に行くべき相手の住所」みたいなもの。
そこに行けないなら、その道は使えません。
Ciscoのトラブルシュートでも「次ホップに行けるようにルートを入れる(スタティックや動的ルーティング)」と説明されています。(Cisco)
そして、iBGPでよく効くのが next-hop-selfです。
これは「次ホップを“自分”に書き換えて、相手が迷わないようにする」考え方です。
Ciscoコミュニティでも、next-hop-selfが“next-hopを一貫した値にする”ために使われる、という説明があります。(community.cisco.com)
チェックの順番はこれでOKです。
show ip bgpで next-hop を見るshow ip routeで next-hop に行けるか見る- 行けないなら IGP/スタティック/next-hop-self を疑う
(Cisco)
7-2 iBGPスケール問題
7-2-1 ルートリフレクタでフルメッシュ回避
iBGPは「勝手に中継しない」ので、ルータが増えるとフルメッシュが地獄になります。
そこで使うのが **RR(Route Reflector)**です。
RRは「フルメッシュしなくても済むようにする仕組み」としてRFC 4456で説明されています(RFC 2796を置き換えたものです)。(IETF Datatracker)
イメージは「クラスの連絡係」です。
- みんなが全員に連絡するのは大変
- 連絡係(RR)に言えば、RRがみんなに回してくれる
という感じです。これでiBGPの数が増えても回せます。(IETF Datatracker)
ただしRRを入れても、next-hop問題や設定ミスで届かない事があります。
だから、最初は「RR1台+クライアント2台」の小さな形で動く事を確認してから広げるのが安全です。(IETF Datatracker)
8. 学習ロードマップ(初心者→CCNP)
8-1 演習で覚える最短ルート
8-1-1 3つのラボ課題と確認コマンド
最後に、暗記を減らして“体で覚える”ためのラボを3つにしぼります。
ENCORは「直結eBGPの設定・確認(ベストパス、ネイバー)」が明記されています。(learningnetwork.cisco.com)
ENARSIは「route-map(ルール)、フィルタ、RR」などトラシューと設計寄りが入っています。(learningnetwork.cisco.com)
ラボ①:直結eBGP(ENCORの土台)
- ゴール:Establishedになる → 経路を交換する → どれが選ばれたか言える
- 見るコマンド:
show ip bgp summary
show ip bgp
ベストパスの考え方はCiscoの解説を読むと整理しやすいです。(Cisco)
ラボ②:属性で“出口”を変える(ベストパスを体験)
- ゴール:LocalPrefやAS_PATHで、選ばれる道が変わるのを目で見る
- ここで「次ホップに行けないと候補落ち」も体験すると一気に強くなります。(Juniper Networks)
ラボ③:iBGP+RR+next-hop地雷(ENARSI直結)
- ゴール:iBGPの“中継しない”で詰まる → RRで解決 → next-hopで詰まって直す
- 見るコマンド:
show ip bgp
show ip route
RRはRFC 4456にまとまっているので、仕組みの理解に最適です。(IETF Datatracker)
まとめ
BGPは、インターネットで「ネットワークの“組織同士(AS同士)”」が、行ける場所(宛先)を教え合うためのルールです。
普通はISP同士など、別のASとつなぐ時に使い、どの相手を通すかは**方針(ルーティングポリシー)**で決めます。
経路をまとめて小さくして渡す(集約)考え方もあります。(nic.ad.jp)
CCNPでは、ENCORで「直結した相手とのeBGP設定・確認」と「どの道が選ばれるか(ベストパス)」がポイントです。(learningnetwork.cisco.com)
ENARSIではさらに、トラブル対応やルール(フィルタ/属性操作)、**ルートリフレクタ(RR)**など“運用っぽいところ”まで出ます。(learningcontent.cisco.com)
BGPの基本の流れはこうです。
- まずTCPでつながって会話を始める
- OPEN/UPDATE/KEEPALIVE/NOTIFICATIONのメッセージで、自己紹介→道の交換→生存確認→エラー通知をする(IETF Datatracker)
そして「どの道を使うか」は、次の順で考えると迷いません。
- 最長一致(いちばん細かい道が勝つ):/24の道は/16より優先されます(IETF)
- 同じ細かさの道が複数あるときに、BGPのベストパスで代表を決めます(Cisco)
- ただし、次ホップ(next-hop)に行けない道は使えないので、まず「次ホップに行けるか」を確認するのが超重要です(Cisco)
うまく動かない時のチェック順(これだけ覚えると強い):
- 相手とつながってる?(疎通・設定ミス)
- next-hopに行ける?(経路がないと使えない)(Cisco)
- フィルタ(許可/拒否)で落としてない?
- iBGPなら「勝手に中継しない」ルールで止まってない? → RRで解決できることがある(community.cisco.com)
- 最後に、属性(Weight/LocalPref/AS_PATHなど)で負けてないかを見る(Cisco)
この順番で理解して、ラボで「直結eBGP」「属性でベストパスが変わる」「iBGP+RR+next-hop問題」を体験すると、暗記が減って一気にラクになります。
コメント