玖叶教程网

前端编程开发入门

4G 高清语音(VOLTE)被叫(MT)流程

为何建立QCI =9 的默认承载

在Volte 的正常信令流程中,需要建立QCI5的专用承载(走CMNET APN,承载SIP 信令)与QCI=1的专用承载(走IMS APN 承载VoLTE 语音)。QCI =9的默认承载(走CMNET APN)一般用于承载普通的数据业务。

开关飞行模式可以看到QCI=9的默认承载建立,拆除

做volte 呼叫/开关VOlTE 开关可以看到QCI=5的默认承载的建立/释放,接通/挂断后可以看到QCI=1的默认承载的建立/释放

VoLTE MT call SIP signaling

1, NW发送SIP invite 给被叫终端。里面包含了呼叫类似是video call还是audio call(这里发起的是audio call)以及UE的一些参数等。

2, UE发给NW一个100 trying告诉发端我已经收到了正在处理,发送端计时器停止,不需要重新发请求了

3, MT 发送183 Session progress表明MT的audio codec选择以及QOS状况

4, MO端发送PRACK表明收到MT的183消息。

5, MT端发送 200 ok消息,表明183请求已经处理成功。

6, MO发送update消息包含MO的Qos状况和codec状况

7, MT发送200 OK表明update请求已经处理成功。

8, MT端振铃后,网络向MO段发送180 ringing消息。

9, MT发送200 OK表明invite消息已经处理成功。

10, MO发送ACK表明自己已经知道MT端invite请求处理成功。发完后,通话已经建立。相应的audio RTP包开始收发。

11, MT 发送bye 消息,表明终止会话

12, 收到MO 发送200 OK表明确认bye 请求,终止会话

以上信令中还有两条SIP信令:

08:26:03.071[0x1830]IMS VoLTE Session Setup \\已经接通,双方通话进行中

Version = 1
Version 1 {
Dialled String Length = 66
Dialled String = sip:460079152683570@[2409:8809:88b3:1be3:671d:8394:dcd4:5e40]:8901
Direction = MT //被叫
Call Id Length = 47
Call Id = [email protected]
Type = 0
Originating Uri Length = 66
Originating Uri = tel:13326607766;phone-context=+86;noa=subscriber;srvattri=national
Terminating Uri Length = 54
Terminating Uri = sip:+8618802535184@[2409:8019:8830:4700::6];user=phone
Result = OK
Call Setup Delay = 0
}

08:26:08.729[0x1831]IMS VoLTE Session End \\双方通话终止

Version = 1
Version 1 {
Dialled String Length = 66
Dialled String = sip:460079152683570@[2409:8809:88b3:1be3:671d:8394:dcd4:5e40]:8901
Direction = MT
Call Id Length = 47
Call Id = [email protected]
Type = 0
Originating Uri Length = 66
Originating Uri = tel:13326607766;phone-context=+86;noa=subscriber;srvattri=national
Terminating Uri Length = 54
Terminating Uri = sip:+8618802535184@[2409:8019:8830:4700::6];user=phone
End Cause = MO initiated \\由MO 侧发起挂断
Call Setup Delay = 0
}

QXDM 中信令以及代码片段

1.reboot 开机attach and pdn connect setup(data call setup)

1,2,3 条信令:请求进行联合附着(combined EPS/IMSI attach),接受,完成的过程,完成了这个过程UE 既在LTE 核心网侧进行了注册,也在UMTS 网络核心侧进行了注册,2/3/4G核心网相关网元知道了UE 的相关信息以及UE 的capability,为网络进行2/3/4G 互操作(切换,重选,csfb,srvcc等)奠定了条件。

第4条信令:请求建立IMS PDN context,qci=9默认承载建立请求附带在Attach 请求的esm_msg_container容器里,整个过程包括attach request、attach accept、attach complete 三次信令交互(如下具体)

0xB0ED LTE NAS EMM Plain OTA Outgoing Message -- Attach request Msg

