目录
目录
SIP 协议的呼叫模型图
基本呼叫建立流程
基本呼叫拆除流程
经过代理的呼叫建立流程
经过代理的呼叫拆除流程
SIP 协议在软交换 SoftX3000(华为推出的一个支持sip协议的交换机设备) 流程图
sip注册过程:
注销sip过程
使用soft3000的呼叫过程
MGC 负责将 PSTN 前向信令映射为 SIP 请求,并且将 SIP 响应映射为 PSTN 后向信令,并且应该实现 Megaco/h.248 协议以及 SIP 用户助理部分。
SIP 代理逻辑上是一个独立的实体,实现是可以作为单独的物理实体也可以与 MGC 捆绑在一起。负责转发或重定向 SIP 请求和响应。
SIP 客户是一个单独的物理实体,可以是 SIP 电话,SIP 会议终端等。
MG 负责 PSTN 域 IP 网之间媒体流的转换和转发。 MG 之间,MG 与 SIP 终端之间使用 RTP/RTCP 协议传输媒体流。 MG 与 MGC 之间使用 Megaco/h.248 协议或 MGCP 协议传输 MGC 对 MG 的 控制信息以及 MG 向 MGC 上报的通知消息。 MGC 与 SIP 代理,MGC 与 SIP 客户或者 SIP 代理之间使用 SIP 协议来传输 呼叫控制消息。
(1) 主叫摘机
(2) S1 向 MGC1 发 IAM
(3) MGC1 向 MG1 发 CreateConnection 命令
(4) MG1 在响应中返回 MG1 的 RTP/RTCP 传输地址
(5) MGC1 向 MGC2 发送 INVITE,其消息体中包含完整的 IAM 消息
(6) MGC2 收到 INVITE 向 MG2 发送 CreateConnection 命令
(7) MGC2 从 INVITE 消息中拆离 IAM,将其发送到 S2
(8) MG2 建立与 MG1 的 RTP 连接,并在确认响应中返回自己的 RTP/RTCP 传输地址
(9) MGC2 向MGC1返回100(TRYING)响应,其中包含MG2的RTP/RTCP 传输地址信息 (10) MGC1 向 MG1 发送 ModifyConnection 命令
(11) MG1 建立与 MG2 的 RTP 并且向 MGC1 返回确认消息
(12) S2 向 MGC2 发送 ACM
(13) MGC2 向 MGC1 发送 180( RINGING)响应,其消息体包含 ACM
(14) MGC1 收到 180 响应,拆离 ACM 并将其发送给 S1 (15) 被叫摘机
(16) S2 向 MGC2 发送 ANM
(17) MGC2 向 MGC1 返回 200(OK)响应,其消息体中包含 ANM
(18) MGC1 收到 200 响应,拆离 ANM 并将其发送到 S1
(19) MGC1 向 MGC2 发送 ACK
(1)用户摘机发起一路呼叫,终端代理A向该区域的代理服务器发起Invite请求;
(2)代理服务器通过认证/计费中心确认用户认证已通过后,检查请求消息中的Via头域中是否已包含其地址。若已包含,说明发生环回,返回指示错误的应答;若没有问题,代理服务器在请求消息的Via头域插入自身地址,并向Invite消息的To域所指示的被叫终端代理B传送Invite请求。
(3)代理服务器向终端代理A发送呼叫处理中的应答信息:100Trying。
(4)终端代理B向代理服务器送呼叫处理中的应答信息:100Trying。
(5)终端代理B指示被叫用户振铃,用户振铃后向代理服务器发送180Ringing振铃信息。
(6)代理服务器向终端代理A转发被叫用户振铃信息。
(7)被叫用户摘机,终端代理B向代理服务器返回表示连接成功的应答(200OK)
(8)代理服务器向终端代理A转发该成功指示(200OK)
(9)终端代理A收到信息后,向代理服务器发ACK信息进行确认
(10)代理服务器将ACK确认消息转发给终端代理B。
(11)主被叫用户之间建立通信连接,开始通话。
(1) 主叫挂机
(2) S1 向 MGC1 发送 REL
(3) MGC1 向 MG1 发 DeleteConnection 命令
(4) MG1 向 MGC1 返回 DeleteConnectionACK 响应
(5) MGC1 向 S1 发送 RLC
(6) MGC1 向 MGC2 发送 BYE 消息
(7) MGC2 向 MG2 发送 DeleteConnection 命令
(8) MG2 向 MGC2 返回 DeleteConnectionACK 响应
(9) MGC2 向 MGC1 返回 200(OK)响应
(10) MGC2 向 S2 发送 REL
(11) S2 向 MGC2 发送 RLC
(1) Caller goes off hook
(2) S1 向 MGC1 发 IAM
(3) MGC1 向 MG1 发 CreateConnection 命令
(4) MG1 在响应中返回 MG1 的 RTP/RTCP 传输地址
(5) MGC1 向 SIP 代理发送 INVITE,其消息体中包含完整的 IAM 消息
(6) SIP 代理向 MGC1 发送 INVITE,其消息体中包含完整的 IAM 消息
(7) MGC2 收到 INVITE 向 MG2 发送 CreateConnection 命令
(8) MGC2 从 INVITE 消息中拆离 IAM,将其发送到 S2
(9) MG2 建立与 MG1 的 RTP 连接,并在确认响应中返回自己的 RTP/RTCP 传输地址
(10) MGC2 向 SIP 代理返回 100(TRYING)响应,其中包含 MG2 的 RTP/RTCP 传输地址信息
(11) SIP 代理向 MGC1 返回 100(TRYING)响应,其中包含 MG2 的 RTP/RTCP 传输地址信息
(12) MGC1 向 MG1 发送 ModifyConnection 命令
(13) MG1 建立与 MG2 的 RTP 并且向 MGC1 返回确认消息
(14) S2 向 MGC2 发送 ACM
(15) MGC2 向 SIP 代理 发送 180( RINGING)响应,其消息体包含 ACM
(16) SIP 代理 向 MGC1 发送 180( RINGING)响应,其消息体包含 ACM
(17) MGC1 收到 180 响应,拆离 ACM 并将其发送给 S1
(18) 被叫摘机
(19) S2 向 MGC2 发送 ANM
(20) MGC2 向 SIP 代理返回 200(OK)响应,其消息体中包含 ANM
(21) SIP 代理向 MGC1 返回 200(OK)响应,其消息体中包含 ANM
(22) MGC1 收到 200 响应,拆离 ANM 并将其发送到 S1
(23) MGC1 向 SIP 代理发送 ACK
(1) 主叫挂机
(2) S1 向 MGC1 发送 REL
(3) MGC1 向 MG1 发 DeleteConnection 命令
(4) MG1 向 MGC1 返回 DeleteConnectionACK 响应
(5) MGC1 向 S1 发送 RLC
(6) MGC1 向 SIP 代理发送 BYE 消息
(7) SIP 代理向 MGC2 转发 BYE 消息
(8) MGC2 向 MG2 发送 DeleteConnection 命令
(9) MG2 向 MGC2 返回 DeleteConnectionACK 响应
(10) MGC2 向 SIP 代理 返回 200(OK)响应
(11) SIP 代理向 MGC1 转发 200(OK)响应
(12) MGC2 向 S2 发送 REL (13) S2 向 MGC2 发送 RLC
使用wireshark抓包得到数据
使用wireshark抓包得到数据
主叫:
被叫:
(1) A 用户拨打 B 用户号码后,A 用户向 SoftX3000 发 INVITE 的 SIP 请求;
(2) SoftX3000 受到 A 用户 INVITE 的请求后,发 100 TRYING 的 SIP 临时 响应,表示请求正在处理中;
(3) SoftX3000 认证通过后,发 407 AUTHENTICATION 消息给 A 用户,A 用户从中获得域名等信息;
(4) A 用户受到 AUTHENTICATION 消息后,向 SoftX3000 反馈 ACK 确认 消息;
(5) A 用户重发 INVITE 请求,但与原 INVITE 请求的消息内容有所区别(详 细见主要消息说明);
(6) SoftX3000 受到 A 用户的 INVITE 请求后,发 100 TRYING 的 SIP 临时 响应,表示请求正在处理中;
(7) SoftX3000 向 B 用户发 INVITE 请求,准备创建连接;
(8) B 用户受到 INVITE 请求后,向 SoftX3000 送 100 TRYING 临时响应;
(9) B 用户判断可以接受本次呼叫后,向 SoftX3000 送 180 RINGING 振铃 消息;
(10) SoftX3000 向 A 用户转发 180 RINGING 消息;
(11) B 用户摘机后向 SoftX3000 送 200 OK 消息,包含会话能力的描述等内 容;
(12) SoftX3000 向 A 用户转发该消息;
(13) A 用户向 SoftX3000 反馈 ACK 确认消息;
(14) SoftX3000 向 B 用户转发 ACK 消息;
(15) B 用户发送 OPTIONS 给 SoftX3000,通知 A 用户修改连接;
(16) SoftX3000 向 A 用户转发 OPTIONS 消息,进入通话状态
(17) B 用户挂机后向 SoftX3000 送 BYE 消息,准备删除连接;
(18) SoftX3000 向 B 用户送 200 消息,表示成功删除 B 用户到 SoftX3000 的连接;
(19) SoftX3000 向 A 用户转发 BYE 消息;
20) SoftX3000 向 A 用户送 200 消息,表示成功删除 A 用户到 SoftX3000 的连接;
注:以上消息只是 SoftX3000 对 SIP 协议处理过程,不同产品可能实现方式 不一样