fbpx

Mở rộng hiệu suất Suricata lên 100 Gbps với Napatech SmartNICs

Mở rộng hiệu suất Suricata lên 100 Gbps với Napatech SmartNICs – Sử dụng công nghệ xử lý dòng chảy trạng thái.

Link-25, 2-port 25 gigabit Ethernet SmartNIC
Link-25, 2-port 25 gigabit Ethernet SmartNIC
Link-100, 2-port 100 gigabit Ethernet SmartNIC
Link-100, 2-port 100 gigabit Ethernet SmartNIC

Tăng tốc Suricata với công nghệ xử lý dòng trạng thái Napatech

Suricata là một công cụ phát hiện mối đe dọa mạng mã nguồn mở miễn phí, lâu đời, nhanh chóng và mạnh mẽ. Công cụ Suricata có khả năng phát hiện xâm nhập theo thời gian thực (IDS), ngăn chặn xâm nhập nội tuyến (IPS), giám sát an ninh mạng (NSM) và xử lý PCAP ngoại tuyến. Suricata kiểm tra lưu lượng mạng bằng cách sử dụng signature language và quy tắc mạnh mẽ, rộng rãi, đồng thời có hỗ trợ Lua Scripting mạnh mẽ để phát hiện các mối đe dọa phức tạp. Nếu một mối đe dọa hoặc hành vi bất thường được phát hiện, Suricata sẽ gửi cảnh báo đến quản trị viên và tùy chọn tìm cách chặn hoặc ngăn chặn hành vi đó.

Sự gia tăng lưu lượng truy cập mạng và ngày càng tinh vi của các vectơ tấn công đang gây ra áp lực rất lớn lên các CPU của các thiết bị IDS / IPS. Một trong những cách mà các hệ thống này đang thích ứng là giảm tải nhiều hơn khối lượng công việc xử lý gói từ CPU sang FPGA-Based SmartNICs.

Napatech SmartNICs đã được chứng minh là tăng đáng kể lossless throughput của việc triển khai Suricata bằng cách cung cấp DMA (Direct Memory Access) không sao chép các gói trực tiếp từ NIC tới ứng dụng, giải phóng các chu kỳ CPU cần thiết cho tác vụ đó.

Phiên bản Suricata mới nhất có thể được tăng tốc đến hiệu suất cao hơn nữa bằng cách cho phép Napatech SmartNIC xử lý một phần đáng kể quá trình xử lý gói trong FPGA trên cơ sở mỗi luồng mà không cần xử lý lưu lượng trên CPU chủ.

Tăng tốc Suricata

Đánh giá mọi gói tin trong thời gian thực chống lại hàng nghìn signatures tấn công cho hàng trăm hoặc hàng nghìn luồng đồng thời sẽ đòi hỏi sức mạnh tính toán khổng lồ. Để giải quyết vấn đề, kể từ phiên bản 3.2, Suricata đã cho phép quản trị viên chỉ định rằng lưu lượng phù hợp với các tiêu chí nhất định nên được loại trừ khỏi phân tích sâu hơn sau khi đã có quyết định về việc xử lý mong muốn của lưu lượng đó. Đây là một sự tối ưu hóa cho phép các gói vượt qua đường ống phân tích gói đầy đủ sau khi một kết quả vượt qua / thả về lưu lượng đã được thực hiện.

Các tình huống phổ biến khi áp dụng tính năng “bypass” này bao gồm:

– Lưu lượng được mã hóa: Trình phân tích cú pháp lớp ứng dụng Suricata có khả năng ngừng yêu cầu xử lý thêm lưu lượng được mã hóa (TLS, IPsec, Kerberos) sau lần bắt tay đầu tiên.

– Dịch vụ phát trực tuyến: Nơi dự kiến ​​có các luồng lớn từ các nhà cung cấp đã biết (ví dụ: nhạc, phim, v.v. từ Netflix, YouTube, Spotify, Apple Music), lưu lượng truy cập có thể được chuyển qua hoặc bị chặn theo chính sách mà không cần giải mã từng gói.

– Các trường hợp đặc biệt đối với một số loại lưu lượng nhất định: Các luồng lớn dự kiến ​​khác (ví dụ: luồng dự phòng) hoặc nơi các máy chủ hoặc ứng dụng nhất định có thể đáng tin cậy.

Cải thiện hiệu suất Suricata với Napatech SmartNIC

Các ứng dụng mạng và bảo mật như Suricata cực kỳ thâm dụng CPU và nhận biết luồng, nhưng không phải lúc nào ứng dụng cũng cần phải xử lý tất cả các gói. Chỉ một số gói đầu tiên trong một luồng có thể thú vị hoặc các giao thức cụ thể có thể bị bỏ qua, hoặc chỉ các gói đến / từ các cá nhân cụ thể mới đáng được kiểm tra. Giải pháp Napatech sử dụng xử lý hành động dựa trên luồng để bỏ qua x86 hoàn toàn (FWD, chặn, chuyển hướng) bằng cách sử dụng work-load-specific FPGA để xử lý hành động luồng. Điều này yêu cầu tích hợp chặt chẽ giữa các ứng dụng x86 và SmartNIC thông qua API để cho phép các ứng dụng thay đổi hành động trên cơ sở mỗi luồng.

