提示
X
本案例来自tskb,请前往tskb修改源内容:立即前往
'>

【AD】SIP语音业务经过AD后听不到声音排查

|

问题描述

       问题现象是碰到比较多的sip语音经过AD端口映射或者发布虚拟服务之后,打电话没有声音的现象。

告警信息

       结合问题通常能想到的办法就是抓包分析,通过抓包发现,客户发起的语音流,只有wan口有包,lan口没有数据包,看到的现象就是,AD设备收到数据包后没有向后端转发,抓包如下:

      

       PS:SIP数据包分析wireshark过滤技巧
       大多数sip厂家用到的是4500端口,有可能被wireshark识别为ipsecvpn数据包(如下图),需要手动在wireshark上定义为RTP流量
      
       wireshark操作指引如下
      


有效排查步骤

1、检查配置,先确认DNAT配置是否正确配置,一般映射给sip服务器
       PS:某些场景下,还有中继设备,是映射到中继设备上,所以第一步是梳理客户内网sip流的交互

2、检查AD上是否开启了ALG功能,如下,如果未开启ALG那就是普通的DNAT转换,只改变数据包包头,源目IP和MAC;只有开启了ALG才会对sip信令交互的内容进行nat;
      
        

3、抓sip信令数据包交互分析sip信令contact字段,看看是否正常转换成功;
       如下图,抓取的是内网和服务器之间交互的数据包,发现服务器回包时,contact字段就已经修改成为了公网,那么出现如下的问题,有两种情况:
       1、内网还有ALG设备;
       2、服务器上配置绑定IP填写错误导致;

      
       通过分析数据包后,接下来就去跟客户沟通,先了解有没有ALG设备,如果没有,就检查下服务器设置即可,如下是华为两个不同型号的服务器配置

       型号一:路线是绑定了AD端口映射公网IP,正常是去绑定真实服务器的内网IP即可。
      

       型号二:如下是服务器上的sip应用分配的比较细,服务比较多,一般修改语音的绑定即可,下图是修改后的配置
      


解决方案

1、如果是客户内网有ALG设备,推动客户关闭ALG即可,或者关闭AD的ALG功能;
【高危操作预警】AD上修改ALG功能可能会影响到其它业务,建议跟客户沟通后,再操作!

2、如果是服务器配置错误,建议跟客户沟通修改绑定IP即可;

建议与总结

SIP与ALG的关系
1、 SIP是一个用于建立、更改和终止多媒体会话的应用层控制协议,其中的会话可以是IP电话、多媒体会话或多媒体会议。SIP是通过各种头域里的信息的交互来管理会话的。

2、SIP应用中的语音和视频数据需通过信令消息中的IP地址和端口号来实现目的地寻址,因此信令消息在地址穿透中不仅需要对TCP/UCP层的端口信息以及IP层的源地址和目的地址进行变换,还需对IP包载荷中的相关地址信息进行变换。同时,对于SIP应用来说,是在控制信息中动态地协商媒体流端口,信令协议中的IP地址也是私有的,因此要准确把握相关的地址和端口信息,并进行正确的转换。

SIP ALG处理流程为如下三个步骤:
1、ALG模块根据会话标识的协议类型对报文进行解码,若解码发现报文为不需要做ALG或解码发现为错误字段时退出,解码发现需进行字段转换时进一步处理;
2、ALG模块查找接口上的NAT配置,根据NAT配置转换报文中的IP地址、端口、call-id等信息并建立关联表,关联表记录了载荷地址的转换关系;
3、ALG模块调整报文载荷中的长度字段,如sip message header的content-length字段标识message body的长度,ALG对message body中的地址转换后,message body长度可能变化,content-length字段值需要置为变化后的值。

如下图是经过AD后,前段后端数据包变化



我要分享
文档编号: 239265
作者: admin
更新时间: 2023-01-05 17:29
适用版本: