【NW検証】BGP検証 HSRPを使用した冗長について

BGP

はじめに

この検証を実施するに至った経緯ですが、「eBGPピアを確立したルータは、HSRPで冗長できるんだっけ?」という疑問がきっかけです。CCNAやCCNPで扱うポピュラーな技術ですが、BGPピアを行うルータをHSRPで冗長する構成が問題に出ることもなく、調査してもそれらしい情報もでてこなかったので、それなら検証してみるかー!となった次第です。

結果から申し上げると、「BGPピアを行うルータの両方でHSRPで冗長している場合、BGPピアを確立できない」ということになります。両方?ということは、片方はOK?ということになりますが、検証してみたところ片方だけなら大丈夫みたいですね。(その話は別の場所で)

※とはいえ、今回はGNS3で検証しています。検証できるルータの種類には限りもありますので、実装する予定がある方は是非とも実際に使用する機器で検証してみてください。結果は保証はできないです。

構築環境

GNS3で検証をしています。また、ルータはCisco2600シリーズのIOSを使用して検証をしています。

構成図

構成と検証内容について

・PC1とPC2はルーティングを入れないと疎通できないことを想定しています(デフォルトルートは使用しない)。疎通できない状態からR1とR2、R3とR4にBGP設定を入れることで、R1とR2は192.168.20.0/24を学習し、R3とR4は192.168.0.0/24を学習します。結果、それぞれのルータにルーティングを入れなくてもPC同士が疎通できるようになる想定。
・R1とR2およびR3とR4はそれぞれHSRPを使用して冗長しています。
 R1とR2はPC1にとってデフォルトルートゲートウェイになり、R3とR4はPC2のデフォルトゲートウェイになります。

config

 HSRPおよびBGPに必要なconfigを入れます。本検証のポイントは「BGPのneighborで指定した対抗のIPアドレスが、HSRPで冗長されたVIPである」ということです。
 R1のBGP設定では「neighbor 192.168.10.110 remote-as 65001」と設定しています。これはR3とR4のVIPとなります。
 一方で、R3のBGP設定では「neighbor 192.168.10.10 remote-as 65000」と設定していて、R1とR2のVIPを指定しています。
 果たして疎通できるのか?というところを見ます。

R1

R2

R3

R4

PC1-> PC2で pingを実行してみる

先に結論を書いていたので分かっていることでしたが、疎通はできないです。

原因は何?

原因は、BGPピアが確立できないからです。ではなぜBGPピアが確立できないのか。ちなみに、「show ip bgp 」の結果を見た結果は以下。

確かにピアを確立できていないです…。

R1 -> R3のpingはできるのに、どうしてBGPピアは確立できないのでしょう?

debug してみる

「できない!?なんで?」と黙っていてもコンソールには何も情報が出てきません。

サーバーでもCisco機器でも、原因がわからないならlogを見ることでその原因らしきものが見えてきます。「debug ip bgp」で出力を行います。

ちなみに、しばらく出力を見守っていても、このメッセージが永遠に出力され続けます。程よいタイミングで「no debug ip bgp」を実行しましょう。R3でもdebugをしてみます。

debug結果を見る

R1のログを見る限り、neighborのIPアドレスである192.168.10.110にopenメッセージを送っているように見えます。ただし、送信元(local address)が192.168.10.1となっています。R3のBGP設定ではneighborのIPアドレスは192.168.10.10(R1のVIP)となっているので、R3からすると知らないアドレスからピアを確立しに来ていることになります。

R3のログも同様に、neighborのIPアドレスである192.168.10.10へopenメッセージを送っているように見えますが、送信元のIPアドレスがVIPではなく192.168.10.101から送信しています。

つまり、ピアが確立できないのはBGPメッセージを送る際のIPアドレスは出力するインターフェースのIPアドレスになることが原因ということになります。

送信元のIPアドレスは変えられない?

「loopbackインターフェースのIPアドレスをBGPメッセージの送信元IPアドレスにしたい。その時の設定方法は…」という話は結構ポピュラーです。「もしかしてVIPにできる?」と思いコマンドを漁ってみました。

残念ながら今回検証した機器ではそれらしき選択肢はなさそうです。(他のバージョンならいける?わかりませんが…。)

片方が冗長している場合について

今回はHSRPで冗長しようとするとどうなるかを検証してみました。「できなかったけど、どうして?」ということを考えると、「そもそもBGPは何を見てピアを確立しようとするのか?」といった基本的な部分を再認識できました。個人的には検証の楽しみってこういうところにあるなーとおもったりします。

今回の構成で、R1、R2はそのまま冗長させておき、R4をなくしてR3だけにした場合はどうなるのでしょうか。こちらも検証しましたが、思った以上に長くなったので別でまとめることにします。

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