EBGPとIBGP

BGP(Border Gateway Protocol)は、異なるAS(Autonomous System)間だけでなく、同じAS内で経路情報を交換することもできます。

本項では、EBGP(External BGP)とIBGP(Internal BGP)について説明します。

EBGP

BGPの内、異なるAS間で経路情報をやりとりする場合は、EBGPと呼ばれます。

AS64500の場合、BGPピアをAS64501で設定するとEBGPで接続する。

BGPピアの接続IPアドレスを設定する時にAS番号も設定しますが、自身と異なるAS番号であればEBGPとして動作します。

その後、UPDATEメッセージでAS番号やネクストホップなどのパス属性、宛先ネットワーク情報となるNLRI(Network Layer Reachability Information)を受信することで、ルーティングテーブルに経路が反映されます。

EBGPを使う時のBGPピア設定

EBGPを使う時のBGPピアの設定では、一般的に直結した先のIPアドレスが使われます。

AS間が203.0.113.1と2でEBGP接続されていたら、互いにBGPピアをそのIPアドレスで設定する。

EBGPは、AS間の接続で使われるため直結していることが基本で、直結した先のIPアドレスが一番接続が確保できるためです。

EBGPにおけるNEXT_HOP属性

EBGPでは、BGPピアへ経路情報を送信する時、ピアと最短で接続できる自身のインターフェースに設定されたIPアドレスをNEXT_HOP属性に設定します。

EBGPでは、自身が203.0.113.1で他ASと接続されていたら、NEXT_HOPをそのIPアドレスにする。

このため、BGPピア間が直結していれば、受信側でゲートウェイをそのIPアドレスにしてルーティングテーブルに反映します。これで、宛先経路へ通信ができるようになります。

EBGPにおけるAS_PATH属性

BGPはパスベクトル型(パス属性と方向で経路を決める)のため、OSPFのエリア内のようにネットワークの接続状態をすべて把握している訳ではありません。このことで、比較的ルーティングテーブルへの反映処理が軽くなり、世界中の経路を処理することも可能になっています。インターネット上に流れるすべての経路を、フルルートと呼びます。

このことは、多くの経路を扱う上でメリットですが、ネットワークの接続状態を把握していないため、経路がループしないようにする必要があります。

EBGPでは、他ASへUPDATEメッセージを送信する時、自身のAS番号をAS_PATH属性に追加して送信します。

ASを経由するたびに、AS_PATHには64500、64501と追加されていく。

もし、他ASから自身のAS番号がAS_PATH属性に入っているUPDATEメッセージを受信した場合、ループしていると判断してその経路は無視します。

IBGP

BGPの内、同じAS内で経路情報をやりとりする場合は、IBGPと呼ばれます。

自身と同じAS番号でBGPピアを設定すると、IBGPで接続する。

BGPピアのAS番号を、自身と同じAS番号で設定すればIBGPとして動作します。

その後、UPDATEメッセージでAS番号やネクストホップなどのパス属性、宛先ネットワーク情報となるNLRIを受信することで、ルーティングテーブルに経路が反映されます。

IBGPを使う時のBGPピア設定

IBGPを使う時のBGPピアの設定では、一般的にループバックアドレスが使われます。

IBGPでは、AS内すべてのルーターがBGPスピーカーとは限りません。途中にIGPだけ利用しているルーターもあります。また、BGPピア間の経路が冗長化されていることがあります。この場合、インターフェースのIPアドレスを接続先に設定していると、そのインターフェースがダウンするとBGPも切断されてしまいます。

物理インターフェースのIPアドレスをBGPピアに設定していると、他経由で通信できてもBGPピアに設定した物理インターフェースがダウンするとBGPが切断される。

ループバックアドレスを接続先にしていれば、1つのインターフェースがダウンしても、BGP接続性が保てます。

ループバックアドレスをBGPピアに設定していると、片方の物理インターフェースがダウンしてもBGPは切断されない。

これは、送信元のIPアドレスでも同様です。送信元のIPアドレスをループバックアドレスにしておけば、インターフェースがダウンしても接続性が保てます。

ループバックアドレスは、OSPFなどで到達できるようにしておく必要があります。

再帰的ルックアップ

EBGPで受信した時のNEXT_HOP属性は、AS間で接続するためのネクストホップを示します。このため、EBGPから受信した経路をIBGPのUPDTEメッセージで送信する時、NEXT_HOP属性は変えません。

EBGPで受信したNEXT_HOPは、IBGPで送信する時に変えない。

BGPの仕様上、NEXT_HOP属性が到達できないIPアドレスを示している場合、ルーティングテーブルに反映されません。このため、再帰的ルックアップなどでNEXT_HOP属性のIPアドレスまで到達できる必要があります。

