3.1 路由的三种台词:表驱动、按需与地理辅助


3.1 路由的三种台词:表驱动、按需与地理辅助

表驱动路由(先背地图)周期性维护到全网的路径,按需路由(用到再问路)在通信发起时才查找路径,地理辅助路由(按坐标递进)用位置信息代替全局拓扑知识。三者的取舍轴是控制开销、首包时延与对移动的敏感度。

没有路由器的网络里,"路怎么找"没有默认答案。有线互联网的路由协议(OSPF、BGP 一类)假设拓扑基本稳定,周期性交换链路状态就能慢慢收敛。自组织网络把这条假设掀了:拓扑分钟级变化,周期性交换的全量信息还没收敛就过期了。于是研究社区在过去几十年里沉淀出三条路线,每条路线都在回答同一个问题——为了"知道路",你愿意付多少日常开销、忍多少找路延迟

先背地图:表驱动

表驱动(也叫先应式)路由让每个节点维护到所有(或大部分)目的地的路由表,靠周期性消息保持新鲜。代表是从有线世界改造来的 DSDV、以及链路状态家族的 OLSR。它的好处是发数据时零等待——查表即走,首包时延与稳态时延一致。代价有两笔:控制消息要周期性打扰全网(哪怕根本没人通信),路由表与节点数成正比地吃内存。表驱动适合"通信对象多且持续"的形态,比如骨干 Mesh 上的视频回传。

用到再问路:按需驱动

按需(反应式)路由平时什么都不维护,源节点要发包且没有现成路径时,才广播一份路由请求让全网帮忙找路,找到后建立路径并缓存一段时间。代表是 AODV 与 DSR。它把日常开销压到接近零,换来的是首包要等路由发现走完全程(典型几十到几百毫秒,网络大时更久),以及路由请求泛洪本身对全网的瞬时打扰。按需适合"偶发、短会话"的形态——传感器事件上报、聊天消息这类。

按坐标递进:地理辅助

第三条路线换个脑子:既然节点能知道自己的位置,为什么还要知道全网拓扑?地理路由(如 GPSR 的贪心转发思想)只做一个动作——把包交给比自己更靠近目的坐标的邻居,遇到"局部极小"(周围没人比自己更近)时再启动周边恢复绕出去。它的状态几乎为零(只需邻居位置),扩展性天然好,特别适合高速移动的车联网。但它有三个前提:节点有定位手段、目的位置可得(通常要配一个位置服务)、且坐标可达的区域没有大片信号空洞。地理辅助在车联网里几乎是默认选择,在没有定位能力的传感网里则完全用不上。

图:三条路线在开销与时延平面上的位置

图:三条路线在开销与时延平面上的位置

一张对比表与选型四问

维度 表驱动 按需驱动 地理辅助
日常控制开销 高,持续全网点播 接近零 极低,仅邻居位置
首包时延 低,查表即走 高,要等发现流程 低到中,看位置服务
状态存储 全网路由表 活动路径缓存 邻居表即可
移动适应性 差,过期要重收敛 中,断路再找 好,天然追坐标
前提条件 资源充足的节点 定位与位置服务

选型时问四个问题就够:通信是持续流还是偶发报文?节点内存是否够放全网表?有没有定位手段?拓扑变化的时间常数比路由收敛快还是慢?持续流加充足内存倾向表驱动;偶发报文加资源紧张倾向按需;有定位加强移动直接地理辅助。答案模糊时(多数真实项目如此),就上混合型——先应式与反应式的叠加是下一节 ZRP 的主题。

混合的思想:分区对待

混合路线的洞察是:通信有明显的局部性,大部分流量发生在邻近节点之间。那就把网络按跳数半径分成 zone:zone 内部跑表驱动(节点少,维护得起,且内部通信频繁),zone 之间跑按需(远端通信少,不值得常备)。这个"近查表、远问路"的思想不止于 ZRP,它是可迁移的设计模式——任何分层系统里,按通信局部性分配策略复杂度,都是划算的买卖。第7章的分层架构可以看成这个思想在更大尺度上的重演。

一段帮助理解的估算:百节点的网络里,表驱动的周期消息假设每秒每节点一条,全网的空口负担就是每秒一百条;如果九成流量其实发生在半径两跳的邻近域内,那么 zone 半径取二时,表驱动只需要覆盖每个 zone 约十来个节点,周期负担骤降一个数量级,而九成通信仍然查表即走。混合路线的收益不是魔法,是通信局部性这个统计事实的变现。

设计原则清单

给要自己选型或设计协议的人四条原则。其一,开销跟着业务走:业务越稀疏,越有资格懒惰。其二,状态是负债:路由表每一行都是要维护的负债,能不存就不存。其三,泛洪是重武器:任何"全网广播"的动作都要设 TTL、限频率,并预估打扰人数。其四,移动是常态不是异常:评估任何协议,先看它断路后的恢复路径,再看它的稳态效率——稳态漂亮、断路就瘫痪的协议在真实环境一文不值。

两个高频问题

问:为什么不造一个"全都要"的协议——平时按需、闲时预建热点路径、有定位就用坐标? 有人这么造过,混合协议的历史几乎就是功能叠加失败的历史。原因有二:每叠加一种机制就多一类状态与一套失效模式,排障复杂度指数上升;机制之间互相干扰——预建的路径刚被地理转发绕开,缓存又把它换回来,行为变得不可预测。成熟的设计克制在两三种机制内,并把它们各自的触发边界写死。协议如剧种,唱腔越杂越难成戏。

问:按需路由的首包时延能不能压下来? 能压两刀。第一刀是路由缓存复用:任何节点听到别人的路由应答都顺手记下来,之后自己发往同一目的地的包直接蹭现成路径,不用重新泛洪——代价是缓存新鲜度问题,过期缓存会把包送向断路,所以缓存必须有寿命与失效确认。第二刀是预取:对高频目的地(网关、汇聚点)在空闲时主动维护路径,让"偶发通信"里最常见的方向变成事实上的表驱动。这两刀都没改变协议本质,只是把按需的惰性用在刀刃上。评估效果时盯一个指标:首包时延的九十五分位——缓存命中的包很快,但没命中的那百分之五才是用户抱怨的时刻,优化要对着尾部做。

台词摘录

  • 三条路线:表驱动付日常开销买即时路径,按需省日常开销付首包时延,地理辅助用位置换状态。
  • 局部性红利:混合型把通信局部性变现,zone 内查表 zone 外问路。
  • 状态即负债:路由表每行都有维护成本,能少存一行是一行。
  • 泛洪要管制:TTL、限频、打扰人数预估,三件套缺一不可。
  • 先看断路恢复:协议评估的第一眼不是稳态效率,是断路后的行为。

作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U