概览
这七种常见的路由协议,每一个网络工程师都应该知道!-云社区-华为云
无线路由协议,通常可以从工作方式和算法类型两个维度进行分类:
- 按工作方式分类
- 主动式(Proactive / Table-Driven):每个节点主动维护完整的路由表,定期更新路由信息(即使没有通信需求)低延迟,高开销,RIP\OLSR\BGP
- 反应式(Reactive / On-Demand):按需发现路由,仅在需要通信时启动路由发现过程。低开销,高延迟,DSR\AODV
- 混合式(Hybrid)(结合主动和反应式)
- 按算法类型分类
- 距离向量(Distance Vector):每个节点维护到其他节点的距离(如跳数、延迟)和下一跳信息,通过邻居节点交换路由表
- 链路状态(Link State):每个节点收集全网的链路状态信息(如带宽、延迟),构建网络拓扑图,使用 Dijkstra 算法 计算最短路径。
距离向量路由协议
常见:RIP,IGRP
距离向量路由协议(Distance Vector Routing Protocols):
- 工作原理:每个路由器维护一个到所有其他路由器的距离(通常是跳数)表。路由器定期向其邻居节点发送这些信息,并从邻居接收信息更新自己的表。
- 信息传递:距离向量协议只知道直接相连的邻居的状态,不具备全网链路的详细信息。每个路由器只知道自己的邻居及其到其他节点的距离,通过邻居的更新逐步了解整个网络的状态。
- 优缺点:
- 优点:实现简单,所需资源较少。
- 缺点:收敛速度慢,易产生路由环路(尤其是在拓扑变化时),对大规模网络不太适合。
链路状态路由协议
常见:OSPF,IS-IS
链路状态路由协议(Link State Routing Protocols):
- 工作原理:每个路由器通过链路状态广告(Link State Advertisement, LSA)向全网广播自己与直接邻居的连接状态。所有路由器收集这些信息,并构建出整个网络的拓扑图。
- 信息传递:链路状态协议可以获得全体链路的信息,允许每个路由器通过网络中所有节点的链路状态信息计算到其他节点的最优路径。使用Dijkstra算法等算法进行路径计算。
- 优缺点:
- 优点:收敛速度快,能够快速适应网络的拓扑变化,支持复杂的网络结构。
- 缺点:每个路由器需存储更多的信息,相对复杂,可能导致控制开销较大。
🔬【Ad Hoc】OLSR 协议详解 (yinxiu.in)
OLSR协议学习
路由协议分类:【Ad Hoc】壹 速览 Ad Hoc 网络_ad hoc网络-CSDN博客
YouTube视频介绍OLSR:Optimized Link State Routing (OLSR) Mobile Adhoc Network Proactive Routing Protocol
OLSR算法原理:OLSR 路由算法原理 | 治部少辅
MPR的选择过程:🔬【Ad Hoc】OLSR 协议详解
OLSR是Ad Hoc自组织网络的一种,Ad Hoc 网络采用分组交换机制,网络中的每个用户终端都建有路由器和主机两种功能。作为主机,终端可以运行各种面向用户的应用程序;作为路由器,终端需要运行相应的路由协议。
OLSR本质上是一种链路状态协议的改进,传统的lsr协议包洪泛太严重了,olsr适用在移动和资源受限的情形下。
OLSR通过定期交换链路状态信息来维持路由信息(HELLO消息和TC消息)。每个节点保持一个完整的拓扑信息,因此控制信息的开销较大。OLSR 是基于状态链接的表驱动路由协议,虽然所有节点都会接收信息,但是只有很少的节点(被选为MPR的节点)有权利广播信息。
协议过程
- 节点先互传hello包,感知自己的一跳邻居和两跳邻居节点。
- 通过感知到的信息,寻找他们的MPR(节点选择自己的部分相邻节点作为MPR集,只有MPR集才能广播消息)
- MPR 的选择主要分为两步(可以参考🔬【Ad Hoc】OLSR 协议详解):
- 首先选择能够覆盖孤立两跳邻节点的一跳邻节点。这里的孤立两跳邻节点是指仅通过一个邻节点同目标节点相连的两跳邻节点。
- 在余下的一跳邻节点中,按照覆盖二跳邻节点的数量从高到低依次选择,直到覆盖所有的两跳邻节点。
- MPR 的选择主要分为两步(可以参考🔬【Ad Hoc】OLSR 协议详解):
- 路由计算,用迪杰斯特拉算法计算路由。
总结起来就是:邻居发现构建邻居表(基于hello包)—— MPR选举构建mpr表 —— 基于TC消息扩散建立拓扑表 —— 基于拓扑表建立路由表 —— 从路由表中取出最优路径,建立转发表。
OLSRv2
RFC7181:RFC7181 中文翻译 中文RFC RFC文档 RFC翻译 RFC中文版
OLSR路由协议总共拥有4种控制消息:HELLO消息、TC消息、MID消息(multiple interfacedeclaration,交换多接口声明)、HNA消息(host andnetwork association,主机和网络关联信息)。而OLSRv2路由协议仅依靠两种基本类型的控制消息:
(1) HELLO消息:OLSRv2协议的邻居发现过程使用HELLO消息。
(2)TC消息:TC消息在网络中定期被传播使得每个节点都能够获得全网的变化状态。
OLSRv2经历的阶段和构建过程
- 邻居发现阶段,构造一跳邻居表和二跳邻居表。
- MPR选择,基于一跳和二跳,构建出一个mpr表和mpr_Selector表,主要是确定哪些节点能发TC消息。
- 通过发TC,构造出拓扑表,每个点的拓扑表一开始不同,但是最后会收敛到同一张。
- 通过拓扑表,构造出路由表。
邻居发现过程使用了Hello消息,路由发现则使用另一种格式的消息:Topology Control消息。
TC消息的作用是为节点建立起全局的路由信息。只有MPR节点才会转发TC消息
基于TC消息的交换,各个节点可以维护一个Topology Table(拓扑表),基于拓扑表节点可以计算出路由表。
- 在 OLSRv2 协议中,只有对称链路才能用于路由计算。
- 非对称链路或丢失的链路无法保证双向通信,因此不能用于转发数据包。
. OLSRv2的核心改进(对比OLSRv1)
- 多接口支持:每个接口独立维护邻居关系,可跨子网协作。
- 动态链路感知:基于NHDP(Neighbor Discovery Protocol)实时探测链路状态。
- 路由度量扩展:支持ETX(Expected Transmission Count)等链路质量指标。
- MPR优化:MPR(Multi-Point Relay)选择更灵活,支持多接口协同。
Exata中的OLSRv2

- MPR selector set:这个表记录选择当前节点作为 MPR 的邻居节点集合(只有当本地节点的MPR Selector Set非空(即至少有一个邻居选择本地节点为MPR)时,本地节点才会生成并广播TC消息)。
- mpr set:当前节点选择的邻居节点,用来转发TC。
- neighbor set:这个表记录了某节点的所有的一跳邻节点。
- Two-hop neighbor set:这个表记录了可通过一跳邻节点接触的节点。
- relay set:中继表,记录两个点之间是否有中继关系。
- forward set:转发表,添加转发条目以让接口转发。
- topology set:拓扑表,由TC构建而来,用来构建路由表routing set。
- associate neighbor set:邻居关联表,来记录多接口信息。