新一代多媒体通信协议SIP及其实现


一、引言
会话启动协议SIPSession Initiation Protocol)是由IETFInternet Engineering Task Force)组织于1999年提出的多媒体通信框架的应用层信令协议,是在诸如SMTP简单邮件传送协议)和HTTP超文本传送协议)基础之上建立起来的,尤其适用于Internet中的实时通信应用,其设计理念和协议结构完全符合NGN的特性和要求,成为未来多媒体通信系统的主流发展方向。
SIP用来生成,修改和终结一个或多个参与者之间的会话。这些会话包括因特网多媒体会议,因特网或任何IP网络)电话呼叫和多媒体发布。会话中的成员能够通过多播或单播联系的网络来通信。
目前,SIP已广泛地应用在VoIP系统中,是VoIP系统的主要协议,实现VoIP的协议除了SIP以外主要还有H.323和媒体网关控制协议MGCP。MGCP能将众多的IP电话网关连接成一个具备互操作性的整体,特别适用于配置大型应用系统,然而对于小型应用系统来说过于复杂。H.323是针对电路交换网的,协议相对复杂,采用H.323的VoIP服务对终端设备的要求较高。SIP则简单易行并且很容易与其他服务集成,优势明显。
SIP协议用于发起会话,可以用来建立、修改以及终结多个参与者参加的多媒体会话进程。参与会话的成员可以通过组播方式、单播连网或者两者结合的形式进行通信。为提供多媒体业务,还需要结合不同的标准和协议,如需要RTP确保媒体传输,RSVP确保语音质量,RADIUS鉴权用户等。
论文研究SIP基本架构及实现机制,基于开放源代码的VOCAL系统,分析实现基于   宋体简介、图名、表名及内容、参考文献均为小五号字,正文中除标题SIP语音通信的方法,从而深入探讨SIP实现结构。
二、SIP协议架构与实现机制
SIP的核心思想是邀请新成员加入一个已经存在的会话或创建一个新的会话,各成员之间可以通过组播multicast)、单播unicast)或两者结合的方式进行交互。
1.SIP的基本功能及特点
SIP支持会话描述,它允许参与者在一组兼容媒体类型上达成一致,同时通过代理和重定向请求到用户当前位置来支持用户移动性。SIP不与任何特定的会议控制协议捆绑。SIP提供以下功能:
● 名字翻译和用户定位:无论被呼叫方在哪里都确保呼叫达到被叫方。执行任何描述信息到定位信息的映射。
● 特征协商:它允许与呼叫有关的组这可以是多方呼叫)在支持的特征上达成一致。例如是否支持视频等多种需要协商的特征。
● 呼叫参与者管理:呼叫中参与者能够引入其它用户,加入呼叫或取消到其它用户的连接。
● 呼叫特征改变:用户应该能够改变呼叫过程中的呼叫特征。
SIP既可以用于建立各种会话,也可以用来传送即时消息和文件。能够灵活、方便地提供业务,具有多方面优点。
● 协议可扩展性:SIP协议具有强大的扩充机制。SIP协议的扩展性主要体现在其消息的扩展上,SIP消息的三个基本部分:消息类型、消息头、消息体,都可以被不断扩充。SIP消息基于文本方式,使得各种扩充工作都变得十分简洁。
● 开放的业务生成环境:SIP网络的业务提供主要由Proxy Server完成,生成一个业务就是设计一个业务逻辑从而对一个特定的消息流进行控制,或对消息请求做出相应的响应。
● 支持移动性:SIP的动态注册机制,使用户端移动变得十分方便。
2.SIP协议的分层结构
SIP是一个分层结构协议,它的行为根据一组平等独立的处理阶段来描述,每一阶段之间只是松耦合。
SIP的最底层是语法和编码。它的编码使用增强Backus-Nayr形式语法BNF)来规定。
第二层是传输层,定义了网络上客户机与服务器发送请求和接收响应的方式,所有的SIP元素包含传输层。
第三层是事务层。事务是SIP的基本元素。事务层具有客户机组成部分称为客户机事务)和服务器组成部分称为服务器事务),一个事务由客户机事务发送给服务器事务的请求使用传输层),以及服务器事务发送对应该请求的响应组成。
事务层之上的层为事务用户TU)。当一个TU希望发送请求时,生成一个客户机事务实例并向它传递请求和IP地址、端口和用来发送请求的传输机制。
3.SIP协议的消息机制
SIP采用C/S结构,通过消息机制来建立会话。SIP消息包括请求消息和响应消息,二者具有相同的消息格式。
SIP消息是UAC和UAS之间通信的基本信息单元,采用的是基于UTF-8的文本编码格式,语法信息以扩展Backus-Naur形式EBNF)描述,消息格式遵循RFC2822。
SIP消息的通用格式是:
Generic-message = start-line
*message-header
CRLF
[message-body]
start-line: SIP消息起始行。
*message-header:多个头域。
CRLF:空行,表示消息头域的结束
message-body:消息体部分。
SIP消息有两种:客户机到服务器的请求Request), 服务器到客户机的响应Response) .
4. SIP系统得功能实体及工作流程
SIP系统采用C\S模式,利用消息机制建立并管理会话。按逻辑功能,SIP系统可分为四大功能实体:SIP用户代理、SIP代理服务器、SIP重定向服务器和SIP注册服务器,它们共同构成了SIP系统的基本模型。
SIP用户代理SIP UA):又称为SIP终端,是SIP系统中的最终用户,在RFC3261中将它们定义为一个应用。根据它们在会话中扮演的角色的不同,又可分为用户代理客户机(UAC)和用户代理服务器(UAS)两种。其中前者用于发起呼叫请求,后者用于当接到SIP请求时联系用户,并代表用户返回响应。
SIP代理服务器(SIP Proxy Server):是一个中间元素,它既是一个客户机又是一个服务器,能够代理前面的用户向下一跳服务器发出呼叫请求。SIP代理服务器除了路由能力外,也可以集成防火墙、radiusAAA)等功能。
SIP重定向服务器(SIP Redirect Server):是一个规划SIP呼叫路径的服务器,在获得了下一跳的地址后,立刻告诉前面的用户,让该用户直接向下一跳地址发出请求而自己则退出对这个呼叫的控制。
SIP注册服务器(SIP Register Server):用来完成对UAS的登录,在SIP系统的网元中,所有UAS都要在某个登录服务器中登录,以便UAC通过服务器能找到它们。注册服务并不做请求的身份认证的判定。在SIP中授权和认证可以通过建立在基于请求/应答的模式上的上下文相关的请求来实现,也可以使用更底层的方式来实现。
图表中用户Alice使用安装了支持语音和视频功能的客户程序的PC,用户Bob使用SIP电话。两者都已经向本域内的SIP代理服务器注册了他们的状态和IP地址。用户A发起呼叫;代理服务器收到A的请求后向注册服务器查询B的位置信息;向B发出代理呼叫;B通知代理服务器接受A的邀请并已作好接受数据的准备;代理服务器通知A后SIP会话建立完毕。当Bob要结束会话时,直接向Alice发送结束请求,在Alice确认这个请求以后会话结束。
三、用VOCAL系统实现基于SIP的语音通信
VOCALVovida Open Communication Application Library)是一个开源代码通信软件,以IP网为核心,在Linux或Solaris操作系统上运行。提供VoIP电话服务,支持基于SIP的通信设备。
1.VOCAL通信系统的组成
一个完整的VOCAL通信系统应包含以下几个部分:
● VOCAL系统电话软件,是整个系统的核心,包含多种服务器。
● GUI:图形用户接口。
● IP电话:VOCAL支持多种电话设备,包括SIP电话和SIP用户代理应用软件。
● 网关:不仅提供网络之间的接口,还能起到基于SIP网络和其他类型网络之间消息翻译器的功能。VOCAL包含两种网关:住宅网关和中继网关。

