通过连接时体验单向音频 SIP
84802
Created On 04/27/19 14:35 PM - Last Modified 03/26/21 17:40 PM
Symptom
通过 SIP (会话启动协议)连接时体验单向音频。
Environment
PAN-OS
Cause
SIP (会话启动协议)允许两个端点相互建立媒体会话。 这是一个应用程序层信号协议。
协议的主要信号函数如下
:–终点的位置。
–联系终点,以确定建立会话的意愿。
–交换媒体信息,以便建立会话。
–修改现有媒体会话。
–拆解现有媒体会话。
SIP每跳一跳都被称为呼叫腿。
SIP手机在内部服务器 CUCM (,) 注册 CME ,并得到所有与扩展号码相关的配置,这是支持的编解码器。 每个站点都将从提供商处获得 T1 和 E1 ISDN 连接 SIP ,该连接可以连接到公共电话网络。 常见设置如下:
电话用户1]>(已注册)=>=>=>( CUCM CUBE 帕洛阿尔托网络 Firewall )=>SBCs=>Dst ISP VOIP 网关=> VOIP 服务器=>用户2
呼叫者通过消息启动呼叫 INVITE , 代理服务器负责代表呼叫者启动连接(用户1)。
呼叫流如下 SIP :
INVITE消息: INVITE 消息由呼叫者生成,呼叫者发送到服务器。 代理服务器负责启动连接。 INVITE标题具有呼叫者和呼叫方信息,包括唯一的呼叫 ID。 这里有两个新的术语来澄清:提前交接和延迟交接。
提前交接: 在上图中,您可以看到 INVITE 没有 SDP (会话描述协议)有效载荷的消息。 最常见的设置是 SDP 启动带有消息的有效载荷 INVITE 。 当您在 SDP 邮件中看到有效载荷时 INVITE ,这被视为提前交接。
包含 SDP 两个端点之间使用的介质类型和介质的信息。 SDP其中还包含媒体 IP 地址、 RTP 端口号、编解码码类型 G (。711、。729) G 信息等信息。
延迟交接:当您 SDP 在邮件中看不到有效载荷时 INVITE ,该设置是延迟交接。 然后,被召集方必须首先发送自己的媒体信息,供来电方进行谈判。
INVITE有效载荷消息的示例 SDP 如下
INVITE :calling_to@10.101.5.120 SIP /2.0
来自:"Called_id": <sip:Caller@10.101.6.120> tag+35b8d8a74ca0f4e34e0adfa7_F10.101.6.120
到: Calling_to@10.101.5.120 呼叫 - :
ID f_169eac17a017b0a4e0adfa8_I@10.101.6.120
CSeq: 15 INVITE
通过: SIP /2.2 UDP 0/10.101.6.120;分支=z9hG4bKf_169eac12baa17054e0adfb3_I
内容长度: 306
最大转发: 70
联系人: Caller@10.101.6.120;传输=udp
内容类型: 应用程序/sdp
用户代理:支持Avaya SIP 软电话
:替换
SDP:
v=0
o=sip:caller@10.101.6.120 1 16 IN IP4 10.101.6.120
s=sip:caller@10.101.6.120
c= IN IP4 10.101.6.120
t=0
m=音频 5000 RTP / AVP 0 8 18 4 120
a=rtpmap:0 PCMU/8000/1
PCMA a=rtpmap:8/8000/1
a=rtpmap:18 G729/8000/1
a=fmtp:18 附件=无
a=rtpmap:4 G723/8000/1
a=rtpmap:120 电话事件/80 00/1
SDP有效载荷:c=
IN IP4 10.101.6.120 ==> IP 地址,供呼叫方使用,用于交换音频数据包
m=Audio 5000 RTP / AVP 0 8 18 4 120 ===> RTP 端口号码,供呼叫方使用。 负责在 NAT 7层数据包上进行(邀请和 SDP )。
SIP ALG
ALG </sip:Caller@10.101.6.120> Palo Alto 网络防火墙能够 ALG 在 SIP 数据包上执行,并且您不必执行任何其他配置来启用此功能。 一旦 firewall 将流量标识为 SIP 应用程序,它将调用 ALG 解码器并执行第 7 层 NAT 。 像帕洛阿尔托网络防火墙这样的防火墙将采取媒体信息,并打开一个针孔或"预测会话",以允许媒体包。
Resolution
ISSUE:
当您 firewall 通过进入 firewall (对象 > 应用程序 SIP >>) ALG 并配置流量覆盖的应用程序来禁用此功能时,可能会出现问题 SIP 。 在完成应用程序覆盖后, firewall 将失去第 7 层的可见性,将无法执行第 7 层 NAT 。
为什么启用很重要 ALG ?
每个电话都分配了一个 RFC 1918 年的私人 IP 地址。 当电话启动 SDP 数据包 RTP 媒体 IP 地址时,它也将是一个私人 IP 地址。 如果手机不是 NAT 感知设备或 ALG 网络中没有执行设备,则当第 7 层数据包 IP 到达目标电话时,它将具有专用地址。 完成所有信号后,他们尝试发送实际 RTP /音频数据包,目的地将将其发送到 IP 数据包中接收的私人地址 SDP ,并且不会是 IP 公共互联网中的路由地址。 这就是我们在通话中将有一个单向音频的主要原因 VOIP 。
你不需要的地方 ALG ?
如果您的手机是 NAT 一个知情的手机,或者你有一些其他的设备在中间,这是 ALG 一个启用的设备。 这也可以看到,当你 ALG 在网络上做, firewall 也正在做 ALG ,这导致数据包是双 NAT 倍的。 这可能会造成一些问题,如延迟和呼叫减少等。
Additional Information
要查看 firewall 是否正在执行 ALG ,您可以转到 对象 > 应用程序 SIP ALG >>。
它应该设置为启用"是"。
在电话和 ISP SBC (会话板控制器)之间获取数据包捕获。 请始终记住将过滤器放在下面
NOTE:: 客户应了解 IP SBC 所提供的地址 ISP 。 应该有一个安全 policy ,应该允许通信到这2个 IP 地址。
索引1:Src–
IP 呼叫电话 IP 地址
IP Dst-ip SBC 地址提供的 ISP (通常为故障 IP 转移/负载共享的2个不同地址)
索引2:
反之亦然
索引3:src:
IP 呼叫电话 IP 地址
IP Dst:0.0.0.0
索引
4:Src:0.0.0 IP
IP Dst:呼叫电话ip地址。
采取 PCAP 后,您必须检查传输阶段 PCAP,该阶段应将所有 SIP / SDP 听到 IP 更改为 NAT IP 地址。 还需要使用呼叫者名称、接收方名称和扩展号来验证 SIP PCAP 中的标题。
下面是一个命令,你可以运行,以验证是否 firewall 正在做 ALG 。
>显示appinfo2ip
万一呼叫下降的任何问题,单向音频,您需要收集流量基本,appid基本,ctd基本,和PCAP在最低限度。