VOLTE语音时延问题定位
来源:互联网 发布:dnf剑宗短剑精通数据 编辑:程序博客网 时间:2024/06/03 19:30
现象
两个终端拨打VOLTE存在语音时延的问题。其中,一个终端为4G VOLTE,位于SMC站下,另外一个终端为2/3G,位于宏站下。在此场景下,随着呼叫时间变长,极大概率出现4G终端接收到的语音延迟,时间为秒级,但是2/3G终端依然正常。
定位
尝试了其他场景,包括两路VOLTE(一个终端在SMC下,一个终端在宏站下以及两个终端都在宏站/SMC下),宏站下一路VOLTE一路2/3G,均未出现时延问题。首先,需要定位时延点是在核心网还是在基站设备。在出现问题的场景下,拔掉SMC的WAN口网线后,终端在几秒内仍然能够接收到语音,说明语音包已经到达了基站设备,缓存在了基站设备或终端中。
在实验室进行复现,同时抓包,对比了交换机的镜像抓包以及基站内部tcpdump抓包,发现交换机的镜像抓包中,下行语音包以20ms的间隔均匀到达,在基站内部的tcpdump抓包中,存在攒包的现象,即较长一段时间内(几百毫秒级别),基站没有接收到任何网口数据,随后基站以极小的间隔收到了这一段的所有语音包。怀疑是由于网口的攒包现象,造成了语音时延。
做了一个测试版本,在frwk接收UDP报文的代码中,手动增加时延。在出现问题的场景下,手动构造收包时延。发现构造时延后,终端果然出现语音延迟,至此,已经基本确认了产生语音延迟的直接原因。
下一步,需要确认发生攒包现象的原因。又做了一个测试版本,可以手动创建一个指定优先级的任务,该任务持续执行死循环若干秒。在终端建立呼叫后,创建各个优先级任务进行测试,发现当创建的任务的优先级大于等于50时,终端出现时延,因此怀疑网口收包任务的优先级为50,在出现问题的场景下,存在高于这个优先级的任务持续运行的情况,随着时间积累,逐步到达影响通话的程度。
解决
咨询博通技术支持,得到网口接收任务的任务名irq/12-Timer1。博通的网口驱动同样采取中断+轮询的方式,博通使用定时器去触发轮询任务执行。在初始化脚本中提高该任务优先级至66后,手动创建优先级为65的任务执行死循环,不再出现语音时延的情况,确认修改有效。由于该任务优先级会影响到所有网口收包,因此技术支持并不建议将此调的过高。使用该版本升级后,呼叫保持2个半小时,终端语音时延不到1s。
遗留问题
在定位过程中,还有一些问题是没有解释清楚的:
1. 为何只有一路VOLTE一路2/3G的情况下才会出现?
使用手动构造时延的版本,在多个场景下进行了测试,均无法构造出语音时延。例如在两个终端都在小站下的情况,手动构造时延后,终端在手动构造时延期间无任何语音,随后语音立即恢复为当前语音,即时延过程中的语音丢失。而在出现问题的场景下,手动构造时延的现象是,时延结束后,终端语音变为时延时的语音,语音只是产生了时延而并没有丢失。
2. 终端语音播放机制?
从基站的行为来说,收包产生时延后,积攒的数据包会很快发送至终端,而非以20ms的间隔发送给终端(因为基站不区分语音和数据),因此,语音包应该是积攒在终端了。难道,终端在接收到语音包后完全不理会包到达的时间以及间隔,只是均匀地以20ms为间隔播放给用户,如果没有语音包就播空白音?
3. 不同场景终端机制不同?
但是,如果按照上面的分析,终端攒包的话,终端应该是分不清楚对方是2/3G还是VOLTE的,为何针对不通场景,终端表现还不一致?
- VOLTE语音时延问题定位
- VoLTE直接承载语音解决方案
- 如何打开高清语音VOLTE
- 如何打开高清语音VOLTE
- WiFi语音、VoLTE以及下一代移动语音服务
- 【VOLTE】【高清语音】什么是高清语音
- 微信电话语音质量 VS VOLTE语音质量
- 观点:说VoLTE比微信语音/视频电话清晰,完全是掩耳盗铃!
- 【VOLTE】关于VOLTE容量
- 【VOLTE】VOLTE中的Precondition
- 连接CMW 500综测仪VoLTE时的设置
- VoLTE相关
- 关于VoLTE
- VoLTE小结
- zx-volte
- VoLTE相关
- 问题定位
- 问题定位
- 同域iframe中子页面如何访问父页面js中的方法
- 内容提供器(Content Provider)
- 内存溢出和内存泄漏的区别
- spring bean初始化时机
- Flask Web服务开发
- VOLTE语音时延问题定位
- 浅谈JavaScript选项卡
- [LeetCode]Copy List with Random Pointer
- 用数组实现简单的栈
- MFC创建新Excel文档并设置其中的格式和字体
- 图形环境下的shell编程
- 利用java实现非递归二分查找
- (新知)数据结构--Treap--模版
- Nginx rewrite 301 永久重定向跳转