BGPとは?AS・eBGP・iBGPと経路交換の仕組みを図解

html
ネットワーク上級編 21/全70記事

この記事は、 「ネットワーク上級編|要件定義・設計・クラウド・自動化へ進む」 の第21回です。

第3章では、基本設計で学んだルーティングや冗長化を土台に、 BGP、QoS、MPLS、SD-WAN、SASEなど、 より高度なネットワーク技術へ進みます。

NETWORK ADVANCED|CHAPTER 3 ADVANCED NETWORK

BGPとは?AS・eBGP・iBGPと経路交換の仕組みを図解

インターネットでは、企業や通信事業者などが管理する 膨大なネットワーク同士が接続されています。 そこで経路情報を交換するために使われる代表的なプロトコルがBGPです。 この記事では、AS、ASN、eBGP、iBGP、BGPセッション、 経路広告までを順番に整理します。

対象レベル Level 3〜4・上級
想定読了時間 約25分
身につく成果 BGPの基本動作を説明できる
前提知識 ルーティング・OSPFの基礎
演習環境 ブラウザ・紙・検証環境

OSPFまで学習すると、 「ルーター同士で経路を交換する仕組み」は理解できるようになります。

しかし、インターネット全体を 1つのOSPFネットワークとして動かすことは現実的ではありません。

インターネットでは、 通信事業者・クラウド事業者・企業など、 異なる管理主体のネットワーク同士が それぞれのポリシーを持って接続 しています。

そのようなネットワーク同士で 「どのネットワークへ、どのASを通って到達できるか」 を交換するのがBGPです。

この記事を読み終えるとできること

  • BGPの役割を説明できる
  • ASとASNの意味を説明できる
  • eBGPとiBGPの違いを区別できる
  • BGPセッション確立の流れを説明できる
  • BGPで交換される主な情報を挙げられる
  • OSPFとBGPを使い分ける理由を説明できる

BGPとは何か

最初に覚える定義

BGP(Border Gateway Protocol)とは、 主に異なるAS間でネットワークの到達性情報を交換し、 通信経路を制御するためのルーティングプロトコルです。

BGPは、インターネットを構成するうえで 非常に重要なルーティングプロトコルです。

たとえば、ある企業ネットワークから インターネット上のWebサーバーへ通信するとします。

通信は1つの組織だけが管理するネットワーク内で完結するとは限りません。 複数の通信事業者やネットワークを経由して、 最終的な宛先へ到達します。

BGPで接続されたネットワークのイメージ

企業ネットワーク AS 64500
ISP-A AS 64501
ISP-B AS 64502
接続先ネットワーク AS 64503

BGPでは、 単純に「距離が短い経路」を選ぶだけではありません。

どのASを経由するか、 どの回線を優先するか、 どの経路を外部へ広告するかなど、 ネットワーク運用者のポリシーを反映した経路制御 ができます。

BGPは「インターネット専用のプロトコル」と 覚えるだけでは不十分です。

重要なのは、 異なる管理主体やASの間で経路情報を交換し、 ポリシーに基づいて通信経路を制御するために使われる、 という考え方です。

なぜBGPが必要なのか

OSPFなどの動的ルーティングプロトコルを知っていると、 「OSPFだけではだめなのか」と疑問に思うかもしれません。

OSPFとBGPでは、 解決しようとしている問題が異なります。

1.管理者が異なるネットワークを接続するため

企業ネットワーク内であれば、 1つの組織がルーターの設定や経路制御方針を決められます。

一方、インターネットでは、 各ISPや企業が独立してネットワークを管理しています。

AS A

企業

自社ネットワークの構成や 外部接続方針を管理します。

AS B

ISP

多数の顧客や他ISPとの 接続を管理します。

AS C

クラウド等

独自のネットワークと 外部接続ポリシーを持ちます。

BGPは、このような 独立したネットワーク同士を接続する境界 で活躍します。

2.巨大な経路数を扱うため

インターネットには非常に多くのネットワークが存在します。

BGPは、インターネット規模で 多数の経路情報を扱うことを前提としたプロトコルです。

3.経路をポリシーで制御するため

企業がISPを2社利用している場合、 次のような要件が出ることがあります。

  • 通常はISP-Aを優先したい
  • ISP-A障害時だけISP-Bへ切り替えたい
  • 特定の経路はISP-Bから受信したくない
  • 外部からの通信を特定回線へ誘導したい
  • 特定ネットワークだけ外部へ広告したい

