Crazyflie 2.0学习周报2103-01:OLSR路由协议基本原理

OLSR路由协议基本原理

  • 1. 协议简介
  • 2. 协议内容
    • 2.1 OLSR协议核心思想——MPR机制
    • 2.2 OLSR协议的分组
      • 2.2.1 HELLO控制分组
      • 2.2.2 TC(Topology Control)控制分组
    • 2.3邻居表
      • 2.3.1 一跳邻居表
      • 2.3.2 两跳邻居表
    • 2.4 MPR Selector表
    • 2.5 拓扑表
    • 2.6 路由表
  • 3.OLSR协议拓扑建立示意图
  • 4. 参考内容

1. 协议简介

最优链路状态路由协议
协议特点:

  • 多中继节点(Multi Point Relay)机制:降低协议开销
  • 先应式路由计算:查找路由时延小
  • 最短路径:选择最短路径作为最优路径

2. 协议内容

2.1 OLSR协议核心思想——MPR机制

节点选择部分邻居节点作为它的中继节点,只有被选中的中继节点能够转发控制消息。例如,图示的A、B、C节点是MPR节点,就能够转发控制消息的节点。并且在多跳范围内,消息的转发仍然是遵循这一机制的。
Crazyflie 2.0学习周报2103-01:OLSR路由协议基本原理_第1张图片

2.2 OLSR协议的分组

OLSR中有两种分组——HELLO分组和TC分组,下面将一一介绍这两种分组格式.

2.2.1 HELLO控制分组

HELLO分组的主要作用用于链路检测,发现邻居。OLSR协议通过周期性的广播HELLO分组消息来发现邻居,建立邻居表。下图是HELLO消息数据包头部格式及个各个字段的含义:
Crazyflie 2.0学习周报2103-01:OLSR路由协议基本原理_第2张图片
Crazyflie 2.0学习周报2103-01:OLSR路由协议基本原理_第3张图片

定义代码如下:cpp//olsrPacket.h
Crazyflie 2.0学习周报2103-01:OLSR路由协议基本原理_第4张图片
两个节点互发HELLO消息后,会更新自己的邻居表。如图,A收到B发送的HELLO消息后,会将B节点加入到自己的邻居表中。
Crazyflie 2.0学习周报2103-01:OLSR路由协议基本原理_第5张图片

2.2.2 TC(Topology Control)控制分组

TC分组的作用是声明MPR信息。TC分组包含拓扑信息,节点通过该信息计算路由。
Crazyflie 2.0学习周报2103-01:OLSR路由协议基本原理_第6张图片
注:节点的TC分组需要扩散至整个网络的每个节点,而HELLO分组只在产生HELLO分组的节点的一跳范围内传播

实际Crazyflie中TC消息数据包结构及代码定义:
Crazyflie 2.0学习周报2103-01:OLSR路由协议基本原理_第7张图片Crazyflie 2.0学习周报2103-01:OLSR路由协议基本原理_第8张图片
在使用OLSR协议的网络中,每个节点都周期性发送TC分组。当一个节点收到TC消息时,就进入拓扑信息维护模块。收到TC消息必要时进行转发(实现拓扑洪泛)。如果得到网络中有一条有效的链路(拓扑),则将其添加到拓扑表中,用以计算路由。当检测到拓扑表发生变化时,转到路由建立与维护模块,重新计算路由。当收到数据包时,对其进行转发
Crazyflie 2.0学习周报2103-01:OLSR路由协议基本原理_第9张图片
如图,节点B、C、D和E是节点A的邻居节点,其中B、C、D又是节点A的MPR节点。当节点B、C、D和E收到节点A发来的TC控制消息时。首先,他们都需要判断自己是不是节点A的MPR节点:

  • B、C、D是A的MPR节点,它们会在判断TC控制消息是否是最新的
    – 如果是转发该TC控制消息
    – 否则丢弃该TC控制消息;
  • E不是A的MPR节点,不转发TC控制消息。

2.3邻居表

2.3.1 一跳邻居表

网络中每个节点根据接收和发送HELLO分组获得其两跳以内的邻居的信息,维护着一个一跳邻居表,表项格式如图:
Crazyflie 2.0学习周报2103-01:OLSR路由协议基本原理_第10张图片
实际Crazyflie中一跳邻居表代码定义:
Crazyflie 2.0学习周报2103-01:OLSR路由协议基本原理_第11张图片

2.3.2 两跳邻居表

节点储存一个两跳邻居表,描述邻居节点与对称两跳邻接点间的对称链路。

Crazyflie 2.0学习周报2103-01:OLSR路由协议基本原理_第12张图片
实际Crazyflie中两跳邻居表代码定义:
Crazyflie 2.0学习周报2103-01:OLSR路由协议基本原理_第13张图片

2.4 MPR Selector表

节点为了判断转发的哪些控制消息需要维护一张MPR Selector表。根据接收到的HELLO分组,节点就可以构造自己的MPR Selector表。表格式如图:
Crazyflie 2.0学习周报2103-01:OLSR路由协议基本原理_第14张图片
实际Crazyflie中MPR Selector表代码定义:
Crazyflie 2.0学习周报2103-01:OLSR路由协议基本原理_第15张图片

2.5 拓扑表

网络中每一个节点都维护一张拓扑表,记录从TC分组中得到的拓扑信息,并由此信息计算路由。节点将网络中其他节点的MPR信息作为拓扑条目记录在拓扑表中。
Crazyflie 2.0学习周报2103-01:OLSR路由协议基本原理_第16张图片此条目说明了T_dest_addr已经选择了T_last_addr作为MPR,而且T_last_addr已经发布了序列号为T_seq的MPR Selector集信息。T_time作为保持时间,过期就删除该条目。

实际Crazyflie中拓扑表代码定义:
Crazyflie 2.0学习周报2103-01:OLSR路由协议基本原理_第17张图片

2.6 路由表

网络中每个节点维护一个路由表,表中保存了节点到网络中所有可达目的节点的路由,对于路由已知的网络中的每一个目的地,表项被存储在路由表中,所有路由为到达或者部分已知的表项不被记录。
Crazyflie 2.0学习周报2103-01:OLSR路由协议基本原理_第18张图片
实际Crazyflie中路由表代码定义:Crazyflie 2.0学习周报2103-01:OLSR路由协议基本原理_第19张图片

3.OLSR协议拓扑建立示意图

Crazyflie 2.0学习周报2103-01:OLSR路由协议基本原理_第20张图片

4. 参考内容

  1. OLSR协议
  2. OLSR协议分析与设计
  3. OLSR协议流程

你可能感兴趣的:(Crazyflie,学习,网络,物联网,网络协议)