CIN—SCF系统可视化信令跟踪工具的设计与实现

来源 :软件 | 被引量 : 0次 | 上传用户:owennb
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:CIN-SCF是CIN智能网系统的核心,为智能网业务提供执行环境,存储业务逻辑和业务数据。跟踪信令是CIN-SCF定位故障和维护现网业务的一个重要手段,但是CIN-SCF现有的信令跟踪功能由于功能简单、使用复杂,不能很好地满足现有需求。本文设计并实现了一个基于CIN-SCF的可视化信令跟踪工具,实现了对智能网平台中各个功能组件和业务的信令跟踪,并通过改造Wireshark,实现了对信令消息和信令流程的图形化展示,向业务开发和测试人员、现网工程维护人员提供了可视化的信令跟踪工具,使其可以快速有效地进行业务调测和故障定位。
  关键字:智能网;CIN-SCF;信令跟踪;可视化;Wireshark
  中图分类号:TP311 文献标识码:A DOI:10.3969/j.issn.1003-6970.2013.08.025
  本文著录格式:[1]吴小帆.CIN-SCF系统可视化信令跟踪工具的设计与实现[J].软件,2013,34(8): 78-81
  0 引言
  智能网(IN,Intelligent Network)是在原有通信网的基础上设置的一层叠加网络[1],是快速、方便、经济、灵活、有效地生成成和实现各种新业务的体系结构。
  CIN智能网系统是北京邮电大学网络技术研究院(原程控交换技术与通信网国家重点实验室)研制的符合ITU-T标准及国内相关规范的智能网系统[2],业务开发者可以在其上快速地开发和部署新业务。
  由于智能网中的各个网元存在很多信令消息交互,对这些消息进行跟踪就成为业务开发者和网络维护人员对问题进行定位和跟踪的一个有效手段。本文设计并实现了一个可视化的信令跟踪工具,用于CIN智能网系统中信令消息的跟踪。
  1 CIN-SCF系统介绍
  CIN-SCF(CINtel Server software Controling Framework)是CIN智能网系统的核心,它是一套运行在主流Linux/UNIX操作系统上的Server端通信软件中间件,可以在其上快速灵活地构建起可靠地定制化智能网应用。CIN-SCF系统按层次可分为系统层、中间层和业务层。
  CIN-SCF及运行于其上的业务逻辑程序与SDP共同组成了智能网的核心网元SCP(Service Control Point,业务控制点)。
  1.1 系统层
  系统层提供了并发处理、进程间通信、数据库访问、多协议支持、License控制和系统维护等基本功能,屏蔽底层操作系统差异和协议细节为中间层业务执行环境提供统一服务。
  1.2 中间层
  通过将系统层的基本能力进行进一步封装,中间层为业务层提供了统一的编程接口和业务执行环境。业务逻辑程序加载到CIN-SCF上运行,业务执行环境根据配置的业务触发规则调用具有相应业务键的业务,每次业务调用都要生成一个自动机实例用来保存中间数据和处理过程。
  1.3 应用层
  应用层即业务逻辑程序,CIN-SCF为用户提供了SLPL语言(Service Logic Program Language)进行业务逻辑程序的开发,SLPL是一种类C/C++的语言,提供了数学运算、逻辑运算、流程控制、字符串处理和各种协议的消息对象功能,并支持面向对象开发。
  2 CIN-SCF信令跟踪功能的设计与实现
  CIN-SCF系统信令跟踪功能为CIN-SCF及其它需要进行信令跟踪的C/C++程序提供统一的接口,使其只需要进行简单地改造就可以实现信令跟踪功能。
  CIN-SCF信令跟踪功能的系统结构图如下图2所示:
  traceAgent与所有需要跟踪的业务平台相连,客户端首先通过UDP命令接口向traceAgent注册并设置跟踪条件,traceAgent将跟踪条件广播到业务平台;业务平台在收发消息时,判断消息是否为用户跟踪的消息,如果是则通过UDP承载的Monitor协议发送到traceAgent,由traceAgent转发到客户端,客户端Wireshark对消息内容进行解析并对消息流程进行可视化展示,实现对信令消息的跟踪。
  2.1 内部接口
  2.1.1命令接口
  命令接口用于客户端向traceAgent及traceAgent向业务平台发送消息,使用UDP承载文本命令的方式实现,具体命令格式有以下三种。
  注册(注销):[un]register alarm [passwd]。客户端与traceAgent的注册必须填passwd,traceAgent与业务平台的注册不需填passwd。
  开始信令跟踪:trace start -a | -calling | -called | -s | -p | -uid 。其中-uid为必选参数,用于指定特定的跟踪用户,以便平台将跟踪消息发到指定的客户端。其它参数为可选参数,指定了不同的跟踪条件,一个命令可以同时指定多个跟踪条件。
  停止信令跟踪:trace stop -uid 。参数-uid指定了停止跟踪的用户ID,是必选参数。
  2.1.2数据接口
  数据接口用于业务平台向traceAgent及traceAgent向客户端发送消息,使用UDP承载(WEB客户端使用HTTP承载)自定义的Monitor协议实现。
  Monitor协议是专门设计用于承载信令消息的协议,使用TLV格式,便于传送字符串类型的参数。消息格式如下图3所示:   Version标识协议的版本号,目前固定填0x02。TLV采用ASN.1编码,具体参数说明如下表2所示:
  2.2 CIN-SCF平台改造
  CIN-SCF本身已经具有一定的消息跟踪能力,但是原有的功能比较简单、模块封装不好且接口使用繁琐,需要进行一定的改造以满足新需求。具体的改造涉及命令处理、消息分发和业务执行环境三个部分。
  2.2.1命令处理
  CIN-SCF系统为用户提供了inaccess和UDP命令的方式接入CIN-SCF进程对其进行管理,用户可以通过inaccess工具和UDP命令向CIN-SCF发送命令进行管理和维护,命令处理模块就是负责对这些命令进行处理。
  CIN-SCF可视化信令跟踪工具新增了trace命令专门用于消息跟踪,业务平台需要在命令处理模块中增加对表1中相应命令的支持,以处理traceAgent转发而来的客户端用户命令。
  2.2.2消息分发
  消息分发模块从socket通信模块接收消息,调用编解码器接口将原始消息码流解码为内部消息,然后分发给自动机的消息队列。对于首个请求且无法判断是否需要跟踪的情况(例如tcap的tc-begin),消息分发模块需要调用自动机的消息保存接口将原始消息保存,待自动机收到IDP后判断出需要跟踪,再将原始消息输出。对于会话内的消息,消息分发模块调用消息跟踪检查接口判断消息是否需要发送到traceAgent。
  消息分发模块向socket通信模块发送消息,消息分发模块调用消息跟踪检查接口判断消息是否需要发送到traceAgent。
  2.2.3业务执行环境
  CIN-SCF系统跟踪的消息多种多样,对于消息分发模块无法判断是否需要跟踪的消息,需要在业务执行环境中判断是否需要跟踪。
  2.3 traceAgent
  traceAgent是基于CIN-SCF开发业务逻辑程序,负责对用户登录信息和用户跟踪规则进行管理、将客户端的用户跟踪命令转发到被跟踪进程、将符合跟踪规则的消息发给客户端用户。
  traceAgent逻辑结构如下图4所示:
  控制模块负责与客户端进行交互,它接收客户端发来的命令并调用用户鉴权、命令处理和Trace处理模块对命令进行处理,负责将跟踪消息发通过UDP发送到客户端。
  用户鉴权模块负责对客户端用户的注册和注销操作进行处理并判断相应的用户请求是否合法。用户鉴权模块通过配置文件passwd对用户进行管理,用户信息储存在该文件中。
  跟踪规则管理模块负责对各个用户的跟踪规则进行管理,主要供Trace处理模块调用以判断特定消息是否是用户正在跟踪的消息。用户的跟踪规则固化在相关配置文件中,以便重启时重新加载用户跟踪规则。
  Trace处理模块是traceAgent与业务平台的接口,它将用户的UDP命令转发到业务平台,接收业务平台的消息并调用跟踪规则管理模块判断特定消息是否为用户正在跟踪的消息,最终将消息交由控制模块转发级客户端用户。
  命令处理模块负责接收客户端发送的命令请求,若请求为修改跟踪规则,则调用跟踪规则管理模块的接口更新跟踪规则;若请求为信令跟踪控制命令,则根据跟踪规则和各进程的网络拓扑结构转发命令到需要跟踪的进程。
  2.4 客户端
  Wireshark是一个开源的网络协议分析软件,用户可以通过编写插件的方法实现对自定义协议的解析。本系统客户端使用改造后的Wireshark,实现对Monitor协议的解析和可视化展示。
  2.4.1 Wireshark系统结构
  Wireshark的系统结构如下图5所示[3],其主要功能模块包括以下五个部分:①GTK1/2:图形化窗口工具,为用户提供图形化的输入/输出;②Core:核心控制模块,连接并控制其它模块协调工作;③Epan:协议解析器,负责具体解析各种协议;④Capture:数据包捕获引擎,依赖于WinPcap/libpcap库;⑤Wiretap:从磁盘中读写数据包的引擎。
  2.4.2解码流程
  Wireshark的总体工作流程为:网络数据包经过主机网卡,被内核驱动WinPcap/libpcap捕获,Core核心程序控制Wiretap将捕获的数据包按照一定格式存在磁盘中,控制Epan解析数据包并向用户展示。
  Wireshark使用协议树来表示协议之间的层次关系,一个简单的协议树如下图6所示[4]:
  TCP和UDP协议作为IP的上层协议,其所有数据都封装在IP协议中,TCP与UDP都是IP的协议子节点。同时,由于父节点相同,他们互为兄弟节点。
  对于兄弟节点协议,Wireshark使用了协议特征字对他们加以区分,每个协议都有自己的协议特征字。
  Wireshark协议树加协议特征字的设计方式使其在协议解析上有很强的扩展性,只需将新协议的解析函数挂载在协议树上就可以实现增加自定义协议。
  2.4.3插件开发
  Wireshark增加协议解析器有两种开发方式:一种是插件方式,只需要开发一个协议解析器,并调用注册函数向主程序注册,代码编译成dll动态库的形式;一种是内置方式,将协议解析器直接编译到主程序中,这种方式需要对Wireshark进行一定的重构,开发周期较长。
  本文使用插件的方式为Wireshark增加Monitor协议解析器。首先在源码wireshark/plugins目录下建立monitor目录,从其它目录中将AUTHORS,COPYING,Changelog,CmakeList.txt,MakeFile.am,Makefile.common,Makefile.nmake,moduleinfo.h,moduleinfo.nmake,plugin.rc.in等文件模板复制到monitor目录下,将文件中的相关信息改为Monitor协议的信息。   协议解析器主体程序由packet-monitor.c实现,程序主要实现以下几个函数:proto_reg_handoff_monitor()将Monitor协议解析器与低层协议相关联,当Monitor协议数据包被捕获时调用该插件解析数据包;proto_register_monitor()将Monitor协议注册到主程序中;dessect_monitor()实现对Monitor协议数据包的解码;col_set_str()设置数据包简要消息显示窗口的内容。
  使用修改后的Makefile将代码编译成dll动态库,将编译好的dll文件复制到Wireshark的安装目录Wireshark/plugins下即可实现对Monitor协议的解析。
  2.5 关键问题及解决方案
  2.5.1多进程跟踪
  由于业务平台是由很多的进程构成,除了最常用的SCF进程外,根据不同的业务平台可能还有各种各样的agent程序,如SMSA、TDA、ISMAPA等,而且每种进程都可以分布式部署。因此,在跟踪某一特定条件的消息流时,并不确定是由哪些进程来处理的。因此需要在所有的进程上执行trace的控制命令。
  为此,在客户端与业务平台之间设计了一个信令跟踪代理traceAgent。客户端只需要配置traceAgent的IP和端口,traceAgent再配置到各个进程的IP和端口,这样就简化了客户端的配置和使用。客户端将控制命令发送到traceAgent,traceAgent在收到客户端的控制命令时,根据配置自动将命令广播到业务平台的各个进程。
  2.5.2多用户跟踪
  为了实现多用户跟踪,使得不同用户可以在同一时间根据自身要求同时跟踪指定的消息流,traceAgent必须保存各个用户的登录信息和跟踪条件。
  traceAgent为每一个用户分配一个全局唯一的userID,traceAgent与业务平台各进程之间的消息必须包含userID,用于区分不同的客户端的跟踪活动。traceAgent收到业务平台的消息后,根据userID找到用户名,并根据用户名将消息转发到对应的客户端。
  3 结论
  本文改进并实现了一个基于CIN-SCF系统的信令跟踪工具,增强了CIN-SCF的消息跟踪功能,实现了多用户跟踪和多进程跟踪;并在客户端上借助Wireshark实现了信令消息和信令流程的可视化展示。
  目前已经完成了CIN-SCF和Wireshark的改造工作,下一步的工作将分为两个方向:一是将libscf_trace.a库集成到其它业务组件中,实现对其它业务组件的信令跟踪;二是设计实现基于WEB的客户端,为用户提供更加灵活多样的选择。
  参考文献
  [1] 李慧. CMIN02-SCP系统后台信令跟踪功能的改进与实现[D]. 北京:北京邮电大学, 2006.
  [2] 陈俊亮. CIN智能网系统[J]. 电信科学, 1997, 13(1):6-9.
  [3] 吕雪峰, 张春芳. Wireshark网络协议解析原理与新协议添加方法[J]. 软件导刊, 2011, 10(12):105-107.
  [4] 陈俊, 阎慧, 王宇. 基于wireshark的协议分析插件开发[C]. //第十六届全国青年通信学术会议论文集, 国防工业出版社, 2011.
