tools and techniques to simplify suricata performance testing€¦ · tools and techniques to...

27
TOOLS AND TECHNIQUES TO SIMPLIFY SURICATA PERFORMANCE TESTING SURICON 2019 JOE JOHNSON – PRINCIPAL SOFTWARE ENGINEER GIGAMON

Upload: others

Post on 25-Sep-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tools and Techniques to Simplify Suricata Performance Testing€¦ · TOOLS AND TECHNIQUES TO SIMPLIFY SURICATA PERFORMANCE TESTING SURICON 2019 JOE JOHNSON – PRINCIPAL SOFTWARE

TOOLS AND TECHNIQUES TO SIMPLIFY SURICATA PERFORMANCE TESTING SURICON 2019

JOE JOHNSON – PRINCIPAL SOFTWARE ENGINEER

GIGAMON

Page 2: Tools and Techniques to Simplify Suricata Performance Testing€¦ · TOOLS AND TECHNIQUES TO SIMPLIFY SURICATA PERFORMANCE TESTING SURICON 2019 JOE JOHNSON – PRINCIPAL SOFTWARE

BIO

Mostly a software engineer, occasionally a security researcher 3.5 years working on network security tools at Gigamon 9 years working on antivirus at Microsoft

@Pyr0joe

Page 3: Tools and Techniques to Simplify Suricata Performance Testing€¦ · TOOLS AND TECHNIQUES TO SIMPLIFY SURICATA PERFORMANCE TESTING SURICON 2019 JOE JOHNSON – PRINCIPAL SOFTWARE

AGENDA

• Using Trex More Effectively

•  Traffic Profiles

•  Testing at 40G

• Profile Guided Optimization

• Next Steps

Page 4: Tools and Techniques to Simplify Suricata Performance Testing€¦ · TOOLS AND TECHNIQUES TO SIMPLIFY SURICATA PERFORMANCE TESTING SURICON 2019 JOE JOHNSON – PRINCIPAL SOFTWARE

TREX REFRESHER

•  Free open source traffic generator from Cisco

• Supports up to 100G interface cards via DPDK

• Allows randomizing source and dest ip per flow

•  Tracks latency and jitter for IPS testing

Page 5: Tools and Techniques to Simplify Suricata Performance Testing€¦ · TOOLS AND TECHNIQUES TO SIMPLIFY SURICATA PERFORMANCE TESTING SURICON 2019 JOE JOHNSON – PRINCIPAL SOFTWARE

TREX CONFIG FROM A PCAP

•  TRex by default needs 1 pcap per session

• Manually generating is time consuming

• Write a toolchain to turn pcaps into trex templates

Page 6: Tools and Techniques to Simplify Suricata Performance Testing€¦ · TOOLS AND TECHNIQUES TO SIMPLIFY SURICATA PERFORMANCE TESTING SURICON 2019 JOE JOHNSON – PRINCIPAL SOFTWARE

USE CASES FOR PCAP TO TREX

•  Load test features that scale with distinct flow count (e.g. smptourture for SMB parsing)

• Amplify a traffic snapshot from an existing network

•  Bypass per flow thresholds when testing rule performance

Page 7: Tools and Techniques to Simplify Suricata Performance Testing€¦ · TOOLS AND TECHNIQUES TO SIMPLIFY SURICATA PERFORMANCE TESTING SURICON 2019 JOE JOHNSON – PRINCIPAL SOFTWARE

TREX BACK TO PCAP

•  Take fixed size\count PCAPs to reuse with tcpdump

• Static files give improved reproducibility across runs

• Static files are better for using a debugger on the process

Page 8: Tools and Techniques to Simplify Suricata Performance Testing€¦ · TOOLS AND TECHNIQUES TO SIMPLIFY SURICATA PERFORMANCE TESTING SURICON 2019 JOE JOHNSON – PRINCIPAL SOFTWARE

TREX TO PCAP

Page 9: Tools and Techniques to Simplify Suricata Performance Testing€¦ · TOOLS AND TECHNIQUES TO SIMPLIFY SURICATA PERFORMANCE TESTING SURICON 2019 JOE JOHNSON – PRINCIPAL SOFTWARE

CUSTOM TRAFFIC PROFILES

• Sometimes there isn’t a good pcap

