软交换SIP的设计与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软交换SIP 的设计与实现
李 晖1,李 琪1,黄 鹰1,李文耀2
(1.中国地质大学信息工程学院,湖北武汉 430074;2.武汉邮电科学研究院,湖北武汉 430074)
摘要:文章根据软交换会话初始协议(SIP )的基本呼叫控制流程、运用流程图及状态图分析法,重点讨论了SIP 协议的设计及
实现方法,供读者参考。

关键词:下一代网络;软交换;会话初始协议;软件设计中图分类号:TN915 文献标识码:A 文章编号:1005-8788(2004)06-0037-03
Design and implementation of SIP on softswitch
L I H ui 1,L I Q i 1,HUANG Ying 1,L I Wen 2yao 2
(1.School of Information Engineering ,China University of G eosciences ,Wuhan 430074,China ;
2.Wuhan Research Institute of Posts and Telecommunications ,Wuhan 430074,China
)Abstract :Based on the foundational control procedure of calling for SIP protocol ,and by the use of the analysis of the flow chart and state diagram ,this paper discussed on the method for the design implementation of SIP protocol.K ey w ords :N GN ;softswitch ;SIP ;software design
目前,会话初始协议(SIP )在电信界受到极大的关注,因为,SIP 的出现打破了传统电信业务的传输模式,它用基于Internet 的准则为电信业带来了新的生机。

SIP 是由IETF 提出的在IP 网络上进行多媒体通信的应用层控制协议。

目前,该协议已成为下一代网络(N GN )的多媒体软交换系统和第三代移动通信(3G )多媒体子系统域中的重要协议。

本文将根据软交换SIP 的基本呼叫控制流程,重点讨论SIP 的设计及实现方法。

1 SIP 的请求/应答机制
SIP 采用基于文本格式的客户机-服务器工作
方式,是一个请求/应答协议。

该协议以文本的形式表示消息的语法、语义和编码,由客户机发起请求,服务器进行响应。

SIP 定义了多个执行相应功能的网络实体,理解这些实体对于我们分析SIP 的请求/应答机制具有十分重要的意义。

这些网络实体主要包含用户代理(UA ,User Agent )和网络服务器(NS ,Network Server )两类组件。

其中,UA 是一个用于和用户交互的SIP 实体,它通常有一个与用户连接的接口。

用户和SIP 之间的所有交互都是由UA 作为中介进行处理的。

UA 又分为用户代理客户端(UAC )和用户代理服务器(UAS ),UAC 负责发起SIP 呼叫请求,UAS 负责对呼叫请求做出响应。

SIP 请求连同它所触发的一个响应叫做一个SIP 事务。

网络服务
器主要为用户代理提供注册、认证、鉴权和路由等服务,根据其提供的功能不同,网络服务器可分为代理服务器、重定向服务器和注册服务器3种。

SIP 常用的请求方法主要包括邀请(INV ITE )、确认(AC K )、可选项(OPTIONS )、再见(B YE )、取消(CANCEL )和注册(REGISTER )等。

其中,IN 2V ITE 请求用于邀请用户参与一个会话,AC K 请求
用来确认对一个INV ITE 请求的最终应答的接受。

CANCEL 请求用于取消一个尚未完成的请求,B YE 请求用于释放呼叫,REGISTER 请求用于客户端向注册服务器通知它们当前所处的位置。

OPTIONS 请求用于询问服务器的性能情况。

当服务器收到请求的时候,它就发出一个或多个响应。

每一个响应都用一个代表事务状态的编码来表示,状态码是100~699的整数,并且被分成组,状态码的第1个数字定义响应的类别。

SIP 常用的响应方法定义如下:100~199表示请求已经收到,正在处理中;200~299表示请求已经成功;300~399表示对请求进行重定向处理;400~499表示客户端的请求有语法错误或不能被服务器执行;500~599表示服务器出错,不能执行合法的请求;600~699表示所有的服务器出错,都不能执行合法的请求。

2 SIP 的呼叫控制流程
在基于软交换的N GN 中,可以利用SIP 实现
收稿日期:2004207213
作者简介:李晖(1980-),女,湖北武汉人,硕士,主要从事软交换及多媒体通信技术的研究工作。

2004年 第6期(总第126期) 光通信研究STUD Y ON OPTICAL COMMUNICATIONS
2004(Sum.No.126)
一个或多个参与者参加的多媒体会话的发起、建立和释放,并支持单播、组播和移动性。