BGPではパス属性やフィルタリングを利用し、 このようなポリシーを経路制御へ反映できます。

BGPの詳細な経路選択ルールや属性の優先順位は、 次の記事 「BGPの経路選択」 で詳しく扱います。

ASとASNとは何か

BGPを理解するうえで、 最初に理解する必要があるのが ASです。

AS

AS(Autonomous System)とは、 共通する運用方針のもとで管理される ネットワークのまとまりです。

ASには識別番号が割り当てられます。 この番号を ASN(Autonomous System Number) と呼びます。

AS番号でネットワークを識別する

AS 64500 企業ネットワーク
AS 64501 ISP-A
AS 64502 ISP-B

AS番号はルーター番号ではない

ASNは、個々のルーターへ付ける番号ではありません。

1つのASには複数のルーターやネットワークが含まれることがあります。

1つのASに複数ルーターが存在する例

Router-A AS 64500
Router-B AS 64500
Router-C AS 64500

パブリックAS番号とプライベートAS番号

AS番号には、インターネット上で利用される番号だけでなく、 組織内部や閉じた環境で使用するために 予約されたプライベート用途の範囲もあります。

種類 主な用途 考え方
パブリックAS番号 インターネット上でASを識別 必要に応じて地域インターネットレジストリなどを通じて 割り当てを受ける
プライベートAS番号 閉じた環境・内部接続など インターネット全体で一意な ASとして広告する用途では使用しない

この記事の構成例では、 学習用としてAS 64500などの ドキュメント用に予約された番号を使用しています。

eBGPとiBGPの違い

BGPには、大きく分けて eBGPiBGPという2つの使い方があります。

eBGP:異なるAS間で使う

eBGPの「e」は Externalです。

異なるASに所属するBGPルーター同士で 経路情報を交換するときに使います。

eBGPの例

企業Router AS 64500
eBGP
ISP Router AS 64501

iBGP:同じAS内で使う

iBGPの「i」は Internalです。

同じASに所属するBGPルーター同士で BGP経路情報を共有するときに使います。

iBGPの例

Router-A AS 64500
iBGP
Router-B AS 64500
項目 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メッセージの基本

OPEN

セッション開始

BGPバージョン、AS番号、 Hold Time、BGP Identifierなどの情報を交換します。

KEEPALIVE

接続維持

BGPピアとのセッションが 正常に維持されていることを確認します。

UPDATE

経路情報

新しい経路の広告や、 到達できなくなった経路の通知などに使われます。

NOTIFICATION

エラー通知

BGPでエラーが発生した場合などに 相手へ通知します。

大まかなセッション確立の流れ

  1. 相手BGPルーターへ到達できる状態にする IPレベルで相手へ到達できなければ、 BGPセッションを確立できません。
  2. TCP接続を確立する BGPピア同士でTCP接続を確立します。 BGPではTCP 179が使用されます。
  3. OPENメッセージを交換する AS番号やBGP Identifierなど、 BGPピアとして必要な情報を確認します。
  4. KEEPALIVEを交換する OPENの内容が受け入れられると、 KEEPALIVEを交換します。
  5. Established状態になる BGPセッションが確立すると、 UPDATEメッセージによる経路交換が可能になります。

BGPの主な状態

BGPには状態遷移があります。 トラブルシューティングでは、 現在どの状態にいるかが重要な手掛かりになります。

Idle Connect Active OpenSent OpenConfirm Established

最初に目標とする状態はEstablishedです。

ただし、Establishedになっていても、 必要な経路を受信・広告できているとは限りません。 セッション状態と経路情報は分けて確認します。

BGPでは何を交換しているのか

BGPでは、 「このネットワークへ到達できます」 という到達性情報を交換します。

たとえばAS64501が 203.0.113.0/24 へ到達できるとします。

経路広告のイメージ

203.0.113.0/24 接続先ネットワーク
AS 64501 この経路へ到達可能
AS 64500 BGPで経路を学習

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の考え方

AS 64500 経路を受信
AS 64501 経由AS
AS 64502 経由AS
AS 64503 経路の起点側

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間接続

