OLSR深入认识

MPR set所有节点都要维护 存储他选择的mpr节点的集合

mpr select set 应该是只有mpr集合会维护 储存选择将它作为mpr的节点的集合

   

这网站和之前看的基础论文有冲突啊!!!看了下 应该网站是正确的

还是去看rfc3626官方文档吧!!!

https://blog.csdn.net/qq_40950957/article/details/104856483

   

OLSR 的节点中存储了大量的数据表,主要有以下三种:

   

MPR selector set 这个表记录了本地选为 MPR 的节点

neighbor set 这个表记录了所有的一跳邻节点

Two-hop neighbor set 这个表记录了可通过一跳邻节点接触的节点,可能包括上述一跳邻节点

   

   

   

HELLO

   

   

MPR 的选择

   

   

   

拓扑管理 建议去看Rfc3626 9拓扑发现

只有MPR节点能发TC消息,当一个节点(例如Y)收到TC消息,说明一定是MPR节点发过来的。

Y节点就能根据收到的TC消息,将其转换成拓扑表。(可以看后面的例子)

基于拓扑表和邻节点信息可以得到路由表。(看最后的算法步骤)

   

邻节点探测使用了 HELLO 消息,拓扑管理则是用另一种格式的消息:Topology Control 消息。MPR 会定期发送 TC 消息,其中包含了选择这个节点作为 MPR 的节点的集合。

   

 

ANSN 与接收消息邻节点关联的序列号,代表信息的新鲜度

Reserved 这个字段固定设为0000000000000000

Advertised neighbor main address 是选择这个节点作为 MPR 的节点的集合,也称为 MPR Selector Set!!!

   

   

基于 TC 消息的交换,各个节点可以维护一个 Topology Table(拓扑表),拓扑表的结构如下:

 

   

上面提到 TC 消息中包含的是发送节点的 MPR Selector 列表。那么当另一节点收到 TC 消息时,将 TC 条目中的 MPR Selector 作为目标地址,则发送节点即为其 MPR 节点,然后填入 TC 消息中的 Sequence Number,已经预定义的 Holding Time

   

下面举一个例子说明拓扑管理的过程,这个例子中 ABC 三个节点均将 M 作为自己的 MPR 节点,那么 M 会建立如下的 MPR Selector 列表:

   

 

作为 MPRM 会将其 MPR Selector 列表通过 TC 消息广播出去 Y 收到 M 发出的 TC 消息时,将 TC 消息中包含的 MPR Selector 信息转化成拓扑表 (Holding Time 省略)

   

 

网络中周期性的通过 TC 消息保持拓扑表更新,通过拓扑表可以计算出全局路由表。

   

   

   

   

路由表计算

基于拓扑表和邻节点信息,网络中的每个节点都维护一张路由表(Routing Table),路由表格式如下图所示:

 

   

 

   

每次更新拓扑信息,路由表都需要重新计算,计算步骤如下:

1 删除之前的所有记录

2 添加所有一跳对称邻节点,R_dist 通常设为1

3 添加超过1跳(1+h)的目的节点。如果拓扑表中的 Destination address (目的地址)在路由表的 R_dest_addr 中没有对应的话,就新添加一条路由:

a. R_dest_addr = Destination address

b. R_next_addr设为R_dest_addr与拓扑表中Destination's MPR相等的路由表记录的 R_next_addr

c. R_dist = h + 1

4 计算完路由表后,如果想节省空间,可以删除拓扑表中没有用到的字段。

 

posted @ 2022-08-31 11:49  atomxing  阅读(365)  评论(0编辑  收藏  举报