メインコンテンツへスキップ
  1. 記事/

BGP:その仕組みと役割

Ixonae
著者
Ixonae
目次

注意: この記事はLLMによって英語から翻訳されたものです。正確性については保証いたしかねますので、あらかじめご了承ください。英語の原文はこちら

インターネット関連のニュースを追っている方なら、2月下旬にFCC(Federal Communications Commission)がBGPに関する調査を開始したことをご存知かもしれません。調査通知文書の序文には、次のように記されています:

The Commission, in tandem with its federal partners, has urged the communications sector to defend against cyber threats, while also taking measures to reinforce our Nation’s readiness and to strengthen the cybersecurity of vital communications services and infrastructure, especially in light of Russia’s escalating actions inside of Ukraine. […] We seek comment on vulnerabilities threatening the security and integrity of the Border Gateway Protocol (BGP), which is central to the Internet

BGPについては、インターネットのルーティングに使われるものとして、あるいは昨年Facebookを停止させた原因として聞いたことがあるかもしれません。しかし、BGPとは実際に何なのか、どのように動作し、どのような潜在的な欠陥があるのかを本当に理解していますか?一緒に見ていきましょう。

パケットルーティングとBGP
#

インターネットを定義するとすれば、インターネットとは相互接続されたネットワークの集合体であると言えるでしょう。Ciscoによると、2023年までにユーザー数は53億人に達し、siteefyによると、現在11.7億のウェブサイトが存在しています。これは素晴らしいことですが、これだけの規模になると、マシンAからマシンBにパケットを届けるには何らかの「地図」が必要になります。それがBGPの役割です。

より技術的に定義すると、BGP(Border Gateway Protocol - TCPのポート179を使用)は、自律システム間でパケットをルーティングすることを可能にします。自律システムはBGPを使用して、自身が管理するIPアドレスと、接続している他の自律システムを通知します。詳細に入る前に、いくつかの用語を定義しましょう。

用語
#

自律システム(AS)
#

自律システムとは、単一の明確に定義されたルーティングポリシーを持つ、1つ以上のIPプレフィックス(例えば 8.8.0.0/248.8.0.1 から 8.8.0.254 までのすべてのIPアドレスを表します)のグループです。通常、単一の組織によって管理されます。例えば、企業(Google、Amazonなど)、政府機関、またはISP(Verizonなど)です。1つの組織が複数の自律システムを管理することも可能です。

自律システム番号(ASN)
#

各自律システムには、地域インターネットレジストリ(RIR)によって割り当てられた自律システム番号(ASN)があります。これはネットワークオペレーターがルーティング情報を交換するために使用されます。

whoisコマンドを使用して(ドメイン名の場合と同様に)ASNの所有者についてより詳しく知ることができます。例えば、whois AS15169(出力がかなり長いため、ここには貼り付けません)。

また、IPアドレスがどのASとIPプレフィックスに属しているかを調べることもできます。例えば、cymru.comはwhoisで問い合わせ可能なAPIを提供しています。

> whois -h whois.cymru.com -- '-v 8.8.8.8'
AS      | IP               | BGP Prefix          | CC | Registry | Allocated  | AS Name
15169   | 8.8.8.8          | 8.8.8.0/24          | US | arin     | 1992-12-01 | GOOGLE, US

インターネット上のさまざまなサービスでも、ASNについてより詳しく調べることができます。例えば、ipinfo.ioのAS15169では、そのASに割り当てられたすべてのIP範囲や、他の自律システムとの接続状況を確認できます。

地域インターネットレジストリ(RIR)とInternet Assigned Number Authority(IANA)
#

地域インターネットレジストリは5つあり、それぞれ特定の地理的ゾーンに割り当てられています。例えば、American Registry for Internet Numbers(ARIN)はアメリカのエンティティにASNを割り当てる役割を担っています。5つのRIRはInternet Assigned Number Authority(IANA)によって管理されています。RIRはIP範囲の割り当ても担当しています。

概要の例
#

これまでの定義を踏まえて、具体的な例を見てみましょう。GoogleのDNSである8.8.8.8にリクエストを送信したいとします。あなたのコンピュータにとっては簡単です。ネットワーク接続はルーターだけなので、リクエストをそこに送ります。次に、ルーターもISPにリクエストを送るという唯一の選択肢しかありません。では、その後は?

