('SIP介绍目录1、SIP的提出和发起2、SIP协议的功能概述3、SIP协议所使用的环境及其运行的网络构成4、SIP协议消息的格式与操作5、SIP协议的应用实例6、SIP协议消息的可靠性机制7、B100中SIP具体工作一、SIP的提出和发起1.SIP(SessionInitiationProtocol,会话发起协议)的引入:\uf06cIETF提出的IP电话信令协议\uf06c解决IP网中的信令控制,以及同Softswitch的通信如图:2.H.323和SIP的比较:相同点:\uf06c均为多媒体通信的应用层控制(信令)协议,目前一般用于IP电话\uf06c能实现的信令控制功能基本相同\uf06c都利用RTP作为媒体传输的协议异同点:\uf06cH.323由ITU-T提出,采用的是传统的实现电话信令的模式,便于与传统的电话网互通;H.323协议发展得比较成熟,但相对复杂得多。\uf06cSIP由IETF提出,借鉴了其他Internet标准和协议的设计思想,SIP协议简单,采用文本方式,因而具有更好的功能扩充性和网络可扩展性,并易于实现。二、SIP协议的功能概述1、SIP协议的功能和特点:\uf06cSIP是一个客户/服务器协议\uf06c协议消息分为两类:请求和响应\uf06c协议消息的目的是:建立或终结会话\uf06c“邀请”是SIP协议的核心机制\uf06c响应消息分为两类:中间响应和最终响应\uf06c媒体类型、编码格式、收发地址等信息由SDP协议(会话描述协议)来描述,并作为SIP消息的消息体和头部一起传送,因此,支持SIP的网元和终端必须支持SDP\uf06c采用SIPURL的寻址方式,特别地,其用户名字段可以是电话号码,以支持IP电话网关寻址,实现IP电话和PSTN的互通\uf06cSIP的最强大之处就是用户定位功能,用户定位基于登记和DNS机制\uf06cSIP独立于低层协议,可采用不同的传送层协议,若采用UDP传送,要求响应消息沿请求消息发送的同样路径回送;若采用TCP传送,则同一事务的请求和响应需在同一TCP连接上传送总之,SIP主要支持以下5个方面的功能:\uf06c用户定位:确定通信所用的端系统位置。\uf06c用户能力交换:确定所用的媒体类型和媒体参数。\uf06c用户可用性判定:确定被叫方是否空闲和是否愿意加入通信。\uf06c呼叫建立:邀请和提示被叫,在主被叫之间传递呼叫参数。\uf06c呼叫处理:包括呼叫终结和呼叫转交。2、SIPURL结构:\uf06cURL格式:SIP:用户名:口令@主机:端口;传送参数;用户参数;方法参数;生存期参数;服务器地址参数。\uf06cURL形式:USER@HOST;\uf06c用途:代表主机上的某个用户,可指示From,To,RequestURI,Contact等SIP头部字段。URL应用举例:Sip:j.doe@big.comSip:j.doe:secret@big.com;transport=tcp;subject=projectSip:+1-212-555-1212:1234@gateway.com;user=phoneSip:alice@10.1.2.3Sip:alice@registar.com;method=REGISTER3、SDP(SessionDescriptionProtocol,参见RFC2327)会话描述协议简介:\uf06c描述会话信息的协议,包括会话的地址、时间、媒体和建立等信息SDP描述的内容应包括:\uf06c会话名和目的\uf06c会话激活的时间段\uf06c构成会话的媒体\uf06c接收这些媒体所需的信息(地址、端口、格式)\uf06c会话所用的带宽信息(任选)\uf06c会话负责人的联系信息(任选)SDP的会话描述:格式:=规则:type为单个字符,区分大小写value为结构化文本‘=’两侧无空格一个会话级描述,从v=开始若干媒体级描述,从m=开始SDP的会话级描述:v=(protocolversion)o=(owner/creatorandsessionidentifier).s=(sessionname)i=(sessioninformation)u=(URIofdescription)e=(emailaddress)p=(phonenumber)c=(connectioninformation-notrequiredifincludedinallmedia)b=(bandwidthinformation)z=(timezoneadjustments)k=(encryptionkey)a=(zeroormoresessionattributelines)SDP的媒体级描述:m=(medianameandtransportaddress)i=(mediatitle)c=(connectioninformation-optionalifincludedatsession-level)b=(bandwidthinformation)k=(encryptionkey)a=(zeroormoremediaattributelines)SDP描述举例:v=0(版本为0)o=bell536557652353687637INIP4128.3.4.5(会话源:用户名bell,会话标识53655765,版本2353687637,网络类型internet,地址类型Ipv4,地址128.3.4.5)s=Mr.Watson,comehere.(会话名:Mr.Watson,comehere.)i=ASeminaronthesessiondescriptionprotocol(会话信息:)t=31493286000(起始时间:t=3149328600(NTP时间值),终止时间:无)c=INIP4kton.bell-tel.com(连接数据:网络类型internet,地址类型Ipv4,连接地址kton.bell-tel.com)m=audio3456RTP/AVP0345(媒体格式:媒体类型audio,端口号3456,传送层协议RTP/AVP,格式列表为0345)a=rtpmap:0PCMU/8000(净荷类型0,编码名PCMU,抽样速度为8kHZ)a=rtpmap:3GSM/8000(净荷类型3,编码名GSM,抽样速度为8kHZ)a=rtpmap:4G723/8000(净荷类型4,编码名G723,抽样速度为8kHZ)a=rtpmap:5DVI4/8000(净荷类型5,编码名DVI4,抽样速度为8kHZ)总之,SDP有如下的特点:\uf06c描述会话信息的协议\uf06c与具体的传输协议无关\uf06c文本形式,格式要求严格\uf06c包含会话级描述和媒体级描述\uf06c可扩展三、SIP协议所使用的环境及其运行的网络构成\uf06cSoftswitch的软件模块结构(环境1):略\uf06c基于SIP的IP网络电话系统所用的协议栈(环境2):SIP协议运行的网络构成:\uf06cSIP终端系统包括用户代理客户机(UAC)和用户代理服务器(UAS)\uf06c代理服务器(Proxyserver):完成SIP消息的转接、转发功能。在转发请求之前,它可能改写原请求消息中的内容。\uf06c重定向服务器(redirectserver):接收SIP请求,把请求中的原地址映射为零个或多个地址,返回给客户机,客户机根据此地址重新发送请求。\uf06c登记服务器(registrarserver):接收客户机的注册请求,完成用户地址的注册。网络构成1:网络构成2:四、SIP协议消息的格式与操作SIP消息的一般格式:SIP消息=起始行/状态行消息头部(1个或多个头部)CRLF(空行)〖消息体〗1、SIP协议消息的主要头部字段:\uf06cFrom:所有请求和响应消息必须包含此字段,以指示请求的发起者。服务器将此字段从请求消息复制到响应消息。该字段的一般格式为:From:显示名〈SIPURL〉;tag=xxxFrom字段的示例有:From:”A.G.Bell”\uf06cTo:该字段指明请求的接收者,其格式与From相同,仅第一个关键词代之以To。所有请求和响应都必须包含此字段。\uf06cCallID:该字段用以唯一标识一个特定的邀请或标识某一客户的所有登记。用户可能会收到数个参加同一会议或呼叫的邀请,其CallID各不相同,用户可以利用会话描述中的标识,例如SDP中的o(源)字段的会话标识和版本号判定这些邀请的重复性。该字段的一般格式为:CallID:本地标识@主机,其中,主机应为全局定义域名或全局可选路IP地址。CallID的示例可为:CallID:19771105@foo.bar.com\uf06cCseq:命令序号。客户在每个请求中应加入此字段,它由请求方法和一个十进制序号组成。序号初值可为任意值,其后具有相同的CallID值,但不同请求方法、头部或消息体的请求,其Cseq序号应加1。重发请求的序号保持不变。ACK和CANCEL请求的Cseq值与对应的INVITE请求相同,BYE请求的Cseq值应大于INVITE请求,由代理服务器并行分发的请求,其Cseq值相同。服务器将请求中的Cseq值复制到响应消息中去。Cseq的示例为:Cseq:4711INVITE\uf06cVia:该字段用以指示请求经历的路径。它可以防止请求消息传送产生环路,并确保响应和请求的消息选择同样的路径。该字段的一般格式为:Via:发送协议发送方;参数其中,发送协议的格式为:协议名/协议版本/传送层,发送方为发送方主机和端口号。Via字段的示例可为:Via:SIP/2.0/UDPfirst.example.com:4000\uf06cContact:该字段用于INVITE、ACK和REGISTER请求以及成功响应、呼叫进展响应和重定向响应消息,其作用是给出其后和用户直接通信的地址。Contact字段的一般格式为:Contact:地址;参数其中,Contact字段中给定的地址不限于SIPURL,也可以是电话、传真等URL或mailto:URL。其示例可为:Contact:”Mr.Watson”2、请求消息的格式与操作:SIP请求消息起始行=方法_请求URI_SIP版本号CRLF\uf06c方法全大写\uf06c请求URI:被邀用户的当前地址,不含传送参数,生存期和多播地址\uf06cSIP版本,目前为SIP/2.0SIP请求消息的操作共有以下几种请求方法:\uf06cINVITE-用来邀请用户或应用程序加入某会话。\uf06cACK-用于证实UAC已收到对于INVITE请求的最终响应,和INVITE消息配套使用。\uf06cOPTIONS-用于询问服务器能力。\uf06cBYE-USERAGENT用此方法指示释放呼叫。\uf06cCANCEL-该方法用于取消一个尚未完成的请求,对于已完成的请求则无影响。\uf06cREGISTER-客户使用该方法在服务器上登记列于To字段中的地址。用户代理在启动时向地址’Sip.macst.net’(224.0.1.75)发送REGISTER请求,以完成至本地服务器的登记。\uf06cINFO–传递控制信息SIP请求消息举例:C->S:INVITEsip:Watson@Boston.bell-tel.comSIP/2.0Via:SIP/2.0/UDPkton.bell-tel.comFrom:A.BellTo:T.WatsonCall-ID:662606876@kton.bell-tel.comCSeq:1INVITEContact:Subject:Mr.Watson,comehere.Content-Type:application/sdpContent-Length:...v=0o=bell536557652353687637INIP4128.3.4.5s=Mr.Watson,comehere.c=INIP4kton.bell-tel.comm=audio3456RTP/AVP03453、响应消息的格式与意义:状态行=SIP版本_状态码_原因短语。\uf06c最终响应和非最终响应\uf06c状态码可扩展\uf06c原因短语给出简短的文字描述状态码共分六类:\uf06c1xx:Informational–请求建立的呼叫正在处理;\uf06c2xx:Success–所请求的动作已成功收到、理解和接受;\uf06c3xx:Redirection–需进行进一步的处理来完成该请求;\uf06c4xx:ClientError–请求中包含错误文法或服务器不能完成;\uf06c5xx:ServerError–服务器由于某些原因未能支持一个正确的请求;\uf06c6xx:GlobalFailure–该请求在任何服务器上都不能得到支持。SIP响应消息状态码举例:100Trying181CallIsBeingForwarded182Queued200OK301MovedPermanently302MovedTemporarily400BadRequest404NotFound405NotAllowed500InternalServerError504GatewayTime-out600BusyEverywhereSIP响应消息举例:S->C:SIP/2.0200OKVia:SIP/2.0/UDPkton.bell-tel.comFrom:A.BellTo:;tag=37462311Call-ID:662606876@kton.bell-tel.comCSeq:1INVITEContact:sip:Watson@Boston.bell-tel.comContent-Type:application/sdpContent-Length:...v=0o=Watson48589494858949INIP4192.1.2.3s=I\'monmywayc=INIP4Boston.bell-tel.comm=audio5004RTP/AVP03五、SIP协议的应用实例六、SIP协议消息的可靠性机制1、对于INVITE/ACK请求、响应消息的可靠性机制:a)基于不可靠传送协议(如UDP)——请求消息的可靠性机制\uf06c采用重发机制\uf06c每次重发的间隔时间成指数增长,设其初始间隔时间为T1,则下一间隔时间为2T1,依此类推…\uf06c当客户机收到中间响应、最终响应时,或当它共重发了七次请求消息后,客户机停止重发请求消息b)基于不可靠传送协议(如UDP)——响应消息的可靠性机制\uf06c采用重发机制\uf06c若为中间响应,则在收到重发的请求消息后重发该响应;若为最终响应,则每次重发的间隔时间成指数增长,设其初始间隔时间为T1,则下一间隔时间为2T1,依此类推…,直至T2为止\uf06c当服务器收到ACK请求时,或当它共重发了七次响应消息后,服务器停止重发响应消息c)基于可靠传送协议(如TCP)——请求消息的可靠性机制\uf06c若客户机在规定的时间内未收到任何响应,则它放弃该请求消息。d)基于可靠传送协议(如TCP)——响应消息的可靠性机制\uf06c采用重发机制\uf06c若为中间响应,则在收到重发的请求消息后重发该响应;若为最终响应,则每次重发的间隔时间成指数增长,设其初始间隔时间为T1,则下一间隔时间为2T1,依此类推…,直至T2为止\uf06c当服务器收到ACK请求时,或当它共重发了七次响应消息后,服务器停止重发响应消息2、对于其他请求、响应消息的可靠性机制:a)基于不可靠传送协议(如UDP)——请求消息的可靠性机制\uf06c采用重发机制\uf06c每次重发的间隔时间成指数增长,设其初始间隔时间为T1,则下一间隔时间为2T1,依此类推…,直至T2为止,此后重发请求消息的间隔时间均为T2,T1、T2的缺省值分别为500ms和4s\uf06c客户机收到中间响应后,其重发请求消息的间隔时间为T2\uf06c当客户机收到最终响应时,或当它共重发了11次请求消息后,客户机停止重发请求消息b)基于不可靠传送协议(如UDP)——响应消息的可靠性机制\uf06c采用重发机制\uf06c服务器收到重发的请求消息后重发该响应\uf06c当服务器发送出最终响应后,由于它不能确定客户机是否收到了该响应,因而该响应消息至少应被保存10T2秒c)基于可靠传送协议(如TCP)\uf06c若客户机在规定的时间内未收到任何响应,则它放弃该请求消息。七、B200中SIP模块所做的工作1、IP、Port转换转换协议和媒体中相关IP地址和Port。2、链路检测功能SIP终端如果放在NAT后面,则SIP终端必须对BGW发出的OPTIONS消息产生回应。目的:保活NAT上打开的信令端口。3、信令跟踪2516:”sip”or2516:”号码@BGW内口IP地址”4、终端配置sip终端上配置的Proxy(SS地址)为BGW内口地址。5、注意事项目前部分高版本NAT设备,已能够支持SIP协议穿越。如果放在BGW下,需要关掉NAT上的SIP穿越功能。举例:sip终端注册过程:BGW内口地址BGW>序号:211时间:09:52:58.00收到IAD发BGW>REGISTERsip:210.51.195.19SIP/2.0Via:SIP/2.0/UDP192.168.1.118:4002;branch=z9hG4bK26e662caTo:"2569020"From:"2569020";tag=7601a8c0-27859Call-ID:0cd25fcd-7601a8c0@192.168.1.118CSeq:24428REGISTERContact:Expires:3600Max-Forwards:70User-Agent:ZTEMULTIMEDIASIPPHONE/V1.004-01-10BGW>序号:212时间:09:52:58.00向SS发送GW>REGISTERsip:10.41.6.1SIP/2.0Via:SIP/2.0/UDP10.41.6.20:5060Via:SIP/2.0/UDP192.168.1.118:4002;received=24.228.4.173;branch=z9hG4bK26e662caTo:"2569020"From:"2569020";tag=7601a8c0-27859Call-ID:0cd25fcd-7601a8c0%40192.168.1.118@10.41.6.20CSeq:24428REGISTERContact:Expires:3600Max-Forwards:70User-Agent:ZTEMULTIMEDIASIPPHONE/V1.004-01-10BGW>序号:213时间:09:52:58.00收到SS发薆GW>SIP/2.0200OKVia:SIP/2.0/UDP10.41.6.20:5060Via:SIP/2.0/UDP192.168.1.118:4002;received=24.228.4.173;branch=z9hG4bK26e662caTo:"2569020"From:"2569020";tag=7601a8c0-27859Call-ID:0cd25fcd-7601a8c0%40192.168.1.118@10.41.6.20CSeq:24428REGISTERContact:;expires=3600Date:Mon,19Jan200409:52:55GMTBGW>序号:214时间:09:52:58.00向IAD发送BGW>SIP/2.0200OKVia:SIP/2.0/UDP192.168.1.118:4002;received=24.228.4.173;branch=z9hG4bK26e662caTo:"2569020"From:"2569020";tag=7601a8c0-27859SS地址BGW外口地址Call-ID:0cd25fcd-7601a8c0@192.168.1.118CSeq:24428REGISTERContact:;expires=3600Date:Mon,19Jan200409:52:55GMT呼叫:INVITEsip:7980055@221.11.11.2SIP/2.0Via:SIP/2.0/UDP10.92.11.27:5060;branch=z9hG4bK274344685From:;tag=1157089459To:Call-ID:135771732@10.92.11.27CSeq:1INVITEContact:max-forwards:10user-agent:WaterTek/UA-1.0Content-Type:application/sdpContent-Length:229v=0o=7980057123456654321INIP410.92.11.27s=Watertekphoneu=sip:7980057@221.11.11.2c=INIP410.92.11.27t=00m=audio2012RTP/AVP084a=rtpmap:0PCMU/8000a=rtpmap:8PCMA/8000a=rtpmap:4G723/8000a=ptime:20SIP/2.0200OKVia:SIP/2.0/UDP10.92.11.27:5060;branch=z9hG4bK274344685To:"7980055";tag=9ff3af37-6f27-ab02-fc5c-c70cc525d5b2From:"7980057";tag=1157089459Call-ID:135771732@10.92.11.27CSeq:1INVITEContact:Allow:INVITE,ACK,CANCEL,BYE,NOTIFY,REFER,OPTIONS,INFO,SUBSCRIBERecord-Route:Record-Route:User-Agent:GrandstreamSIPUA1.0.4.17Content-Type:application/sdpContent-Length:133私有媒体信息,需要变换v=0o=798005500INIP410.92.11.18s=-c=INIP4221.11.11.31t=00m=audio10234RTP/AVP0a=rtpmap:0PCMU/8000a=ptime:20附录:SIP常见故障分类故障现象级别可能原因处理方法备注注册sip终端注册失败严重1.终端上配置的帐号与SS上配置的不一致2.终端上配置的Proxy地址不是BGW内口地址3.网络不通畅1.修改终端或SS上的帐号配置2.设置正确的Proxy地址3.检查网络呼叫失败信令不通严重1.信令跟踪发现,信令在终端与SS之间没有正确传递,数据配置地址错误2.存在NAT的情况下,链路检测功能没有打开1.检查BGW转换后的消息中,IP地址是否正确,检查数据配置2.打开链路检测功能,以保活NAT端口呼叫失败消息没有被BGW转发严重1.消息没有到达BGW2.消息中解码SDP可能失败3.注册信息被删除1.终端上的Proxy地址是否设置正确2.信令跟踪,抓包分析3.分析删除原因,是否存在链路检测失败话路单通/全不通严重1.网络2.SDP媒体信息不全1.检查网络2.分析媒体包吊死端口资源没有释放严重1.没有挂机(释放)消息,如BYE,Cancel网络质量差,丢失挂机消息或终端异常没有发出挂机消息链路检测用户注册信息被删除一般1.用户终端长时间没有响应2.终端不支持OPTIONS消息3.NAT设备过滤SIP消息1.检查网络质量2.在BGW上设置参数:没有NAT的情况下,停止链路检测3.终端要能对OPTIONS产生回应私有媒体信息,需要变换SIP介绍的回顾1、SIP的提出和发起2、SIP协议的功能概述3、SIP协议所使用的环境及其运行的网络构成4、SIP协议消息的格式与操作5、SIP协议的应用实例6、SIP协议消息的可靠性机制7、B200中SIP具体工作',)