基于两路并发传输的井下通信*

2016-06-13 08:43郭成城杨剑锋
传感器与微系统 2016年3期

胡 然, 郭成城, 杨剑锋

(1.武汉大学 电子信息学院,湖北 武汉 430072;2.63892部队,河南 洛阳 471003)



基于两路并发传输的井下通信*

胡然1,2, 郭成城1, 杨剑锋1

(1.武汉大学 电子信息学院,湖北 武汉 430072;2.63892部队,河南 洛阳 471003)

摘要:针对矿井中无线通信存在的低可靠性、高时延问题,引入两路并发机制来提供井下无线通信的可靠性和实时性保证。详细介绍了在内核空间实现双路径并发传输的设计思想和实现过程,通过定义专用数据结构进行重复包的排查和丢弃处理,并利用多协议标记交换技术实现数据包的快速转发。在矿井内实地环境进行了现场测试,测试结果证明了两路并发传输方式的可靠性高、时延低。

关键词:无线网状网; 矿井通信; 两路并发传输; 丢包率; 多路径路由

0引言

近年来,随着现代通信技术的发展,越来越多现代化新的通信技术融入到矿井通信系统中,如,井下WiFi技术、无线Mesh(wireless mesh networks,WMNs)技术等。与一般的通信技术相比,矿井通信技术对网络的带宽、延时、抖动等性能的要求更高。如何提高网络的可靠性和实时性,已经成为矿井通信发展中必须解决的问题。针对这一问题,国内外进行了一系列研究。文献[1]提出了全矿井无线Mesh链状骨干网络的全局优化,并包括对网络路由节点的部署,通过这种方法优化了网络节点的布局。文献[2]对矿井无线Mesh网系统的性能进行了分析,并分析出TCP传输的协议是如何影响矿井无线Mesh网的传输性能。文献[3]则引入了一种基于VoIP的无线Mesh通信网网络,通过设计实时控制协议来降低时延。但文献[1,2]突出的是对网络节点的优化布局,没有考虑到网络突发中断的应对方式;文献[3]则只是考虑了时延的需求,没有考虑到可靠性方面的需求。而在矿井通信中,尤其是在穿脉内的通信问题,由于井下现场巷道狭窄,而作业设备体积比较庞大,不论是挖掘机还是矿石运输车辆,作业中经常会占据整个巷道局部空间,对无线通信信号传输的影响较大。虽然,有文献提出用环状无线Mesh网络通过路由切换恢复通信功能[1,2],但是由于作业设备移动频繁,无线Mesh网路由器会经常来回切换路由,每次切换都需几秒钟的时间,这严重影响了现场的通信质量。文献[4]采用是多路径路由的方式,来提高网络通信的可靠性。

两路并发机制是多路径路由中的一种,但是它不是将信息进行分割传输,而是将信息复制成两份,沿两条不同路径发送到目标节点,如果一条路径出现问题,也能保证信息沿另一条路径顺利到达目标节点[5]。所以,两路并发机制相比多路径路由而言会有更高的可靠性[6]。因此,本文采用两路并发的传输方式来解决这一问题。

1基本方案

穿脉内的两路无线传输方式如图1所示。

图1 两路并发传输示意图Fig 1 Diagram of dual path concurrent transmission

具体的解决思想是:无线终端仍采用单路无线接入方式将信息发送给无线Mesh路由器节点,该节点路由器再将数据信息通过两条不同的无线路径传入主干网,经主干网传递到接收此数据的终端所在的目标节点路由器,目标路由器将数据发送给终端设备,并负责去除后续重复接收的数据。这样,既可以保证可靠性,也可以保证实时性[7]。为实现上述目标,本文对两路并发机制进行了研究和实验。图2给出了两路并发传输系统的整体框架。

图2 系统实现框架Fig 2 Implementation framework of system

从图2看出,将通过修改路由器的内核程序实现两路并发功能,全部修改工作均在网络层完成。

2两路并发传输的设计与实现

2.1方案设计

本文的实验中,采用选择两条节点不相交路径的并发方式,并采用分配不同信道的方式避免无线Mesh网络中无线链路间的同频干扰[8]。由于井下穿脉内布设的路由器节点很少,且实际应用中布点的位置基本固定,所以,本文的实验均采用手工配置方式完成路由选择。

