盛建兵,程培星
(江苏自动化研究所,江苏 连云港 222006)
为了在局部故障或受损时,全系统不至于瘫痪失效,舰载作战系统网络主要是采用双冗余交换式网络来实现[1]。典型舰载作战系统网络结构组成如图1所示。
图1 典型舰载作战系统网络结构组成示意图
典型舰载作战系统网络分为三层,核心层采用两台高密度端口交换机冗余互连,接入层的交换机采用冗余备份形式,同时与核心层交换机互连,各分系统或设备均利用双冗余网卡就近接入到接入层交换机上。由于双冗余网卡的特殊性,在同一时刻,双冗余网卡仅一个网络通道处于工作状态,另一个网络通道处于后备状态。双冗余网卡切换在底层设备驱动程序中实现,对网络层及以上各层,冗余切换是完全透明的。而双冗余网络切换,则是在正常情况下,所有节点的业务部分在主用交换机上,部分业务在备用交换机上,一旦其中任何一台交换机或交换机之间冗余线路出现故障,则故障节点的业务可以自动切换到其它节点上。
随着舰载网络的节点越来越多,应用越来越复杂,舰载网络的规模越来越大,双冗余网络的可靠性成为舰载网络设计的关键,而冗余切换时间则成为衡量舰载网络性能的核心指标。进行冗余切换时间的测量,有利于掌握舰载网络的性能,有利于对舰载网络行为进行预测和分析,发现网络瓶颈和故障,是建立高效、稳定、可靠、可控的舰载网络的重要保证;同时也是推进高性能双冗余网卡、双冗余交换机发展的重要动力。为提高冗余切换时间的测量精度,本文首先分析了影响冗余切换时间测量误差的因素,并针对这些因素提出了减小测量误差的关键技术,同时进行了试验验证,结果表明本文提出的方法有效地提高了测量精度,可适用于目前的舰载作战系统网络冗余切换时间高精度测量。
冗余切换时间是指正在工作的主用通道发生故障自动切换到另一路备用通道并且开始正常工作的时间。
目前,冗余切换时间测量的一般方法是测量系统定时向被试设备或被试系统发送定长报文,被试设备或被试系统收到该报文后立即向测量系统作出响应。测量系统通过监测冗余切换过程中报文丢失的个数 n,来获知冗余切换时间。冗余切换时间为报文丢失数n与报文发送时间间隔tΔ的乘积。
从上述测量方法可以看出,冗余切换时间测量的关键就是求取时间间隔。时间间隔偏小,则可能在未发生冗余切换时,已经产生丢包;时间间隔偏大,则可能整个冗余切换过程都未产生丢包。因此,该时间间隔不是一个无限小的数值,而是一个确保被试设备或被试系统未发生切换时不产生丢包却又足够小的临界值。
通过网络工作原理和测量过程可知,在网络流量稳定情况下,以报文发送的端到端时间延迟为发送间隔来发送测试报文,系统不会丢包。而端到端时间延迟可分解为3个部分:
其中,t端到端表示端到端时间延迟,t发送延迟表示测量系统发送测试报文的处理时延,t总延迟表示测试报文在网络中的传输总延迟,t接收延迟表示被试设备或被试系统接收到测试报文的处理时延。
网络传输总延迟又可分解为4个部分:
其中,tTRANS为传输延时,tPROP为传播延时,tQD为交换机的排队延迟,tPROC为交换机处理延时。传输延时是传输一个报文所需的时间,传播延迟就是信号传播时间,所以
电信号或光信号的速度为3.3~5μs/km,tQD是交换机的排队延迟,当流入交换机的通信量大于流出交换机的通信量时,会出现排队延迟,多出的比特在交换机缓冲区中排队。根据粗略经验,假设每个进入交换机的报文平均等待4个在它前面的报文后才被发送,则平均排队延迟是传输延迟的 4倍,而tPROC是交换机的处理时间,一般假设可以忽略,因此报文的网络传输总延迟故,t总延迟取决于传输速率、链路长度和报文大小。因此,假设以tΔ为时间间隔发包,系统不产生丢包。则利用这种测量方法,切换时间的最大误差出现在即将接收到一个返回报文时发生冗余切换,且切换完成前刚刚对外发送了一个报文的情况,结合公式(2)、(3)、(4)、(5),测量误差为:
从冗余切换时间测量方法以及上述误差分析,可以看出,在满足假设条件的情况下,t误差与tΔ、传输速率、链路长度、报文大小、t发送延迟、t接收延迟密切相关。综上,影响测量结果的关键因素有:
①时间片分辨率,决定了时间间隔tΔ的细分粒度,影响冗余切换时间的测量误差;
②系统对测试报文的处理,决定处理时延t发送延迟、t接收延迟的大小;
③网络稳定情况,决定测量时机,从而避免因为网络原因造成的丢包而被误认为是冗余切换造成的丢包。
纵观上述影响因素,解决高精度时间片分配技术、高速的报文处理技术、网络流量的自适应探测技术是实现高精度的冗余切换时间测量的关键。
在测量系统中可以通过软件和硬件两种方法提高时间片精度。
软件方法是可通过在 WindowsXP系统上利用RTX实时扩展模块对系统进行扩展。RTX实时扩展模块以一系列库的形式完成,它在不影响WindowsXP系统原有功能的基础上增强了实时性。RTX实时扩展模块具有独立的时钟和定时器,分辨率高,时间片精度可达 1μs。因此,在 WindowsXP系统上利用 RTX实时扩展模块对系统进行扩展,大大提高了WindowsXP系统的时间片分配精度,降低测量误差。
硬件方法是可将测量系统与GPS设备互连。在测量系统上开发软件获取 GPS时间,进而划分精确的时间间隔,并以该时间间隔周期发送测试报文,降低测量误差。该方法时间片精度可达1μs。
通过比较,两种方法的时间精确性都能达到1μs,但硬件方法在测试报文的发送和接收实时性上不能与软件方法相比,且软件方法简化了测量系统,简单有效,经济实用,方便应用,灵活性强。因此,本文采用软件方法提高时间片精度,在 WindowsXP系统上嵌入RTX实时扩展模块,是一种既能简化系统模型,又能达到系统需求的较优实现途径。
要实现报文的高速处理,降低处理时延,一方面要求系统对报文进行实时处理,另一方面还可通过提高TCP/IP协议的处理效率来实现。
要实现系统对报文的实时处理,可以通过在WindowsXP系统上利用RTX实时扩展模块进行扩展来实现。由于WindowsXP系统不是一个实时操作系统,具有不确定的中断响应时间,因此基于WindowsXP系统的报文处理具有不可预测的执行时间,极大可能每次的处理时延都不一样。而在WindowsXP系统上利用RTX实时扩展模块进行扩展就可实现系统的实时性。RTX实时系统是Windows系统内核体系的延伸,它修改并扩展了整个硬件抽象层(HAL),实现了独立的内核驱动模式。它的线程调度采用基于优先级的抢占调度策略,实现了高速调度;RTX内存管理是采用WindowsXP非分页池来满足其存储需要,避免使用虚拟内存因缺页而产生延迟;RTX提供 128个线程优先级,满足实时系统需要;RTX应用高速的 IPC信息和同步机制实现与 Windows之间的数据通讯;还采用自己中断管理模式,完全消除来自 WindowsXP系统的 IRQL造成的延迟[3-5],多种优点表明采取RTX实时扩展模块能够实时收发测试报文,减少测试系统的处理时延,降低测量误差,提高测量精度。
对于如何提高 TCP/IP协议处理效率,国际上提出很多方法,包括增加协议处理器,由专门的 CPU处理 TCP/IP协议和重新设计操作系统内核结构,减少数据搬移次数,以及优化 TCP/IP协议实现等[6]。对于冗余切换时间测量最有效的方法主要是通过减少数据搬移来降低处理时延。例如将测试报文进行原始封包,并利用协议驱动直接将原始封包发往链路层[7],这样就绕开了WindowsXP系统自身的TCP协议处理模块,避免网络层协议对报文的拷贝处理,减少数据的搬移次数,提高测试报文处理速度,降低测试系统对测试报文的处理时延。另外,还可在进行校验和的计算时,限制协议去读取整个报文,通过传递指针而不是复制报文来减少实际报文的传输量,从而降低处理时延,提高协议的处理执行效率[1]。
网络是否稳定的具体体现就是网络流量的变化。当网络流量突然变大,超出网络负载,网络将产生丢包。因此,如果网络流量发生变化,在进行网络冗余切换时间测量时,不能保证测量过程中产生的丢包全部是因为冗余切换而产生的丢包,测量结果容易产生较大偏差。因此,必须确保整个测量时间内,网络流量是相对平稳的。
网络流量是否平稳可根据网络流量与报文传输时延密切相关的原则来确定。报文传输时延突然变大,说明网络突然变得拥挤,流量变大。因此,可以利用往返时延的变化计算标准差,当标准差太大或超过阈值,则可以认为网络不稳定。具体实现就是:测量系统在发送测试报文时记录发送时间t发,被试系统收到该测试报文后,立即发还给测试端,测试端接收到该报文后记录接收时间t收,根据发送时间和接收时间计算往返时延it,利用该往返时延计算n个测试报文的时延均值t,同时计算标准差s。其中:
计算出t和s后,如果s很大,或超过阈值,则网络不稳定,此时将最先得到的往返时延去掉,将此往返时延纳入计算范围,重新计算 t和 s。一旦计算出 s小于阈值,且t也在限定范围内,则可以认为网络是稳定的。此时适合的时间间隔就是平均时延的1/2。
鉴于上述分析,冗余切换时间高精度测量系统是在 WindowsXP系统上嵌入 RTX实时扩展模块,进行软件开发来实现的。
RTX实时扩展模块被实现为一整套库的集合(动态库与静态库),实时子系统(RTSS)作为一种windows内核驱动程序和扩展的 HAL实现实时性,提供了一套RtWinAPI的实时API库用于对实时对象的访问方法。其中,RTX扩展下的 TCP/IP协议——RT-TCP/IP协议提供的应用程序编程接口与最新版的WindowsSocket2.0规范一致,使得RTSS环境中的实时网络编程更简单方便。
RT-TCP/IP需要专门的网卡支持和对应的网卡驱动。本系统采用Rtl-8139型号网卡,同时安装RTX提供的网卡驱动,并对网卡进行配置。设置动态内存分配单元 MemoryInk=1024,网卡驱动文件 Driver=RtRtl81x9。设置 RtWinAPI定时器优先级TimerPriority=127,保证应用程序中的实时 API能得到最快执行。还需配置网卡IP地址及掩码。根据需要,还可配置堆栈最大可用线程数、中断优先级、接收优先级等。本系统采用默认值。当然,系统还可选择其它RTX支持的网卡,并进行配置。
测量系统应用程序为实时软件,运行于RTSS环境中。
测量系统应用程序实现流程如图2所示。实现结构体系如图3所示。
图3 测量系统实现的结构体系
首先,检测用户输入的有效性。输入有效后,使用RT-TCP/IP协议编程接口创建实时网络套接字,套接字类型为SOCK_RAW,IP地址族为PF_INET。
然后,测量系统使用RT-TCP/IP协议编程接口进行测量报文的实时发送和接收。由于套接字为原始套接字类型,因此,需自行填充测试报文的IP头、UDP头以及数据,包含校验和。在发送测试报文时,采用RTX时钟编程接口获取实时 HAL时钟 CLOCK_FASTEST的当前时间,并记录下来;发送完毕后,主线程阻塞于报文接收;被试系统在收到该报文后立即向测量系统发送;测量系统接收到该报文时再次采用 RTX时钟编程接口获取接收时间,并计算出该次报文发送的端到端传输时延。这样,接收到n个报文后,计算出平均时延 t和标准差 s,从而确定当前网络稳定度。若检测到当前网络不稳定,则丢掉最先接收的报文,等待下一次接收报文的端到端传输时延,重新计算,直到确定当前网络是平稳的。最终确定报文发送的时间间隔tΔ。
确定出报文发送的时间间隔后,创建RTX线程,该线程使用RT-TCP/IP协议编程接口完成报文的接收,同时将该线程的优先级设定为 RT_PRIORITY_MAX-1,并启动线程。在主线程中,创建RTX定时器,该定时器使用RT-TCP/IP协议编程接口实现报文的发送,定时器优先级设置为 RT_PRIORITY_MAX,时钟采用实时HAL时钟CLOCK_FASTEST,保证定时时间一到,以最快速度将测试报文发送出去。创建完毕后,用RTX定时器编程接口设置RTX定时器的定时时间和重复间隔,并启动 RTX定时器。当达到用户要求的测量总时间后,取消并删除 RTX定时器。等待一定时间后,终止RTX线程。
最后,针对测试过程中发送的总报文数和接收到的报文数计算丢掉的报文数,与时间间隔的乘积即为网络冗余切换时间,并显示到RTX 控制台上。
被试系统不改变系统环境,仅安装配试程序。配试程序利用winsock应用程序编程接口,创建套接字类型为 SOCK_DGRAM 的套接字,直接在应用层进行数据收发。配试程序在接收到UDP数据包后立即将该数据包返还回去。
搭建如图4所示的模拟测试环境进行冗余网络切换时间测量。图4中,某型号交换机为10M/100M自适应的全双工冗余以太网交换机,冗余切换时间在50ms内。为验证需要,两台交换机以两条10Mbps速率线路互连构建局域网,测量系统、被试系统、PC1、PC2则以100Mbps速率接入到交换机。
测量时,一方面利用本测量系统进行测量,另一方面利用 Agilent(安捷伦)公司的 J3446D型局域网分析仪进行测量。J3446D型局域网分析仪具备全双工百兆线速捕获能力,能设定时间间隔自主发送网络报文,时间精度可达 1ns。首先进行网络平稳状态下的测量。测量时先确保测量系统与被试系统通过A线路互通,并开始进行测量。测量开始后,等待几秒钟,拔去线缆 A,此时测量系统与被试系统将自动切换至B线路上互通,完成冗余切换。然后进行网络不平稳状态下的测量。测量时,首先确保测量系统与被试系统通过A线路互通,并开始进行测量。测量开始后,PC1向 PC2以 1ms为间隔,连续发送 200包 500字节大小的网络报文,发送完毕后,自动停止发送,以此引入网络突发流量,几秒钟后,拔去线缆 A,此时测量系统与被试系统将自动切换至 B线路上互通,完成冗余切换。测量结果对比见表1。
图4 模拟测试环境互连关系
表1 测试结果表
该型号交换机的冗余网络切换时间不大于50ms。测量结果中,第 1~5组为平稳状态下的测量结果,第6~8组为引入网络突发流量后的测量结果。从第1~5组测量结果可以看出,本文设计的测量系统的测量结果有效。从第6~8组测量结果可以看出,在引入网络突发流量后,由于网络分析仪对网络状态未进行探测,仍然采取原时间间隔进行测量报文发送,并将其进行了统计,因此,其测量结果超出该型号交换机的冗余网络切换时间指标,偏差较大。而本文实现的测量系统采用了网络流量的自适应探测技术,其测量结果与平稳情况下的测量结果基本相符,降低了网络抖动对测量结果的影响。测量结果说明,本文实现的测量系统减小了测量误差,提高了测量精度,能满足高精度冗余切换时间的测量要求。
目前,双冗余网络在军事上应用广泛,冗余切换时间的测量意义重大。本文分析了冗余切换时间的测量方法,从减小测量误差,提高测量精度,确保测量结果的有效性方面,提出了解决方案和具体实现,对于检测、评估舰载作战系统网络性能具有重要意义。实践证明,采用本文提出的解决方案是切实可行的,实现的测量系统部署方便、应用灵活,便于推广,具有广泛的应用前景。
[1]潘冠华,等.舰艇综合指挥控制系统原理[M].西安:西北工业大学出版社,2010.
[2]Jean Walrand,Pravin Varaiya.高性能通信网络[M].张艳,等译.北京:机械工业出版社,2002.
[3]RTX7.0 Documentation.
[4]李宏科.一种基于 RTX 的实时系统的实现[J].装备制造技术,2006,33(3):55-56.
[5]刘晓川,樊子明.Windows2000(XP)+RTX的实时性分析与测试[J].舰船电子工程,2007,27(6):135-137.
[6]王佳玮,田斌,裴昌幸,等.分布式网络测量探针关键技术研究[J].现代电子技术,2007,30(11):65-67.
[7]张越,等.Visual C++网络程序设计实例详解[M].北京:人民邮电出版社,2006.