APP下载

软交换实验系统SIP信令监听软件的设计与实现*

2010-03-14毅,马丹,唐

电视技术 2010年10期
关键词:监听流程图数据包

张 毅,马 丹,唐 红

(重庆邮电大学 通信与信息工程学院,重庆 400065)

1 引言

软交换是下一代网络的控制功能实体,为NGN具有实时性要求的业务提供呼叫控制和连接控制功能,是下一代网络呼叫与控制的核心。在软交换中,一个重要的控制协议就是会话初始化协议(Session Initial Protocol,SIP)。SIP协议用来建立、修改和终止多媒体会话[1]。随着交换技术的快速发展,实验课程也在不断更新,软交换和SIP协议等已成为该课程的主要内容。因此,设计一套软交换实验系统来配合理论教学,使学生深入理解和掌握软交换系统的工作原理已势在必行。

为了将软交换实验系统的内部工作过程开放出来,该系统的一个重要任务就是实时监听SIP通话创建、修改和释放过程。还要实现包括用户代理及服务器的配置、SIP网络平台和信令模块的组建等其他的实验相关内容,而Wireshark等通用平台不能更好地与这些具体实验内容相融合。基于此种需求,笔者设计并实现了一个软交换实验系统中用于监听[2]和显示SIP信令的软件平台。

2 总体设计

2.1 实验系统环境介绍

软交换实验系统分为硬件和软件两部分。硬件部分由网络平台和多个PC组成,如图1所示。其中一台PC做服务器主机,其余PC做客户端主机。其中的网络平台采用交换机,因为本实验系统对使用人数(即端口数)和带宽等相关性能参数有更高的要求。但是,这种方法的实施增加了监听的难度。笔者将深入探讨交换式以太网环境下客户端如何对服务器进行远程监听的方法。

软件部分是由服务器端的SIP服务器和客户端的软交换终端及本软件组成。网络监听技术有2个要点:1)尽可能完整地捕获网络上的数据包;2)对捕获到的数据包进行分析和翻译,并将翻译结果显示出来。因此,首先要在客户端远程捕获服务器端的SIP数据包,然后对捕获到的数据包进行分析,包括数据包的解析、保存、过滤和显示。软交换实验系统的软件功能框图如图2所示。

2.2 交换环境下的监听方法

交换环境下实现监听的方法与共享环境下不同,共享环境下只要将主机设置成混杂模式就能监听到其他主机间通信的数据包,而交换环境只能监听到源地址或目的地址为本身的数据包,在交换环境下实现监听其他主机间数据包的常用方法是地址解析协议(ARP)欺骗[3]。ARP用于将32位IP地址映射为以太网的48位MAC地址,以便将数据包封装成帧进行发送。ARP欺骗就是通过向目标主机发送一个包含伪造的IP-MAC映射信息的ARP应答报文,当目的主机收到此应答报文后就会更新其ARP高速缓存,从而使目标主机将数据包发送给错误的对象。但是ARP欺骗的监听方式存在缺陷,比如,如果局域网内2台客户端主机A和B同时向主机C发送呼叫请求,A和B就会同时向服务器发送内容为C主机IP对应A主机MAC地址和B主机IP对应C主机MAC地址的ARP应答报文,这样服务器就会发生混乱,不能识别C主机。

笔者使用 WinPcap(Windows Packet Capture)函数库提供的远程捕获数据包功能[4],克服了ARP欺骗的缺陷,实现了交换环境下在客户端捕获到服务器端数据包的功能,方法简单可靠。

图2 软交换实验系统的软件功能框图

3 设计与实现

基于上述分析,本软件的主要任务是捕获和分析SIP数据包。在实验系统交换环境下,服务器端运行远程捕获数据包的后台程序,该程序能够在远程主机上捕获数据包,并把捕获到的数据包发回客户端主机;客户端运行本监听软件,接收并分析捕获到的SIP数据包。WinPcap的捕获远程数据包功能主要由pcap_findalldevs_ex()函数来实现,将该函数中的参数source设置成远程主机的IP地址和网卡设备,即可捕获到相应远程主机的数据包。

3.1 数据包捕获模块

数据包捕获模块的主要功能是采集数据,这是整个软件的基础和数据来源。使用ARP欺骗方式监听数据包不适合较大数据通信量的网络,也不适用于本实验系统。因此,使用Windows平台下一个免费、公共的网络访问系统WinPcap捕获网络中的原始数据包。

设计程序时首先初始化WinPcap:获取设备列表并返回适配器的详细信息,打开适配器并返回一个包捕获器的描述符,通过设置数据流过滤规则实现过滤数据包。初始化完成之后,新建线程,在新线程中捕获基于IPv4的用户数据协议(User Datagram Protocol,UDP)数据包[5]。 数据包捕获流程如图3所示。

图3 数据包捕获流程图

3.2 数据包解析模块