以下の図はインターネットの簡略化された地図です。右上にあなたのISP(仮にAS0とします)、左下にGoogle(仮にAS15169とします)があります。あなたのコンピュータから、リクエストはISPネットワークのさまざまな部分を経由して(Internal BGP、iBGPを使用する可能性があります)、最終的にISPのエッジルーターに到達します。そこから、ISPは(BGPと内部ポリシーのおかげで)最適なパスがAS0 -> AS1 -> AS2 -> AS10 -> AS15169であると判断し、リクエストをAS1に送信します。AS1は内部ネットワークを通じてリクエストをルーティングし、AS2に送信し、適切な場所に到達するまでこれが続きます。

図1: インターネットの分散型接続

簡略化のため、図1では各ISPにBGPルーターが1つだけ表示されていますが、実際には複数存在します(内部BGP用のルーターに加えて)。

自律システムはどのように接続されているか
#

図1を見て疑問に思うかもしれないのは、さまざまなASが実際にどのように相互接続されているかということです。いくつかの追加用語を定義し、全体像の中でどのように位置づけられるかを見ていきましょう。

上流と下流の自律システム
#

ipinfo.ioのAS15169のページを見ると、上流ASNのリストと下流ASNのリストがあることに気づくでしょう。簡単に言えば、下流ASNはGoogleを通じてより広いネットワークにアクセスするASを表し、上流ASNはGoogleがより広いネットワークにアクセスするために使用するASを表します。

インターネット(IP)トランジットとピアリング
#

IPトランジットとは、ISP(上流プロバイダー)がより広いインターネットに接続するためにネットワークを使用する権利を販売するサービスです(つまり、ISPが他のISPと持つBGP接続を使用すること)。

2つのISPがお互いのネットワークへのアクセスを無料で許可する場合があります。これをピアリングと呼びます。これは通常、ISP同士がお互いのネットワークに無料でアクセスすることにビジネス上の利益がある場合に行われます。

Tier 1、Tier 2、Tier 3ネットワーク
#

ISP間の接続には、IPトランジットとピアリングの2種類があることを説明しました。ISPがこれらをどのように使用するかは、主にそのISPがどのTierに属するかによって決まります。

Tier 1ネットワーク:Tier 1 ISPは最大手です。一般的に、インターネットトランジットやピアリングに料金を支払うことなく、インターネット上のすべてのネットワークにアクセスできると定義されています。

Tier 1 ISPの例としては、AT&T、NTT、Orangeなどがあります。

Tier 2ネットワーク:Tier 2 ISPは他の(主にTier 2の)ネットワークとピアリングしていますが、インターネット全体にアクセスするためにTier 1プロバイダーからIPトランジットを購入しています。

Tier 2 ISPは通常、国内または地域的な範囲を持ち、自社のインフラストラクチャで複数の大陸にまたがる顧客にサービスを提供できるのはごく一部に限られます。

Tier 2 ISPの例としては、Korea Telecom、British Telecom、Comcastなどがあります。

Tier 3ネットワーク:Tier 3サービスプロバイダーは通常小規模で、Tier 2および(時にはTier 1の)ネットワークからIPトランジットを購入するのみです。

インターネットエクスチェンジポイント(IXP)とPrivate Network Interconnect(PNI)
#

IXPは、インターネットインフラストラクチャ企業(ISPやCDNなど)がトラフィックを交換するために接続する物理的な場所です。基本的にはネットワークスイッチを含むデータセンターであり、さまざまな参加者によって維持(費用負担)されています。

参加者にとってのメリットは、より大きなプロバイダーにピアリング料金を支払うことなく、お互いのネットワークにアクセスできることです。IXPは参加者間で交換されるリクエストのレイテンシーの改善にも役立ちます。なお、参加者はIXPを通じて上流接続を共有しません。

IXPの例はこちらのウェブサイトで確認できます。

IXPは通常2つ以上の参加者が関与します。2つのISPが相互接続が十分に重要であると判断した場合、Private Network Interconnect(PNI)を構築します。これは2者間の直接的な光ファイバー接続です。

具体的な例
#

BGPを使用するすべてのアクターを定義したので、もう一度例を見てみましょう。今回はより詳細なレベルで説明します(説明すべきことが多いので、シンプルに保ち、すべての側面には触れないようにします)。

以下の図2では:

  • AS1はTier 2 ISPで、Tier 1 ISPであるAS2への上流接続を持っています
  • AS2はAS1とAS4への下流接続を持っています
  • AS3、AS4、AS5はTier 2 ISPです
  • AS3とAS5はIXPを通じて接続を共有しています
  • AS1とAS3は大量のトラフィックを交換するため、ピアリングしています
  • AS4とAS5も同様です
図2: BGPネットワークの例

仮に私たちがAS1、新しいISPでオンラインになったばかりだとしましょう。まずネイバーを設定する必要があります。AS3とAS2と契約があるので、BGPネイバー設定にそれらを追加します。テーブルは以下のようになります(実際にはもっと複雑で、統計やステータスなどが含まれます):

