ネットワーク●●●●○

BGP

Border Gateway Protocolびーじーぴー

インターネットの経路情報をAS間で交換するプロトコル。世界規模の道案内。

概要

BGP(Border Gateway Protocol)は、インターネットを構成する組織のネットワーク同士が「自分はどのIPアドレス帯を持っていて、どの経路で届くか」を教え合うためのプロトコルです。インターネットには全体を統括する管制塔が存在しません。ISP、クラウド事業者、大学、大企業といった無数の独立したネットワークが相互に接続し、BGP でお互いの行き先情報を交換し合うことで、結果として1つの巨大な網として機能しています。「インターネットのルーティングを成り立たせている唯一のプロトコル」と言ってよい存在です。

この「独立して運用されるネットワークのまとまり」を AS(Autonomous System、自律システム)と呼び、それぞれに AS番号という識別子が割り当てられています。世界には数万の AS があり、NTTコミュニケーションズも Google も AWS も、それぞれが1つ(あるいは複数)の AS です。BGP は AS と AS の境界(Border)に立つルータ同士が話すプロトコルであり、その名の通り「境界のゲートウェイのためのプロトコル」なのです。

普段のアプリケーション開発で BGP を直接触ることはまれですが、「特定の国から自社サービスに届かない」「クラウド事業者の経路設定ミスで世界的な障害が起きた」といったニュースの裏側には、ほぼ必ず BGP がいます。インターネットという足場がどう組まれているかを知る、いちばん深い一枚です。

なぜ生まれたか

初期のインターネットでは、EGP という素朴なプロトコルが組織間の経路交換を担っていました。しかし EGP はネットワーク全体が木構造(中心のバックボーンから枝分かれする形)であることを前提としており、ISP が乱立して網の目状に相互接続する商用インターネットには対応できませんでした。網の目状のトポロジでは経路がループする恐れがあり、また「どの組織のネットワークを経由するか」は技術だけでなく契約や政治の問題でもあるため、「最短だから通す」ではなく「この経路は使う・使わない」を各組織が自分のポリシーで決められる必要があったのです。

こうして1989年に設計されたのが BGP です(現行版の BGP-4 は1994年〜)。経路情報に「その経路が通過する AS 番号の並び(ASパス)」を含めることでループを機械的に検出し、同時に各 AS が自分の方針で経路を選別・加工できる柔軟性を持たせました。逸話として、初期の設計は IETF の会合中に3枚のナプキンに書かれたため「3枚のナプキンのプロトコル」と呼ばれます。その即興的な出自のプロトコルが、30年以上たった今も全インターネットを支え続けています。

詳細

経路広告 — 「うちを通ればそこへ行けます」の伝播

BGP の基本動作は「経路広告(アドバタイズ)」です。ある AS が自分の持つIPアドレス帯(プレフィックス)を隣接 AS に知らせると、受け取った AS は自分の AS 番号を ASパスの先頭に付け足して、さらにその隣へ伝えます。伝言ゲームのように広告が伝播した結果、世界中の AS が「そのプレフィックス宛てはどの隣人に渡せばよいか」を知る、という仕組みです。

AS64503 海外ISPAS64502 大手ISPAS64501 中堅ISPAS64500 コンテンツ事業者AS64503 海外ISPAS64502 大手ISPAS64501 中堅ISPAS64500 コンテンツ事業者宛先203.0.113.0/24へはAS64502経由と学習する203.0.113.0/24 を広告 ASパス 64500同じ経路を再広告 ASパス 64501 64500同じ経路を再広告 ASパス 64502 64501 64500以後そのプレフィックス宛てのパケットを転送ASパスを逆にたどって転送発信元のASに到達

ポイントは、パケットの流れが広告の流れの逆向きになることです。「うちを通ればそこへ行けます」という広告が東へ伝われば、パケットは西へ流れてきます。また、受け取った ASパスに自分の AS 番号がすでに含まれていたらその広告を破棄する、という単純なルールで経路ループを防いでいます。隣接ルータ同士は TCP のポート179で接続を張り(この関係を「ピア」と呼びます)、最初に全経路を交換した後は差分だけを送り合います。フルルート(インターネットの全経路)は現在100万経路前後に達しており、これを保持・処理できることが基幹ルータの要件になっています。

