节点能力模型把一台设备上场的本钱拆成四项:计算(CPU 与内存)、通信(速率与射程)、能量(电池与采集)、移动性(静止、漫游或高速)。系统约束则是全体节点默认签下的契约:带宽共享、能量有限、无中心权威、拓扑可变、安全边界开放。
某个项目验收前夜,实验室里的演示一切正常,到了现场却频繁掉线。排查三天,最后发现症结荒诞:现场用的电池是杂牌的,电压偏低零点二伏,发射功率随之缩水,邻接关系时有时无。设备没坏、协议没错,败的是"家底"——节点的物理能力参数撑不住实验室里从未收紧过的余量。从那以后我养成了习惯:谈任何自组织网络设计,先把每个节点的家底列成表,再谈协议。
计算能力决定节点能跑多复杂的协议——OLSR 这类表驱动路由对内存的胃口,和一些传感器节点全部可用内存在同一量级。通信能力包括速率档位与射程,射程又由发射功率、天线增益与接收灵敏度共同决定(第2章会把它们组织成链路预算)。能量是最硬的约束:手机、车载、市电mesh路由节点不缺电,纽扣电池传感节点则每一毫安时都要精打细算。移动性把节点分成静态(固定部署)、游牧(偶尔换位)、移动(持续运动)三类,直接决定第4章要讲的自适应机制的权重。
| 设备等级 | 计算 | 通信 | 能量 | 移动性 | 典型角色 |
|---|---|---|---|---|---|
| 传感末端 | 微控制器级 | 低速低功耗 | 电池以月年计 | 多为静态 | 数据源 |
| Mesh 路由单元 | 嵌入式级 | 中速中射程 | 市电或大电池 | 静态或游牧 | 骨干中继 |
| 手持终端 | 通用处理器 | 中高速 | 电池以天计 | 人随行走 | 混合角色 |
| 车载或机载 | 较强算力 | 高速率多天线 | 车电或机载电源 | 高速移动 | 高动态中继 |
这张表的一个隐含结论:真实网络几乎总是异构的。传感末端与 Mesh 骨干同场,能力差出两三个数量级,协议若按"人人平等"设计,弱节点会被协议自身的开销压垮。分簇结构(第2章)与分层架构(第7章)本质上都是对异构性的回应。
能量约束值得单独算一遍,因为它最容易被乐观估计。下面这段脚本估算一个传感节点的理论寿命:发送、接收、睡眠三个状态的电流与时长占比给定,用电池容量除以平均电流。三节干电池串联约 2700 毫安时,微控制器发送电流约三十毫安、接收约二十毫安、睡眠约二十微安。
# 传感节点能量寿命估算:占空比决定一切 battery_mah = 2700.0 # 三节干电池串联的容量,单位毫安时 i_tx, i_rx, i_sleep = 30.0, 20.0, 0.02 # 发送、接收、睡眠电流,毫安 # 占空比:每分钟醒 1 秒收发,其余睡眠 duty_tx, duty_rx = 0.008, 0.009 duty_sleep = 1.0 - duty_tx - duty_rx avg_ma = i_tx*duty_tx + i_rx*duty_rx + i_sleep*duty_sleep life_hours = battery_mah / avg_ma print(f"平均电流约 {avg_ma:.3f} mA") print(f"理论寿命约 {life_hours/24:.0f} 天,即 {life_hours/24/365:.1f} 年") # 输出示例:平均电流约 0.486 mA # 理论寿命约 231 天,即 0.6 年
把占空比从每分钟醒一秒改成每五分钟醒一秒,寿命立刻拉长到三年以上——这就是为什么低功耗协议把"睡眠调度"当作核心设计而不是附加功能。但账还没算完:电池自放电、低温容量衰减、协议控制消息的"被动清醒"(邻居广播把你吵醒)都要再砍掉两到四成。工程上的经验法则是:理论寿命乘以零点六再向客户承诺。
第一条,带宽共享。空口是会议室,同一区域同一信道的节点互相踩踏,可用容量随邻居数下降——这与有线网"各插各的网线"完全不同。第二条,能量有限,上面算过账了。第三条,无中心权威,没有谁能强制执行规则,协议必须假设任何节点都可能拒不听话(无心之失或有意为之,后者归第6章处理)。第四条,拓扑可变,任何基于"这张图长期不变"的优化都有保质期,过期要能自动失效。第五条,安全边界开放,无线介质谁都听得见,物理层的"线"不再提供第一道防线。
这五条契约彼此放大:拓扑可变让路由消息增多,路由消息加剧带宽共享的拥挤;能量有限又限制你不能用更多消息去对抗变化。理解自组织网络的全部技巧,就是在这五条契约的挤压下找平衡木。后面七章的每一个机制,几乎都能对应回这五条里的某一条。
背景:一个厂区项目混用了两个批次的传感节点,新批次内存翻倍。操作:初期按厂商默认配置,两批节点跑同一种路由协议。结果:运行两周后旧批次节点陆续重启,日志指向内存耗尽——新批次固件默认开了更大的邻居缓存,旧节点跟着抄配置后内存溢出。解读:异构网络里"统一配置"是个伪安全牌,能力分级必须落到配置层面,让弱节点跑轻量配置(更小的缓存、更长的信标间隔)。变式:如果用第7章的分层架构,把旧批次节点降级为纯末端、只和邻近骨干节点说话,问题同样消失——能力分级既可以在参数层做,也可以在架构层做。
能力模型不止用于理解,它直接指导两件落地的事。第一件是采购分级:一份规范的采购单应该按"角色"而不是"型号"写——骨干角色写明"支持市电或太阳能、内存不低于多少、双频射频",末端角色写明"电池寿命目标、是否可外接天线"。同一项目混用三档设备是常态,但每档的数量与位置应该在设计文档里就定下来,而不是到货后再"看哪里信号差就往哪塞好设备"。第二件是配置基线:每档设备对应一份配置模板(信标间隔、路由缓存大小、队列长度),异构网络里"统一配置"是坑(本节前面的教训),分级模板才是正解。模板之外,再给每个节点留一份"能力档案"——固件版本、射频规格、电池健康度,排障时这三样是第一现场。