msg_type = 65 (0x41) (Attach request)
lte_emm_msg \\ emm request
emm_attach_request
tsc = 0 (0x0) (cached sec context)
nas_key_set_id = 7 (0x7)
att_type = 2 (0x2) (combined EPS/IMSI attach)
esm_msg_container \\因为打开了volte 开关,要注册IMS,需建立PDN 连接,故附带了esm request msg
eps_bearer_id_or_skip_id = 0 (0x0)
prot_disc = 2 (0x2) (EPS session management messages)
trans_id = 1 (0x1)
msg_type = 208 (0xd0) (PDN connectivity request)
lte_esm_msg
pdn_connectivity_req
pdn_type = 3 (0x3) (Ipv4v6)
req_type = 1 (0x1) (initial request)
ms_netwk_cap
length = 3 (0x3)
r99 = 1 (0x1)
GEA1 bits
GEA/1 = 1 (0x1)
UE_usage_setting = 0 (0x0) (Voice centric)
voice_domain_pref_for_EUTRAN = 3 (0x3) (IMS PS Voice preferred, CS Voice as secondary)

0xB0EC LTE NAS EMM Plain OTA Incoming Message -- Attach accept Msg

msg_type = 66 (0x42) (Attach accept)
lte_emm_msg
emm_attach_accept
attach_result = 2 (0x2) (comb EPS/IMSI attach)
esm_msg_container
eps_bearer_id_or_skip_id = 5 (0x5)
prot_disc = 2 (0x2) (EPS session management messages)
trans_id = 1 (0x1)
msg_type = 193 (0xc1) (Activate default EPS bearer context request) \\激活qci=9的默认承载,走cmnet,用于承载数据
lte_esm_msg
act_def_eps_bearer_context_req \\attach sucess,need DRB,请求建立pdn context
eps_qos
qci = 9 (0x9) (QC9) \\数据承载qci =9,语音是qci=5和qci=1,若数据开关是关闭的这里qci=5
access_point
num_acc_pt_val = 25 (0x19)
acc_pt_name_val[0] = 5 (0x5) (length)
acc_pt_name_val[1] = 99 (0x63) (c)
acc_pt_name_val[2] = 109 (0x6d) (m)
acc_pt_name_val[3] = 110 (0x6e) (n)
acc_pt_name_val[4] = 101 (0x65) (e)
acc_pt_name_val[5] = 116 (0x74) (t)
pdn_addr
pdn_addr_len = 13 (0xd)
pdn_type = 3 (0x3) (IPv4v6)
ipv6_interface_id = 0xaa36888e7f1ee546 (aa36:888e:7f1e:e546)
ipv4_addr = 170134474 (0xa240bca) (10.36.11.202) \\网关分配给UE 的ip
…

0xB0ED LTE NAS EMM Plain OTA Outgoing Message --

msg_type = 67 (0x43) (Attach complete)
lte_emm_msg
emm_attach_complete
esm_msg_container
eps_bearer_id_or_skip_id = 5 (0x5)
prot_disc = 2 (0x2) (EPS session management messages)
trans_id = 0 (0x0)
msg_type = 194 (0xc2) (Activate default EPS bearer context accept)
lte_esm_msg
act_def_eps_bearer_context_accept
prot_config_incl = 0 (0x0)
ext_prot_config_incl = 0 (0x0)

0xB0E3 LTE NAS ESM Plain OTA Outgoing Message -- PDN connectivity request Msg

msg_type = 208 (0xd0) (PDN connectivity request) \\这条消息是BS->MS,是对请求建立(attach accept消息中有携带的act_def_eps_bearer_context_req)pdn context 消息的confirm
lte_esm_msg
pdn_connectivity_req
pdn_type = 3 (0x3) (Ipv4v6)
req_type = 1 (0x1) (initial request)
info_trans_flag_incl = 0 (0x0)
access_pt_name_incl = 1 (0x1)
access_pt_name_
num_acc_pt_val = 4 (0x4)
acc_pt_name_val[0] = 3 (0x3) (length)
acc_pt_name_val[1] = 73 (0x49) (I)
acc_pt_name_val[2] = 77 (0x4d) (M)
acc_pt_name_val[3] = 83 (0x53) (S)
prot_config_incl = 1 (0x1)
prot_config

2. NAS,CM & DS informs DPL that LTE service is available, rsrp is -96 ,4g signal good

IMS/High [qpDcm.c 9423] qpDplProcessSSInfoEvent: Blindly update.MainStack PrevRSRP=-96 NewRSRP=-95
IMS/High [qpDcm.c 9435] qpDplProcessSSInfoEvent: Blindly update.MainStack PrevRSRQ=-7 NewRSRQ=-7
Call Manager/High [cm.c 26574] =CM= cm_get_operator_info() asubs_id=0,operator=1
IMS/High [ qpDcm.c 8052] qpDcmGetServingSystem: Iterating DS Sys Info, rat_value = 3, so_mask = 2000
IMS/Medium [qpDcm.c 8213] qpDcmGetServingSystem: sPrefSysInfo[0].ePrefRAT is 10
IMS/High [qpdpl.c 6556] qpDplGetAccessType | returning ACCTYPE_3GPP_E_UTRAN_TDD
IMS/High [qpdpl.c 6596] DPL_M#>>#IMS_APP#0#qpDplGetAccessType-AccessType=21;ServStatus=2