ISP-A AS A
BGP
ISP-B AS B
BGP
ISP-C AS C

2.企業のインターネット回線冗長化

企業が複数のISPと接続し、 回線障害時にもインターネット接続を 継続したい場合があります。

2つのISPへ接続する例

ISP-A AS 64501
企業 AS 64500
ISP-B AS 64502

どちらの回線を優先するか、 どの経路を受信するか、 自社経路をどう広告するかなどを BGPで設計します。

3.クラウドとの接続

オンプレミスとクラウドを VPNや専用線で接続する構成でも、 動的な経路交換にBGPを利用するケースがあります。

拠点やクラウド側でネットワークが追加されたとき、 静的ルートを個別に変更するのではなく、 BGPで経路情報を交換できる構成があります。

4.大規模データセンター

BGPはインターネット境界だけでなく、 大規模なデータセンターネットワークなどで 内部ルーティングの一部として採用される場合もあります。

BGPを採用する理由は 「高度な技術だから」ではありません。

必要な経路数、接続先、冗長化、 経路制御ポリシー、運用方法などを踏まえて判断します。

BGPで最初に確認するポイント

BGPで障害が発生した場合は、 いきなり経路属性を細かく見るのではなく、 段階を分けて確認します。

  1. 相手IPアドレスへ到達できるか まずBGPピアとなる相手へ、 IPレベルで到達できるか確認します。
  2. TCP 179の通信が成立するか ACLやファイアウォールなどによって BGP通信が遮断されていないか確認します。
  3. AS番号が正しいか 自ASと相手ASの設定が 想定どおりになっているか確認します。
  4. BGPセッション状態を確認する Establishedになっているか、 どの状態で止まっているかを確認します。
  5. 経路を受信しているか セッションが正常でも、 必要な経路を受信しているとは限りません。
  6. ポリシーで拒否されていないか Prefix List、Route Map、 Route Policyなどの設定によって 経路が除外されていないか確認します。
  7. 受信した経路が実際に利用されているか BGPで受信した経路と ルーティングテーブル上の最終結果を分けて確認します。

BGP障害の確認順序

IP到達性 相手へ届くか
TCP 179 接続できるか
Session Establishedか
Route 経路があるか
Policy 選択・制御を確認

BGPでよくある勘違い

勘違い1.BGPはOSPFより高度なので、BGPを使う方がよい

BGPとOSPFは目的が異なります。 必要性がない環境へBGPを導入しても、 設計・運用を複雑にするだけの場合があります。

勘違い2.BGPがEstablishedなら通信できる

Establishedは、 BGPセッションが確立していることを示します。 必要な経路を受信・選択できていることや、 データ通信が正常であることまでは保証しません。

勘違い3.BGPは自動的に近くのルーターを見つけて接続する

基本的なBGP設計では、 どの相手とピアを確立するかを 明確に設定します。

勘違い4.受信したBGP経路はすべて利用する

BGPでは多数の経路候補から ベストパスを選択します。 また、ポリシーによって 受信・広告する経路を制御できます。

勘違い5.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の主な役割として最も適切なものはどれですか。

  1. LAN内でMACアドレスを学習する
  2. 異なるAS間などでネットワーク到達性情報を交換する
  3. IPアドレスを端末へ自動配布する
  4. DNS名をIPアドレスへ変換する
解答を見る
正解:B

BGPは、主に異なるAS間で ネットワークの到達性情報を交換し、 経路制御を行うために利用されます。

問題2.AS64500とAS64501のルーター同士が BGPで接続しています。 このBGP接続は何と呼ばれますか。

  1. iBGP
  2. eBGP
  3. OSPF
  4. Static BGP
解答を見る
正解:B.eBGP

異なるASに所属するBGPルーター同士の接続なので、 eBGPです。

問題3.BGPが接続に使用する トランスポートプロトコルとポート番号を答えてください。

解答を見る
正解:TCP 179

BGPはTCPを利用してBGPピアとの接続を確立します。

問題4.BGPの状態がEstablishedです。 この情報だけで 「必要な経路をすべて正しく受信できている」 と判断してよいでしょうか。

解答を見る
正解:判断できません。

EstablishedはBGPセッションが確立していることを示します。 経路受信状況、ポリシー、ベストパス、 ルーティングテーブルなどは別途確認する必要があります。