正常情况下,数据包到达路由器后,通过查找路由表,从某一个网络接口转发出去。而本文需要将同一份数据从路由器的两个接口同时发送出去,即实现数据的并发传输,这就需要对Linux内核中的网络协议代码进行适当的修改[9]。当然,并不是所有的路由器都必须有数据并发功能,只需要在靠近终端设备的路由器上做数据并发处理,中间的路由器只需做正常的转发。数据并发传输模块的实现流程如图3所示。

图3 路由器上并发传输流程图Fig 3 Concurrent transmission flowchart on router

1)数据包的接收过程

当数据到达Linux路由器时,路由器会调用网卡的驱动程序,将帧封装成sk_buff结构,通过netif_rx( )函数将数据存放在系统的接受队列中。系统通过软中断net_rx_action()函数从队列中取数据传给ip_rcv( )函数(IP层的接收函数)作进一步处理。

ip_rcv( )函数会统计收到包的总数,按照RFC1122的要求检查数据包的IP首部长度、IP协议版本、检验和、总长度是否正确,丢弃那些错误的数据包。接着数据包流向ip_rcv_finish( )。

ip_rcv_finish()函数调用ip_route_input()来查找路由信息,判断需要进行IP转发还是直接传给本机的上层协议。如果数据包需要转发dst_input()函数指针指向ip_forward()。

2)数据包的转发过程

ip_forward()函数把TTL值减1,更新检验和,接着是ip_forward_finish()进行相关处理,然后调用ip_output()函数。

ip_output()函数对IP层发送申请数进行统计,把需要通过的网络接口存放在skb→dev中,并将skb→protocol初始化为ETH_P_IP,即为以太网上的IP包。接着调用ip_finish_output()根据需要进行IP分片,然后ip_finish_output2()函数调用neigh_resolve_output()进行ARP解析将MAC地址拷贝到数据包中,最后调用dev_queue_xmit()函数到达硬件层[10]。

3)数据包的并发

上层的协议调用dev_queue_xmit( )以套接字缓冲区(struct sk_buff *skb)的形式来发送数据包。网络设备由skb→dev指定。dev_queue_xmit( )首先将skb加入Qdisc队列(q→enqueue(skb,q)),本文根据从用户空间传入的规则,在出队的时候将从网卡1发出去的数据skb克隆(skb_clone( ))一份skb2,把skb2发送到网卡2上,然后修改skb2的目的MAC地址和源MAC地址,再调用网卡2的驱动程序就可以把数据发送到下一跳路由器了[11]。这样,带有相同数据部分的skb和skb2同时发送到了两个不同的下一跳,即实现了数据沿着多条路径并发传出去。

2.2具体实现

无线Mesh网中链路失效只是偶尔发生,大部分时间几条路径都能正常传输数据,这样接收端可能收到较多的重复数据包,不但增加了接收端的处理负担,而且可能重复对设备进行同样的操作,引发错误[12]。因此,必须在接收端进行重复包的处理。

由于接收设备的网络协议不能修改,本文对重复数据包的处理是在靠近接收端的Linux路由器上实现的。Linux路由器将需要转发到相同目的地、之前已经转发过的数据包丢弃,目的节点就不会收到重复的数据包。这就需要对经过路由器的数据包做唯一的标识[13]。

为了区分收到的数据包是否重复,必须对每个数据包做唯一的标识。IP首部中16位的标识字段(identification,ID),是一个计数器,用来产生数据包的标识,每发送一个IP数据包,IP层都要把计数器加1,这样IP数据包的标识是按次序增加的[14]。本文就是采用IP包的ID作为唯一标识。

为了检测是否出现重复数据包,本文在Linux内核中定义了一种新的数据结构,如图4所示,将数据包的标识缓存起来。

图4 缓存数据包标识的结构Fig 4 Structure of cache data packet identity

在socket_s{}结构中,为了便于查找和管理将来自于同一个套接字(socket)的ID缓存在一个Hash链表中。不同的socket通过next指针(struct socket_s *next)链接在一起。上图中src_ip为源IP地址,src_port为源端口,id[]为指针数组,指向多个存储ID的链表,node_link_len[]为各条链表的长度。flag标志反映当前socket是否活跃,timer为定时器。

当数据包到达靠近接收端的路由器时,路由器就开始判断以前是否收到过这个数据包,接着进行相关处理,其流程如图5。

图5 重复包处理流程Fig 5 Flow chart of repeat data packet processing