此外,SIP 还可与会话描述协议(SDP )配合,动态调整和修改会话属性,如通话带宽要求、传输媒体类型(语音、数据和视频等)及媒体的编解码格式。

SIP 主要用于SIP 终端和软交换之间、软交换和软交换之间以及软交换和各种应用服务器之间的呼叫控制。

SIP 支持3种呼叫方式:(1)由UAC 向UAS 直接呼叫;(2)由UAC 在重定向服务器的辅助下进行重定向呼叫;(3)由代理服务器代表UAC 向被叫发起呼叫。

下面,我们用流程图的描述方法说明SIP 的基本呼叫控制过程。

2.1 主叫方流程图
主叫方流程图如图1所示。

在正常呼叫的情况下,呼叫过程为:呼叫→接收1xx →接收200→发AC K →通信→发B YE →接收200→结束;当需重定
向时,主叫方会收到3xx ,并从此响应中得知下一跳服务器的地址,再发AC K 告诉被叫方已正确收到和理解此响应,然后根据此地址向下一跳服务器重新发送请求,即重新进入呼叫;当主叫(客户机)出错,即请求语法出错时,主叫方会收到4xx ,
在把语
图1 主叫方流程图
法改正后重新发送请求,即又一次进入呼叫;当被叫(服务器)出错,即请求合法,但该服务器无法完成此
请求时,主叫方会收到5xx ,再发AC K 告诉被叫方
已正确收到和理解此响应,然后在改换服务器后重新发送请求,即又一次重新进入呼叫;当全局故障,即任何服务器都无法完成此请求时,此次呼叫失败,结束此次呼叫。

2.2 被叫方流程图
被叫方流程图如图2所示。

在正常呼叫的情况下,呼叫过程为:接收INV ITE →发1xx →发200→接收AC K →通信→接收B YE →发200→结束;当需重定向时,被叫方会发3xx ,并通过此响应告诉主叫方下一跳服务器的地址,再接收AC K ,并得知主叫方已正确收到和理解此响应,然后重新进入接收INV ITE 状态;当主叫(客户机)出错,即请求语法出错时,被叫方会发4xx ,然后重新进入接收INV ITE 状态;当被叫(服务器)出错,即请求合法,但该服务器无法完成此请求时,被叫方会发5xx ,再接收AC K ,并得知主叫方已正确收到和理解此响应,然后重新进入接收INV ITE 状态;当全局故障,即任何服务器都无法完成此请求时,此次呼叫失败,结束此次呼叫。

图2 被叫方流程图
3 SIP 的设计与实现
在链路建好的前提下,SIP 便可以根据需要建立连接。

连接分为两种,一种是点到点连接;另一种是点到多点连接。

每一个连接应该有唯
光通信研究 2004年 第6期 总第126期
一的维护对象,因为各个连接是有区别的,每一个连接的连接参数应由各自的对象记录和维持直到此连接的结束。

在有多个连接存在的情况下,各个连接状态不可能完全相同。

因此,对状态机的维护和运转是SIP设计和实现的关键。

下面,我们以前面所描述的SIP的呼叫控制流程为基础,运用状态转移机制来说明SIP的设计与实现方法。

由于篇幅所限,这里只介绍点到点连接状态图的设计与实现方法。

3.1 点到点连接状态图的设计
点到点连接状态图如图3所示。

图中,我们用A过程表示主叫方建立连接的过程,称之为主动建立连接过程;用B过程表示被叫方建立连接的过程,称之为被动建立连接过程。

并定义如下几种状态:U0:空状态,U1:呼叫初始化,U2:呼叫到达, U3:发出呼叫处理,U4:进入呼叫处理,U5:发出呼叫正常处理,U6:进入呼叫正常处理,U7:激活状态,U8:释放请求,U9:释放指示,U10:进入呼叫出错处理,U11:发出呼叫出错处理。

首先分析主动建立连接过程的状态转移机制。

主动连接过程:主叫方在未建立连接前处于U0状态,然后发出INV ITE消息,状态变为U1,U1

图3 点到点连接状态图
收1xx消息后,状态变为U3,U3接收200消息后,
状态变为U5,在U5状态发出AC K后,状态变为
U7态,主动连接建立完毕。

因此,状态转移过程为
U0→U1→U3→U5→U7。

主动释放过程:主叫方处于U7状态,发送B YE
消息,状态变为U8,U8接收200消息,状态变为
U0,连接释放完毕。

因此,状态转移过程为U7→
U8→U0。