3. MT call sip related message received & response sent

IMS/Medium [ qpdpl.c 7386] imsSignalHandler - Event:54520, Valid:1
IMS/High [ qpdplnet.c 7253] qpDplNetRecvBuff: Connection Profile a0221ec0!
IMS SIP/High [ qpSipDispatcher.cp 2176] QpSipDispatcher::setPriorityInfo| Req Rcvd = INVITE
IMS SIP/High [ sipConnection.cpp 3832] EVENT_SIP_RESPONSE_SEND: SIP/2.0 183 Session Progress
IMS SIP/High [ qpSipDispatcher.cp 2176] QpSipDispatcher::setPriorityInfo| Req Rcvd = PRACK
IMS SIP/High [ sipConnection.cpp 3832] EVENT_SIP_RESPONSE_SEND: SIP/2.0 200 OK
IMS SIP/High [ qpSipDispatcher.cp 2176] QpSipDispatcher::setPriorityInfo| Req Rcvd = UPDATE
IMS SIP/High [ sipConnection.cpp 3832] EVENT_SIP_RESPONSE_SEND: SIP/2.0 200 OK
IMS SIP/High [ sipConnection.cpp 3832] EVENT_SIP_RESPONSE_SEND: SIP/2.0 180 Ringing
IMS SIP/High [ sipConnection.cpp 3832] EVENT_SIP_RESPONSE_SEND: SIP/2.0 200 OK
IMS SIP/High [ qpSipDispatcher.cp 2176] QpSipDispatcher::setPriorityInfo| Req Rcvd = ACK
IMS SIP/High [ sipConnection.cpp 3849] EVENT_SIP_REQUEST_SEND: BYE sip:[2409:8019:8830:4700::6]:5062;TRC=ffffffff-ffffffff;Dpt=edaa-200 SIP/2

4. IMS reported MT_RING_CNF to cmipcall,确认振铃

Call Manager/High [ cmipapp.c 3577] =CM= RPT name 602
Call Manager/High [cmtask.c 10838] =CM= RPT RXD: IP cmd=602
Call Manager/Low [cmipcall.c 1912] =CM= START cmipcall_rpt_proc, cmd=602
Call Manager/High [cmipcall.c 2177] =CM= IP RXD: MT_RING_CNF, id=12, sys_mode=512, as_id=1

5. report codec info to client(such as CM)

IMS/High [qpDplCallCtrl.c 7391] qpDplCallCtrlReportInd: eRptNameType = 617
/* To pass the audio codec info to Apps for Audio
** management and UI indication.
** payload:cmipapp_audio_codec_s_type
** cmll.h file
*/
Call Manager/High [cmipapp.c 3577] =CM= RPT name 617

6. Answer the volte call and MT call accepted

Call Manager/High [ cm.c 4345] =CM= CALL_CMD_ANSWER pi value 0
Call Manager/High [ cmdbg.c 3600] =CM= >>CM callcmd 1: 17
Call Manager/Medium [ cmipapp.c 4833] =CM= CM->IMS: CMIPAPP: Sending ANSWER, call_id 12, cause -1, is_accept 1
IMS/High [ qipcall_cmd_mgr.c 297] [qipcallcmd_try] Incoming call being accepted IMS/High [ qipcall_cmd_mgr.c 341] [qipcallcmd_try] go ahead and process the call answer

7. Connection setup means Volte session setup, also AUDIO CODEC INFO notify to CM

