SmartNIC을 활용한 100G SURICATA 성능 구현
- dc0149
- 3월 24일
- 6분 분량

Accelerating Suricata with Napatech stateful flow processing technology
Suricata는 무료 오픈 소스 네트워크 위협 탐지 엔진으로 실시간 침입 탐지(IDS), 침입 방지(IPS), 네트워크 보안 모니터링(NSM) 및 오프라인 PCAP 프로세싱이 가능한 보안 애플리케이션입니다. Suricata는 강력하고 광 범위한 RULE SET과 SIGNATURE를 사용하여 네트워크 트래픽을 검사하며, 복잡한 위협을 탐지하기 위한 강력한 Lua scripting Support을 제공합니다.
위협이나 이상 행동이 감지되면 Suricata는 관리자에게 알림을 보내고, 선택적으로 이를 차단하거나 중지하려고 시도합니다.
네트워크 트래픽의 증가와 정교한 Attack Vector의 증가에 따라 IDS/IPS 장비의 CPU에 큰 부담을 주고 있습니다. 이를 해결하기 위해선 최대한 많은 패킷 을 CPU대신 FPGA 기반 SmartNIC으로 오프로드하여 처리 하는것 입니다.
Napatech는 SmartNIC 에서 애플리케이션으로 직접 패킷을 전송하는 Zero-Copy DMA(Direct Memory Access)를 제공하고 해당 작업에 필요한 CPU 사이클을 자유롭게 하여 Suricata에서 드라마틱한 패킷 처리 성능을 보여주었습니다.
최신 Suricata 버전에서는 Napatech의 Stateful Flow Processing 기능을 활용하여 성능을 더욱 향상시킬 수 있습니다. 이 기능은 호스트 CPU에서 트래픽을 처리할 필요 없이 FPGA에서 패킷 처리의 상당 부분을 FLOW별로 처리하여 CPU 부담을 줄이는 동시에 더 높은 성능을 확인 할 수 있습니다. .
Suricata Acceleration
FLOW내의 수천 개의 공격 Signature에 대한 모든 패킷을 실시간으로 검사하려면 엄청난 컴퓨팅 성능이 필요합니다. SURICATA 3.2 릴리스부터 관리자는 특정 기준과 일치하는 트래픽은 Bypass 하도록 지정하여 추가적으로 분석이 필요 없게 설정이 가능합니다.
"BYPASS" 기능이 적용되는 일반적인 상황은 다음과 같습니다:
암호화된 트래픽: Suricata Application Layer Pharser는 암호화된 트래픽(TLS, IPsec, Kerberos)의 초기 핸드셰이크 후에 추가 처리 요청을 중단하는 기능을 가지고 있습니다.
스트리밍 서비스: 알려진 공급자(예: 넷플릭스, 유튜브, 스포티파이, 애플 뮤직 등)로부터 대규모 스트리밍이 예상되는 경우, 모든 패킷을 디코딩할 필요 없이 정책에 따라 트래픽을 통과시키거나 차단할 수 있습니다.
특정 유형의 트래픽에 대한 특별한 경우: 다른 예상되는 대규모 흐름(예: 백업 스트림) 또는 특정 호스트나 애플리케이션을 신뢰할 수 있는 곳.
Improving Suricata performance with Napatech SmartNIC
Suricata와 같은 네트워킹 및 보안 애플리케이션은 CPU 사용량이 매우 높고 Flow 기반으로 작동하지만, 모든 패킷이 항상 애플리케이션을 통해 처리되어야 하는 것은 아닙니다. 하나의 Flow에서 처음 몇 개의 패킷만이 중요할 수도 있고, 특정 프로토콜은 무시해도 되거나, 특정 사용자 간의 통신만 검사가 필요할 수도 있습니다.
Napatech 솔루션은 이러한 상황에서, Flow 기반 액션 처리 방식을 통해 x86 프로세서를 우회(FWD, Block, Redirect)하고, 워크로드에 특화된 FPGA를 활용해 Flow 단위의 액션 처리를 수행합니다. 이를 위해서는 x86 애플리케이션과 SmartNIC 간의 API를 통한 긴밀한 통합이 필요하며, 애플리케이션이 Flow 단위로 액션을 변경할 수 있어야 합니다.
Bypass의 기본 개념은 추가 검사가 필요 없는 패킷에 대해서는 가능한 한 패킷 처리 파이프라인의 초기에 처리를 중단하는 것입니다. Suricata 소프트웨어에서는 Rule Signature에 ‘bypass’라는 키워드를 사용해 이 기능을 활성화할 수 있으며, 정의가 내려지면 동일한 Flow의 나머지 트래픽은 전체 디코딩 및 검사 과정에서 안전하게 제외됩니다.
Example : IP 주소가 일치하는 Flow를 Bypass하는 Signature는 다음과 같습니다:
pass ip 1.2.3.4 any <> any any (msg:”pass all traffic from/to 1.2.3.4”; bypass; sid:1;)
Napatech는 Bypass된 트래픽을 Suricata나 호스트 CPU의 추가 개입 없이 SmartNIC의 FPGA 하드웨어로 오프로드하여 처리할 수 있는 Flow Management 기능을 지원합니다.
소프트웨어에서 CPU 리소스를 사용하여 처리하던 Bypass기능을 Napatech SmartNIC에서 처리함으로써 시스템 리소스 소모를 줄이는 동시에 성능은 드라마틱하게 향상됩니다.
이 기능은 최근 Open Information Security Foundation(OISF)에서 관리하는 Suricata의 Git repository에 추가 되었으며, 앞으로 출시되는 모든 Suricata 버전에 포함될 예정입니다.
이 기능은 Napatech Flow Management API를 기반으로 하며, 이는 네트워크 트래픽을 Flow 단위로 추적하는 애플리케이션이 일부 또는 전체 처리를 SmartNIC FPGA로 오프로드할 수 있도록 해줍니다. 애플리케이션 수준의 분석은 여전히 호스트 CPU에서 수행되지만, 패킷 단위의 액션은 네트워크 인터페이스 카드의 하드웨어에서 실행됩니다.
Flow Management API는 네트워크 플로우를 전체 수명 주기에 걸쳐 관리할 수 있는 기능을 제공합니다.
Maintaining a table of active flows
Adding new flows
Executing per-packet actions
Synchronizing packet/byte counters
Updating flow records on termination or timeout
Suricata 소스 코드는 다른 애플리케이션 개발자들을 위한 Napatech API의 Exxample Code를 제공합니다.
애플리케이션 소프트웨어에 통합된 Napatech Flow Manager 기능을 사용하면 Suricata 사용자는 따로 프로그래밍이 필요하지 않고, 익숙한 Suricata Rule 인터페이스를 통해 하드웨어 가속 Flow 관리가 가능합니다. 하드웨어에서 Flow Bypass 작업을 활성화하는 것은 Napatech API를 활용하여 Suricata를 컴파일하고 Rule Signature에 'bypass' 키워드를 입력하기만 하면 됩니다.
Suricata가 Flow을 Bypass할 수 있다고 판단하면 해당 Flow의 모든 패킷이 SmartNIC에서 처리됩니다. 이를 통해 호스트 CPU가 패킷 처리에서 벗어나 애플리케이션의 처리량을 높일 수 있고 SUricata 성능이 향상됩니다.
Hardware bypass demonstration
아래 데모에서는 소프트웨어 Bypass를 사용하는 일반 NIC 기반의 Suricata 구성과, 동일한 설정에서 zero-copy 패킷 DMA 및 하드웨어 바이패스를 활용하는 Napatech SmartNIC 기반 구성의 처리량을 비교합니다.
Hardware Configuration
테스트 구성은 Dual socket HP DL380 G8과 인텔® Xeon® E5-2690 v2 3.0GHz CPU(40개의 HT 코어)를 탑재하고 CentOS 7.5를 실행하는 것을 기반으로 했습니다. 트래픽은 TCP(88%)와 UDP(12%) 패킷이 혼합된 실제 네트워크 트래픽 캡처를 PCAP로 재생하여 백만 개 이상의 고유한 Flow에서 생성하였습니다.
트래픽은 수백 명의 사용자가 수십 개의 인터랙티브 클라이언트-서버 애플리케이션과 인터넷 액세스를 실행하는 엔터프라이즈 네트워크에서 볼 수 있는 일반적인 트래픽이고.
NT200 2x40 SmartNIC + Napatech PCAP Replay 애플리케이션을 사용하여 Napatech NT200 SmartNIC (2x40GE) 또는 Intel XL710(1x40GE) 네트워크 인터페이스 카드로 구성된 테스트 대상 장치(DUT)에 40GE 트래픽을 보내 진행 하였습니다.

