データネットワークにおける距離ベクトル型ルーティングプロトコルは、距離に基づいてデータパケットの最適な経路を決定します。距離ベクトル型ルーティングプロトコルでは、パケットが通過するルータの数で距離を測定します。ルータ1つにつき1ホップとみなされます。一部の距離ベクトル型プロトコルでは、ネットワーク遅延や、特定の経路上のトラフィックに影響を与えるその他の要因も考慮されます。ネットワーク全体で最適な経路を決定するために、距離ベクトル型プロトコルを使用するルータは、通常、ルーティングテーブルと宛先ネットワークのホップ数、場合によってはその他のトラフィック情報などの情報を相互に交換します。また、距離ベクトル型ルーティングプロトコルでは、ルータがネットワークトポロジの変更を定期的に隣接ルータに通知する必要があります。
距離ベクトル型ルーティングプロトコルは、ベルマン・フォードアルゴリズムを用いて最適な経路を計算します。ネットワーク全体における最適な経路を計算するもう一つの方法は、リンクコストに基づくものであり、リンクステート型ルーティングプロトコルによって実装されます。
距離ベクトルという用語は、プロトコルがネットワーク内の他のノードまでの距離を表すベクトル(配列)を操作するという事実を指します。距離ベクトルアルゴリズムは、元々 ARPANETのルーティングアルゴリズムであり、ルーティング情報プロトコル(RIP)によってローカルエリアネットワークでより広く実装されました。
距離ベクトル型ルーティングプロトコルは、ベルマン・フォードアルゴリズムを使用します。これらのプロトコルでは、各ルータはネットワーク全体のトポロジーに関する情報を持っていません。ルータは、計算した距離値(DV)を他のルータに通知し、ローカルネットワークまたは隣接ルータによって変更が行われない限り、他のルータから同様の通知を受け取ります。これらのルーティング通知を使用して、各ルータはルーティングテーブルを構築します。次の通知サイクルでは、ルータはルーティングテーブルから更新された情報を通知します。このプロセスは、各ルータのルーティングテーブルが安定した値に収束するまで続きます。
これらのプロトコルの中には、収束が遅いという欠点を持つものもある。
距離ベクトル型ルーティングプロトコルの例:
Routers that use distance-vector protocol determine the distance between themselves and a destination. The best route for data through a data network is measured in terms of the numbers of routers (hops) a packet has to pass through to reach its destination network. Additionally, some distance-vector protocols take into account other traffic information, such as network latency. To establish the best route, routers regularly exchange information with neighbouring routers, usually their routing table, hop count for a destination network and possibly other traffic related information. Routers that implement distance-vector protocol rely purely on the information provided to them by other routers, and do not assess the network topology.[1]
Distance-vector protocols update the routing tables of routers and determine the route on which a packet will be sent by the next hop which is the exit interface of the router and the IP address of the interface of the receiving router. Distance is a measure of the cost to reach a certain node. The least cost route between any two nodes is the route with minimum distance.
Updates are performed periodically in a distance-vector protocol where all or part of a router's routing table is sent to all its neighbours that are configured to use the same distance-vector routing protocol. Once a router has this information it is able to amend its own routing table to reflect the changes and then inform its neighbours of the changes. This process has been described as ‘routing by rumour’ because routers are relying on the information they receive from other routers and cannot determine if the information is actually valid and true. There are a number of features which can be used to help with instability and inaccurate routing information.
最も古いルーティング プロトコルであり、最も古い距離ベクトル プロトコルは、ルーティング情報プロトコル(RIPv1) のバージョン 1 です。RIPv1 は 1988 年に正式に標準化されました。[ 2 ] RIPv1は、宛先ネットワークに到達するために通過する必要のあるルーターの数であるホップ数のみに基づいて、ネットワーク全体で最短経路を確立します。RIP は内部ゲートウェイ プロトコルであるため、内部ルーターまたは境界ルーター上のローカル エリア ネットワーク(LAN)で使用できます。RIPv1 を実装したルーターは、接続されているすべてのネットワークに 30 秒ごとに RIPv1 パケットをブロードキャストすることにより、ルーティング テーブルを隣接するルーターと交換します。RIPv1はホップ数を 15 に制限しているため、大規模ネットワークには適していません。このホップ制限はルーティング ループを回避するために導入されましたが、15 台を超えるルーターを介して接続されているネットワークには到達できないことも意味します。[ 3 ]
広域ネットワーク(WAN)で使用するために設計された距離ベクトルプロトコルは、ボーダーゲートウェイプロトコル(BGP) です。BGP は外部ゲートウェイプロトコルであるため、インターネット上の境界ルーターと外部ルーターに実装されます。BGP は、伝送制御プロトコル(TCP) セッションを介してルーター間で情報を交換します。BGP を実装したルーターは、ホップ以外のさまざまな要素に基づいて、ネットワーク全体で最短パスを決定します。また、管理者は、特定のルートを優先または回避するように BGP を設定することもできます。BGP は、インターネットサービスプロバイダー(ISP) や通信会社で使用されています。[ 4 ]
リンクステートルーティングプロトコルに関連するルーティング方法を使用するため、ハイブリッドとして説明されている距離ベクトルプロトコルの中には、独自のEnhanced Interior Gateway Routing Protocol (EIGRP)があります。これは1980年代にシスコによって開発され、リンクステートルーティングプロトコルであるOpen Shortest Path First (OSPF)よりも優れた収束性を提供し、ルータ間のネットワークトラフィックを少なくするように設計されました。[ 5 ]
距離ベクトル型ルーティングプロトコルのもう1つの例はBabelです。
ベルマン・フォードアルゴリズムはルーティングループの発生を防ぐことができず、無限カウント問題に悩まされます。無限カウント問題の核心は、AがBにどこかにパスがあることを伝えた場合、BはそのパスにBが含まれているかどうかを知る方法がないことです。この問題を理解するために、A–B–C–D–E–Fのように接続されたサブネットを想像し、ルーター間のメトリックを「ジャンプ数」とします。ここで、Aがオフラインになったとします。ベクトル更新プロセスで、Bは距離1であったAへのルートがダウンしていることに気づきますが、BはAからベクトル更新を受け取りません。問題は、BがCからも更新を受け取り、CはまだAがダウンしていることを認識していないため、AはCから2ジャンプ(CからB、そしてA)だけであるとBに伝えることです。BはCからAへのパスが自分自身(B)を通ることを知らないため、テーブルを新しい値「BからA = 2 + 1」で更新します。その後、Bは更新情報をCに転送し、Cの視点から見るとAはBを経由して到達可能であるため、Cはテーブルを「CからAへ = 3 + 1」に更新します。この更新はネットワーク全体にゆっくりと伝播し、最終的に無限大になります(この場合、ベルマン・フォードアルゴリズムの緩和特性により、アルゴリズムは自己修正されます)。
RIP は、ループ形成の可能性を減らすためにスプリット ホライズンとポイズン リバース テクニックを使用し、「無限にカウント」問題に対処するために最大ホップ数を使用します。これらの対策により、すべての場合ではありませんが、一部のケースではルーティング ループの形成を回避できます。 [ 6 ]ホールド 時間 の追加(ルート撤回後、数分間ルートの更新を拒否する) により、ほぼすべてのケースでループ形成を回避できますが、収束時間が大幅に増加します。
近年では、ループのない距離ベクトル型プロトコルが数多く開発されている。代表的な例としては、EIGRP、DSDV、Babelなどが挙げられる。これらはあらゆる場合においてループ形成を回避するが、複雑さが増すという欠点があり、 OSPFなどのリンクステート型ルーティングプロトコルの成功によって普及が遅れている。
このネットワークには、ルーターA、B、C、Dの4台があります。
![]()
アルゴリズムの現在の時刻(または反復回数)をTで表し、時刻0(T=0)から各ルータからその直近の隣接ルータまでの距離行列を作成することから始めます。以下のルーティングテーブルを作成する際、最短経路は緑色で強調表示され、新しい最短経路は黄色で強調表示されます。灰色の列は、現在のノードの隣接ノードではないノードを示しており、そのためテーブル内で有効な方向とはみなされません。赤色は、ノードから自身までの距離、または自身を経由する距離を参照しているため、テーブル内の無効なエントリを示します。