软交换实验平台中SIP协议分析软件的设计与实现
2013-09-08涂继辉佘新平陈永军
涂继辉,佘新平,陈永军
(长江大学 电信学院,湖北 荆州 434023)
软交换是基于分组网利用程控软件提供呼叫控制功能和媒体处理相分离的设备和系统,它将呼叫控制功能从媒体网关中分离出来,通过软件实现基本呼叫控制功能,从而实现呼叫传输与呼叫控制的分离,为控制、交换和软件可编程功能建立分离的平面。会话初始协议(Session Initiation Protocol,SIP)作为软交换的核心协议之一,具有协议结构简单、支持多媒体业务的开展、符合互联网网络结构等特点,它主要用来建立、修改和终止多媒体会话[1-2]。随着软交换技术的日益发展,许多高校的现代交换原理课程中都引入了软交换理论的学习和实验[3-4]。因此,在软交换实验中设计一套SIP协议的可视化分析软件配合理论教学,使学生深入理解和掌握SIP工作原理势在必行。
目前用于教学的SIP协议分析工具主要有两种类型:一种是只能抓取SIP协议的数据包,并分析数据包的格式和内容,比如Ethereal,这类工具很难让学生直观了解到整个信令的工作流程;另外一种是不但可以分析出SIP数据包的格式和内容,还可以画出整体工作流程图,比如hammer和文献[5]中提出的工具,但是这些仅仅给出了SIP信令的流程,没有给出RTP的通信流程,因此,无法完整观察到语音通信流程。本文总结了前面提到的SIP协议分析软件的弊端,提出了一种新的SIP协议分析软件,该软件不仅能分析出SIP协议的数据包格式,而且可以画出一次通话过程中SIP和RTP的流程图,这为学生更直观地学习和研究SIP协议通信流程具有重要的实际价值。
1 系统整体设计
1.1 软交换实验系统介绍
软交换实验系统是为“现代交换原理”课程开设的实验平台,用来让学生深入学习和了解软交换中的呼叫信令流程、媒体流程、增值业务及网络架构。实验系统整体结构如图1所示,它由软交换服务器、交换机、路由器、网关和VOIP电话等组成,包含了呼叫控制、管理、计费、NAT穿越和各种增值业务等功能。整个软交换通过Web页面进行配置和管理,操作起来简单、方便。
图1 软交换实验平台的体系结构图
为了让学生更加直观地理解软交换中的呼叫信令流程和媒体流程,实验平台上需要一个用于监听和显示SIP信令及媒体流的协议分析工具,该工具能对信令的数据包解析、保存、过滤和显示,并且能够自动的绘制出通信的流程图。本文设计的软件是基于Linux平台,开发工具为QT4.0。
1.2 协议分析软件的整体设计
软交换的实验平台是在局域网的环境下,此环境下只要将主机设置成混杂模式就能监听到其他主机间通信的数据包;然后根据协议特征从截获的数据包中提取出SIP和RTP协议的数据包;最后分析SIP和RTP的数据包,画出相应的流程图。软件的总体结构如图2所示,系统分为网络数据包截获模块、数据包解析模块、SIP及RTP消息流程显示模块。
图2 软件整体设计图
2 系统的实现
2.1 数据包的截获模块
数据包截获模块[6-8]主要是对局域网中所有的网络数据包进行采集,从采集的数据中分析出SIP数据包。正常情况下,网卡的缺省模式是广播模式和直接模式,它只响应目标地址是本地的MAC地址数据帧和广播帧,对于其他数据帧不予响应;当网卡工作模式设置在混杂模式下时,对于本局域网上的每一帧都接收。因此为了能够截获到局域网中所有的数据包,必须把用于数据包截获的主机网卡设置为混杂模式。
在本文的设计中,这种对网卡混杂模式的设置是通过原始套接字(raw socket)来实现的,这也有别于通常使用的数据流套接字和数据报套接字。在创建了原始套接字后,为了让原始套接字能接收所有的数据,还需要通过ioctl()来把网卡设置为混杂模式;完成以上设置就可以开始对网络数据包进行截获了,对数据包的接收的方式像流式套接字或数据报套接字方式通过recvfrom()函数来完成。数据包截获的流程如图3所示。
图3 数据包截获流程图
2.2 数据包分析模块
此模块的主要功能是从截获的数据包中分析出SIP[9]和 RTP[10]的数据包,为后面的通信流程的绘制做准备。由于SIP和RTP协议处于网络中的应用层,要解析出SIP和RTP的数据包,首先要对截获的数据包分别去掉数据链路层、网络层和传输层的包头,然后根据SIP协议特征和RTP协议所在端口解析出对应的数据包。SIP协议的特征是起始行的前7个字符为“SIP/2.0”,根据这个标志就可以解析出SIP协议的数据包。SIP数据包解析的流程图如图4所示。
SIP协议在通信中一般带有SDP协议,SDP实际上是用来描述多媒体会话通告、多媒体会话邀请和其他形式的多媒体会话初始化的协议。SDP为SIP协议在通信过程中协商通信双方媒体流的端口、编码和会话信息起到了重要作用。一般在SIP信令通信完成的最后一个应答消息200OK中的SDP协议部分给出通信双发协商的RTP端口[11](见图5)。RTP通信的端口为18314。RTP数据包就可以根据这个端口进行监听,然后得到RTP的数据包。
图4 SIP数据包解析流程图
图5 SIP应答消息200OK的数据包
2.3 数据包显示模块
此模块的主要功能是把截获到的SIP数据包[12]和RTP数据包通过流程图的形式显示出来。SIP和RTP数据包被截获后,存放在QList的链表模板类中,然后根据保存的SIP数据包和RTP数据包的源/目的IP地址、源/目的端口号、消息内容和截获时间等参数来绘制流程图。绘制SIP及RTP通信的信令流程图如图6所示:当有SIP消息到来时判断此SIP消息的IP地址是否已经存在,如果存在,则不生成新的地址栏竖线,根据SIP消息是请求消息还是应答消息来区分SIP信令流程的位置和方向;如果不存在,则生成新的地址栏竖线,然后根据SIP消息是请求消息还是应答消息来区分SIP信令流程的位置和方向。在RTP消息的端口处监听,当RTP消息到来时,根据RTP的端口来绘制RTP的信令流程图。
由于这些信令是实时到来的,因此,图像的绘制也要求具有实时性,如果采用一般的实时绘图方式,即绘制一次,刷新一次屏幕的方式,会引起整个图像的闪烁,所以在用QT绘制图像时应该采用双缓冲技术,即在内存中创建一个与屏幕绘图区域一致的对象,先将图形绘制到内存中的这个对象上,再一次性将这个对象上的图形拷贝到屏幕上,这样能大大加快绘图的速度,并且避免图像的闪烁。
图6 绘制SIP及RTP通信的信令流程图
3 系统的测试与分析
系统的测试环境如图7所示。2个SIP的软电话分别为:号码104,IP地址为10.10.19.170;号码103,IP地址为10.10.19.13,它们经过软交换服务器10.10.19.234进行通信。在IP为10.10.19.110主机上分别运行本软件和Hammer Call Analyzer 1.6,去捕获一次完整呼叫的流程,捕获的结果如图8所示。从图8(a)中可以看出本软件截获的呼叫流程和图8(b)一致,证明了本软件通信信令截获的正确性。同时本软件不但截获了呼叫SIP信令数据包的内容和画出了详细的流程图,而且还画出通话语音RTP流程图,因此本软件对SIP的通话流程描述得更加详细,这比较适合实验教学的需要。
图7 测试环境网络结构图
图8 捕获一次完整呼叫的流程图
4 结束语
本文实现的SIP协议分析软件不但可以分析出SIP数据包的格式和内容,而且能够画出通信的整体工作流程图,该软件不仅为学生学习SIP协议提供了帮助,还为检测软交换通信故障提供了支持,本软件已经应用于多所高校的软交换实验教学中,收到了良好的效果。
(References)
[1]赵学军,陆力.软交换技术与应用[M].北京:人民邮电出版社,2004.
[2]徐培文,谢水珍,杨从保.软交换与SIP实用技术[M].北京:机械工业出版社,2007.
[3]殷形丽.高校软交换试验教学网组网结构研究[J].贵阳学院学报:自然科学版,2010,5(2):53-55.
[4]赵东风,于晓磊,李文勋,等.高校通信实验室软交换系统实验设计[J].实验科学与技术,2011,9(5):1-3,8.
[5]张毅,马丹,唐红.软交换实验系统SIP信令监听软件的设计与实现[J].电视技术,2010,34(10):74-76,83.
[6]周伟俊.NGN软交换网络信令监测系统的研究和开发[D].上海:复旦大学,2008.
[7]马卉慧,董青,许都.软交换中高速数据获取与过滤系统的设计[J].信息工程大学学报,2010,11(5):582-585,604.
[8]王权,张训报,李向.基于Linux系统的数据包截获技术研究[J].计算机与数字工程,2009,37(4):64-66.
[9]IEIF RFC 3261.SIP:Session Initiation Protocol[S].2002.
[10]IEIF RFC 3550.RTP:Real-Time Transport Protocol[S].2003.
[11]IEIF RFC 2327.SDP:Session Description Protocol[S].2006.
[12]成洁,卢紫毅.Linux窗口程序设计:Qt4精彩实例分析[M].北京:清华大学出版社,2008.