其他文献
煤炭经济下行使不少煤炭企业再现困局,出现大量复杂的新问题、新矛盾、新课题。破解这些难题,需要企业贯彻落实群众路线。徐矿集团以深入开展党的群众路线教育实践活动为契机
高职院校的公共英语教学一直处于十分尴尬的位置,学生不感兴趣,学校难重视,老师面对水平参差不齐的学生往往感觉无从下手。解决这一问题的关键是改变教授方法,提高学生学习兴
1998年和1999年对西宁市部分猪场进行了猪瘟血清流行病学调查,结果证实1998年这些猪场猪瘟感染较严重,平均血清阳性率达19.14%,经采取相应防治措施后,1999年猪瘟感染明显降低,平均血
本文以《冷战中的对峙》为例,研究如何通过历史情境的创设、有效问题的思考,以及充分的课堂互动,使师生共同参与课堂教学,提高学生自主学习能力,增强课堂教学的有效性。
为了进一步加快思想政治理论课教学改革的步伐,满足培养创新型人才的需要,我院通过在“中国近现代史纲要”教学中尝试实施开放式教学,探索符合当代大学生特点,体现我院办学特色的
河北开滦集团蔚州公司崔家寨矿坚持高标准、高站位,以打造国内同类型一流高产高效矿井为目标,通过大力推行实施劳动定额定员管理,深挖内部潜力,科学定员,合理分配,增强职工为