• Hand built Trex profiles let you tune relative proportions of traffic •  Recreate customer environments without pcaps

•  Simulate workloads like HTTP servers you may not have yet

• Create profiles designed to exercise specific code paths

Page 10: Tools and Techniques to Simplify Suricata Performance Testing€¦ · TOOLS AND TECHNIQUES TO SIMPLIFY SURICATA PERFORMANCE TESTING SURICON 2019 JOE JOHNSON – PRINCIPAL SOFTWARE

ENTERPRISE SIMULATION PROFILE •  Mix of HTTP, DNS, SSL, SSH and

RDP

•  Downloads of both psexec and eicar in the clear

•  Maps pretty well to real traffic for Zeek with our larger customers

ssl 16%

http_get 16%

http_post 16% rdp

2%

dns 48%

ssh 2%

Page 11: Tools and Techniques to Simplify Suricata Performance Testing€¦ · TOOLS AND TECHNIQUES TO SIMPLIFY SURICATA PERFORMANCE TESTING SURICON 2019 JOE JOHNSON – PRINCIPAL SOFTWARE

EXPLOIT PARTY PROFILE

• Collection of exploit pcaps from malware-traffic-analysis.net

• Really good for exercising Suricata rule matching

• Hopefully not a realistic profile for your network

Page 12: Tools and Techniques to Simplify Suricata Performance Testing€¦ · TOOLS AND TECHNIQUES TO SIMPLIFY SURICATA PERFORMANCE TESTING SURICON 2019 JOE JOHNSON – PRINCIPAL SOFTWARE

TESTING AT 40G – ROUND 2

Page 13: Tools and Techniques to Simplify Suricata Performance Testing€¦ · TOOLS AND TECHNIQUES TO SIMPLIFY SURICATA PERFORMANCE TESTING SURICON 2019 JOE JOHNSON – PRINCIPAL SOFTWARE

TESTING AT 40G - SETUP

• 2 systems with 4 Intel x520 SFP ports each generating traffic (Ubuntu 16.04 LTS)

• Arista 7050 switch

• 1 Sensor with 4 Intel x520 SFP ports bonded into pairs with Dual Intel Xeon Gold 6140 CPU (18C 36T)

• Suricata 5.0 running Hyperscan 5.0 using ET OPEN on PFRING 7.2 built with PGO on Gcc-5 on Ubuntu 16.04 LTS

Page 14: Tools and Techniques to Simplify Suricata Performance Testing€¦ · TOOLS AND TECHNIQUES TO SIMPLIFY SURICATA PERFORMANCE TESTING SURICON 2019 JOE JOHNSON – PRINCIPAL SOFTWARE

TESTING AT 40G – HARDWARE LAYOUT

Page 15: Tools and Techniques to Simplify Suricata Performance Testing€¦ · TOOLS AND TECHNIQUES TO SIMPLIFY SURICATA PERFORMANCE TESTING SURICON 2019 JOE JOHNSON – PRINCIPAL SOFTWARE

40G NIC OFFLOADING

•  Each card has it’s 2 interfaces bonded together

•  IRQ handlers spread across 16 of 18 physical cores

• All IRQ handlers are on the same NUMA node as NICs

• Avoid Core 0 for network offloading

Page 16: Tools and Techniques to Simplify Suricata Performance Testing€¦ · TOOLS AND TECHNIQUES TO SIMPLIFY SURICATA PERFORMANCE TESTING SURICON 2019 JOE JOHNSON – PRINCIPAL SOFTWARE

40G – PACKET LOSS

Page 17: Tools and Techniques to Simplify Suricata Performance Testing€¦ · TOOLS AND TECHNIQUES TO SIMPLIFY SURICATA PERFORMANCE TESTING SURICON 2019 JOE JOHNSON – PRINCIPAL SOFTWARE

40G – BANDWIDTH AT SENSOR

Page 18: Tools and Techniques to Simplify Suricata Performance Testing€¦ · TOOLS AND TECHNIQUES TO SIMPLIFY SURICATA PERFORMANCE TESTING SURICON 2019 JOE JOHNSON – PRINCIPAL SOFTWARE

40 GBPS CPU USAGE

