1、距离向量路由算
距离向量路由算法要求每个路由器维护一张距离表和路由表,并在表中给出到每个已知目的地的最短距离和路径。在距离表中,列表示和这个节点直接相连的邻居,表中的行表示目的节点,而表中的元素表示“距离”,“距离”可以是跳跃次数、时延或丢失的数据包的数量等。距离向量路由算法通过路由表之间周期性的交换数据来更新网络拓扑结构。
距离向量路由选择算法的缺陷:收敛时间较长是此路由选择算法所遇到的一个重要问题,网络收敛缓慢产生了相矛盾的路由选择条目,这种条件下数据包会一直在网络上循环发送,因此就产生了路由环路。
可用的解决方法有:
1、定义最大值
2、简单水平分割
3、带毒性的逆转水平分割
4、触发更新
5、抑制计时
实际中较常使用的是定义最大值、触发更新、抑制计时。
2、链路状态路由算法(Link State Routing)[2]
链路状态路由算法需要每个路由器保存一份最新的关于整个网络的拓扑结构数据库。
算法描述:
1、每个路由器与邻机会话。
2、每个路由器构建一个“链路状态包(Link-State Packets)”,包含邻机名字及费用。
3、LSP被传送到所有别的路由器,每个路由器都有其他路由器最新的LSP所有路由器都会根据搜集到的信息建立全网的拓扑数据库(L-S图)。
4、每个路由器计算出到每个目的地址的路由,建立路由表。
图表4 LSR泛洪法示意图
(同样的,路由器A在接收到路由器C的LSP后,同样会通过洪泛法转发来自路由器C的LSP)
计算路由的方法:
1、每个路由器根据其最新的链路状态包(LSP)构建链路状态数据库。
2、PATH由ID、路径代价、转发方向构成。
3、TENT由ID、路径代价、转发方向形式(可能的最佳路径),当路径被证实是最佳的后,该节点将从TENT移到PATH中。
4、转发数据库,包括ID、转发方向。
每台路由器使用数据库构建一个完整的拓扑图并计算通向每个目的网络的最佳路径。就像拥有了地图一样,路由器现在拥有关于拓扑中所有目的地以及通向各个目的地的路由的详图。所有的路由器将会有共同的拓扑图或拓扑树,但是每一个路由器独立确定到达拓扑内每一个网络的最佳路径。
3、优化链路状态路由算法(OptimizedLink State Routing,OLSR)
在链路状态算法中,所有相邻的节点都会转发状态包。这样在相邻节点较多的情况下,泛洪开销较大;如果我们选择部分特定的节点泛洪转发数据包,使得网络中所有路由器同样可以收到数据包,可以大大减少泛洪开销,这就是OLSR算法的基本思想。
OLSR中的关键概念是多点转播(MPRs),MPRs是在广播洪泛的过程中挑选的转发广播的节点。传统的链路状态协议每个节点都转发它收到信息的第一份拷贝,同它相比,OLSR很大程度上减少了转发的信息。在OLSR协议中,链路状态信息都是由被挑选为MPRs的节点产生的,这样减少了在网络中洪泛的控制信息,实现了第二步优化。第三步优化是MPR节点只选择在MPR或者MPR选择者之间传递链接状态信息。因此,同传统LS协议相比,在网络中分布着部分链路状态信息,这些信息将用于路由计算。
MPR的选择分为两步:
1、首先选择能够覆盖「孤立二跳邻居节点」的一跳邻居节点。这里孤立二跳邻居节点是指仅通过一个邻居节点同目标节点相连的二跳邻居节点;
2、在余下的一跳邻居节点中,按照覆盖二跳邻居节点的数量从高到低依次选择,直到覆盖所有的二跳邻居节点。
图表5 MPR选择算法
以图表5为例,首先二跳邻居节点为1、2、3、4、5、6、7,孤立二跳邻居节点为1、5,其对应的一跳节点为A、E,将A和E加入MPR列表中,此时1、2、3、5均被覆盖;在剩余的一跳节点中,将覆盖最多二跳节点的B加入MPR,然后是E,最后是G,在G加入MPR后,所有的二跳邻居节点都被MPR覆盖,此时MPR即为我们选择的MPR全集。
MPR表会通过Hello信息同步给下一跳邻居节点。这样每个节点能够建立本地的MPR Selector表,此表表明节点自己应该转发来自哪些节点的广播消息。
网络节点可能会经常性的撤销旧节点、增加新节点,网络拓扑结构也会因此改变,在OLSR算法中通过MPR节点周期性地泛洪拓扑控制(Topology Control,TC)消息来实现网络拓扑结构的维护。OLSR算法相比于LSR算法减少了泛洪开销,但也需要TC消息维护拓扑结构,增加了网络中的控制开销,并且固定的泛洪周期还会造成网络带宽的浪费。
为此,文献[3]提出了一种基于优化链路状态路由的低开销的拓扑维护算法。通过减少MPR节点的个数从而减少了TC消息产生的数量和转发次数;同时通过对比上一次发送周期的MPR选择集的变动情况,在不变量和删减量中选择较小的和新增量一起组成TC消息进行发送,最后根据网络拓扑的变化情况动态地调整TC消息的发送周期。仿真结果表明,该算法能有效降低网络的控制开销和端到端时延,提升网络的吞吐量。
参考文献
[1]王宏宇,李晗静.距离向量路由选择算法浅析[J].智能计算机与应用,2003,000(003):16-17
[2]黄劲荣,李振坤,林穗.浅析两种分布式路由选择算法[J].现代计算机(专业版),2004,000(011):81-83
[3]任智,周舟,吴本源,陈加林.基于优化链路状态路由的低开销拓扑维护算法[J].计算机工程.https://doi.org/10.19678/j.issn.1000-3428.0059016