BGP(Border Gateway Protocol)はインターネットの根幹をなすルーティングプロトコルです。この記事では、BGPの役割や自律システム間の経路選択の仕組み、脆弱性や設定ミス・BGPハイジャックによる障害事例、そして保護策としてのRPKIやフィルタリングについて分かりやすく解説します。ネットワーク運用やインターネットインフラの背景を深く理解したい方におすすめです。
BGPは現代インターネットを支える主要なプロトコルの一つです。BGPは独立したネットワーク同士でルート情報を交換し、どの事業者を経由して目的のIPアドレスへトラフィックを届けるか判断します。通常、ユーザーは意識しませんが、ウェブサイトにアクセスするたび、そのデータは複数のプロバイダーやバックボーン事業者、データセンターを経由します。BGPは利用可能な経路から最適なものを選びますが、その仕組みには脆弱性もあり、誤ったルート情報が広まると大規模なサービス障害を引き起こすことがあります。
BGP(Border Gateway Protocol)は、インターネットを構成する大規模な独立ネットワーク同士が、どのIPアドレス範囲がどこから到達可能かを交換するためのプロトコルです。
インターネットは単一の運営主体が管理する巨大ネットワークではありません。ISP、通信事業者、クラウドプラットフォーム、データセンター、大学、大企業など、数多くの独立したネットワークで構成されています。それぞれが自分のネットワークを管理しながらも、外部とトラフィックを交換する必要があります。
そのために用いられるのが自律システム(AS: Autonomous System)です。各自律システムにはASN(自律システム番号)が割り振られます。例えば、大手通信事業者は自社のAS内に数千台のルーターや多数のIPアドレス範囲を持っています。
BGPは主にこれらのASの境界で動作します。ルーターは隣接ネットワークに「このIPアドレス範囲へは私を経由して到達できる」と伝えます。隣接ネットワークはその情報をルーティングテーブルに追加し、さらに必要に応じて別の隣接ネットワークへ伝播させます。
例えば、ネットワークが203.0.113.0/24のIP範囲を保有していれば、それをBGPで隣接ネットワークにアナウンスできます。隣接ネットワークは、その範囲へのパケットはそのASへ転送するようルーティングします。
これは企業や組織内のルーティングとは異なります。内部では管理者が機器を統制し、内部ルーティングプロトコルを柔軟に使えますが、独立した事業者間では共通の管理がないため、数千ものネットワークが相互に合意できる仕組みが必要です。
BGPはインターネット全体の地図を作るものではなく、最短物理経路を探すものでもありません。あくまで「どのルートが利用可能か」を広め、各事業者が独自の基準で経路を選択できるようにします。経路選択には技術的条件だけでなく、事業者間の契約やトラフィックコスト、ネットワーク方針なども影響します。
BGPの仕組みを理解するには、インターネットを大きなノードのネットワークとしてイメージすると分かりやすいでしょう。各ノードは自律システムで、複数の隣接ASと接続し、さまざまなIPアドレス範囲への経路を知っています。
BGPルーター同士はTCP(通常はポート179)でセッションを張り、ルート情報を交換します。このため、メッセージ配送や再送制御はTCPに任せることができます。
情報の基本単位はIPプレフィックスです。例えば「203.0.113.0/24」は256個のIPv4アドレスの範囲を指します。ASがこの範囲を管理していれば、隣接ネットワークに「私のAS経由でこの範囲に到達可能」と伝えます。
隣接ASはそのアナウンスを受け取り、自身のポリシーに従って採用するか判断します。採用すればさらに次のASへ伝播し、このようにしてインターネット全体へ経路情報が広がります。
BGPはプレフィックスだけでなく、経路属性も一緒に伝えます。中でも重要なのがAS_PATH(経路を通過するASのリスト)です。
例えば、AS100が自分の範囲をAS200に伝え、さらにAS200がAS300へ伝えると、AS300には「AS300→AS200→AS100」の経路として見えます。同じ範囲が別の事業者経由でも到達可能なら、複数の経路がBGPルーターに届きます。
BGPはこれらを記憶し、それぞれのAS方針に基づいて最適な経路を選択します。
BGPルーターは隣接ネットワークから非常に多くの経路アナウンスを受け取ります。1つのIPプレフィックスに対し、複数の経路が存在することも珍しくありません。
BGPテーブルには、プレフィックス、AS_PATH、その他経路選択に影響する属性が保存されます。これは単なるアドレス一覧ではなく、インターネット各部の到達性の動的なスナップショットです。
特定の事業者が利用不能になった場合、隣接ASがその経路を撤回(withdraw)し、それが伝播され、各ネットワークがルートを再計算して代替経路を用い始めます。
この仕組みにより、インターネットは特定の接続障害が起きてもサービスを継続できます。トラフィックは必ずしも固定経路を通るわけではなく、ネットワーク状況に応じてBGPが自動的に他のルートを選択します。
ただし、ルーターは単純に最小遅延や最短距離のみで経路を選びません。複数の選択肢がある場合、ルート選択ルールと事業者ポリシーが重要な役割を果たします。
BGPはナビゲーターのように最短距離の道を選ぶわけではなく、「そのASのポリシーに合致するか」が優先されます。結果として、短い経路があっても、経済的理由などからより長い経路が選ばれる場合もあります。
主な属性の一つがAS_PATHです。通常はAS数が少ない経路が優先されますが、これは唯一の基準ではありません。
例えば:
AS数が少ない前者が原則優先されます。しかし、LOCAL_PREF(ローカル優先度)がより高ければ、長い経路でもそちらが選ばれることもあります。たとえば、直接のパートナー経由のトラフィックを優遇する場合です。
このように、経済的・契約上の理由から、必ずしも技術的に最短の経路が選ばれるわけではありません。
他にもMED(Multi-Exit Discriminator)という属性があります。これは、複数の接続点がある場合に、どの入り口を優先すべきかを隣接ASに伝えるものです。
このほか、経路のオリジンや機器設定など、さまざまなBGP属性が経路選択に影響します。ベンダーや設定によって優先順位は微妙に異なります。
そのため、「インターネットはどうやって経路を選ぶのか」に唯一の答えはありません。各ASが自社の方針に従い選択します。ある地点ではAS_PATHの長さが主因となり、別の地点では商業契約や冗長経路利用が重視されます。
このプロセス全体をより詳しく知りたい場合は、「インターネットの仕組み:トラフィックのルーティングとデータの経路」もご参照ください。
BGPは実際の遅延を計測して最速経路を選ぶわけではなく、ポリシーに合致した利用可能な経路を決定することが主な役割です。
このため、同じ都市の2人のユーザーが同じサービスにアクセスしても、異なる事業者経由や場合によっては異なる国を経由して到達することもあります。各プロバイダーが異なる契約やトラフィックエクスチェンジポイント、BGPルールを持っているためです。
このモデルによりインターネットは分散型となり、中央集権的な制御サーバーは存在しません。その一方で、誤ったBGPアナウンスが広まるリスクも高まります。
BGPの根本的な課題は、「ネットワーク間の信頼」に依存している点です。あるASが新しい経路を隣接ASに伝えると、他のネットワークはそれを正しいものとして受け入れ、ルールに合致すればさらに伝播します。
このため、設定ミスが一社の範囲を超えて広がる可能性があります。例えば、ある事業者が本来管理していないIPアドレス範囲をうっかりアナウンスすると、隣接ASがそれを採用し、トラフィックが誤った経路に流れることもあります。
新しい経路が既存より魅力的に見える場合、インターネットの一部トラフィックが誤ったネットワークへ向かい、パケットロスや遅延、サービス不可などが発生します。
典型的な例がroute leak(ルートリーク)です。本来伝播すべきではない経路を誤って広めてしまうと、トラフィックが小規模事業者のインフラに集中し、ネットワーク全体の負荷や障害につながることがあります。
問題の規模は、どれだけ多くのネットワークが誤った経路を受け入れたかによって異なります。一つのミスが必ずしも「インターネット全体の停止」になるわけではありませんが、場合によっては大規模なオンラインサービスや複数の事業者に影響を及ぼします。
グローバルな障害は、BGPによるルーティングとネットワーク相互作用の重要性を浮き彫りにします。インフラの脆弱性については、「なぜインターネットは脆弱なのか:グローバルネットワークの弱点と障害の原因」で詳しく解説しています。
BGPはダイナミックに動作するため、誤った経路が登場するとすぐに広まり、修正後もアップデートや撤回情報が行き渡るまで時間差が生じます。これをネットワークの収束(convergence)と呼びます。一部のルーターが先に正しいルートを使い始め、他はまだ古い経路を維持している、という状態がしばらく続きます。
また、事業者ごとに独自のBGPフィルターやポリシーがあるため、同じ誤りでもネットワークによって影響の出方が異なります。
このように、分散型アーキテクチャ、アナウンスへの信頼、多数のAS間の複雑な関係が、BGP誤りの影響をより顕著にしています。
設定ミスだけでなく、意図的に不正な経路をアナウンスするBGP Hijacking(BGPハイジャック)もあります。攻撃者や誤設定のASが、管理していないIPプレフィックスをBGPで宣伝し、他の事業者がそれを受け入れると、トラフィックが偽のルートへ流れてしまいます。
特により詳細なプレフィックスでアナウンスされた場合、ルーターは「longest prefix match(最長一致)」のルールでより具体的な経路を優先します。例えば、本来の所有者が203.0.112.0/22でアナウンスしていても、別ASが203.0.113.0/24をアナウンスすれば、後者が選ばれる可能性が高まります。
トラフィックのその後の処理は攻撃の目的やネットワーク構成によります。パケットが「ブラックホール」に吸い込まれて消える場合や、偽経路から本来の宛先に転送されるケースもあります。
BGPハイジャックはroute leak(既存経路の誤った伝播)とは異なり、ASが本来所有しないプレフィックスを不正にアナウンスすることが問題です。
事業者はルートフィルタリングで防御します。事前に顧客がアナウンス可能なプレフィックスを決め、それ以外をブロックする方式です。特に事業者と顧客ネットワークの境界で有効です。
さらに、RPKI(Resource Public Key Infrastructure)という仕組みも活用されます。これにより、IPアドレス空間の所有者が、どのASがどのプレフィックスをアナウンスできるかを暗号的に証明する「ROA(Route Origin Authorization)」を発行できます。
ルーターはBGP経路の受信時にRPKIで正当性を検証し、不正なASNによる経路を拒否できます。RPKIはAS_PATH全体の検証はしませんが、プレフィックスの起源ASを保証することで、なりすましや設定ミスのリスクを大幅に減らします。
AS同士がどこで接続され、なぜBGPアナウンスが高速に広がるのかを知るには、「バックボーンネットワークとIXPの仕組み」もおすすめです。
完全にBGPの誤りを排除することは現状困難です。グローバルルーティングは無数の独立ネットワークが独自の設定や商業方針で運用しているため、RPKIや厳格なフィルタリングがあっても、その運用状況によって安全性は変わります。
そのため、BGPの強靭性は単一の防御策ではなく、フィルタリング、起源検証、異常監視、事業者の迅速な対応といった多層的な仕組みで成り立っています。
BGPは、数千もの独立ネットワークが一つのインターネットとして機能するための基盤です。各ASはどのIPプレフィックスが利用可能かを伝え合い、ルーターはAS_PATHやローカル優先度、事業者方針などをもとに最適な経路を選びます。
このアーキテクチャにより、インターネットは柔軟かつ分散型となり、特定の事業者や回線がダウンしてもトラフィックは別経路を通じて継続可能です。しかし、中央集権的な管理がないため、BGPの誤ったアナウンスが広範囲に伝播するリスクも孕んでいます。
route leakや設定ミス、BGPハイジャックによってトラフィックが誤ったネットワークに流れ、サービスが一時的に使えなくなることもあります。ルートフィルタやRPKIによってこうしたリスクは減らせますが、人的ミスや不正なアナウンスを完全に排除することはまだできません。
一般ユーザーがBGPを設定する機会はありませんが、その仕組みを理解することで、なぜ突然多くの人が同じサービスにアクセスできなくなるのか、その背景にグローバルなネットワークルーティングの問題があることを知る助けになります。