30 Minutes NetWorking
No.RT18

30Minutes NetWorking

BSCI

第18回BGP4(3) EBGPとIBGP

■ ExternalとInternal

ハイパーネット助手

もうやめてぇぇぇ。」

スーパーインター博士

なんだね。急に。

ハイパーネット助手

いや、あの。
博士が前回、「安心しろネット君が「もうやめてぇ〜」というぐらいネタはある」といったからですね…。

スーパーインター博士

ふむ、だから「もうやめて」と。
なるほど、了解した。

ハイパーネット助手

は、はぁ。

スーパーインター博士

…何かね? 何か言いたげだが。

ハイパーネット助手

え、いや、そのですね。
何かコメントはないんですか?

スーパーインター博士

ない

ハイパーネット助手

はぅっ。
せっかくボケたのに、突っ込みなしですか。

スーパーインター博士

世の中そんなものだ
さて、BGPピアについて話したわけだ。

ハイパーネット助手

はい。

スーパーインター博士

BGPを使用するルータ、つまりBGPスピーカは2種類存在する。
ExternalInternalだ。

ハイパーネット助手

えくすたーなる、と、いんたーなる?
「外部」と「内部」?

スーパーインター博士

うむ、その通り。EBGPIBGPという。
IBGPは同じAS内のBGPピアとの接続EBGPは異なるASのBGPピアとの接続のことだ。

IBGPとEBGP

[FigureRT18-01:IBGPとEBGP]

ハイパーネット助手

え? でも、BGPは他ASとの接続に使うんですよね?
なぜ同じAS内のルータとBGPで接続しなければならないんですか?

スーパーインター博士

うむ、それはEBGPで取得したルート情報をAS内のBGPスピーカに伝えたい場合だな。
前に出てきたトランジットASなどの場合がそうだ。

トランジット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ピアまでのルートがないからなのだよ。

EBGPの場合

[FigureRT18-03:EBGPの場合]

スーパーインター博士

EBGPによって、他AS内のルート情報がアドバタイズされる。
では、EBGPが動作し始める時点で、どうやって他ASの情報を手に入れるのだ?

ハイパーネット助手

…なるほど。
じゃ、事前にEBGPを動作しておいてルート情報を手に入れておいたり、スタティックルートを設定しておけばいいってことですか?

スーパーインター博士

まぁ、そうなるな。
一方、IBGPの場合は、AS内ではIGPが動作しているので、直接接続していなくてもピアを確立することが可能だ。

IBGPの場合

[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ピアが確立されているならば、同期は必要ない。

すべて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でアドバタイズすることができる。

30 Minutes NetWorking No.RT18

管理人:aji-ssz(at)selene.is.dream.jp