4.3.2 路由算法详细流程

4.3.2 路由算法详细流程

DBNP中转发节点根据接收到数据报文IP Header中TTL值, 确定该报文经过的转发跳数, 从而决策出最优路径。 本协议无路由控制报文, 没有控制消息的交互, 大大提高了信道资源利用率, 是一种完全分布式的路由决策思路。 DBNP按图4.9所示步骤交互实现。

转发节点接收到IP报文后路由决策及转发决策的处理流程如图4.10所示。

其决策的主要依据是: IP数据报文每经历一个节点的转发, 其IP Header中存储的TTL值就会减1。 本协议假定所有待发送的IP报文都设定TTL初始值为64,因此,数据报文经过转发的次数可表达为64-TTL。 若本地路由表中不存在到源节点的路由信息, 则根据IP数据报文信息、 上一跳邻居节点及报文的入接口创建至源节点的路由; 若本地路由表中存在到源节点的路由信息, 需要比较IP Header中TTL值与当前路由项中跳数的关系, 从而决策出至源节点的最短路由, 同时更新路由表信息。 DBNP路由机制中, 中间节点只转发从最短路径发来的IP报文, 其他一律丢弃, 基于对IP数据报文TTL值分析判定报文是否来源于最短路径并采取相应转发策略的方法大大规避了路由环的产生。

图4.9 DBNP算法流程

图4.10 IP报文转发处理流程图

源节点发送IP数据报文以及中间节点决策最优路径的示例过程如图4.11所示。

图4.11 路由决策

源节点S发送IP数据报文给目的节点D。 它首先向所有邻居节点洪泛该数据报文。 报文所经过的每一个中间节点都将执行路由学习和转发判决两个决策过程。 如图4.11所示, 中间节点C先后收到了其邻居节点A与B转发的源为S的IP数据报文, 通过分析比较, 判定邻居节点A发来的IP报文转发跳数较节点B发来的少, 因而只转发邻居A发来的IP报文。 此外, 中间节点C需要学习经由A去往源节点S的最短路由, 事实上, 路由决策过程中的每一个节点都需要如此。

在经过某一步转发判决后, 数据报文转发至目的节点D, 则目的节点D学习去往源的最短路由。 在这之后, 目的节点只往对应路由的出接口及下一跳邻居单播发送去往源的IP报文。 同样, IPHeader中TTL值设定为64, 在单播至源节点的过程中, 中间节点会学习并更新到目的IP的路由。 通信目的节点通过最短路径单播回复报文给源节点, 如图4.12所示。

图4.12 学习策略

经过路由决策、 转发判决及学习策略, 源和目的节点之间建立稳定的通信链路。 此外, 没有数据报文传输的路由, 在一定时间后将自动删除。 源节点和目的节点稳定通信的状态如图4.13所示。

图4.13 稳定通信

基于数据报文点点决策的路由算法大量减少了各节点路由决策所耗CPU时间及控制消息寻路导致的额外时间开销, 大大缩短了服务执行路径建立的时延, 彻底杜绝了网络层路由控制开销占用的带宽资源, 提高了网络资源利用率, 对于实时性业务的上层服务提供了较好的底层路由寻路策略。