三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

从百G到T级吞吐:高性能网关、防火墙、IPS、WAF背后的架构设计与性能优化实践

从百G到T级吞吐:高性能网关、防火墙、IPS、WAF背后的架构设计与性能优化实践

一、网络安全设备面临的性能挑战

在很多人的认知中:

  • 网关就是转发数据包
  • 防火墙就是匹配ACL规则
  • IPS就是检测攻击特征
  • WAF就是分析HTTP请求

但实际上,现代安全设备需要完成远超传统网络设备的工作。

一个典型的数据包可能需要经过:

接收报文 ↓ L2/L3/L4解析 ↓ 会话查找 ↓ ACL匹配 ↓ NAT处理 ↓ IPS检测 ↓ 应用识别 ↓ 日志记录 ↓ 转发发送

在100G网络下:

100Gbps 64Byte报文 ≈ 148.8 Mpps

意味着:

每秒处理 1.48亿个数据包

假设设备有32个CPU核心:

148.8Mpps ÷ 32 ≈ 4.65Mpps/Core

每个数据包仅有:

≈ 215ns

处理时间。

这意味着:任何一次Cache Miss都可能比整个报文处理过程更昂贵。

因此高性能安全产品的核心问题已经不再是功能实现,而是架构设计。


二、传统Linux内核方案为什么性能不足

传统方案如下:

NIC ↓ DMA ↓ Kernel RX Ring ↓ SoftIRQ ↓ Protocol Stack ↓ Netfilter ↓ iptables ↓ Application

问题1:频繁上下文切换

硬中断 ↓ 软中断 ↓ 用户进程

每秒数百万次切换。


问题2:数据拷贝

NIC ↓ Kernel Buffer ↓ User Buffer

一次额外Copy:

100Gbps ≈ 12.5GB/s

CPU大量消耗在内存带宽上。


问题3:锁竞争

例如:

conntrack route table arp table nat table

都可能成为热点资源。


问题4:Cache污染

网络包流经:

Driver TCP/IP Netfilter Socket Application

Cache Line频繁失效。


因此现代高性能产品几乎全部转向:

DPDK 用户态协议栈 零拷贝 轮询模式

三、现代安全设备总体架构

典型架构

+----------------+ | Management Plane| +-------+--------+ | v +-------------------------------------+ | Control Plane | | Route NAT Policy Session Sync | +----------------+--------------------+ | v +-------------------------------------+ | Data Plane | +-------------------------------------+ RX | Dispatcher | +---- Worker0 +---- Worker1 +---- Worker2 +---- WorkerN | TX

控制面:

配置管理 路由管理 策略管理 会话同步 HA同步

数据面:

高速转发 ACL NAT IPS DPI

四、数据面核心设计

Dispatcher + Worker模型

当前主流设计:

RX Queue ↓ Dispatcher ↓ Hash ↓ Worker

例如:

worker_id = hash(5tuple) % N;

保证:

同一Flow 永远进入同一个Worker

这样可以避免:

会话锁 共享状态锁

为什么不用全局Session表

错误设计:

32 Worker 共享Hash表

会导致:

spinlock rwlock CAS竞争

性能急剧下降。


正确设计:

Session Affinity
Flow A -> Worker3 Flow B -> Worker7 Flow C -> Worker1

会话只属于一个核心。


五、防火墙的状态检测实现

Session结构

typedef struct { uint32_t sip; uint32_t dip; uint16_t sport; uint16_t dport; uint8_t protocol; uint64_t last_seen; uint32_t state; } session_t;

Session Hash

通常采用:

5-Tuple
src ip dst ip src port dst port protocol

生成Key。


查找流程

Packet ↓ Hash ↓ Session Table ↓ Found ? ↓ State Check

要求:

O(1)

时间复杂度。


六、NAT系统设计

NAT是很多网关设备的性能瓶颈。

因为需要:

Session创建 端口分配 双向映射 超时管理

NAT映射表

inside ip:port ↓ outside ip:port

例如:

10.1.1.100:1234 ↓ 1.1.1.1:50001

双Hash设计

正向查询

Inside -> Outside

反向查询

Outside -> Inside

因此通常维护:

Forward Hash Reverse Hash

两个表。


七、IPS的最大挑战:特征匹配

IPS需要检查:

Payload

例如:

SQL Injection XSS RCE Shellcode

最朴素方案

for(rule) { strstr(payload); }

复杂度:

O(N*M)

完全不可接受。


Aho-Corasick自动机

现代IPS普遍采用:

Trie + Failure Link

构建:

AC Automaton

复杂度:

O(Text Length)

与规则数量基本无关。


Hyperscan

目前主流方案:

Hyperscan

特点:

SIMD AVX2 AVX512 DFA优化

性能可达:

几十Gbps 甚至上百Gbps

正则匹配能力。


八、WAF为什么比IPS更难

IPS主要处理:

L3/L4

WAF处理:

L7 HTTP

例如:

POST /login username=admin password=' OR 1=1 --

需要解析:

HTTP Header Cookie URL Body JSON XML

HTTP重组

攻击流量可能被拆分:

Packet1: GET /lo Packet2: gin.php

因此必须:

TCP Reassembly

重组完整HTTP流。


WAF流水线

TCP Reassembly ↓ HTTP Parser ↓ Normalization ↓ Rule Engine ↓ Action

九、NUMA优化

很多设备:

2 Socket 64 Core

结构如下:

CPU0 | Memory0 CPU1 | Memory1

跨NUMA访问:

100ns+

本地访问:

50ns

差距接近一倍。


最佳实践

NIC0 ↓ Socket0 ↓ Worker0~15
NIC1 ↓ Socket1 ↓ Worker16~31

避免跨NUMA访问。


十、百G防火墙的数据面流水线

典型实现:

RX ↓ Prefetch ↓ Parser ↓ Session Lookup ↓ ACL ↓ NAT ↓ IPS ↓ QoS ↓ TX

每一步:

rte_prefetch0(ptr);

提前加载Cache。


批处理:

32 packets 64 packets 128 packets

利用:

CPU流水线 SIMD Cache局部性

提升吞吐。


十一、从100G到T级吞吐

行业头部厂商已经采用:

DPDK AF_XDP VPP eBPF SmartNIC DPU GPU DPI

构建下一代架构。

未来趋势:

趋势1:控制面与数据面彻底解耦

Control Plane K8S 微服务
Data Plane DPDK VPP

趋势2:状态同步集群化

Session Sync Distributed Hash

实现:

双活防火墙 双活网关

趋势3:AI辅助检测

传统:

Signature

未来:

AI + Signature

结合:

异常检测 行为分析 威胁预测

十二、总结

高性能网关、防火墙、IPS和WAF的竞争,本质上已经从“功能竞争”演变为“架构竞争”。

当网络进入100G、400G甚至800G时代,决定产品性能上限的已经不是ACL规则数量,而是:

  • 数据面架构设计
  • Cache友好性
  • NUMA亲和性
  • 会话管理机制
  • Dispatcher调度算法
  • DPI匹配引擎
  • 多核扩展能力

对于从事 Linux、DPDK、协议栈开发的工程师而言,真正的核心能力已经不再是会写网络代码,而是能够设计一套在数十核CPU上稳定运行、支持亿级PPS处理能力的数据平面架构。未来的高性能安全设备,将越来越接近运营商级UPF、VPP以及云原生网络基础设施的设计理念,而这也正是下一代网络安全产品演进的方向。

← 返回列表