SlideShare a Scribd company logo
Kernel packet capture technologies
Éric Leblond
Stamus Networks
October 1, 2015
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 1 / 54
1 Introduction
2 Why capture
3 Libcap and raw socket
4 AF_PACKET
5 PF_RING
6 AF_PACKET goes multi*
7 Netmap
8 Latest AF_PACKET evolution
9 ++zero copy
10 Conclusion
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 2 / 54
Éric Leblond
Co-founder of Stamus Networks
Company providing network probe based on Suricata
Focusing on bringing you the best of Suricata IDS technology
Open source hacker
Suricata core developer
NetïŹlter core team member
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 4 / 54
Raw socket: deïŹnition
A raw socket is an internet socket that allows direct sending and receiving of Internet
Protocol packets without any protocol-speciïŹc transport layer formatting.
Wikipedia
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 6 / 54
"The End of the Internet"
[raw socket ...] spells catastrophe for the integrity of the Internet.
Steve Gibson in 2001
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 7 / 54
"The End of the Internet"
Talking about introduction of raw socket in MS Windows
Allow users to write any packets
Could be used to abuse protocol and [poorly implemented] OS
More info at http://www.informit.com/articles/article.aspx?p=27289
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 8 / 54
Raw socket: usage
Send and receive
Send low level message: icmp, igmp
Implement new protocol in userspace
SnifïŹng
Capture trafïŹc
Promiscuous mode
Use by network monitoring tools
Debugging tools: tcpdump, wireshark
Monitoring tools: iptraf, ntop, NSA
Intrusion detection systems: snort, bro, suricata
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 9 / 54
Network Intrusion Detection System: deïŹnition
An intrusion detection system (IDS) is a device or software application that monitors
network or system activities for malicious activities or policy violations and produces
reports to a management station.
Wikipedia
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 10 / 54
Network Intrusion Detection System: challenge
IDS detection rule
Some data
Complexity of rule
Work on recontructed stream
Protocol ïŹeld analysis
Pattern recognition on ungzipped content (http_server_body)
Got around 15000 rules in standard ruleset
Need to inspect 10Gbps of traïŹc or more
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 11 / 54
Suricata: Open source & multi threaded IDS
IDS and IPS engine
Get it here: http://www.suricata-ids.org
Project started in 2008
Open Source (GPLv2)
Funded by consortium members (and originaly US
government)
Run by Open Information Security Foundation (OISF)
More information about OISF at
http://www.oisf.net/
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 12 / 54
Suricata Features
High performance, scalable through multi threading
Protocol identiïŹcation
File identiïŹcation, extraction, on the ïŹ‚y MD5 calculation
TLS handshake analysis, detect/prevent things like Diginotar
Hardware acceleration support:
Useful logging like HTTP request log, TLS certiïŹcate log, DNS logging
Lua scripting for detection
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 13 / 54
libpcap
Multi OS abstraction for packet capture
All *nix, Windows
Multi layer: Network, USB, . . .
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 15 / 54
Raw socket: the initial implementation
A dedicated socket type
#include <sys / socket . h>
#include < netinet / in . h>
raw_socket = socket (AF_INET , SOCK_RAW, int protocol ) ;
Straight socket mode
Get packet per packet via recvmsg
Optional ioctl
Get timestamp
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 16 / 54
Memories of another time
"640 K ought to be enough for anybody." Memory contraint design
No preallocation
On demand only
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 17 / 54
Disclaimer
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 18 / 54
IDS design
Monoprocess
No Performance for you, go home now.
Marty Roesch about multithread and network data processing, 2010
Suricata architecture
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 19 / 54
NAPI (2001-200?)
Reducing interrupts usage
Interrupts tempest at high packet rate
All CPU time is sued to handle the interrupts
NIC driver needs to be updated
No direct change for packet capture
Change internal to device driver
Direct performance impact on packet capture
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 21 / 54
NAPI performance
Table extracted from luca.ntop.org/Ring.pdf
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 22 / 54
Problem of the socket mode
Internal path
Data in card buffer
Data copied to skb
Data copied to socket
Data read and copied by userspace
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 23 / 54
Memory map approach
Sharing is the solution
Kernel expose some memory
Userspace access memory directly
Spare a message sending for every packets
mmap internal path
Data in card buffer
Data copied to skb
Data copied to ring buffer
Userspace access data via pointer in ring buffer
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 24 / 54
TPACKET_V2
setup
socket(): creation of the capture socket
setsockopt(): allocation of the circular buffer (ring) via PACKET_RX_RING option
mmap(): mapping of the allocated buffer to the user process
capture
poll(): to wait for incoming packets
shutdown
close(): destruction of the capture socket and deallocation of all associated resources.
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 25 / 54
Memory organization
Ascii art
block #1 block #2
+---------+---------+ +---------+---------+
| frame 1 | frame 2 | | frame 3 | frame 4 |
+---------+---------+ +---------+---------+
block #3 block #4
+---------+---------+ +---------+---------+
| frame 5 | frame 6 | | frame 7 | frame 8 |
+---------+---------+ +---------+---------+
Components
Frame contains a datagram data
Blocks are physically contiguous region of memory
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 26 / 54
Performance
Graph extracted from luca.ntop.org/Ring.pdf
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 27 / 54
Suricata architecture
MMAP option
Support of TPACKET_V2
Zero copy mode
Implied changes
Access data via pointer to ring buffer cell
Release data callback
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 28 / 54
PF_RING original design (2004)
Architecture
ring design
mmap
capture only interface
skip kernel path
put in ring buffer and discard
user access the ring buffer
Project
Project started by Luca Deri
Available as separate sources
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 30 / 54
PF_RING performance
Show real improvement on small size packets
Pre optimisation result
Better result in following version due to a better poll handling
Table extracted from luca.ntop.org/Ring.pdf
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 31 / 54
PF_RING going multicore (around 2008?)
Sharing the load
Each core has a ïŹnite bandwidth capability
Multicore CPU were introduced in 2006
Sharing load become common
Previously separate hardware was used to split the network load
Straight forward solution
Allow multiple sockets to be attached to one interface
Load balance over the attached sockets
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 32 / 54
Suricata autofp multi reader
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 33 / 54
PF_RING code
Build system and sources
Custom build system
No autotools or cmake
Include patched drivers
SVN stats
g i t log −−format=format : "%s " | sort | uniq −c | sort −n | t a i l −n10
15 Minor change
20 f i x
20 minor changes
22 l i b refresh
30 Library refresh
43 minor change
67 minor f i x
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 34 / 54
David Miller in da place
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 36 / 54
AF_PACKET load balancing (2011)
Multiple sockets on same interface
Kernel does load balancing
Multiple algorithms
LB algorithm
Round-robin
Flow: all packets of a given ïŹ‚ow are send to the same socket
CPU: all packets treated in kernel by a CPU are send to the same socket
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 37 / 54
AF_PACKET CPU Load balancing
RSS queues
Multiqueue NIC have multiple TX RX
Data can be split in multiple queues
Programmed by user
Flow load balanced
RSS queues load balancing
NIC does load balancing using hash function
CPU afïŹnity is set to ensure we keep the cache line
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 38 / 54
Suricata workers mode
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 39 / 54
tpacket_v3 (2011)
The problem
Cell are ïŹxed size
Size is the one of biggest packet (MTU)
Small packets use same memory as big one
Variable size cells
Ring buffer
Update memory mapping to enable variable sizes
Use a get pointer to next cell approach
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 40 / 54
Netmap (2012)
Similar approach than PF_RING
skip kernel path
put in ring buffer and discard
User access the ring buffer
Paired with network card ring
More info http://queue.acm.org/detail.cfm?id=2103536
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 42 / 54
Performances
Table by Luigi Rizzo
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 43 / 54
AF_PACKET rollover option (2013)
Single intensive ïŹ‚ow
Load balancing is ïŹ‚ow based
One intensive ïŹ‚ow saturate core capacity
Load needs to be shared
Principle
Move to next ring when ring is full
As a load balancing mode
As a fallback method
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 45 / 54
Rollover and suricata (1/2)
Graph by Victor Julien
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 46 / 54
Rollover and suricata (2/2)
A TCP streaming issue
Rollover activation lead to out of order packets
Fool TCP stream reconstruction by suricata
Result in invalid streams
Possible solution
Evolve autofop multicapture
Decode and dispatch packets
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 47 / 54
DPDK (2012-)
Data Plane Development Kit
set of libraries and driver
design for fast packet processing
impact on software architecture
Architecture
multicore framework
huge page memory
ring buffers
poll-mode drivers
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 48 / 54
Suricata workers mode limit
Packet treatment can be really long
Involve I/O on disk or network
Huge computation like regular expression
Ring buffers are limited in size
A slow packet can block a whole buffer
Suricata need to dequeue faster
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 50 / 54
Need to evolve Suricata architecture
Switch to asynchronous
Release ring buffer elements as fast as possible
Buffer in userspace
An enhanced autofp approach?
Fast decode
Copy data to packet pool of detect thread
With a fast decision
Release data
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 51 / 54
Conclusion (1/2)
A small subject and a huge evolution
Has follow evolution of hardware architecture
Always need to deal with more speed
10Gbps is common
100Gbps is in sight
Multiple technologies
Vanilla kernel propose some solutions
Patching may be required to do more
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 53 / 54
Conclusion (2/2)
Do you have questions ?
Contact me
Mail: eleblond@stamus-networks.com
Twitter: @Regiteric
More information
Suricata: http://www.suricata-ids.org
PF_RING: http://www.ntop.org/products/packet-capture/pf_ring/
netmap: http://info.iet.unipi.it/~luigi/netmap/
dpdk: http://dpdk.org/
Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 54 / 54

More Related Content

PDF
How Linux Processes Your Network Packet - Elazar Leibovich
PDF
What Can Compilers Do for Us?
PDF
æ·șè«‡æŽąçŽą Linux çł»ç”±èš­èšˆäč‹é“
PDF
Embedded Virtualization applied in Mobile Devices
PDF
Build your own embedded linux distributions by yocto project
PDF
Linux Kernel Startup Code In Embedded Linux
PDF
The Linux Kernel Scheduler (For Beginners) - SFO17-421
 
PDF
CKA Certified Kubernetes Administrator Notes
How Linux Processes Your Network Packet - Elazar Leibovich
What Can Compilers Do for Us?
æ·șè«‡æŽąçŽą Linux çł»ç”±èš­èšˆäč‹é“
Embedded Virtualization applied in Mobile Devices
Build your own embedded linux distributions by yocto project
Linux Kernel Startup Code In Embedded Linux
The Linux Kernel Scheduler (For Beginners) - SFO17-421
 
CKA Certified Kubernetes Administrator Notes

What's hot (20)

PDF
Making Linux do Hard Real-time
PDF
ARM Trusted FirmwareたBL31ă‚’ć˜äœ“ă§äœżă†ïŒ
PDF
Process Scheduler and Balancer in Linux Kernel
PDF
Fun with Network Interfaces
PDF
Process Address Space: The way to create virtual address (page table) of user...
PDF
Understanding a kernel oops and a kernel panic
PDF
Corso Linux
PDF
Making Linux do Hard Real-time
PDF
Hands-on ethernet driver
PPTX
The TCP/IP Stack in the Linux Kernel
PDF
Learn C Programming Language by Using GDB
PPTX
Linux Kernel Programming
PDF
Anatomy of the loadable kernel module (lkm)
PDF
Embedded Linux Quick Start Guide v1.5
PPTX
Linux Initialization Process (1)
PDF
from Source to Binary: How GNU Toolchain Works
PDF
LCU14 500 ARM Trusted Firmware
 
PDF
Podman rootless containers
PDF
Physical Memory Management.pdf
PDF
Linux field-update-2015
Making Linux do Hard Real-time
ARM Trusted FirmwareたBL31ă‚’ć˜äœ“ă§äœżă†ïŒ
Process Scheduler and Balancer in Linux Kernel
Fun with Network Interfaces
Process Address Space: The way to create virtual address (page table) of user...
Understanding a kernel oops and a kernel panic
Corso Linux
Making Linux do Hard Real-time
Hands-on ethernet driver
The TCP/IP Stack in the Linux Kernel
Learn C Programming Language by Using GDB
Linux Kernel Programming
Anatomy of the loadable kernel module (lkm)
Embedded Linux Quick Start Guide v1.5
Linux Initialization Process (1)
from Source to Binary: How GNU Toolchain Works
LCU14 500 ARM Trusted Firmware
 
Podman rootless containers
Physical Memory Management.pdf
Linux field-update-2015
Ad

Viewers also liked (14)

PPT
Libpcap
PPT
Systemtap
PPT
Linux introduction
PPT
Basic socket programming
PDF
Debugging linux kernel tools and techniques
PPT
Troubleshooting Linux Kernel Modules And Device Drivers
PPTX
TCP protocol flow control
PDF
Kernel Recipes 2015 - Hardened kernels for everyone
PDF
Linux kernel tracing
PDF
Blazing Performance with Flame Graphs
PDF
TIP1 - Overview of C/C++ Debugging/Tracing/Profiling Tools
PDF
Direct Code Execution @ CoNEXT 2013
PDF
Linux Kernel Library - Reusing Monolithic Kernel
PDF
Brocade Software Networking (SDN NFV Day ITB 2016)
Libpcap
Systemtap
Linux introduction
Basic socket programming
Debugging linux kernel tools and techniques
Troubleshooting Linux Kernel Modules And Device Drivers
TCP protocol flow control
Kernel Recipes 2015 - Hardened kernels for everyone
Linux kernel tracing
Blazing Performance with Flame Graphs
TIP1 - Overview of C/C++ Debugging/Tracing/Profiling Tools
Direct Code Execution @ CoNEXT 2013
Linux Kernel Library - Reusing Monolithic Kernel
Brocade Software Networking (SDN NFV Day ITB 2016)
Ad