Ý tưởng cơ bản của việc bỏ qua chỉ đơn giản là dừng xử lý các gói không cần kiểm tra thêm trong quá trình xử lý gói càng sớm càng tốt. Tính năng này được bật trong phần mềm Suricata bằng cách sử dụng từ khóa ‘bypass’ trong rule signature, biểu thị rằng sau khi đạt được phán quyết, tất cả lưu lượng truy cập khác trong cùng một luồng có thể bị loại trừ khỏi quá trình giải mã và đánh giá đầy đủ một cách an toàn.

Ví dụ: đây là signature để bỏ qua đối sánh luồng trên địa chỉ IP:

pass ip 1.2.3.4 any <> any any (msg:”pass all traffic from/to 1.2.3.4”; bypass; sid:1;)

Napatech mở rộng ý tưởng này bằng cách cho phép phần cứng SmartNIC xử lý lưu lượng bị bỏ qua trên FPGA mà không cần Suricata hoặc CPU chủ. Nếu không có Napatech FPGA-Based SmartNICs, việc bỏ qua này được thực hiện trong phần mềm. Khi sử dụng Napatech SmartNIC, hành động bỏ qua sẽ được thực hiện trên programable SmartNIC, giúp tăng thêm hiệu suất và giảm tải cho các bộ xử lý đa năng.

Hỗ trợ cho tính năng này gần đây đã được hợp nhất vào kho lưu trữ Suricata git do Open Information Security Foundation (OISF) duy trì và sẽ được đưa vào tất cả các bản phát hành Suricata trong tương lai.

Việc triển khai dựa trên API quản lý luồng Napatech cho phép ứng dụng theo dõi lưu lượng mạng trên cơ sở mỗi luồng để giảm tải một số hoặc tất cả quá trình xử lý đó cho SmartNIC FPGA: phân tích mức ứng dụng vẫn còn trên các CPU chủ trong khi các hành động trên mỗi gói được thực thi trong phần cứng trên thẻ giao diện mạng.

API quản lý luồng có khả năng quản lý các luồng mạng trong toàn bộ vòng đời:

– Duy trì một bảng các luồng hoạt động

– Thêm luồng mới

-Thực thi các hành động trên mỗi gói

– Đồng bộ hóa bộ đếm gói / byte

– Cập nhật hồ sơ quy trình khi kết thúc hoặc hết thời gian

Mã nguồn Suricata cung cấp một ví dụ hoạt động của API Napatech cho các nhà phát triển các ứng dụng khác.

Với chức năng Napatech Flow Manager được tích hợp vào phần mềm ứng dụng, người dùng Suricata không cần lập trình: có thể truy cập quản lý luồng tăng tốc phần cứng thông qua giao diện quy tắc Suricata quen thuộc. Việc kích hoạt hành động bỏ qua luồng trong phần cứng chỉ đơn giản là việc compiling Suricata với sự hỗ trợ của Napatech và bao gồm từ khóa ‘bypass’ trong rule signature.

Khi Suricata xác định rằng một luồng có thể được bỏ qua, tất cả các gói từ luồng đó sẽ được xử lý trong phần cứng SmartNIC trong suốt thời gian của luồng. Điều này giải phóng các CPU chủ khỏi quá trình xử lý gói, cho phép ứng dụng đạt được thông lượng cao hơn.

Minh họa Hardware bypass

Để minh họa giá trị của bỏ qua phần cứng, phần trình diễn này so sánh thông lượng của Suricata trên NIC tiêu chuẩn sử dụng bỏ qua phần mềm với cấu hình giống hệt trên Napatech SmartNIC với gói không sao chép DMA và bỏ qua phần cứng.

Cấu hình phần cứng

Cấu hình thử nghiệm dựa trên HP DL380 G8 ổ cắm kép với CPU Intel® Xeon® E5-2690 v2 3.0 GHz (40 lõi HT), chạy CentOS 7.5. Lưu lượng được tạo ra bằng cách PCAP phát lại một bản ghi lưu lượng mạng thực tế bao gồm hỗn hợp các gói TCP (88%) và UDP (12%) trong hơn một triệu luồng duy nhất. Lưu lượng truy cập là điển hình của những gì có thể thấy trên một mạng doanh nghiệp với hàng trăm người dùng đang chạy hàng chục ứng dụng máy khách-máy chủ tương tác và truy cập internet.

Lưu lượng truy cập được lấy từ ứng dụng phát lại Napatech PCAP trên NT200 2x40GE SmartNIC và mang hơn 40 liên kết GE tới thiết bị đang thử nghiệm (DUT) được định cấu hình bằng Napatech NT200 SmartNIC (2x40GE) hoặc thẻ giao diện mạng Intel XL710 (1x40GE).

Test cấu hình

Cấu hình Suricata