IMS/High [ qipcalldialog.c 5246] [process_send_response] [response: 200]
IMS/High [ qipcallh.c 12996] qipcallh_config_rtp_remote_addr:AMR-NB CMR = 15 neg_codec_modes 128
IMS/High [ qipcallcodec.c 3286] qipcallcodec_media_get_active_codec [codec: 117]
IMS/High [ qipcallcodec.c 770] [qipcallcodec_media_acquire] [success]
IMS/High [ qipcallh.c 5467] call AUDIO CODEC INFO eCALL_IND_AUDIO_CODEC_INFO Call Id=12, codec = 6 sample rate 8000
Call Manager/High [ cmtask.c 10838] =CM= RPT RXD: IP cmd=617
Call Manager/High [ cmph.c 39082] =CM= cmph_ip_rpt_proc, cmd=617
IMS/High [ qipcallrtp.c 1794] [qipcallrtp_resume_rtp_stream] [qvp_rtp_resume_stream success]
IMS/High [qvp_sdp_media_info.c 1489] [QVP_SDP]add_media_codec_to_media_description : media type = audio and no. of channels - 1
IMS/High [ qpaudio_svs.c 675] Posting CVD Command 110fe
IMS/High [ qipcallh.c 5990] connect rpt ind for call_type = 1 eVideoAttrib = 0 eAudioAttrib = 3
Call Manager/High [ cmtask.c 10838] =CM= RPT RXD: IP cmd=604
IMS/High [ qipcallh.c 4866] qipcall_rpt_ind ret from qfDplCallCtrlReportInd = 1
Call Manager/High [ cmipcall.c 2479] =CM= DS: SUB 2 IP RXD: CONNECTED, id=12, as_id=1
IMS/High [ qipcallh.c 3194] Stop QIPCALL Ringing or Ringback timer id 12

8. make RTP configure

IMS/Medium [ qipcallh.c 29701] qipcallh_process_rtcp_reporting: rtcp xr interval is 0, use 5s as default value
IMS/Medium [ qpaudio_svs.c 3443] dplaudio_process_apr_cb: Waking up to do work
IMS/Medium [ qpaudio_svs.c 2999] apr_msg_len 23
IMS/High [ qipcallh.c 29852] qipcallh_process_rtcp_monitoring | qvp_rtcp_link_alive_timer_start start success : MediaIndex:[0], Stream[7]
IMS/High [ qipcallrtp.c 1605] qipcallrtp_configure_rtp_monitoring
IMS/High [ qipcall.c 1667] qipcall_process_rtp_msg: QIPCALL_RTP_CONFIGURE_DONE
IMS/High [ qipcallh.c 19305] RTP Config Done (i=0)(st=14)

9. notify CVD to do audio pre-processing,从这里开始应该看内核audio部份了

IMS/Medium [ qpaudio_svs.c 3443] dplaudio_process_apr_cb: Waking up to do work
IMS/Medium [ qpaudio_svs.c 664] Entering dplaudio_send_command..
IMS/High [ qpaudio_svs.c 693] dplaudio_cmd_send g_cmd_sent = 3 g_cmd_rsp = 2 g_cmd_ack = 2
IMS/High [ qpaudio_svs.c 3485] g_cmd_sent=3 g_cmd_rsp=2 g_cmd_ack=3
IMS/High [ qpaudio_svs.c 675] Posting CVD Command 11334
IMS/Medium [ qpaudio_svs.c 2093] Received VSS_IMEMORY_RSP_MAP

10. codec initializing

IMS/High [ qpaudio_svs.c 2543] Posting Codec Changed
IMS/High [ qipcallmedia.c 554] qipcallmedia_rtp_media_evt_cb
IMS/High [ qipcall.c 1703] qipcall_process_rtp_msg: QIPCALL_RTP_MEDIA_EVENT
IMS/High [ qipcallcodec.c 2155] qipcallcodec_process_txrx_codec_config_event: success: media state QIPCALLCODEC_MEDIA_STATE_INITIALIZING
IMS/High [ qipcallcodec.c 1000] [qipcallcodec_media_start_txrx] [tx_state: 1] [rx_state: 1]

11. audio codec pkt frame posted to QDJ Queue buf & will be consumed

IMS/Medium [ qpaudio_svs.c 2861] Received response for VSS_ISTREAM_CMD_SET_PACKET_EXCHANGE_MODE
IMS/Error [ qpaudio_svs.c 4654] posting command VSS_IMVM_CMD_MODEM_START_VOICE
IMS/High [ qpaudio_svs.c 3354] Received VSS_ISTREAM_EVT_READY setting qvp_rtp_cvd_state to READY
IMS/High [ qpDplQdj.c 2852] ENQUEUE sn=24901 len=31 rtp_T=2981940096 cur_blen=20 flt_blen=20 num_uflow=0 num_rcvd=2 result=0
IMS/Medium [ qpaudio_svs.c 4871] qpAudioPlayFrame: Enqueued pkt to QDJ ts=2981940096, seq=24901, len=31
IMS/High [ qpDplQdj.c 2852] ENQUEUE sn=24902 len=31 rtp_T=2981940256 cur_blen=20 flt_blen=20 num_uflow=0 num_rcvd=3 result=0
IMS/High [ qpDplQdj.c 3260] Queue Count =3
…..
IMS/High [ qpaudio_svs.c 1092] Posting CVD Command VSS_ISTREAM_EVT_OOB_NOTIFY_ENC_BUFFER_CONSUMED
IMS/Medium [ qpDplQdj.c 2479] IN SN=37805 TS=2981982336
IMS/Medium [ qpDplQdj.c 2488] OUT SN=25165 TS=2981982336
IMS/High [ qpDplQdj.c 2508] QDJ tot_qdj_frame_cnt = 266
IMS/High [ qpDplQdj.c 2512] QDJ tot_pkt_cnt = 266

