🌐 BGP解説_インターネットを支える経路制御プロトコル

📚 はじめに

インターネット上でデータがどのように転送されるかを考えたことはありますか?私たちが日常的に使用するウェブサイトやアプリケーションのデータは、送信元から送信先まで、世界中の無数のネットワークを経由して届けられます。この複雑な経路選択を可能にしているのが「BGP(Border Gateway Protocol)」です。この記事では、インターネットの「道案内役」とも言えるBGPの基本から仕組み、重要性までを初学者向けにわかりやすく解説します。

🤔 BGPとは?

BGP(Border Gateway Protocol)は、インターネット上の大規模なネットワーク同士を接続するための経路制御プロトコルです。現在使われているのはBGP-4と呼ばれるバージョンで、インターネットの基幹を支える重要な技術です。

🏫 たとえで理解しよう
BGPは「国際物流システム」のようなものです。東京から送った荷物がニューヨークに届くためには、複数の国や輸送会社を経由する必要があります。各国の税関(境界ゲートウェイ)では、「この荷物はこちらのルートで送ってください」という情報を交換し合うことで、最適な経路で荷物が届くようにしています。BGPもこれと同様に、異なるネットワーク間で「このデータはこのルートで送るのが最適」という経路情報を交換しているのです。

!Image Description

🏢 自律システム(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)が使用できます !Image Description

💡 初学者向けポイント
自律システム(AS)は「国」のようなものです。それぞれが独自の政策(経路選択ポリシー)を持ち、他の国(AS)との間で国境(BGPルーター)を通じて人や物資(データ)の行き来についての取り決めを行っています。

🔄 BGPの基本的な仕組み

📡 BGPセッションの確立

BGPは、TCP/IPのポート179を使用して、BGPルーター同士が「ピアリング」と呼ばれる関係を確立します。

  1. 👋 TCP接続: まず、両者の間でTCP接続が確立されます
  2. 🤝 OPEN: BGPセッションを開始する要求が送られます
  3. 👍 KEEPALIVE: セッションが正常に維持されていることを確認するメッセージが定期的に交換されます
  4. 📋 UPDATE: 経路情報(ルート)の追加・変更・削除が通知されます
  5. ⚠️ NOTIFICATION: エラーが発生した場合に送信されるメッセージです

!Image Description

🗺️ 経路情報の交換

BGPルーターは、以下のような情報を交換します:

  • 📍 ネットワークプレフィックス: 到達可能なネットワークの範囲(例:192.168.1.0/24)
  • 🛣️ AS_PATH: そのネットワークに到達するために通過するAS番号の列
  • 🚩 NEXT_HOP: 次にデータを転送すべきルーターのIPアドレス
  • ⚖️ その他の属性: LOCAL_PREF、MED、COMMUNITYなど、経路選択に影響を与える様々な属性

📊 経路選択のプロセス

BGPルーターは受信した複数の経路情報から、以下のような順序で最適な経路を選択します:

  1. 🏆 WEIGHT: ローカルルーターの管理者が設定する値(高いほど優先)
  2. 👑 LOCAL_PREF: AS内で共有される優先度(高いほど優先)
  3. 🏠 自AS発信: 自ASから発信された経路を優先
  4. 🛣️ AS_PATH長: 通過するASの数が少ないほど優先
  5. 🏷️ ORIGIN: 経路の発生源(IGP > EGP > 不明の順に優先)
  6. 📉 MED: 他ASへの優先出口を示す値(低いほど優先)
  7. 🌉 EBGP > IBGP: 外部BGPを内部BGPより優先
  8. 📏 IGPメトリック: 次ホップへの内部距離が短いほど優先
  9. ⏱️ 経路受信時間: 最も古くから知られている経路を優先
  10. 🔢 ルーター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ルーター間で使用される
  • インターネット全体での経路情報交換が目的
  • 通常、物理的に直接接続されている

!Image Description

💡 初学者向けポイント
iBGPとeBGPの違いは「社内連絡」と「取引先との連絡」の違いのようなものです。iBGPは同じ会社内での情報共有、eBGPは異なる会社間での取引情報の交換というイメージです。

⚙️ BGPのポリシーと制御

BGPの大きな特徴は、単純な「最短経路」だけでなく、様々なポリシーに基づいて経路を制御できることです。

🛠️ 主なBGPポリシー制御手法

  1. 📈 LOCAL_PREF(ローカル優先度):

    • 自AS内での経路優先度を指定
    • 出口選択に使用(高いほど優先)
  2. 📉 MED(Multi-Exit Discriminator):

    • 他ASへの入口選択を提案
    • 低い値ほど優先される
  3. 🔍 AS_PATH操作:

    • 自AS番号を複数回追加して経路を長く見せる(AS_PATH Prepending)
    • 特定のASを経由する経路をフィルタリング
  4. 🏷️ コミュニティ:

    • 経路に「タグ」付けして特別な処理を指示
    • 特定のカスタマーやリージョンからの経路を識別

!Image Description

🤝 BGPピアリング関係

BGPでの接続関係(ピアリング)には、主に以下の3種類があります:

  1. 🔄 トランジット(有料): 顧客がISPに支払いを行い、インターネット全体への接続性を購入
  2. 👥 ピアリング(無料): 同等規模のASが相互に直接接続し、お互いのネットワーク間のトラフィックを交換
  3. ⬇️ カスタマー(収入): 他のASからトランジットとして料金を受け取る

!Image Description

🎓 なるほど!ポイント
インターネットの経済モデルはBGPピアリング関係によって成り立っています。トランジットは「有料道路」、ピアリングは「相互通行協定」のようなものです。この関係によって、誰もインターネット全体を所有していなくても、全体として機能する仕組みが実現しています。

🔒 BGPのセキュリティ課題と対策

BGPは当初、信頼関係を前提に設計されたため、セキュリティ上の課題があります。

⚠️ 主なBGPセキュリティ問題

  1. 🎭 BGPハイジャック: 不正なASが他者の所有するIPアドレス範囲を自分のものとして広告する攻撃
  2. 🔀 経路漏洩: 誤って設定されたフィルタにより、本来伝播すべきでない経路情報が流出
  3. 🚫 DoS攻撃: BGPセッションを混乱させたり切断させたりする攻撃

🛡️ BGPセキュリティ対策

  1. 🔐 RPKI(Resource Public Key Infrastructure):

    • IPアドレスブロックの正当な所有者を証明する仕組み
    • ROA(Route Origin Authorization)により、どのASがIPプレフィックスを広告できるかを定義
  2. 🔒 BGPsec:

    • BGP UPDATE メッセージに暗号署名を追加
    • AS_PATHの改ざんを防止
  3. 👮 フィルタリング:

    • プレフィックスフィルタ:特定のプレフィックスを受け入れまたは拒否
    • AS_PATHフィルタ:特定のASを含む経路を拒否
    • MAX_PREFIXリミット:受け入れる経路数を制限

!Image Description

💡 初学者向けポイント
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の仕組みを理解することで、インターネットの根幹技術への理解が深まり、大規模ネットワークの設計や運用、トラブルシューティングに役立てることができます。