《SIP 培训(共45张).pptx》由会员分享,可在线阅读,更多相关《SIP 培训(共45张).pptx(45页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、SIP 协协 议议 介介 绍绍Nova.Li 基本概念基本概念 接口说明接口说明 能能 力力 集集 语音提示音语音提示音 业务流程业务流程 SIP 消息消息基本概念基本概念1.S I P: SIP(Session Initiation Protocol)是一个应用层控制协议,它用来创建、修改和终结会话2.2.SIP-I/SIP-SIP-I/SIP-T: 当SIP 网络和PSTN 互通时,为了在SIP 网络中透明传送PSTN 信息,需要将ISUP 消息封装在SIP 消息体中。此时又将SIP 称作SIP-I/SIP-T3. SIP 逻辑实体逻辑实体 RFC3261 中定义的SIP 逻辑实体包括用户
2、代理(UA, User Agent),代理服务器(Proxy),注册服务器(Registrar),重定向服务器(Redirect Server),B2BUA(Back-to-Back User Agent)。 用户终端(用户终端(User Terminal UA)从应用角度,基于SIP 的用户终端可分为3 种:SIP 软终端、SIP 硬终端、基于SIP 的IAD 或AG 设备Proxy/ B2BUA/ B2BUAProxy: 代理服务器是SIP 网络的中间实体,为了处理客户端的请求,它既承担服务器的角色又承担客户端的角色。主要完成路由处理功能,即保证将请求消发送到离目标用户更近的其它实体。B2
3、BUA: 实质上是SIP UA 的一种应用,是一种特殊的SIP 逻辑实体,适用于SIP网络中需要呼叫和业务控制的场合。它可以接收SIP 请求并像UAS 那样处理它们。为了决定如何应答一个请求,B2BUA 又向别的实体发送请求,此时它扮演了UAC 的角色。B2BUA 需要维护对话(Dialog)的状态,并处理所有在它所建立的对话中发送的请求消息。为了尽可能实现业务的透明传输,建议除非业务和应用控制(例如安全性的考虑或网间接口局)的需要,原则上B2BUA 不能改变From 域和To 域的SIP URI 部分、以及其它有可能影响业务透明传输的消息组成部分。我们的软交换(CSA/CSP)采用B2BUA
4、 方式。重定向服务器(重定向服务器(Redirect Server)重定向服务器首先要能根据SIP 请求消息中Request-URI 所指实体的当前位置信息,用3xx 类响应消息对SIP 请求进行重定向。我们的CSP目前不能产生3xx消息,在ismart上注册呼叫转移可以模拟此类消息的产生。见log3xx 注册服务器(注册服务器(Registrar)由于注册请求中Contact 地址的有效期过短会引起注册刷新消息的频繁,从而给网络带来沉重负担;存亡周期过长则不利于运营商对用户终端的控制,因此对于注册请求中存亡周期过短或过长的行为,注册服务器应当能够进行正确的处理。建议注册服务器允许注册请求中C
5、ontact 地址有效期的下限为120 秒/2 分钟,上限为86400 秒/24 小时,但注册服务器应当具备对上限和下限取值可灵活配置的功能,根据实际运营和业务需求情况合理取值。如果注册请求中的Contact 地址的有效期小于下限,注册服务器应当回应以423 错误响应,并在该响应消息的Min-Expires 头域中指出服务器的建议值,在给予明确指示的情况下,如果终端仍然重发类似的请求消息,注册服务器应当判别是否属于恶意注册的行为;如果注册请求中Contact 地址的有效期大于上限,则注册服务器自动将其减为上限,并在200 OK 响应中包含修改后的有效期值。注销时, Register 消息中ex
6、pire 值为0。4. 对话(对话(dialog) 1) 对话是两个UA 之间持续一段时间的点对点的SIP 连接2)对话ID。 任何UA 上的对话都是由对话ID 来标识的,这个对话ID 包含一个Call-ID ,一个本地标签和一个远端标签。对话中的每个UA 的对话ID 是不同的。另外,一个UA 的本地标识符与对端UA 的远端标识符相等。3)对话的建立。UA 通过向服务器发送INVITE 消息开始会话发起过程。如果UAS 同意建立本次会话,则返回2XX 响应,如果不同意,则返回3XX 、4XX 、5XX 、6XX 响应。在收到最终响应之前,UAS 也可以发送临时响应(1XX )来通知UAC 当前
7、的处理进展情况。会话建立的标志是1XX(比如180振铃)或2XX(200 摘机)消息中的To 头字段中包含一个标签(tag)。4)对话的更改。对话建议之后,任何一方都可以发起会话更改请求,修改会话的某些属性,例如:增加删除媒体流, 改变媒体发送接收地址等。这是通过在已经建立的Dialog 中发送一个新的INVITE 请求来完成的。我们称之为reINVITE 。 5) 对话的终止。会话的中止可以通过对INVITE 请求返回拒绝响应,对已建立的会话发送BYE 请求等方式来完成。5 5 三次握手三次握手INVITE 事务由三次握手组成: 客户端事务发送INVITE 请求,服务器端事务发送响应,然后客
8、户端事务发送ACK 消息。 6 可靠传输机制可靠传输机制SIP 协议是一个请求响应协议,用于发起和管理会话。在SIP 中,响应分为两类,一类是临时响应,一类是最终响应。最终响应传递呼叫请求处理的结果,并且保证可靠传递; 临时响应提供呼叫请求处理过程中的信息,并且不保证可靠传递。但在有些情况下,可靠地传递临时响应非常重要,其中包括和PSTN 互通这种情况,因此需要任选能力集来支持临时响应的可靠传递。可以借鉴最终响应2xx 的可靠传递机制来实现临时响应的可靠传递。事务处理用户部分(TU)将周期性地发送最终响应2xx, 直到收到ACK 为止。为了可靠传递临时响应,需要采用相同的机制。事务处理用户部分
9、TU 采用按照指数递增的定时器控制临时响应的重传,当收到PRACK消息时停止临时响应的重传。7 7 什么情况下要求临时响应被可靠传输什么情况下要求临时响应被可靠传输1) 初始的INVITE 请求中包含Supported 头部字段,且该头部字段中的任选标记为100rel,UAS 就可以可靠地传递任何non-100 临时响应。2)如果临时响应中包含Require 头部字段,且该头部字段中的任选标记为100rel,UAS 就必须可靠地传递任何non-100 临时响应。3)UAS 不应尝试可靠地传递100 (试呼中)响应,只有编号为101 到199 的临时响应可以可靠传递。如果请求方法中未包含指示该特
10、性的Supported 头部字段或 Require 头部字段, 则UAS 就不用可靠地传递临时响应。接口说明接口说明UNI UNI 接口(用户网络接口)接口(用户网络接口)SIP 用户终端UA 与SIP B2BUA 之间: SIPNNI NNI 接口(网络网络接口)接口(网络网络接口)1. SIP B2BUA 之间:SIP 或SIP-I 。一般情况下使用SIP。2. SIP 网络与网络与PSTN(包含(包含IAD) 的互通的互通: SIP 或SIP-Inova:在NGN 中,软交换携带的用户除了SIP 用户外,还有可能为IAD 或AG 用户。由于IAD或AG 在将来可能提供类似于目前Class
11、 5 交换局的功能,为了确保对原有传统业务的支持,软交换在进行信令处理时,应当将IAD 或AG 用户作为一个PSTN 用户看待。SIP 网络与网络与PSTN 的互通的互通SIP 是实现VoIP 的关键协议之一,对基于SIP 的网络来说,必须要实现与传统PSTN的互通。目前只考虑SIP 协议与PSTN 中ISUP 信令的互通。根据主被叫所在的网络,SIP 网络和PSTN 网络的互通分以下几种情况:1. 自PSTN 发起的呼叫,经过SIP-ISUP 互通单元,终止在SIP 用户(如SIP 电话机).发端侧软交换进行路由选择时: 如果能够根据号码规则或其他方式判断出被叫用户为SIP 用户,则此时NN
12、I 接口采用SIP 如果不能够判别出被叫用户为SIP 用户,则此时NNI 接口采用SIP-I2. SIP 用户发起的呼叫,经过SIP-ISUP 互通单元,终止在PSTN 用户;此时代理服务器与SIP-ISUP 互通单元之间的NNI 采用SIP 消息3. SIP 网络被作为SIP-ISUP 互通单元之间的传输网络来使用,呼叫自PSTN 发起,也在PSTN 落地,但是中间要经过SIP 网络;SIP-ISUP 互通单元之间的NNI 采用SIP-I。能力集能力集根据SIP-ISUPSIP-ISUP 互通单元SIP 域一侧的具体情况,SIP-ISUP 互通单元有三种能力集配置:- 配置A:适用于ISUP
13、 与3GPP 中的SIP 的互通- 配置B:适用于ISUP 与普通SIP 的互通- 配置C:适用于ISUP 与SIP-I 的互通语音提示音的播放语音提示音的播放假定网络架构为两个软交换,两个软交换之间采用SIP 或SIP-I。由于振铃音或其他提示音的播放位置不同,对整个流程的影响将不同。鉴于这种情况,对语音资源的播放位置作如下原则性规定:180 信号指示本地或远端播放振铃音 通过带有SDP 信息的183 信号指示被叫方提供语音资源通知 如果被叫用户为PSTN 用户1. 回铃音由被叫端局提供。2. 当SIP-ISUP 互通单元采用A 或B 配置,一般由被叫端局播放语音(忙、久叫不应等) 3. S
14、IP-ISUP 互通单元采用C 配置,一般由主叫端局播放语音(忙、久叫不应等) 如果被叫用户为SIP 或IAD 用户1.回铃音或其他失败音信号(例如忙音等普通的音信号)由主叫方处理2. 根据业务需要,如果被叫处需要播放语音资源音(例如,被叫用户忙等语音资源)的情况,通过183 向主叫侧播放该语音通知业务流程业务流程 基本注册过程基本注册过程 SIP用户用户-SIP用户成功呼叫流程用户成功呼叫流程 SIP用户用户-SIP用户失败呼叫流程用户失败呼叫流程 SIP用户用户-PSTN用户成功呼叫流程用户成功呼叫流程 SIP用户用户-PSTN用户失败呼叫流程用户失败呼叫流程 PSTN用户用户-SIP用户
15、成功呼叫流程用户成功呼叫流程 PSTN用户用户-SIP用户失败呼叫流程用户失败呼叫流程 PSTN用户用户-PSTN用户成功呼叫流程用户成功呼叫流程 PSTN用户用户-PSTN用户失败呼叫流程用户失败呼叫流程基本注册过程基本注册过程流程说明:1. 第2 个Register 消息与第1 个Register 消息Call-id 相同,Cseq 增加2. 注销时, Register 消息中expire 值为0。3. LOG见 register/logout基本呼叫流程基本呼叫流程1. 1. SIP用户用户-SIP用户用户当被叫用户为SIP 用户时,此时主叫侧提供回铃音.NNI采用SIP方式。 成功呼叫
16、成功呼叫Sip User1SS1SS21: INVITE(SDP)3: INVITE(SDP)2: 100 Trying4: 100 Trying5: 180 Ringing5: 180 Ringing6: 200 OK(SDP)6: 200 OK(SDP)7: ACK7: ACKSession establishedSip User24: INVITE(SDP)5: 180 Ringing6: 200 OK(SDP)7: ACK9: 200 OK9: 200 OK9: 200 OK8: BYE8: BYE8: BYE流程说明;1. 用户A 向软交换1 发起请求2. 软交换1 接收到请求后向用
17、户A发送确认信号,表示正在对收到的请求进行处理3. 软交换1 经过路由分析,将请求转发到软交换24. 软交换2 向软交换1 发送确认消息(表示已经接收到请求消息),同时将请求转发到用户C5. 用户C 振铃(回铃音由主叫方本地放送)6. 用户C 摘机7. 用户A接收到200 消息后发送确认信号8. 主叫用户挂机,软交换将拆线信号转发到被叫用户C 处9. 被叫用户发送确认信号表示收到拆线信号10.如果拆线信号由被叫发出,BYE 消息中的From、to 域与初始Invite 消息中的From、 TO域发生颠倒11. LOG: sip-sip.cap被叫用户忙LOG: sip-sip(mang).ca
18、p15: 200 OK (INVITE)SIP User 2SS 2SS 1PSTN User 11: INVITE SDP2: 100 Trying3: INVITE SDP4: 100 Trying5: IAM6: ACM7: 180 Ringing SDP8: 180 Ringing SDP9: PRACK10: PRACK11: 200 OK (PRACK)12: 200 OK (PRACK)13: ANM14: 200 OK (INVITE)16: ACK17: ACKTalking8: BYE8: BYE8: REL9: 200 OK9: 200 OK9: RLC SIP用户用户-
19、PSTN用户用户(采用采用Profile B)流程说明流程说明当被叫用户为PSTN 用户时,由被叫端局提供回铃音,因此要求临时响应可靠传送此时主叫用户发送的INVITE 的Supported 域中,必须带有100 rel 参数被叫用户发送的18*消息的Require 域中,必须带有100 rel 参数此时被叫软交换接收到ACM 的BCI 为“用户空”且OBCI为“带内音或适当的码型目前可用” ,被叫软交换后向发送带有SDP 的180 消息LOG:sip-pstn(180)SIP User 2SS 2SS 1PSTN User 11: INVITE SDP2: 100 Trying3: INVI
20、TE SDP4: 100 Trying5: IAM6: ACM7: 183 Ringing SDP8: 180 Ringing SDP9: PRACK10: PRACK11: 200 OK (PRACK)12: 200 OK (PRACK)建立后向通道,播放语音通知被叫忙被叫忙 如果ACM 消息中BCI 为非,则软交换机1 应当生成183消息发送到软交换机2,否则为180。此时应该为183如果ACM 消息中OBCI 为时,则软交换机1 生成的18*消息应该带软交换机1 控制的媒体网关SDP 信息,建立后向语音通道。否则由主叫侧放音。此时由被叫放音。 主叫用户听到语音通知后,如果挂机,将会发送C
21、ancel 消息如果主叫用户没有挂机,被叫端局在一定时限后将会发送拆线信号,软交换2 根据接收到的REL 消息发送失败消息到主叫侧,结束本次呼叫 Log: sip-pstn(183).cap流程说明PSTN用户用户-SIP用户用户流程说明1.此时NNI 接口上可采用SIP 也可采用SIP-I,本流程假定 NNI接口上采用SIP2.当被叫用户为SIP 用户时,此时主叫侧提供回铃音3.Log 同sip-sip流程说明:失败信号由被叫处的网络服务器发出,log 同sip-sip被叫忙被叫忙PSTN用户用户-PSTN用用流程说明:流程说明:1. PSTN 网络侧发送IAM 消息到软交换1,请求路由2.
22、 软交换1 通过号码分析,不能够判别被叫用户为SIP 用户,因此NNI 接口上采用SIP-I 信令。此时初始发送的Invite 消息中除了封装PSTN 发送的IAM 消息外,还带有主叫侧媒体网关SDP 信息。3. 软交换1 将INVITE 消息发送到软交换24. 软交换2 通过号码分析,确认被叫用户为PSTN 用户。软交换2 提取出封装在Invite消息中的IAM 消息并结合相应的本地策略生成新的IAM 消息发送到PSTN 网络5. 被叫用户空闲。6. 软交换2 根据接收到的ACM 消息,映射成180 消息,由于此时的回铃音由被叫端局提供,因此此时180 消息中除了封装ACM 消息外,还带有被
23、叫侧媒体网关SDP 信息。7. 软交换2 将此消息发送到软交换18. 软交换1 根据接收到的180 消息,提取出ACM 消息并结合本地策略,生成新的ACM 消息,发送到主叫侧的PSTN 网络9. 由于媒体资源由后向提供,需要临时响应信号(18*)消息的可靠传送。因此软交换1 在向主叫侧发送ACM的同时向软交换2 发送确认消息,表明已收到18*消息。10. 被叫用户应答11. 软交换2 接收到被叫侧PSTN 网络发送的ANM 消息后,由于主、被叫双方已建立的通道不需要修改,此时发送的200 中只需封装ANM 消息而不需要带有SDP信息12. 软交换1 接收到200 消息后,提取出ANM 消息并结
24、合本地策略,发送到主叫侧的PSTN 网络13. 软交换1 向软交换2 发送ACK 消息,表示已收到软交换2 发送的200 消息14. 主、被叫用户间建立通话15. 一定时间后,会话结束,主叫用户挂机。主叫侧PSTN 网络向软交换1 发送REL消息16. 软交换1 接收到REL 消息后,向主叫侧发送RLC 消息;同时将REL 消息封装在BYE 消息中,发送到软交换217. 软交换2 接收到BYE 消息后,向软交换1 发送封装RLC 的200 消息;同时向被叫侧PSTN 网络发送REL 消息,同时接受被叫侧PSTN 网络发送的RLC 消息18. Log:pstn-pstn(180).cap被叫用户
25、忙被叫用户忙Log :pstn-pstn(busy ).capSIP SIP 消息消息SIP 协议是采用UTF-8 字符集来进行编码的文本协议,UTF8 的相关内容参见RFC2279 SIP 协议消息分请求请求和响应响应两类,其中请求消息由客户机发往服务器, 响应消息由服务器发往客户机。除选用的字符集以及语法定义外,请求和响应消息均采用RFC2822定义的基本格式进行编码。请求和响应消息格式由一个起始行、若干个头字段,以及一个可选的消息体组成。其中消息体为可选项, 头字段与消息体之间用空行进行分隔。请求和响应消息格式如下:SIP 消息起始行 消息头部(1 个或多个头部) CRLF (空行) 消
26、息体 起始行 消息头部 消息体1.起始行请求行/状态行 请求消息的起始行为请求行(Request-Line)。请求行的格式如下所示,由方法名、请求URL 和协议版本组成,各部分之间均用一个空格字符进行分隔。除此之外,请求行必须用回车换行(CRLF )字符表示行终结。 Request-Line = Method Request-URI SIP-Version CRLF 1)Method: 本规范共定义了6 个方法,INVITE 、ACK、CANCEL 、OPTIONS 、BYE 和REGISTER 。REGISTER 消息用于发送注册请求信息,INVITE 、ACK、CANCEL 用于建立会话连
27、接,BYE 用于终结会话连接,OPTIONS 用于查询服务器能力。本协议规定方法名必须使用大写字母。除以上6 类主要消息外,SIP 协议在其他文档中还定有若干方法实现协议扩展。2)Request-URL :指示被邀请用户的当前地址3)SIP-Version: 用于定义协议的当前版本号,本协议的版本号为SIP/2.0。 响应消息的起始行为状态行(Status-Line),状态行由协议版本、状态码和与状态码相关的文本描述组成,各个部分之间用一个空格字符进行分隔。状态行的格式如下所示: Status-Line = SIP-Version Status-Code Reason-Phrase CRLF
28、1) Status-Code (状态码):该参数为一个3 位的十进制整数,用于指示请求消息的执行响应结果。2) Reason-Phrase (原因):该参数用于对Status-Code 参数进行简单的文本描述。客户机不必检查或显示Reason-Phrase 参数。本协议共定义6 类状态码,其中状态码的第1 位数字用于指示响应类型,后两位数字表示具体响应。本协议规定状态码为“100199 ”之间的响应用“1XX” 进行标识,“200299”之间的响应用“2XX ”进行标识,依此类推。1) 1XX :临时响应,表示请求消息正在被处理。2) 2XX: 成功响应, 表示请求已被成功接收,完全理解并被接
29、受。3) 3XX: 重定向响应, 表示需采取进一步以完成该请求。4) 4XX: 客户机错误, 表示请求消息中包含语法错误信息或服务器无法完成客户机请求。5) 5XX: 服务器错误, 表示服务器无法完成合法请求。6) 6XX: 全局故障, 表示任何服务器无法完成该请求。 2. 头字段1) 头字段格式如下所示,头字段名和字段值之间用字符“:”进行分隔。field-name: field-value2)头字段常见类型 FromFrom 头字段是指示请求发起方的逻辑标识, 它可能是用户的注册地址。From 头字段包含一个URI 和一个可选的显示名称。From 头字段中必须包含一个新的由UAC 选定的“
30、tag”参数。Example: From: sip:0206663003010.37.240.88;tag=14535ToTo 头字段指定请求消息的逻辑接收者或者是用户或资源的注册地址,该地址同样是作为请求消息的目标地址。To 头字段所指示的不一定为请求消息的最终接收者。它可能包含一个SIP 或SIPS URI, 或其它的URI 方案( 如RFC2806 中的tel URL)。To 头字段中允许包含一个显示名称。请求消息的To 标签标识了一个对话中的对端,如果对话没有建立,标签就不应当出现。对话之外的请求消息中不可以包含To 标签(tag)Example:To: sip:02066620042
31、10.37.240.88ViaVia 头字段定义SIP 事务的下层(传输层) 传输协议, 并标识响应消息将要被发送的位置。只有当到达下一跳所用的传输协议被选定后,才能在请求消息中加入Via 头字段值。本协议规定,当UAC 生成请求消息时,它必须在其中插入一个Via 头字段。Via 头字段的协议名称和协议版本必须分别为“SIP ”和“2.0”。Example: Via: SIP/2.0/UDP 10.37.240.200:5060;branch=z9hG4bK114246375 Contact Contact 头字段指定一个SIP 或SIPS URI ,后续请求可以用它来联系到当前UA。, 该头
32、字段中只能含有一个SIP 或SIPS URI 。Contact 的作用范围是全局的。也就是说,Contact 头字段值中包含的URI 是UA 希望用来接收请求的地址,即使用在任何对话外的后续请求消息中,该URI 也必须有效Example: Contact: sip:0206663003010.37.240.200:5060Via 与与 Contact 比较:比较:1)请求消息对于B2BUA方式,Via与Contact一般是相同的,因为每下跳都是一个新的UA。对于Proxy方式,每一跳VIA都会变化,Contact不会变化UA1- PROXY- UA2VIA:ua1地址 VIA:ua1地址,PR
33、OXY地址 CONTACT: ua1地址 CONTACT: ua1地址 2)响应消息如上图,响应消息中的Via值与请求消息中的相同。UA2如果发送响应到PROXY,PROXY会判断VIA中的值里是否有自己的地址Contact值会改为发送响应的UA2的地址Max-Fowords Max-Fowords 头字段限定一个请求消息在到达目的地之前允许经过的最大跳数。它包含一个整数值,每经过一跳, 这个值就被减一。如果在请求消息到达目的地之前该值变为零,那么请求将被拒绝并返回一个483( 跳数过多)错误响应消息。UAC 必须在它发起的每个请求中都插入Max-Fowords 头字段,值为70。在任何不出现
34、回路的SIP 网络中,选择该值为70 足够大的保证一个请求消息不被丢弃,且在有回路的情况下,这个值也不会太大而过分浪费代理服务器的资源。UA 只有知道网络的拓扑结构时,才可以谨慎地选择更小的跳数值。B2BUA模式,只有一跳,所以这个值不会变化Example: Max-Forwards: 70Content-Type 消息实体的类型必须由“Content-Type” 字段进行定义,且如果消息实体采用了压缩编码方式,则相应地应在“Content-Encoding ”字段中定义其所采用的压缩编码算法。否则,如果消息实体未采用了压缩编码方式,则“Content-Encoding ”字段的内容应被忽略。
35、在具体应用过程中,消息接收实体应将消息实体的内容作为“Content-Type ”头字段值来对待。Example:Content-Type: application/sdp常见类型:1.消息体中只带SDP, Content-Type :application/sdp2.消息体中只带ISUP,Content-Type :application/ISUP3.消息体中带SDP和ISUP, Content-Type :multipart/mixedContent消息实体的长度由“Content-Length” 头字段进行定义,单位为字节 Example: Content-Length: 2183)消息实体4)消息实体为可选项5)消息实体的类型必须由“Content-Type” 字段进行定义 6)消息实体的长度由“Content-Length” 头字段进行定义 7)有关Content-Type和Content-Length头字段,参加上面关于头字段的定义Thanks!演讲完毕,谢谢观看!