基于SIP的矿井通信终端协议栈设计

李芳苑1, 孙旭峰2,3, 顾俊2,3

(1.南京信息职业技术学院 电子信息学院, 江苏 南京 210023;2.中煤科工集团常州研究院有限公司, 江苏 常州 213015;3.天地(常州)自动化股份有限公司, 江苏 常州 213015)

摘要:为实现矿用IP通信终端间的融合通信,基于SIP协议设计了一种矿井通信终端协议栈,介绍了该协议栈的架构及具体设计方案。该协议栈内部包括SIP语法解析模块、SIP语义解析模块、媒体处理模块等,可实现基于IP网络的矿井SIP通信终端会话建立和管理功能。测试结果表明,该协议栈能够与多种型号的SIP终端进行稳定的交互对接,且支持所有常用SIP会话管理功能,可满足矿用VOIP通信要求。

关键词:矿井通信; 通信终端; 矿用通信协议; 协议栈; SIP协议

0引言

SIP(Session Initiation Protocol,会话初始协议)是下一代网络通信的核心协议之一,主要用于在Internet上建立和管理IP终端之间的会话[1-3]。由于SIP具有完善的协议标准和丰富的行业使用经验,各类矿用通信设备生产商常选择SIP作为IP通信产品会话建立标准。随着矿井一体化通信体系的不断建立,矿井IP通信应用需求不再仅限于与不同系统之间建立会话,而是需要将融合通信功能嵌入至每一个IP通信终端,这样即使在无法连接本系统服务器的情况下,不同系统的IP终端之间也能建立会话[4]。为实现IP终端间的融合通信功能,同时兼容现有系统通信功能,本文选用SIP作为终端间会话通信标准[5],并基于ANSI C语言自主设计了一种基于SIP的矿井通信终端协议栈(简称SIP协议栈)。

1SIP协议栈架构

SIP协议栈运行于OSI(Open System Interconnection,开放式系统互联)七层网络模型中的会话层,其主要作用:① 通过TCP/IP协议栈控制设备以太网硬件接口收发SIP信令消息,与IP网络中的其他SIP节点实现交互,建立并管理会话[7];② 建立SIP会话后,通过设备以太网硬件接口收发媒体报文,实现与其他VOIP(Voice over Internet Protocol,网络电话)节点间的音视频媒体交互;③ 在嵌入式系统的应用层提供会话状态获取与会话控制接口,便于其他应用调用。因此,SIP协议栈提供3个对外接口,分别为面向传输层的TCP/IP协议栈接口、面向媒体芯片的媒体流接口和面向其他应用程序的应用层接口,以实现协议栈对外数据交互和功能调用。SIP协议栈结构如图1所示。

图1 SIP协议栈结构
Fig.1 SIP protocol stack architecture

SIP协议栈通过TCP/IP协议栈接口调用TCP/IP协议栈收发网络报文。具体运行时,接口函数首先根据协议默认标准参数或动态协商结果,配置SIP信令和媒体使用的传输层格式和端口[8],然后侦听相应端口,根据协议栈要求收发SIP和各类媒体报文。

SIP协议栈收到SIP信令后,首先通过SIP语法解析模块解析报文字符串,将其转换为便于后续程序处理的数据结构类型,然后通过SIP语义解析模块分析其报文含义,根据解析情况实时更新本地会话状态表,并依据标准协议设置的会话流程调用SIP报文生成模块(包括注册报文、会话报文和媒体协商报文)。报文生成模块组建需要发送的SIP报文,然后调用TCP/IP协议栈接口将SIP报文从TCP/IP协议栈发出。

当SIP协议栈接收到媒体报文后,媒体处理模块根据本地会话状态和媒体协商结果对媒体报文进行解包和相应转码操作[9],然后调用媒体流接口函数。媒体流接口函数主要用于和媒体芯片之间进行流媒体报文交互,当SIP协议栈需要播放媒体或采集本地媒体信息时,均通过媒体流接口函数与本地媒体硬件驱动函数进行交互,实现应用层与底层硬件之间的数据传输。

SIP协议栈变更本地会话状态后,在应用层接口中触发状态变更标志。应用层接口提供SIP协议栈的控制和状态查询接口[10],如本终端SIP参数设置、当前会话状态查询、历史记录查询、呼叫、会话内呼叫、多目标呼叫等。嵌入式终端应用层其他应用程序可通过调用相应接口实现对SIP会话的实时控制[11-12],增强SIP协议栈的移植性和可操作性。

