■ EGP
前回からBGP4について説明しているわけだが。
前回は、BGPというよりもASの話でしたけどね。
まぁ、確かにそうだったな。
だがASの意味がわかってないと、EGPsの話なんかしても無駄だからな。
それはそうですね。
さて、そのAS間用ルーティングプロトコルであるBGP4だが、前身というべきプロトコルが存在する。
前身?
うむ、EGPだ。 ▼ link
RFC904っていうと、1984年4月。ずいぶん古いプロトコルですね。
うむ、現在ではほとんど使われていない歴史的なプロトコルという奴だ。
ははぁ。
ちなみにCCNPにはまったく出ないが、せっかくだからちょっと紹介する。
せっかくだから?
せっかくだから、だ。
EGPはIPを直接利用するプロトコルだ。
IPを直接利用する?
うむ、ICMPのように、IPヘッダの次にEGPメッセージがつく形だな。
[FigureRT17-01:EGPパケット]
…ということは、コネクション・レスってことですか?
そうだ。IPを直接利用することにより、TCPのようなオーバヘッドを無くすことができるが、信頼性が低い。
つまりパケットを失う可能性があるということだな。これはインターネットワークの規模が大きくなると致命的になる。
何故です?
OSPFやEIGRPもIPを直接使いますよね?そちらはいいんですか?
ネットワークのサイズが違うのだよ。インターネットワークが巨大になると、送受信するアドバタイズメッセージも大きくなる。パケットが失われると、それをもう1度送りなおさなければならなくなる。これは結構な手間になってしまう。
TCPを使えば、セグメントに分割して、失われたセグメントだけ送りなおせばいいですから負荷が少ないですよね。
うむ、そういうことだ。
さらに、EGPはホップ数をメトリックとしたディスタンスベクタ型ルーティングプロトコルだ。
へへぇ、RIPみたいですね。
そうだな。もうすでにRIPも「歴史的プロトコル」扱いされているしな。
正直言って、ホップ数というメトリックは柔軟性に欠ける。時代に適応していないといってもいい。
そうですねぇ、途中の帯域も、優先度も、信頼性もまったく関係なし単に中継ルータ数だけで判断ですものねぇ。
うむ。RIPはまだIGPだからその欠点が致命的にならないこともあるが、EGPは大規模用のルーティングプロトコルだ。ディスタンスベクタとホップ数という単純な仕組みでは限界がある。
ですね。だからBGPなんですか?
まぁ、そういうことだ。EGPの仕組みについてこれから延々と説明しようと思ったが、手間がかかるわりにCCNPに関係ないので、その機会は先に譲ってBGPの話をしよう。
了解です。
■ BGPの特徴
さて、BGPの特徴だが。
まずEGPとからめて言うとBGPはTCPを使用する。ポート番号は179だ。
信頼性のあるアドバタイズってことですね。
なにぶん大規模だからな。
そして、パスベクタ型という方式を使う。
ぱすべくた?
「パス」は「経路」。「ベクタ」は「方向」だから、「経路方向式」?
簡単に言うと中継したASの数をメトリックとするのだ。
[FigureRT17-02:パスベクタ]
ホップ数をルータの数じゃなくて、ASの数にした感じですね。
でも、こういうのはさっき単純な仕組みだ、とおっしゃってた気がするんですけど?
うむ。なのでBGPでは経由AS以外にもメトリックで使用できる。
かなり柔軟なルーティングが可能なのだ。ちなみにBGPではメトリックという言葉ではなくパスアトリビュートと表現する。
ぱすあとりびゅーと?
アトリビュートは「属性」だから、「パス属性」?
そうだ、パスが持つ「属性」によりベストパスを選択するということだ。
先ほどの経由AS数もこのパスアトリビュートの1つになる。これは先で詳しく話す。
メトリック、じゃなくて「属性」なんですね。了解です。
他にもBGPは最近のルーティングプロトコルのお約束として、CIDRに対応したクラスレスルーティングが可能だ。
ネット君、クラスレスなルーティングと言えば?
言えば?
経路集約ですか?
その通り。BGPは経路集約もサポートしている。これも先で説明する。
はい。
他にもいくつか特徴はあるが。それはおいおい説明していくとして。
覚えておいて欲しい用語で、BGPスピーカがある。BGPを実行しているルータのことだ。
びーじーぴーすぴーか。
これはルータだけに限らない。BGPを実行するデバイスすべてをBGPスピーカという。
あぁ、そうそう。CiscoIOSでBGPを実行するコマンドは以下の通り。
- Router(config)#router bgp AS-number
■ BGPピア
実際にBGPの動作の説明を始めるが。
BGPが情報を交換する隣接ルータのことをBGPピアという。
びーじーぴーぴあ? ピアって「ピアツーピア」の「ピア」ですか?
「ネイバー」でなくて?
「ピアツーピア」の「ピア」だ。
あぁ、「BGPネイバー」と表現することもあるが、一般的には「BGPピア」だな。
ははぁ、そうなんですか。
この相手はOSPFやEIGRPのような自動検出はおこなわないので、相手を指定する必要がある。
CiscoIOSでの設定はこうだ。
- Router(config-router)#neighbor IP-address remote-as AS-number
BGPピアを確立する手順を説明しよう。
[FigureRT17-03:BGPピアの確立]
TCPだから、まずスリーウェイハンドシェイクからなんですね。
そうだ、TCPだからな。ムービー内でもいっている通り、OPENやKEEPALIVE、UPDATEメッセージの後にはTCPの確認応答が行われている。ムービーでは省略したがな。
で、その後OPENメッセージ、と。
うむうむ。BGPで交換されるメッセージは4種類存在する。
タイプ | 名前 | 説明 |
---|---|---|
1 | OPEN | BGPスピーカ間でピアを確立し、情報交換を可能にする。 |
2 | UPDATE | ルーティング情報の更新。 |
3 | NOTIFICATION | BGPピアの切断。エラー条件が検出された場合使う。 |
4 | KEEPALIVE | 生存確認。 |
[TableRT17-01:BGPメッセージ]
最初に交換するOPENメッセージには、自分のAS番号、IPアドレス、使用しているBGPのバージョンなどが入っている。それと、KEEPALIVEの交換時間もこのOPENのやりとりで決定される。
ふむふむ。
で、OPEN後にUPDATEですね。
UPDATEは経路情報だ。最初のUPDATEの交換はともかくとして、UPDATEでは変更箇所のみを送る。
OSPFやEIGRPみたいですね。
そうだな、EGPはすべての経路を送ってしまうが、BGPは変更箇所のみだ。
UPDATEには、取り消し経路、パスアトリビュート、NLRIなどが含まれている。
えぬえるあーるあい?
ネットワーク到達可能性情報と訳される。つまりアドバタイズするネットワークのことだな。
BGPでは各UPDATEにつき1ルートだけアドバタイズされる。
ははぁ。それと取り消し経路ってなんですか?
その名の通り、使用不能となりルーティングテーブルから削除されるルートのことだ。
そのままですね。
うむ。
さて、今回はここまでにしておこう。
はい。微妙に短いですが。
ふふふ。BGPは話すことが多いからな。お楽しみはこれからだよ。
そうなんですか?
うむ。
安心しろネット君が「もうやめてぇ〜」というぐらいネタはある。
うわぁ、大変そうだ。
ま、楽しみにしておけ。
ではまた次回。
了解。
30分間ネットワーキングでした〜♪
- EGP
-
[Exterior Gateway Protocol]
RFC904で定義。EGPsと混同しないよう注意。
- ホップ数
- EGPでは8ビット、254ホップまでカウントします。(255は到達不能)
- パスベクタ型
-
[Path-Vector]
ディスタンスベクタを拡張したルーティング方式。
- パスアトリビュート
- [Path Attributes]
- BGPピア
-
[BGP Peer]
相手のルータのことを「ピアルータ」とも言う。
- 一般的には
-
「ピア」の方が「確固たる相手」というイメージがあります。
「ネイバー」は「お隣さん」。
BGPではブロード(マルチ)キャストで発見する「お隣さん」ではなく、「決められた相手」だからかも。
- BGPスピーカ
- [BGP Speaker]
- NLRI
- [Network Layer Reachability Information]
- ハイパーネット君の今日のポイント
-
- BGPはTCPを使い信頼性のあるアドバタイズを行う。
- 中継ルータの数を基準とするパスベクタ方式である。
- BGPのメトリックに相当するものをパスアトリビュートという。
- 情報を交換する隣接ルータのことをBGPピアという。
- BGPピアは動的に決定されず、手動で設定する。
- OPENメッセージを交換してBGPピアを確立する。
- 経路情報は変更箇所のみをアドバタイズする。