Các tổ chức gần như luôn cần phải hiệu chỉnh IDS / IPS của họ để nhận ra lưu lượng truy cập bình thường trên mạng trông như thế nào so với hoạt động độc hại tiềm ẩn. Những điều chỉnh này liên quan đến việc tinh chỉnh bộ quy tắc và bật bỏ qua khi thích hợp. Như đã lưu ý ở trên, người dùng bật bỏ qua bằng cách sử dụng từ khóa “by-pass” trong chữ rule signature Suricata. Trong thử nghiệm này, một quy tắc bỏ qua duy nhất đã được thêm vào bộ quy tắc Suricata cơ sở. Cú pháp của quy tắc bổ sung là:

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;)

Nói cách khác, quy tắc này chỉ ra rằng bất kỳ lưu lượng TCP nào đều nên được bỏ qua ngoại trừ lưu lượng đến / từ tập hợp số cổng được chỉ định. Cùng một loại quy tắc có thể dễ dàng cung cấp một loại bypass tương tự cho lưu lượng UDP, lưu lượng đến / từ một tập hợp địa chỉ, giao thức ứng dụng cụ thể,…

Với mẫu lưu lượng được sử dụng trong thử nghiệm, hiệu quả là khoảng 70% lưu lượng đã bị bỏ qua và 30% lưu lượng còn lại được xử lý hoàn toàn bởi phần mềm Suricata trên các CPU chủ. SmartNIC vẫn cung cấp DMA không sao chép cho ứng dụng trong trường hợp này, nhưng mọi luồng phải được giải mã, tập hợp lại và xử lý hoàn toàn trong phần mềm.

Trong một ứng dụng thực tế, lượng lưu lượng bỏ qua có thể nằm trong khoảng từ 0 đến 100% và càng nhiều lưu lượng được tải xuống SmartNIC, thì khả năng tiềm năng của hệ thống càng cao.

Kết quả kiểm tra

Đối với IDS / IPS, hiệu suất lossless là một yêu cầu tuyệt đối để bảo mật tối đa. Thử nghiệm đã chỉ ra rằng chỉ cần 3% mất gói có thể dẫn đến 10% cảnh báo bị bỏ lỡ; chỉ mất 0,4% gói có thể gây ra tỷ lệ giải nén tệp tin thất bại 10%.

Trong thử nghiệm này, thông lượng lossless khi bỏ qua phần cứng trên Napatech SmartNIC cao hơn 2,5 lần so với thử nghiệm tương tự với NIC tiêu chuẩn và bỏ qua trong phần mềm.

Đo thông lượng lossless Suricata:

  • IPS sử dụng Emerging Threats Open Ruleset mà không bypass: 15 Gbps
  • IPS sử dụng Emerging Threats Open Ruleset với phần mềm bypass: 30 Gbps
  • IPS sử dụng Emerging Threats Open Ruleset với phần cứng SmartNICs by pass: 76 Gbps

Sử dụng CPU

Trên NIC tiêu chuẩn, khối lượng công việc Suricata được phân phối rất không đồng đều, với khoảng một nửa số lõi hoạt động ở mức sử dụng 100% trong khi các lõi khác ở mức sử dụng dưới 50%. Lý do cho điều này là nhiều giải pháp khác thể hiện phân phối lưu lượng không đối xứng hoặc chính xác là một hình phạt hiệu suất cho truy cập bộ nhớ không cục bộ.

CPU utilization (standard NIC)
CPU utilization (standard NIC)

Trên Napatech SmartNIC, khối lượng công việc được phân bổ đồng đều hơn nhiều trên tất cả các lõi, về cơ bản tất cả các lõi được tải ở mức dưới 80%.

CPU Utilization (Napatech SmartNIC)
CPU Utilization (Napatech SmartNIC)

Quy trình làm việc cân bằng tốt hơn có nghĩa là hiệu suất hệ thống cao hơn vì một số lõi CPU sẽ không bị quá tải và gây mất gói mà hệ thống không hoạt động hết công suất.

Kết luận

Thử nghiệm này cho thấy Suricata xử lý 76 Gbps lossless bằng cách xử lý lưu lượng bị bỏ qua trên Napatech FPGA-Based SmartNICs. Trong khi đó, cùng một hệ thống thực hiện bỏ qua trong phần mềm đạt được thông lượng 30 Gbps mà không bị mất gói.

Ngoài ra, Napatech NIC đã chứng minh khối lượng công việc Suricata được cân bằng trên tất cả các lõi CPU có sẵn trong hệ thống, giảm thiểu tình trạng bộ xử lý bị đói hoặc quá tải do tràn bộ đệm.

Tính năng bỏ qua phần cứng Suricata và Napatech Flow Manager API được hỗ trợ với Napatech’s LinkTM Capture và LinkTM Inline Software trên NT200A02 và NT50B01 FPGA-based SmartNIC hardware.

Thông số kỹ thuật

Đặc điểm nổi bật của phần cứng SmartNICs Napatech

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

Tính năng nổi bật của Shared Hardware

• 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

Tính năng nổi bật của Napatech Software Suite

• 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

Facebook Comments
Chia sẻ với bạn bè

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *