Ad Hoc车载自组网路由协议精讲 第3篇:车载环境下的路由协议策略与算法
摘要
本文将带你深入了解车载环境下的路由协议设计策略与核心算法,帮助你掌握从MANET到VANET的协议演进、链路建立策略、请求分发机制优化、服务质量评估指标等高级知识。你将学到如何针对车载网络的高速移动、道路约束等特点设计高效路由协议。
学习目标
阅读完本文后,你将能够:
- 理解协议演进过程:掌握从MANET到VANET的技术演进路径和关键差异
- 掌握链路策略:理解链路建立、维护和断开的处理机制
- 学习分发算法:了解请求消息的高效分发策略和优化方法
- 掌握QoS评估:认识车载网络的服务质量指标和评估方法
- 分析协议分类:理解车载路由协议的分类体系和代表协议
引言:车载网络的独特挑战
在前两篇文章中,我们学习了Ad Hoc通信的基本概念和路由协议的设计原理。然而,车载网络(VANET)并非只是MANET的简单应用,它面临着更加独特的挑战和约束。
51学通信提示:车载网络与普通MANET的核心区别在于移动模型。车辆沿着道路移动,受交通规则约束,移动具有一定的可预测性。这种特性使得通用的MANET协议在VANET环境中性能不佳,需要专门设计。
想象一个繁忙的城市交叉口,数十辆车从不同方向驶来,每辆车都可能在几秒钟内离开当前区域。在这种高度动态的环境中,如何建立稳定的路由?如何保证关键安全消息的可靠传输?这需要深入理解车载环境的特殊性。
一、从MANET到VANET的协议演进
1.1 MANET协议的基本假设
MANET(移动自组网)协议最初是为一般移动场景设计的,基于以下假设:
基本假设:
- 节点可以在二维平面内自由移动
- 移动方向和速度随机
- 所有节点地位平等
- 能量是关键约束
典型协议:
- AODV(按需距离矢量路由)
- DSR(动态源路由)
- OLSR(优化链路状态路由)
- TORA(临时按序路由算法)
1.2 车载网络的特殊性
车载网络打破了MANET的许多假设,具有独特的特点:
flowchart TD subgraph Comparison["MANET vs VANET 特性对比"] direction TB subgraph MANET["MANET特性"] M1["自由移动<br/>二维平面"] M2["随机方向<br/>不可预测"] M3["速度较低<br/>通常<20km/h"] M4["能量受限<br/>电池供电"] M5["稀疏部署<br/>几十个节点"] end subgraph VANET["VANET特性"] V1["约束移动<br/>道路网络"] V2["方向可预测<br/>沿道路"] V3["高速移动<br/>可达200km/h"] V4["能量充足<br/>车载电源"] V5["密集部署<br/>数百个节点"] end M1 -.->|需要适配| V1 M2 -.->|需要适配| V2 M3 -.->|需要适配| V3 M4 -.->|不再适用| V4 M5 -.->|需要适配| V5 end style MANET fill:#ffebee,stroke:#c62828 style VANET fill:#e8f5e9,stroke:#2e7d32 style Comparison fill:#e1f5fe,stroke:#0277bd,stroke-width:3px
图表讲解:这张图对比了MANET和VANET的核心特性差异。MANET假设节点可以在二维平面内自由移动,移动方向随机且不可预测。而VANET中车辆沿着道路移动,移动方向受道路约束,具有可预测性。MANET节点速度通常较低(如行人携带的设备),而VANET中车辆可以高速移动。MANET的能量约束在VANET中不再适用,因为车辆有充足的车载电源。VANET的部署密度也远高于MANET,在交通高峰期可能同时有数百辆车在通信范围内。
这些差异意味着直接使用MANET协议在VANET中性能不佳,需要针对车载环境进行专门优化。
1.3 协议演进的关键里程碑
flowchart LR subgraph Timeline["车载路由协议演进时间线"] direction TB T1[1990s<br/>MANET研究起步<br/>通用移动自组网] T2[2000s初<br/>协议标准化<br/>AODV/DSR/OLSR] T3[2000s中<br/>VANET专用协议<br/>基于位置路由] T4[2010s初<br/>集群化协议<br/>CBL等] T5[2010s末<br/>C-V2X协议<br/>3GPP标准] T6[2020s<br/>5G-V2X<br/>超低延迟高可靠] end T1 --> T2 --> T3 --> T4 --> T5 --> T6 style T1 fill:#ffebee,stroke:#c62828 style T2 fill:#fff3e0,stroke:#ef6c00 style T3 fill:#fff9c4,stroke:#f57f17 style T4 fill:#e8f5e9,stroke:#2e7d32 style T5 fill:#e8eaf6,stroke:#283593 style T6 fill:#f3e5f5,stroke:#6a1b9a style Timeline fill:#e1f5fe,stroke:#0277bd,stroke-width:3px
图表讲解:这个时间线展示了车载路由协议的演进过程。1990年代是MANET研究的起步阶段,主要针对通用的移动自组网场景。2000年代初,一系列MANET协议(AODV、DSR、OLSR)被标准化。2000年代中期,研究人员开始设计专门针对VANET的协议,特别是基于位置的地理路由协议。2010年代初,集群化协议开始出现,如CBL协议,通过分簇组织车辆以提高可扩展性。2010年代末,随着C-V2X技术的发展,3GPP开始制定车联网路由协议标准。2020年代,5G-V2X技术带来了超低延迟和高可靠性的新可能。
1.4 车载路由协议的分类体系
车载路由协议可以从多个维度进行分类:
flowchart TD VANETProtocols["VANET路由协议分类"] VANETProtocols --> InfoBased["基于信息类型"] VANETProtocols --> TopologyBased["基于拓扑结构"] VANETProtocols --> GeoBased["基于位置信息"] VANETProtocols --> BroadcastBased["基于广播方式"] VANETProtocols --> ClusterBased["基于集群结构"] InfoBased --> TopoInfo["拓扑信息<br/>AODV/OLSR"] InfoBased --> GeoInfo["位置信息<br/>GPSR/GPCR"] TopologyBased --> FlatTopo["平面结构<br/>所有节点平等"] TopologyBased --> HierTopo["分层结构<br/>簇头+成员"] GeoBased --> Greedy["贪婪转发<br/>GPSR"] GeoBased --> Aware["道路感知<br/>GPCR"] BroadcastBased --> Simple["简单泛洪<br/>全网广播"] BroadcastBased --> Smart["智能泛洪<br/>受控广播"] ClusterBased --> Static["静态集群<br/>固定边界"] ClusterBased --> Dynamic["动态集群<br/>CBL等"] style VANETProtocols fill:#e1f5fe,stroke:#0277bd,stroke-width:3px style InfoBased fill:#e8f5e9,stroke:#2e7d32 style TopologyBased fill:#fff9c4,stroke:#f57f17 style GeoBased fill:#e0f2f1,stroke:#00695c style BroadcastBased fill:#f3e5f5,stroke:#6a1b9a style ClusterBased fill:#ffebee,stroke:#c62828
图表讲解:这张图展示了VANET路由协议的完整分类体系。按信息类型分为基于拓扑信息(使用网络连接关系)和基于位置信息(使用GPS坐标)的协议。按拓扑结构分为平面结构(所有节点平等)和分层结构(有簇头和成员之分)的协议。基于位置的协议又可分为贪婪转发(直接选择最近邻居)和道路感知(考虑道路约束)的协议。按广播方式分为简单泛洪和智能泛洪。按集群结构分为静态集群(边界固定)和动态集群(如CBL,根据实际车辆位置动态形成)的协议。
二、链路建立策略与维护机制
2.1 链路建立的挑战
在车载网络中,链路建立面临独特挑战:
物理层挑战:
- 多径效应:城市环境中反射和散射严重
- 多普勒频移:高速移动导致频率偏移
- 阴影效应:建筑物和地形遮挡
MAC层挑战:
- 隐藏节点:两个节点无法感知彼此而同时发送
- 暴露节点:节点不必要地退避
- 竞争接入:大量车辆竞争有限信道
网络层挑战:
- 快速拓扑变化:链路频繁建立和断开
- 路由不稳定:已建立的路由可能很快失效
2.2 链路质量评估
链路质量评估是链路建立的基础。
评估指标:
-
接收信号强度(RSSI)
- 优点:测量简单
- 缺点:受环境影响大
-
信噪比(SNR)
- 优点:更准确反映链路质量
- 缺点:需要噪声测量
-
链路质量指示器(LQI)
- 优点:综合指标
- 缺点:硬件依赖
-
丢包率
- 优点:直接反映传输质量
- 缺点:需要时间累积
-
预期传输时间(ETX)
- 优点:考虑双向质量
- 缺点:计算复杂
flowchart TD subgraph LinkQuality["链路质量评估决策"] Node["节点A收到B的信标"] Node --> Measure["测量质量指标"] Measure --> RSSI["RSSI: -75dBm"] Measure --> SNR["SNR: 20dB"] Measure --> LQI["LQI: 85/100"] RSSI --> Decision1{"质量可接受?"} SNR --> Decision2{"质量可接受?"} LQI --> Decision3{"质量可接受?"} Decision1 -->|是| Establish["建立链路"] Decision2 -->|是| Establish Decision3 -->|是| Establish Decision1 -->|否| Reject["拒绝链路"] Decision2 -->|否| Reject Decision3 -->|否| Reject Establish --> Maintain["进入维护阶段<br/>持续监测质量"] Maintain --> Degrade{"质量退化?"} Degrade -->|是| Release["释放链路"] Degrade -->|否| Maintain end style Node fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px style Establish fill:#fff9c4,stroke:#f57f17,stroke-width:2px style Reject fill:#ffebee,stroke:#c62828 style Maintain fill:#e1f5fe,stroke:#0277bd style Release fill:#ffcdd2,stroke:#c62828
图表讲解:这张图展示了链路质量评估和建立决策的完整流程。当节点A收到节点B的信标后,测量多个质量指标(RSSI、SNR、LQI)。如果所有指标都满足可接受阈值,则建立链路并进入维护阶段。在维护阶段持续监测链路质量,如果质量下降到不可接受的水平,则释放链路。这种多指标评估机制比单一指标更可靠,可以降低错误建立链路的概率。
2.3 链路建立策略
不同的协议采用不同的链路建立策略:
2.3.1 主动式链路建立
节点主动发送探测消息,发现周围邻居。
优点:
- 链路发现快
- 适合高移动场景
缺点:
- 控制开销大
- 可能造成信道拥塞
代表协议:OLSR、TBRPF
sequenceDiagram autonumber participant A as 节点A participant B as 节点B participant C as 节点C Note over A,C: 主动式链路建立 A->>B: Hello消息 Note right of A: 周期性发送<br/>发现邻居 B->>A: Hello消息 B->>C: Hello消息 A->>A: 收到B的Hello<br/>添加到邻居表 C->>B: Hello消息 B->>B: 收到A和C的Hello<br/>建立双向链路 Note over A,C: 链路建立完成
图表讲解:这个序列图展示了主动式链路建立的过程。节点A、B、C周期性发送Hello消息,每个节点维护一个邻居表,记录收到过哪些节点的Hello消息。当节点收到某节点的Hello消息时,将该节点添加到邻居表,建立链路。这种周期性发送Hello的机制确保链路的及时发现,但也带来了持续的控制开销。
2.3.2 被动式链路建立
节点不主动探测,而是通过监听数据流发现邻居。
优点:
- 控制开销小
- 适合低流量场景
缺点:
- 链路发现延迟大
- 低流量场景下可能无法发现
代表协议:某些配置下的AODV
2.3.3 混合式链路建立
结合主动和被动方式,根据场景动态选择。
策略:
- 高移动时使用主动式
- 低流量时使用被动式
- 定期使用主动式更新
2.4 链路维护机制
链路建立后需要持续维护,确保链路信息的时效性。
维护任务:
- 双向性验证:确保链路是双向可达的
- 质量监测:持续监测链路质量
- 超时管理:处理链路超时
- 状态更新:更新链路状态信息
维护机制:
stateDiagram-v2 [*] --> Idle: 节点启动 Idle --> Discovery: 发送Hello Discovery --> OneWay: 收到单向Hello OneWay --> BiDir: 收到双向Hello OneWay --> Timeout: Hello超时 BiDir --> Active: 链路激活 Active --> Degraded: 质量下降 Active --> Timeout: Hello超时 Degraded --> Active: 质量恢复 Degraded --> Timeout: 继续下降 Timeout --> Idle: 释放资源 Active --> Idle: 显式断开
图表讲解:这个状态图展示了链路维护的状态转换。节点启动后进入空闲状态,发送Hello消息进入发现状态。如果只收到单向Hello,进入单向状态;如果收到双向Hello,进入双向状态。双向状态的链路被激活用于数据传输。在活跃状态下,如果链路质量下降,进入降级状态;如果质量恢复,返回活跃状态;如果Hello超时,则进入超时状态并最终释放资源回到空闲状态。这种状态机制确保链路管理的可靠性。
2.5 快速链路断开检测
在高速移动的车载环境中,快速检测链路断开至关重要。
检测方法:
-
Hello超时检测
- 设置较短的Hello间隔
- 丢失少量Hello即判定断开
-
链路层反馈
- 利用MAC层的ACK超时
- 更快的检测速度
-
信号强度监测
- RSSI快速下降预警
- 提前采取行动
-
移动性预测
- 基于位置和速度预测
- 提前切换路由
快速断开的价值:
- 减少无效数据传输
- 加速路由恢复
- 降低端到端延迟
三、请求分发机制与优化
3.1 泛洪机制基础
泛洪是路由发现的基本方法,将消息传播到整个网络。
基本泛洪问题:
- 广播风暴:大量重复消息
- 资源浪费:不必要的转发
- 碰撞增加:多个节点同时发送
3.2 泛洪优化策略
3.2.1 序列号去重
每个消息携带序列号,节点记录已处理的消息。
flowchart TD subgraph SeqDedup["序列号去重机制"] direction TB Receive["收到广播消息"] --> Check{"序列号<br/>在缓存中?"} Check -->|是| Drop["丢弃消息<br/>已处理过"] Check -->|否| Process["处理消息"] Process --> Record["记录序列号"] Record --> Forward{"需要转发?"} Forward -->|是| Rebroadcast["重新广播"] Forward -->|否| Done["处理完成"] Rebroadcast --> Done Drop --> Done end style Receive fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px style Process fill:#fff9c4,stroke:#f57f17,stroke-width:2px style Drop fill:#ffebee,stroke:#c62828 style Rebroadcast fill:#e1f5fe,stroke:#0277bd style Done fill:#c8e6c9,stroke:#2e7d32
图表讲解:这张图展示了序列号去重机制的工作流程。当节点收到广播消息时,首先检查该消息的序列号是否在缓存中。如果已经存在,说明该消息已经被处理过,直接丢弃。如果是新消息,则处理并记录序列号,然后决定是否需要转发。这种简单的机制可以有效避免重复处理和转发,大幅减少泛洪开销。
3.2.2 随机延迟
节点在转发前等待随机时间,避免碰撞。
好处:
- 减少碰撞概率
- 给接收节点时间处理
挑战:
- 增加延迟
- 延迟计算复杂
3.2.3 受控泛洪
不是所有节点都转发,选择部分节点转发。
选择策略:
- 距离基准:距离较远的节点优先转发
- 角度基准:沿不同方向的节点转发
- 连接度基准:连接度高的节点转发
flowchart TD subgraph ControlledFlooding["受控泛洪决策"] direction TB Sender["源节点S<br/>广播RREQ"] Neighbors["邻居节点集合<br/>A,B,C,D,E"] A["节点A<br/>距离S: 100m<br/>方向: 北"] B["节点B<br/>距离S: 50m<br/>方向: 东北"] C["节点C<br/>距离S: 200m<br/>方向: 东"] D["节点D<br/>距离S: 80m<br/>方向: 东南"] E["节点E<br/>距离S: 150m<br/>方向: 南"] Sender --> Neighbors Neighbors --> A Neighbors --> B Neighbors --> C Neighbors --> D Neighbors --> E A --> DecisionA{"转发条件?"} B --> DecisionB{"转发条件?"} C --> DecisionC{"转发条件?"} D --> DecisionD{"转发条件?"} E --> DecisionE{"转发条件?"} DecisionA -->|距离>阈值| ForwardA["转发: 是"] DecisionB -->|距离<阈值| NoForwardB["转发: 否"] DecisionC -->|距离>阈值| ForwardC["转发: 是"] DecisionD -->|距离<阈值| NoForwardD["转发: 否"] DecisionE -->|距离>阈值| ForwardE["转发: 是"] end style Sender fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px style ForwardA fill:#fff9c4,stroke:#f57f17,stroke-width:2px style ForwardC fill:#fff9c4,stroke:#f57f17,stroke-width:2px style ForwardE fill:#fff9c4,stroke:#f57f17,stroke-width:2px style NoForwardB fill:#ffcdd2,stroke:#c62828 style NoForwardD fill:#ffcdd2,stroke:#c62828 style ControlledFlooding fill:#e1f5fe,stroke:#0277bd,stroke-width:3px
图表讲解:这张图展示了受控泛洪的距离基准策略。源节点S广播路由请求(RREQ)后,邻居节点A、B、C、D、E都收到消息。每个节点根据自己的距离决定是否转发。距离较远的节点(C、E)转发消息,距离较近的节点(B、D)不转发。这种策略可以确保消息向更远的地方传播,同时在近处减少冗余转发。
3.2.4 地理约束泛洪
利用地理信息限制泛洪区域。
约束方式:
- 区域泛洪:只在目的区域泛洪
- 方向泛洪:只向目的方向泛洪
- 道路约束:沿道路泛洪
3.3 车载环境下的分发优化
车载环境可以利用特殊信息优化分发。
道路感知分发:
- 沿道路网络传播
- 不考虑道路外的节点
- 减少无效传播
交通流感知:
- 考虑车辆密度
- 在密集区域使用更积极的策略
- 在稀疏区域使用更保守的策略
预测性分发:
- 预测车辆移动方向
- 在车辆可能到达的区域预先分发
- 提高命中率
flowchart TD subgraph RoadAware["道路感知分发策略"] direction TB Source["源车辆S<br/>位于路口1"] Roads["道路网络"] Road1["道路1: 东西向<br/>车辆密度: 高"] Road2["道路2: 南北向<br/>车辆密度: 中"] Road3["道路3: 环路<br/>车辆密度: 低"] Source --> Roads Roads --> Road1 Roads --> Road2 Roads --> Road3 Road1 --> Strategy1{"分发策略"} Road2 --> Strategy2{"分发策略"} Road3 --> Strategy3{"分发策略"} Strategy1 -->|密度高| Aggressive["积极策略<br/>多节点转发"] Strategy2 -->|密度中| Moderate["适中策略<br/>部分节点转发"] Strategy3 -->|密度低| Conservative["保守策略<br/>少数节点转发"] end style Source fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px style Aggressive fill:#ffebee,stroke:#c62828 style Moderate fill:#fff9c4,stroke:#f57f17 style Conservative fill:#e1f5fe,stroke:#0277bd style RoadAware fill:#f3e5f5,stroke:#4a148c,stroke-width:3px
图表讲解:这张图展示了道路感知的分发策略。源车辆S位于路口1,有三条道路分别通向不同方向。根据每条道路上的车辆密度,采用不同的分发策略。在车辆密度高的道路1上,使用积极策略,让多个节点转发消息以确保覆盖。在车辆密度中等的道路2上,使用适中策略。在车辆密度低的道路3上,使用保守策略,只让少数节点转发以节省开销。这种差异化的策略可以在保证覆盖率的同时优化开销。
四、服务质量评估指标体系
4.1 网络层QoS指标
路由协议的性能需要通过一系列指标评估。
4.1.1 基本性能指标
| 指标 | 定义 | 测量方法 | 目标值 |
|---|---|---|---|
| 包投递率 | 成功送达的数据包比例 | 接收包数/发送包数 | >95% |
| 端到端时延 | 数据包从源到目的的时间 | 到达时间-发送时间 | <100ms |
| 路由开销 | 控制消息与数据消息的比例 | 控制包数/数据包数 | <20% |
| 吞吐量 | 单位时间传输的数据量 | 字节数/时间 | 最大 |
4.1.2 路由特有指标
| 指标 | 定义 | 重要性 |
|---|---|---|
| 路径长度 | 路径的跳数 | 影响时延和可靠性 |
| 路由发现时间 | 建立路由所需时间 | 影响通信延迟 |
| 路由失效次数 | 单位时间内失效的路由数 | 影响可靠性 |
| 路由恢复时间 | 失效后恢复路由的时间 | 影响通信连续性 |
4.2 应用层QoS指标
不同应用对QoS有不同要求:
flowchart TD subgraph AppQoS["应用层QoS需求"] direction TB subgraph Safety["安全应用"] S1["碰撞预警"] S2["紧急制动"] S3["交叉口防撞"] end subgraph Efficiency["效率应用"] E1["交通流优化"] E2["路径规划"] E3["车队管理"] end subgraph Comfort["舒适应用"] C1["信息娱乐"] C2["互联网接入"] C3["软件更新"] end Safety --> SafetyReq["时延: <100ms<br/>可靠性: >99.99%"] Efficiency --> EfficiencyReq["时延: <500ms<br/>可靠性: >99%"] Comfort --> ComfortReq["时延: <1s<br/>可靠性: >95%"] end style Safety fill:#ffebee,stroke:#c62828,stroke-width:3px style Efficiency fill:#fff9c4,stroke:#f57f17,stroke-width:2px style Comfort fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px style SafetyReq fill:#ffcdd2,stroke:#c62828 style EfficiencyReq fill:#ffecb3,stroke:#f57f17 style ComfortReq fill:#c8e6c9,stroke:#2e7d32
图表讲解:这张图展示了不同应用类型对QoS的需求差异。安全应用(碰撞预警、紧急制动、交叉口防撞)对时延和可靠性的要求最高,时延必须小于100毫秒,可靠性必须达到99.99%以上。效率应用(交通流优化、路径规划、车队管理)的要求稍低,时延小于500毫秒,可靠性大于99%。舒适应用(信息娱乐、互联网接入、软件更新)的要求最低,时延可以容忍到1秒,可靠性大于95%即可。路由协议需要根据应用类型提供不同级别的服务。
4.3 车载环境特有的QoS考量
车载网络有一些特有的QoS考量因素:
4.3.1 移动性影响
高速移动的影响:
- 链路持续时间短
- 切换频率高
- 路由不稳定
应对策略:
- 预测性路由切换
- 多路径传输
- 快速恢复机制
4.3.2 网络密度影响
高密度场景:
- 信道竞争激烈
- 碰撞增加
- 吞吐量下降
低密度场景:
- 网络可能分区
- 连接性差
- 路由困难
4.3.3 优先级机制
不同类型的数据应该有不同优先级:
| 优先级 | 数据类型 | 原因 | 处理方式 |
|---|---|---|---|
| 最高 | 安全告警 | 关系生命安全 | 立即发送,使用专用信道 |
| 高 | 控制消息 | 维护网络运行 | 优先处理 |
| 中 | 效率数据 | 改善交通 | 正常处理 |
| 低 | 舒适数据 | 非关键 | 低负载时处理 |
4.4 QoS保障机制
4.4.1 资源预留
为关键应用预留资源。
方法:
- 带宽预留
- 时隙预留
- 信道预留
挑战:
- 资源有限
- 动态拓扑
- 公平性
4.4.2 优先级队列
使用优先级队列区分不同类型的消息。
flowchart TD subgraph PriorityQueue["优先级队列机制"] direction TB Incoming["待发送消息"] --> Classify{"消息类型"} Classify -->|安全| P0["优先级0: 安全<br/>最高优先级"] Classify -->|控制| P1["优先级1: 控制<br/>高优先级"] Classify -->|效率| P2["优先级2: 效率<br/>中优先级"] Classify -->|舒适| P3["优先级3: 舒适<br/>低优先级"] P0 --> Scheduler["调度器"] P1 --> Scheduler P2 --> Scheduler P3 --> Scheduler Scheduler --> Check{"高优先级有消息?"} Check -->|是| SendHigh["发送高优先级"] Check -->|否| SendLow["发送低优先级"] SendHigh --> Channel["无线信道"] SendLow --> Channel end style P0 fill:#ffebee,stroke:#c62828,stroke-width:2px style P1 fill:#fff9c4,stroke:#f57f17,stroke-width:2px style P2 fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px style P3 fill:#e1f5fe,stroke:#0277bd,stroke-width:2px style Channel fill:#f3e5f5,stroke:#4a148c,stroke-width:2px style PriorityQueue fill:#e0f2f1,stroke:#00695c,stroke-width:3px
图表讲解:这张图展示了优先级队列的工作机制。待发送的消息首先根据类型分类到不同的优先级队列。优先级0用于安全消息,优先级最高;优先级1用于控制消息;优先级2用于效率数据;优先级3用于舒适数据,优先级最低。调度器总是优先发送高优先级队列中的消息,只有当高优先级队列为空时才发送低优先级消息。这种机制确保关键消息能够及时传输,即使在网络负载较重的情况下。
4.4.3 拥塞控制
检测和缓解网络拥塞。
拥塞检测:
- 信道利用率高
- 包延迟增加
- 丢包率上升
拥塞缓解:
- 限制低优先级流量
- 调整发送速率
- 选择替代路径
五、典型车载路由协议分析
5.1 基于拓扑的路由协议
5.1.1 AODV(按需距离矢量路由)
特点:
- 按需路由发现
- 使用序列号防止环路
- 支持单播和组播
优点:
- 开销小
- 适合间歇通信
- 实现简单
缺点:
- 路由发现延迟高
- 不适合高移动场景
车载适用性:
- 适合车辆密度中等、移动速度较低的场景
- 在高速移动场景下性能下降
5.1.2 OLSR(优化链路状态路由)
特点:
- 表驱动路由
- 使用多点中继(MPR)减少泛洪
- 周期性更新拓扑
优点:
- 路由发现快
- 适合持续通信
- 泛洪开销低
缺点:
- 控制开销大
- 浪费资源维护不使用的路由
车载适用性:
- 适合需要快速响应的安全应用
- 在高密度场景下开销过大
5.2 基于位置的路由协议
5.2.1 GPSR(贪婪周边无状态路由)
特点:
- 使用位置信息路由
- 无状态(不维护路由表)
- 贪婪转发+周边转发
优点:
- 可扩展性好
- 适应快速移动
- 存储开销小
缺点:
- 依赖位置服务
- 可能有局部最优问题
- 道路约束未考虑
flowchart TD subgraph GPSR["GPSR转发决策"] direction TB Current["当前节点C<br/>位置: xc, yc"] Dest["目的节点D<br/>位置: xd, yd"] Current --> GetNeighbors["获取邻居位置"] GetNeighbors --> Neighbors["邻居集合<br/>N1, N2, N3, N4"] Neighbors --> Greedy["贪婪模式"] Greedy --> FindClosest["找最近D的邻居"] FindClosest --> Check{"找到更近的<br/>邻居?"} Check -->|是| Forward["转发到该邻居"] Check -->|否| Perimeter["周边模式"] Perimeter --> RightHand["右手规则<br/>沿边界转发"] RightHand --> GreedyCheck{"可以回到<br/>贪婪模式?"} GreedyCheck -->|是| Greedy GreedyCheck -->|否| RightHand end style Current fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px style Dest fill:#ffebee,stroke:#c62828,stroke-width:2px style Forward fill:#fff9c4,stroke:#f57f17,stroke-width:2px style GPSR fill:#e1f5fe,stroke:#0277bd,stroke-width:3px
图表讲解:这张图展示了GPSR协议的转发决策过程。当前节点C获取所有邻居的位置信息后,首先尝试贪婪模式,选择距离目的节点D最近的邻居转发。如果存在这样的邻居,则继续贪婪转发。如果不存在更近的邻居(即当前节点是局部最优点),则切换到周边模式,使用右手规则沿边界转发。在周边模式下,协议会检查是否可以回到贪婪模式。这种贪婪+周边的混合机制可以有效处理局部最优问题。
5.2.2 GPCR(道路感知的地理路由)
特点:
- 考虑道路约束
- 沿道路转发
- 在交叉口决策
优点:
- 更适合车载环境
- 避免进入死胡同
- 利用道路地图
缺点:
- 需要道路地图
- 计算复杂度高
5.3 基于集群的路由协议
5.3.1 CBL(链-支-叶协议)
CBL协议是我们将在下一篇文章详细介绍的重要内容,这里简要介绍其核心思想。
特点:
- 三层分层结构
- 动态集群形成
- 道路感知的组织
优点:
- 可扩展性好
- 适应高密度场景
- 道路结构利用
结构:
- 链(Chain):沿道路的车辆序列
- 支(Branch):从链分出的支路
- 叶(Leaf):集群末端车辆
flowchart TD subgraph CBLStructure["CBL组织结构"] direction TB Chain["链: 主干道车辆"] Branch1["支1: 右转分支"] Branch2["支2: 左转分支"] Leaf1["叶1: 分支末端"] Leaf2["叶2: 分支末端"] C1["车辆C1"] --> C2["车辆C2"] --> C3["车辆C3"] C2 --> B1_1["车辆B1_1"] --> B1_2["车辆B1_2"] C3 --> B2_1["车辆B2_1"] --> B2_2["车辆B2_2"] Chain --> C1 Chain --> C2 Chain --> C3 Branch1 --> B1_1 Branch1 --> B1_2 Leaf1 --> B1_2 Branch2 --> B2_1 Branch2 --> B2_2 Leaf2 --> B2_2 end style Chain fill:#e8f5e9,stroke:#2e7d32,stroke-width:2px style Branch1 fill:#fff9c4,stroke:#f57f17,stroke-width:2px style Branch2 fill:#fff9c4,stroke:#f57f17,stroke-width:2px style Leaf1 fill:#e1f5fe,stroke:#0277bd,stroke-width:2px style Leaf2 fill:#e1f5fe,stroke:#0277bd,stroke-width:2px style CBLStructure fill:#f3e5f5,stroke:#4a148c,stroke-width:3px
图表讲解:这张图展示了CBL协议的组织结构。主干道上的车辆C1、C2、C3形成”链”结构。在某个交叉口,车辆C1的分支(B1_1、B1_2)形成”支1”,车辆C3的分支(B2_1、B2_2)形成”支2”。每个分支的末端车辆是”叶”。这种三层结构很好地反映了道路网络的特点,可以高效地组织大规模车辆。我们将在下一篇文章中深入分析CBL协议的工作原理。
核心概念总结
| 概念 | 定义 | 应用场景 | 设计考量 |
|---|---|---|---|
| MANET到VANET演进 | 从通用移动自组网到车载专用网络的协议发展 | 协议选择 | 考虑移动模型、能量约束 |
| 链路质量评估 | 通过RSSI、SNR等指标评估链路质量 | 链路建立 | 多指标综合评估 |
| 受控泛洪 | 选择性转发消息以减少开销 | 路由发现 | 平衡覆盖率和开销 |
| 道路感知分发 | 沿道路网络传播消息 | 车载环境 | 利用地图信息 |
| QoS分级 | 为不同应用提供不同优先级 | 资源分配 | 安全应用优先 |
| 集群路由 | 通过分簇提高可扩展性 | 大规模网络 | 集群形成和维护开销 |
常见问题解答
Q1:为什么MANET协议在VANET中性能不佳?需要做哪些改进?
答:MANET协议在VANET中性能不佳,主要是由于两者在设计假设上存在根本差异。理解这些差异是进行针对性改进的基础。
首先,移动模型完全不同。MANET协议假设节点可以在二维平面内自由移动,移动方向随机且不可预测。而VANET中的车辆沿着道路移动,移动方向受道路约束,具有一定的可预测性。这种差异导致MANET协议的路由预测机制在VANET中失效,需要改进路由决策以利用道路约束信息。
其次,移动速度差异巨大。MANET假设的节点速度通常较低(如行人携带的设备),而VANET中车辆可以以200公里/小时的速度移动。高速移动导致链路持续时间极短,路由可能在建立后很快就失效。改进方法包括:使用更频繁的路由更新、采用预测性路由切换、使用多路径传输提高可靠性。
第三,网络规模和密度差异。MANET通常假设几十个节点的稀疏网络,而VANET在交通高峰时可能有数百辆车同时存在。大规模网络需要更好的可扩展性。改进方向包括:采用分层路由结构(如CBL)、使用受控泛洪减少控制开销、设计更高效的路由聚合机制。
第四,能量约束在VANET中不再是关键因素。车辆有充足的车载电源,这使得MANET协议中为了节能而设计的机制在VANET中成为不必要的开销。可以去掉这些机制,专注于时延和可靠性优化。
最后,VANET可以利用地理信息改进路由。车辆配备GPS,可以获取精确的位置信息;配合电子地图,可以了解道路网络拓扑。这些信息可以用于设计地理路由协议(如GPSR、GPCR),实现更高效的路由决策。
51学通信认为,MANET协议的改进应该根据具体应用场景进行。对于安全应用,时延是最关键的因素,可以使用表驱动协议(如改进的OLSR)降低路由发现延迟。对于效率应用,开销是关键因素,可以使用按需协议(如改进的AODV)减少控制流量。
Q2:车载网络中如何平衡路由发现延迟和控制开销?有什么优化策略?
答:路由发现延迟和控制开销之间存在根本的权衡关系。主动式路由协议持续维护路由表,发现延迟低但开销大;按需路由协议只在需要时建立路由,开销小但延迟高。平衡这两者需要智能的优化策略。
一种有效的策略是混合式路由,在不同场景下使用不同的路由模式。例如,在交通密集的城市区域,链路相对稳定,可以使用主动式路由保证低延迟;在交通稀疏的乡村区域,使用按需路由节省开销。这种自适应策略可以根据网络条件动态切换,实现延迟和开销的平衡。
另一种策略是预测性路由建立。利用车辆的位置、速度和方向信息,可以预测未来需要建立的路由。例如,当车辆A正在向车辆B的方向移动时,可以提前建立A到B的路由,即使当前没有通信需求。这种预测可以显著降低路由发现延迟,而控制开销增加有限,因为只需要对”可能需要”的路由提前建立,而不是所有路由。
还有一种策略是智能缓存管理。按需路由协议建立的路由可以缓存一定时间,供后续通信使用。缓存的过期时间设置需要仔细权衡:太短会导致频繁重新发现,太长可能使用失效路由。自适应的缓存过期时间,根据链路质量动态调整,可以优化性能。
链路质量预测也是一种有效策略。通过监测信号强度变化趋势,可以预测链路即将失效,提前发起新的路由发现。这种预测性切换可以在链路实际失效前完成路由重建,避免通信中断,同时不会增加太多控制开销。
51学通信站长爱卫生指出,在实际部署中,还应该考虑应用类型的差异。对于安全应用,延迟是关键,应该优先考虑主动式或预测性路由;对于舒适应用,开销更重要,可以使用按需路由。这种差异化的策略可以在整体上优化网络性能。
Q3:在高密度车载网络中,如何避免广播风暴和控制消息拥塞?
答:高密度车载网络中的广播风暴和控制消息拥塞是严重问题,可能导致网络性能急剧下降。解决这个问题需要从多个层面采取措施。
在MAC层,可以采用自适应的退避机制。传统退避算法在高密度场景下可能导致大量节点同时退避,然后同时发送,造成碰撞。自适应退避根据当前网络密度动态调整退避窗口,在高密度时增大退避时间,分散发送时间,减少碰撞。另外,可以利用优先级机制,让关键消息(如安全告警)使用更短的退避时间,确保它们优先发送。
在网络层,受控泛洪是关键技术。不是所有节点都转发广播消息,而是选择部分节点转发。选择标准包括:距离基准(距离较远的节点优先转发)、连接度基准(连接度适中、不是太高的节点转发)、角度基准(选择沿不同方向的节点转发)。智能选择转发节点可以在保证覆盖率的同时大幅减少冗余转发。
地理约束泛洪利用位置信息限制泛洪区域。传统泛洪向所有方向传播,而地理约束泛洪只在目的节点可能存在的区域传播。例如,如果目的节点在北方,就只向北方的节点转发。这种定向泛洪可以大幅减少无关区域的控制流量。
集群化路由是另一种有效策略。将网络划分为多个集群,每个集群内部使用主动式路由,集群之间使用按需路由。控制消息主要在集群内部传播,集群之间只传递聚合信息。这种分层结构可以很好地控制全局控制开销。
消息聚合技术可以将多个控制消息合并为一个。例如,多个邻居的Hello消息可以聚合在一个更大的消息中发送,减少消息数量。这种聚合在保证信息完整性的同时,可以显著降低控制开销。
自适应消息频率可以根据网络条件动态调整。在网络稳定时降低控制消息频率,在网络变化频繁时提高频率。这种自适应机制可以在保证路由时效性的同时最小化开销。
Q4:QoS保障在车载网络中面临哪些特殊挑战?如何实现差分服务?
答:QoS保障在车载网络中面临诸多特殊挑战,需要针对车载环境的特点设计专门的机制。
最大的挑战是网络拓扑的快速变化。传统QoS机制(如资源预留)假设相对稳定的网络连接,而车载网络中链路可能在几百毫秒内断开,预留的资源可能很快失效。应对方法包括:快速重预留机制、预测性资源预留、使用多路径提高可靠性。
第二个挑战是信道共享的公平性。在无线网络中,所有节点共享同一信道,高优先级消息可能占用大量带宽,导致低优先级消息饥饿。需要设计公平性机制,确保即使在重载情况下,低优先级消息也能获得一定资源。例如,可以设置每个优先级级别的带宽配额。
第三个挑战是QoS参数的测量困难。在动态网络中,时延、丢包率等参数快速变化,难以获得准确的QoS状态。需要设计快速的QoS监测机制,使用滑动窗口、指数加权移动平均等技术平滑测量结果。
实现差分服务需要多层次的机制。在MAC层,可以使用EDCA(增强分布式信道访问),为不同优先级的消息配置不同的退避参数和仲裁帧间间隔。高优先级消息使用更短的退避时间和帧间间隔,优先获得信道访问权。
在网络层,可以采用优先级队列和包调度。不同优先级的消息进入不同的队列,调度器优先发送高优先级队列中的消息。当高优先级队列为空时,才发送低优先级消息。这种严格的优先级机制可以确保关键消息的及时传输。
在应用层,可以采用自适应编码机制。根据网络条件和优先级,动态调整消息的编码方式。对于高优先级消息,使用更可靠但开销更大的编码;对于低优先级消息,使用更高效但可靠性较低的编码。
拥塞控制也是差分服务的重要组成部分。当检测到拥塞时,首先限制低优先级流量,然后逐步限制更高优先级的流量。这种渐进式的拥塞响应可以在保护关键流量的同时最大化网络利用率。
51学通信认为,差分服务的实现还需要考虑跨层设计。MAC层、网络层和应用层的QoS机制需要协同工作,才能实现端到端的QoS保障。例如,应用层标记消息优先级,MAC层根据优先级分配信道,网络层根据优先级调度转发。
Q5:地理路由协议在车载网络中的优势和局限是什么?如何改进?
答:地理路由协议利用节点位置信息进行路由决策,在车载网络中既有独特优势,也存在明显局限。
地理路由的主要优势是可扩展性好。传统路由协议需要维护到所有目的节点的路由信息,随着网络规模增加,路由表和控制开销快速增长。而地理路由只需要知道目的节点的位置和邻居节点的位置,不维护路由表,存储和计算开销与网络规模关系不大。这使得地理路由特别适合大规模车载网络。
第二个优势是适应快速移动。车辆高速移动导致网络拓扑频繁变化,传统协议需要不断更新路由表,开销巨大。地理路由使用位置信息转发,只要知道目的节点的位置,不需要预先建立路由,因此对拓扑变化不敏感。
第三个优势是无状态特性。地理路由通常是无状态的,不维护路由状态信息,这使得协议实现简单,存储需求小。在资源受限的车载单元中,这是重要优势。
然而,地理路由也存在明显局限。最大的局限是依赖位置服务。地理路由需要知道目的节点的实时位置,这需要位置服务支持。在高移动场景下,位置信息的时效性成为问题,使用过时位置可能导致路由失败。
第二个局限是局部最优问题。贪婪转发策略可能陷入局部最优点,无法找到更优路径。虽然有周边转发机制作为备用,但这会增加路由长度和延迟。
第三个局限是未充分利用道路约束。早期地理路由(如GPSR)假设节点可以在二维平面内自由移动,但车辆沿着道路移动,这种假设在车载环境中不成立。直接使用直线距离作为转发依据,可能导致数据包被转发到无法继续前进的位置(如死胡同)。
针对这些局限,有多种改进方法。对于位置服务问题,可以采用预测性位置服务,根据车辆的速度和方向预测其未来位置,提高位置信息的时效性。也可以使用分层位置服务,在不同粒度上维护位置信息,平衡准确性和开销。
对于局部最优问题,可以改进周边转发策略,使用更智能的边界遍历算法。也可以使用多路径传输,同时沿多条路径发送数据,提高成功概率。
对于道路约束问题,道路感知的地理路由(如GPCR)是重要改进。这种协议沿道路转发数据包,在交叉口进行决策,避免进入死胡同。利用电子地图信息,可以构建道路图,基于道路拓扑进行路由,而不是简单的地理距离。
进一步改进可以结合交通流信息。不同道路上的车辆密度和移动速度不同,综合考虑这些因素可以选择更优的转发路径。例如,选择车辆密集的主干道而不是车辆稀疏的小路,可以降低路由失败概率。
51学通信认为,地理路由的未来发展将是与机器学习的结合。通过学习历史路由决策的效果,可以训练智能模型,自动选择最优的转发策略,适应不同的道路和交通条件。
总结
本文深入探讨了车载环境下的路由协议策略与算法。我们学习了从MANET到VANET的协议演进过程,理解了车载网络的独特挑战,掌握了链路建立与维护机制、请求分发优化策略、QoS评估指标体系,分析了典型车载路由协议的特点。
车载路由协议的设计需要充分考虑车辆移动的道路约束、高速移动的特点、网络密度的变化等因素。下一篇文章我们将深入分析CBL协议的设计案例,学习如何将理论应用于实际协议设计。
下篇预告
下一篇我们将深入探讨Chain-Branch-Leaf路由协议设计案例精讲,带你了解CBL协议的设计理念、三层组织结构、工作流程、CBL-OLSR实现方案等核心知识,通过一个完整的协议设计案例加深理解。
本文由”51学通信”(公众号:51学通信,站长:爱卫生)原创分享。如需深入交流或获取更多通信技术资料,欢迎添加微信:gprshome201101。