摘要:基于xdsl宽带网络测试系统的tl1通信协议模块的设计与实现,以tcp/ip协议承载的tl1协议模块在设备层提供tl1协议接c7,根据adsl宽带网络测试系统的工作流程以及tl1协议进行研究分析,提出将tl1通信协议模块划分为多任务思想,主要采用基于嵌入式实时操作系统vxworks的实时多任务的设计方法,对与客户端进行连接请求、从客户端读tl1消息、tl1消息解析处理、发送tl1消息、线程调度、自治消息处理多个任务及它们之间的通信做较为深入地研究。
关键词:宽带网络测试系统tl1通信协议vxworks
0引言
isdn、xdsl、cable、光纤等技术的出现,必将最终把人们带入全新的数字宽带上网时代。而在这众多的宽带技术中,xdsl正为越来越多的人所关注。xdsl(数字用户线)是目前国际上最流行的宽带接入技术,dsl技术主要分为对称和非对称两大类。xdsl中“x”代表着不同种类的数字用户线路技术。其中,adsl的建设己经成为宽带接入的主流模式。它利用现有的双绞铜线能够满足用户宽带接入通信业务需求,是实现宽带上网和网上高速冲浪的理想选择。
随着adsl用户规模的急剧膨胀,现有的adsl业务维护流程给实际工作带来了效率低、满意度差等问题,严重制约和阻碍了中国adsl业务的高速增长。wwW.133229.cOm同时,用户对通信业务的质量要求越来越高,对于故障解决的及时性和有效性要求也越来越高。如何定位用户侧故障、线路故障和网络侧故障,如何快速解决故障,这些都成为dsl发展的新需求。目前,国内关于xdsl测试系统的研究和应用正处于启动期,无论国内厂商还是国外厂商在中国都没有投入应用的实例。本文基于xdsl宽带网络测试系统,主要讨论tl1通信协议模块的设计及实现。
1adsl宽带网络测试系统的总体设计
本节简单介绍整个系统软件总体的总体目标及软件模块的划分,以及各模块的目标及完成的功能以及各模块之间的关系。并说明测试服务器与dslam网管接口、与112系统接口、与97资源数据库接口。
1.1软件设计结构
1.1.1客户端软件①测试服务器测试命令呈现界面(包括文本、图形、报表显示);同时汇总日报、周报、月报数据。②对atp设备自身的管理界面(包括对设备的配置管理、故障管理、性能管理、拓扑管理等),相当于设备层面的ems。③对应用系统的管理界面(包括用户管理、白志管理、权限管理、用户自定义设置)。
1.1.2服务器软件①相对于界面的后台处理模块,包括对测试命令的发送、解析(使用tl1协议);对前台界面的相应处理。②提供与其他系统的api接口(包括112网关系统的接口;dslam设备网管的通信协议)。③支持atp设备多级组网的要求。④支持多协议,如tl1,snmp协议。
1.1.3112网关软件①112网关软件提供和运营商112系统的接口,解析112接口协议格式。②112网关系统提供脱机存储功能。
1.1.4设备层通信软件①在设备层提供tl1协议的接口,完成客户端与测试探头的通信,接收测试任务,发送测试任务,传送设备处理后的相应数据。②支持被动测试和相关告警信息的主动上传。被动测试返回结果打包成tl1响应消息格式,主动上传的消息打包成tl1自治消息格式,发送给客户端,以便客户端进行识别。
2.2测试服务器测试服务器完成规范定义的测试工作,并完成对设备的管理层面的管理,采用j2ee的解决方案,实现系统跨平台的处理方式。测试服务器主要包括atp测试功能、atp自维护功能、与dslam网管接口、与112系统接口、与97资源数据库接口。
测试服务器与dslam网管接口,dram设备和adsl测试设备之间需要提供测试总线和测试通信接口,当需要对某一用户进行测试时,先将该用户端口的内侧或外侧切换到测试总线上,然后通过测试通信接口发命令给测试设备启动相关测试,并把测试结果返回给dslam设备,测试完毕后释放端口与测试总线的连接。
测试服务器与112系统接口,adsl测试服务器可以位于adsl网管之外,测试服务器通过网络与测试设备连接。adsl网管和adsl测试服务器分别和112连接,前者实现用户端口查询功能,后者实现测试设备测试功能。adsl网管和112系统的接口是为了把adsl障碍测试融合到112系统中,以实现adsl障碍的集中受理、集中测试、集中派修和集中管理。当112系统受理到adsl用户报障后,112系统根据adsl线路所在的位置〔局向、机框号、槽位、端口号)和需要做的测试命令发给adsl网管,adsl网管收到测试命令后,对相应端口进行测试,然后把测试结果返回到112系统。
测试服务器与97资源数据接口,应用服务器系统是从电信97工程的数据库(97数据库的数据)中通过api接口实现数据共享,提取97数据库中的相关资源数据,例如:局、交换机、主配线架、交接箱、分线盒,端子、号码等信息。
3基于vxworks的tl1通信协议模块的设计与实现
3.1tl1通信协议模块在测试系统中的作用对于被动测试任务,上位机下发测试任务即tl1测试输入命令,tl1通信协议模块(tliagent)接收到测试任务后,对相应的tl1输入命令进行解析,如果解析后判断是系统的测试任务参数或侧试功能,则将相应的功能参数设定和测试任务发送给atp,如不是系统的测试任务或下发功能参数错误将错误的消息对应的响应消息格式化并上报给上位机告知错误的命令,atp探头接到测试任务后进行测试及数据采集,将测试结果返回给tliagent,主要通过结构体定义数据的格式,如测试成功tl1agent根据tl1通信协议将测得的数据结果打包成tli通信协议响应格式,发给上位机,如测试失败tliagent上报测试失败,在客户端显示对应的测试结果,和相应的表格和波形,此项测试任务完成。
对于自治消息,下位机在进行测试时不断检查系统设备状态,如风扇转速,设备温度等状态,如出现异常,则将异常状态通过tl1agent上报(函数调用),tl1agent将自治消息放入自治消息队列,并发送给上位机,完成自治消息的上报。tli协议用于承载由外接测试设备或内置测试板测试的内容,包括下发测试命令、测试模块的复位等,该协议内容可随测试内容而扩充更新。
此模块在设备层提供tli协议接口,是上位机和测试探头之间的桥梁。不仅能够配合完成被动测试任务,还能够配合完成生产管理信息,自动上报告警信息,设备管理等功能。
3.2tl1通信协议模块的设计及实现整个模块采用实时多任务的设计方法。对于任务之间的通信,在vxworks中,因为整个操作系统使用一个地址空间,所以没必要对于进程之间的通信使用的信号量和消息队列有一个全局的名字。信号量允许多个任务相互协调其活动,任务间最直接的通信方式是共享各式各样的数据结构。由于vxworks中所有任务存在于一个单一的线性地址空间,共享数据结构非常容易。在共享地址空间简化数据交换的同时,需要保证这块内存的互斥访问,vxworks提供了许多实现共享临界区互斥访问的机制,信号量就是其中的一种。本模块使用二进制信号量,用于互斥临界区的访问和任务之间的同步。
二进制信号量可以作为资源可用于不可用的标志,当任务取一个二进制信号量时要调用semtake(),结果取决于调用时该二进制是否可用。如果可用,信号量将变得不可用,而任务继续执行,如果信号量不可用,任务被挂起到任务阻塞队列,直到该信号量可用。
当任务释放一个信号量时要调用semgive(),结果也要依赖于调用时该信号量是否可用。如果可用,本次释放信号量不起任何作用,如果信号量不可用,并且没有在等待该信号量,那么信号量变为可用;如果信号量不可用,并且有一个或多个任务在等待该信号量,那么阻塞队列中的第一个任务解除阻塞,而信号量仍不可用。
本模块中各任务在设定优先级时都设为相同的优先级,每个任务在处理一条测试命令后将调用taskdelay()函数,延时操作提供一个简单的任务睡眠机制。taskdelayo用来移动调用任务到相同优先级就绪队列的尾部。在本模块中,通过调用taskdelay()自动将cpu让给系统中同优先级的其他任务来进行处理消息,在嵌入式软件中,除系统任务外,tl1通信协议的各任务优先级是最高的。
主控函数,将初始化参数。传输层协议tcp封装,全局变量的初始化、各功能参数设定命令、测试命令的监听、队列、消息处理函数的各任务的创建;每个任务也就是一个线程,每个线程都被编制成无限循环的程序,等待特定的输入,执行相应的任务。
对于tl1消息处理,在系统要进行测试任务之前,启动嵌入式软件,主控函数运行后,处理连接请求线程tl1serversession首先要处理来自上位机的连接请求,连接后,然后由tl1asynclientsession线程从上位机的读取tl1输入消息,将获得的输入消息放入接收队列,定义最大线程数为5,由线程调度进行判断线程池,根据状态来判断将要进行的调度,是创建消息处理线程还是唤醒消息处理线程,由消息解析处理线程asyntllmessagehandler对输入命令进行解析,解析后的消息出队列等待消息的发送,对输入命令进行解析,通过函数调用进行测试命令的下发,返回测试数据,将返回的测试数据进行tl1消息格式化处理,得到响应消息放入发送队列,等待出队列进行消息的发送即将响应消息返回上位机:tl1消息处理流程流程图
整个系统软件划分好模块后,考虑tl1通信协议模块与其它模块之间的接口,本模块对其它模块有两个接口,一个是与上位机(后台处理模块)之间的接口,另一个接口是与硬件驱动程序之间的接口。
与上位机之间的接口用套接口socket通信进行实现,流套接口提供了双向的、有序的、无重复并且无数据边界的数据流服务。套接口实现客户端的连接,消息的读取与发送消息。与硬件驱动程序之间的接口进行下发测试任务和读取测试后的数据,用函数调用进行下发测试任务的实现,如果测试成功,对数据的读取是通过对于本测试任务的一个全局变量来读取,通过sprintf函数对测试后的数据进行格式化,如果测试失败,没有测试后的数据的打包过程,直接进行响应消息的格式化;如果在测试过程中有异常情况要上报时是被调用的关系,一样也使用函数调用来实现,下位机在不断的检查设备的状态,如果一旦发现异常就调用此模块的自治消息函数,上报异常情况,tliagent接到异常消息,通过自治消息通道将消息发给客户端。模块之间的接口如图3所示。
4结束语
本系统tl1通信协议模块是基于vxworks的多任务设计,使系统的实时性和稳定性都非常好。目前该adsl宽带网络测试系统己通过多个城市电信组织的测试,达到了系统的设计要求和性能指标。该系统不仅提供中国电信规定的公有接口,还自己定义了一套私有接口,有利于系统的功能的扩充。目前系统软件虽然完成了功能,也达到了预期的响应测试速度,但有一些设计上存在一些缺陷,如系统的时钟,并不是由mpc860系统时钟来进行控制的,而是在开发的过程中发现问题后改正的,因为当时硬件平台mpc860已经开发完,无法进行改进,只能由软件来自己定义一个时钟,对于嵌入式软件模块如果有需要系统时间的就要通过函数调用来完成,这样的显示的时间未必很准确,会产生一定的误差。此外,虽然在开发之前已经进行过需求分析,但在开发的过程中发现有些需求并不是很明确,影响到开发的进度,这在以后的产品的研发过程中要尽量的避免。
参考文献:
[1]王金刚、宫霄霖等.基于vxworks嵌入式实时系统设计.北京:清华大学出版社,2004.10.
[2]冯建和.adsl宽带接入技术及应用.北京:人民邮电出版社.2002.
[3]孔祥营.嵌入式实时操作系统vxworks及开发环境tornado.北京:中国电力出版社.2003.
[4]王东.nc-atstl1测试指令集.北京:北京中创信测科技股份公司.2003.
[5]冯涛.ats项目总体方案设计.北京:北京中创信测科技股份公司.2003.
[6]罗国庆.vxworks与嵌入式软件开发.北京:机械工业出版社.2003.
[7][美]richard.steven著.施振川等译.unix网络编程.北京:清华大学出版社.2001.
[8]andrews.tanenbaum著.能桂喜、王小虎等译.计算机网络(第三版).北京:清华大学出版社.1998.7.