BATMAN.adv系列01:BATMAN.adv IV 概述

原创文章,转发请注明链接和作者。(而且作者很懒,没有检查错别字)

 

BATMAN.adv,不同地方写得不太一样,有的是BATMAN-adv、Batman-adv、batman-adv等,其英文全称为:better approach to mobile ad-hoc networking。本文将介绍的是BATMAN.adv IV 协议。

BATMAN.adv涉及一个链路传输质量(TQ)的概念,但是各种计算中使用的变量通常也会被记为TQ,这相当混乱。在下文将会用不形式表示,详见下表。对于的符号在文中第一次出现的时候我也会标红。

符号 意义
TQ “链路传输质量”的缩写。注:这个没有斜体
TQ 根据接收质量和回环质量计算得到的TQ(详见下文),是一个0~1.0的定点数。注:这个有斜体
TQpath 加入了不对称链路惩罚和一跳惩罚的TQ
TQOGM OGM包中的TQ
<x,y> 表示节点x到节点y的某个特征(包括上面的各种“TQ”)

OGM包

BATMAN.adv协议通过周期地广播、接收和转发节点OGM包,实现路由发现并确定拓扑结构。产生并首次发送OGM包的节点称为该OGM包的源节点。其他节点根据协议转发该OGM包实现将源节点广播至全网,以及对链路质量进行评估的目标。将不需要其它节点中继就能交互数据的两个节点,称其互为邻居节点

仅这篇博客,为了方便描述,进行一些约束,这些约束未必真实但是将方便理解:

  1. abc等小写字母表示节点名称,其中o节点为主要讨论对象。
  2. 如无特殊说明,只有作为主要讨论对象的o节点会主动产生,其它节点将转发o节点的OGM包。
  3. 所有节点都会转发收到的OGM包。(对于可能会引起桥循环,信道资源过度消耗等都别管,假装都不存在,看完这篇再说)

OGM包的帧格式,大致看看就好了,对本文可能有点用的会加粗,下面会介绍。

字节
1 2 3 4
Packet Type Version TTL Flags
Sequence Number
Originator Address(前个4字节)
 Originator Address(后2个字节) Previous Address (前2个字节)
    Previous Address(后个2字节)
 Reserved  TQ TVLV Lenght  
后面可能还有其他的……

Originator Address:产生这个OGM包的节点

Previous Address :转发这个OGM包的节点。刚产生这个OGM包,Originator Address和Previous Address是一样的

TQ

基于OGM包的发送与转发,可以确定邻近的两个节点间的链路传输质量。以下图为例,讲解o节点如何计算链路传输质量,这表示自己将包成功发送至b节点的概率,记为TQ

图1 RQ、EQ、TQ示意图

 

 

 RQ:链路接收质量,节点o估计收到节点b数据包的可能性

计算RQ时,我们需要考虑一下b节点产生的OGM包。根据b节点产生的OGM包编号,节点o可知节点b近期产生的OGM包总数,计算实际接收数量与应接收数量之比可得RQ

EQ:链路回环质量,节点o估计自己的包发送给节点b后,b再传回给o的成功概率

当节点o产生的OGM包被节点b所接收时,节点b会主动转发这一OGM包,此时节点o有一定概率接收到这一回环的OGM包。节点o通过统计回环接收的OGM包数量与自己实际产生的OGM包数量之比可计算EQ

TQ:链路传输质量,节点o估计发送数据包至节点b并被成功接收的概率

易知:EQ=RQ×TQ,所以有:TQ=EQ÷RQ

由于这个TQ与收发对象有关,所有为了方便表述我给个下标,TQ<o,b>表示o计算得到的至bTQ。假如o还有多个邻居节点cd等,则会有TQ<o,c>TQ<o,d>,这些数值不一定相同。

 

你以为这就完了吗?不,还有一些惩罚系数来调整TQ。

为了尽量避免不对称双向路径的出现,协议中加入了不对称链路惩罚:TQ×(1-(1-RQ)3)。(下面这句话不好理解,需要结合后面OGM包中的TQ值来看)这一做时希望使得接收路径与发送路径尽量相同。

为了减少数据包的转发次数,协议中加入了一跳惩罚(hop_penalty):TQ×hop_penaltyhop_penalty的具体值可配置。

综合以上,TQpath=TQ×(1-(1-RQ)3)×hop_penalty。而TQpath才是程序计算中实际使用的TQ。TQpath<o,b>表示o计算得到的至bTQpath

OGM包与路由路径

注意:下面TQ的关系发生了一些反转,下文将以o作为数据包的接收节点,其它节点考虑将数据包成功传输到o的概率,如图2中,标注的时TQpath<b,o>,而不是上文的TQpath<o,b>!!!!!!!注意力理解!!!

源节点o定期产生OGM包(默认为1s)。OGM包中存在一TQ值字段,记为TQOGM,节点o产生OMG包时TQOGM=1.0。转发后的OGM包中TQOGM累乘所经链路的TQpath

 

 

 图2 OGM包记录链路TQpath

当网络毕竟复杂的时候,OGM包会泛洪到全网。如图3的例子,图中节点将对比来自节点d和节点e的OGM包中TQOGM大小,当需要发送数据至节点o时,节点选取TQOGM较大的方向作为最佳下一跳。

 

图3 OGM包泛洪示意图

 

 

 
posted @ 2021-06-05 14:43  zornlink  阅读(1101)  评论(0编辑  收藏  举报