■ EIGRPの3つのテーブル
さて、前回からEIGRPの話をしているわけだが。
はい。
簡単に言えば、リンクステートのいい所を足したディスタンスベクタという拡張ディスタンスベクタルーティングプロトコルなわけだ。
でした。
コンバージェンスが早くなって、イベントトリガアップデートするディスタンスベクタでしたよね。
うむ。
なので、EIGRPでは通常のルーティングテーブル以外にもテーブルを持つ。
へへぇ。RIPやIGRPのディスタンスベクタだと、ルーティングテーブルしか持たなかったですよね。
そうだ。だがリンクステートのOSPFはネイバーテーブルを別に持っている。
それと同様にEIGRPもルーティングテーブルとは別に2つのテーブルを持っている。
- ルーティングテーブル
- ネイバーテーブル
- トポロジテーブル
この3つだ。
これをルーティング対象プロトコル毎に1つもっている。
[FigureRT12-01:3つのテーブル]
IPとIPXとAppleTalk。
そうか、EIGRPはマルチプロトコルルーティングプロトコルでしたっけ。
そういうことだ。
まず役割だが、ネイバーテーブルは、隣接関係にあるネイバーの一覧だ。
隣接関係。
こんにちはパケットですね。
まだそれを言うか。
まぁ、ともかく。それについてはちゃんと話してやる。
あ、はい。
もう1つが、トポロジテーブル。ネイバーから教えてもらったすべてのパスが載っているものだ。
すべてのパス?
OSPFのトポロジデータベースとは違うんですか?
あれよりもっと簡単なものだ。トポロジデータベースは全ルータのリンク状態を記録しておくものだが、トポロジテーブルは、あくまでネイバーからの情報を記入しておくものだ。
?
そうだな。ディスタンスベクタで、隣のルーティングテーブルを受け取るだろう?
えぇ。それを元にして、自分のルーティングテーブルを更新するんですよね。
うむ。トポロジテーブルはその受け取ったルーティングテーブルをまとめたものだと思うのが簡単だ。
つまり、すべてのパスと、そのネクストホップ(ネイバー)、そのネイバーからのメトリック、が記載されている。
ははぁ。
つまり、ルーティングテーブルを作る元情報だな。
ルーティングテーブルは、このトポロジテーブルに載っているすべてのパスからベストパスを抽出して出来上がるわけだ。
[FigureRT12-02:トポロジテーブルとルーティングテーブル]
FD? AD?
フィージブルディスタンスとアドバタイズドディスタンスだ。
それについてはDUALとサクセサの話でする。
了解です。
■ EIGRPの隣接関係
ネイバーテーブルは、隣接関係にあるネイバーの一覧だと言ったな。
はい。
隣接関係を作るのに使うのは、OSPFと同じHelloパケットだ。
こんにちはパケット登場ですね。
うむ。
さて、ネット君OSPFの隣接関係の結び方を覚えているかね?
え〜っと。Helloを交換しあって2Way Stateになって。
そっからデータベース情報を交換して、Full Stateになって隣接関係になります。
よしよし。よく覚えていた。つまりそのFull Stateになって初めてコンバージェンスになるわけだ。
だが、EIGRPの隣接関係の結び方はもっとシンプルだ。
[FigureRT12-03:EIGRPの隣接関係の確立]
どうだ。シンプルだろう?
あ〜、シンプルというか、なんというか…。
手抜き?
手抜きとはなんだ、手抜きとは。シンプルと言え。
2Way → ExStart → ExChange → Loading → Full という流れのOSPFよりも格段に速くコンバージェンスに達することができるわけだ。
でも、なんでこんなに短いんです?
それは隣接したルータとしかデータを交換しないディスタンスベクタだからだ。
エリア内全ルータからDR/BDRを選出して隣接関係を結んでデータを交換するOSPFよりも作りがシンプルなのだよ。
なるほど。一度は全ルータとHelloを交換しあう必要もなければ、隣接関係を結ぶ相手を選ぶ必要もないわけですね。
うむ。ややこしくなっているが、基本はディスタンスベクタということを忘れるな。
なるほど。
この隣接関係だが、相手と以下の値が一致していないと隣接関係になれない。
- メトリックを計算するK値
- AS番号
AS番号の一致は、同一AS内でのルーティングプロトコルだからですよね。
K値は…なんでしたっけ?
おいおい、前回話しただろう?
帯域幅、遅延、信頼性、負荷、MTUからメトリックを計算するための係数だ。
あぁ、そうそう。そうでした。
K値が違うってことは、距離を測る定規が違うってことでしたよね。
うむ。
さて、このHelloだが、隣接関係になった後、定期的に交換しあう。つまり、生存確認だな。
OSPFでもHelloを定期的に送りあって、相手がダウンしてないか確認しましたよね。
そう、それと同じことを行う。
Helloを送る間隔をHello間隔という。
なんともストレートなネーミングですね。
わかりやすくていいだろう?
このHello間隔の3倍の時間Helloが届かなかった場合、相手がダウンしたと判断する。この時間をホールドタイムという。
ほーるどたいむ?
えっと、RIPとかIGRPのホールドダウンタイムとは違うのですか?
ホールドダウンタイムとは別物だ。ホールドタイムは相手のダウン確認の時間。ホールドダウンタイムはループを防ぐためのルート変更の保留時間だ。
なんかややこしいですね。
■ EIGRPパケット
Helloを含むEIGRPで使われるパケットは以下の5種類だ。
種類 | 説明 |
---|---|
Hello | ネイバールータの発見。ネイバールータの生存確認に使用。 |
Update | ルートの通知。変更時のみ、変更分だけ通知。 |
Reply | Queryに対する返答。 |
Query | ルート問い合わせ。ルートのダウン時に新しいルートを問い合わせる。 |
AcK | 確認応答。 |
[TableRT12-01:EIGRPパケット]
HelloとUpdateとAckはさっき出てきましたね。
queryとReplyってのは?
それについてはDUALのところで説明する。
ここで重要なのは、Helloを除くものは必ずAckが必要という点だな。
必ずAcKが必要?
つまり、UpdateやQuery、Replyを受け取ったら確認応答としてAcKを送り返すってことですか?
その通り。
それによりEIGRPは高い信頼性を保持してるわけだな。
Helloにはいらないんですね。
うむ、Helloは定期的に送られるからな。
そして、Ackがなかった場合、再送信する。
ははぁ。TCPと同じですね。
16回まで再送信するが、それでも返答がなかった場合はダウンしたとみなし、ルートの変更動作を行うわけだ。
なるほど、変更点を確実に相手に伝えようとするわけですね。
信頼性が高いなぁ。
そういうことだ。
さて今回はこれぐらいにしておこう。
了解です。
30分間ネットワーキングでした〜♪
- フィージブルディスタンス
- [Feasible Distance]
- アドバタイズドディスタンス
- 「Advertised Distance]
- Hello間隔
-
通常は5秒。
ただし、1.5Mbps以下の低速回線を使用する場合は60秒。
- 再送信
- 最初の送信がマルチキャストでも、再送信はユニキャストで行われます。
- ハイパーネット君の今日のポイント
-
- EIGRPはルーティング対象プロトコル毎にテーブルを3つ持つ。
- ルーティングテーブル。
- ネイバーの一覧のネイバーテーブル。
- すべてのパスが載っているトポロジテーブル。
- EIGRPもHelloで隣接関係を結び、生存確認を行う。
- 隣接関係はOSPFよりも早く結ばれる。
- EIGRPではAckによる高信頼性を確保している。
- EIGRPはルーティング対象プロトコル毎にテーブルを3つ持つ。