NeighbourAS
1.5.0.13
1.2.0.12

そこから、BGP情報を受信し、BGPテーブルは以下のように埋められます(こちらも簡略版です):

NetworkNext HopPath
1.1.0.10.0.0.0i
1.5.0.0/161.5.0.1AS3
1.4.0.0/161.5.0.1AS3, AS5
1.3.0.0/161.5.0.1AS3, AS5, AS4
1.2.0.0/161.5.0.1AS3, AS5, AS4, AS2
1.2.0.0/161.2.0.1AS2
1.3.0.0/161.2.0.1AS2, AS4
1.4.0.0/161.2.0.1AS2, AS4, AS5
1.5.0.0/161.2.0.1AS2, AS4, AS5, AS3

ルートはネイバーからのメッセージに頼る代わりに手動で設定することもできます。ネットワークは固定的なものではないため、変更が行われるとBGPを使用して更新が送信されます。例えば、AS4とAS5がピアリング契約を維持する意味がなくなり、直接接続を解消した場合、ローカルテーブルは以下のように更新されます。

NetworkNext HopPath
1.1.0.10.0.0.0i
1.5.0.0/161.5.0.1AS3
1.4.0.0/161.5.0.1AS3, AS5
1.2.0.0/161.2.0.1AS2
1.3.0.0/161.2.0.1AS2, AS4

最初のBGPテーブルに戻って、AS5にパケットを送信したいとしましょう。2つの選択肢があります:

  • AS3 -> AS5のルートを使う
  • AS2 -> AS4 -> AS5のルートを使う

複数の選択肢があるため、ルーターはBGP設定を参照してどのルートを使用するかを決定します。BGPポリシーでは、以下のような複数の要素に基づいてルーティングの決定を行うことができます:

  • パスの長さ
  • ローカルプリファレンス
  • ルートの古さ
  • eBGPではなくiBGPでルーティングできるか
  • …(詳細は記事の参考文献を参照してください)

この例では、AS2へのトラフィックには料金が発生するため、無料のピアリング契約があるAS3を優先的にパケットを通すようにローカルプリファレンスを設定しているかもしれません。

何が問題になりうるか?
#

BGPはかなり古いプロトコルで(1989年に構想され)、ほとんどの古いプロトコル(ARP、DNS、その他多数)と同様に、セキュリティを考慮して設計されていませんでした。

BGPにおける最も重大なリスクはBGPハイジャック攻撃です。これは、ASが誤ったルーティング情報を送信することで成立します。例えば、図2に戻りましょう。AS2とAS3とは関係があるので、悪意のある行動をしないと信頼することを選びましたが、それらのネイバーや、そのまたネイバーなどについては制御できません。ある時点でAS5が悪意を持ち、ネットワーク1.3.0.0/24(実際にはAS4のもの)を所有していると通知することは十分にあり得ます。BGPは信頼に基づいているため、BGPルートが侵害され、通信の一部が悪意のある者の手に渡る可能性があります(この例ではAS5が悪意を持つケースですが、人的ミスである可能性もあります)。

実際にBGPハイジャック攻撃が実行された例がいくつかあります。2018年、ロシアのISPがAmazon DNSサーバーに属するIPプレフィックスをハイジャックし、暗号通貨ウォレットのユーザーを悪意のあるウェブサイトにリダイレクトしました。ハッカーは約152,000米ドル相当の暗号通貨を盗みました(参考)。

もう1つの頻発する問題はルートリークです。これは基本的に、ルートが意図された範囲を超えて(意図せず)ブロードキャストされた場合に発生します。例えば、2008年にPakistan TelecomはYouTubeのIPアドレスをnullルーティングすることで同サービスを検閲しようとしました。しかし、そのルートが誤ってPakistan Telecomの上流プロバイダーであるPCCWに送信され、そこからインターネット全体に広がってしまいました。

BGPの修正
#

BGPを修正する最新の試みはRPKI(Resource Public Key Infrastructure)ですが、まだ広く展開されていません。詳細はこちらで読むことができ、導入の進捗状況も確認できます。基本的には以下のように動作します:

  • プレフィックスの所有者がROA(Route Origin Authorization)を作成し、ASをIPプレフィックスに関連付けます
  • ROAは適切な地域インターネットレジストリの認証局(Trust Anchor)によって署名され、紐付けが正しいことを証明します
  • 自律システムは、ルートに含まれるAS/IPプレフィックスの関連付けが正しいかどうかを、情報を取得して署名を検証することで確認できます(例えばバリデータを使用して)

出典と追加リソース
#

画像クレジット
#