\Suricata Configuration
대부분의 조직은 IDS/IPS가 잠재적인 악성 활동과 구분하여 네트워크상의 정상적인 트래픽을 인식할 수 있도록 설정을 조정해야 합니다. 이러한 조정은 Rule Set을 세밀하게 튜닝하고, 상황에 맞게 Bypass 기능을 활성화하는 작업을 포함합니다. 사용자는 Suricata의 규칙 시그니처에 ‘bypass’ 키워드를 사용하여 바이패스를 활성화할 수 있고 이번 테스트에서는 기본 Suricata 규칙 집합에 하나의 바이패스 규칙이 추가되었습니다.
drop tcp any [!80,!20,!21,!23,!25,!53,!67,! 68] <> any any (msg: “SURICATA Test rule”; priority:1;classtype:protocol-command-decode; bypass; sid:1000001; rev:2;)
이 규칙은 모든 TCP 트래픽을 우회(bypass)하되, 특정 포트 번호 집합으로 송수신되는 트래픽은 예외로 처리하라는 의미입니다. 이와 같은 방식의 규칙은 UDP 트래픽, 특정 IP 주소 집합 간의 트래픽, 특정 애플리케이션 프로토콜 등에 대해서도 유사한 방식으로 바이패스를 설정할 수 있습니다.
테스트에 사용된 트래픽 패턴에서는 전체 트래픽 중 약 70%가 우회되었고, 나머지 30%는 호스트 CPU 상의 Suricata 소프트웨어가 처리했습니다. 이 경우에도 SmartNIC는 애플리케이션에 zero-copy DMA를 제공하지만, 모든 플로우는 소프트웨어에서 디코딩, 재조립 및 전체 처리를 거쳐야 합니다.
실제 환경에서는 우회되는 트래픽의 비율이 0%에서 100%까지 다양할 수 있으며, SmartNIC으로 오프로드되는 트래픽이 많을수록 시스템이 처리할 수 있는 전체 용량도 그만큼 높아집니다.
Test Results
IDS/IPS에서 패킷손실 없는 성능은 보안을 위해 절대적인 요구사항입니다.
테스트 결과에 따르면, 단 3%의 패킷 손실만으로도 10%의 경고 누락이 발생할 수 있으며, 불과 0.4%의 패킷 손실로도 파일 추출 실패율이 10%에 이를 수 있습니다.
이번 테스트에서는 Napatech SmartNIC에서 하드웨어 바이패스를 사용할 경우, 소프트웨어 바이패스를 사용하는 일반 NIC 대비 손실 없는 처리량이 2.5배 더 높은 것으로 나타났습니다.
측정된 Lossless Suricata Performance:
IPS using the Emerging Threats Open Ruleset with no bypass: 15 Gbps
IPS using the Emerging Threats Open Ruleset with software bypass: 30 Gbps
IPS using the Emerging Threats Open Ruleset with SmartNIC hardware bypass: 76 Gbps
CPU utilization
Standard NIC에서는 Suricata의 워크로드 분포가 매우 불균형하게 나타났습니다. 대략 절반의 코어는 사용률이 100%에 달했지만, 나머지 코어들은 50% 미만의 사용률을 보였습니다.
이는 많은 기존 솔루션들이 비대칭적인 트래픽 분산을 하거나, 비지역 메모리 접근 시 성능 저하를 초래하기 때문입니다.