该模块的主要功能就是对捕获的数据包按照数据链路层、网络层、传输层和应用层的层次结构自底向上进行解析:通过设置WinPcap过滤条件捕获到基于IPv4的UDP数据包,根据UDP使用不同的端口号为不同的应用保留各自的数据传输通道从UDP数据包中筛选出SIP数据包,根据SIP数据包的第1个换行符判定起始行的内容,根据起始行的前7个字符是否为“SIP/2.0”解析出请求方法或状态码。SIP消息解析流程如图4所示。

图4 SIP消息解析流程图

3.3 数据包保存模块

监听程序在运行的时候需要消耗大量的处理器时间,此时如果对数据包内容进行详细分析就会造成丢包,所以应先保存数据包再整理分析。但是,SIP消息的长度不确定,而且每次捕获到数据包的个数也不确定,所以要使用vector(一个能够存放任意类型的动态数组)来存储捕获到的任意长度字符串形式的数据包。将数据包的内容压入堆栈,在调用某条数据包时,即可将对应序号的数据包内容显示到界面上。

3.4 数据包过滤模块

通过监听SIP代理服务器,能将若干个通话流程的SIP数据包全部捕获到本地主机,因此捕获到SIP数据包之后,要对数据包再一次进行过滤,将需要查看流程的SIP数据包过滤出来。根据捕获数据包的主、被叫的用户名来提取出需要查看流程的数据包。根据From和To头字段中的内容找到主、被叫用户名与所需查看的主、被叫用户名对比,即可过滤出需要的数据包。

3.5 数据包显示模块

软件界面图由MFC编写,主窗口被列表框和编辑框划分成上下两个窗口。将解析出的SIP数据包时间、长度、源IP地址/源端口号、目的IP地址/目的端口号、消息的起始行等值,赋给相应的全局变量,在列表框中调用这些变量用于实时显示相应数据包头部信息。单击列表框的某行数据包头部信息可以调用存储SIP数据包字符串数组对应位置的元素,在编辑框中显示该数据包的完整内容。

利用MFC函数新建一个对话框用于显示呼叫流程图,先用Windows自带的绘图函数构成画箭头模块[6],然后从保存数据包数组中循环取出每个数据包的源、目的IP和请求方法/状态码,画出每条流程,最后组成完整的呼叫流程图。

4 测试及分析

设定2个客户端A(用户名为100,地址为172.22.141.150)和 B(用户名为 101,地址为 172.22.141.143)通过SIP服务器(IP地址为172.22.141.25)进行通信。在客户端A的主机上同时运行Wireshark和本软件对通信过程的数据包进行监听。图5、图6分别为本软件和Wireshark捕获到SIP数据包的界面。图7、图8分别为本软件和Wireshark绘制的呼叫流程图。

由图5、图6可知,Wireshark和本软件捕获到的SIP数据包内容一致,证明了本软件的正确性,Wireshark抓包软件对数据包的分析更细致,但本软件对数据包整体内容的显示更加简洁明了,更适合于教学。同时,如在本软件的“输入主叫用户名”和“输入被叫用户名”编辑框中输入非本机客户端的用户名,可以监听到其他客户端之间的通话流程。

由图7、图8可知,Wireshark和本软件绘制的呼叫流程图相同,但Wireshark的流程图中包括了很多附加信息,比如,端口号和请求/状态标志,而本软件对呼叫流程图进行了优化,使流程图更加清晰简洁。其详细信息通过点击各流程状态来展示。

综上所述,本软件仅针对SIP协议进行了监听,并且将该功能集成到整个实验系统中,其功能和效果与Wireshark一致,且更适合于教学的需求。

5 小结

本系统实现了在交换网络中捕获和分析软交换实验系统SIP数据包的功能,达到实验教学的要求,使学生更容易理解软交换和SIP协议的知识。

[1]IETFRFC3261,SIP:Session Initiation Protocol[S].2002.

[2]王艳艳,房子河,郅晨,等.基于数字网络视频监控的SIP信令系统设计[J].电视技术,2008,32(5):77-87.

[3]盛志伟,刘仕筠,李群.以太网数据包捕获与转发技术[J].微计算机信息,2006(34):279-282.

[4]许爱军,谢娟,张华.基于WinPcap的网络数据解析及其实现[J].科学技术与工程,2009(10):2797-2800.

[5]王亚非.SIP通信网络监听系统的设计与实现[D].北京:北京邮电大学,2008.

[6]孙鑫,余安萍.VC++深入详解[M].北京:电子工业出版社,2006.

猜你喜欢

监听流程图数据包
基于Jpcap的网络数据包的监听与分析
英国风真无线监听耳机新贵 Cambridge Audio(剑桥)Melomania Touch
千元监听风格Hi-Fi箱新选择 Summer audio A-401
SmartSniff
网络监听的防范措施
专利申请审批流程图
专利申请审批流程图
应召反潜时无人机监听航路的规划
宁海县村级权力清单36条
《天津医药》稿件处理流程图