防火墙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

相关文章

Debian系和Redhat系防火墙配置方式

《Debian系和Redhat系防火墙配置方式》文章对比了Debian系UFW和Redhat系Firewalld防火墙的安装、启用禁用、端口管理、规则查看及注意事项,强调SSH端口需开放、规则持久化,... 目录Debian系UFW防火墙1. 安装2. 启用与禁用3. 基本命令4. 注意事项5. 示例配置R

RabbitMQ消费端单线程与多线程案例讲解

《RabbitMQ消费端单线程与多线程案例讲解》文章解析RabbitMQ消费端单线程与多线程处理机制,说明concurrency控制消费者数量,max-concurrency控制最大线程数,prefe... 目录 一、基础概念详细解释:举个例子:✅ 单消费者 + 单线程消费❌ 单消费者 + 多线程消费❌ 多

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

prometheus如何使用pushgateway监控网路丢包

《prometheus如何使用pushgateway监控网路丢包》:本文主要介绍prometheus如何使用pushgateway监控网路丢包问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录监控网路丢包脚本数据图表总结监控网路丢包脚本[root@gtcq-gt-monitor-prome

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

Python get()函数用法案例详解

《Pythonget()函数用法案例详解》在Python中,get()是字典(dict)类型的内置方法,用于安全地获取字典中指定键对应的值,它的核心作用是避免因访问不存在的键而引发KeyError错... 目录简介基本语法一、用法二、案例:安全访问未知键三、案例:配置参数默认值简介python是一种高级编