記事内容の概要
内部ゲートウェイルーティングプロトコル - RIPプロトコル
距離ベクトルのアルゴリズム
RIPプロトコルを紹介する上で、まずDVアルゴリズムを理解することが重要です。
アルゴリズムはグラフ
- 各ノードは2つのベクトルDiとSiを使用します。
- Diは現在のノードから別のノードまでの「距離」を表します。
- Siは、現在のノードから別のノードへの「次のノード」を表します。
「アルゴリズムは?
- 各ノードは隣接ノードとベクトルDiとSiに関する情報を交換します。
- 各ノードは、交換された情報に基づいて自分のノード情報を更新します。
- Di1 はノード'i'からノード'1'までの「距離」を表します。
- Si1は、ノード'i'からノード'1'までの「次のノード」を表します。
- 「nはノード数
「例えば、Dijの最小値はmin.例えば、Dijの最小値は:minに等しいです。例を通して、このDVアルゴリズムを理解してください。
グラフには6つの頂点A, B, C, D, E, Fといくつかの辺があり、この6つのノードに対して右のようなDiとSiの距離ベクトル情報があります。Diについては、Dia、Dib...からDifまでの6つの要素を持っています。からDifまでの6つの要素を持ち,これはノードiから6つのノードA, B, C, D, E, Fまでの距離を表します.Siにも6つの要素があり、Sia、Sib...です。Sifは,このノードiから6つのノードA,B,C,D,E,Fまでの次のノードが何であるかを表します.
以下では、ノードAを例にして、DVアルゴリズムがどのように動作するかを示します。Aの距離ベクトル情報が以下の通りであるとします。
Aから他の各ノードまでの距離をそれぞれ右側の列の値として表します。DVアルゴリズムがDaとSaの情報を「近隣」ノードと交換することは、上記のDVアルゴリズムの紹介で述べました。Aが4つの隣接ノード、B、C、D、Fから情報を受信し、距離ベクトル情報を受信したときに、Aから各隣接ノードまでの直線距離が何であるかを知っているとします。
DVのプロセスをより簡単に理解するために、Aの距離ベクトル情報と、他の4つの隣接ノードに対するAのベクトル情報を結合します。
グラフの各列は、ノードからノードA, B, C, D, E, Fまでの距離を表しています。
これは距離ベクトルの情報が最新でないためです。例えば、AからBへの距離はA->C->Bで得られるので、AからBへの距離は11になるかもしれませんが、BからAへの距離はB->C->D->Aで得られるので、AからBへの距離ベクトルとBからAへの距離ベクトルは異なるかもしれません!
デフォルトで'empty'に初期化され、Aから他のいくつかのノードへの次のノードを表します。
"この時点でAはノードのBと情報を交換していると仮定すると、AはノードのBに関する情報、つまりBから各ノードまでの距離を取得します。"
Aはこの情報を得ると、まず演算を行います。AとBは直接通信しているので、AはAからBまでの距離を知っています。次に、Bから得られたBから他のノードまでの距離を使用して、Aから他のノードまでの距離を計算します。
A->B = 6
A->B->C = 6+11 = 17
A->B->D = 6+7 = 13
A->B->E = 6+17 = 23
A->B->F = 6+11 = 17
上記は「AがBのデータを取得した後に行う計算」で、この取得したデータと自分の距離ベクトルを比較して、「自分の他のノードまでの距離よりも小さければ、自分の距離ベクトルに記入する」というものです。そこで、Bのデータを取得し、計算した結果、AからBまでの距離は6であり、自分の元の11よりも小さいことがわかったので、自分の元の11を6に置き換え、次に、自分の元のAからFまでの距離は17であり、計算後のAからFまでの距離17と等しいことがわかったので、Aも置き換えます。入れ替えが終わると、「Aは対応する次のノードをBとする」。以上が、AがBの情報を取得した後の全体の流れで、以下のようになります。
次にAはノードCから別のメッセージを受信します。このメッセージにはCからA、B、C、D、E、Fまでの距離が含まれています。
A->B->C = 9+9 = 18
A->C = 9
A->C->D = 9+8 =17
A->C->E = 9+11 = 20
A->C->F = 9+10 = 19
計算後、既存の距離ベクトルと比較されます。例えば、A->Cの距離は9で、AからCの距離12より小さいので、元の12は9に置き換えられ、対応するSはCで埋められます:
A、D、F間の情報交換の過程も上記と全く同じです。Aが各隣接ノードとの情報交換を終えると、次のようになります。
上記は、DVアルゴリズムの全体的なプロセスであり、DVアルゴリズムの前の導入を振り返って見て、その定義を理解することははるかに良くなります。
- 各ノードは2つのベクトルDiとSiを使用します。
- Diは現在のノードから別のノードまでの「距離」を表します。
- Siは、現在のノードから別のノードへの「次のノード」を表します。
- 各ノードは隣接ノードとベクトルDiとSiに関する情報を交換します。
- "各ノードは交換された情報に基づいて自身のノード情報を更新します。"
RIPプロトコルのプロセス
- RIPプロトコル
- RIPプロトコルは、DVアルゴリズムを使用するルーティングプロトコルです。
- RIPプロトコルは、DVアルゴリズムの距離としてネットワーク内のホップ数を使用します。
- RIPプロトコルは「30秒ごと」にルーティング情報を交換します。
- RIPプロトコルは、"hops > 15"のルートを到達不能と見なします。
「RIPプロトコルを使用するルーター」。
- ルーターはルーティング情報を初期化します。
- 近隣ルーター」Xが送信したメッセージに従って、メッセージの内容を修正。
- 変更後、まずローカルルートを取得し、その情報から新しいルートをルーティングテーブルに挿入します。
- ネクストホップXのローカルルートを取得し、変更された情報に更新
- ローカルルートを取得し、同じ目的地までの距離を比較し、新しい情報の方が距離が小さい場合はローカルルーティングテーブルを更新します。
- 隣接経路情報を3分間受信しなかった場合、隣接経路を到達不能に設定
上記の説明を例によって理解しましょう。ルートで初期化されている情報は、左端の以下のようなものだとします:
"ステップ1:ローカルルートを取得し、情報から新しいルートをルーティングテーブルに挿入する"
この時点でルーターXから情報を受け取ったとします。この情報を受け取ったルーターは、すべての距離に1を加え、ネクストホップアドレスをXに設定し、自分の情報を修正します。次にローカルルートを検索し、元のルートにAとBが存在しないことを発見したので、ルーティングテーブルにAとBの情報を挿入します。更新されたルーティングテーブルは
"ステップ2:ローカルルートを取得し、ネクストホップがXの場合、変更された情報に更新する"
初期化されたルーティング情報は、左端に以下のようにあるとします:
最初のルータが中間ルーティング情報を受信すると、このルーティング情報はまず修正され、修正後、受信したルーティング情報に従って自分自身を修正します。
"ステップ3:ローカルルートを取得し、同じ目的地までの距離を比較し、新しい情報で距離が小さくなっていれば、ローカルルーティングテーブルを更新します。"
このステップは、実は先に紹介したDVアルゴリズムの処理で、初期ルートが他のルートの情報を受信すると、まず他のルートの情報が更新され、次に初期ルートと比較され、新しい情報の距離が小さければ、ローカルルーティングテーブルが更新されます。
これはRIPプロトコルの完全なプロセスです。
RIPプロトコルの欠点
例を通してRIPプロトコルの欠点を理解しましょう。BとCからAまでの距離はそれぞれ1と2であり、Bは直接Aに到達し、CはBを経由してAに到達します。
ある時点でルーターAがダウン、つまりAが到達不能になったとします。この時点で、BはAが到達不能であることを発見し、Cに照会ます。Cに照会た結果、AにはC経由で到達できることがわかったので、次のホップをCに設定し、距離に1を追加します。cもある時点でAが到達不能であることを発見し、CもBに照会た結果、BにはAへの3ホップ経由で到達できることがわかったので、自身のルーティング情報を更新し、Aへの距離を4に設定し、次のホップをBに設定します。この時点で、距離が16になるまでデッドループが続き、到達不能であることに気づきます。この時点で、距離が16になるまでデッドループが続き、到達不可能であることに気づきます
つまり、RIPプロトコルの最も致命的な欠点は、「障害メッセージの配信が遅い」ことです。
「なぜRIPにはこの機能があるのですか?
- 隣の人を信じてください。
- "自分の頭で考えない"、"視野が狭い"。
障害が頻繁にネットワークで発生するため、各障害を見つけるために非常に多くのホップを必要とする場合、それはネットワーク全体が非常に制御不能につながる、これはRIPプロトコルの致命的な欠点です。
急速に変化する技術の中で不変性を見出すことは、技術者の核となる競争力です。理論と実践の融合