🌐 BGP解説_インターネットを支える経路制御プロトコル
📚 はじめに
インターネット上でデータがどのように転送されるかを考えたことはありますか?私たちが日常的に使用するウェブサイトやアプリケーションのデータは、送信元から送信先まで、世界中の無数のネットワークを経由して届けられます。この複雑な経路選択を可能にしているのが「BGP(Border Gateway Protocol)」です。この記事では、インターネットの「道案内役」とも言えるBGPの基本から仕組み、重要性までを初学者向けにわかりやすく解説します。
🤔 BGPとは?
BGP(Border Gateway Protocol)は、インターネット上の大規模なネットワーク同士を接続するための経路制御プロトコルです。現在使われているのはBGP-4と呼ばれるバージョンで、インターネットの基幹を支える重要な技術です。
🏫 たとえで理解しよう
BGPは「国際物流システム」のようなものです。東京から送った荷物がニューヨークに届くためには、複数の国や輸送会社を経由する必要があります。各国の税関(境界ゲートウェイ)では、「この荷物はこちらのルートで送ってください」という情報を交換し合うことで、最適な経路で荷物が届くようにしています。BGPもこれと同様に、異なるネットワーク間で「このデータはこのルートで送るのが最適」という経路情報を交換しているのです。
!
🏢 自律システム(AS)の概念
BGPを理解するためには、まず「自律システム(AS:Autonomous System)」という概念を理解する必要があります。
🏗️ 自律システムとは
自律システム(AS)とは、単一の管理者によって運営される、一貫した経路選択ポリシーを持つネットワークの集合体です。例えば、大手ISP(インターネットサービスプロバイダ)、大学、大企業などが独自のASを持っています。
- 🔢 AS番号(ASN): 各ASには、IANAによって割り当てられた固有の番号があります(例:AS7018 = AT&T、AS15169 = Google)
- 🌐 公共AS: インターネットに接続されるASには、グローバルに一意のAS番号が必要です
- 🏠 プライベートAS: 内部でのみ使用されるASには、プライベートAS番号(64512-65534)が使用できます
!
💡 初学者向けポイント
自律システム(AS)は「国」のようなものです。それぞれが独自の政策(経路選択ポリシー)を持ち、他の国(AS)との間で国境(BGPルーター)を通じて人や物資(データ)の行き来についての取り決めを行っています。
🔄 BGPの基本的な仕組み
📡 BGPセッションの確立
BGPは、TCP/IPのポート179を使用して、BGPルーター同士が「ピアリング」と呼ばれる関係を確立します。
- 👋 TCP接続: まず、両者の間でTCP接続が確立されます
- 🤝 OPEN: BGPセッションを開始する要求が送られます
- 👍 KEEPALIVE: セッションが正常に維持されていることを確認するメッセージが定期的に交換されます
- 📋 UPDATE: 経路情報(ルート)の追加・変更・削除が通知されます
- ⚠️ NOTIFICATION: エラーが発生した場合に送信されるメッセージです
!
🗺️ 経路情報の交換
BGPルーターは、以下のような情報を交換します:
- 📍 ネットワークプレフィックス: 到達可能なネットワークの範囲(例:192.168.1.0/24)
- 🛣️ AS_PATH: そのネットワークに到達するために通過するAS番号の列
- 🚩 NEXT_HOP: 次にデータを転送すべきルーターのIPアドレス
- ⚖️ その他の属性: LOCAL_PREF、MED、COMMUNITYなど、経路選択に影響を与える様々な属性
📊 経路選択のプロセス
BGPルーターは受信した複数の経路情報から、以下のような順序で最適な経路を選択します:
- 🏆 WEIGHT: ローカルルーターの管理者が設定する値(高いほど優先)
- 👑 LOCAL_PREF: AS内で共有される優先度(高いほど優先)
- 🏠 自AS発信: 自ASから発信された経路を優先
- 🛣️ AS_PATH長: 通過するASの数が少ないほど優先
- 🏷️ ORIGIN: 経路の発生源(IGP > EGP > 不明の順に優先)
- 📉 MED: 他ASへの優先出口を示す値(低いほど優先)
- 🌉 EBGP > IBGP: 外部BGPを内部BGPより優先
- 📏 IGPメトリック: 次ホップへの内部距離が短いほど優先
- ⏱️ 経路受信時間: 最も古くから知られている経路を優先
- 🔢 ルーターID: 決着がつかない場合は、送信元ルーターIDが小さい方を優先
🎓 なるほど!ポイント
BGPの経路選択は「旅行の経路を決める」ようなものです。まず自分の好み(WEIGHT, LOCAL_PREF)を考慮し、次に短い経路(AS_PATH長)、信頼性(ORIGIN)、混雑度(MED)などを順に評価して、最終的に最適な経路を1つ選びます。
🔄 BGPの種類:iBGPとeBGP
BGPには大きく分けて2つの種類があります:
🏠 iBGP(内部BGP)
- 同じAS内のBGPルーター間で使用される
- フルメッシュ接続が基本(スケーラビリティ問題を解決するためにRoute ReflectorやConfederationを使用)
- AS内でのBGP経路情報の同期が目的
🌉 eBGP(外部BGP)
- 異なるAS間のBGPルーター間で使用される
- インターネット全体での経路情報交換が目的
- 通常、物理的に直接接続されている
!
💡 初学者向けポイント
iBGPとeBGPの違いは「社内連絡」と「取引先との連絡」の違いのようなものです。iBGPは同じ会社内での情報共有、eBGPは異なる会社間での取引情報の交換というイメージです。
⚙️ BGPのポリシーと制御
BGPの大きな特徴は、単純な「最短経路」だけでなく、様々なポリシーに基づいて経路を制御できることです。
🛠️ 主なBGPポリシー制御手法
📈 LOCAL_PREF(ローカル優先度):
- 自AS内での経路優先度を指定
- 出口選択に使用(高いほど優先)
📉 MED(Multi-Exit Discriminator):
- 他ASへの入口選択を提案
- 低い値ほど優先される
🔍 AS_PATH操作:
- 自AS番号を複数回追加して経路を長く見せる(AS_PATH Prepending)
- 特定のASを経由する経路をフィルタリング
🏷️ コミュニティ:
- 経路に「タグ」付けして特別な処理を指示
- 特定のカスタマーやリージョンからの経路を識別
!
🤝 BGPピアリング関係
BGPでの接続関係(ピアリング)には、主に以下の3種類があります:
- 🔄 トランジット(有料): 顧客がISPに支払いを行い、インターネット全体への接続性を購入
- 👥 ピアリング(無料): 同等規模のASが相互に直接接続し、お互いのネットワーク間のトラフィックを交換
- ⬇️ カスタマー(収入): 他のASからトランジットとして料金を受け取る
!
🎓 なるほど!ポイント
インターネットの経済モデルはBGPピアリング関係によって成り立っています。トランジットは「有料道路」、ピアリングは「相互通行協定」のようなものです。この関係によって、誰もインターネット全体を所有していなくても、全体として機能する仕組みが実現しています。
🔒 BGPのセキュリティ課題と対策
BGPは当初、信頼関係を前提に設計されたため、セキュリティ上の課題があります。
⚠️ 主なBGPセキュリティ問題
- 🎭 BGPハイジャック: 不正なASが他者の所有するIPアドレス範囲を自分のものとして広告する攻撃
- 🔀 経路漏洩: 誤って設定されたフィルタにより、本来伝播すべきでない経路情報が流出
- 🚫 DoS攻撃: BGPセッションを混乱させたり切断させたりする攻撃
🛡️ BGPセキュリティ対策
🔐 RPKI(Resource Public Key Infrastructure):
- IPアドレスブロックの正当な所有者を証明する仕組み
- ROA(Route Origin Authorization)により、どのASがIPプレフィックスを広告できるかを定義
🔒 BGPsec:
- BGP UPDATE メッセージに暗号署名を追加
- AS_PATHの改ざんを防止
👮 フィルタリング:
- プレフィックスフィルタ:特定のプレフィックスを受け入れまたは拒否
- AS_PATHフィルタ:特定のASを含む経路を拒否
- MAX_PREFIXリミット:受け入れる経路数を制限
!
💡 初学者向けポイント
BGPセキュリティは「国境検問所」のようなものです。RPKIはパスポート(身分証明)、BGPsecは改ざん防止印(署名)、フィルタリングは入国審査(不審者の検出と拒否)に相当します。
📱 BGPの実装と運用
🖥️ 主なBGP実装
- 🐧 Quagga/FRRouting: オープンソースのBGP実装
- 🔧 Cisco IOS: Ciscoルーターに実装されたBGP
- 🛠️ Juniper JUNOS: Juniperルーターに実装されたBGP
- 🔍 BIRD: 軽量で高性能なBGP実装
- 🌐 OpenBGPD: OpenBSDプロジェクトのBGP実装
⚙️ BGP設定の基本例(Cisco IOS)
router bgp 65001
neighbor 192.0.2.1 remote-as 65002
neighbor 192.0.2.1 description Peer with AS65002
network 198.51.100.0 mask 255.255.255.0
network 203.0.113.0 mask 255.255.255.0
📊 BGPのモニタリングとトラブルシューティング
- 👁️ Looking Glass: 世界中のBGPルーターからのビューを確認できるサービス
- 📈 BGPモニタリングツール: BGPmonやRouteViewsなど
- 🔍 BGPデバッグコマンド: show ip bgp, debug ip bgp など
🌟 BGPの重要性と役割
🌐 インターネットの基盤としてのBGP
- 🔄 分散制御: 中央集権的な制御なしでもインターネット全体が機能
- 🔋 耐障害性: 経路に問題が発生しても代替経路を見つけられる
- ⚖️ 柔軟なポリシー: 技術的、経済的、政治的な要因に基づいた経路選択が可能
📈 BGPの進化と将来
- 📊 スケーラビリティの向上: インターネットの成長に合わせた拡張
- 🔒 セキュリティ強化: RPKI、BGPsecなどの導入
- 📱 SDN(Software-Defined Networking)との統合: プログラム可能なネットワーク制御
📝 まとめ
BGP(Border Gateway Protocol)は、インターネットを構成する無数の自律システム(AS)間で経路情報を交換するためのプロトコルです。単なる「最短経路」だけでなく、技術的・経済的・政治的な要因を考慮した経路選択を可能にし、インターネット全体を機能させる重要な役割を担っています。
BGPは複雑なプロトコルですが、基本原則は「自律分散協調」にあります。各ASが独自の判断で経路情報を処理しながらも、全体として協調して動作することで、インターネット全体の到達性を確保しています。セキュリティ面での課題はあるものの、RPKI、BGPsecなどの新技術によって、より安全なインターネットの実現が進められています。
🎯 この記事のポイント
- 🌐 BGPはインターネットを構成する自律システム(AS)間の経路制御プロトコル
- 🏢 各ASは独自のポリシーに基づいて経路を選択・広告
- 🔄 BGPには内部BGP(iBGP)と外部BGP(eBGP)の2種類がある
- ⚙️ 様々な属性(LOCAL_PREF、MED、AS_PATHなど)を使って経路を制御
- 🤝 トランジット、ピアリング、カスタマーの関係がインターネット経済を形成
- 🔒 RPKIやBGPsecなどのセキュリティ技術が重要性を増している
BGPの仕組みを理解することで、インターネットの根幹技術への理解が深まり、大規模ネットワークの設計や運用、トラブルシューティングに役立てることができます。