OLSR路由协议详解 一
OLSR路由协议,全称为Optimized Link State Routing,中文名为优化链路状态路由协议,是主要用于MANET网络(Mobile Ad hoc network)的路由协议。
下面可能会用到的概念:
- 邻居节点:如果节点可以监听到节点 X,则节点 X 是节点的邻居节点。
- 2 跳邻居:通过邻居节点监听到的节点是 2 跳邻居节点,可以包含节点自身以及某些 1 跳邻居节点。
- 严格 2 跳邻居:即不是节点自身或其邻居节点,而是严格通过邻居节点监听到的节点。
- 孤立两跳邻节点:指仅通过一个邻节点同目标节点相连的两跳邻节点。
- 主要地址:在OLSR中,被定义为 OLSR 接口地址。
- 链路:两个不同 OLSR 节点接口之间相互监听形成链路。
- 对称链路:两个 OLSR 接口之间已经认证的双向链路。
核心机制---MPR机制
在OLSR路由协议中,比较核心的思想就是MPR机制。基于MPR机制,在路由表构建过程中,所有节点都可以接收信息,但是只有很少的被选定的节点才有权利传播接收到的信息,而被选定的节点称为 MPR节点。MPR节点关系到链路状态信息的广播,同时也是优化网络资源的一步,所以如何选定合适的MPR节点很重要。
MPR节点选定过程如下:
- 首先选择能够覆盖孤立两跳邻节点的一跳邻节点;
- 在剩下的一跳邻节点中,将节点根据覆盖二跳邻节点的数量从高到低排序,依序选择节点,直到覆盖所有的两跳邻节点。
数据包格式以及重要报文介绍
OLSR中任何数据包的基本布局如下(省略了IP和UDP的headers):
0 1 2 30 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Packet Length | Packet Sequence Number |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Message Type | Vtime | Message Size |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Originator Address |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Time To Live | Hop Count | Message Sequence Number |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |: MESSAGE :| |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Message Type | Vtime | Message Size |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Originator Address |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Time To Live | Hop Count | Message Sequence Number |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| |: MESSAGE :| |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+: :
其中,数据包的header主要包括:
- Packet length :数据包的字节长度。
- Packet sequence number :数据包的序列号。为每个接口维护一个单独的数据包序列号,以便顺序枚举通过接口传输的数据包。
消息的header主要包括:
- Message type :消息类型,比如Hello、 topology control(TC)之类。
- Vtime :节点收到消息后消息的有效时间。
- Message size :消息的字节大小。从本消息的Message type字段到下一个消息的Message type字段计算大小。
- Originator address :包含最初生成此消息的节点的主要地址。该字段不会在消息传播中发生改变。
- Time To Live :消息将被传播的最大跳数。
- Hop count :消息已达到的跳数。在重传消息之前,该跳数必须加 1。
- Message sequence number :消息的序列号。用于确保给定的消息不会被任何节点多次重传。
接下来就是Message,消息的主体。消息主体主要有Hello、TC报文。
Hello报文
hello报文在数据包的消息header设置如下:
- Message type :设为“HELLO_MESSAGE”
- Time To Live :设为“1”
- Vtime :设为“NEIGHB_HOLD_TIME”
Message主要格式如下:
0 1 2 30 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Reserved | Htime | Willingness |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Link Code | Reserved | Link Message Size |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Neighbor Interface Address |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Neighbor Interface Address |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+: . . . :: :+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Link Code | Reserved | Link Message Size |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Neighbor Interface Address |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Neighbor Interface Address |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
其中,各个字段的含义以及设置规则如下:
- Reserved :设为0000000000000
- HTime :节点接口 HELLO 消息的发送间隔
- Willingness :节点为其他节点携带和转发流量的意愿,主要有为 WILL_NEVER,WILL_ALWAYS 和 WILL_DEFAULT
- Link code :有关发送方接口与以下邻居接口列表之间的链路的信息。主要包括Link Type和Neighbor Type,如果Link code小于16比特,则必包含两个字段,每个字段2比特,格式如下:
7 6 5 4 3 2 1 0+-------+-------+-------+-------+-------+-------+-------+-------+| 0 | 0 | 0 | 0 | Neighbor Type | Link Type |+-------+-------+-------+-------+-------+-------+-------+-------+
其中, Link Type主要包含四种:UNSPEC_LINK(无具体信息)、ASYM_LINK(不对称链接)、SYM_LINK(对称链接)、LOST_LINK(链接丢失)。
Neighbor Types主要包含三种:
SYM_NEIGH 表示邻居至少有一个与此节点对称链接。
MPR_NEIGH 表明邻居至少有一条对称链路并且已被发送方选为 MPR。
NOT_NEIGH 表示节点不再或尚未成为对称邻居。
- Link message size :从当前 的Link Code 到下一个 Link Code 的字节长度
- Neighbor interface address :一个邻节点的接口地址
TC报文
TC报文的全称为Topology Control ,与hello同理,在数据包的消息header设置如下:
- Message type :设为“TC_MESSAGE”
- Time To Live :设为“255”
- Vtime :设为“TOP_HOLD_TIME”
Message主要格式如下:
0 1 2 30 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| ANSN | Reserved |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Advertised Neighbor Main Address |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Advertised Neighbor Main Address |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| ... |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
其中,各个字段的含义以及设置规则如下:
- Advertised Neighbor Sequence Number(ANSN):给节点提供信息,以便接收到一个 TC 消息时,可以根据ANSN来判断接收到的邻居信息是否比它已有的信息更新。
- Reserved :设为0000000000000000
- Advertised Neighbor Main Address :包含被传播邻居节点的主要地址。是选择这个节点作为 MPR 的节点的集合,也称为 MPR Selector。
OLSR路由协议详解 一相关推荐
- 帧中继和路由协议详解-在帧中继多点子接口上运行EIGRP
上一篇我们介绍了<帧中继和路由协议详解-在帧中继点到点子接口上运行EIGRP>,本篇我们开始介绍<在帧中继多点子接口上运行EIGRP>的配 置.相关概念,如子接口.IARP.D ...
- 帧中继和路由协议详解-在帧中继点到点子接口上运行EIGRP
上一篇我们介绍了在帧中继物理里接口点对点上运行EIGRP的配置,本篇我们开始介绍在帧中继点到点子接口上运行EIGRP的配置. 背景 当有多个分部的局域网通过帧中继和总部进行连接时,为了减少对总部路由器 ...
- OSPF路由协议详解
OSPF路由协议详解 一.OSPF路由协议详概述 AS自治系统分类 二.OSPF工作过程及原理 1.OSPF工作过程 2.OSPF工作原理 五种报文 三个阶段 三张表 三.OSPF区域 OSPF区域类 ...
- OLSR协议详解(1)
基本原理 数据结构 链路感知 邻居侦听 MPR选择 基本原理: 网络中每个节点只选择自己邻居节点的一个子集,作为多点中继集MPR.根据MPR的节点产生链路状态信息.通过节点不断的选择自己的MPR或该节 ...
- 计算机网络之路由协议详解
在谈路由协议之前,我们先来看一下路由器的结构: 路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组. 路由选择部分的核心是路由处理机,路由处理机可以根据选定的路由协议构造出路由表 ...
- ISIS路由协议详解(特征、与OSPF对比、拓扑结构、专业术语、路由器分类、网络类型、DIS、报文类型及抓包、邻居关系、路由渗透、路由过载OL位、ISIS认证分类、ISIS管理标签以及各种实验等)
IS-IS特征: Isis:中间系统到中间系统 链路状态路由协议 IGP协议 SPF算法 ISIS采用TLV结构,因此扩展性很好(为支持新的协议和特性,只需要扩展新的TLV或子TLV:可以轻松扩展支持 ...
- 14-EIGRP路由协议详解
1. EIGRP路由协议原理 EIGRP ( Enhanced Interior Gateway Routing Protocol )增强型内部网关路由协议,是思科公司开发的一个平衡混合型路由选择 ...
- OSPF路由协议详解及配置
文章目录 一.OSPFv2基本概念 1.1 OSPF的基本概念 1.2 层次划分模型 1.3 OSPF区域划分优势 1.4 OSPF路由器类型 1.5 OSPF路由类型 1.6 OSPF支持的网络 1 ...
- OSPF路由协议详解与实战演练
文章目录 基础学习 OSFP工作原理 基础配置 启动OSPF 配置OSPF路由器ID 接口启用OSPF 被动接口 实战 代码段: 静态ospf 代码段 后记 基础学习 OSFP工作原理 基础配置 启动 ...
最新文章
- C6678-SRIO和FPGA的通信
- 作用域和闭包的通俗理解
- 020_MySQL运算符
- Python(Windows)下安装各种库的多种方法总结--灵活使用pip
- 技术MBA打造中国未来CTO
- 基于springboot+shiro一套可落地实施安全认证框架整合
- AcWing 1055. 股票买卖 II
- matlab中rgb转hsv,matlab实现RGB与HSV(HSB)、HSL和HSI的色彩空间互转
- hive学习2(Navicat连接hive)
- [图示]做人36字诀:四)人际互动——教你赢得朋友
- 力扣Java编译器_力扣(LeetCode)位1的个数 个人题解
- WPF分享一个登录界面设计
- python的基本语法规则
- qq空间留言板php,qq留言板留言关心的话 qq空间留言板签名档图片
- redis 应用场景
- 云开发—扫码点餐系统实战
- 樊登读书会终身成长读后感_樊登读书会听书《终身成长》学习感悟
- 连接中控指纹考勤机 zkemkeeper zksoftware ZKTeco
- 《汇编语言程序设计》(双语)上机指导
- java技术栈是什么意思?一次认全9大主流技术栈!
热门文章
- C. Strange Test(位运算或)
- 用vuex对token/refresh_token 进行管理以及处理token过期问题
- Proteus:单片机LED灯一秒钟的亮灭模拟
- 【火灾检测】基于matlab实现图像特征火灾检测
- Android Glide 升级4.8 后, 原方法 animate() 无法使用
- PID里的PI调节器
- System Verilog学习笔记—随机化约束种类
- ceph设置副本的数目-2019014补
- 通过NFS挂载主机硬盘给另一台主机
- 基础知识贴----用好用活N97