BGP

【図解/初心者向け】BGPの仕組みと設計 ~経路広告(アドバタイズ),冗長/ループ回避,他RPとの比較~

BGP の特徴と仕組み

インターネットと BGP

BGP とは、Border Gateway Protocol の略で、主に NW 管理組織 (ISP や企業等) 間でのルート情報交換を想定して設計された動的ルーティングプロトコルです。

RIP/OSPF/EIGRP のような IGP が主に 1 つの NW 管理組織内で設計・運用されるのに対し、BGP は主に複数の NW 管理組織に跨がって設計・運用されることが多いです。

例えばインターネットを形成する ISP 同士は一般に BGP でグローバル IP のルート情報をアドバタイズします。

アドバタイズとは、動的ルーティングによりルート情報を伝えることです。日本語では広報や広告と呼ばれたりします。

AS : Autonomous System (自律システム) と経路冗長、ループ回避

先程の図で『AS 番号』という言葉が出てきます。AS とは BGP で使われる用語であり、NW 管理組織の単位です。

例えばぷららや BIGLOBE 等の ISP もそれぞれが 1 つの AS となります。BGP では各 AS が AS 番号により一意に識別されることを前提に動いています。

AS 内でルート情報交換するための BGP を iBGPAS 間でルート情報交換するための BGP を eBGP と呼びます。そして、eBGP の場合はルート情報を広報する際に AS 番号を付与します。

BGP で広報されるルートには、そのルートに付随する情報が含まれます。この付随する情報を『属性 (Attribute)』と呼びます。AS 番号を付与するのも『AS_PATH』という属性に付けられます。

この仕組みにより、経由する AS が少ない方を正常系として利用しつつ、多い方はバックアップルートとして保持しておくことができます。つまり経路の冗長化を実現することができます。

また、自分の AS が含まれている場合はそのルートだけ受け取らないことによりループ回避にも役立ちます。

AS 番号はグローバル IP アドレスと同様、IANA の管理のもと、各地域の管理組織 (日本だと JPNIC) に申請することで割り当ててもらうことができます。一意性を担保するためです。

なので日本の ISP や企業がインターネット上で BGP によるグローバル IP のルート情報を交換したい場合は、JPNIC に AS 番号割り当ての申請をする (そして承認される) 必要があります。

どの組織がどの AS 番号を割り当てられているかは、以下の JPNIC のサイト等で確認できます。

https://www.nic.ad.jp/ja/ip/as-numbers.txt

例えば IIJ の AS 番号は 2497、BIGLOBE の AS 番号は 2518 、NTT西日本の AS 番号は 17522, NTT 東日本の AS 番号は 17933 です。

AS 番号は元々は 2 Bytes (1~65535) でしたが、利用組織増加に伴い、2007 年からは 4 Bytes に拡張されました (RFC 4893, RFC 6793)。

他のルーティングプロトコルとの比較

具体的な比較は以下の通りです。

BGPRIP/OSPF/EIGRP
伝達先- 主にWAN- 主にLAN
広報する
NWアドレス
- グローバルアドレス
- ローカルアドレス
- 主にローカルアドレス
NW設計- 異なる AS 間で合意を取りながら設計- 同一の管理組織内で設計
ルート制御- 送信側も受信側も柔軟な制御が可能- バリエーションはBGPより少ないが可能

BGP では異なる AS 間でルートを交換し合うので、一般的には管理者が異なりますし、その場合は当然ネットワーク設計も互いに合意を取りながら進めていきます。

それに関連する特筆すべき点として、ルート制御があります。BGP では各ルート情報に対して (例えば 203.0.113.0/24 のルートに対して) 様々な属性を付けることができ、送信側も受信側もその属性を使って柔軟なルート制御が可能です。

例えば送信側は前述の AS_PATH 以外にも Metric (正確には MED)  等の属性を使ってネイバー (ピア) に「正常時はルートBではなくルートAを使ってほしい」と暗に示すことができます。受信側で特に設定をしていない場合は送信側の思惑通りの経路が使われます。

ただし、受信側ではルート受信時に LocalPreference 等の属性の設定をすることで相手の意図に関わらず「ルートBを優先して使う」というのを決めることもできます。

属性の優先順位は予め決まっており、例えば図の下段の例のように、MED よりも Local Preference が優先されます。(当然、ISP#1 設計担当者にはそのような設計にすることは伝えておくべきでしょう。ビジネスマナーとして。)

その他の利用シーン、設計パターン

設計パターン 1. ISP のマルチホーム

企業が AS 番号を申請し、自身の保有するグローバルアドレスを広報することで、ISP のマルチホームを構成することができます。

さらに ISP からデフォルトルートをもらえば、インターネットへのアクセスも冗長化できます。

この設計パターンでの注意点は『ISP からもらったデフォルトルートを、もう一方の ISP に伝えてしまわないようにする』ことです。(ISP 側でも防御策を取っていると思いますが、、、)

設計パターン 2. データセンタへのルート冗長化

企業がデータセンタを借り、データセンタへのルートを冗長化するときに、BGP を使うことができます。

上図のように、プライベート IP をBGP で広報することも十分あり得ます。インターネットではなくローカルネットワーク内で BGP を使う場合は AS 番号の申請は不要で、プライベート AS 番号を使うことができます(プライベート IP アドレスの AS 番号版みたいなもの)。

プライベート AS は 64512 ~ 65535 が使えます (上図のように 65000 台が分かり易くてよく使われます)。

NW 管理組織や構築業者が同じであれば OSPF による冗長化でも構いませんが、もし異なるのであれば、個人的には BGP を使うのが望ましいと考えます。

設計パターン 3. エクスプレスルート

Office365 等 Azure サービスを企業が使う場合、Microsoft から企業への直パスルートを BGP で受けとることができます。

この直パスルートをエクスプレスルートと呼びます。

これを使うことで、インターネットを介さない、低遅延・高性能のサービス利用が可能となります。ただし、全ての ISP でサービス提供しているわけではないので、使いたい場合は ISP への事前確認が必要です。

下記サイトによると、Microsoft 側の AS 番号は 12076 を使うことになっています。

https://docs.microsoft.com/ja-jp/azure/expressroute/expressroute-routing

コメント

タイトルとURLをコピーしました