我处局域网内部有一运行SIP协议的VOIP服务器(192.168.1.25),该服务器为局域网内部以及远程接入的用户提供VOIP服务,且工作正常。 
 
考虑到内部IP电话的落地(接入公共电话网)的需求,于是为VOIP服务器设置一个中继,通过局域网内部的一台VOIP Tunnel服务器(192.168.1.26)连接到一个公共的SIP电话服务商。但是出现了一个问题,所有经由VOIP服务器转发的落地通话,对方都可以振铃,但是无法传递话音。 
 
通过一台语音网关进行替换测试,可以得知Tunnel服务器运行正常,应该是VOIP服务器设置的问题。于是使用【科来网络分析系统】,对VOIP服务器和Tunnel服务器之间的通信流量进行捕获分析。 
 
通过查看数据包得知,VOIP服务器向Tunnel服务器发送的VoIP信令中,表示只使用一种叫做GSM-FR的编码器。因事先查看资料得知,我们连接的这个公共SIP电话服务商,对于落地的呼叫,只提供G.711u、G.711a和G.729a三种编码转发,这个GSM-FR编码并不在支持范围之列。因为信令中的编码器没有正确协商,所以这个SIP电话服务商也不会传递任何的RTP(实时传输协议)数据流,因此落地的呼叫都没有声音。 
 
找到问题之后,在VOIP服务器上删除了GSM-FR编码,使用711u编码,随之所有落地呼叫都可以正常进行,问题解决。 |