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

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

学習目的

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

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

関連コンテンツ


さらに詳しく知りたいとお考えですか?

是非、Cloudflareが毎月お届けする「theNET」を購読して、インターネットで最も人気のある洞察をまとめた情報を入手してください!

当社がお客様の個人データをどのように収集し処理するかについては、Cloudflareのプライバシーポリシーをご確認ください。

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

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属性とは?

全体として、BGPはネットワークトラフィックの最も効率的な経路を見つけようとします。しかし、前述のように、BGPルーターがそれらの経路を見つけるために使用する要素は、ホップ数だけではありません。BGPは、複数の選択肢がある場合にルーターが経路を選択するのに役立つ属性を、それぞれの経路に割り当てます。多くのルーターでは、管理者が属性をカスタマイズして、ネットワーク上のトラフィックの流れをより細かく制御することができます。BGP属性の例としては、以下のようなものがあります:

  • WEIGHT(重み):Cisco独自の属性で、ルーターにどのローカル経路を優先するかを指示します。
  • Local-Preference(ローカルプリファレンス):ルーターに、使用する送信経路の選択を指示します。
  • Originate(生成元):BGP自体に追加したルートを選択するようにルータに指示します。
  • AS path length(AS経路長):上の図の例と同様に、この属性はルーターに最短経路を優先するように指示します。

他にもいくつかのBGP属性があります。これらの属性はBGPルーターによって優先順位付けされます。例えば、BGPルーターは、まず最も高い重み属性を持つルートを確認し、次にローカルプリファレンスを確認し、さらにルーターがルート発信元であるかどうかを確認します。(受信したすべての経路の重みが等しい場合、ルーターは代わりにローカルプリファレンスをもとに経路を選択します)。

BGPの欠点とその解決方法

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

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

また、このような事件は2019年6月にも発生し、ペンシルベニア州の小さな会社がVerizonのネットワークを通るルートの優先経路となり、インターネットの多くが数時間にわたって利用できなくなるという事態が発生しました。

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

BGPハイジャックは、いくつかの種類の攻撃に使用されます:

  • ユーザーを偽サイトに再ルーティングすることで行うフィッシングやソーシャルエンジニアリング
  • トラフィックのブラックホール化やリダイレクトなどの手法を用いたサービス妨害(DoS)
  • 通信中のデータを改ざんするオンパス攻撃や、評価ベースのフィルタリングシステムの破壊
  • 通信の盗聴を目的としたなりすまし攻撃

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

BGPの安全性を確保する方法

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

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