主动连接重定向出错处理:主叫方处于U3状
态,在发生重定向错误时,接收3xx消息,状态变为
U11,U11发送AC K消息,状态变为U0,回到初始
状态,错误处理完毕。

因此,状态转移过程为U3→
U11→U0。

主动连接客户机出错处理:主叫方处于U3状
态,在发生客户机错误时,接收4xx消息,状态变为
U0,回到初始状态,错误处理完毕。

因此,状态转移
过程为U3→U0。

主动连接服务器出错处理:主叫方处于U3状
态,在发生服务器错误时,接收5xx消息,状态变为
U11,U11发送AC K消息,状态变为U0,回到初始
状态,错误处理完毕。

因此,状态转移过程为U3→
U11→U0。

主动连接全局错误:主叫方处于U3状态,在发
生主动连接整个出错时,接收6xx消息,状态变为
U0,回到初始状态,错误处理完毕。

因此,状态转移
过程为U3→U0。

下面分析被动建立连接过程的状态转移机制:
被动连接过程:被叫方在未建立连接前处于U0
状态,然后接收INV ITE消息,状态变为U2,U2发
送1xx消息后,状态变为U4,U4发送200消息后,
状态变为U6,U6在接收AC K后,状态变为U7,被
动连接建立完毕。

因此,状态转移过程为U0→U2
→U4→U6→U7。

被动释放过程:被叫方处于U7状态,接收B YE
消息,状态变为U9,U9发送200消息,状态变为
U0,连接释放完毕。

因此,状态转移过程为U7→
U9→U0。

被动连接重定向出错处理:被叫方处于U4状
态,在发生重定向错误时,发送3xx消息,状态变为
(下转第49页)
李 晖等: 软交换SIP的设计与实现
6 通过网络优化建立统一的基础传送平台
针对以上分析,甘肃联通应在网络优化的基础上建立一个适当超前、比较合理的统一基础传送平台,在此网络上可以承载目前甘肃联通的全部业务,包括GSM、CDMA、固定话音和数据等,同时可以承载未来可能出现的新业务,并且在优化后简化整个网络结构,降低网络维护的工作量和网络的建设风险。

(上接第39页)
U10,U10接收AC K消息,状态变为U0,回到初始状态,错误处理完毕。

因此,状态转移过程为U4→U10→U0。

被动连接客户机出错处理:被叫方处于U4状态,在发生客户机错误时,发送4xx消息,状态变为回到初始状态,错误处理完毕。

因此,状态转移过程为U4→U0。

被动连接服务器出错处理:被叫方处于U4状态,在发生服务器错误时,发送5xx消息,状态变为U10,U10接收AC K消息后,状态变为U0,回到初始状态,错误处理完毕。

因此,状态转移过程为U4→U10→U0。

被动连接全局错误:被叫方处于U4状态,在发生被动连接整个出错时,发送6xx消息,状态变为U0,回到初始状态,错误处理完毕。

因此,状态转移过程为U4→U0。

3.2 SIP的实现
根据以上描述的SIP呼叫控制过程的流程图和状态图,我们可以运用Winsock的编程原理,即客户机-服务器的通信模式,用Visual C++编程语言,采用流套接字编程,在Win98/XP/2000开发环境中实现SIP的基本功能。

流套接字的服务进程和客户进程在通信前必须创建各自的套接字并建立连接,然后才能对相应的套接字进行“读”、“写”操作,实现数据的传输,如图4所示。

主叫(客户机)和被叫(服务器)各有一个源代码,主叫源代码名为Sim2 pleClient classes,被叫源代码名为SimpleServer class2 es。

关于源代码的说明,由于篇幅所限,在此不再赘述。

图4 流套接字编程时序图
4 结束语
本文在描述SIP请求/应答机制以及呼叫控制
流程的基础上,说明了SIP的设计与实现方法。


此基础上,我们还可以进一步研究基于软交换SIP
的多媒体通信,该协议与软交换支持的其他协议(如
H.248、Parlay API等)协同工作,并通过该协议实
现软交换和应用服务器之间的交互通信,可以向用
户提供可视电话、多媒体会议通信、视频点播以及远
程教学等多媒体业务。

参考文献:
[1] ISC22002.International softswitch consortium reference
architecture[S].
[2] Network Working Group21999.SIP:Session initiation
protocol[S].
[3] 赵慧玲,叶华。

以软交换为核心的下一代网络技术
[M]。

北京:人民邮电出版社,2002。

公欣波: 甘肃联通本地传送网网络优化浅析。

相关文档
最新文档