2024年4月15日发(作者:vivo手机官网官网)
旅客列车无线局域网带宽分配系统的研究与实现
宫兴琦;姜会增;周用贵
【摘 要】旅客列车无线局域网带宽分配系统采用链路发现模块均衡9路链路负载,
采用jhash_3words算法、RoundRobins算法构建用户发现模块,实时更新系统内
真实用户数量.该系统优化了旅客列车无线局域网互联网出口的带宽分配方式,有效
提升了互联网使用效率,通过了国家铁路产品质量监督检验中心的性能测试与功能
测试,为在高速列车的实际运用奠定了基础.%In the wireless local area
network(LAN) bandwidth allocation system for the passenger train, the link
discovery module was used to balance the load of 9 road links,
jhash_3words algorithm and Round Robins algorithm were used to
construct the discovery module, update the number of real users in the
system in real time. The system optimized the mode of bandwidth
allocation, could effectively enhance the efciency in the use of the Internet.
The system passed the performance test and the function test of the
national railway product quality supervision and inspection center. It laid a
solid foundation for the practical application in the high-speed train.
【期刊名称】《铁路计算机应用》
【年(卷),期】2018(027)002
【总页数】5页(P47-51)
【关键词】旅客列车无线局域网;高速铁路;互联网接入;带宽分配系统
【作 者】宫兴琦;姜会增;周用贵
【作者单位】中国铁道科学研究院 标准计量研究所,北京 100081;中国铁道科学研
究院 标准计量研究所,北京 100081;中国铁道科学研究院 标准计量研究所,北京
100081
【正文语种】中 文
【中图分类】U285.211;TP393
为旅客提供互联网接入服务是旅客列车无线局域网系统的主要功能之一,该系统采
用移动、联通和电信3家运营商的4G网络,构建9路车地通信链路,提升互联
网出口带宽。高铁及动车车厢内用户密度高,车地通信出口带宽较小,旅客列车无
线局域网宽带分配系统作为旅客列车无线局域网接入系统的关键部分,切实影响旅
客接入互联网的实际体验。利用有限的带宽为旅客提供更好的互联网接入服务是带
宽分配系统的一个重要功能。
1 带宽分配系统设计
1.1 系统组成
旅客列车无线局域网由中心服务器、单车服务器、无线访问接入点(AP)和无线
网桥组成,中心服务器主要提供旅客互联网接入服务,单车服务器提供车厢内局域
网服务,AP提供无线终端接入服务,无线网桥连接车厢间的单车服务器,局域网
组成如图1所示 [1]。
旅客列车无线局域网带宽分配系统部署于中心服务器,由用户发现模块和链路发现
模块组成,主要用于提升互联网接入利用率。
1.2 系统功能
带宽分配系统的用户发现模块主要用于实时更新车上用户的状态,适应高铁停靠站
旅客上下线较频繁的情况,为链路发现模块提供信息支持;链路发现模块主要根据
在线用户状态和9路车地链路状态为用户选择合适的通信信道。
图1 旅客列车无线局域网组成图
2 关键技术
2.1 jhash_3words哈希算法
jhash_3words算法为Linux 网络协议中常用的一个哈希算法,适用于网络数据哈
希运算。通过用户数据包解析出用户的mac地址,并通过jhash_3words算法将
解析出的mac地址进行hash散列运算,用户发现模块通过对jhash_3words算
法进行二次封装,得到mac地址散列运算函数get_tuple_hash。
运算结果更新,存入用户信息链表,信息链表的单个节点记录了用户的状态、最新
数据更新状态和权限级别。当用户接入中心服务器后,get_tuple_hash函数通过
用户源IP和mac地址进行hash运算,根据运算结果将用户登入时间和权限等信
息更新到指定的链表结点上,如果指定结点不存在则表示为新用户,为其创建新的
结点[2]。如果结点已经存在则表示该用户为老用户,更新其最后一次访问时间。
当内核态通过hash mac散列算法将用户列表更新后,内核通过netlink socket
动态消息通道向用户态应用发送新的用户列表。
2.2 RoundRobin算法
链路发现模块负责数据包在各条可用链路上的并发传输,带宽分配方式的选择原则
是并行带宽增大和数据传输可靠。
采用 RoundRobinScheme算法[4],也称为轮询调度算法,该算法把来自用户的
请求轮流分配给内部链路,从1开始,直到N(网卡个数),然后重新开始循环。
RoundRobin算法的优点是简洁,无需记录当前所有连接的状态,是一种无状态
分配。系统使用了RoundRobin的权重分配算法,即为每条链路分配不同的比例
系数,例如,3块网卡设置为3:1:1时,将控制数据包在各条链路上的分发比
例为3:1:1。
3 系统实现
带宽分配系统采用 C语言开发,开发平台为Centos6.6,内核版本为2.6.38,采
用的编译器为gcc。系统的用户发现模块采用内核编程方式,链路发现模块采用应
用层编程方式,二者通过netlink套接字方式通信。
3.1 用户发现模块实现
当用户通过列车AP接入中心服务器后,用户发现模块通过内核HOOK获取用户
数据包[3],根据数据包信息通过jhash_3words算法更新用户列表,之后通过
netlink套接字将消息发送至应用层接收程序,应用层接收程序实时更新用户列表。
部分实现代码如下:
jhash_3words算法进行二次封装,得到高性能mac地址散列运算函数
get_tuple_hash,实现代码如下:
此时,get_tuple_hash函数通过用户源IP和mac地址进行hash运算,根据运
算结果将用户登入时间和权限等信息更新到指定的链表结点上,如果指定结点不存
在,则表示为新用户,为其创建新的结点。如果结点已经存在,则表示该用户为老
用户,更新其最后一次访问时间,其部分实现代码如下:
当内核态通过hash mac散列算法将用户列表更新后,内核通过netlink socket
动态消息通道向用户态应用发送新的用户列表,netlink需要定义新的协议号用来
标示消息,如下所示:
3.2 链路发现模块实现
中心服务器使用移动、联通、电信的3G/4G网络作为车地通信的网络出口,支持
最多9条无线链路并发传输用户数据,但是相对于乘客的需求而言,此时带宽仍
属于窄带通信,因而如何将9路链路充分利用,提高带宽分配效率是提升乘客使
用体验的一个重要环节。
链路发现模块的作用在于即时维护各条链路的真实状态,包括链路的可用性、链路
IP变换,并且在链路状态发生变化时能够将用户调度到可用链路上,对上层应用
是透明的,能够保证用户通信的连续性。
链路发现模块需要维护可用链路链表,在IP发生变化时通过可用链表来选择数据
转移的去处,同时更新可用链表中的内容,IP切换的过程可以分解为两个部分:
(1)现有的IP地址消失,即旧的链路失效,此时,应该将数据转移到其他链路上
去。
(2)新的IP地址出现,即新的可用链路出现,此时,应该将一部分数据分配到新
的可用链路上。
在新的IP出现时需要新建套接字描述符,并将其代表的链路名称等信息生成一条
新的可用链路结构加入到链表中,同时,将代表该链路上的旧IP记录删除,注销
套接字描述符。
创建套接字的过程并不复杂,关键在于要保证在IP切换的过程中数据能够及时、
连续地进行交互[5]。当可用链路的数量发生变化时,自动地将数据进行转移分发,
既不能向失效链路分配数据,也不能使新的可用链路闲置。
以4块网卡为例,当4条链路变为3条,或者3条链路变为4条之后,需要对网
卡进行重新排序,调整各条可用链路的状态,处理流程如图2所示。
图2 可用链路更新流程图
可用链路模块在数据转移模块中的作用比较重要,可用链路模块维护了现在可用链
路的全部信息,为数据包的链路分发提供了重要参考。
链路发现模块负责数据包在各条可用链路上的并发传输,实现并行带宽增加和数据
传输可靠。在调度方式的选择上,采用RoundRobin算法[6]。
本文允许其他模块通过调用RoundRobin模块对各条链路的权重系数进行调节,
其中,sendpercent[7]为权重系数,链路发现模块将根据sendprecent设置的系
数,并进一步通过匹配ifname和device_id来确定对应的链路,从而正确设置系
数。
RoundRobin算法在高速移动环境下简单易实现,是从链路负载的角度进行考虑。
然而从用户使用的角度上讲有着很大的局限性,通过简单的轮询,同一个应用的数
据流被分到不同的链路上很可能非但没有增加并行传输的带宽,反而造成了链路带
宽的下降。假设有两条链路A和B,A链路的往返时间(RTT)为40 ms,B链路
的RTT为80 ms,如图3所示。
图3 RoundRobin轮询算法示例
由图3可知,B链路的时延较大,在Packet1到达Recver后,需要等到Packet2
也到达Recver才能向上层应用进行递交,也就是说,即便A链路此时的RTT较
小,也需要等待B链路的数据包,此时对于用户来讲,B链路的情况较差。在A
链路不发生拥塞的情况下,B链路的加入反而拉低了A链路的表现。
当某条链路的IP失效时,链路发现模块会将发生IP变化的链路消息通知数据转移
模块,此时需要将此链路设为不可用链路,停止继续分配数据包至此链路,代码如
下:
IP变化消息中的新IP为0.0.0.0,说明该网卡的IP已经失效,需要将此链路中的
轮询比例(dis)属性设为0,数据调度模块会检测dis的数值,当为0时会停止
向此链路分发数据,此时可用链路的数目发生了变化,需要更新链路ID,确保可
用链路链表的状态是最新的,通过检查dis属性设置可用链路的ID和可用链路的
数量[5]。
当接收到的IP变化的消息中新IP不为零时说明有新的可用链路加入,此时应该将
其加入到可用链路链表,为其分配数据[8],代码如下:
4 系统测试
带宽分配系统在试验室环境下已经通过功能验证,经测试,该系统能够在常数时间
内判别大量用户实时状态,提升9路链路的应用效率,采用运营商的网络进行互
联网接入,具备同时接入中国移动、中国联通和中国电信3G/4G网络的能力。每
列车中心服务器上统一配置一套互联网接入设备,具备多信道带宽汇聚并在车载局
域网内进行自适应分配的功能。
5 结束语
旅客列车无线局域网带宽分配系统在试验室环境下已经通过功能验证,但是在实际
情况下,每条线路的运营商3G/4G信号覆盖强度不同,导致不同的线路出口带宽
差别较大。下一步需做的工作是在实际运行环境下进行测试,通过积累大量用户的
行为特征与数据特性,更好地优化互联网接入功能,更进一步提升互联网带宽分配
效率,提升用户使用体验。
参考文献:
[1]中国铁路总公司. 旅客列车无线局域网系统和安装布线总体技术要求(暂行)
[Z]. 北京:中国铁路总公司,2015.
[2]李晨光. Linux系统网络管理模块的实现[J].铁路计算机应用,2008 ,17(6):
35-38.
[3]张 昊. 高铁车地通信系统级仿真平台设计与多基站协作技术的研究[D].成都:西
南交通大学,2013.
[4]丁良辉. 无线自组织网络中的TCP协议研究[D]. 上海:上海交通大学,2008.
[5]周开波. 利用mSCTP实现3G和WLAN无缝切换及其性能分析[D]. 北京:北
京邮电大学,2012.
[6]何 川. 移动自组织网络中的可靠传送协议[D].成都:电子科技大学,2013.
[7]宫兴琦.高速移动环境下连接及拥塞控制的研究与实现[D].北京:北京交通大学,
2014.
[8]方 棋,吉 强,韩 臻.Linux环境下基于策略路由实现多线路负载均衡[J]. 铁路计
算机应用,2006,15(9):35-38.
[9]Andrea De Vendictis, Andrea Baiocchi, Michela is and
enhancement of TCP Vegas congestion control in a mixed TCP Vegas and
TCP Reno network scenario[J].Performance Evaluation, 2003(533).
[10]Tine Stegel, Janez Sterle, Urban Sedlar, et al. SCTP multihoming
provisioning in converged IP-based multimedia environment[J]. Computer
Communications, 2010(3314).
发布者:admin,转转请注明出处:http://www.yc00.com/num/1713186271a2199916.html
评论列表(0条)