事情是这样的
1. 设施
电信===>三汇网关----->FreeSWITCH----->分机
2. 故障现场
手机呼入,分机接听 通话会有延迟,延迟几秒甚至十几秒几十秒!
分机呼出没有问题!
经过多次测试, 发现话机接听的时间(响铃后多长时间)越长,通话延时越长
分机互拨没有延时,用软电话模拟网关呼入, 没有延时, 怀疑网关有问题,
于是找三汇.....(一吨测试抓包), 然后吧, 三汇说是 软交换送到我们网关就已近延迟了,问题还是在软交换上.
于是,更新到最新版本 v1.10.7
问题依旧o(╥﹏╥)o
后来,用话机代替fs, 也没有延时o(╥﹏╥)o
然后测试fs抓包, [一顿操作找外援]仔细分析了下rtp包, 确实是fs 延迟了发包 (心态爆炸)
这两个序号的rtp包就是分机发出的第一个rtp包(人工校对的), 确实可以看到是延时了 (本通延时1.7s,接听的早)
No. | Time | src | dest |
1542 | 18:39:23.689 | 192.168.10.120 | 192.168.10.251 |
1931 | 18:39:25.387 | 192.168.10.251 | 192.168.10.252 |
3. 肿么办?
问了一圈, 说是 可能是 等待媒体造成的, 加 pre_answer 或者 直接playback个小语音, 或是加 ring_ready
当时不方便测试就没测试
当时就想着, 把多余的配置, 能删的都删掉, 能注释的都注释, 再测试试试
然后吧.... 就好了!!! Σ(⊙▽⊙"a
还好 没关闭编辑的配置文件
于是一点点测试, 最终终于找到了
就是它, 是它, 它
1 <!-- dialplan/default.xml --> 2 <!-- 注释掉就这个好了 --> 3 <action application="set" data="ringback=${us-ring}"/>
至于原理, 请原谅我吧~~ 挨冻车脑