他社ネットワークと接続するときにBGPを使うことが多い理由

BGPBGP

はじめに

BGPはインターネットのネットワークだけではなく、一般企業のネットワークが他社のネットワークやデータセンターと接続するシーンでもよく利用されます。

なぜBGPがよく使われるのか当方の考えを交えつつ説明します。

ダイナミックルーティングとBGPについて

ダイナミックルーティングは大きく2種類に分別できます。IGP(Interior Gateway Protocol)EGP(Exterior Gateway Protocol)です。IGPは「RIP」や「OPSF」や「EIGRP」などでAS(自律システム)内で使用します。EGPは「EGP」と「BGP」のことでAS(自律システム)間のルーティング目的で使用されます。
※EGPと言うルーティングプロトコルもありますが、現在EGPと言えばBGPと認知するのが一般的です。

どちらもダイナミックルーティングプロトコルですが、IGPはLAN内で使用され、BGPは別の組織と接続する際に使用することが一般的です。(インターネットISP事業者間接続、エンタープライズにおける自社ネットワークと他社ネットワーク間接続、等々)

BGPについて

BGPはPrefix(ルート情報)ベースのルーティングプロトコルです。自ルータで生成したルート情報や他ルータから受け取ったルート情報を別のBGPルータに転送します。ルート情報を受け取ったBGPルータはそのルート情報をもとにルーティングテーブルを作成します。考え方はRIP等のディスタンスベクタ型と同じです。

このBGPの基本動作は他組織との接続時に都合よく働いてくれます。理由は後述しますが、その前にIGPのOSPFで他社間接続を行うとどういう懸念が出るか考えてみます。

OSPFについて

OSPFはリンクステート型です。例えば自社のOSPFルータと他社のOSPFルータ間でエリアを張り、それぞれのOSPFルータが持つネットワーク(自身のL3インタフェース)をOSPFエリアに参加させます。その後、各ルータは共通のリンクステートデータベース(以下、LSDB)を作成し、LSDBからSPFアルゴリズムによって自身を頂点としたパスツリーを作成しルーティングテーブルを作ります。

つまり、自社ルータも他社ルータもお互いのネットワーク情報をLSDBで把握しながらルーティングを作成する過程を辿ります。これは各ルータ同士が強い関係で結ばれるということです。

強い関係の場合、万が一、他社ルータがLSDBを短期間のうち大量に更新(アップデート)を繰り返すような事象が発生するとどうでしょうか。当然、エリアに所属している自社のOSPFルータのLSDBも更新を繰り返します。その結果、ルータに負荷がかかり不安定な状態や最悪サービス断につながる可能性が出てきます。(LSDBのアップデートは正しく組まれているネットワークでは通常起こりえません。ただし、管理ができない他社のネットワークがどうなっているか分からないの為そもそも信頼することを前提とするのは良くないと考えます。またOSのバグが起因で事象が発生することも考えられます。)

上記の懸念がある以上、信頼できないネットワークと接続する場合はOSPFを避けた方が賢明と考えられます。

なぜBGP?

その点、BGPの場合は各ルータで共通のデータベースを保持するようなことはなく、先述の通りPrefixの送信と受信を経て双方のルータでルーティングテーブルが形成されます。更に、必要なPrefixだけ受信し、不要なPrefixは破棄する、または広報しない、と言ったルートフィルタリングという自己防衛をとることが可能です。(OSPFもルートフィルタリングができないことはありませんが制限が厳しく本質的な自己防衛は難しい場合がある)

また、自身のルータが送信するPrefixに様々なパラメータを付与することで、相手のBGPルータがそのパラメータを基に経路制御を行わせることができます。つまり受動的なルータとして提供されている場合、ユーザ側で経路制御を好きなよう設計することができます。

先に説明したルートフィルタリング柔軟な経路制御があることからインターネットのような大規模環境の他に、他組織と接続する際にもBGPは頻繁に使用されます

次回はBGPを使った経路制御の方法と具体的な設定方法について記事にします。

BGPBGP