Page 19: Tools and Techniques to Simplify Suricata Performance Testing€¦ · TOOLS AND TECHNIQUES TO SIMPLIFY SURICATA PERFORMANCE TESTING SURICON 2019 JOE JOHNSON – PRINCIPAL SOFTWARE

40G RESULTS

•  Moderate packet drop rate with naïve implementation

•  Packet offloading is using %50 of the physical cores on NUMA node 0

•  Low utilization of NUMA node 1 CPU

•  Splitting the NICs to separate NUMA nodes and pinning workers should be able to handle the load

Page 20: Tools and Techniques to Simplify Suricata Performance Testing€¦ · TOOLS AND TECHNIQUES TO SIMPLIFY SURICATA PERFORMANCE TESTING SURICON 2019 JOE JOHNSON – PRINCIPAL SOFTWARE

PROFILE GUIDED OPTIMIZATION

•  Instrument the binary to gather profiling data

• Rebuild with optimizations based on the profiling data

•  Improvements gained vary based on workload

• Starting with Gcc 9 which has the latest optimizations

Page 21: Tools and Techniques to Simplify Suricata Performance Testing€¦ · TOOLS AND TECHNIQUES TO SIMPLIFY SURICATA PERFORMANCE TESTING SURICON 2019 JOE JOHNSON – PRINCIPAL SOFTWARE

SURICATA PGO HOW TO

• Make instrumented build: •  CFLAGS =“-fprofile-generate=<profile_folder>”

•  LDFLAGS=“-lgcov”

• Run instrumented build against a sample of traffic •  Live traffic

•  PCAP

•  TREX amplified PCAP

Page 22: Tools and Techniques to Simplify Suricata Performance Testing€¦ · TOOLS AND TECHNIQUES TO SIMPLIFY SURICATA PERFORMANCE TESTING SURICON 2019 JOE JOHNSON – PRINCIPAL SOFTWARE

SURICATA PGO HOW TO

• Build optimized binary •  CFLAGS=

•  -fprofile-use=<profile_folder>

•  -fprofile-correction # Handle multithreaded profile writes

•  -Wno-error=coverage-mismatch #Needed for configure to pass

• Deploy

Page 23: Tools and Techniques to Simplify Suricata Performance Testing€¦ · TOOLS AND TECHNIQUES TO SIMPLIFY SURICATA PERFORMANCE TESTING SURICON 2019 JOE JOHNSON – PRINCIPAL SOFTWARE

SURICATA PGO RESULTS @38.5 GBPS

GCC-9 PGO GCC-5 GCC-9

Page 24: Tools and Techniques to Simplify Suricata Performance Testing€¦ · TOOLS AND TECHNIQUES TO SIMPLIFY SURICATA PERFORMANCE TESTING SURICON 2019 JOE JOHNSON – PRINCIPAL SOFTWARE

SURICATA PGO RESULTS

•  For similar traffic, noticeable improvement in performance

• Not enough to handle 40 Gbps yet

• Gcc-9 with PGO still slower than a regular build with Gcc-5

Page 25: Tools and Techniques to Simplify Suricata Performance Testing€¦ · TOOLS AND TECHNIQUES TO SIMPLIFY SURICATA PERFORMANCE TESTING SURICON 2019 JOE JOHNSON – PRINCIPAL SOFTWARE

NEXT STEPS

• Publish more traffic profiles

• Research PGO results and improve automation and build integration

• Continue improving tooling to simplify using TRex

Page 26: Tools and Techniques to Simplify Suricata Performance Testing€¦ · TOOLS AND TECHNIQUES TO SIMPLIFY SURICATA PERFORMANCE TESTING SURICON 2019 JOE JOHNSON – PRINCIPAL SOFTWARE

LINKS

• Pcap Splitter •  https://github.com/jasonlue/go/tree/master/pcap

•  Trex Config Generator •  https://github.com/jasonlue/zeek.test/blob/master/trex/yaml-gen.sh

•  Traffic Profiles •  https://github.com/J0eJ0h/nettest/tree/master/trex_profiles

Page 27: Tools and Techniques to Simplify Suricata Performance Testing€¦ · TOOLS AND TECHNIQUES TO SIMPLIFY SURICATA PERFORMANCE TESTING SURICON 2019 JOE JOHNSON – PRINCIPAL SOFTWARE

QUESTIONS?