摘 要:在一些利用总线互联组成的微型区域网络应用中, 常常受总线带宽的限制, 存在组网速度较慢、网络拥塞的现象. 针对这种情况, 提出了一种多总线融合Ad Hoc的组网技术, 能够加快这种网络的组网速度和减轻网络拥塞. 该技术还能够感知周围路由节点的方向, 即路由节点具有矢量性的特点.
关键词:多总线融合; Ad Hoc; 组网技术; 矢量性
在一些微型区域网络如系统级的传感器网络、生产线上的物联网、多模块组成的组合式沙盘, 这种沙盘各个模块之间需要相互通信或者在一些大型的桌面游戏, 这种桌面游戏由多个模块组成并且模块与模块之间也需要相互通信等应用中, 网络节点与节点之间数据的传输采用当前主流、低成本单一的总线(比如I2C、SPI、CAN、485、UART总线等), 这类网络的拓扑建立和链路维护需要消耗大量的带宽资源[1]. 受限于这些总线的通信带宽, 在实际的应用中会出现网络节点链路维护和节点与节点之间信息传输相互冲突的情况, 尤其当节点增加到一定数目时, 会出现严重的拥塞[2]. 图1展示了节点与节点之间采用同一种总线组网的网络拓扑结构.

图1 节点与节点之间采用同种一总线组网的拓扑结构
为了克服这种网络的缺点, 本文提出了一种新型的多总线融合Ad Hoc组网技术MBFA (Multi-Bus FusionAd Hoc Network). MBFA网络在原来采用单一总线的结构上融合了另外一种总线, 并且在网络组网的机制上融合了Ad Hoc的组网特性. 这种新型网络能够快速识别节点的加入、退出以及路由链路的变化, 并且它的每个网络节点都能够感知周围节点的相对位置, 也就是说它具有方向性等特点.
1 MBFA网络结构和技术的实现
1.1 MBFA网络的结构
如图2所示, 这种新型MBFA网络使用了两种总线: 第一种为节点与节点之间的总线ANB(Adjacent Node Bus), 它是指节点与节点之间连接的总线. 另一种总线为区域系统总线ASB(Area System Bus), 它挂接所有的网络节点, 相当于网络中每个路由节点都挂接到ASB总线上. ANB总线负责相邻节点与相邻节点之间数据传输、链路维护和邻居节点的发现, ASB总线负责广播整个网络的链路信息和传输实时性较高的数据, 这种组网和数据传输方式比单纯利用ANB总线“发送-储存-转发-发送”的效率要高很多. ASB总线采用了CSMA/CD(Carrier Sense Multiple Access with Collision Detection)即带冲突检测的载波监听多路访问技术[2]协议.

图 2 网络的拓扑结构
1.2 Ad Hoc融合机制
Ad Hoc网络是一种特殊无线动态、没有严格控制中心、不依赖于现有网络通信设施、多跳路由的移动网络. 该网络每个节点都必须负责网络节点的邻居发现、数据的传输和链路的维护. Ad Hoc网络节点与节点之间的通信均是通过无线传输, 而无线信道的带宽相对有线信道要低得多, 并且Ad Hoc网络的结点可以随时移动、随时开机和关机, 为了快速的建立拓扑现有的Ad Hoc网络就提供了一种快速组网的机制[3].
MBFA网络的组网机制, 融合了Ad Hoc网络的组网机制, 该组网的机制负责网络节点的邻居节点发现、数据的传输和链路的维护. MBFA网络的节点支持热拔插功能, 每个节点都可以随意的加入或退出, 具有一定的独立性. 因此MBFA网络能够快速建立动态的网络拓扑、增强数据的传输能力和减小网络的拥塞[3].
1.3ANB和ASB总线融合工作机制
MBFA网络中两种总线相互配合的工作, 其ANB总线包含了Ad Hoc邻居发现、数据传输和链路维护的机制, 建立自己的邻居集. ANB总线在这种工作机制中会监测到以下几种链路状态: 路由节点是否有链路的加入、是否有链路的丢失、是否链路质量发生变化等, 节点监测到上述任一种状态时就会启动ASB总线向全网发送链路更新信息. 工作机制如图3所示.

