- 链路探测的作用是建立本地链路信息库
- 链路探测只涉及到OLSR接口地址以及在OLSR接口之间交换分组的能力
链路探测机制就是周期性地交换HELLO消息
使用到达相邻节点的各条链路构成链路集合
链路集合的生成过程就是“链路探测”,通过HELLO消息的交换来实现,从而更新每个节点的本地链路信息库
网络中的每个节点应该探测其与各个相邻节点之间的各条链路
- 无线传播的不确定性可能使某些链路是单向链路
- 因此,必须从两个方向检查所有的链路,以便于考虑链路的有效性
采用一对接口来描述一条“链路”:一个本地接口和一个远端接口
为了进行链路探测,必须使用某种相关状态表示每个相邻节点(更确切地说,到达每个相邻节点的一条链路)当前所在的状态:或者“对称”状态,或者“非对称”状态
- “对称”状态表示到达该相邻节点的链路已经被证实是双向链路,即可以从两个方向发送数据
- “非对称”状态表示本节点发出的HELLO消息已经被该相邻节点接收到(即该相邻节点能够接收到本节点发送的信息),但是不能肯定本节点能够接收消息(即不能肯定本节点是否能够接收到该相邻节点发送的信息)。
通过链路探测获得的信息以及链路探测使用的信息均记录在链路集合中
一条HELLO消息的“消息源节点地址”就是发送本条消息的节点的主地址
- 一个节点接收到一条HELLO消息后,应该更新其链路集合
注意: HELLO 消息决不能被转发,也决不能被记录在拷贝集合中
一条HELLO消息被接收后,必须根据本条消息头部的接收信息有效时间(Vtime) 域计算其”有效时间(Validity Time)”,然后按照以下方法更新链路集合:
- 第一,一条HELLO消息被接收后,若不存在满足如下条件的链路数组
L_neighbor_iface_addr = Source Address (源节点地址)
则产生如下一个新链路数组:
L_neighbor_iface_addr = Source Address (源节点地址)
L_local_iface_addr=接收到本条HELLO消息的接口地址
L_SYM_time = current time- 1 (已经期满)
L_time = current time + validity time
- 第二,若链路数组(现有的或者新的)满足如下条件:
L neighbor jiface addr == Source Address (源节点地址),
则按照下列方法更新该链路数组:
L ASYM time = current time + validity time;
若该节点发现本条链路消息中列出的地址中包含接收到本条HELLO消息的接口的地址
则修改本链路数组如下:
若链路类型等于LOST_LINK (链路已丢失),则
L_SYM_time = current time- 1 (即,已经期满)。
若链路类型等于SYM_LINK (对称链路)或者ASYM LINK (非对称链路),则
LSYM_time = current time + validity time
L_time=L_SYM_time + NEIGHB_HOLD_TIME
L time = max(L time, L ASYM _time)
L time的设置规则如下
至少在所产生的本条HELLO消息中所广播的一个“有效时间”周期内,仍然应该继续广播失去对称性的链路。这样相邻节点才能够检测出链路中断。