1.SIP在基本呼叫中的应用
我们以两个SIP用户参与的呼叫为例,说明基本呼叫过程,如图2-32所示。
1)用户A向软交换呼叫中心1发起呼叫请求。
INVITEsip:801010600002@l.1.1.1:5060 SIP/2.0
Via:SIP/2.0/UDP1.1.1.100:5060;branch=z9hG4bK020836764600000
〃用户终端A生成的地址,确保后续响应消息按照原有路径返回//
From:801020800001<sip:801020800001@1.1.1.1:5060>;tag=22af9be9dleac27
〃主叫用户账号,tag参数由主叫侧生成//
To:sip:801010600002@1.1.1.1:5060
//被叫用户账号//
Call-ID:e9aedcbl52bbel903ddd5eed2bllla71@l.l.1.100
图2-32SIP在基本呼叫中的应用
〃呼叫标识//
CSeq:1 INVITE
〃分为两部分,前一部分是一个整数,表明消息序列;后一部分表示消息模式〃
Max-foward:70
Contact:801020800001<sip:801020800001@1.1.1.100:5060>
〃主叫用户当前的地址〃
Content-Type:application/sdp
〃消息体采用SDP进行描述//
Content-Length:222
〃消息体的长度为222个字节,以下内容为SDP内容〃
v=0
o=80102080000128908445262890844526 IN IP41.1.1.100
〃表示主叫侧的相关信息〃
s=-
c=INIP41.1.1.100
〃主叫侧进行媒体流建立的地址//
t= 0 0
m=audio 49172 RTP/AVP 0
〃本次会话媒体流采用G.711编码方式,端口号采用49172//
a=rtpmap:0 PCMU /8000
2)软交换呼叫中心1接收到请求后,生成100消息,发送给用户A,表示正在对收到的请求进行处理(生成100Trying消息)。
SIP/2.0 100 Tying
Via:SIP/2.0/UDP1.1.1.100:5060;branch=z9hG4bK020836764600000
From:801020800001<sip:801020800001@1.1.1.1:5060>;tag=22af9be9dleac27
To:sip:801010600002@l.1.1.1:5060
Call-ID:e9aedcb152bbe1903ddd5eed2b1lla71@1.1.1.100
CSeq:1 INVITE
Content-Length:0
3)软交换呼叫中心1经过路由分析后将请求转发到软交换呼叫中心2(转发INVITE消息)。
INVITE sip:801010600002@2.2.2.2:5060SIP/2.0
Via:SIP/2.0/UDPl.Ll.l:5060;branch=gdasdd00023324334
〃软交换呼叫中心1将自己的地址添加在Via域中//
Via:SIP/2.0/UDP1.1.1.100:5060;branch=z9hG4bK020836764600000
From:801020800001<sip:801020800001@l.l.l.l:5060>;tag=22af9be9dleac27
To:sip:801010600002@1.1.1:5060
Call-ID:e9aedcbl52bbel903ddd5eed2bllla71@1.1.1.100
CSeq:1 INVITE
Max-forward:69
〃经过软交换呼叫中心1后,该值将会减1〃
Contact:801020800001<sip:801020800001@1.1.1.100:5060>
Record-route:<sip:1.1.1.1;lr>
〃为了保证终端的后续请求消息例如ACK、BYE消息经过软交换呼叫中心1,软交换呼叫中心1增加该域//
Content-Type:application/sdp
Content-Length:222
v=0
o=80102080000128908445262890844526 IN IP41.1.1.100
s=-
c=INIP41.1.1.100
t=00
m=audio49172RTP/AVP0
a=rtpmap:OPCMU/8000
4)软交换呼叫中心2向软交换呼叫中心1发送100Trying确认消息,表示正在处理请求。
5)软交换呼叫中心2将请求转发到用户C。
INVITEsip:801010600001@2.2.2.200:5060SIP/2.0
Via:SIP/2.0/UDP2.2.2.2:5060;branch=sdfasdfsdf9898709
〃软交换呼叫中心2将自己的地址添加在Via域中〃
Via:SIP/2.0/UDP1.1.1.1:5060;branch=gdasdd00023324334
Via:SIP/2.0/UDP1.1.1.100:5060;branch=z9hG4bK020836764600000
From:801020800001<sip:801020800001@l.l.l.l:5060>;tag=22af9be9dleac27
To:sip:801010600002@l.1.1.1:5060
Call-ID:e9aedcbl52bbel903ddd5eed2bllla71@l.l.1.100
CSeq:1 INVITE
Max-forward:68
〃经过软交换呼叫中心2后,减1〃
Contact:801020800001<sip:801020800001@1.1.1.100:5060>
Record-route:<sip:2.2.2.2;lr>
//软交换呼叫中心2增加的地址,确保后续请求消息经过软交换呼叫中心2)
Record-route:<sip:1.1.1.1;lr>
Content-Type:application/sdp
Content-Length:222
v=0
o=801020800001 2890844526 2890844526 IN IP41.1.1.100
s=-
c=IN IP41.1.1.100
t=0 0
m=audio 49172RTP/A VP 0
a=rtpmap:0PCMU/8000
6)用户C振铃(回铃音由主叫方本地放送)。用户C向软交换呼叫中心2发送180消息。
SIP/2.0180Ringing
Via:SIP/2.0/UDP2.2.2.2:5060;branch=sdfasdfsdf9898709
Via:SIP/2.0/UDP1.1.1.1:5060;branch=gdasdd00023324334
Via:SIP/2.0/UDP1.1.1.100:5060;branch=z9hG4bK020836764600000
From:801020800001<sip:801020800001@1.1.1.1:5060>;tag=22af9be9dleac27
To:sip:801010600002@1.1.1.1:5060
Call-ID:e9aedcb152bbe1903ddd5eed2bllla71@l.l.l.l00
CSeq:1 INVITE
Content-Length:0
7)软交换呼叫中心2向软交换呼叫中心1转发180消息。
8)软交换呼叫中心1向用户A转发180消息。由于180消息没有SDP信息,因此此时主叫用户听到的回铃音由主叫终端提供。
9)用户C摘机。用户C向软交换呼叫中心2发送200消息。
SIP/2.0 200OK
Via:SIP/2.0/UDP2.2.2.2:5060;branch=sdfasdfsdf9898709
Via:SIP/2.0/UDP1.1.1.1:5060;branch=gdasdd00023324334
Via:SIP/2.0/UDP1.1.1.100:5060;branch=z9hG4bK020836764600000
From:801020800001<sip:801020800001@1.1.1.1:5060>;tag=22af9be9dleac27
To:sip:801010600002@1.1.1.1:5060;tag=568549reter9998
//TO域中带有tag参数,主被叫间建立Dialog//
Call-ID:e9aedcbl52bbel903ddd5eed2blUa71@1.1.1.100
CSeq:1 INVITE
Contact:801010600002<sip:801010600002@2.2.2.200:5060>
〃被叫用户的连接地址〃
Record-route:<sip:2.2.2.2;lr>
Record-route:<sip:1.1.1.1;lr>
Content-Type:application/sdp
Content-Length:200
(以下内容为SDP信息)
v=0
o=80101060000228908445262890844526 IN IP4 2.2.2.200
s=-
c=INIP42.2.2.200
〃被叫用户处连接媒体的地址〃
t=0 0
m=audio 9000 RTP/A VP 0
//确认编码方式为G.71L被叫侧的媒体流的端口地址为9000〃
a=rtpmap:0PCMU/8000
10)软交换呼叫中心2向软交换呼叫中心1转发200消息。
11)软交换呼叫中心1向用户A转发200消息。
12)用户A收到200消息后发送ACK确认信号,表示收到200消息。
ACK 801010600002@2.2.2.200:5060 SIP/2.0
Via:SIP/2.0/UDP1.1.1.100:5060;branch=z9hG4bK020836764600000
From:801020800001<sip:801020800001@1.1.1.1:5060>;tag=22a»be9dleac27
To:sip:801010600002@l.l.l.l:5060;tag=568549reter9998
Call-ID:e9aedcbl52bbel903ddd5eed2bllla71@1.1.1.100
CSeq:1ACK
Maxforward:70
Contact:801020800001<sip:801020800002@1.1.1.100:5060>
Route:<sip:l.l.l.l;lr>
//消息将经过软交换呼叫中心1//
Route:<sip:2.2.2.2;lr>
Content-Length:0
13) 软交换呼叫中心1、软交换呼叫中心2将此信号转发给用户C。
14) 主叫用户挂机,向软交换呼叫中心1发送BYE消息。
BYE801010600002@2.2.2.200:5060SIP/2.0
Via:SIP/2.0/UDP1.1.1.100:5060;branch=z9hG4bK020836764600000
From:801020800001<sip:801020800001@L1.1.1:5060>;tag=22af9be9dleac27
To:sip:801010600002@l.l.l.l:5060;tag=568549reter9998
Call-ID:e9aedcbl52bbel903ddd5eed2bllla71@1.1.1.100
CSeq:2BYE
〃该消息为主叫用户发送的第二个请求消息,消息序列增加1。实际上ACK也属于请求消息,但在处理上比较特殊〃
Maxforward:70
Route:<sip:l.l.l.l;lr>
//BYE消息将经过软交换呼叫中心1//
Route:<sip:2.2.2.2;lr>
Content-Length:0
15)软交换呼叫中心1、软交换呼叫中心2将此信号转发给用户C。
16)被叫用户发送200确认信号表示收到拆线信号。
SIP/2.0200 OK
Via:SIP/2.0/UDP2.2.2.2:5060;branch=sdfasdfsdf9898709
Via:SIP/2.0/UDP1.1.1.1:5060;branch=gdasdd00023324334
Via:SIP/2.0/UDP1.1.1.100:5060;branch=z9hG4bK020836764600000
From:801020800001<sip:801020800001@1.1.1.1:5060>;tag=22af9be9dleac27
To:sip:801010600002@1.1.1.1:5060;tag=568549reter9998
Call-ID:e9aedcbl52bbe1903ddd5eed2b111a71@1.1.1.100
CSeq:2BYE
Content-Length:0
17)软交换呼叫中心2、软交换呼叫中心1将此消息转发给用户A。
18)呼叫结束。
2.SIP-I在基本呼叫中的应用
我们以两个PSTN用户参与的呼叫,来说明SIP-I的呼叫流程,如图2-33所示。
对比基本SIP信令,当软交换呼叫中心间采用SIP-I时,外观形式上的SIP消息并没有区别(例如都是INVITE、180、BYE消息等),惟一不同的是SDM的消息体中封装了ISUP信令。
当软交换呼叫中心与PSTN互连时,软交换呼叫中心需要把接收到ISUP消息映射到对应的SIP消息,同时把ISUP消息封装在SIP消息中。这里牵涉到两个过程:映射和封装。但软交换呼叫中心也并不是把所有的ISUP信息都封装:对某个ISUP消息,从消息类型字节开始封装,MTP3及其以下的字节(例如DPC、OPC、CIC等),由对端软交换呼叫中心自己生成。
图2-33SIP-I在基本呼叫中的应用
另外,PSTN域其实会产生一些跟电路域密切相关的维护消息,例如BLO、UBL等,这类消息只会影响PSTN侧,SIP域不需要有任何动作。
表2-5为ISUP信令与SIP的对应关系。
表2-5 SIP与ISUP对应关系
3.SIP在视频业务中的应用
当SIP应用在视频业务中时,SDP信息中将增加对视频属性的描述。例如,编解码的协商,最大速率的协商等等。
4.SIP重定向行为
当重定向行为发生时,SIP实体(网络实体或终端)将会发送302消息(或其他3**消息),告知对端实体一个新的地址,要求重新寻址,如图2-34所示。
图2-34 SIP重定向
5.SIP修改已建立的会话属性的应用
当呼叫建立后,主叫或被叫都可以对当前已建立的会话属性进行修改,这也是SIP的基本应用。
例如,将一个G729的会话,改变成G711的会话;将一个语音会话,改变成视频会话;将一个sendrecv的会话,改变成sendonly或recvonly的会话,典型应用就是呼叫保持业务。
例如,将一个G729的会话,改变成G711的会话;将一个语音会话,改变成视频会话;将一个sendrecv的会话,改变成sendonly或recvonly的会话,典型应用就是呼叫保持业务。
UA通过再次发送INVITE消息完成这些行为(区别于初始INVITE消息,此时的INVITE消息一般称为re-INVITE消息)。