矢量距离路由(vector-distance)采用的是Bellman-Ford算法,其思想是:
■ 路由器启动时对路由表进行初始化,对每个与自己直接相连的网络生成一个表项。每个表项指出一个目的网络和该路由器到此网络的距离,通常通过跳数来表示。跳数是指从给定的源站到目的站之间传输的数据报所经过的路由器数目。
■ 每个路由器周期性地向直接相邻的其他路由器发送自己的路由表。显然,也从直接相邻的路由器获得它们的路由表。
■ 路由器根据相邻路由器发送来的路由表重新计算到每个网络的距离。计算的方法是按某相邻路由器到网络的距离加1来作为该路由器经过此相邻路由器到达目标网络的距离,然后选择其中距离最小的一个。
由于路由器间交换的路由信息通过(V,D)序偶的列表表示,其中V标识目的站,D标识到该目的站的距离,因此,称为矢量距离。
矢量距离的算法易于实现,但是算法存在一定的缺陷:如果路由迅速发生变化,算法难以稳定。相应的信息只能缓慢地从一个路由器传递给另一个路由器。俗称“坏消息传播慢”。这意味着有些路由器因为来不及刷新而可能会有错误的选路信息。
下面的动画描述了一个坏消息传播慢的例子。
在早期的核心路由器上使用了网关到网关协议GGP(Gateway-to-Gateway Protocol),该协议就采用了矢量距离算法。但是,GGP协议现在已经不使用了。
现在的路由器上常用的一个路由协议RIP也采用了矢量距离算法。