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的默認承載的建立/釋放

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

VoLTE MT call SIP signaling

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

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)

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

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 音頻流處理都是核心技術研發方向,可以深入研究的。


分享到:


相關文章: