RPL路由协议通过DIS请求消息、DIO 信息对象发布、DAO 目的地通告消息以及DAO-ACK 目的地通告应答消息来实现DODAG 的构建。DODAG 的构建是基于邻居节点发现过程的,包含了以下两个主要的操作:
(1)在从根节点到客户节点的下行方向,广播传输由DODAG 根节点启动的DIO控制消息来建立路由;
(2)单一传播由客户节点启动的DAO 控制消息,沿着上行方向发送到DODAG根节点。
图12-4 简化的DODAG构建流程图
整个图的构建过程是从根或边界路由器(Border Router, BR)开始的,RPL 路由协议中有向无环图DAG 的构建,这是协议的关键,如图12-4 所示,其构建步骤阐述如下:
步骤1:LBR首先使用DIO消息来广播有关图的信息。
步骤2:监听根节点的邻居节点A 收到DIO 消息后,根据目标函数、综合广播路径开销等来做出选择,决定是否要加入这个图中。(www.xing528.com)
步骤3:假设节点A 选择加入图中,于是节点A 与BR 之间建立起一条路由,BR 会成为节点A 的父节点。节点A 计算自己在图中的rank 值,接着向自己的父节点BR发送包含路由前缀信息的DAO消息。
步骤4:节点A 加入DODAG 中后,定期广播DIO 消息,其邻居节点B 收到该DIO 消息后进行判断。假设选择加入此图中,进而认定节点A 为自己的父节点,计算自己的rank值,向节点A发送包含路由前缀信息的DAO消息。
步骤5:假设节点C 启动后在一定时间内未收到来自其他节点发来的DIO消息,因而选择主动发送DIS消息来进行请求。
步骤6:节点B 收到来自节点C 的请求消息后,发送DIO 消息,节点C 收到该DIO 消息后进行配置,选择节点B 为自己的父节点,并向节点B 发送DAO消息。
步骤7:节点B接收到节点C发送来的DAO消息后,判断是否需要清除路由,是否产生环路,经过判断后在自己的路由表中增加一条路由表项,并按这样的操作继续向自己的父节点A传送DAO消息。
步骤8:节点A 收到了来自节点B 转发的有关节点C 的路由消息后,从而更新自己的路由表,并向根节点BR 发送DAO 消息。至此,根节点BR 处包含了所有节点的前缀信息,从而整个有向无环图建立完成。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。