各路由算法的区别点包括:静态与动态、单路径与多路径、平坦与分层、主机智能与路由器智能、域内与域间、链接状态与距离向量;
LS算法
采用LS
算法
时,每个
路由器
必须遵循以下
步骤
:
1、确认在
物理
上与之相连的
路由器
并获得它们的IP地址。当一个
路由器
开始工作后,它首先向整个
网络
发送一个“HELLO”分组
数据包
。每个接收到
数据包
的
路由器
都将返回一条消息,其中包含它自身的IP地址。
2、测量相邻
路由器的延时(或者其他重要的
网络参数,比如平均流量)。为做到这一点,
路由器向整个
网络发送响应分组
数据包。每个接收到
数据包的路由器返回一个应答分组
数据包。将路程往返时间除以2,
路由器便可以计算出延时。(路程往返时间是
网络当前延迟的量度,通过一个分组
数据包从远程
主机返回的时间来测量。)该时间包括了
传输和处理两部分的时间——也就是将分组
数据包发送到目的地的时间以及接收方处理分组数据包和应答的时间。
在这一步中,
路由器选择通往每一个
节点的最佳路由。它们使用一个
算法来实现这一点,如
Dijkstra
最短路径算法。在这个
算法中,一个
路由器通过收集到的其他路由器的
信息,建立一个
网络图。这个图描述
网络中的
路由器的位置以及它们之间的链接关系。每个链接都有一个数字标注,称为权值或成本。这个数字是延时和平均流量的函数,有时它仅仅表示
节点间的
跃点数。例如,如果一个
节点与目的地之间有两条链路,
路由器将选择权值最低的链路。
Dijkstra算法
Dijkstra
算法执行下列
步骤:
1、
路由器建立一张
网络图,并且确定源
节点和目的
节点,在这个例子里我们设为V1和V2。然后
路由器建立一个矩阵,称为“邻接矩阵”。在这个矩阵中,各矩阵元素表示权值。例如,[i, j]是
节点Vi与Vj之间的链路权值。如果
节点Vi与Vj之间没有链路直接相连,它们的权值设为“无穷大”。
长度字段——表示从源
节点到当前节点的权值之和。
链路状态算法
距离向量算法
距离向量
算法(也称为
Bellman-Ford算法)则要求每个
路由器发送其
路由表全部或部分
信息,但仅发送到邻近结点上。从本质上来说,链路状态
算法将少量更新
信息发送至
网络各处,而距离向量算法发送大量更新信息至邻接
路由器。 ——由于链路状态
算法收敛更快,因此它在一定程度上比距离向量算法更不易产生路由循环。但另一方面,链路状态
算法要求比距离向量算法有更强的CPU能力和更多的内存空间,因此链路状态算法将会在实现时显得更昂贵一些。