この記事は、 「ネットワーク上級編|要件定義・設計・クラウド・自動化へ進む」 の第21回です。
第3章では、基本設計で学んだルーティングや冗長化を土台に、 BGP、QoS、MPLS、SD-WAN、SASEなど、 より高度なネットワーク技術へ進みます。
BGPとは?AS・eBGP・iBGPと経路交換の仕組みを図解
インターネットでは、企業や通信事業者などが管理する 膨大なネットワーク同士が接続されています。 そこで経路情報を交換するために使われる代表的なプロトコルがBGPです。 この記事では、AS、ASN、eBGP、iBGP、BGPセッション、 経路広告までを順番に整理します。
OSPFまで学習すると、 「ルーター同士で経路を交換する仕組み」は理解できるようになります。
しかし、インターネット全体を 1つのOSPFネットワークとして動かすことは現実的ではありません。
インターネットでは、 通信事業者・クラウド事業者・企業など、 異なる管理主体のネットワーク同士が それぞれのポリシーを持って接続 しています。
そのようなネットワーク同士で 「どのネットワークへ、どのASを通って到達できるか」 を交換するのがBGPです。
この記事を読み終えるとできること
- BGPの役割を説明できる
- ASとASNの意味を説明できる
- eBGPとiBGPの違いを区別できる
- BGPセッション確立の流れを説明できる
- BGPで交換される主な情報を挙げられる
- OSPFとBGPを使い分ける理由を説明できる
BGPとは何か
BGP(Border Gateway Protocol)とは、 主に異なるAS間でネットワークの到達性情報を交換し、 通信経路を制御するためのルーティングプロトコルです。
BGPは、インターネットを構成するうえで 非常に重要なルーティングプロトコルです。
たとえば、ある企業ネットワークから インターネット上のWebサーバーへ通信するとします。
通信は1つの組織だけが管理するネットワーク内で完結するとは限りません。 複数の通信事業者やネットワークを経由して、 最終的な宛先へ到達します。
BGPで接続されたネットワークのイメージ
BGPでは、 単純に「距離が短い経路」を選ぶだけではありません。
どのASを経由するか、 どの回線を優先するか、 どの経路を外部へ広告するかなど、 ネットワーク運用者のポリシーを反映した経路制御 ができます。
BGPは「インターネット専用のプロトコル」と 覚えるだけでは不十分です。
重要なのは、 異なる管理主体やASの間で経路情報を交換し、 ポリシーに基づいて通信経路を制御するために使われる、 という考え方です。
なぜBGPが必要なのか
OSPFなどの動的ルーティングプロトコルを知っていると、 「OSPFだけではだめなのか」と疑問に思うかもしれません。
OSPFとBGPでは、 解決しようとしている問題が異なります。
1.管理者が異なるネットワークを接続するため
企業ネットワーク内であれば、 1つの組織がルーターの設定や経路制御方針を決められます。
一方、インターネットでは、 各ISPや企業が独立してネットワークを管理しています。
企業
自社ネットワークの構成や 外部接続方針を管理します。
ISP
多数の顧客や他ISPとの 接続を管理します。
クラウド等
独自のネットワークと 外部接続ポリシーを持ちます。
BGPは、このような 独立したネットワーク同士を接続する境界 で活躍します。
2.巨大な経路数を扱うため
インターネットには非常に多くのネットワークが存在します。
BGPは、インターネット規模で 多数の経路情報を扱うことを前提としたプロトコルです。
3.経路をポリシーで制御するため
企業がISPを2社利用している場合、 次のような要件が出ることがあります。
- 通常はISP-Aを優先したい
- ISP-A障害時だけISP-Bへ切り替えたい
- 特定の経路はISP-Bから受信したくない
- 外部からの通信を特定回線へ誘導したい
- 特定ネットワークだけ外部へ広告したい
BGPではパス属性やフィルタリングを利用し、 このようなポリシーを経路制御へ反映できます。
BGPの詳細な経路選択ルールや属性の優先順位は、 次の記事 「BGPの経路選択」 で詳しく扱います。
ASとASNとは何か
BGPを理解するうえで、 最初に理解する必要があるのが ASです。
AS(Autonomous System)とは、 共通する運用方針のもとで管理される ネットワークのまとまりです。
ASには識別番号が割り当てられます。 この番号を ASN(Autonomous System Number) と呼びます。
AS番号でネットワークを識別する
AS番号はルーター番号ではない
ASNは、個々のルーターへ付ける番号ではありません。
1つのASには複数のルーターやネットワークが含まれることがあります。
1つのASに複数ルーターが存在する例
パブリックAS番号とプライベートAS番号
AS番号には、インターネット上で利用される番号だけでなく、 組織内部や閉じた環境で使用するために 予約されたプライベート用途の範囲もあります。
| 種類 | 主な用途 | 考え方 |
|---|---|---|
| パブリックAS番号 | インターネット上でASを識別 | 必要に応じて地域インターネットレジストリなどを通じて 割り当てを受ける |
| プライベートAS番号 | 閉じた環境・内部接続など | インターネット全体で一意な ASとして広告する用途では使用しない |
この記事の構成例では、 学習用としてAS 64500などの ドキュメント用に予約された番号を使用しています。
eBGPとiBGPの違い
BGPには、大きく分けて eBGPと iBGPという2つの使い方があります。
eBGP:異なるAS間で使う
eBGPの「e」は Externalです。
異なるASに所属するBGPルーター同士で 経路情報を交換するときに使います。
eBGPの例
iBGP:同じAS内で使う
iBGPの「i」は Internalです。
同じASに所属するBGPルーター同士で BGP経路情報を共有するときに使います。
iBGPの例
| 項目 | eBGP | iBGP |
|---|---|---|
| 接続するAS | 異なるAS | 同一AS |
| 代表的な用途 | 企業とISP、ISP同士など | AS内部で外部経路を共有 |
| 例 | AS64500 ⇄ AS64501 | AS64500内のRouter-A ⇄ Router-B |
「BGP=AS間だけで使う」と覚えると、 iBGPの役割を理解できません。
外部から学習したBGP経路を、 同一AS内の別のBGPルーターへ共有するためにもBGPが使われます。
BGPセッションが確立するまで
BGPルーター同士は、 いきなり経路情報を交換するわけではありません。
まず相手との接続を確立し、 BGPピアとして通信できる状態にします。
BGPはトランスポートとして TCPを使用し、 BGPの接続には TCPポート179 が使われます。
BGPメッセージの基本
セッション開始
BGPバージョン、AS番号、 Hold Time、BGP Identifierなどの情報を交換します。
接続維持
BGPピアとのセッションが 正常に維持されていることを確認します。
経路情報
新しい経路の広告や、 到達できなくなった経路の通知などに使われます。
エラー通知
BGPでエラーが発生した場合などに 相手へ通知します。
大まかなセッション確立の流れ
- 相手BGPルーターへ到達できる状態にする IPレベルで相手へ到達できなければ、 BGPセッションを確立できません。
- TCP接続を確立する BGPピア同士でTCP接続を確立します。 BGPではTCP 179が使用されます。
- OPENメッセージを交換する AS番号やBGP Identifierなど、 BGPピアとして必要な情報を確認します。
- KEEPALIVEを交換する OPENの内容が受け入れられると、 KEEPALIVEを交換します。
- Established状態になる BGPセッションが確立すると、 UPDATEメッセージによる経路交換が可能になります。
BGPの主な状態
BGPには状態遷移があります。 トラブルシューティングでは、 現在どの状態にいるかが重要な手掛かりになります。
最初に目標とする状態はEstablishedです。
ただし、Establishedになっていても、 必要な経路を受信・広告できているとは限りません。 セッション状態と経路情報は分けて確認します。
BGPでは何を交換しているのか
BGPでは、 「このネットワークへ到達できます」 という到達性情報を交換します。
たとえばAS64501が
203.0.113.0/24
へ到達できるとします。
経路広告のイメージ
BGPで扱う情報は、 単なる宛先プレフィックスだけではありません。
その経路に関する パス属性 も合わせて扱います。
BGPは、 「203.0.113.0/24へ行ける」 という情報だけでなく、 その経路がどのような特徴を持っているか という情報も使って経路を判断します。
主なBGPパス属性
BGPの経路には、 経路選択やポリシー制御に利用される 複数の属性があります。
今回は役割だけを理解しましょう。 詳しい優先順位は次の記事で解説します。
| 属性 | 大まかな役割 | イメージ |
|---|---|---|
| AS_PATH | どのASを経由してきたかを表す | AS64502 → AS64501 |
| NEXT_HOP | その経路へ向かう次の送信先を表す | 次にどのルーターへ送るか |
| LOCAL_PREF | AS内部で、どの経路を優先するか判断するために使う | 出口回線の優先度 |
| MED | 相手ASへ入口の希望を伝える用途などで使う | こちらから入ってほしい |
| ORIGIN | 経路情報の起源に関する属性 | どのようにBGPへ入った経路か |
| COMMUNITY | 経路へラベルのような情報を付与し、ポリシー制御に利用する | 特定グループの経路として扱う |
AS_PATHを図で見る
たとえば、AS64500が AS64503のネットワークへの経路を受信したとします。
AS_PATHの考え方
AS64500から見ると、 宛先へ到達するまでに AS64501、AS64502、AS64503という ASの並びを確認できます。
AS_PATHは、 BGPで経路を判断する重要な情報の1つです。
BGPとOSPFの違い
BGPとOSPFは、 どちらもルーティングに関係しますが、 同じ目的で使うプロトコルではありません。
| 項目 | BGP | OSPF |
|---|---|---|
| 主な用途 | AS間・外部ネットワークとの経路制御 | 主にAS内部・組織内部の経路制御 |
| 分類 | EGPとして利用 | IGP |
| 経路判断 | 複数のパス属性やポリシーを利用 | 主にOSPFコストを利用 |
| 代表的な利用場所 | ISP接続、マルチホーム、クラウド接続など | 企業LAN、WAN内部、データセンター内部など |
| 設計上の重点 | 経路ポリシー・広告・受信制御 | トポロジー・エリア・コスト |
BGPはOSPFの「上位版」ではありません。
目的が異なるため、 「大規模だからBGP」 「小規模だからOSPF」 だけで判断するのは適切ではありません。
使い分けの基本
組織内部
ネットワーク内部で 障害時に経路を切り替えたり、 内部ルートを交換したりする場合は、 OSPFなどのIGPを検討します。
組織・ASの境界
ISPとの接続や複数AS間で 経路ポリシーを制御する場合は、 BGPを検討します。
BGPが使われる代表的な場面
1.ISP同士の接続
インターネットでは、 ISPなどのAS同士がBGPを使って 経路情報を交換します。
ISP間接続
2.企業のインターネット回線冗長化
企業が複数のISPと接続し、 回線障害時にもインターネット接続を 継続したい場合があります。
2つのISPへ接続する例
どちらの回線を優先するか、 どの経路を受信するか、 自社経路をどう広告するかなどを BGPで設計します。
3.クラウドとの接続
オンプレミスとクラウドを VPNや専用線で接続する構成でも、 動的な経路交換にBGPを利用するケースがあります。
拠点やクラウド側でネットワークが追加されたとき、 静的ルートを個別に変更するのではなく、 BGPで経路情報を交換できる構成があります。
4.大規模データセンター
BGPはインターネット境界だけでなく、 大規模なデータセンターネットワークなどで 内部ルーティングの一部として採用される場合もあります。
BGPを採用する理由は 「高度な技術だから」ではありません。
必要な経路数、接続先、冗長化、 経路制御ポリシー、運用方法などを踏まえて判断します。
BGPで最初に確認するポイント
BGPで障害が発生した場合は、 いきなり経路属性を細かく見るのではなく、 段階を分けて確認します。
- 相手IPアドレスへ到達できるか まずBGPピアとなる相手へ、 IPレベルで到達できるか確認します。
- TCP 179の通信が成立するか ACLやファイアウォールなどによって BGP通信が遮断されていないか確認します。
- AS番号が正しいか 自ASと相手ASの設定が 想定どおりになっているか確認します。
- BGPセッション状態を確認する Establishedになっているか、 どの状態で止まっているかを確認します。
- 経路を受信しているか セッションが正常でも、 必要な経路を受信しているとは限りません。
- ポリシーで拒否されていないか Prefix List、Route Map、 Route Policyなどの設定によって 経路が除外されていないか確認します。
- 受信した経路が実際に利用されているか BGPで受信した経路と ルーティングテーブル上の最終結果を分けて確認します。
BGP障害の確認順序
BGPでよくある勘違い
BGPとOSPFは目的が異なります。 必要性がない環境へBGPを導入しても、 設計・運用を複雑にするだけの場合があります。
Establishedは、 BGPセッションが確立していることを示します。 必要な経路を受信・選択できていることや、 データ通信が正常であることまでは保証しません。
基本的なBGP設計では、 どの相手とピアを確立するかを 明確に設定します。
BGPでは多数の経路候補から ベストパスを選択します。 また、ポリシーによって 受信・広告する経路を制御できます。
回線を2本接続してBGPを設定しただけでは、 要件どおりの冗長化になるとは限りません。 経路受信、広告、優先制御、障害検知、 切り替え時間などを設計する必要があります。
顧客・上司へBGPをどう説明するか
技術に詳しくない相手へ 「BGPはパスベクター型のEGPです」 と説明しても、 導入理由は伝わりにくいでしょう。
BGPそのものではなく、 何を実現するために必要なのか を説明します。
説明例:
「今回の構成ではインターネット回線を2社から利用します。 BGPを使うことで、各回線から利用できる経路情報を交換し、 通常利用する回線や障害時の切り替え方を制御します。 これにより、1つの回線で障害が発生した場合でも、 もう一方の回線を利用できる構成を検討できます。」
技術を業務要件へ変換する
| 技術的な話 | 業務・設計上の意味 |
|---|---|
| eBGPピアを2つ構成する | 複数の外部ネットワークと経路交換できる |
| 経路属性を変更する | どの回線を優先するか制御できる |
| 受信経路をフィルタする | 不要・想定外の経路を受け取らない |
| 広告経路を制限する | 外部へ公開する経路を必要なものだけに限定する |
| BGPセッションを監視する | ISPとの経路交換異常を早期検知する |
上級工程では、 「BGPを設定できます」だけではなく、 なぜBGPが必要で、 どの可用性・経路制御要件を満たすために使うのか を説明できることが重要です。
BGPで使われる英語表現
BGPは海外ベンダーのドキュメントや 障害調査で英語を目にする機会が多い技術です。
よく使われる単語
| 英語 | 意味 |
|---|---|
| Autonomous System | 自律システム、AS |
| Autonomous System Number | AS番号、ASN |
| BGP peer / neighbor | BGPで接続する相手 |
| Establish a BGP session | BGPセッションを確立する |
| Advertise a route | 経路を広告する |
| Receive a route | 経路を受信する |
| Withdraw a route | 経路を取り消す |
| Path attribute | パス属性 |
| Route filtering | 経路フィルタリング |
| Best path | 最適経路として選択された経路 |
障害調査で使える表現
The BGP session is not established.
BGPセッションが確立していません。
The BGP neighbor is stuck in Active state.
BGPネイバーがActive状態のままです。
We are not receiving the expected route from the peer.
相手ピアから想定している経路を受信していません。
Please confirm which prefixes are being advertised.
どのプレフィックスが広告されているか確認してください。
Please confirm whether TCP port 179 is permitted.
TCP 179番ポートが許可されているか確認してください。
理解度チェック
単なる用語暗記ではなく、 BGPの役割を理解できているか確認しましょう。
問題1.BGPの主な役割として最も適切なものはどれですか。
- LAN内でMACアドレスを学習する
- 異なるAS間などでネットワーク到達性情報を交換する
- IPアドレスを端末へ自動配布する
- DNS名をIPアドレスへ変換する
解答を見る
BGPは、主に異なるAS間で ネットワークの到達性情報を交換し、 経路制御を行うために利用されます。
問題2.AS64500とAS64501のルーター同士が BGPで接続しています。 このBGP接続は何と呼ばれますか。
- iBGP
- eBGP
- OSPF
- Static BGP
解答を見る
異なるASに所属するBGPルーター同士の接続なので、 eBGPです。
問題3.BGPが接続に使用する トランスポートプロトコルとポート番号を答えてください。
解答を見る
BGPはTCPを利用してBGPピアとの接続を確立します。
問題4.BGPの状態がEstablishedです。 この情報だけで 「必要な経路をすべて正しく受信できている」 と判断してよいでしょうか。
解答を見る
EstablishedはBGPセッションが確立していることを示します。 経路受信状況、ポリシー、ベストパス、 ルーティングテーブルなどは別途確認する必要があります。
問題5.企業ネットワーク内の すべてのルーティングを BGPへ変更すればOSPFより優れた構成になる、 という考え方は正しいでしょうか。
解答を見る
BGPとOSPFは目的が異なります。 接続先、規模、経路ポリシー、 障害切り替えや運用方式などを踏まえて 適切なプロトコルを選択します。
実践演習:2社のISPと接続するBGP構成を考える
あなたは、ある企業のインターネット接続設計を担当しています。
企業は現在ISP-Aだけを利用していますが、 回線障害への対策としてISP-Bも追加する予定です。
演習用構成
顧客要件
- 通常はISP-Aを利用したい
- ISP-A障害時はISP-Bを利用したい
- 自社ネットワークを両方のISPへ広告したい
- 想定していない経路は受信したくない
- BGP障害を監視できるようにしたい
課題1.eBGPとiBGPを判断する
次の接続はeBGPとiBGPのどちらでしょうか。
企業AS64500 ⇄ ISP-B AS64502:______
解答を見る
どちらもeBGPです。
接続するルーターが異なるASに所属しているためです。
課題2.BGPセッション確立前に確認する内容
BGP設定を行ったものの、 ISP-AとのセッションがEstablishedになりません。
最初に確認する項目を5つ考えてください。
2.______________________
3.______________________
4.______________________
5.______________________
解答例を見る
- BGPピアのIPアドレスが正しいか
- 相手IPアドレスへ到達できるか
- TCP 179が遮断されていないか
- remote ASなどAS番号の設定が正しいか
- BGPの現在の状態とログを確認する
課題3.Established後の確認項目
ISP-AとのBGPセッションはEstablishedになりました。
次に何を確認する必要があるでしょうか。 4つ以上挙げてください。
2.______________________
3.______________________
4.______________________
解答例を見る
- 想定した経路を受信しているか
- 想定外の経路を受信していないか
- 自社から必要な経路を広告しているか
- 受信した経路がベストパスとして選択されているか
- ルーティングテーブルへ反映されているか
- 実際のデータ通信が正常か
課題4.監視項目を考える
このBGP構成を本番運用する場合、 どのような項目を監視しますか。
経路:_____________________
回線:_____________________
ログ:_____________________
解答例を見る
- BGPセッションがEstablishedであるか
- 受信・広告している経路数に大きな変化がないか
- ISP回線のインターフェースが正常か
- BGPセッションDownや経路変化のログが発生していないか
- 実際の外部疎通が正常か
課題5.顧客へ説明する
顧客から次の質問を受けました。
「回線を2本にするだけではだめなのですか? なぜBGPが必要なのですか?」
技術用語をできるだけ減らし、 1分程度で説明してください。
説明例を見る
回線を2本契約しただけでは、 どちらの回線を通常利用するのか、 障害時にどの経路へ切り替えるのか、 外部へどのネットワークを知らせるのかまでは決まりません。
BGPを利用すると、 2つのISPと経路情報を交換し、 通常利用する回線や障害時の切り替え方を ネットワークの要件に合わせて制御できます。
自分の言葉で説明する課題
後輩エンジニアから 次の質問を受けました。
「OSPFもルーティングプロトコルなのに、 なぜインターネット接続ではBGPを使うことがあるのですか?」
説明例を見る
OSPFは主に組織内部で、 ネットワークの構成やコストをもとに 経路を計算するために使われます。
一方BGPは、 ISPや企業など異なるAS・管理主体の間で 経路情報を交換し、 どの経路を受信・広告・優先するかを ポリシーとして制御する用途に向いています。
そのため、 複数ISPとの接続やAS間の経路制御などで BGPが利用されます。
まとめ
- BGPは、主に異なるAS間で ネットワーク到達性情報を交換する ルーティングプロトコル
- ASは共通する運用方針のもとで管理される ネットワークのまとまりで、 ASNによって識別される
- 異なるAS間のBGP接続をeBGP、 同じAS内のBGP接続をiBGPと呼ぶ
- BGPはTCPを利用し、 TCPポート179でピアとの接続を確立する
- OPEN、KEEPALIVE、UPDATE、 NOTIFICATIONなどのメッセージが使われる
- BGPではプレフィックスだけでなく、 AS_PATH、NEXT_HOP、LOCAL_PREF、 MEDなどのパス属性も扱う
- EstablishedはBGPセッションが 確立したことを示すが、 必要な経路や実通信の正常性まで保証するものではない
- BGPとOSPFは優劣ではなく、 利用目的に応じて使い分ける
- 複数ISP接続では、 回線を増やすだけでなく 経路の受信・広告・優先制御まで設計する必要がある
BGPを理解する第一歩は、 コマンドを暗記することではなく、 「AS同士がどのような経路情報を交換しているのか」 を理解することです。

コメント