梁 潘
(阿坝师范高等专科学校 a.物理与电子科学系;b.应用物理研究所,四川 汶川 623002)
基于Linux自组织网的网络切换时延优化与实现
梁 潘a,b
(阿坝师范高等专科学校 a.物理与电子科学系;b.应用物理研究所,四川 汶川 623002)
文章给出了基于自组织网的Linux系统上MIPv6协议的执行方案和关键技术的改进方法,并设计出执行MIPv6协议的框架,提出了协议执行程序需采用的关键技术。并对移动性的切换延时问题进行了分析,得出延时有所降低的结论。最后,建立实验场景,对移动切换的性能进行了研究。通过对比延时数据,验证了改进后的方案正确和可行。
自组织网;MIPv6;双网卡技术;Linux
自组织网是由一组可相互通讯的移动节点组成的一种自主系统。节点间的通讯不必依赖于固定的基础架构。当两个节点彼此无法直接通讯时,数据会经过中间节点搭起的路径进行传输[1]。随着互联网的不断发展和移动范围的不断扩大,人类对通信的要求越来越倾向于移动性,将MIP添加到自组织网已经是一种普遍趋势。本文对地址资源丰富而确保通讯能从一端到另一端的MIPv6协议(移动Ipv6协议)展开探讨,其扩展性能可带来安全性和移动性,全世界范围内MIPv6逐渐被用来取代IPv4作为下一代网络协议。MIPv6协议为IP路由提供一种机制,每个移动节点有两个地址:静态本地地址和动态转交地址。如此一来,在不对上一层应用层进行调整的情况下,就便于移动节点连接到具有永久本地IP地址的任何链路上进行切换。
标准的MIPv6协议只适合单跳接入,故对多跳自组织网不适用[2]。鉴于此,本文将MIPv6协议与自组织网相结合应用在Linux系统上。为了实现多跳移动切换,对切换延时也进行了比较。同时,提出一种方案来降低延时,具体做法就是:配置双网卡来降低因扫描数据包丢失情况所导致的延时。通过分析,发现因移动性导致的延时得到有效降低。
切换是移动通信的一个重要部分,是使移动节点从一个接入路由器移动到另一个同时又维持它的互连性。在切换过程中,切换延时、数据包丢失率及负荷是三个重要的性能指标。切换延时是判断通信质量的关键指标[3],因此,降低切换延时是本文研究的目标。移动IPv6协议包括移动检测、IP地址配置和位置更新[4],移动检测和路由收敛是最重要的两个因素,使用链路层自动扫描法来快速扫描接入点可使延时达到最佳。此外,还使用到双网卡技术来减少因单网卡配置所致的数据包丢失问题。
本文中MIPv6的执行环境是Fedora-2.6.16系统,其基本流程框架如图1所示。
图1 MIPv6的基本过程框架
基本流程是从主功能开始,然后触发流道、mh_listen、icmp6_listen和sigth这四个线程[5]。这些线程被阻塞后要等待一些条件,当条件满足后,调用恰当的例程来进行处理操作,处理完毕,返回到阻塞状态。所有这些线程都是无限循环线程。
mh_listen负责处理MN与本地代理和对应节点的连接,包括连接控制信息以及返回路由的交互信息。
具体信息和处理功能如表1所示。MIPv6网络层切换算法的执行通过mh_listen与icmp6_listen之间的交互来实现。流道线程从tq_list中读取列表,该表按年月日次序进行排列。
表1 MH_LISTEN和处理功能
1.1 链路层切换
此前的实验中,应用“iwconfig”命令来执行手动切换。然而,当节点移动时,该方法使用起来十分不便。所以,通过“autolink”的自动扫描程序对“iwlist”源代码做了调整。该代码包含用来搜索无线网络的“iwlist interface scan”命令。“autolink”程序可获取到各个子网的质量信息,这些子网通过将“link quality”加入到调研信息里而获取到理想的通信质量。
有一部分iwlist过程会发生变化,主要表现在以下两方面:使用“while”循环程序对子网进行定期扫描;利用socket函数“select”机制来定期唤醒扫描程序。
增加链路质量比较,确定当前子网的“curessid”、最佳接入子网的“bestssid”、当前链路质量的“curqual”以及最佳链路质量的“bestqual”。
当被扫描到的链路质量优于最佳链路质量时,“curqual”和“curessid”的值被替换成“bestqual”和“bestessid”。
1.2 网络层切换
对比分析执行数据,切换延时主要包括移动检测和路由收敛。要优化切换延时就需要对这些参数进行调整[6]。
1)移动检测:路由器定期发送路由器通告(RA)以告知其它节点有关该子网的信息,移动节点接收来自路由器的通告并通过对比子网前缀来确定该节点是否发生了网络层的移动。协议里的RA消息时段默认为10 s,当移动节点切换到新子网上后,为了接收到发送网络信息的新路由器,将该时段缩短至5 s。
2)路由收敛:当移动节点接入到新子网时,它无法立即进行通讯,因为这个新子网尚未完成收敛。将“hello”消息和“tc”的默认值分别从2 s和5 s调整到1 s和4 s以缩短收敛时间。
2.1 测试配置
在测试过程中,采用的系统是Linux内核版本和802.11b链路层协议的Fedora-2.6.16系统,最大传输速率为11 Mbps。拓扑结构呈分层形状。无线网卡是TPLINK TL-WIN322+,传输范围:室内为100 m以内,室外为300 m以内,将网卡设为自组模式。
1)性能测试工具
Ping6:在IPv6环境下运行“ping6”命令来检测网络的连接性。使用“ping6”来收集切换和数据包丢失的延时统计数据。
2)手动切换多跳网络
实验在室内进行,建立了一个分层的自组织网,配置有三个子网,如图2所示,有一个移动节点、一个本地代理、两个接入路由器、两个次要节点和一个通信节点。当移动节点在三个子网内部进行切换时,它通过一条二跳路径维持与AR的通信。相关信息必须从直接节点转播给路由器。有关配置如表2所示。
图2 多跳网络拓扑结构
节点移动节点本地代理接入路由器ESSIDssubnet1subnet1backbonesubnet2backboneFrequency2.412G2.412G,2.442G2.422G,2.442GIPv6address2001:db8:1::42001:db8:1::2001:db8:1::2001:db8:2::12001:db8::2Accessrouter2CorrespondednodeSecondarynodeASecondarynodeBSubnet3,backbonesubnet2subnet1subnet32.432G,2.442G2.422G2.412G2.432G2001:db8:3::12001:db8::32001:db8:2::52001:db8:1::102001:db8:3::6
3)拓扑结构的测试
由图2可知移动节点位于本地代理的一跳范围外,当发生切换时它可以接入到外部网络。借助于次要节点,它可以与接入路由器和对应节点进行通讯。
4)数据测试
对RA时段和OLSR路由数据包的时段进行调整有助于缩短切换延时。由上述测试实验可知,进行时段调整后,当移动节点从子网1移动到子网2时,切换延时是18 s;当从子网2移动到子网3时,延时是19 s;当返回至子网2时,延时是20 s;当移向本地子网时,延时是19 s。这组延时较之前的要稍短一点。在对时段参数调整之前,平均切换延时约是20 s。调整这些参数并没有明显缩短切换延时。
2.2 添加多跳切换的autolink扫描程序
无线网卡的实际传输范围是室内约100 m,室外约300 m。使用“ip6tables”数据包过滤工具来断开与多跳拓扑结构的直接连接。
测试实验在室外进行,建立了带二跳分层自组织网的两个子网。拓扑结构如图3所示,其中包括了一个移动节点、一个本地代理、一个接入路由器和两个次要节点。移动节点和各个子网节点无法直接通讯,而需要有次要节点的协助。在移动节点切换过程中,本地代理与移动节点之间可以保持通讯状态。表3给出了各节点的配置情况。
图3 两跳网络的自动切换
节点移动节点本地代理ESSIDsubnet1subnet1,backboneFrequence2.412G2.412G2.442GIPv6address2001:db8:1::42001:db8:1::12001:db8::1节点接入路由器SecondaryASecondaryBESSIDsubnet2,backbonesubnet1Subnet2Frequence2.422G,2.442G2.412G2.422GIPv6address2001:db8:2::12001:db8::22001:db8:1::102001:db8:2::5
由图4和表4的测试数据,可知通过对协议中的默认值进行调整,切换延时得到缩短。但是,这并不说明它就符合要求。执行过程中,如果控制信息的时段太短,网络负荷会增加,如此一来,不仅没法降低切换延时,而且容易导致网络拥堵。通过对比二跳切换延时的手动切换和自动切换,可得知自动切换延时比手动切换的要长,原因在于在自动切换过程中,无线网卡必须定期扫描网络。扫描时,接收到的数据包被丢弃,当扫描时段拉长,数据包丢失率就降低,但切换延时会延长;另一方面,如果扫描时段缩短,切换延时也跟着缩短但数据包丢失率会提高。这就要求在切换延时与通信质量之间达到平衡。故本文提出采用双网卡机制来改善这方面的性能。
子网A-子网B图4 修改参数的测试结果
周期范围OLSR路由周期HELLO_INTERVAL2sTC_INTERVAL5sREFRESH_INTERVAL3sRA周期MaxRtrAdvInterval10sMinRtrAdvInterval1sMinDelayBetweenRAs1s自动连接扫描周期Scanningperiod5s
移动节点之间通过相同的网卡来进行通讯和扫描,这是影响通信质量的关键所在。因此,可以给移动节点配置两个网卡,一个用于正常通讯,一个用于扫描网络质量,然后将结果反馈给网卡,通过这些反馈信息网卡可以作出判断并进行切换。接着,在未受干预的情况下,将扫描和通讯任务分配给两个相对独立的网卡。通过缩短其它网卡的扫描时段,从而在保证通信质量的同时降低了切换延时。
3.1 配置
对已有网卡配置增加新的网卡工作模式(IP地址、工作频率),用新网卡识别程序替换“autolink”配置文件里的扫描网卡识别程序,对“autolink”程序进行编译后就可以运行网卡。
3.2 测试结果
相关配置和参数与前面测试用到的相同,测试结果如图5所示。显而易见,在添加了双网卡机制后,性能得到显著提高,说明该方案是正确和可行的。
图5 加入双网卡机制的测试结果
本文在Linux系统上对MIPv6协议进行了执行研究实验,通过不同的网络拓扑结构验证和测试了实验的可行性和有效性,提高了影响切换延时的分块性能。通过构建测试环境得到延时数据,并对延时数据进行分析,可知通过调整参数有助于缩短切换延时而使协议达到优化。最后对于因单网卡导致的数据丢失问题,提出采用双网卡机制来改变网卡的工作模式,该机制被证明能有效地解决切换延时问题。
[1] 李瑶.基于Linux操作系统HOLSR路由协议的设计与实现[J].科学技术与工程,2013,13(28):8 508-8 512.
[2] 唐军,裴昌幸,苏博.PMIPv6本地化路由机制研究[J].西安电子科技大学学报:自然科学版,2012,39(1):98-104.
[3] 阚保强,范建华,王建业.认知无线网络信道接入协议[J].软件学报,2012,23(7):1 824-1 837.
[4] 唐伟,汤红波,陈璐.基于PMIPv的移动网络快速切换方案[J].计算机科学,2013,40(11):43-47.
[5] 曹文斌,陈国顺,牛刚,等.基于ICMP和SNMP的网络设备监测技术[J].计算机工程与设计,2014,35(4):1 152-1 155.
[6] 郭俊,陈臣,朱兵章.自组织网络中基于负载均衡的多径路由设计[J].微电子学与计算机,2013,30(10):9-16.
[责任编辑:寸晓非]
2014-09-20
国家自然科学基金项目(61373163);四川省教育厅项目(13ZB0038);阿坝师范高等专科学校规划项目(ASB11-05)
梁潘(1978-),男,四川广汉人,阿坝师范高等专科学校副教授,硕士。
TP301.6
A
1008-4657(2014)06-0059-06