CPU utilization (standard NIC)
반면, Napatech SmartNIC에서는 모든 코어에 워크로드가 보다 고르게 분산되어, 대부분의 코어가 80% 미만의 사용률로 동작했습니다.

CPU 사용률(Napatech SmartNIC)
이렇게 균형 잡힌 워크로드 분배는 시스템 효율성을 높여주는데, 일부 CPU 코어에 과부하가 걸려 패킷 손실이 발생하는 상황 없이 시스템 전체 자원을 효과적으로 활용할 수 있기 때문입니다.
Summary
이번 테스트에서는 동일한 시스템에서 소프트웨어 기반으로 바이패스를 처리할 경우, 패킷 손실 없이 달성 가능한 처리량은 30 Gbps에 불과하지만, Napatech의 FPGA 기반 SmartNIC을 활용해 Bypass된 트래픽을 처리함으로써 Suricata가 패킷 손실 없이 76 Gbps의 처리량을 달성할 수 있음을 보여 주었습니다.
또한 Napatech NIC은 시스템 내의 모든 사용 가능한 CPU 코어에 Suricata 워크로드를 고르게 분산시켜, 프로세서 과부하나 버퍼 오버플로우로 인한 처리 지연을 최소화했습니다.
Suricata의 하드웨어 바이패스 기능과 Napatech Flow Manager API는 Napatech의 LinkTM Capture 및 LinkTM Inline 소프트웨어와 함께 NT200A02 및 NT50B01 FPGA 기반 SmartNIC 하드웨어에서 지원됩니다.
SmartNIC Hardware Feature Highlights
General Hardware Specs | NT200A02 | NT50B01 |
Dimensions | 1⁄2-length, full-height PCIe | 1⁄2-length, 1⁄2-height PCIe |
Network Ports | 2×QSFP28 | 2xSFP28 |
Data rate | 8×10Gbps,2×10/25Gbps, 4×10/25Gbps,2×40Gbps, 2×100Gbps | 2×10/25 Gbps |
Onboard memory | 12GB | 10 GB |
PCIe configuration | 16-lane 8 GT/s PCIe Gen3 | 16-lane 8 GT/s PCIe Gen3 |
Shared Hardware Feature Highlights
• Zero packet loss for all frame sizes from 64 bytes to 10,000 bytes
• keep or discard errored frames
• Addressing up to 1 TB application buffer memory
• Packet or segment delivery to application
• Hardware-acceleration for
:• Multi-port packet merge
• Load distribution across up to 128 CPU cores
• Filtering based on e.g. L3/L4 criteria
• Stateful flow management
• GTP, IP-in-IP, GRE and NVGRE tunnel support
• IP fragment handling
• Slicing at fixed or dynamic offset
• De-duplication in hardware
• RMON1 counters, including jumbo frames
• IEEE 1588-2008 PTP and PPS time synchronization
• Hardware Time Stamp: Resolution: 1 ns
• Stratum 3 compliant TCXO
• OS time synchronization
Napatech Software Suite Feature Highlights
• NTAPI: Common API for all Napatech SmartNICs
• Simple programming interface allowing fast integration
• Zero copy transfer of data to host
• Zero copy transfer of data between SmartNICs
• Packet-based interface providing abstraction of hardware details
• Stateful Flow-aware match and action processing• Matching – flows are completely configurable based on flexible key matcher
• Actions• Drop (Block) – Drop unwanted traffic, reducing system resource reduction and increasing performance
• Forward (cut-through/bypass) – Local, on card, port to port forwarding, reduces CPU demands and PCIe bottlenecks, lowers latency to increase application performance
• Flow-based Load Balancing (RSS) – efficient and distributed CPU utilization
• Per flow statistics (packets / bytes) with directional state per packet
• Flow Aging – Monitor TCP flow state, configurable timers for UDP
• Flow Metadata – information sharing between host application and SmartNIC offload engine
• Advanced features including:
• Data merging of port data from multiple SmartNICs into a single data stream
• Data sharing of captured data between multiple customer applications without the need for replication
• Operating systems: Linux, Windows• ibpcap, WinPcap and DPDK• IEEE 1588-2008 PTP stack
• SDK tools included in source code for debugging and prototyping and as application examples
Comments