简介
- 协议对象:优化链路状态路由协议是针对移动自组织网络制定的路由协议.
- 主要任务:定期与网络中其它的节点交换拓扑信息
- 机制:多点中继(MPR)通过MPR节点进行拓扑信息的转发
- 历史机制继承:针对经典的泛洪机制(即每个节点都产生自己的拓扑信息并且对接收到的信息进行转发)减少了信息的开销,改进的多点中继则是选择部分节点(即MPR节点)进行转发,并且在拓扑信息产生时也只是选择MPR节点进行生成;通过最小化的信息数量以及较小的流量控制,实现了相较于泛洪控制流量的机制.
因此此协议对于大型的密集型的网络具有良好的控制全局拓扑的效果
关键名词解释
- 节点:一种可以实现生成,转发,处理信息的设备实体
邻居节点:如果甲节点可以接收到乙节点的信息,则乙节点是甲节点的邻居(注意这里是单向的邻居)
严格二跳邻居:邻居节点的邻居节点(相当于跳了两跳)(当然这里的二跳邻居是不包含自身并且自身的一跳邻居的) - 多点中继:甲节点从他的一跳邻居中选择的中继节点,只允许中继节点重新转发他从甲节点接收到的信息,并且在消息未重复,生存时间为结束之时.
- 多点中继选择器:甲节点选择乙作为多点中继的节点时,甲节点便是节点乙的多点中继选择器
- 对称连接:两节点可以相互进行连接与接收发送信息
非对称信息:仅仅在一方验证可以进行连接(这里可以使用TCP的三次握手进行关联理解) - 对称一跳邻域:一个节点的一组一跳节点,它们具有到达此节点的对称连接
协议的概述
对于移动自组织网络的路由协议,OLSR是对经典的链路路由协议的优化
OLSR协议通过使用尽可能少的节点进行拓扑路由的信息产生与转发,显著减少了传播次数,并且在计算路由时只需要所选择的MPR节点集合即可实现.额外的拓扑信息用于冗余目的.并且,OLSR协议可以通过减少周期性传播信息的时间间隔来优化拓扑网络的变化
下面是一些容易误解的点
- OLSR协议是完全分布式网络,不依赖于任何的中央适宜,因此不需要控制信息的可靠运输
- OLSR协议是不需要顺序传递消息的,每个信息都携带系列号,随着时间进行更新,以判断信息是否为最新的消息,即使在传输的过程中已经被重新的"排序过"
核心概念:多点中继
- 多点中继的原理是:每一个节点N都在自己的对称一跳邻居中选择部分节点作为多点中继集合(MPR集),不在集合中的一跳邻域只是接收与处理从节点N接收的信息,而N的多点中继集合则进行额外进行消息的转发.
选择多点中继集合的标准:N所选择的一跳节点要尽可能的覆盖N的二跳节点,这样可以使得多点中继集合中的节点尽可能的小,最小化开销(如果存在唯一的二跳节点仅仅通过单一的一跳节点连接,此一跳节点必须在多点中继集合中) - 多点中继集合中节点:,此集合中的节点都会维护一个"多点中继选择器集合",对应于多点中继集合,存储的是将自身选择为中继节点的源节点,在此处便是节点N,负责在接受N信息时,进行转发.
- 集合信息的维护:集合信息的构建与维护均需通过HELLO消息进行更新,也称链路感应(后文有详细阐述)
主要内容
- 规定数据包的通用格式以及流量传输机制
- 链路感知:周期性的使用hello消息实现局部的拓扑信息的获取和检测多跳邻居集合
- MPR选择:同样使用周期性的hello消息实现选择多点中继集合的通知
- 拓扑消息扩散:使用拓扑控制消息将局部拓扑信息扩散至整个拓扑网络节点中,使每一个节点获得完整的拓扑信息以构建完整的路由表,实现路由计算
- 路由计算:获取全局拓扑信息后进行最短路由的计算流程
协议主要内容
- 数据包的格式产生与转发处理
OLSR协议规定使用统一格式数据包进行消息的传输.每个数据包采用通用的数据头格式,主体封装一个或者多个消息(Hello消息:承担邻居检测,链路感知,多点中继指令;TC消息:进行局部拓扑信息的声明;MID信息:将节点上数个接口进行声明…).
关于数据包的重复性,每个节点都会维护一个重复集,这样就不会多次转发同一个数据包.
重复集会记录所接收到的信息的基本信息duplicate tuple ( D_addr,D_seq_num,D_retransmitted[检测消息是否重传的标签],D_iface_list,D_time)
- 数据包的格式:
● 数据头:数据长度,数据包序列号,
● 数据体:消息类型,时间,邮件大小,发送节点地址,生存时间,跳数,消息序号(消息的"唯一标识号") - 数据的处理:
● 检测数据包头:包含生存时间的检查与使用重复元组进行重复信息的检测,如果已过期或者是已经转发的信息进行丢弃处理
● 数据包处理:数据包体进行拆分,根据不同的数据形式进行不同的处理函数中去 - 数据包的转发
● 数据包的检测:首先检测消息的发送方是否在自己的选择器集合中,并且没有在重复集合(D_retransmitted的布尔值为假),同时生存时间大于一.
● 信息的转发:首先修改信息中的跳数加一,信息的生存时间减一,并修改重复集合中此消息的转发状态(D_retransmitted)进行广播 - 消息的抖动
● 为了避免在自组织网络中控制消息的同步(由于相邻节点的信息发送的延迟等通信的问题出现的,同步对于信息的处理会产生冲突),在消息的生成时间戳上叠加一个时间的"抖动"(通常是一个较小的正值)
存储信息
节点中存储的信息包含
● 多接口的关联信息库:存储节点的接口地址与主地址
● 链路信息:存储关于邻居的链路信息
● 邻居信息库:存储关于邻居,二跳邻居,MPR集,MPR选择器集等(其中包含关于每一个邻居的描述以及整个网络的拓扑信息)
拓扑发现以及路由表计算
节点将自己的局部拓扑信息通过TC(topology control)消息,通过MPR优化泛洪进行传播,以使每一个节点都拥有全局的拓扑网络信息,以计算最佳路由.
- TC消息的格式:message消息格式包含生存时间(最大以保证信息可以传送到全网络中接收到};邻居序列号以记录最新的信息标识;邻居地址包含节点的邻居地址信息.
- TC消息的发送:每个选为多点中继集合的节点进行周期性的广播自身的局部拓扑信息
- TC消息的处理与转发与一般的信息的处理流程相似.
最佳路由的实现依赖本地拓扑信息以及通过TC消息接收到的拓扑信息构建的路由表计算 - 对于维护的路由表进行最短路算法计算(dijstra堆优化算法)