路由协议按路由算法一般划分为距离向量协议和链路状态协议两类。距离向量协议,也称为Bellman-Ford算法,是指使用中继计数表示源节点到目的节点的距离,它基于下面的计算公式来计算两个节点间距离:
D(i,i)=0
D(i,j)=min[d(i,k) D(k,j)]
其中,D(i,j)表示从节点(节点为网络或路由器)i到节点j的最短路径,d(i,k)表示从节点i到k的直接路径,也就是说,节点i和k之间没有中介节点。具体运算步骤如下:
①所有的路由器都建有一个路由表,使系统中的所有目的地址都出现在表中,每一个表项内容均包括目的地址和下一站地址,记为元组(N,G)。
②路由器周期性地向邻居发送更新分组,更新分组的内容为路由表中的所有信息。
③邻居路由器接收处理更新分组。设更新分组来自G',根据更新分组计算到目的地址N的路由开销为D',如果D' 链路状态协议,也称最短路径算法,其计算原理可以分为以下4个过程来描述: ①发现该路由器的邻居,获取它们的网络地址,建立相邻关系,并测量到每个相邻路由器的开销或延迟。建立相邻关系是通过发送Hello分组来实现的。 ②将用于交换的信息收集起来,构造包含这些信息的链路状态消息。创建链路状态消息的时机分两种,一种为定期创建,另一种就是当有事件发生时创建。 ③通过flood(扩散)算法,向所有的其他路由器发送该消息。在链路状态路由选择算法中,如何可靠地发布链路状态消息包是相当重要的。链路状态算法实现的好坏在一定程度上取决于flood算法的优劣。 ④根据收集到的链路状态信息,通过Dijkstra算法计算本路由器到全网其他路由器或网络的最短距离。 链路状态协议与距离向量协议相比,其优点是基于量度值(如链路带宽和时延),而不是由中继计数来选择优化路由,因此可使网络负载平衡;通过链路状态更新,将链路和节点状态的变化情况扩散到整个网络,使所有路由器马上更新路由表,使网络具有更好的收敛特性。