【问题现象】

湖南移动现场短呼叫测试,发现测试20次,就会失败1次。初步分析信令抓包发现是SBC未转发被叫终端发送给主叫的200 OK(update)消息造成失败,影响短呼叫的接通率。

 

【问题分析】

本次故障产生的技术原因分析如下:

根据现场反馈的系统日志如下,已定位出故障原因。

PE1:p_sip_proxy_dialog.c:2888 Sip dynamic data add failed because mem left is not enough (mem left=1472, mem asked=1473)。

Update的200 OK触发了Rx接口,Rx触发时申请异步动态数据区失败,失败的具体原因是在计算数据区大小的时候没有考虑结束符\0,在临界值的时候申请数据区就会失败。

目前异步动态数据区是分级的,固定分为6k,7k,8k,16k四个级别。申请数据区的时候需要根据公式计算需要的数据区大小,但是由于在计算缓存SIP消息的长度时,没有考虑到结束符\0,当SIP消息长度恰好是分级的临界值时,实际保存内容的长度要比申请的长度大1,就会在保存数据区时造成内存越界,进而导致响应处理失败,没有转发该响应。

该问题已经在最新SBC版本V2.13.10(T10a)中合入解决。湖南VoLTE测试时使用的是V2.13.10(T7a)的版本,该故障并未合入这个版本,现场升级到V2.13.10(T10a)版本之后就可以解决这个问题。

影响范围: 影响短呼叫的接通率。

【问题解决】

现场在6月8日将SBC版本升级到V2.13.10(T10a),经过超200次的呼叫测试全部成功,故障现象未复现。