基于SIP协议的网络协议分析课程教学改革探索

2017-04-24 05:06李德胜安徽科技学院信息与网络工程学院安徽滁州233100
长春师范大学学报 2017年4期
关键词:网络协议会话管理器

李德胜(安徽科技学院信息与网络工程学院,安徽滁州 233100)

基于SIP协议的网络协议分析课程教学改革探索

李德胜
(安徽科技学院信息与网络工程学院,安徽滁州 233100)

本文针对目前网络工程专业的“网络协议分析”核心课程教学中存在的若干问题,进行一系列的教学改革和探索。以SIP协议为主要内容,从协议的三个基本要素(语法、语义和时序)几个侧重点,从架设与测试、设计与编程、实际项目展示三个阶段对学生进行授课。学生不仅可以深入分析和理解SIP协议,而且对整个SIP解决方案的层次和功能有了整体把握,并有利于其参与真实的项目编程实践。

SIP;协议栈;事务;多媒体会议

1 “网络协议分析”课程教学中存在的问题

“网络协议分析”作为“计算机网络”的后续课程,已经成为大多数院校的计算机系网络工程专业的核心或主干课程。但“网络协议分析”是一门新兴的专业课程,笔者在实际教学过程中发现,该课程在教材建设、协议选择、教学实验内容安排、实验环境配置等都存在一些问题。

1.1 教材

目前国内的相关教材,内容过于求全,既讲授网络层、传输层,又讲授应用层的协议,缺乏对单独某一个协议的详细讲解。这也造成了学生“走马观花”式的学习,学生没有“断其一指”的深刻体会。许多学生对于网络协议的概念的理解是碎片化的,不能将其有机联合起来,更谈不上深入分析和应用了。因此,在选择一个合适的协议进行深入细致的讲解十分必要且势在必行。

1.2 协议选择

二进制还是文本的协议,应用层还是底层协议,有状态的还是无状态的协议,这些都需要进行选择。目前教材上的协议往往选择传输层的协议较多,例如TCP、UDP,而这些协议又都是二进制的,不仅抓包分析获得协议内容比较困难,而且二进制编解码会造成编程的不便。反之,基于文本的协议则更加容易理解和分析,并且用高级语言编程也方便。与底层(传输层、网络层)相比,基于应用层的网络协议也更加贴近学生平时的生活,也容易理解。另一方面,如果协议过于简单,或者是无状态化的,则无法让学生在协议分析和编程中锤炼状态机和事务的思想,例如HTTP协议虽然也是基于文本的,但它却是无状态的,要引入状态则是在应用程序或者Web应用中实现,属于Web程序设计应用课程的范畴,不适合在“网络协议分析”课程中讲解。会话初始协议SIP(Session Initiation Protocol)是IETF提出的,在IP网上进行多媒体通信的应用层控制协议。随着SIP协议的成熟,使用其代替H.323协议族成为多媒体会议的底层架构已经是业界公认的发展趋势。因此,SIP协`,而且是有状态并且支持事务的协议,所以可将SIP协议作为教学内容进行深入讲解。

1.3 实验教学系统

目前SIP协议部分的实验主要是依托软交换实验设备完成的。软交换综合系统由软交换服务器、交换机、路由器、网关和VOIP电话等组成,具有呼叫控制、管理、计费、NAT穿越、SIP分析和各种增值业务等功能。然而,这种方案也存在严重问题。类似的实验系统庞大,学生可以参与的地方少,大多只能是观察性实验。作为软交换,软件是最重要的,但在实验系统中,由于知识产权的原因,软件并不是100%开放的。学生无法了解到软件的全貌,不利于二次开发。另外,学生在课堂上的学习时间有限,大量学生习惯于将软件系统装到自己的笔记本电脑上。而这些实验设备往往是硬软件结合的,没有办法进行移植,影响学生进一步深化学习。

于是,我们选用SIP协议作为“网络协议分析”课程中深入学习的内容,并参考中文教材《SIP协议及其应用》[1]和英文教材《Internet Multimedia Communications Using SIP,A Modern Approach Including Java®Practice》[2]作为教学参考书,从协议的三个基本要素(语法、语义和时序)几个方面,针对演示和分析、设计与编程、实际项目演示这几个实验教学深入剖析如何选用SIP协议进行实验教学。基于此目的,首先让学生能够比较容易地架设实验环境,并在上面分析协议信令流程,从而获得学习兴趣和成就感,其次是通过对设计架构的分析和实际未完成的编程桩(Stub)来引导他们进行利用开源SIP协议栈自行编程,甚至是自行设计或修改SIP协议栈。

2 本地SIP语音通信环境架设——便于SIP协议的分析和测试

为了方便学生演示和测试SIP协议,我们采用本地SIP语音通信环境架设方案,来替代复杂且容易出错的网络化环境架设方案。对于SIP协议本身要素来说,本部分内容的教学设计主要为了加强学生对于SIP语法和语义方面的学习。

在实际的配置中,虽然可以采用点对点的语音通信本地实验环境,但是由于架构过于简单,缺乏其它SIP实体(如SIP代理服务等),不利于学生深入学习。因此,采用的是通过SIP代理方式进行语音通信的环境。由于需要100%的可移植性,因此,要使用基于软件的SIP代理和SIP终端。基于软件的SIP代理分为开源版和共享版。我们选用Brekeke的SIP Proxy软件作为SIP代理服务器。Brekeke的SIP Proxy是完全使用Java编写的,利用Tomcat Web容器,功能齐备的SIP代理服务器,并且具有学生习惯使用的安装版,方便进行部署。SIP终端既可以选择支持SIP协议的IP硬件电话机,也可以选择软电话。在实验中,我们选择软电话X-Lite作为SIP终端。由于首个实验选择的是在本地建立SIP协议通话环境,所以需要下载两个不同版本的X-Lite同时在本机上运行,并且使用完全不同的端口号。

图1 SIP协议语音通信本地实验环境

实际配置好的SIP协议语音通信本地实验环境如图1所示。SIP测试实验内容为在本地上分别用两个版本的X-Lite注册,并相互发起呼叫。然后,在Sip Proxy Server的Web管理页面中查看相应的信息。学生通过图2可以观察到已经注册成功的两个SIP软终端,分别运行在48860和5061端口,也可以查看终端过期时间、终端UA版本、请求地址和时间戳等信息;通过图3则可以观察到正在通信的会话信息,包括会话ID、呼叫方、应答方、通话时间和通话状态等信息。最后,通过图4查询到所有的通话(成功的与未成功的)历史记录,包括会话ID、呼叫地址、通话时长、邀请开始时间、通话开始时间、结果状态和错误代码等信息。

本实验环境架设方案的好处在于能够方便地进行移植,学生可以在自己的笔记本上进行配置,并带回寝室研究学习。也容易将方案升级为局域网和完全的外网,只需要将SIP代理服务器部署到相应网络环境并修改配置文件即可完成。特别是基于Java语言的编码和运行环境,不仅方便学生研究代码,而且与后面的项目编程路线也是一致的。

为了验证面向广义能耗的柔性作业车间调度优化模型的有效性,以某柔性作业车间内3种工件的生产调度为例,进行柔性作业车间调度优化。

图2 SIP客户端注册信息视图

图3 活动的会话信息视图

图4 通话历史记录视图

3 基于开源组件的编程实践——加深理解SIP解决方案的层次和功能

在讲授基于SIP协议的编程时候,需要重点介绍整个架构的功能层次。而整个SIP协议应用可以分为四个功能层。对于SIP协议本身要素来说,本部分内容的教学设计主要为了加强学生对于SIP语法和语义方面的掌握。

(1)SIP核心层:该层主要实现SIP协议中涉及的各个功能实体并包含部分SIP事务子层和对话功能,例如UAC(用户代理客户机)、UAS(用户代理服务器)、Register(注册服务器器)、代理服务器(Proxy Server)。

(2)SIP事务子层:该子层主要包含通常将许多业务逻辑SIP实体。它由两部分组成:客户交易中的客户端和服务器端称为服务器事务。

(3)SIP传输子层:该子层负责实际的传输和SIP消息的接收。它由两部分组成:客户端传输端和服务器传输端。

(4)SIP语法和编码子层:该子层负责编码/解码SIP消息。

以JAIN SIP架构的SIP解决方案为例,如图5所示,最上层为SIP应用,而SIP核心子层与应用和协议栈都有关系,并且包括对话功能和部分SIP事务子层。另外一部分SIP事务子层与底层操作系统和TCP/IP层有联系。实际教学中发现,学生只有对整个的SIP解决方案的层次和功能有了整体把握的时候,才能够进行下一步的编程操作。

图5 SIP解决方案功能层

表1 第三方开源Java组件

通过这些开源的协议栈和API,学生很容易进行基于Swing的Java图形界面的SIP应用开发,最常见的教学顺序是:首先开发软件SIP终端,其次开发SIP代理服务器,然后开发或者修改SIP协议栈,最后是结合其他相关技术展开应用,如SIP多媒体会议系统、SIP视频监控与分析系统等。对于开始接触这方面编程的初学者来说,可以设置一些没有完成的编程桩Stub来让学生进行填写,这样可以避免整个项目的失败,并给学生带来信心。

4 多媒体会议系统项目演示——在真实的环境中提高学生对协议的理解和开发能力

虽然学生在前期对于编程已经有一定的掌握,但是往往存在“一叶障目,不见泰山”的缺憾,最好的教学方式是结合能够实际应用的项目进行讲解。我们在教学过程中选用了基于SIP的多媒体会议系统。在教学安排上,首先介绍如何使用该系统,然后让学生亲自去测试,最后再讲解信令和服务的流程时序,学生反馈良好。对于SIP协议本身要素来说,本部分内容的教学设计主要为了加强学生对于SIP语义和时序方面的掌握。

笔者曾参与基于SIP的多媒体会议系统的研发,主要负责SIP协议部分。该系统基于J2EE的技术,并且可以在Windows、Linux或者Mac系统上架设,可扩展性和移植性强,在配置方面,可与其他Web应用集成。设计基于RFC3261等标准,实现与X-Lite等标准软终端的通信。本软件的操作是基于Web的界面,操作简单、可扩充、易维护。用户通过JSP页面在线查看和管理会话状态、注册信息等内容。设计融合了基于STUN服务器地址转换的NAT穿越技术,使得用户可以在公网私网之间自由透明地穿越。并提供各种公网资源接入,如PSTN固网,2G/2.5G/3G移动网络和INTERNET等;复用服务模板,快速重组为其他应用,如远程医疗、物流监控、视频黄页、远程教学等。

对于会议成员控制,该系统实现了如下功能:(1)会议申请:如即时会议,预约会议,注册、登陆和注销,个人帐户管理,查看其他公开会议等;(2)会议主席身份登陆:如预约会议,查看所主持的会议,添加、下载会议资料,批准申请加入会议(针对列席成员),批准发言(针对与会成员),申请更换主席,退出会议,结束会议等;(3)会议成员身份登陆:如查看所参加的会议,添加会议资料,申请发言,退出会议等;(4)普通用户身份登陆:查看可以列席的会议(即公开会议),申请加入会议,退出会议等。例如,在首页中,点击“其他会议”,如图6所示,可以看到当前系统的正在召开的会议。该页面详细显示了正在召开的会议的信息,包括会议名称、会议主题、会议主席、持续时间和参与人数等,用户可以通过点击申请加入,以列席者的身份加入该会议。

图6 查看正在召开的会议视图

在了解多媒体会议系统功能以后,学生可以在系统上实际操作加入会议的功能。图7为学生发起加入会议请求以后,会议服务器通过as@59.64.156.148∶5060对他呼叫并建立连接。图中左上部分小窗为会议媒体服务器的视频,而左下部分小窗为本地摄像头视频。在本次实验中,一方面,学生可以了解到SIP协议除了可以点对点呼叫,还可以由会议服务器主动发起邀请和呼叫;另一方面,学生也可以加深对信令和服务的本质的理解。

图7 加入视频会议的实际案例

根据“解剖一个麻雀”的思想,笔者在实际实验教学过程中,将参与会议单元(JCU)的信令和服务流程向学生进行了详细分析,取得了良好的教学效果。具体的信令和服务时序如图8所示。首先,SIP信令监听器接受从SIP服务器到来的“INVITE”消息并调用SIP信令处理器进行处理。接着,SIP信令处理器调用getCallManager()从会话管理器那里获得会话的句柄,并判断其是否存在正在进行中的通信。若会话管理器返回的会话状态显示当前没有激活,则它通知服务器“180 RING”。接着,一个新的会话将由信令处理器建立并返回它的句柄,这个句柄将被增加到会话管理器中。接下来,会话状态的变化会被告知监听器。同时,终端控制器执行update()方法来检查时间戳。此外,终端控制器创建一个新的会议通知对话框来提醒参会者一个新呼叫的到来。如果用户同意建立会话的连接,answerCall()方法将被调用来回复这个电话。然后,终端管理器调用会话管理器的findCall()来探测当前会话的句柄。当手柄被会话管理器返回时,媒体管理器的句柄将从会话对象中获取并返回。之后,媒体管理器的startMediaSession1()被调用来监听媒体接收端口以确保从媒体服务器探针包可能被无差错地接收。否则,如果端口不及时打开(接收“ACK”之后),则媒体服务器认为客户端不能够建立连接,并且可以主动结束与终端的通信。接着在客户端发送“200 OK”,直到服务器接收返回的“ACK”发送“200 OK”到SIP服务器。当SIP信号处理器从SIP服务器接收到“ACK”消息时,它通知所述SIP信号处理器通过getCallManager()的调用来处理消息以获得会话管理器的手柄。据此,媒体管理器的另一个手柄会也从当前会话中获得。随后,媒体管理器的prepareMediaSession()被调用来获取远程的媒体服务器与本地的URI和谈判后的编码/编码格式的接收和发送媒体的URI。同时,媒体管理器的startMediaSession2()也被调用来设置呼叫“IN_A_CALL”的状态,并通知会话管理器会话状态改变的事实。通过对信号和服务上的互动,用户可以加入会议,并成功建立媒体连接。

图8 参与会议单元(JCU)的信令和服务时序图

5 结语

通过本地架设SIP语音通信环境,能够真正实现一站式的SIP测试与分析,方便了学生的学习。基于开源组件的编程实践方法进一步加深了学生对SIP解决方案的层次和功能的理解,同时也有效避免整个编程项目的失败。通过实际的SIP应用项目:多媒体会议系统的信令和服务流程分析,进一步强化学生对于时序的掌握,有利于他们参与真实的项目实践。

[1]张智江.SIP协议及其应用[M].北京:电子工业出版社,2005.

[2]Rogelio Martínez Perea.Internet Multimedia Communications Using SIP,A Modern Approach Including Java®Practice[M].Elsevier,2008.

[3]张译.基于SIP协议的IMS高清视频会议研究[J].信息通讯,2015(7):247.

[4]刘凯,毕研博,国伟.浅析SIP协议的特点及工作流程[J].时代报告:学术版,2015(1):245.

2016-07-01

安徽省省级质量工程一般项目“基于无人机编程项目的物联网专业实践教学研究”(2016jyxm0253)。

李德胜(1979- ),男,副教授,硕士生导师,博士,从事信息与网络工程研究。

TP393.04;G642

A

2095-7602(2017)04-0117-06

猜你喜欢
网络协议会话管理器
QQ和微信会话话轮及话轮转换特点浅析
应急状态启动磁盘管理器
Windows文件缓冲处理技术概述
一种蓝牙多跳网络协议的设计与研究
基于集群节点间即时拷贝的会话同步技术研究①
基于载波技术的多点温度测量系统设计
基于DPI技术的语音视频流量监控系统设计与实现
汉语教材中的会话结构特征及其语用功能呈现——基于85个会话片段的个案研究
高集成度2.5A备份电源管理器简化锂离子电池备份系统
在Win 7下利用凭据管理器提高访问速度等