BGPとは ― 自律システム間の経路制御
BGPとは、
BGPとは、ASどうしが経路を教え合うプロトコル
BGP(Border Gateway Protocol)は、組織と組織のネットワークの間で、経路を教え合うプロトコルです。インターネットで組織どうしが経路を交換するときは、ほぼBGPが使われます。組織ごとに管理するネットワークのまとまりを、自律システム(AS)と呼びます。BGPは、ASの間で、宛先のアドレス範囲と、そこへ届くまでに通るASの列を伝え合います。
そのうえで、各ASは自分の方針で経路を選びます。方針に差がなければ、通るASの少ない経路が選ばれます。組織の中の経路を決めるOSPFとは、受け持つ範囲が違います。
自律システム(AS)とAS番号とは
自律システムは、1つの組織が同じ方針で管理するネットワークのまとまりです。通信事業者や大学、大企業のネットワークが、その例です。
外から見ると、ASの中は1つにまとまっています。ほかのASに見せるのは、そのASを通って届けられる宛先だけで、内部のつながりは見せません。
各ASは、世界で重複しないAS番号を持ちます。以下の例では、AS64500のように書きます。番号は、文書用に予約された64496から64511の範囲から選びました。
AS番号はもともと16ビットで、65535までの数でした。その後32ビットに広げられ、いまの仕様はRFC 6793にあります。
すべての組織が、自分のASを持つわけではありません。RFC 1930は、次のように勧めています。インターネットへの接続先がプロバイダ1社だけなら、そのネットワークはプロバイダのASに入れます。複数のプロバイダにつなぐなら、自分のASを持ちます。
IGPとEGPの違い:AS内とAS間
AS内で使うプロトコルをIGPと呼びます。OSPFやRIPが、その例です。AS間で使うプロトコルをEGPと呼びます。かつてはEGPという名前のプロトコルもありましたが、いまはBGPを使います。
| 比べる | IGP | EGP |
|---|---|---|
| 使う場所 | 1つのASの内部 | ASとASの間 |
| 経路を選ぶ基準 | コストやホップ数などの距離 | 通るASの列と、各ASの方針 |
| 目的 | AS内で効率のよい経路を見つける | 他のASと方針に沿って経路を交換する |
BGPは、AS内の経路がIGPで決まっていることを前提に動きます。BGPがIGPの代わりになるわけではありません。
BGPが運ぶ情報:プレフィックスとAS_PATH
BGPが隣のルータに伝える経路は、宛先を表すプレフィックスと、いくつかの属性でできています。プレフィックスは、203.0.113.0/24のように、アドレスの範囲を書いたものです。「/24」の意味はサブネットマスクの記事で説明しました。
属性のうち、BGPの経路選択を理解するのに欠かせないのがAS_PATHです。AS_PATHは、その経路が通ってきたASの番号を並べたものです。ASが経路を隣のASに渡すとき、AS_PATHの先頭に自分の番号を足します。経路の発信元のASは、自分の番号だけを入れて広告します。ここでの広告とは、経路を隣に知らせることです。
距離ではなく、通ってきたASの列を運ぶ方式を、パスベクトル型と呼びます。RIPのような距離ベクトル型は、経路ごとの距離を共有します。OSPFのようなリンクステート型は、ネットワーク全体のつながりを共有します。
BGPのルータは、TCPの179番ポートで相手のルータと接続します。ポートの考え方は、ポート番号の記事のとおりです。接続した直後に、渡してよい経路をまとめて送り、その後は変化した分だけを送ります。
連続した複数のプレフィックスを、1つの短いプレフィックスにまとめて広告することもできます。まとめやすい割り当て方は、VLSMの記事で説明しています。
経路が広がり、短い経路が選ばれる流れ
次の図は、5つのASで経路の広告が広がる様子を、6段階で見せます。AS64503が、届いた2本の経路から1本を選び、回線が切れたときに切り替えるまでを追います。
AS64500は、自分のWebサーバがある203.0.113.0/24への経路を、隣のAS64501とAS64502に知らせます。この知らせを広告と呼びます。広告には、経路が通ってきたASの番号の列を付けます。この列がAS_PATHで、いまは自分の64500だけです。
AS64501は、受け取った経路を隣のAS64503に渡します。このとき、AS_PATHの先頭に自分の番号の64501を足します。AS64502も同じように、64502を足して隣のAS64504に渡します。
AS64504も、自分の番号の64504を足して、AS64503に渡します。AS64503には、2つのASを通る経路と、3つのASを通る経路の、2本が届きます。
AS64503は、番号の数が少ない64501経由の経路を選びます。ここでは、どちらの経路にも優先度の設定がない前提です。優先度を設定していれば、それが先に比べられます。AS_PATHの短さは、優先度が同じ経路どうしを比べる基準になります。
AS64503は、選んだ経路を隣のAS64501にも広告します。この経路のAS_PATHには、64501が入っています。AS64501は、自分の番号が入った経路を見つけると、選択の対象から除きます。経路がぐるぐる回るのを、こうして防ぎます。
AS64500とAS64501の間の回線が切れたとします。AS64501は、この経路の取り消しをAS64503に知らせます。AS64503には、AS64504経由の経路だけが残るので、その経路を使います。
広告が渡るたびにAS_PATHの番号が増え、受け手は番号の少ない経路を選びました。選んだ経路を失っても、残った経路があれば自動で切り替わります。例のAS番号とプレフィックスは、説明用の架空のものです。
経路選択はポリシーで決まる
OSPFは、ネットワーク全体のつながりから最短経路を計算します。BGPには、この計算がありません。各ASが、受け取った経路の中から、自分の方針に合うものを選びます。
まず、各ASが付けた優先度の高い経路が残ります。優先度が同じ経路が複数あるときは、AS_PATHの短い経路が残ります。AS_PATHの短さは、このときに比べる最初の基準です。
優先度は、ASの方針で決まります。たとえば、契約している2本の回線の一方を優先したいときは、その回線から届く経路の優先度を高くします。どの経路を隣のASに知らせるかも、各ASが決めます。知らせなければ、隣のASはその経路を使えません。
AS_PATHの短い経路が、速い経路とは限りません。ASの数は、回線の速さや物理的な距離を表さないためです。
複数の拠点が同じプレフィックスを広告する使い方もあります。CDNの記事で説明したAnycastは、世界規模ではBGPを使って作れます。各ASは、届いた経路の中から自分の方針で1つを選びます。その結果、通信が各拠点に振り分けられます。この運用はRFC 4786にまとめられています。
eBGPとiBGPの違い
BGPの接続は、相手のASによって2種類に分かれます。別のASのルータとの接続がeBGPで、同じASのルータとの接続がiBGPです。
| 比べる | eBGP | iBGP |
|---|---|---|
| 接続の相手 | 別のASのルータ | 同じASの別のBGPルータ |
| AS_PATHの扱い | 渡すとき、先頭に自分の番号を足す | 足さずに、そのまま渡す |
| 主な役割 | 他のASと経路を交換する | 外から学んだ経路を、AS内のBGPルータに行き渡らせる |
大きなASには、外とつながるルータが何台もあります。ルータどうしが違う判断をすると、通信が途中で同じ場所を回り続ける恐れがあります。そのため、AS内のBGPルータは、外から学んだ経路をiBGPで共有します。
iBGPで受け取った経路は、ほかのiBGPの相手には、再び渡しません。そのため、AS内のBGPルータは、すべての組み合わせでiBGPの接続を結ぶのが基本です。台数が多いときは、ルートリフレクタという仕組みで、接続の数を減らせます。
iBGPは、AS内のつながりをつくる仕組みではありません。その役目は、OSPFなどのIGPが受け持ちます。
会社のネットワークとAWSを専用の回線でつなぐAWS Direct Connectでも、社内のルータとAWSのルータがBGPで経路を教え合います。
BGPハイジャックと対策
BGPハイジャックとは、ASが保有していないプレフィックスを広告して、通信を自分の方へ引き込むことです。設定の誤りでも、悪意でも起きます。
原因は、BGPの広告そのものに、広告したASが保有者かどうかを確かめる仕組みがないことです。受け取ったASは、届いた経路を、自分の方針で選ぶだけです。
偽の広告が経路として使われやすいのは、次の2つの場合です。1つは、優先度が同じで、AS_PATHが保有者の経路より短い場合です。もう1つは、保有者より細かいプレフィックスを広告した場合です。ルータは最長一致で経路を選ぶので、AS_PATHの長さにかかわらず、通信は細かい方へ流れます。
被害としては、通信がつながらなくなることや、別のASを経由させられることがあります。RFC 6811は、プレフィックスの誤った広告と、通信の途中に入り込む攻撃を、BGPへの既知の脅威として挙げています。
対策の例
1つ目の対策は、経路フィルタです。隣のASから受け取る経路を、そのASが広告してよいプレフィックスだけに絞ります。RFC 7454は、プレフィックスのフィルタを対策として挙げています。
2つ目の対策は、プレフィックスの保有者を検証するための仕組みであるRPKIです。プレフィックスの保有者が、どのASに発信を許可するかを、検証できる形で登録します。受け取る側は、この登録と、広告の発信元ASを照合できます。RPKIの仕組みの詳細は省略します。
練習問題(全7問)
正解:別の
BGPは、
正解:
AS_PATHは、
正解:64501 64500
別の
正解:
優先度が
正解:選択の
自分の
正解:同じ
iBGPは、
正解:ASが、
BGPハイジャックは、
選んでから「採点する」を押すと、解説つきで答え合わせができます。
参考にした資料
- RFC 4271 A Border Gateway Protocol 4 (BGP-4)(BGPの仕組み、AS_PATH、経路の選択)
- RFC 4274 BGP-4 Protocol Analysis(パスベクトル型のアルゴリズム)
- RFC 1930 Guidelines for creation, selection, and registration of an Autonomous System (AS)(ASの定義と、ASが必要な場合)
- RFC 6793 BGP Support for Four-Octet Autonomous System (AS) Number Space(32ビットのAS番号)
- RFC 5398 Autonomous System (AS) Number Reservation for Documentation Use(文書用のAS番号)
- RFC 7454 BGP Operations and Security(経路フィルタなどの対策)
- RFC 6480 An Infrastructure to Support Secure Internet Routing(RPKIの概要)
- RFC 6811 BGP Prefix Origin Validation(発信元ASの検証)
- RFC 4786 Operation of Anycast Services(Anycastと経路制御)
関連記事
おすすめの本 PR
ネットワークを初めて学ぶ人向けの入門書です。
![『[改訂新版]3分間ネットワーク基礎講座』の表紙](https://m.media-amazon.com/images/P/4774143731.09.MZZZZZZZ.jpg)