Similar to Kernel Recipes 2015: Kernel packet capture technologies (20)

PPT
Improving Passive Packet Capture : Beyond Device Polling
PDF
Captura de pacotes no KernelSpace
PPT
PFQ@ 9th Italian Networking Workshop (Courmayeur)
PDF
PFQ@ 10th Italian Networking Workshop (Bormio)
PPT
PFQ@ PAM12
PPTX
Realtime traffic analyser
PDF
Performance Evaluation of Soft RoCE over 1 Gigabit Ethernet
PDF
Hackito Ergo Sum 2011: Capture me if you can!
PDF
HES2011 - Sebastien Tricaud - Capture me if you can
PPTX
DPDK layer for porting IPS-IDS
PPT
Intro (Distributed computing)
PDF
Network processing by pid
PPT
Profiling And Optimization Of Software Base Network Analysis Applications
PDF
Performance challenges in software networking
PPTX
cPacket's cStor
PDF
CNIT 121: 9 Network Evidence
PPT
PF_DIRECT@TMA12
PPTX
RDMA at Hyperscale: Experience and Future Directions
PPT
wiresharktslecturev10006july2009-12501942038813-phpapp03.ppt
Improving Passive Packet Capture : Beyond Device Polling
Captura de pacotes no KernelSpace
PFQ@ 9th Italian Networking Workshop (Courmayeur)
PFQ@ 10th Italian Networking Workshop (Bormio)
PFQ@ PAM12
Realtime traffic analyser
Performance Evaluation of Soft RoCE over 1 Gigabit Ethernet
Hackito Ergo Sum 2011: Capture me if you can!
HES2011 - Sebastien Tricaud - Capture me if you can
DPDK layer for porting IPS-IDS
Intro (Distributed computing)
Network processing by pid
Profiling And Optimization Of Software Base Network Analysis Applications
Performance challenges in software networking
cPacket's cStor
CNIT 121: 9 Network Evidence
PF_DIRECT@TMA12
RDMA at Hyperscale: Experience and Future Directions
wiresharktslecturev10006july2009-12501942038813-phpapp03.ppt

