防火墙CPU频繁升高导致丢包案例一则

2024-03-26 16:44

本文主要是介绍防火墙CPU频繁升高导致丢包案例一则,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

关键词

  • 防火墙、cpu load、丢包
  • 限速、ACL
  • kdrvdp、debugging

     There are many things that can not be broken!

     如果觉得本文对你有帮助,欢迎点赞、收藏、评论!

一、问题现象

核心防火墙在业务高峰时间段,及日常配置安全策略提交/删除/修改后,都会触发CPU(Chassis 1 slot 2 CPU 1)升高现象,并导致业务网络丢包,网络时延大,故障频繁发生。

二、问题分析

通过普通的排查方式,查看高峰期时新建会话数top10,发现都是正常的业务;查看各端口流量,无异常;检测大流量分析查看IP流量,也没有异常的增高点。

故障现象的共同点是,每次CPU升高都是Chassis 1 slot 2 CPU 1同一块CPU,查看每块板卡上承载的业务,对比Chassis 1 slot 3 CPU 1与Chassis 1 slot 2 CPU 1没有区别,会话量一致,丢包率也一致;每次CPU告警的同时伴随vCPU核都会升高, 其中kdrvdp线程cpu负载上涨明显,而kdrvdp主要作用是处理转发业务流量。

三、处理过程

根据普通的排查方式抓取的会话数、流量、端口情况均未发现明显异常点,故准备在debug模式下抓取异常时的包文件进行分析:

1、先开启terminal monitor和terminal debugging;

2、设定监控阈值:monitor cpu-usage threshold 60 chassis 1 slot 2 cpu 1 core 4 to 47;

3、开启监控窗口:双击打开packet-capture.bat;

4、第一次当CPU值达到60%以上持续10秒钟,就会提示告警,并打印告警

5、对报文进行分析:

发现在故障时,抓包发现有两个高频出现的IP,产生了大量数据包。

尝试对高频的IP客户端的流量手工引流到其他板卡进行观察,查看板卡上丢包情况,与之前无明显区别,无明显效果;说明问题点不在两个高频IP问题上。

6、NAT映射的分析

故障板卡上有做NAT映射的配置,NAT映射的流量全部集中故障号板。怀疑可能是nat映射的流量导致,尝试对nat映射流量做了分流验证,查看板卡上丢包情况,但没有改善,问题依旧。

7、继续跟踪分析cpu核心处理信息,发现中间经历了ACL的过程,期间也有读锁过程,锁被ACL拿到后,发现没有其余足够的资源了,从而导致CPU使用率升高。

8、跟踪查看这段ACL策略,ACL有个加速功能未开启,同时发现ACL下条目非常多,依次回退之前的操作,关闭引流,测试开启这条ACL的accelerate加速功能。操作后,再次观察核心防火墙的运行状态,测试提交安全策略和高峰时期,CPU不再继续升高,故障问题解决。

9、故障原因最终定位是防火墙老的内核版本下有限速功能,且默认关闭模式,虽通过开启加速功能后,故障问题得以改善,考虑到防火墙老版本下还存在其他隐患点,在综合评估后,对防火墙系统做了一次版本升级,彻底解决该问题并防范其他隐患发生。

四、经验总结

防火墙CPU升高现象常有发生,当遇到常规操作和排查手段都经历了一遍无果时,不妨丰富排查的手段,例如开启debug抓取更多日志,一步一步查看后台消耗CPU的模块及异常问题点,同时根据发生的问题最小化测试定位验证问题,并最终解决问题。本次防火墙CPU高原因主要有2个:版本内核默认有CPU限速功能未开启;同时过多的ACL长连接检测导致CPU耗尽。后期产品运行过程中,针对厂商推荐的升版补丁,应在做好充分评估的前提下,考虑及时对版本进行一个升级割接,优化老配置下官方发布的一些已知隐患点,避免一些故障的发生。

这篇关于防火墙CPU频繁升高导致丢包案例一则的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/849174

相关文章

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地

Java进程CPU使用率过高排查步骤详细讲解

《Java进程CPU使用率过高排查步骤详细讲解》:本文主要介绍Java进程CPU使用率过高排查的相关资料,针对Java进程CPU使用率高的问题,我们可以遵循以下步骤进行排查和优化,文中通过代码介绍... 目录前言一、初步定位问题1.1 确认进程状态1.2 确定Java进程ID1.3 快速生成线程堆栈二、分析

MySQL 表的内外连接案例详解

《MySQL表的内外连接案例详解》本文给大家介绍MySQL表的内外连接,结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录表的内外连接(重点)内连接外连接表的内外连接(重点)内连接内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我

conda安装GPU版pytorch默认却是cpu版本

《conda安装GPU版pytorch默认却是cpu版本》本文主要介绍了遇到Conda安装PyTorchGPU版本却默认安装CPU的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录一、问题描述二、网上解决方案罗列【此节为反面方案罗列!!!】三、发现的根本原因[独家]3.1 p

Linux CPU飙升排查五步法解读

《LinuxCPU飙升排查五步法解读》:本文主要介绍LinuxCPU飙升排查五步法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录排查思路-五步法1. top命令定位应用进程pid2.php top-Hp[pid]定位应用进程对应的线程tid3. printf"%

Java Stream.reduce()方法操作实际案例讲解

《JavaStream.reduce()方法操作实际案例讲解》reduce是JavaStreamAPI中的一个核心操作,用于将流中的元素组合起来产生单个结果,:本文主要介绍JavaStream.... 目录一、reduce的基本概念1. 什么是reduce操作2. reduce方法的三种形式二、reduce

Spring Boot 整合 Redis 实现数据缓存案例详解

《SpringBoot整合Redis实现数据缓存案例详解》Springboot缓存,默认使用的是ConcurrentMap的方式来实现的,然而我们在项目中并不会这么使用,本文介绍SpringB... 目录1.添加 Maven 依赖2.配置Redis属性3.创建 redisCacheManager4.使用Sp

springboot项目redis缓存异常实战案例详解(提供解决方案)

《springboot项目redis缓存异常实战案例详解(提供解决方案)》redis基本上是高并发场景上会用到的一个高性能的key-value数据库,属于nosql类型,一般用作于缓存,一般是结合数据... 目录缓存异常实践案例缓存穿透问题缓存击穿问题(其中也解决了穿透问题)完整代码缓存异常实践案例Red

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.