如何缓解“pkt_recv_err”全局计数器的异常增加
10122
Created On 11/28/23 19:03 PM - Last Modified 07/24/25 07:42 AM
Objective
当防火墙收到包含不正确或无效 L2-L4 信息的数据包时,计数器 pkt_recv_err 递增。 防火墙无法解析或处理数据包,丢弃数据包,并递增pkt_recv_err全局计数器。
下面是防火墙中全局计数器pkt_recv_err递增的示例:
> show counter global name value rate severity category aspect description -------------------------------------------------------------------------------- pkt_recv_err 100 100 drop packet pktproc Packet receive error尽管这种情况很少见,但某些应用程序可能会发送不符合当前有效的 TCP/IP 网络 RFC 标准的数据包,从而导致出现此问题。 在这些情况下,软件应用程序的供应商必须使用其软件解决该问题。
注意:仅当使用带有 特定源和目标IP地址过滤器 的全局计数器对特定流量进行故障排除时,此全局计数器才有意义,并且此全局计数器会专门丢弃该流量流。 所有其他时间,可以安全地忽略此全局计数器,并且不要继续执行本文档中的以下步骤。 如果发现全局计数器“pkt_recv_err”正在丢弃使用全局计数器进行故障排除的特定流量,请继续执行以下操作。
Environment
- 下一代防火墙
Procedure
- 使用带过滤器的全局计数器确定网络中按源 IP、源端口、目标 IP、目标端口的哪些流量流由于此计数器(如果有)而被防火墙丢弃
注意:如果通常可以看到pkt_recv_err全局计数器,但不知道发生流量问题,则可以安全地忽略此计数器。 如果对特定流量进行故障排除,并且该流量因“pkt_recv_err”计数器而中断,请继续执行下面的步骤 2。
- 运行以下 CLI 命令:
> show counter global查找以“pkt_recv”开头的任何其他全局计数器,这些计数器与pkt_recv_err同时递增,并改为解决该全局计数器的原因。
示例:
如果“pkt_recv_err”和“pkt_recv_multiple_bufs”都在递增,请改
为使用如何缓解“pkt_recv_multiple_bufs”全局计数器的异常增加来进行故障排除 如果“pkt_recv_err”和“pkt_recv_short_pkt”都在递增,请改用如何缓解“pkt_recv_short_pkt”全局计数器的异常增加来继续进行故障排除
- 在以下捕获点进行 数据包捕获 (使用过滤器):
A. 连接到防火墙的交换机/设备的出口端口(此数据包的来源)B. 防火墙的入口端口(此数据包将到达的位置)
- 在 Wireshark 中打开数据包捕获,并检查丢弃的数据包中的 L2-L4 信息是否存在以下任何问题:
L2:VLAN 标记长度不正确、封装
不正确 L3:校验和不正确、IP 数据包被截断、数据包太短、数据包太大、数据包校验和错误、IP 和 UDP/TCP 长度不匹配、数据包大于防火墙接口 MTU(可能需要启用巨型帧)
L4:TCP/UDP 端口 0、TCP 标志无效等。
不正确 L3:校验和不正确、IP 数据包被截断、数据包太短、数据包太大、数据包校验和错误、IP 和 UDP/TCP 长度不匹配、数据包大于防火墙接口 MTU(可能需要启用巨型帧)
L4:TCP/UDP 端口 0、TCP 标志无效等。
- 根据上述调查结果采取适当的措施来解决问题。 示例包括:
- 如果这些数据包的源设备或应用程序发送不正确/其中包含无效的 L2-L4 信息,请与该软件应用程序的供应商联系,了解报告的行为,让他们进行修复
- 如果防火墙上的 VLAN 配置与数据包中的 VLAN 标记相比不正确,请调整防火墙或数据包中的 VLAN 标记以正确
- 如果禁用了巨型帧,但您的网络使用巨型帧,请考虑在防火墙上启用巨型帧(对于大于默认接口 MTU 1500 的数据包)
- 如果数据包的源端口或目标端口为 0,请转到生成这些无效数据包的源应用程序并更正该问题
Additional Information
其他常见的全局计数器与 pkt_recv_err 同时递增,包括:
>show counter global | match pkt_recv pkt_recv_err_large drop Packet receive error due to large packet pkt_recv_short_pkt drop Packet receive short packets pkt_recv_empty_buf drop packet pktproc Packet WQE without buffer pkt_recv_multiple_bufs drop packet pktproc Packets received with multiple buffers pkt_recv_throttle_cos drop packet pktproc Packets throttled by QoS control pkt_recv_flush_link drop Packets dropped due to link down in dpdk mode pkt_recv_flush_passive drop Packets drop due to passive VM in dpdk mode pkt_recv_skip_inflight info Packet receive skipped due to high inflight num pkt_recv_multiple_bufs drop Packets received with multiple buffers not from content engine pkt_recv_multiple_bufs_ce info Packets received with multiple buffers from content engine pkt_recv_retry info Full Burst Packets received on retry pkt_recv_sso_wa_err warn Packets received with atomic type but without SSO workaround pkt_recv_zero info Packets received from QoS 0 flow_ipfrag_large_pkt_recv info IP fragment large packet(>16k) received pkt_recv_hop_err drop Packet received with IP HOP error pkt_recv_lro info LRO Packets received pkt_recv_lro_cksum_err drop LRO Packets received but dropped due incorrect cksum pkt_recv_lro_dvflt_err drop LRO Packets received but dropped due to DV Filter pkt_recv_lro_err drop LRO Packets receive error pkt_recv_lro_ipfrag_err drop LRO Packets received but dropped due to IP fragment pkt_recv_lro_mem_err drop LRO Packets received but no memory pkt_recv_lro_notip_err drop LRO Packets drop due to non-IP pkt_recv_lro_prepend_err drop LRO Packets received but prepend error如果大于 1500 字节的数据包进入防火墙接口,其接口是默认接口 MTU 1500,则数据包可能会丢弃并pkt_recv_err增量。 启用巨型帧可能会解决此问题。