BGPとは?| BGPルーティングの説明

ボーダーゲートウェイプロトコル(BGP)は、インターネットのルーティングプロトコルです。郵便物を処理する郵便局と同様に、BGPはインターネットトラフィックを配信するための最も効率的なルートを選択します。

学習目的

この記事を読み終えると、以下のことができるようになります。

  • BGPルーティングを定義する
  • 自律システム間の関係を調べる
  • BGPがインターネットの機能にどのように影響するかを説明する

記事のリンクをコピーする

BGPとは?

ボーダーゲートウェイプロトコル(BGP)は、インターネットの郵便サービスです。誰かがポストに手紙を投函すると、郵便サービスがその郵便を処理し、宛先に届けるのに最も速くて効率の良いルートを選びます。同様に、誰かがインターネット経由でデータを提出すると、BGPがそのデータが移動できる利用可能なパスをすべて調べ、最良のルート(自律システム間の乗り換え(ホッピング)を含むのが通常)を選びます。

BGPは、データルーティングを有効にすることでインターネットを機能させるプロトコルです。たとえば、アルゼンチンにオリジンサーバー(配信元サーバー)があるWebサイトを、シンガポールのユーザーが読み込む場合に、BGPはその通信が速く効率的に行われるようにするプロトコルです。

自律システムとは?

インターネットはネットワークのネットワークです。自律システム(AS)と呼ばれる何十万もの小規模ネットワークから成り、各ASは本質的には単一組織が運営する大規模なルーターのプールです。

インターネット地勢図

BGPをインターネットの郵便サービスと考えるならば、ASは各郵便局のようなものです。1つの町には何百ものポストがあるかもしれませんが、それらのポストに投函された郵便物は必ずその地域の郵便局を経由して目的地へ送られます。AS内の内部ルーターはポストのようなもので、外向きの送信物をまずASに転送し、そのASがBGPルーティングによって宛先まで届けます。

簡略化されたBGP

上図はBGPを簡略化したものです。ここでは、インターネット上のASは6つだけです。AS1がパケットをAS3にルーティングする必要がある場合、ルートは2つあります。

AS2へホップし、さらにAS3へホップするルート:

AS2 → AS3

または、AS6、AS5、AS4、AS3へ順にホップするルート:

AS6 → AS5 → AS4 → AS3

この簡略化したモデルでは、選択は簡単に見えます。AS2経由のルートはAS6経由のルートより乗り換え(ホップ)が少ないため、最速で最も効率的です。では、ASが何十万もあって、乗り換え回数(ホップカウント)が複雑なルート選択アルゴリズムのごく一部でしかない場合を想像してみてください。それが、実際のインターネットにおけるBGPルーティングなのです。

インターネットの構造は常に変化しており、新しいシステムが登場したり既存システムが使えなくなったりします。そのため、各ASは新しいルートや陳腐化したルートについて常に最新情報を持っていなければなりません。情報更新は、各ASが隣接ASとTCP/IP接続で接続してルート情報を共有するピアリングセッションで行われます。各ASは共有した情報を基に、担当域内から送信されるデータを適正にルーティングすることができるのです。

ここから、先ほどの例えが当てはまらなくなります。自律システムは郵便局と異なり、すべてが同じ組織に属しているわけではありません。実際は競合する企業に属していることが多いのです。そのため、BGPルーティングではビジネス上の事項を考慮する場合があります。AS間にトラフィックの行き来がある場合はASが互いに料金を課すことが多く、アクセス料金が最終的なルート選択時の考慮要素になることがあります。

BGP自律システムは誰が運営している?

ASは普通、インターネットサービスプロバイダー(ISP)や、テクノロジー企業、大学、政府機関、科学研究所などの大規模組織に属します。ルーティング情報の交換を希望するASはそれぞれ、登録された自律システム番号(ASN)を持っていなければなりません。ASNは、インターネット番号割当機関(IANA)が地域インターネットレジストリ(RIR)に割り当て、そこからISPやネットワークに割り当てられます。ASNは、1~65534の間の16ビットの番号と、131072~4294967294の間の32ビットの番号があります。2018年現在、世界で使われているASNはおよそ6万4000個ありました。これらのASNが必要なのは外部BGPのみです。

