EBGPとIBGP
BGP(Border Gateway Protocol)は、異なるAS(Autonomous System)間だけでなく、同じAS内で経路情報を交換することもできます。
本項では、EBGP(External BGP)とIBGP(Internal BGP)について説明します。
EBGP
BGPの内、異なるAS間で経路情報をやりとりする場合は、EBGPと呼ばれます。
BGPピアの接続IPアドレスを設定する時にAS番号も設定しますが、自身と異なるAS番号であればEBGPとして動作します。
その後、UPDATEメッセージでAS番号やネクストホップなどのパス属性、宛先ネットワーク情報となるNLRI(Network Layer Reachability Information)を受信することで、ルーティングテーブルに経路が反映されます。
EBGPを使う時のBGPピア設定
EBGPを使う時のBGPピアの設定では、一般的に直結した先のIPアドレスが使われます。
EBGPは、AS間の接続で使われるため直結していることが基本で、直結した先のIPアドレスが一番接続が確保できるためです。
EBGPにおけるNEXT_HOP属性
EBGPでは、BGPピアへ経路情報を送信する時、ピアと最短で接続できる自身のインターフェースに設定されたIPアドレスをNEXT_HOP属性に設定します。
このため、BGPピア間が直結していれば、受信側でゲートウェイをそのIPアドレスにしてルーティングテーブルに反映します。これで、宛先経路へ通信ができるようになります。
EBGPにおけるAS_PATH属性
BGPはパスベクトル型(パス属性と方向で経路を決める)のため、OSPFのエリア内のようにネットワークの接続状態をすべて把握している訳ではありません。このことで、比較的ルーティングテーブルへの反映処理が軽くなり、世界中の経路を処理することも可能になっています。インターネット上に流れるすべての経路を、フルルートと呼びます。
このことは、多くの経路を扱う上でメリットですが、ネットワークの接続状態を把握していないため、経路がループしないようにする必要があります。
EBGPでは、他ASへUPDATEメッセージを送信する時、自身のAS番号をAS_PATH属性に追加して送信します。
もし、他ASから自身のAS番号がAS_PATH属性に入っているUPDATEメッセージを受信した場合、ループしていると判断してその経路は無視します。
IBGP
BGPの内、同じAS内で経路情報をやりとりする場合は、IBGPと呼ばれます。
BGPピアのAS番号を、自身と同じAS番号で設定すればIBGPとして動作します。
その後、UPDATEメッセージでAS番号やネクストホップなどのパス属性、宛先ネットワーク情報となるNLRIを受信することで、ルーティングテーブルに経路が反映されます。
IBGPを使う時のBGPピア設定
IBGPを使う時のBGPピアの設定では、一般的にループバックアドレスが使われます。
IBGPでは、AS内すべてのルーターがBGPスピーカーとは限りません。途中にIGPだけ利用しているルーターもあります。また、BGPピア間の経路が冗長化されていることがあります。この場合、インターフェースのIPアドレスを接続先に設定していると、そのインターフェースがダウンするとBGPも切断されてしまいます。
ループバックアドレスを接続先にしていれば、1つのインターフェースがダウンしても、BGP接続性が保てます。
これは、送信元のIPアドレスでも同様です。送信元のIPアドレスをループバックアドレスにしておけば、インターフェースがダウンしても接続性が保てます。
ループバックアドレスは、OSPFなどで到達できるようにしておく必要があります。
再帰的ルックアップ
EBGPで受信した時のNEXT_HOP属性は、AS間で接続するためのネクストホップを示します。このため、EBGPから受信した経路をIBGPのUPDTEメッセージで送信する時、NEXT_HOP属性は変えません。
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アドレスに書き換えるよう設定することもできます。
これを、next-hop selfと言います。以下は、ルーター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属性を変えません。
自AS内で発生した経路の場合、AS_PATH属性は空になります。
もし、IBGPで受信した経路を他BGPピアに転送すると、経路がループしてしまう可能性があります。EBGPのように、AS_PATH属性に自身のAS番号があれば無視するといったことができないためです。
このため、IBGPではBGPピアから受信した経路情報は、他BGPピアに転送しないことになっています。この結果、AS内のBGPスピーカーはフルメッシュでBGPピアを設定することが基本的な考えになっています。
フルメッシュで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でのIGPとIBGPの使い分け
ISPなどは、他ASからの通信を他ASに転送が必要な場合があります。このような、AS間の中継を行うASをトランジットASと言います。
この場合、他ASの経路を扱う必要があるすべてのルーターをBGPスピーカーにすることで、OSPFに再配布せずに経路情報が転送できます。
OSPFは、BGPピアと接続するための経路情報として使います。特に、IBGPではループバックアドレスを接続元と接続先にしてBGPパケットを送信します。このため、ループバックアドレスをOSPFなどでルーティングテーブルに載せることが重要です。
次のページ「BGPのパス属性一覧」