Marshal server:是外部设备和VOCAL系统连接的唯一接口。提供了SIP协议中的SIP代理服务器和注册服务器的逻辑功能。作用是SIP消息翻译,用户鉴定和保障安全性,计费等。
重定向服务器:重定向服务器是SIP协议中重定向、注册、定位服务器的组合实现,存储用户的联系和特征数据。
呼叫详述记录服务器:从Marshal server接受呼叫数据,并把这些数据转化为第三方计费系统能够识别的格式。
特征服务器:是SIP代理服务器的另外一种实现方式。
Provisioning Server:存储系统所有用户和服务器模块的数据记录,并把这些信息通过预定通报模块发送到整个系统中去。
2.VOCAL系统的安装与测试
VOCAL系统在Linux或Solaris操作系统下运行,本文运行在Red Hat 9.0之下,安装与测试过程中解决的主要问题包括:
1)操作系统中必须要有X window系统,gcc编译器。
2)主机名称和IP地址必须设定,不可以为127.0.0.1可以先检查/etc/hosts文件,如果只有127.0.0.1一行,需要自行加入本机IP 及主机名,例如:
127.0.0.1 localhost.localdomain localhost
xxx.xxx.xxx.xxx  our_hostname
3)vocal server 必须要有java环境。如果没有要自行下载支持Linux的j2re包来安装。

VOCAL是由http://vovida.org提供的,http://vovida.org 提供两种VOCAl安装方式,一种是源码安装,一种是rpm安装。在测试过程中要进行两点之间的语音通信,要在两台机器上安装VOCAL,其中一台选择用源码安装整个系统做服务器和一个客户端,另外一台用rpm安装一个客户端:sipset。
服务器端集成了完整的VOCAL系统,可以通过web方式登录服务器,并建立用户。建立两个用户1000和1001以备测试。
在两台机器上分别启动sipset,sipset提供了一个简单的图形界面,用户可以实现登录、呼叫、挂机等操作,两个终端先分别以用户1000和1001登录。让1000用户呼叫1001。当呼叫发出以后1001端就会显示有一个呼叫进入,1001端选择接听,就建立了基于SIP的语音会话。
四、结论
论文详细介绍了SIP)的实现机制、消息结构、功能实体以及呼叫建立流程,结合VOCAL系统,介绍了如何在IP网络中实现基于SIP协议的语音通信。要实现在IP网中基于SIP的视频通信以及多方参与的多媒体会议系统等,还需要使用会话初始协议的一些扩展功能,媒体协商、会话过程控制等。

相关文章】

  • SIP协议解析与实现
  • SIP能否成主流?IP电话协议比较
  • SIP协议固有的安全漏洞

相关内容