More from Anne Nicolas (20)

PDF
Kernel Recipes 2019 - Driving the industry toward upstream first
PDF
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
PDF
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
PDF
Kernel Recipes 2019 - Metrics are money
PDF
Kernel Recipes 2019 - Kernel documentation: past, present, and future
PDF
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
PDF
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
PDF
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
PDF
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
PDF
Embedded Recipes 2019 - Making embedded graphics less special
PDF
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
PDF
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
PDF
Embedded Recipes 2019 - Testing firmware the devops way
PDF
Embedded Recipes 2019 - Herd your socs become a matchmaker
PDF
Embedded Recipes 2019 - LLVM / Clang integration
PDF
Embedded Recipes 2019 - Introduction to JTAG debugging
PDF
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
PDF
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
PDF
Kernel Recipes 2019 - Suricata and XDP
PDF
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Kernel documentation: past, present, and future
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - Suricata and XDP
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)

Recently uploaded (20)

PPTX
Operating system designcfffgfgggggggvggggggggg
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PDF
AI in Product Development-omnex systems
PPTX
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PPTX
Odoo POS Development Services by CandidRoot Solutions
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PPT
Introduction Database Management System for Course Database
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PPTX
ISO 45001 Occupational Health and Safety Management System
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PPTX
L1 - Introduction to python Backend.pptx
PPTX
ManageIQ - Sprint 268 Review - Slide Deck
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
Digital Strategies for Manufacturing Companies
Operating system designcfffgfgggggggvggggggggg
Internet Downloader Manager (IDM) Crack 6.42 Build 41
VVF-Customer-Presentation2025-Ver1.9.pptx
AI in Product Development-omnex systems
CHAPTER 12 - CYBER SECURITY AND FUTURE SKILLS (1) (1).pptx
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
Odoo POS Development Services by CandidRoot Solutions
Upgrade and Innovation Strategies for SAP ERP Customers
Introduction Database Management System for Course Database
Navsoft: AI-Powered Business Solutions & Custom Software Development
ISO 45001 Occupational Health and Safety Management System
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
L1 - Introduction to python Backend.pptx
ManageIQ - Sprint 268 Review - Slide Deck
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Which alternative to Crystal Reports is best for small or large businesses.pdf
Digital Strategies for Manufacturing Companies

