ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

亿联T31话机注册在云kamailio通话无声音

亿联T31话机注册在云kamailio通话无声音

遇到的问题

亿联话机,与软电话分别注册在kakailio上,测试结果是注册成功后的软电话互打成功,但软电话拨打亿联话机,无声音,记录一下过程,目前为止,此问题仍未解决,先附上解决过程,后续如果有答案,将写上原因。

运行环境

一台在云上的kamailio服务器5.8.2,一台亿联话机T31, 软电话 microsip

解决过程

为测试亿联话机本身是否存在问题,将亿联话机注册至FS上,测试通话无异常,进一步将问题定位在,kamailio配置及亿联话机的配置上。

直接先抓包走起:
112.23.85.30:软电话2001
183.247.1.185: 亿联话机 2011
10.0.4.13: kamailio
从抓包分析可以看出,主叫2001发给被 叫2011的ACK 似乎一直没正常发送,在连续不断发送ACK,看图可知。继续找不同,发现ACK 发送的端口是 5081,但上面的invite端口全是到的4501,唯独这个ACK发送到了,4501, 然后查看报文200 OK SDP 报文,果然此contact带过来的地址 真是这个5081(此端口是亿联话机自带的本地sip端口)初步怀疑是不是发到5081的ACK没有被正式的接收?

首先想到的的就是 kamailio中修改 200 ok 报文,替换contact 硬改成 与4501端口一致,是不是问题就能解决? 手搓kamailio,一顿操作猛 如虎。继续测试,如现ACK 的发送地址正常。 但问题依旧,没有声音,丢了RTP。。。。。。
苍天啊,大地啊。。。。。

列出所有有关包文中的RTP 端口

invite sdp (112.23.85.30:1250 -> 10.0.4.13)

200ok sdp (5060 -> 112.23.85.30:1250) 这个4480看起来就觉得不得劲啊。。。

续续。。。。。抓包。。。

软电话2001本地抓包:

invite 报文

这里的RTP 是 从4068 出来的,但是从上面服务器抓包看,invite sdp (112.23.85.30:1250 -> 10.0.4.13) 此处的invite已经将4068改成了12600端口? (思索了一下,这个变动大概率是在kamilio nat时被自动改了?猜测)

亿联电话抓包

200 OK SDP返回时的报文

再看亿联话机侧抓的报文
此处的RTP 是自己的 10990 到 12600(主叫2001)

总结一下:
主叫 2001 发起呼叫时,本地RTP端口4068 送到 kamilio后转为12600
被叫2011 (亿联话机) 本地RTP端口10990 送出后,在kamailio侧转为了 4480

最终RTP流走的是点到点的
软电话2001本地抓包 看,最终
2001:4068 -> 2011:4480
这样能通吗?不知如何解。。。

软电话互拨的正常报文
下面是直接用注册在kamailio上的软电话互拨,一切正常
分机2001侧抓包

两个RTP 流向

kamailio服务器侧抓包

2001 invite

结论
因为kamailio,不处理媒体流,所以在服务器中抓包,是没有 RTP 的报文(属正常现象)
那就说明,软电话与亿联电话互拨时接通后无声音,因该是 软电话 udp端口与亿联电话的udp端口是不通的,导至,没有传送语音流
后来在抓软电话的报文时,也发现了IMCP端口不可达的原因

排除法,分机2001打软电话2012 正常接通,rtp正常
说明亿联话机的问题,至少问题在哪,怎么配置,还未得出正确的解决方案,
此问题最终还是需要在kamailio中加入rtpengine处理rtp流

返回列表