外部BGPと内部BGPの違いは?

ルートの交換やトラフィックの転送は、外部BGP(eBGP)を使ってインターネット経由で行われます。自律システムは、内部ネットワーク内のルーティングにBGPの内部バージョンを使うこともできます。このバージョンは内部BGP(iBGP)と呼ばれます。内部BGPの使用は外部BGP使用の必要条件ではない点に注意が必要です。自律システムは、内部ネットワーク上のルーターの接続に使うプロトコルを、多数の内部プロトコルから選ぶことができます。

外部BGPは国際配送のようなものです。郵便物を国際的に配送する際は、従わなければならない特定の基準とガイドラインがあります。その郵便物が目的国に到着しても、その国の国内郵便サービスを経なければ最終目的地には到達できません。各国には独自の国内郵便サービスがあり、必ずしも他の国と同じガイドラインに従っているとは限りません。同様に、自律システムはそれぞれ、独自のネットワーク内でデータをルーティングするための独自の内部ルーティングプロトコルを持つことができます。

BGPの欠点とその解決方法

2004年に、TTNetと呼ばれるトルコのインターネットサービスプロバイダー(ISP)が、誤ったBGPルートを近隣へうっかり広報してしまいました。このルート情報は、TTNet自体がインターネット上の全トラフィックの最適な宛先だというもので、その情報がさらに多くの自律システムに伝えられるにつれて、大規模な混乱が発生し、世界中の多くの人々がインターネットの一部またはすべてに1日アクセスできなくなるという危機が生じました。

同様に、2008年にパキスタンのISPがBGPルートを使って、パキスタンのユーザーがYouTubeにアクセスできないようにしようとしました。その後、このISPがこれらのルートを近隣のASに誤って広報したため、ルートはインターネットのBGPネットワーク全体に急速に広がりました。YouTubeにアクセスしようとしたユーザーが誘導されたこのルートは行き止まりになり、その結果YouTubeが数時間アクセス不能になりました。

これらはBGPハイジャックと呼ばれる事例で、必ずしも偶然起こるわけではありません。2018年4月、攻撃者は故意に不正なBGPルートを作成し、AmazonのDNSサービス向けのトラフィックをリダイレクトしました。攻撃者はトラフィックを自分自身にリダイレクトすることにより、10万ドル相当の暗号通貨を盗むことに成功しました。

こういった事件が起こり得るのは、BGPのルート共有機能が信頼(トラスト)に基づいていて、共有されたルートを自律システムが真に受けてしまうからです。ピアが不正なルート情報を広報すると(故意か否かにかかわらず)、トラフィックが行くべきでないところへ流れて、悪い結果につながる可能性があるのです。

幸いなことに、BGPの安全化に向けて多少の前進がありました。最も注目すべきは、リソースパブリックキーインフラストラクチャ(RPKI)と呼ばれるルーティングのためのセキュリティフレームワークが2008年に導入されたことです。RPKIは、ルートオリジン認証(ROA)と呼ばれる暗号署名されたレコードを使って、どのネットワークオペレーターがBGPを使って組織のIPアドレスを広報することを許可されているかを確認します。これによって、組織のプレフィックスを広報するのは許可された者だけになります。

ただ、RPKIの存在だけでは十分ではありません。もし大規模ネットワークがRPKIをデプロイしなければ、大規模なハイジャック攻撃を広めかねません。現在、大手インターネットプロバイダーの50%以上がRPKIをある程度サポートしていますが、BGPのセキュリティを十分確保するには大多数のサポートが必要です。ネットワークオペレーターは、RPKIを実装し、Cloudflare Route Leak Detectionのようなネットワーク警告技術を使うことで自社ネットワークを保護することができます。この機能は、許可されていない者がプレフィックスを広報している時にその旨をカスタマーに知らせることにより、BGPハイジャック攻撃の防止に役立ちます。