Kernel Recipes 2015: Kernel packet capture technologies

  • 1. Kernel packet capture technologies Éric Leblond Stamus Networks October 1, 2015 Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 1 / 54
  • 2. 1 Introduction 2 Why capture 3 Libcap and raw socket 4 AF_PACKET 5 PF_RING 6 AF_PACKET goes multi* 7 Netmap 8 Latest AF_PACKET evolution 9 ++zero copy 10 Conclusion Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 2 / 54
  • 3. Éric Leblond Co-founder of Stamus Networks Company providing network probe based on Suricata Focusing on bringing you the best of Suricata IDS technology Open source hacker Suricata core developer NetïŹlter core team member Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 4 / 54
  • 4. Raw socket: deïŹnition A raw socket is an internet socket that allows direct sending and receiving of Internet Protocol packets without any protocol-speciïŹc transport layer formatting. Wikipedia Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 6 / 54
  • 5. "The End of the Internet" [raw socket ...] spells catastrophe for the integrity of the Internet. Steve Gibson in 2001 Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 7 / 54
  • 6. "The End of the Internet" Talking about introduction of raw socket in MS Windows Allow users to write any packets Could be used to abuse protocol and [poorly implemented] OS More info at http://www.informit.com/articles/article.aspx?p=27289 Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 8 / 54
  • 7. Raw socket: usage Send and receive Send low level message: icmp, igmp Implement new protocol in userspace SnifïŹng Capture trafïŹc Promiscuous mode Use by network monitoring tools Debugging tools: tcpdump, wireshark Monitoring tools: iptraf, ntop, NSA Intrusion detection systems: snort, bro, suricata Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 9 / 54
  • 8. Network Intrusion Detection System: deïŹnition An intrusion detection system (IDS) is a device or software application that monitors network or system activities for malicious activities or policy violations and produces reports to a management station. Wikipedia Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 10 / 54
  • 9. Network Intrusion Detection System: challenge IDS detection rule Some data Complexity of rule Work on recontructed stream Protocol ïŹeld analysis Pattern recognition on ungzipped content (http_server_body) Got around 15000 rules in standard ruleset Need to inspect 10Gbps of traïŹc or more Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 11 / 54
  • 10. Suricata: Open source & multi threaded IDS IDS and IPS engine Get it here: http://www.suricata-ids.org Project started in 2008 Open Source (GPLv2) Funded by consortium members (and originaly US government) Run by Open Information Security Foundation (OISF) More information about OISF at http://www.oisf.net/ Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 12 / 54
  • 11. Suricata Features High performance, scalable through multi threading Protocol identiïŹcation File identiïŹcation, extraction, on the ïŹ‚y MD5 calculation TLS handshake analysis, detect/prevent things like Diginotar Hardware acceleration support: Useful logging like HTTP request log, TLS certiïŹcate log, DNS logging Lua scripting for detection Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 13 / 54
  • 12. libpcap Multi OS abstraction for packet capture All *nix, Windows Multi layer: Network, USB, . . . Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 15 / 54
  • 13. Raw socket: the initial implementation A dedicated socket type #include <sys / socket . h> #include < netinet / in . h> raw_socket = socket (AF_INET , SOCK_RAW, int protocol ) ; Straight socket mode Get packet per packet via recvmsg Optional ioctl Get timestamp Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 16 / 54
  • 14. Memories of another time "640 K ought to be enough for anybody." Memory contraint design No preallocation On demand only Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 17 / 54
  • 15. Disclaimer Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 18 / 54
  • 16. IDS design Monoprocess No Performance for you, go home now. Marty Roesch about multithread and network data processing, 2010 Suricata architecture Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 19 / 54
  • 17. NAPI (2001-200?) Reducing interrupts usage Interrupts tempest at high packet rate All CPU time is sued to handle the interrupts NIC driver needs to be updated No direct change for packet capture Change internal to device driver Direct performance impact on packet capture Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 21 / 54
  • 18. NAPI performance Table extracted from luca.ntop.org/Ring.pdf Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 22 / 54
  • 19. Problem of the socket mode Internal path Data in card buffer Data copied to skb Data copied to socket Data read and copied by userspace Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 23 / 54
  • 20. Memory map approach Sharing is the solution Kernel expose some memory Userspace access memory directly Spare a message sending for every packets mmap internal path Data in card buffer Data copied to skb Data copied to ring buffer Userspace access data via pointer in ring buffer Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 24 / 54
  • 21. TPACKET_V2 setup socket(): creation of the capture socket setsockopt(): allocation of the circular buffer (ring) via PACKET_RX_RING option mmap(): mapping of the allocated buffer to the user process capture poll(): to wait for incoming packets shutdown close(): destruction of the capture socket and deallocation of all associated resources. Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 25 / 54
  • 22. Memory organization Ascii art block #1 block #2 +---------+---------+ +---------+---------+ | frame 1 | frame 2 | | frame 3 | frame 4 | +---------+---------+ +---------+---------+ block #3 block #4 +---------+---------+ +---------+---------+ | frame 5 | frame 6 | | frame 7 | frame 8 | +---------+---------+ +---------+---------+ Components Frame contains a datagram data Blocks are physically contiguous region of memory Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 26 / 54
  • 23. Performance Graph extracted from luca.ntop.org/Ring.pdf Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 27 / 54
  • 24. Suricata architecture MMAP option Support of TPACKET_V2 Zero copy mode Implied changes Access data via pointer to ring buffer cell Release data callback Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 28 / 54
  • 25. PF_RING original design (2004) Architecture ring design mmap capture only interface skip kernel path put in ring buffer and discard user access the ring buffer Project Project started by Luca Deri Available as separate sources Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 30 / 54
  • 26. PF_RING performance Show real improvement on small size packets Pre optimisation result Better result in following version due to a better poll handling Table extracted from luca.ntop.org/Ring.pdf Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 31 / 54
  • 27. PF_RING going multicore (around 2008?) Sharing the load Each core has a ïŹnite bandwidth capability Multicore CPU were introduced in 2006 Sharing load become common Previously separate hardware was used to split the network load Straight forward solution Allow multiple sockets to be attached to one interface Load balance over the attached sockets Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 32 / 54
  • 28. Suricata autofp multi reader Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 33 / 54
  • 29. PF_RING code Build system and sources Custom build system No autotools or cmake Include patched drivers SVN stats g i t log −−format=format : "%s " | sort | uniq −c | sort −n | t a i l −n10 15 Minor change 20 f i x 20 minor changes 22 l i b refresh 30 Library refresh 43 minor change 67 minor f i x Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 34 / 54
  • 30. David Miller in da place Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 36 / 54
  • 31. AF_PACKET load balancing (2011) Multiple sockets on same interface Kernel does load balancing Multiple algorithms LB algorithm Round-robin Flow: all packets of a given ïŹ‚ow are send to the same socket CPU: all packets treated in kernel by a CPU are send to the same socket Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 37 / 54
  • 32. AF_PACKET CPU Load balancing RSS queues Multiqueue NIC have multiple TX RX Data can be split in multiple queues Programmed by user Flow load balanced RSS queues load balancing NIC does load balancing using hash function CPU afïŹnity is set to ensure we keep the cache line Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 38 / 54
  • 33. Suricata workers mode Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 39 / 54
  • 34. tpacket_v3 (2011) The problem Cell are ïŹxed size Size is the one of biggest packet (MTU) Small packets use same memory as big one Variable size cells Ring buffer Update memory mapping to enable variable sizes Use a get pointer to next cell approach Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 40 / 54
  • 35. Netmap (2012) Similar approach than PF_RING skip kernel path put in ring buffer and discard User access the ring buffer Paired with network card ring More info http://queue.acm.org/detail.cfm?id=2103536 Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 42 / 54
  • 36. Performances Table by Luigi Rizzo Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 43 / 54
  • 37. AF_PACKET rollover option (2013) Single intensive ïŹ‚ow Load balancing is ïŹ‚ow based One intensive ïŹ‚ow saturate core capacity Load needs to be shared Principle Move to next ring when ring is full As a load balancing mode As a fallback method Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 45 / 54
  • 38. Rollover and suricata (1/2) Graph by Victor Julien Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 46 / 54
  • 39. Rollover and suricata (2/2) A TCP streaming issue Rollover activation lead to out of order packets Fool TCP stream reconstruction by suricata Result in invalid streams Possible solution Evolve autofop multicapture Decode and dispatch packets Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 47 / 54
  • 40. DPDK (2012-) Data Plane Development Kit set of libraries and driver design for fast packet processing impact on software architecture Architecture multicore framework huge page memory ring buffers poll-mode drivers Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 48 / 54
  • 41. Suricata workers mode limit Packet treatment can be really long Involve I/O on disk or network Huge computation like regular expression Ring buffers are limited in size A slow packet can block a whole buffer Suricata need to dequeue faster Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 50 / 54
  • 42. Need to evolve Suricata architecture Switch to asynchronous Release ring buffer elements as fast as possible Buffer in userspace An enhanced autofp approach? Fast decode Copy data to packet pool of detect thread With a fast decision Release data Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 51 / 54
  • 43. Conclusion (1/2) A small subject and a huge evolution Has follow evolution of hardware architecture Always need to deal with more speed 10Gbps is common 100Gbps is in sight Multiple technologies Vanilla kernel propose some solutions Patching may be required to do more Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 53 / 54
  • 44. Conclusion (2/2) Do you have questions ? Contact me Mail: eleblond@stamus-networks.com Twitter: @Regiteric More information Suricata: http://www.suricata-ids.org PF_RING: http://www.ntop.org/products/packet-capture/pf_ring/ netmap: http://info.iet.unipi.it/~luigi/netmap/ dpdk: http://dpdk.org/ Éric Leblond (Stamus Networks) Kernel packet capture technologies October 1, 2015 54 / 54