ちょっと話題の記事

AWS利用のためのBGPをざっくり理解する

2024.04.17

こんにちは、NTT東日本の白鳥です。

AWSでネットワークを構築する際にBGPの設定が必要になるケースが出てくるかと思います。

なかにはハンズオンで出てきた設定をそのまま入れられる方もいらっしゃるかもしれません。

AWSを利用するためのBGPを少しでも理解が深まると幸いです。

※本記事はBGPのすべてを理解することが目的ではなく、あくまでAWS利用時に必要となる部分に絞っています。

AWSのネットワーク設定においてBGPが出てくるシチュエーション

AWSのネットワーク設定を行う中でもBGPの設定に出会うシチュエーションは大きく3つあります。

  • Direct Connect
  • Transit Gateway
  • Site-to-Site VPN

たとえば、仮想プライベートゲートウェイを作成するときに、こんな設定項目を見たことがあるかと思います。

BGPとは?BGPが必要になる背景

BGPはBorder Gateway Protocolと呼ばれるルーティングプロトコルとなります。

パスベクタ型のルーティングプロトコルと呼ばれています。

現在の仕様はRFC4271で規定されており、古くは1989年のRFC1105にさかのぼります。

BGPが必要になる背景

BGPが必要になる背景はインターネットの仕組み自体にさかのぼります。

インターネット自体は様々な企業、団体の相互接続により成り立っており、すべてのネットワークを一つの企業・団体で管理しているわけではありません。

ISPや通信事業者、企業といったネットワークの管理主体ごとにAS(自律システム:Autonomous System)を設けて、AS間を接続するためのプロトコルがBGPとなります。

ASには番号が振られており、重複が起きないようIANAで管理されています。

各AS間のネットワークのイメージ

NTT東日本もASを所持しており、たとえばAS 17933やこんなけしからんASもあります。

AS 63802- Cloudflare Radar

特殊局が手掛けるIN地域研究室の紹介「インターネット業界の未来を創る技術者育成」

また、IPアドレスと同様に、ASにもプライベートASが定められており、64512~65534と4200000000~4294967294はプライベートASとして定義されています。VPCにはプライベートASを利用することができます。

BGPの仕組みと経路選択

BGPの仕組み

Borderと名付けられるだけあって、BGPは各ネットワークの境界で設定します。

ネットワークの境界間にあるルータでネイバー関係を確立し、自身が管理しているルート情報を交換します。

自律的にルート交換を行い、ネットワーク構成の変化を自動的に検出して優先ルートを変更させることができます。

経路情報の交換にはネットワークアドレスのほか、パスアトリビュートといわれるメトリクスを送ることで、経路の優先順位を決めたり、コミュニティタグをつけることで細かなルート制御を行うこともできます。

また、膨大なルート情報を交換することになるため、すべてのルートを交換するのではなく、集約したり受け取りたくないルートはルートフィルタリングを行うこともできます。

経路情報にTCP port 179を使うため、TCP port 179をファイアウォールでフィルタすると大規模障害を引き起こす可能性もあります。

AWSで使用するパスアトリビュート

AWSで使用するパスアトリビュートは以下となります。

  • AS PATH
  • MED
  • Local Preference
  • COMMUNITY

BGP自体で使えるパスアトリビュートはもっとありますが、AWSで利用する際には上記の4つが経路選択の設定に関与します。

AWSにおけるBGPのルーティングポリシー

プライベートVIFおよびTransit VIFにおけるルーティングポリシー

ルートの優先度の設定は、次の順序で決定します。

  • プレフィックスの最長一致。より具体的なルートが優先
  • Local Prefercenceのコミュニティタグを判定
    • 7224:7100 優先度低
    • 7224:7200 優先度中
    • 7224:7300 優先度高
  • AS PATHの小さなほうを優先
  • MEDの小さな方を優先。※ただしAWSでは非推奨

Site-to-site VPNのルーティングポリシー

BGPでのルート優先度の決定は、下記の順序で行われます。

  • AS PATHの小さなほうを優先※非対称ルーティングをサポートするルータの場合は非推奨
  • MEDの小さな方を優先

パブリックVIFにおけるルーティングポリシー

インバウンド(オンプレミスからAWS)、アウトバウンド(AWSからオンプレミス)に応じて、経路情報の交換を行います。

インバウンドのルーティングポリシー

  • オンプレミス側のASが適切な地域のインターネットレジストリであること
  • AWSのパブリックプレフィックス宛であること
  • インバウンドのパケットフィルタリングによって、送信元アドレスが広告されたプレフィックスであること
  • Communityタグを見て、適切なリージョンに伝搬
    • 7224:9100 Direct Connectが接続された自リージョン
    • 7224:9200 自リージョンと同じ大陸にあるリージョンすべて(北米全域、アジアパシフィック、欧州・中東・アフリカ)
    • 7224:9300 グローバル

        

アウトバウンドのルーティングポリシー

  • AWSからは、最小パス長が3で広告
  • NO_EXPORT BGPコミュニティタグをもつプレフィックスを広告
  • 2つのパブリックVIFを異なるリージョンで使用している場合は、同じプレフィックスの最長一致で同じ優先度のBGPパスアトリビュートの場合、自リージョンを優先
  • AWSから広告されたルートをほかのASに伝搬させてはいけない。また、パブリックVIFで広告されたルートはAWSネットワーク内でほかのユーザや、AWSグローバルネットワークとピアリングするネットワークや、Amazonの中継プロバイダには伝搬しない
  • AWSからは、次のBGPコミュニティタグを伝搬
    • 7224:8100 Direct Connectがある同じAWSリージョン
    • 7224:8200 Direct Connectと同じ大陸のリージョン
    • タグなし その他のリージョン

    ※本コミュニティタグを使用して、オンプレミス側でルートフィルタさせることで使用するリージョンを制限させることが可能

まとめ

少し長くなりましたが、BGP何もわからない状態から、AWSではこういうものだというところまで解説しました。 パスアトリビュートを細かく設定することで、きめ細やかなルーティングの優先度を定めることができるようになるため、複数のDirect Connect接続や、Site-to-Site VPNを使用したオンプレミスとの接続を使う場合は、ネットワークの要件を把握しながら設定してみるようにしてみてください。

参考文献

BGPとは何ですか?

ルーティングポリシーとBGP コミュニティ

BGPの技術

ルートテーブルと VPN ルーティングの優先度