由于工业环境中对数据传输的实时性有较高的要求,必须采取一些措施来减小端到端的时延。本次实验对象井下穿脉语音通信,在生产作业期间,经常会因现场的特殊情况,需要井下、地面进行协调联络,因此,保证语音数据包的快速转发,使通信信号传输畅通是十分必要的。

本文在Linux路由器上采用多协议标记交换(multi-protocol label switching,MPLS)技术来减小时延,实现数据包的快速转发[15]。

Linux系统内核没有提供对MPLS的支持,本文给内核打MPLS相关的补丁,然后重新编译内核,选上MPLS的有关项目[16]。新的内核启动后加载MPLS模块即可支持MPLS。还要扩展用户空间的工具Iproute,增加"mpls"命令,将加标签、标记交换、去除标签等参数传入内核中。

3实验测试与结果分析

3.1快速转发实验

实验采用的网络拓扑如图6所示。

图6 MPLS转发实验网络拓扑图Fig 6 Topological graph of MPLS forwarding experiment network

图中,R1,R2,R3,R4为具有MPLS功能的Linux路由器,R1和R4为边缘路由器负责添加标记和去除标记;R2和R3进行标记交换。PC1和PC2为普通台式机。

分别测量IP转发和采用MPLS转发时,PC1到PC2的往返时延(RTT)。使用ICMP ping包各测量50次得到以下数据,如表1所示。

表1 往返时延统计

从表1中的数据可以看出,采用MPLS技术进行数据包转发可以在一定程度上减少转发所花费的时间。

3.2双路径并发传输实验

实验采用的组网拓扑结构和配置的参数信息如图7所示。

图7 实验网拓扑与参数Fig 7 Experimental network topology and parameters

整个实验分别对三项内容进行测试:

1)测试数据并行发送和重复包处理功能

只开启R1的数据并发功能,操作命令如下:

从PC1向PC2发ICMP ping包,得到数据,如图8所示。

图8 PC1 ping PC2结果Fig 8 Result of PC1 ping PC2

同时,在路由器R3上用tcpdump抓到以下数据,见图9所示。

图9 R3的抓包结果Fig 9 Packet capturing result of R3

开启R3的重复处理功能一段时间,然后,再关闭重复处理功能,PC2上得到以下数据,见图10所示。

图10 PC1 ping PC2开关重复处理功能结果Fig 10 Result of switch repeatedly processing on PC1 ping PC2

从上面的数据可以看出:R3的两个接口(eth0,eth1)均收到PC1向PC2发的、相同的ping请求包,并且都转发给PC2,PC2发回了ping响应,PC1上收到重复包(有DUP标记);当开启R3的重复处理功能,PC1没有收到PC2的重复响应包。由此可知,R1实现了数据并发,R3完成了重复处理。

2)测试网络的可靠性和实时性

本次的可靠性和实时性测试主要针对语音通信质量进行,直接在两台笔记本上运行Windows的NetMeeting程序,通过观察收发效果来检验网络的可靠性和实时性。

具体测试时,分别采用切断路由器2或者路由器4的电源,以及在机车运行通过复杂环境时持续通话的方式进行实验。测试结果表明,收发包始终都能正常进行,并且丢包率较低。

3)单路与两路并发传输成功率

分别统计单路和两路并发的传输成功率:每次PC1向PC2发100个ICMP ping包,两种情况各测3次。结果如图11所示。

图11 数据传输成功率Fig 11 Success rate of data transmission

很明显,双路并发的成功率明显高于单路传输,与设计目标一致。

从以上三个实验结果来看,将两路并发机制引入到矿井通信系统中能够有效减小路由切换带来的延迟影响,快速转发机制,能够保证通信系统的实时性要求,通过重复包处理流程,减小了冗余信息。在实际传输过程中,双路并发的数据传输成功率也明显高于单路传输,这就说明将双路并发机制引入到矿井通信系统是可行的,能够有效地提高整个系统的可靠性和实时性。

4结束语

本文研究了井下通信系统中的无线传输的特点,在其基础上引入了双路并发机制。整篇文章详细给出了实验过程和结果,在实现过程中,采用了两条不相交路径同时发送的传输方式,通过定义专用数据结构进行重复包的排查和丢弃处理,并利用多协议标记交换技术实现数据包的快速转发过程。最后在矿井内实地环境进行了现场测试,测试结果证明了两路并发传输方式的可行性和时效性。本文只是考虑了路由切换时的延迟问题,没有考虑路由节点的损坏和通信链路的中断时的解决方法,在后续研究工作中,将进一步研究通过多拓扑路由切换来提高井下通信系统安全性和容灾能力。