//发送数据包的过程(涉及到的模块APR,DS ,RTP, IMS,ADSP(QDSP6)…)

[0x14D0] LOG 08:26:03.515 APR Modem 046F3704|0000030048248293|<040A-0040><0315-0000>{00000003}

[0001136C],32;VSS_ISTREAM_EVT_OOB_NOTIFY_ENC_BUFFER_READY
[5016/0001] MSG 08:26:03.515 DS Real Time Transport Protocol/Medium[ qvp_rtp_codec_svs.c 298] qvp_rtp_codec_audio_cb: Received Audio Message 1 in state = 7 Handoff in state - 0
[0x1568] LOG 08:26:03.515 IMS RTP SN and Payload Length: 0069
[5016/0002] MSG 08:26:03.515 DS Real Time Transport Protocol/High[ qvp_rtp_nw_ds.c 2281] NW send called for len = 44, and pri = 0
[5000/0001] MSG 08:26:03.515 Data Services/Medium [ DSS_dsapi.cpp 3215] dss_sendto(): socket:1020, buffer:-1606664092
[5000/0001] MSG 08:26:03.515 Data Services/Medium [ ps_socket_cmd.cpp 163] ps_socket_cmd_send(): Posting cmd 5 sock 1648
[0051/0002] MSG 08:26:03.515 IMS/High [ qpaudio_svs.c 1092] Posting CVD Command VSS_ISTREAM_EVT_OOB_NOTIFY_ENC_BUFFER_CONSUMED
[0x14D0] LOG 08:26:03.515 APR Modem 03001C01|0000030048248582|<0315-0000><040A-0040>{00000000}[0001136D],32;VSS_ISTREAM_EVT_OOB_NOTIFY_ENC_BUFFER_CONSUMED
[0x14D0] LOG 08:26:03.515 APR Modem 046F3903|0000030048248691|<040A-0040><0315-0000>{00000000}[000100BE],36;VSS_ISTREAM_EVT_OOB_NOTIFY_ENC_BUFFER_CONSUMED/APRV2_IBASIC_EVT_ACCEPTED;0001136D
[5018/0001] MSG 08:26:03.515 DS ROHC/Medium [ ps_rohc.c 2953] rohc_compress(): Orig hdr 60 octets, compressed hdr 64 octets
[5018/0001] MSG 08:26:03.516 DS ROHC/Medium [ ps_rohc_dc.c 470] decomp_parse_packet_type(): returns DC_FORWARD_TRAFFIC
[5016/0002] MSG 08:26:03.517 DS Real Time Transport Protocol/High[ qvp_rtp_packet.c 641] qvp_rtp_unpack Rxed payload type 104 configured ctx->rx_payload_type 104. tx_payload_type: 104
[5016/0002] MSG 08:26:03.517 DS Real Time Transport Protocol/High[ qvp_rtcp.c 2937] voice_call: seq = 37545 Jcurrent[0] = 3952272956 and Jcurrent[1]=4294967295
[8500/0001] MSG 08:20:48.265 QDSP6/Medium [ voice_delivery.cpp 675] VCP: VDS delivery handler begin, token 1000003, instance(0)
[0x1805] LOG 08:20:48.265 ADSP Core Voice Driver Stream RxLength: 0096
[8500/0002] MSG 08:20:48.265 QDSP6/High [ VoiceSvc.cpp 400] VCP: VSM apr_packet_ptr(b0650ec8): src_addr(40a) src_port(41) dst_port(100) op_code(0x11050) token(0x0) size(0)
[8500/0002] MSG 08:20:48.265 QDSP6/High [ VoiceSvc.cpp 582] VCP: VSM received VSM_EVT_OOB_DEC_BUF_READY
[0x14D0] LOG 08:26:03.526 APR Modem 046F3804|0000030048260653|<040A-0040><0315-0000>{00000006}[0001136E],32;VSS_ISTREAM_EVT_OOB_NOTIFY_DEC_BUFFER_REQUEST
[0051/0001] MSG 08:26:03.526 IMS/Medium [ qpDplQdj.c 3767] DEQUEUE sn=24902 len=31 twf=100 tdelay=60 fdelay=63 ntp=24903 q_cnt=3 state=7
[0x156C] LOG 08:26:03.526 IMS QDJ Dequeue Length: 0044
[0051/0002] MSG 08:26:03.526 IMS/High [ qpDplQdj.c 3970] QDJservice pSesnType->THREADSAFE.tot_qdj_frame_cnt=6 rtp_seq:37542 last_played_rtp_seq:37541
[0051/0002] MSG 08:26:03.526 IMS/High [ qpDplQdj.c 3977] QDJservice frame received
[0051/0002] MSG 08:26:03.526 IMS/High [ qpDplQdj.c 4011] QDJservice (speech packet) last_played_rtp_seq = 37542
[0051/0002] MSG 08:26:03.526 IMS/High [ qpDplQdj.c 4079] CRD:qdj_get_current_rtp_ts: RTP_TS 2981940256
[0051/0002] MSG 08:26:03.526 IMS/High [ qpaudio_svs.c 1684] Posting CVD Command VSS_ISTREAM_EVT_OOB_NOTIFY_DEC_BUFFER_READY
[0x14D0] LOG 08:26:03.526 APR Modem 046F3E03|0000030048260900|<040A-0040><0315-0000>{00000000}[000100BE],36;VSS_ISTREAM_EVT_OOB_NOTIFY_DEC_BUFFER_READY/APRV2_IBASIC_EVT_ACCEPTED;0001136F
[8500/0001] MSG 08:20:48.269 QDSP6/Medium [ VoiceMixerSvc.cpp 703] VCP: VMX #2 o/p port 0 sending buffer #5 buf 0xB082FC20 downstream
[8500/0001] MSG 08:20:48.270 QDSP6/Medium [ VoiceCmnUtils.cpp 1330] VCP: Client queued request to VDS, session(100), client token(1000002), Client Id(3), apr handle ptr(b077aaa0), apr pkt ptr(b0646398)
[8500/0002] MSG 08:20:48.270 QDSP6/High [ voice_delivery.cpp 555] VCP: VDS queue request begin, token 1000002 instance(0)
[8500/0001] MSG 08:20:48.271 QDSP6/Medium [ vdec_svc.cpp 824] VCP: vdec_vfr_decode_handler begin session(100)
[8500/0002] MSG 08:20:48.271 QDSP6/High [ vdec_svc.cpp 2713] VCP: OOB Dec pkt size received (32), session(100)

