ITの教科書検索
入門・発展ページ読了 約12分

BGPとは ― 自律システム間の経路制御

BGPとは、自律システム(AS)どうしが経路を教え合うプロトコルで、インターネットの組織間の経路はほぼBGPで決まります。AS_PATHで経路を選ぶ仕組みとBGPハイジャックの対策も解説。

目次
  1. BGPとは、ASどうしが経路を教え合うプロトコル
  2. 自律システム(AS)とAS番号とは
  3. IGPとEGPの違い:AS内とAS間
  4. BGPが運ぶ情報:プレフィックスとAS_PATH
  5. 経路が広がり、短い経路が選ばれる流れ
  6. 経路選択はポリシーで決まる
  7. eBGPとiBGPの違い
  8. BGPハイジャックと対策
  9. 練習問題
  10. 参考にした資料

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(OSPFなど)EGP(BGP)
使う場所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本を選び、回線が切れたときに切り替えるまでを追います。

STEP 1 / 6
AS64500発信元AS64501経由AS64502経由AS64504経由AS64503受け手広告: 64500広告: 64500
AS64503 が持つ 203.0.113.0/24 への経路(左が AS_PATH)
まだ経路が届いていません
ステップ1:発信元が経路を広告する
AS64500は、自分のWebサーバがある203.0.113.0/24への経路を、隣のAS64501とAS64502に知らせます。この知らせを広告と呼びます。広告には、経路が通ってきたASの番号の列を付けます。この列がAS_PATHで、いまは自分の64500だけです。

広告が渡るたびに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です。

比べる点eBGPiBGP
接続の相手別の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は、届いた経路を、自分の方針で選ぶだけです。

AS64500203.0.113.0/24保有者AS64503受け手AS64510203.0.113.0/24?保有者ではない広告: 64500広告: 64510RPKIの登録64500だけが発信できる照合する
AS64503には、同じ203.0.113.0/24の広告が、保有者のAS64500と、保有していないAS64510の両方から届きます。BGPの広告だけでは、どちらが保有者かを確かめられません。RPKIの登録と照合すると、AS64510の広告を無効と判定できます。

偽の広告が経路として使われやすいのは、次の2つの場合です。1つは、優先度が同じで、AS_PATHが保有者の経路より短い場合です。もう1つは、保有者より細かいプレフィックスを広告した場合です。ルータは最長一致で経路を選ぶので、AS_PATHの長さにかかわらず、通信は細かい方へ流れます。

被害としては、通信がつながらなくなることや、別のASを経由させられることがあります。RFC 6811は、プレフィックスの誤った広告と、通信の途中に入り込む攻撃を、BGPへの既知の脅威として挙げています。

対策の例

1つ目の対策は、経路フィルタです。隣のASから受け取る経路を、そのASが広告してよいプレフィックスだけに絞ります。RFC 7454は、プレフィックスのフィルタを対策として挙げています。

2つ目の対策は、プレフィックスの保有者を検証するための仕組みであるRPKIです。プレフィックスの保有者が、どのASに発信を許可するかを、検証できる形で登録します。受け取る側は、この登録と、広告の発信元ASを照合できます。RPKIの仕組みの詳細は省略します。

練習問題(全7問)

Q1BGPが経路情報を交換する相手として、最も適切なものはどれ?
Q2BGPの経路に付くAS_PATHは、何を表している?
Q3AS64501が、AS_PATHが「64500」の経路を、隣のAS64503に渡す。AS64503に届くAS_PATHはどれ?
Q4優先度に差のない2本の経路がある。AS_PATHが「64501 64500」の経路と、「64504 64502 64500」の経路のとき、選ばれるのはどちら?
Q5BGPのルータが、AS_PATHに自分のAS番号が入っている経路を受け取った。どう扱う?
Q6iBGPの説明として正しいものはどれ?
Q7BGPハイジャックの説明として正しいものはどれ?

選んでから「採点する」を押すと、解説つきで答え合わせができます。

参考にした資料

関連記事

おすすめの本 PR

ネットワークを初めて学ぶ人向けの入門書です。

目的別の本の選び方を見る

ネットワークの記事を探す