参考文献:

[1]Domenico Sicignno,Danilo Tardioli.Real-time wireless multi-hop protocol in underground voice communication[J].Ad Hoc Networks,2011(1):1-13.

[2]Chakchouk N,Hamdaoui B.Traffic and interference aware sche-duling for multiradio multichannel wireless mesh networks[J].IEEE Transactions on Vehicular Technology,2011,60(2):555-565.

[3]Israel Cidon,Raphael Rom.Analysis of multi-path routing[J].IEEE/ACM Transactions on Networding,1999,7(6):885-896.

[4]郝志强.井下无线通信网络的设计与实践[D].武汉:武汉大学,2013.

[5]伍鹏飞.无线Mesh网快速可靠传输机制的设计与实现[D].武汉:武汉大学,2010.

[6]张洋.无线Mesh网络管理系统的设计与实现[D].武汉:武汉大学,2011.

[7]Kodialam M,Nandagopal T.The effect of interference on the capacity of multihop wireless networks[C]∥2004 Proceedings of International Symposium on Information Theory,ISIT 2004,IEEE,2004:472.

[8]Liu T,Liao W.Interference-aware QoS routing for multi-rate multi-radio multi-channel IEEE 802.11 wireless mesh network-s[J].IEEE Transactions on Wireless Communications,2009,8(1):166-175.

[9]Balachandran K,Kadaba S R,Nanda S.Channel quality estimation and rate adaption for cellular mobile radio[J].IEEE J Sel Areas Commun,1999,17(7): 1244-1256.

[10] Goldsmith A,Chua S G.Adaptive coded modulation for fading channels[J].IEEE Transactions on Communications,1998,46(5):595-602.

[11] Pham P P,Perreau S.Performance analysis of reactive shortest path and multipath routing mechanism with load balance[C]∥Twenty-Second Annual Joint Conference of the IEEE Computer and Communications,IINFOCOM 2003,IEEE Societies,2003: 251-259.

[12] Tao M,Lu D,Yang J.An adaptive energy-aware multi-path routing protocol with load balance for wireless sensor networks[J].Wireless Personal Communications,2012,63(4):823-846.

[13] 张小强.基于多信道多接口无线Mesh网络研究[D].西安: 西安电子科技大学,2012.

[14] 时超.Mesh网络中的多信道协议研究[D].西安: 西安电子科技大学,2011.

[15] Chakchouk N,Hamdaoui B.Traffic and interference aware sche-duling for multiradio multichannel wireless mesh networks[J].IEEE Transactions on Vehicular Technology,2011,60(2):555-565.

[16] 张文安.网络化控制系统的时延与丢包问题研究[D].杭州: 浙江工业大学,2010.

Underground communication based on dual path concurrent transmission*

HU Ran1,2, GUO Cheng-cheng1, YANG Jian-feng1

(1.School of Electronic Information,Wuhan University,Wuhan 430072,China;2.No.63892 Forces of PLA,Luoyang 471003,China)

Abstract:Aiming at problems of low reliability and high delay of wireless communication exists in coalmine,introduce a dual path concurrent transmission mechanism to realize real time and reliability of communication.Introduce design idea and realization process of double path concurrent transmission in kernel space in detail,by defining special data structure for investigation and discard of repeated packets,and use MPLS technology to realize fast forwarding of data packets.Field environmental test is carried out in mine,and the test results prove the dual path concurrent transmission mode has high reliability and low time delay.

Key words:wireless mesh networks(WSNs); communication in mine; dual path concurrent transmission; packet loss rate; multipath routing

DOI:10.13873/J.1000—9787(2016)03—0032—05

收稿日期:2015—06—08

*基金项目:国家高技术研究发展“863”计划资助项目(2012AA010904);四川省科技计划资助项目(2013GZ0016);成都大学项目(20804)

中图分类号:TP 393

文献标识码:A

文章编号:1000—9787(2016)03—0032—05

作者简介:

胡然(1986-),男,湖北钟祥人,硕士,工程师,主要研究方向为Mesh网络与无线工业控制网络。