問題5.企業ネットワーク内の すべてのルーティングを BGPへ変更すればOSPFより優れた構成になる、 という考え方は正しいでしょうか。

解答を見る
正解:正しくありません。

BGPとOSPFは目的が異なります。 接続先、規模、経路ポリシー、 障害切り替えや運用方式などを踏まえて 適切なプロトコルを選択します。

実践演習:2社のISPと接続するBGP構成を考える

あなたは、ある企業のインターネット接続設計を担当しています。

企業は現在ISP-Aだけを利用していますが、 回線障害への対策としてISP-Bも追加する予定です。

演習用構成

ISP-A AS 64501
企業Router AS 64500
ISP-B AS 64502

顧客要件

  • 通常はISP-Aを利用したい
  • ISP-A障害時はISP-Bを利用したい
  • 自社ネットワークを両方のISPへ広告したい
  • 想定していない経路は受信したくない
  • BGP障害を監視できるようにしたい

課題1.eBGPとiBGPを判断する

次の接続はeBGPとiBGPのどちらでしょうか。

企業AS64500 ⇄ ISP-A AS64501:______
企業AS64500 ⇄ ISP-B AS64502:______
解答を見る

どちらもeBGPです。

接続するルーターが異なるASに所属しているためです。

課題2.BGPセッション確立前に確認する内容

BGP設定を行ったものの、 ISP-AとのセッションがEstablishedになりません。

最初に確認する項目を5つ考えてください。

1.______________________
2.______________________
3.______________________
4.______________________
5.______________________
解答例を見る
  • BGPピアのIPアドレスが正しいか
  • 相手IPアドレスへ到達できるか
  • TCP 179が遮断されていないか
  • remote ASなどAS番号の設定が正しいか
  • BGPの現在の状態とログを確認する

課題3.Established後の確認項目

ISP-AとのBGPセッションはEstablishedになりました。

次に何を確認する必要があるでしょうか。 4つ以上挙げてください。

1.______________________
2.______________________
3.______________________
4.______________________
解答例を見る
  • 想定した経路を受信しているか
  • 想定外の経路を受信していないか
  • 自社から必要な経路を広告しているか
  • 受信した経路がベストパスとして選択されているか
  • ルーティングテーブルへ反映されているか
  • 実際のデータ通信が正常か

課題4.監視項目を考える

このBGP構成を本番運用する場合、 どのような項目を監視しますか。

BGPセッション:________________
経路:_____________________
回線:_____________________
ログ:_____________________
解答例を見る
  • BGPセッションがEstablishedであるか
  • 受信・広告している経路数に大きな変化がないか
  • ISP回線のインターフェースが正常か
  • BGPセッションDownや経路変化のログが発生していないか
  • 実際の外部疎通が正常か

課題5.顧客へ説明する

顧客から次の質問を受けました。

「回線を2本にするだけではだめなのですか? なぜBGPが必要なのですか?」

技術用語をできるだけ減らし、 1分程度で説明してください。

BGPを利用する理由は、________________________________。
説明例を見る

回線を2本契約しただけでは、 どちらの回線を通常利用するのか、 障害時にどの経路へ切り替えるのか、 外部へどのネットワークを知らせるのかまでは決まりません。

BGPを利用すると、 2つのISPと経路情報を交換し、 通常利用する回線や障害時の切り替え方を ネットワークの要件に合わせて制御できます。

自分の言葉で説明する課題

後輩エンジニアから 次の質問を受けました。

「OSPFもルーティングプロトコルなのに、 なぜインターネット接続ではBGPを使うことがあるのですか?」

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同士がどのような経路情報を交換しているのか」 を理解することです。

次の記事:BGPの経路選択

今回は、BGPの役割、 AS、eBGP・iBGP、 セッション確立、 経路広告の基本を学びました。

しかし、BGPルーターが 同じ宛先への経路を複数受信した場合、 どの経路を実際に利用するのでしょうか。

次の記事では、 Weight、LOCAL_PREF、AS_PATH、 ORIGIN、MED、eBGP・iBGPなど、 BGPがベストパスを決定するときの 基本的な考え方を順番に解説します。

ネットワーク上級編 21/全70記事

上級編では、 要件定義から基本設計、BGP、クラウド、 セキュリティ、自動化、 設計レビュー・顧客提案までを順番に学びます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次