【再帰的ルックアップの例】
No 宛先 ゲートウェイ プロトコル
1 192.0.2.0/24 203.0.113.1 BGP
2 203.0.113.1/32 198.51.100.1 OSPF

上記は、ルーターAのルーティングテーブルです。BGPで受信した192.0.2.0/24宛てのゲートウェイは、203.0.113.1になっています。しかし、ルーターAは直結されていないため、このゲートウェイに直接送信できません。

この時、再帰的ルックアップに対応していれば、No.2にある203.0.113.1/32宛てのゲートウェイが198.51.100.1というルーティングテーブルにしたがって、192.0.2.0/24宛ての通信を198.51.100.1に送信するようになります。

No.2は、OSPFなどでルーティングテーブルに反映されている必要があります。

next-hop self

何等かの理由で、EBGPで受信したNEXT_HOP属性の示すIPアドレスに到達できないこともあります。そのような時は、IBGPピアにUPDATEメッセージを送信する時、NEXT_HOP属性をBGPピアと接続する時に使っている自身のIPアドレスに書き換えるよう設定することもできます。

EBGPで受信したNEXT_HOPは、IBGPで送信する時に自身で使っているIPアドレスに変える。IBGPで接続されたルーターAは、書き換えられたNEXT_HOPを受信する。

これを、next-hop selfと言います。以下は、ルーターAのルーティングテーブルです。

【ルーターAのルーティングテーブル】
No 宛先 ゲートウェイ プロトコル
1 192.0.2.0/24 10.0.0.1 BGP

NEXT_HOP属性を書き換えることで、ルーティグテーブルではゲートウェイが到達可能な(BGPピアとして接続する時に使う)IPアドレスになるため、通信が可能になります。

IBGPにおけるAS_PATH属性

IBGPでは、BGPピアへUPDATEメッセージを送信する時、AS_PATH属性を変えません。

EBGPで受信したAS_PATHを、IBGPで送信する時に変えない。

自AS内で発生した経路の場合、AS_PATH属性は空になります。

もし、IBGPで受信した経路を他BGPピアに転送すると、経路がループしてしまう可能性があります。EBGPのように、AS_PATH属性に自身のAS番号があれば無視するといったことができないためです。

IBGPではAS_PATHが変わらないため、ループしているかわからない。

このため、IBGPではBGPピアから受信した経路情報は、他BGPピアに転送しないことになっています。この結果、AS内のBGPスピーカーはフルメッシュでBGPピアを設定することが基本的な考えになっています。

4台のBGPスピーカーがあれば、すべてフルメッシュでIBGP接続する。各BGPスピーカーは、IBGPで受信した経路を転送しない。

フルメッシュでBGPピアを設定しないと、他ASからの経路を受信できないBGPスピーカーが出てしまいます。例えば、上の図で①のIBGP接続がなければ、一番右のBGPスピーカーはAS番号64500からの経路を反映できません。

非トランジットASでのIGPとIBGPの使い分け

EBGPで受信した経路をOSPFに再配布すると、経路が多すぎて処理ができません。すでに説明したとおり、OSPFはBGPと比較して処理が重くなるためです。このため、IBGPで流す必要があります。

一般企業などで、ISPと2箇所で接続していたとします。2箇所以上でインターネットに接続できる環境を、マルチホームと言います。また、一般企業では他ASからの通信を他ASに転送する必要がありません。このようなインターネットの末端に位置するASを、非トランジットASと言います。

この場合、2箇所のどちらを経由するかの判断のため、OSPFなどで再配布すると処理が追いつきません。したがって、OSPFなどでBGPスピーカーへの経路制御を行い、IBGPでどちらのISPから送信するかの経路制御を行います。

AS内はOSPFでルーティングし、必要なところだけBGPスピーカーにしてIBGP接続する。

トランジットASでのIGPとIBGPの使い分け

ISPなどは、他ASからの通信を他ASに転送が必要な場合があります。このような、AS間の中継を行うASをトランジットASと言います。

この場合、他ASの経路を扱う必要があるすべてのルーターをBGPスピーカーにすることで、OSPFに再配布せずに経路情報が転送できます。

AS内はすべてBGPスピーカーにする。BGPピアと通信するためにOSPFを使う。

OSPFは、BGPピアと接続するための経路情報として使います。特に、IBGPではループバックアドレスを接続元と接続先にしてBGPパケットを送信します。このため、ループバックアドレスをOSPFなどでルーティングテーブルに載せることが重要です。

次のページBGPのパス属性一覧