图3 总线融合工作机制
ASB总线采用CSMA/CD通信协议, 当节点通过ASB总线发送信息时, 首先监听信道是否空闲, 如果空闲则发送信息, 否则继续监听信道, 等到信道空闲才能发送信息帧. 在信息发送完成之后, 还要继续监听信道, 一旦监听到冲突, 便立即停止发送数据, 并向信道上发送一串阻塞信号, 通知信道上各个站点发生冲突.
1.4节点的矢量性
MBFA网络在实际的应用中, 每个路由节点都有若干个接口, 为了每个网络节点都能感知周围节点的相对位置, 须对网络中每个路由节点的接口建立一个虚拟的相对坐标, 根据坐标确定每个路由节点接口的相对位置, 得出路由节点的相对位置. 如图4所示.

图4 网络节点相对坐标示意图
如图所示假设图中每个节点有N个接口, 每个接口根据在实际网络节点中的位置赋予各自的坐标值, 设网络节点M中的接口n表示为
Interface<M,an,bn>
其中(an,bn)为坐标值. 假设网络节点I存在三个接口分别是Interface<I,a1,b1>、Interface<I,a2,b2>、Interface<I,a3,b3>. 其中接口1跟相邻节点K的接口1相连接, 表示为
Interface< I, a1,b1>≡Interface<K, a1,b1>
接口2跟相邻节点H的接口1相连接, 表示为
Interface< I,a2,b2>≡Interface<H,a2,b2>
接口3跟相邻节点F的接口1相连接, 表示为
Interface< I,a3,b3>≡Interface<F,a3,b3>
此时节点I根据本身三个接口的实际坐标值, 就可以判断相邻三个网络节点与本节点的相对位置.
1.5 MBFA网络的寻找、维护和发现机制
1.5.1 HELLO消息机制
Ad Hoc网络相邻节点之间通过周期性的交换HELLO消息, 探测相邻节点的链路. MBFA网络融入了这种链路探测机制, 依靠ANB总线周期性地交换HELLO消息, 探测相邻节点的链路.
相邻节点链路的探测依靠HELLO消息机制, 每个节点的接口间隔一个HELLO_INTERVAL时间, 向相邻节点发送一个HELLO握手信息. 相邻节点可能会在同一个时间点相互发送HELLO消息, 为了防止发送HELLO消息出现冲突, 当节点在一个HELLO_INTERVAL时间点到来时, 并不是立马向相邻节点发送HELLO消息, 而是在等待一段随机时间间隔再向相邻节点发送. 随机时间间隔定义为(Time-Random(t)), 其中Time是一个时间常数, Random(t)是在范围为0~Time的随机数. 所以每经过一段(HELLO_INTERVAL-(Time-Random(t))时间间隔, 向相邻接口发送HELLO握手消息[4,5].
1.5.2链路质量检测
节点向相邻节点发送若干次HELLO握手消息, 有可能出现没有得到应答的情况, 这种情况可能是链路断开、硬件故障或者应答丢失. 为了选择最优化的链路传递信息, 必须建立一种链路质量检测.
链路质量检测是对当前链路质量的检测. 节点为每个接口创建一个相邻节点之间链路的通达情况历史记录表History, 历史记录表记录链路的通断比, 判断链路的质量.
为方便对当前链路质量划分等级和进行比对, 需对历史记录表History的值进行量化, 其量化公式如下所示.

其中ε1+ε2+…+εn=1
ε1、ε2……εn对应历史记录表中参数History<i,j,1>、参数History<i,j,2>……参数History<i,j,n>的权值. LQoS (i)(j)表示相邻节点i到相邻节点j单向链路的链路质量量化值. History< i,j,n >中的i表示网络节点的编号, 而j表示i网络节点中标号为j的接口, n表示记录表中的第n个数据. LQoS(i)(j)其中i表示网络节点号, 而j表示i网络节点的第j个接口.
1.5.3链路状态
MBFA网络中各个接口的链路状态不一样, 分别为单向的链路、断开的链路、双向的链路. 因此必须使用链路状态信息表, 表示每个节点各个接口当前的状态. 每个节点为其每个本地接口I维护一张相邻节点表, 用于存储每个相邻节点接口J的状态信息.
节点链路状态转换流程图如图5所示. 当网络节点的每个接口发送握手消息前, 首先判断当前链路是否是全双工(Duplex)节点, 如果不是则在发送握手消息前加一段随机抖动时间(Random-Time). 当前节点发送握手消息给相邻节点后, 等待相邻节点的应答, 若在最长时间Response-Time之内没收到应答, 则在规程上连续未应答变量(No-Response++)自加一次, 记录一次未应答情况, 并且把没有应答的情况, 记录到History历史记录表中. 当连续未应答次数No-Response超过MAX值时则标记当前链路为(Slave-to-Master)单向链路, 连续未应答次数超过最大值MAX并且在Max-Time时间之内也没有收到相邻节点的握手消息, 则标记当前链路为(Lost)丢失链路. 若连续未应答次数未超过最大值MAX, 但在Max-Time时间之内没有接收到相邻节点的握手消息则标记当前链路为(Master-to-Slave)单向链路.

图5 链路状态转换图
2 实验仿真
利用NS2仿真工具, 对MBFA网络和单一总线网络进行仿真. 为了比较这两种网络节点数不同时, 性能上的差异, 我们分别设置了6组的实验, 这6组实验的节点数目分别是9个节点、12个节点、16个节点、20个节点、25个节点和36个节点.
在NS2的仿真过程中我们得到了trace文件, 该文件的功能是详细记录仿真的全过程. 其中字段Start_time表示事件发生的开始时间, End_time表示事件发生的结束时间. 数据端到端延迟的表达式如下所示.
Delay=End_Time(n)-Start_Time(n)
其中End_Time(n)表示第n节点接收数据的时间, Start_Time(n)表示第n节点发送数据的时间.
为了得到这两种网络数据传输饱和时的网络性能, 在仿真过程中所有的节点都不间断的向其它节点发送数据, 其数据包大小为50个字节. ANB总线的带宽为200Kb/s, 而ASB总线的带宽设置为500Kb/s.
对端到端仿真得到的数据如下图所示.

图6 9个节点数据延迟

图7 12个节点数据延迟

图8 16个节点数据延迟

图9 20个节点数据延迟

图10 25个节点数据延迟

图11 36个节点数据延迟
上述图6到图11中红色的标号+表示单一总线网络的端到端延迟, 而绿色的标号Χ表示MBFA网络的端到端延迟. 仿真的结果可以看出对于采用单一总线组网的网络其数据端到端的延迟很大, 尤其当网络节点比较多时, 网络的性能就会显得很差. 而MBFA网络的数据延迟基本不受节点数目的影响, 并且数据延迟相对单一总线网络要小很多, 更适合多节点大规模网络的应用.
其端到端的延迟表如下所示.

图12 端到端的数据延迟散布表
从上述的散布表中可以得出对于普通网络的组网, 不管节点数目为多少其端到端的数据延迟都很大, 网络性能较差. 而节点的增加对MBFA网络数据的传输延迟影响较小.
如下图13所示两种网络的数据丢包率, 其中红色的线段表示普通网络的数据丢包率, 而绿色的线段表示MBFA网络的数据丢包率. 从图中可以看出网络节点数相同时, 普通节点的数据丢包率远远大于MBFA网络的数据包丢包率. 随着节点的增加, 普通网络的丢包增长率远大于MBFA网络的丢包增长率. MBFA网络丢包率的增长率的变化较为缓慢, 从中可以得出MBFA网络的性能较好.

图13 数据丢失率
3 结语
MBFA网络增加了ASB总线并且融合了Ad Hoc快速组网的特性, 克服了传统网络的缺点. 当网络负荷较大时单一总线网络数据端到端延迟比MBFA网络要大得多, 并且单一总线的数据丢包率比MBFA网络高得多, 其丢包率随着节点的增加而增加, 而对于MBFA网络的数据丢包率并没有明显的增大, 基本维持在较低的水平. 从上述这些实验数据可以得出MBFA网络信息传输能力得到了增强, 减轻了网络拥塞. MBFA网络在实际的应用中克服了传统网络缺点的同时也兼顾了成本, 具有相当大的研发应用价值.