2SIP协议栈设计方案

2.1 SIP语法解析模块

SIP协议栈从TCP/IP协议栈接口收到的SIP消息是一串未被处理的文本信息,需要通过语法解析从中提取出多项程序需要的信息。由于SIP信令为上下文无关文法,且在编写语法过程中可实现非左递归化,所以本协议栈使用自顶向下的LL(k)分析法对SIP报文进行处理。

非左递归语法结构如图2所示。A,B,C为待分解的语段,D,E,F,G,H,I为可识别的基本段。语法分析的最终目标是将一段符合该语法结构的文本A通过合适的预测分析算法解析成由对应基本段组成的格式。LL(k)分析法在执行时会从上向下、从左向右进行,根据左侧第1个符号衍生出的语法树进行识别分析,并根据具体需要向前看至多

图2 非左递归语法结构
Fig.2 Non left recursive syntax structure

k个符号。图2中从左向右解析时发现根据第1个符号E无法判断语法树走向,因此需要多向前看1个符号,根据第2个符号是F还是G来确定最终语法分支走向,即为LL(2)分析法。

2.2 SIP语义解析模块

2.2.1 SIP语义解析流程

经过SIP语法解析后的报文内容主要分为注册报文、SIP会话报文、媒体协商报文3类,其中注册报文由终端上电后主动向服务器发起,其他两类报文则是完成注册后由本地终端或服务器根据应用需求实时发起。SIP语义解析流程如图3所示。

图3 SIP语义解析流程
Fig.3 SIP semantic analysis process

2.2.2 SIP协议栈注册流程

终端执行SIP注册流程默认在SIP协议栈启动后自动运行。为实现断电保存,嵌入式终端SIP参数一般记录在闪存或铁电存储器中。SIP协议栈在启动后读取其中用于SIP注册的参数,包括注册服务器地址、注册周期、本地SIP账号和密码、SIP信令本地端口等,确认参数合法后在注册报文生成模块中组建REGISTER报文并发送。SIP协议栈完成请求报文发送后,等待服务器返回注册响应报文,在收到该报文后对响应内容进行解析,根据服务器要求完成注册信令认证,然后将注册状态记录在注册状态表中。根据用户初始设置的注册周期,SIP协议栈周期性地执行SIP注册流程,以维护本地终端注册状态。

2.2.3 SIP会话报文处理机制

SIP终端完成注册后,服务器才允许其建立会话。当服务器向本地终端发送SIP报文后,SIP语法解析模块获取完整的SIP会话报文,解析完成后将报文内容以数据结构形式发送到SIP语义解析模块的报文处理模块。报文处理机制如图4所示。

图4 报文处理机制
Fig.4 Message process mechanism

当接收到新的SIP报文数据结构后,报文处理模块首先获取报文信息中的各项标志号,包括会话ID、主叫和被叫标签号、事务标志号,根据会话ID和主被叫标签号判断当前的报文是否为本次会话报文,若匹配,则根据事务标志号在本地维护的事务列表中查找相应的事务序列,如果符合事务流程,则提取报文头的内容进行进一步判断。若在标志号判断中出现不匹配现象,则向源地址返回错误告警信息并跳过后续处理,等待正确报文。

当标志号判断均正确时,报文处理模块提取本条报文头包含的请求或响应内容,根据终端当前会话状态判断报文是否有效,若无效则返回错误告警信息。只有当报文有效时,报文处理模块才会解析报文中各项头域信息,根据头域内容变更会话状态,处理SIP服务器或会话对端实时请求。

2.2.4 媒体协商机制

SDP(Session Description Protocol,会话描述协议)作为媒体协商协议,其报文信息一般跟附在INVITE请求和INVITE响应之后发送。SIP协议栈在每次申请建立会话或收到会话请求时,都会读取本终端可用的流媒体处理格式,在媒体协商报文生成模块中组建SDP报文并发送。当申请建立会话的2个SIP终端的SDP报文中可以协商到同一种流媒体格式时,SIP协议栈允许双方建立会话并通过RTP(Real-time Transport Protocol, 实时传输协议)或RTSP(Real Time Streaming Protocol,实时流传输协议)格式相互发送流媒体报文,否则向服务器申请媒体代理,由服务器实现媒体格式转换后开始会话。

2.3 媒体处理模块

媒体处理模块主要由媒体交互接口、媒体转换模块和RTP/RTSP处理模块组成[6],如图5所示。其主要作用是完成TCP/IP协议栈和媒体芯片之间的流媒体格式转换和传递。

图5 媒体处理模块组成
Fig.5 Composition of media process module

当TCP/IP接口函数通过SIP会话状态表获取当前通话状态后,在协商好的TCP端口等待对端的媒体报文,收到RTP或RTSP媒体包后将其发送到RTP/RTSP处理模块。RTP/RTSP处理模块根据RTP的源标志符和时间戳判断后续媒体报文的合法性和播放时间,经过筛选后将合适的媒体报文发送到媒体转换模块。

3SIP协议栈功能测试及结果

SIP协议栈遵循基本SIP会话建立流程,如图6所示,对其进行试验验证。本地主叫方发起INVITE请求,被叫或服务器回复100 Trying,告知主叫开始进行会话建立,然后回复主叫180/183 Ringing,告知主叫可开启回铃音,被叫摘机后回复主叫200 OK,主叫返回ACK确认会话建立,会话建立后双方允许进行媒体流交互。会话结束后优先挂机的一方发送BYE请求,对端以200 OK响应,会话结束。

图6 SIP协议栈作为主叫时会话流程
Fig.6 Call flow when SIP protocol stack works as calling number

经测试,SIP协议栈可与不同厂家生产的SIP终端进行稳定SIP交互对接,实现会话建立和管理功能。SIP协议栈占用硬件资源少,使用FLASH约150 kB,使用SRAM约512 kB,无需复杂操作系统支持,并提供专用于移植和扩展的接口模块,可实现在不同嵌入式硬件平台上的快速开发应用。

4结语

SIP协议栈占用硬件资源少,基本业务功能完善,支持所有常用SIP会话管理功能,可满足煤矿专网VOIP通信终端使用需求,有助于IP通信终端在煤矿井下实现进一步应用拓展,同时可较好地满足行业安全生产个性化功能定制设计需求,有效提高矿井通信装备及通信业务的适用性,为全矿井实现融合通信提供技术支撑。

参考文献(References):

[1] 孙继平.矿井通信技术与系统[J].煤炭科学技术,2010,38(12):1-3.

SUN Jiping.Mine communication technology and system[J].Coal Science and Technology,2010,38(12):1-3.

[2] 薛晓炎,霍振龙,顾俊.矿井融合调度通信系统的设计及应用[J].工矿自动化,2016,42(8):1-5.

XUE Xiaoyan, HUO Zhenlong, GU Jun. Design and application of mine integration dispatching communication system [J]. Industry and Mine Automation,2016,42(8):1-5.

[3] 顾俊,刘亚兵.矿井融合调度通信多业务网关系统设计[J].工矿自动化,2016,42(11):22-27.

GU Jun, LIU Yabing. Design of multi-service gateway system for mine integration dispatching communication[J]. Industry and Mine Automation,2016,42(11):22-27.

[4] 顾俊,李正东,包建军.井下分布式对等通信技术研究[J].工矿自动化,2015,41(4):22-26.

GU Jun, LI Zhengdong, BAO Jianjun. Research of underground distributed peer to peer communication technology[J]. Industry and Mine Automation,2015,41(4):22-26.

[5] 汪庆龙,贺松,袁森.基于H.323和SIP协议架构的IP电话技术比较[J].电脑与信息技术,2015,23(1):23-25.

WANG Qinglong,HE Song,YUAN Sen.A comparing: based on H.323 and SIP protocol framework of IP technology[J].Computer and Information Technology,2015,23(1):23-25.

收稿日期:2017-08-25;修回日期:2017-11-03;责任编辑:李明。

基金项目:国家自然科学基金山西煤基低碳联合基金资助项目(U1510116);山西省科技基础条件平台建设资助项目(201605D121032)。

作者简介:都玉辉(1991-),男,山西晋城人,硕士研究生,主要研究方向为机械故障诊断,E-mail:969951016@qq.com。通信作者:庞新宇(1976-),女,山西文水人,副教授,博士,主要研究方向为机械故障诊断、机电一体化,E-mail:typangxy@163.com。