[0x1804] LOG 08:20:48.273 ADSP Core Voice Driver Stream TxLength: 0096

12. IP call end

Call Manager/High [ cmdbg.c 3459] =CM= CMD alloc u=30053, tsk=qmi_mmode
Call Manager/High [ cmdbg.c 3600] =CM= >>CM callcmd 2: 17
Call Manager/High [ cmipcall.c 4168] =CM= IP CALLCMD: cmd=2, as_id=-1, lte as_id 1
Call Manager/High [ cmipapp.c 4971] =CM= CM->IMS: Sending IP END EXT, call_id 12, app_id 1, as_id 1 end_cause 0

总结

VOLTE 呼叫是承载在IMS 域上的,终端必须先在IMS 核心网注册并建立QCI=5的IMS 信令承载,使得网络和终端之间的能进行正常的IMS信令交互(见上面的sip signaling截图),被叫侧接听之后,还需要建立QCI=1的语音数据承载,用于传输IMS高清语音数据,网络和终端之间的语音数据是通过rtp协议控制传输的,呼叫连接建立和结束分别能看到一条IMS VoLTE Session Setup 和IMS VoLTE Session End 的log打印,基于此能确定通话开始和结束时间,前后一点就是开始和结束时间,时间点确定了能很快定位相关模块的动作,将这些模块的动作前后连接,呼叫流程的相关细节就比较清楚了。

以上Log分析中步骤1~步骤12是VOLTE 高清语音被叫的大致过程,每一步骤都有不少实现细节以及3GPP 协议对应,工程师应该在有兴趣的技术点扩展开去,比如上面的ims codec相关 、IMS RTP相关、ADSP 音频流处理都是核心技术研发方向,可以深入研究的。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言