本文转自http://blog.csdn.net/zqf_office/article/details/8861016
学习:
SIP协议:会话初始协议,由IETF制定,最早由MMUSIC工作组提出,现在主要由SIP工作组负责维护和后期扩展,是一种轻量级的应用层通用信令协议,用于多媒体通信控制,可建立、修改和终止IP网上的语音和多媒体会话。
1999年,MMUSIC工作组推出SIP V1.0 (RFC2543)。 2003年,SIP工作组推出SIP V2.0 (RFC3261)目前已进行了许多扩展,并被3GPP/3GPP2、OMA、ETSI、ITU-T等标准化组织广泛采纳。Ø IETF RFC 3261 SIP: Session Initiation Protocol
Ø IETF RFC 3262 Reliability of Provisional Responses in the Session Initiation Protocol (SIP)
SIP相对而言,在语音业务方面没有BICC成熟,但它能支持较强的多媒体业务,扩展性好,根据不同的应用,可对其进行相应的扩展。在固定网软交换应用中,SIP协议处于扁平体系结构中的呼叫控制层,提供了不同软交换之间呼叫接续的支持。采用SIP体系架构时,从路由角度看,存在两种情况:
第一种情况,正常的ISUP消息添加一些信息后封装在SIP消息中传送,呼叫服务器、号码、路由分析和信令以及业务的互通等功能保持不变,路由分析指引到目标IP地址的寻址。
第二种情况,是基于ENUM(IETF的电话号码映射工作组)数据库的。在这种方式下,呼叫服务器的呼叫控制与现有电路交换网中的呼叫控制完全不同,呼叫控制中将没有号码和路由分析,但是仍需业务映射和互通。由于不使用电路识别码CIC、ISUP管理进程、消息传送软交换协议MTP,标准的ISUP协议要相应修改。网络的管理在某种程度上得到了简化(如无须构建信令网,没有路由定义)。另外,和现有网络相比,运营商对网络的控制减少,控制方式发生了巨大的变化。
1.Overview:
2.SIP协议:
1)概述
SIP: Session Initiation Protocol,由IETF制定,最早由MMUSIC工作组提出,现在主要由SIP工作组负责维护和后期扩展,是一种轻量级的应用层通用信令协议,用于多媒体通信控制,可建立、修改和终止IP网上的语音和多媒体会话。
典型的SIP梯形网络结构:
SIP的Offer/Answer模型:
也称为会话协商模型,以在对等功能实体之间进行会话协商通过在SIP消息的消息体中包含SDP描述完成。、
在会话过程中,任何一方可以通过Offer/Answer模型修改会话属性。
2)发展和应用情况:
3)相关标准:
a)SIP核心标准:
b)SIP扩展标准:
IETF针对SIP的不同应用需求制定了上百篇SIP扩展RFC,
SIP相关RFC:
3261-32xx, 33xx, 34xx, 35xx, 36xx, 37xx, 38xx, 39xx, 40xx,
41xx, 42xx, 43xx, 44xx, 45xx, 46xx, 47xx, 48xx, 49xx, 50xx,
51xx, 52xx, 53xx, 54xx, before 3261
4)SIP基本功能:
5)SIP的特点
6)网络中元素:
SIP基本网络模型:客户-服务器协议,在语法和语义上与HTTP类似,SIP客户发出请求,SIP服务器接收请求并进行响应
a)SIP用户代理UA:
端系统中的SIP应用称作SIP用户代理(UA),UA = UAC + UAS,UA最基本的功能是支持SIP请求和应答的正确发送和接收。
B2BUA:在一次呼叫中既充当UAC又充当UAS角色,UAC根据UAS接收到的请求消息构造新的请求消息进行发送。
b)SIP代理服务器Proxy Server:
负责将来自客户的请求转发 到下一跳SIP代理服务器或重定向服务器或最终的UAS,也可能将请求分发到多个下一跳服务器。
主要功能:寻址、路由、转发,可以解释、翻译、改写SIP请求。
分类:
c)SIP重定向服务器Redirect Server:
通过响应告诉请求的发起方下一跳服务器的地址,然后由请求发起方根据此地址向下一跳服务器重新发送请求 。
与Proxy Server的区别
d)SIP注册服务器Register Server
通过注册过程接收客户当前的位置信息,并对位置服务器进行添加、修改、查询等操作。通常与代理服务器或重定向服务器放在一起。
功能:
e)位置服务器
存储并向用户返回可能的位置信息,在SIP网络架构中起到重要作用的Internet公共服务器。位置服务器的信息可能来自SIP注册服务器,也可能通过其他渠道获取。位置服务器与SIP服务器之间通过使用LDAP协议 进行通信,位置服务器可能返回多个位置信息,重定向服务器和代理服务器可以采用不同的方式来处理这多个位置信息。
我们看一个呼叫的过程体会一下各个功能实体的作用:
7)SIP协议的结构及其位置
各层功能相对独立。层与层之间松散耦合,SIP独立于网络传输协议。
事务用户层
事务层
传输层
语法和编码层
8)SIP消息:
a)简述:SIP消息用于建立或终结会话,采用纯文本形式,用于Internet多媒体会议,Internet电话呼叫或多媒体信息流分配。SIP中最重要的消息是邀请“INVITE”请求消息
b) 类型:
c)消息体通用结构:
SIP消息=起始行(请求行/状态行)
一个或多个消息头域行
CRLF(空行)
[消息体]
- start-line(起始行):在请求消息中称为请求行,在响应消息中称为状态行,给出版本号、调用的请求操作、被邀请用户的当前地址、响应类型等信息。
- headers 域:携带呼叫属性和业务信息,用于指示客户机/服务器如何处理消息,许多头域来自HTTP(From, To, …)。有些是SIP特有的(Call-ID, Cseq, Via, …)。
- body 域:携带呼叫或会话描述,可以使用SDP格式,描述会话的音频/视频编解码方法、参数、地址以及会话的时间等信息。在响应消息中还可能是原因和进展指示文本。
d)SIP消息起始行:
RFC3261中定义的基本方法Method:
注:SIP方法可以进行扩展
Request-URI 请求去往的服务器的地址
SIP-VerSIP版本号目前设为SIP/2.0
2xx,成功响应。表示请求已成功接收、完全理解并被接受,如200 OK
3xx,重定向响应。需要采取进一步动作来完成该请求,如301、302、305
4xx,客户出错。请求语法出错或无法在此服务器完成该请求,如401、403、407,……
5xx,服务器出错。服务器不能完成合法的请求,如503、504,……
6xx,全局故障。任何服务器都无法完成该请求
注:SIP响应码可以进行扩展
e)SIP消息头域:
用于携带呼叫属性和业务信息,用于指示客户或服务器如何处理消息,语法和语义类似HTTP。同一头域名的多个头域值可以位于同一头域行,头域值之间 用逗号隔开。头域存在多个参数时,头域值与参数之间用逗号隔开。RFC3261定义了44个头域,头域的顺序没有严格限制,但建议将需要Proxy处理的 头域放在前面。From、To、Call-ID、CSeq、Via和Max-Forwards这六个头域在所有的请求消息中都必须出现。Contact头 域在INVITE请求消息的头域中必须出现。
通用格式:field-name: field-value *(;parameter-name=parameter-value)
f)SIP消息体:
SIP消息头只涉及会话建立、终结和修改,并不涉及媒体控制。SIP会话的媒体类型、编码格式、收发地址等信息由SIP的消息体(SDP)来描述。SIP请求和响应消息都可以包含消息体
SIP消息体通常在UA之间进行端到端的传送,对中间代理透明。SDP是用于描述多媒体会话信息的协议,目的为告知某会话的存在给出参与会话所必需的信息,包括会话的地址、时
间、媒体类型等信息。SDP定义了会话描述的统一格式,但不定义SDP消息的传送,也不支持媒体编码方案的协商。SDP描述的信息封装在传送协议中传送。 典型的会话传送协议包括:SAP、SIP、RTSP、HTTP、使用MIME的E-mail。采用SAP、SIP或RTSP传送SDP信息的数据报格式。
SDP会话描述作为消息体放在SIP消息中,只有请求消息和2xx响应消息包含SDP消息体,其它响应消息包含的消息体为文本描述,给出呼叫进展信息和异常原因的说明。
SIP消息体头部中用于说明消息体类型和大小的部分:
SDP内容:
SDP格式:
SDP描述由多个文本行构成 =,纯文本描述——具有可携带性,紧凑型编码——各字段有严格的顺序和格式。
SDP描述包括两部分
g)SIP举例:
SIP请求消息举例——INVITE
SIP响应消息举例——200 OK
h)SIP寻址和路由
寻址:在SIP中,用户通过SIP/SIPS URI进行寻址,SIP URI有以下几种形式。
路由:
UAC的路由机制--
相关头域:
路由策略:
UAS的路由机制--应答消息根据Via头域的值与沿着请求消息相反的路径返回,在不要求代理转发请求时,应答消息直接发送给请求消息的Contact头域指示的UAC。
Proxy的路由机制--对请求消息的路由策略,根据Request-URI头域的值进行路由,根据Route头域的值进行路由;对应答消息的路由策略,根据Via头域的内容进行转发。
i)SIP的呼叫/对话/会话/事务:
Call——呼叫:在对等SIP UA之间建立的联系,由Call-ID唯一标识
Dialog——对话:在两个UA之间保持一定时间的对等SIP关系,由SIP消息(如对INVITE的2xx响应)建立,由Call-ID(呼叫标识)、local tag(本地标签)和 remote tag(远端标签)共同标识。
Session——会话:在对等参与者之间建立的媒体流连接。在使用SDP进行会话描述时,会话由SDP用户名、session id、网络类型、地址类型以及源域的地址元素共同定义。
SIP Transaction——SIP事务:发生在一个客户和一个服务器之间,包括从客户发出一个请求到服务器回送终结响应之间的所有消息。
事务是一个垂直的概念,描述了SIP实体在事务层应完成的功能(对话则描述了对等UA之间的交互关系,一个对话往往需要通过多个事务来完成)事务只存在于UA和有状态的Proxy中。事务通过维护有限状态机来提供相应的功能,SIP定义了四个事务状态机。
每个事务状态机有自身的定时器、重传规则、过滤规则和终止规则。
g)SIP典型流程
用户注册流程:
直接呼叫控制流程:
代理呼叫控制流程:
重定向呼叫控制流程:
第三方呼叫控制模型:
k)SIP在软交换网络中的应用
l)SIP的扩展
SIP方法扩展
INFO
UPDATE、MESSAGE
SUBSCRIBE/NOTIFY
REFER
PRACK
PUBLISH
……
SIP消息头域和参数扩展
refered-by
Refer-to
……
SIP消息体扩展
XML消息体
Multipart消息体
ISUP消息体
3.SIP-T/SIP-I/BICC协议
1)简介:
SIP-T--Session Initiation Protocol for Telephones,SIP协议针对电信业务的扩展,RFC3372、RFC3398。
SIP-I--SIP with Encapsulated ISUP,由ITU-T制定,是SS7 ISUP与SIP的互通协议,Q.1912。
2)目的:
使基于SIP的软交换网络能够与传统电信网络互通,使SIP网络桥接PSTN网络时能够透明传递ISUP消息。
3)内容:
制定了详细的SIP消息与ISUP消息的映射,保证ISUP信令的透明传递,通过 “封装” 的方法实现。
4)二者区别:
SIP-T协议:制定了基本的SIP-ISUP映射规则与映射方法,描述简单,易于理解,但可实现性差,不易操作。
SIP-I协议:继承了SIP-T协议的规则与方法,进一步严格规范了消息与参数的映射,描述复杂,可操作性好,可实现性强,扩展了对补充业务的描述已经考虑了3GPP的相关内容。
5)SIP 网络与PSTN网络互通:
SIP-T/SIP-I协议用于指导软交换完成SIP-ISUP的映射。
参考点A:ISUP over SIGTRAN
参考点B:Megaco/H.248
参考点D:SIP-T/SIP-T
SIP-T/SIP-I用于指导软交换之间的交互,以透明传递ISUP消息。
6)BICC协议
BICC协议由ITU-T SG11定义提供承载无关的呼叫控制功能,与IETF的SIP协议相对应。
BICC协议基于ISUP标准(Q.761-765),并对其进行了增强,以支持分组网承载信息的传送。承载信息采用BICC的APM机制
BICC CS1支持基于ATM承载上的窄带业务的提供。BICC CS2进行了进一步的增强,可以支持基于IP的承载信息的传送。