当前位置: 首页 > article >正文

【安全科普】NUMA防火墙诞生记

一、我为啥姓“NUMA”

随着网络流量和数据包处理需求的指数增长,曾经的我面对“高性能、高吞吐、低延迟”的要求,逐渐变得心有余而力不足。

多CPU技术应运而生,SMP(对称多处理)和NUMA(非一致性内存访问)成为当下最适用的多CPU硬件架构。

SMP的主要特征是“共享”,即所有CPU共享使用全部资源,包括内存、总线和I/O;它的缺点是核数增加到一定程度,就会达到内存读取的性能瓶颈。

SMP架构

为了解决这个问题,工程师们设计了NUMA架构:将CPU划分到不同组(Node),每个节点都有自己的内存和计算资源,处理器可以更灵活地分配资源,提升整体性能和效率。

此外,NUMA架构还可以通过增加节点数量,扩展处理器的计算和存储能力,这让它非常适应大规模并行处理场景。

NUMA架构

基于NUMA架构设计成为防火墙“升级”的优选方案,改良处理器与本地内存之间的访问路径,满足高吞吐、低延迟的网络安全应用的需求,现在的我已经成为了百G防火墙队伍中的主力军。

二、升级后的我强在哪

1、高并发处理能力

每个处理器节点都可以独立处理本地的连接请求和数据流量。通过负载均衡技术(如基于哈希的负载均衡),NUMA防火墙能够将流量均匀分布到各个处理器节点,避免单点瓶颈的问题

例如,使用接收端扩展(RSS)技术,可以将入站流量根据哈希值分配到不同的CPU核,提高并发处理能力。

2、数据包处理自动化

NUMA架构支持高效的数据包处理流水线。每个处理器节点可以专注于流水线中的特定阶段,包括:

  • 数据包分类,根据预定义的规则集,分类数据包。
  • 状态跟踪,维护连接状态表,实现状态检测。
  • 策略匹配,根据安全策略进行包过滤和策略应用。
  • 深度包检测(DPI),对数据包内容进行深度检测,以识别应用层攻击。

通过流水线实现流程自动化,各处理器节点并行计算不同的数据包处理阶段,显著提高整体工作效率

3、智能流量调度

智能流量调度算法可以将流量合理分配到各个处理器节点,避免多处理器间的不均衡负载。常用的调度算法包括:

  • 轮询调度(Round-Robin),简单高效,将流量均匀分配到各处理器节点。
  • 最短路径优先(SPF),根据路径长度和处理器负载,动态调整流量分配。
  • 连接哈希调度,根据连接的哈希值,确保同一连接的流量始终由同一处理器节点计算,提高缓存命中率。

结合实际流量特点选用调度算法,可以大幅提升NUMA防火墙的性能与效率。

三、助我升级的关键技术

1、高效数据包过滤

NUMA防火墙通过多核并行处理能力,实现高效的数据包过滤。每个处理器节点都可以独立运行包过滤算法,包括基于规则集的包过滤、状态检测包过滤和应用层包过滤(Snort、Suricata等)。

2、深度包检测(DPI)

DPI是下一代防火墙的重要功能,可以识别并防御应用层攻击。在NUMA架构下,每个处理器节点会进行不同的数据流处理或DPI任务,能够完成大规模数据包流量的处理,实现高性能深度包检测。

3、连接状态维护

NUMA防火墙需要维护大量的连接状态信息,以支持状态检测。可以将连接状态表分布到各处理器节点,减少跨节点访问的延迟;应用哈希分区技术,将连接状态信息按哈希值分配至不同节点,提高访问效率。

4、安全策略执行

NUMA架构中的安全策略执行同样可以分布在多个处理器节点,每个节点根据预定义的策略规则,独立执行安全策略,包括访问控制、流量限制和入侵检测功能。使用高效的规则匹配算法(Aho-Corasick算法等),还能够显著提高策略执行效率。

NUMA防火墙具备多核并行处理、内存局部优化、智能流量调度、高效的包过滤及DPI等核心能力,为用户提供高性能、低延迟、强扩展性的创新体验。随着网络安全需求的日新月异,NUMA架构在高性能防火墙设计中的应用也将更加广泛和深入。


http://www.kler.cn/a/396189.html

相关文章:

  • cache中setID和index
  • 二分搜索的三种方法
  • 制作图片马常用的五种方法总结
  • kubesphere环境-本地Harbor仓库+k8s集群(单master 多master)+Prometheus监控平台部署
  • 基于yolov8、yolov5的鱼类检测识别系统(含UI界面、训练好的模型、Python代码、数据集)
  • 深度学习和图像处理
  • 狼蛛F87Pro键盘常用快捷键的使用说明
  • 字节青训-小M的多任务下载器挑战、版本号比较
  • STM32完全学习——F407ZGT6点亮LED
  • 力扣-Mysql-3293-计算产品最终价格(中等)
  • CentOS中安装Webmin进行可视化管理linux
  • 从 Rust 官方文档理解 Ownership
  • 零基础Java第十八期:图书管理系统
  • 【学习】HTTP
  • 【前端】深入浅出的React.js详解
  • SpringCloud2023实战之接口服务测试工具SpringBootTest
  • ORB-SLAM2源码学习:ORBextractor.cc:ORBextractor::operator()主入口函数
  • 开源AI大模型工作流神器Flowise本地部署与远程访问
  • VMware高危漏洞VMSA-2024-0019修复堆溢出和权限提升漏洞
  • 最后一个单词的长度---每日小题
  • 【免越狱】iOS砸壳 可下载AppStore任意版本 旧版本IPA下载
  • Spring Boot框架:电商系统的技术革新
  • CSS Grid 布局实战:从入门到精通
  • 推理计算:GPT-o1 和 AI 治理
  • 一文说清C++类型转换操作符(cast operator)
  • datawhale11月组队学习 模型压缩技术2:PyTorch模型剪枝教程