https://www.freesion.com/article/65771378600/ 转载自 https://www.freesion.com/article/65771378600/, 感谢那位博主。
LTE语音业务-VOLTE
标签: volte
本文简单记录下VOLTE相关知识与其注册流程
一.VOLTE 处理流程
1.终端用户与网络都需要了解对方的volte能力,这个我们以前lte 附着时已经介绍过来,相关信息在attach req中。
2.建立IMS承载,在建立lte默认承载之后,需要建立IMS承载,apn为ims
3.向IMS域发起注册。
4.注册成功后,进行相关业务流程了。
这里贴出相关log介绍
建立默认承载(cmnet)
之后建立ims 专用承载
ims专用承载建立成功之后,既可以向ims域发起ims注册了。
二.IMS相关知识
ims域结构可以分为三层,应用,控制和接入层。这里主要说下控制层的网元,对后面学习sip协议有点作用。
ims控制层有三大网元组成,分别为P-CSCF,I-CSCF,S-CSCF,下面为各自作用。
名称 | 作用 |
---|---|
P-CSCF | volte与控制层接口 |
I-CSCF | 负责分配信令到不同的S-CSCF中 |
S-CSCF | 处理不同的信令业务 |
关于ims注册,使用的sip协议,也必须知道sip网络服务器,所谓sip协议有下面三个特点,类似于http。
1.消息组成为文本
2.|先有请求消息,再有响应。
3.C/S架构
这里有引出了sip 网络服务器(sip终端为 UA)
服务器名称 | 功能 |
---|---|
代理服务器 | 为主叫与被叫UA转发信令 |
定位服务器 | 取得UA信息 |
重定向服务器 | 定向到代理服务器 |
注册服务器 | UA在sip网络中的注册 |
这里UA 与网络服务器,网络服务器之间均使用sip协议进行通信
三. SIP协议消息
VOLTE业务中常见的请求消息
基本请求 | 名称 |
---|---|
INVITE | 启呼 |
REGISTER | 注册 |
OPTIONS | 选项 |
IACK | 确认 |
BYE | 挂机 |
CANCEL | 取消 |
响应消息
响应 | 功能 |
---|---|
1XX | 临时性响应 |
2XX | 成功响应 |
3XX | 重定向响应 |
4XX | 客户端失败响应 |
5XX | 服务器失败响应 |
6XX | 全局失败响应 |
volte中常见的sip响应列表
响应编号 | 名称 | 说明 |
---|---|---|
100 | Trying | 收到请求,处理中 |
180 | Ringing | 被叫振铃 |
183 | Session Progress | 呼叫进行中 |
200 | OK | 成功 |
401 | Unauthorized | 未授权,第一次注册ims域时遇到 |
404 | Not Found | 没找到 |
486 | Busy Here | 被叫正忙 |
sip消息结构=起始行+消息头+消息体
主要消息体不一定存在。
下面分别接受请求消息与相应消息已注册sip网络消息为例
请求消息
-
07:42:26.436 [0x156E] IMS SIP Message
-
Version = 1
-
Version 1 {
-
Direction = UE_TO_NETWORK
-
SDP Presence = 0
-
SIP Call ID Length = 62
-
SIP Message Length = 1606
-
SIP Message Logged Bytes = 1607
-
Message ID = IMS_SIP_REGISTER
-
Response Code = INFORMAL_RESPONSE (0)
-
CM Call ID = 255
-
SIP Call ID = 2401194090_2268498504@2409:8804:8015:3c90:609e:ae2c:9c42:1785
-
Sip Message = REGISTER sip:ims.mnc002.mcc460.3gppnetwork.org SIP/2.0 //起始行
-
//消息头
-
f: <sip:460020823681380@ims.mnc002.mcc460.3gppnetwork.org>;tag=2401194103 //呼叫发起方的IMPI(volte 用户唯一公开标识)
-
t: <sip:460020823681380@ims.mnc002.mcc460.3gppnetwork.org> //呼叫被叫方的IMPI(volte 用户唯一公开标识)
-
CSeq: 253710442 REGISTER //消息***
-
//回话过程唯一标识 i
-
i: 2401194090_2268498504@2409:8804:8015:3c90:609e:ae2c:9c42:1785
-
//sip消息转发者的ip地址,传输消息的传输协议与端口 v
-
v: SIP/2.0/TCP [2409:8804:8015:3c90:609e:ae2c:9c42:1785]:5060;branch=z9hG4bK1716348436
-
Max-Forwards: 70
-
Authorization: Digest //鉴权响应
-
uri="sip:ims.mnc002.mcc460.3gppnetwork.org",username="460020823681380@ims.mnc002.mcc460.3gppnetwork.org",response="",realm="ims.mnc002.mcc460.3gppnetwork.org",nonce=""
-
Expires: 600000
-
Require: sec-agree
-
Proxy-Require: sec-agree
-
k: path,sec-agree
-
Allow: INVITE,BYE,CANCEL,ACK,NOTIFY,UPDATE,PRACK,INFO,MESSAGE,OPTIONS
-
Security-Client: ipsec-3gpp; alg=hmac-md5-96; ealg=des-ede3-cbc; spi-c=3635426414; spi-s=2074953050; port-c=8003; port-s=8902,ipsec-3gpp; alg=hmac-md5-96; ealg=aes-cbc; spi-c=3635426414; spi-s=2074953050; port-c=8003; port-s=8902,ipsec-3gpp; alg=hmac-md5-96; ealg=null; spi-c=3635426414; spi-s=2074953050; port-c=8003; port-s=8902,ipsec-3gpp; alg=hmac-sha-1-96; ealg=des-ede3-cbc; spi-c=3635426414; spi-s=2074953050; port-c=8003; port-s=8902,ipsec-3gpp; alg=hmac-sha-1-96; ealg=aes-cbc; spi-c=3635426414; spi-s=2074953050; port-c=8003; port-s=8902,ipsec-3gpp; alg=hmac-sha-1-96; ealg=null; spi-c=3635426414; spi-s=2074953050; port-c=8003; port-s=8902
-
//回复消息的地址 m
-
m: <sip:[2409:8804:8015:3c90:609e:ae2c:9c42:1785]:5060>;+sip.instance="<urn:gsma:imei:86443001-000109-0>";+g.3gpp.icsi-ref="urn%3Aurn-7%3A3gpp-service.ims.icsi.mmtel";+g.3gpp.smsip;+g.3gpp.accesstype="cellular2"
-
l: 0 //消息体长度
-
-
-
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
响应消息
-
07:42:26.611 [0x156E] IMS SIP Message
-
Version = 1
-
Version 1 {
-
Direction = NETWORK_TO_UE
-
SDP Presence = 0
-
SIP Call ID Length = 62
-
SIP Message Length = 660
-
SIP Message Logged Bytes = 661
-
Message ID = IMS_SIP_REGISTER
-
Response Code = UNAUTHORIZED (401)
-
CM Call ID = 255
-
SIP Call ID = 2401194090_2268498504@2409:8804:8015:3c90:609e:ae2c:9c42:1785
-
Sip Message = SIP/2.0 401 Unauthorized //起始行
-
//消息头
-
Via: SIP/2.0/TCP [2409:8804:8015:3C90:609E:AE2C:9C42:1785]:5060;branch=z9hG4bK1716348436
-
Call-ID: 2401194090_2268498504@2409:8804:8015:3c90:609e:ae2c:9c42:1785
-
From: <sip:460020823681380
-
To: <sip:460020823681380
-
CSeq: 253710442 REGISTER
-
//鉴权参数
-
WWW-Authenticate: Digest realm="ims.mnc002.mcc460.3gppnetwork.org",nonce="GNESBD1C3pNj5kalYNrOp1pGUAUOxgAA43j2J3G4eKw=",algorithm=AKAv1-MD5
-
Security-Server: ipsec-3gpp;alg=hmac-md5-96;prot=esp;mod=trans;ealg=null;spi-c=3141603723;spi-s=3292598667;port-c=9950;port-s=9900
-
Content-Length: 0
-
-
-
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
消息体上面消息没有携带,不做介绍了,可根据Content-Length确认。
本文最后介绍下sip注册消息流程
1.发起注册请求
2.响应
首次注册均返回401,并携带WWW-Authenticate信息给UA,UA收到重新发起注册
3.重新注册,Authorization中增加了上条返回的鉴权信息有关内容
4.注册成功,获取到IMPU