経路選択とポリシー — 最短ではなく「契約に従って」選ぶ

同じ宛先への経路を複数の隣人から教わったとき、BGP は組織内のルーティングプロトコルのような「距離の最短」では選びません。最優先されるのは管理者が設定するポリシー(LOCAL_PREF などの属性)で、その次に ASパスの短さなどが比較されます。これは AS 間の接続に「顧客・事業者(トランジット)」「対等交換(ピアリング)」といった商業的関係があるためです。お金を払って接続してもらう経路より、無料で交換できるピアの経路を優先する — そんな経済的判断がプロトコルの経路選択に直接組み込まれているのが BGP の際立った特徴で、インターネットの地図は技術と契約の両方で描かれているのです。

Tier1 事業者AS64510Tier1 事業者AS64511ピアリング中堅ISPAS64501中堅ISPAS64502トランジットトランジットピアリング(対等・無償)コンテンツ事業者AS64500企業ネットワークAS64520矢印は顧客から事業者への契約関係。経路広告はこの網の目を伝わって全世界に届く
インターネットの構造 — 数万のASがトランジットとピアリングで網の目につながる

経路ハイジャック — 嘘の広告が世界を巻き込む

BGP の最大の弱点は、広告の内容を検証する仕組みが元々なかったことです。ある AS が「そのアドレス帯はうちのものです」と嘘の(あるいは誤った)広告を流すと、周囲の AS はそれを信じて経路を切り替えてしまいます。しかもルーティングのロンゲストマッチの性質上、正規の広告より細かいプレフィックスで広告すれば、正規経路より優先されてトラフィックを丸ごと吸い込めてしまいます。これが「経路ハイジャック(BGPハイジャック)」です。

有名な事故が2008年のパキスタンの事例です。国内での YouTube 遮断を意図した ISP が YouTube のアドレス帯をより細かいプレフィックスで広告したところ、その経路が誤って全世界に伝播し、世界中の YouTube 宛てトラフィックがパキスタンに吸い込まれて数時間のグローバル障害となりました。悪意による攻撃としては、暗号資産のウォレットサービスの経路を乗っ取り、DNS サーバになりすまして利用者を偽サイトへ誘導した2018年の Amazon Route 53 ハイジャック事件が知られています。通信の中身は TLS で守れても、「そもそもパケットがどこへ運ばれるか」は BGP の信頼の上に成り立っているのです。

対策として現在進んでいるのが RPKI(Resource Public Key Infrastructure)です。公開鍵暗号の証明書によって「このアドレス帯を広告してよいのはこの AS だけ」という対応(ROA)を登録し、各 AS が受け取った広告を検証して不正な経路を弾きます。大手クラウドや主要 ISP での導入が進み状況は改善しつつありますが、全 AS が対応するまでの道のりは長く、経路ハイジャックは今もインターネットの構造的リスクであり続けています。

運用の現場感

BGP はサービスの可用性設計にも直結します。複数の ISP に接続して片方の障害時に経路を切り替えるマルチホーミングは BGP があってこそ成立しますし、CDN や大手 DNS サービスが使うエニーキャスト(世界中の拠点から同じアドレス帯を広告し、利用者を最寄り拠点に誘導する技術)も BGP の応用です。一方で、設定ミス1つの影響範囲が世界規模になるのも BGP の怖さです。2021年の Facebook の大規模障害では、メンテナンス中の誤操作をきっかけに自社の経路広告が取り下げられ、DNS サーバごとインターネットから消滅した結果、外部サービスだけでなく社内システムまで巻き込む約6時間の全面停止となりました。インターネットの「つながっている」という当たり前は、数万の AS が BGP で交わし続ける広告の上に、かろうじて成立しているのです。