■ ExternalとInternal
「もうやめてぇぇぇ。」
なんだね。急に。
いや、あの。
博士が前回、「安心しろネット君が「もうやめてぇ〜」というぐらいネタはある」といったからですね…。
ふむ、だから「もうやめて」と。
なるほど、了解した。
は、はぁ。
…何かね? 何か言いたげだが。
え、いや、そのですね。
何かコメントはないんですか?
ない。
はぅっ。
せっかくボケたのに、突っ込みなしですか。
世の中そんなものだ。
さて、BGPピアについて話したわけだ。
はい。
BGPを使用するルータ、つまりBGPスピーカは2種類存在する。
ExternalとInternalだ。
えくすたーなる、と、いんたーなる?
「外部」と「内部」?
うむ、その通り。EBGPとIBGPという。
IBGPは同じAS内のBGPピアとの接続、EBGPは異なるASのBGPピアとの接続のことだ。
[FigureRT18-01:IBGPとEBGP]
え? でも、BGPは他ASとの接続に使うんですよね?
なぜ同じAS内のルータとBGPで接続しなければならないんですか?
うむ、それはEBGPで取得したルート情報をAS内のBGPスピーカに伝えたい場合だな。
前に出てきたトランジットASなどの場合がそうだ。
[FigureRT16-04:トランジットAS]
トランジットAS…。
自分のAS内を他のAS宛てのパケットが通過するASですよね。
うむ、IBGPがないと、他のASにもう一方のASの情報が伝えられないのだよ。
[FigureRT18-02:IBGPの必要性]
ははぁ、なるほど。
トランジットAS以外でも、IBGPを利用して他ASの情報をAS内BGPスピーカに流すことはある。普通にIGPの代わりとしてBGPを使ったりすればそのBGPはIBGPとして動作することになるしな。
IGPの代わりとして、BGPを使うこともできるんですか?
もちろんできる。まぁ、普通はOSPFなどを使った方がより詳細なルーティングができるからそちらの方がいいがな。
ともかく、EBGPでもIBGPでもBGPピアの確立はほぼ同一だ。同じようにOPENを交換し、KEEPALIVEで到達性(生存)を確認する。
ほぼ?
ほぼってことは違いがあるんですか?
うむ。EBGPは直接接続したルータとしかBGPピアを確立できない、だがIBGPは直接接続していなくてもできる。
何故ですか?
BGPピアの確立の仕方は同じなんでしょう?
確立の方法は同じだが、EBGPの場合、EBGPピアまでのルートがないからなのだよ。
[FigureRT18-03:EBGPの場合]
EBGPによって、他AS内のルート情報がアドバタイズされる。
では、EBGPが動作し始める時点で、どうやって他ASの情報を手に入れるのだ?
…なるほど。
じゃ、事前にEBGPを動作しておいてルート情報を手に入れておいたり、スタティックルートを設定しておけばいいってことですか?
まぁ、そうなるな。
一方、IBGPの場合は、AS内ではIGPが動作しているので、直接接続していなくてもピアを確立することが可能だ。
[FigureRT18-04:IBGPの場合]
BGPピアへのルートがなければOPENメッセージが届かないってことですね。
■ IBGPスプリットホライズン
ルーティングには必ずルーティングループの影がつきまとう。
必ず、ですか。
必ずだ。
なので、もちろんBGPにもルーティングループの可能性はある。もちろんそれを防ぐ手段もな。
ははぁ、RIPのポイズンリバース、ホールドダウンタイマ、スプリットホライズンみたいなものですか?
うむ、IBGPではスプリットホライズンが使われる。
RIPのスプリットホライズンとは多少違う。まずIBGPでのルーティングループを見てもらおう。
[FigureRT18-05:IBGPのルーティングループ]
あ〜、見事にループが発生していますね。
うむ。これを防ぐのが、BGPスプリットホライズンだ。
[FigureRT18-06:BGPスプリットホライズン]
IBGPピアから受け取った情報を他のIBGPピアへ送らない?
そうだ、それがBGPスプリットホライズン、だ。
くどいようだが、IBGPでの話だからな。
IBGPでの話。
では、EBGPではどうなるんですか?
EBGPではAS_PATHアトリビュートによってルーティングループが排除される仕組みになっている。それは先のパスアトリビュートの説明で話そう。
えーえすぱすあとりびゅーと。
さて。このBGPスプリットホライズンでルーティングループを防止しているのだが、1つだけ特徴というか、欠点がある。
欠点?
それはアドバタイズを送るためにはすべてのIBGPスピーカに対しIBGPピアが確立されていなければならないということだ。
…なんか、あたり前ですけど?
確かにそうだ。だが、それはつまりIBGPピア同士はフルメッシュトポロジでなければならない、ということだな。
そう、ですね。
ピアになってないとアドバタイズが送られてきませんからね。
問題はそのフルメッシュだな。フルメッシュは台数が増えると急激に接続が増える。
OSPFのDRの時、例を出したな。
[FigureRT18-07:フルメッシュでのピア]
このように大幅に接続が増えてしまう。こうなると、ピアを確立するためにTCPコネクションの数が増え、帯域は喰うは、リソースは使うはで大変なことになってしまう。
なるほど、それは確かに欠点かもしれません。
解消する方法はないんですか?
うむ、ある。ルートリフレクタを使用することだ。これは先で説明する。
了解です。
■ BGP同期
さて、IBGPがらみのことをもう1つ話そう。
まずはどういうことが起きるか、を知ってもらおう。
[FigureRT18-08:IGPとBGPの関係]
あららら。パケットが届かない?
うむ、トランジットASなのに、他AS宛のパケットが通過しない。
このようなASをブラックホールASという。
ぶらっくほーるえーえす?
なんかかっちょいいですね。なんかの必殺技みたいで。
相変わらず筆舌に尽くし難い感性をしてるな、キミは。
ひつぜつにつくしがたい?
文章や言葉で十分に表現しきれないってことですよね、えへへ。
褒めてねぇ。
はうっ。
ともかく、原因はなんだかわかるか?
え、えっと。
ルータCが200.100.10.0を知らないこと、かな。
うむうむ。その通り。
つまり、ルータCが200.100.10.0を知るようにすればいいわけだ。
[FigureRT18-09:BGP同期]
BGP同期?
そうだ。つまりIBGPとIGPの両方で同じルートのアドバタイズを受けた時のみ、ルーティングテーブルに載せたりEBGPでアドバタイズするだ。
ははぁ。
例をみてもわかるとおり、IGPでアドバタイズを受け取るということは、途中のルータもそのルートを学習したことに他ならない。
なので、そこまで待つのだよ。
IGPで他ASへのルートをアドバタイズってできるんでしたっけ?
できる。ルート再配送が必要だがな。
例えば、OSPFだとLSA Type5がそうだな。
ルート再配送って、ルーティングプロトコルで得たルートを、他のプロトコルで通知することでしたたよね。
その通り。それは先の回でやる予定だ。
このBGP同期だが、しなくてもいい場合もある。例えば非トランジットASの場合がそうだ。
他のAS宛のパケットが通過しないのが非トランジットASでしたっけ。
同期しないってことは、他AS宛が通過できないってことだから…、そうかそれはそれでいいんですね。
うむ。
他にも中継するルータも含めてIBGPピアが確立されているならば、同期は必要ない。
[FigureRT18-10:すべてIBGPピアの場合]
あ〜、なるほど。
CiscoIOSではデフォルトではBGP同期は無効なので、ブラックホールAS化を同期で防ぐ場合は次のコマンドを行う。
- Router(config-router)#synchronization
しんくろないぜーしょん。
シンクロって同期、ですよね。
そういうことだ。
さて、今回はここまでにしておこう。
了解です。
まだまだBGPは続くぞ。
はい。
30分間ネットワーキングでした〜♪
- 確立できない
-
原則的に、です。
確立する場合は「EBGPマルチホップ」機能が必要です。
- 大幅に
- (n × (n - 1)) / 2 必要。
- ルートリフレクタ
- [Route Reflecter]
- ハイパーネット君の今日のポイント
-
- BGPにはAS内のBGP(IBGP)とAS間のBGP(EBGP)がある。
- EBGPは直接接続したスピーカ間でしかピアを確立できない。
- IBGPではピアから受け取った情報を他のピアへ送らないことによりルーティングループを防ぐ。
- IBGPではBGP同期が必要。
- IBGPとIGPの両方で同じルートのアドバタイズを受けた時のみ、ルーティングテーブルに載せたり他ASでアドバタイズすることができる。