記事を読んでいただきありがとうございます。
モブエンジニア(@mob-engineer)です。
モブエンジニアのネットワーク大全というテーマでひとりアドベントカレンダーを生やしてみたので、ネットワーク関連に関してキャッチアップしたことをつらつらとまとめていきたいと思います。
BGPとは?
AWSネットワーク設計を行っているとBGPというワードがよく出てくると思いますが、具体的に何なんだろうと思われる方がいらっしゃると思います。
Ciscoのコンフィグレーションガイドにまとめられている情報が比較的分かりやすかったのでそちらを示しておきたいと思います。
Border Gateway Protocol(BGP; ボーダー ゲートウェイ プロトコル)は、独立したルーティング ポリシーを持つルーティング ドメイン(自律システム)の間に、ループのないルーティングを提供するように設計されたドメイン間ルーティング プロトコルです。Cisco IOS に実装された BGP バージョン 4 のソフトウェアでは、4 バイト自律システム番号およびマルチプロトコル拡張がサポートされており、IP version 4(IPv4; IP バージョン 4)、IP version 6(IPv6; IP バージョン 6)、Virtual Private Networks version 4(VPNv4; バーチャル プライベート ネットワーク バージョン 4)、Connectionless Network Service(CLNS; コネクションレス型ネットワークサービス)、Layer 2 VPN(L2VPN; レイヤ 2 VPN)を含む Internet Protocol(IP; インターネット プロトコル)マルチキャスト ルートおよび複数のレイヤ 3 プロトコル アドレス ファミリのルーティング情報が BGP により伝送されるようになっています。このモジュールには、BGP がどのように Cisco IOS ソフトウェアに実装されているかの理解に役立つ概念図が含まれています。
とは言え、Ciscoが定義したというものではなくRFC4271で定められているプロトコルとなります。RFC4271についても共有します。
いろいろ書いてありますが分かりやすく言えば「ネットワークの縄張り(AS)の管理プロトコル」と思てもらえれば分かりやすいです。
わわわさんの説明が分かりやすいのでそちらを読んでみると分かりやすいです。
セキュリティ視点での実装ベストプラクティスについてもRFC7454で定義されています。
ネットワーク署名技術を活用した話ですので別途記事を書いてもいいと思いました。
BGPって2種類あんねんの話
種明かしとして外部のASにつなぐeBGPと同じAS間でつなぐiBGPのことを指しています。
IPv4・IPv6でのBGPの話やネットワークベンダーのBGP仕様の違いを指しているわけではありません。
より高度なBGPの知識を知りたい方へ
BGPを深掘りして理解するのであれば以下ドキュメントを読んでみるといいかと思います。
https://www.nic.ad.jp/sc-online/program/sc-online-day1-5.pdf
https://www.nic.ad.jp/ja/materials/iw/2003/proceedings/T4.pdf
特に各ASがフォローするネットワーク領域をどうやって設計するかを考えるための検討材料になったりします。(例えば東西拠点で分割する必要がある場合、それぞれでAS番号を確保して設計するなど)
VPN接続を考慮したBGP設計を考える場合は以下ドキュメントも参考になると思います。
(三層キャンバスモデルかスパイン&リーフモデルなのかだったり)
そのうえでBGPを利用するうえでBGPハイジャックへの対策も考える必要があります。
Ciscoの場合RPKI技術を用いることでハイジャック対策を行うことが出来ます。
(いわゆる証明書を設定して対処しましょうという話ですね)
ちなみにRPKIについては技術論文も公開されているので読んでみるといいと思います。
まとめ
CiscoなどのベンダーではBGPのセキュリティ対策について紹介されていますが、実務への落とし込みは別問題だったりします。そのうえで、BGPって2種類あるので、AS内部での通信設計とAS外での通信設計をどのような観点(安定性、速度、冗長化、耐障害性など)で行う必要があるのか考えてみることが大事なのかなぁと思っています。
(そういえば、AWSのネットワークサービスってRPKIのような暗号化って実装されているんですかね、、、後で調査してみます)