引用格式:都玉辉,庞新宇,杨兆建.采煤机齿轮箱故障诊断方法[J].工矿自动化,2017,43(12):94-99.

DU Yuhui,PANG Xinyu,YANG Zhaojian.Fault diagnosis method of shear gearbox[J].Industry and Mine Automation,2017,43(12):94-99.

[6] 白军伟,孙建伟,杨海波,等.SIP和RTSP协议转换模块的设计与实现[J].计算机系统应用,2013,22(5):111-115.

BAI Junwei, SUN Jianwei, YANG Haibo, et al.Design and implementation of the SIP and RTSP protocol conversion module[J]. Computer Systems & Applications,2013,22(5):111-115.

[7] 黄育平,黄威.SIP协议在软交换中应用的研究[J]. 通信技术,2012,45(7):45-47.

HUANG Yuping, HUANG Wei. Study on applications of SIP protocol in soft exchange[J]. Communications Technology,2012,45(7):45-47.

[8] 胡凌凌,彭容修.SIP协议在一个IP电话模型中的实现[J].微机发展,2005,15(2):100-102.

HU Lingling,PENG Rongxiu.Implementation of SIP protocol in an IP phone model [J].Microcomputer Development,2005,15(2):100-102.

[9] 李军,谢赞福,崔怀林.基于SIP的语音通信程序设计与实现[J].计算机工程,2005,31(24):117-119.

LI Jun, XIE Zanfu, CUI Huailin. Design and implementation of voice communication based on SIP protocols[J]. Computer Engineering,2005,31(24):117-119.

[10] 方天平.基于SIP协议的井下移动通信终端的研究与设计[D].合肥:合肥工业大学,2012.

[11] 宋盈.嵌入式SIP终端的研究与设计[D].长沙:湖南大学,2014.

[12] 李振军,曾凌云,郑善贤.一种SIP协议栈的设计与实现方法[J].湖南广播电视大学学报,2009,37(1):56-60.

LI Zhenjun, ZENG Lingyun, ZHENG Shanxian. The design and practicing way for SIP agreement [J]. Journal of Hunan Radio & Television University, 2009,37(1):56-60.

Design of protocol stack used in mine communication terminal based on SIP

LI Fangyuan1, SUN Xufeng2,3, GU Jun2,3

(1.School of Electronic Information, Nanjing College of Information Technology, Nanjing 210023, China; 2.CCTEG Changzhou Research Institute, Changzhou 213015, China; 3.Tiandi (Changzhou) Automation Co., Ltd., Changzhou 213015, China)

Abstract:In order to realize communication fusion among mine-used IP communication terminals, a protocol stack used in mine communication terminal based on SIP was designed. Structure and specific design scheme of the protocol stack were introduced. The protocol stack has SIP syntax analysis module, SIP semanteme analysis module and media process module, which can realize calling building and management of mine SIP communication terminals based on IP network. The test results show that the protocol stack can interactively communication with different SIP terminals, and has all normal SIP calling management functions, which meets requirement of mine-used VOIP communication.

Key words:mine communication; communication terminal; mine-used communication protocol; protocol stack; SIP protocol

文章编号:1671-251X(2017)12-0090-05

DOI:10.13272/j.issn.1671-251x.2017.12.018

中图分类号:TD65

文献标志码:A 网络出版时间:2017-12-06 14:17

网络出版地址:http://kns.cnki.net/kcms/detail/32.1627.TP.20171205.1732.001.html

收稿日期:2017-10-09;

修回日期:2017-11-02;责任编辑李明。

基金项目:中国煤炭科工集团智慧矿山专项项目(2016-ZHKSZX-04)。

作者简介:李芳苑(1988-),女,江苏宿迁人,助教,硕士,研究方向为智能产品开发、计算机控制,E-mail:lify@njcit.cn。

引用格式:李芳苑,孙旭峰,顾俊.基于SIP的矿井通信终端协议栈设计[J].工矿自动化,2017,43(12):90-94.

LI Fangyuan,SUN Xufeng,GU Jun.Design of protocol stack used in mine communication terminal based on SIP[J].Industry and Mine Automation,2017,43(12):90-94.