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

在很多人的认知中:

  • 网关就是转发数据包
  • 防火墙就是匹配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
用户态协议栈
零拷贝
轮询模式

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

典型架构

https://images.openai.com/static-rsc-4/kUr41DdcUAeim0OnBLjKjPtcUhrhqLQJCfUs9ipX08oJdSRyynY0dZf55uGMSe_vs3ou0tvSkRWCe3JqQqpJRb_hOK4HCBkPKnTNCL-_4RL-Hn00WkehV64Fly5j5bDW0gMYwEUp_l5z2lT6Mlousb9Wgre46qKXTFJSv3Cb-EX8J7lGNf8SjcVGlOzHQM03?purpose=fullsize

https://images.openai.com/static-rsc-4/kyDChY6-8U8F-qL-WKlvVe1ZUnbUmagcapkYsTM9P9-ALN3sGUXBImv5DoUB4s5ZXST0obsDFrgIF0UdcjTLTJmUeZ6CN7rFoYBSOTD01iwr9moPq4RbUnzj-HYm51vbQJISKyReZKc6AwnHI7HYHWx-pVSnqaHL6UFQLytDLMJe2XPcrd4FSXqKK21aPpbs?purpose=fullsize

          +----------------+
          | 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普遍采用:

https://images.openai.com/static-rsc-4/4Gqsdpi1zLEh-in3ndFITVqN96hxIwC-3ERMRfJoawZrTHfMcbWVUbcbMGwzhs0V0jsPcehRR7aZX8WbypNY_O89klBCZHfAmQgmyLiWGUMg034MCH-H05djOblo2cw9ZANSSaEucV49UkXPzTY_auh-uMkNwKOgN5ntlAF9vuQKGuXBgA6H5FhzYDAWLPyc?purpose=fullsize

https://images.openai.com/static-rsc-4/tbzSMH7oNwZOQrdcdfucJQFG9u-eXz1vJ1HcMNEkGSmmZDJWezbonVjzOGV9ADWri2fcOpAJ_QrD1RrwQBmiRGBSFqC0BwRkbLBZxPzQ8b_MsX-VOWYaNdx5ycPecisAKTXTo33twwwaFKGyWQDRisOO2r8UC6Q2ttMy-6qo6zL-G3OqJle6sET4Zbr7H7se?purpose=fullsize

https://images.openai.com/static-rsc-4/fmLhbifyL4Fuduf0WzaXaA593I4d50u2yYgQvJ7hj2sylxKJO9qkniYxjj0V9ttaST59Q5Pz8IqKoDxxqs1DR-hekVyUf3My5hkB3q1bs0BBHWQJFtwKVmAm_nmxDXfvMTNi7Hri7f-vxLUB2CAb9ef4wET72azb5_glOA5viss5JOHypQSxNIM6vn7f-Zbw?purpose=fullsize

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防火墙的数据面流水线

典型实现:

https://images.openai.com/static-rsc-4/uonZfqFPysW_7GBe5kw41x0Spgmc43TqKtW2Am-n3Wff47OIRpaipJVb-k8YR0rKOgIEqwgMy0-nnnSBPVqBQ8tK8XegCwujHovPye79otn-w2jl0f3pjKq6wcC8_X5dhKHclyv9At7QPm2-omaN-kGFleAPrOAiskuRaBfH_0BVBdDWXGDnCOinjxfBtssz?purpose=fullsize

https://images.openai.com/static-rsc-4/IyrUMVVQuBQpqtPWnGSwrwBibRVZVu37HCVRkUhf7tJoep0SQuPTaaLO1slyssF9nakidaXRa8itss_MulAfMWUlrI6z8GGrXJlukeD8MwPH8FLLlWElvGhMn99uNimyTzRRhYuzb4tRrVD5h8cEldTsoMNIDXzfxBHUnYYPs49r4tSOy_timi2nnMWp6OIM?purpose=fullsize

https://images.openai.com/static-rsc-4/fO7hVf26_7FXc-vB42Kt0-jDJULjtwjy2w0eqnPb9GJVZiXrBI6aopjbaejf1Oc-bVkU0GcYWS8MBLjFz8NSo-QNrA1nXi6keV71vWB_f0F2Ey73Xtc8Ma4LZ20FbwfH79DYgSX4WxmFXNiOM5DfFAebc3ZkM6lzdkAfdenC-BuJx9nitXU5essPGzinTpp3?purpose=fullsize

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以及云原生网络基础设施的设计理念,而这也正是下一代网络安全产品演进的方向。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