SlideShare a Scribd company logo
1 of 55
Download to read offline
Suricata and XDP
É. Leblond
Stamus Networks
September 27, 2019
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 1 / 38
About me
Eric Leblond a.k.a Regit
Network security expert
Netfilter core team
Suricata developer:
In charge of packet acquisition
Co-founder of Stamus Networks, a
company providing Suricata based
appliances.
@Regiteric on Twitter (#sorry)
Legendometer
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 2 / 38
About me
Eric Leblond a.k.a Regit
Network security expert
Netfilter core team
Suricata developer:
In charge of packet acquisition
Co-founder of Stamus Networks, a
company providing Suricata based
appliances.
@Regiteric on Twitter (#sorry)
Legendometer (No log scale)
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 2 / 38
What about Kernel Recipes logo ?
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 3 / 38
What about Kernel Recipes logo ?
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 3 / 38
What about Kernel Recipes logo ?
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 3 / 38
What about Kernel Recipes logo ?
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 3 / 38
What is Suricata ?
IDS and IPS engine
Get it here: http://www.suricata-ids.org
Open Source (GPLv2)
Initially publicly funded, now funded by consortium
members
Run by Open Information Security Foundation (OISF)
More information about OISF at
http://www.openinfosecfoundation.org/
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 4 / 38
Suricata Ecosystem (example)
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 5 / 38
Suricata key points
Suricata
Protocol
analysis
Port inde-
pendant
detection
Metadata
extraction
Protocols
HTTP
SMTP
TLS
DNS
SMB
NFS
Intrusion
detection
Signatures
Protocol
keywords
Multi step
attacks
Lua for
advance
analysis
ArchitectureOutput
JSON
Redis
Syslog
Prelude
IDSpcap
afpacket
netmap
IPS
Netfilter
afpacket
ipfw
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 6 / 38
Suricata application layer analysis
Suricata analysis
Network interface gets copy of
traffic
Aggregated RX and TX of
sniffed interface
Reconstruct flow stream as
target host
Decode application layer
Extract file (optional)
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 7 / 38
Suricata EVE JSON event
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 8 / 38
Packet loss drama (1/2)
Suricata as a passive sniffer
Work on traffic duplication
No influence retransmission
No influence on bandwitdth throttling
Need to minimize packet loss
Accuracy of reconstruction drop when packet are lost
Packets drop means
Missed IDS alerts
Missed file extraction
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 9 / 38
Packet loss drama (2/2)
Some numbers
10% missed alerts with 3% packets loss
50% failed file extraction with 5.5% packets loss
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 10 / 38
Suricata load balancing
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 11 / 38
1 Bypass support in Suricata
2 XDP bypass
3 XDP in hardware mode
4 Other usages of XDP
5 AF_XDP
6 Challenge of XDP for a generic software
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 11 / 38
The big flow problem: elephant flow
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 12 / 38
The big flow problem: elephant flow
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 12 / 38
The big flow problem: elephant flow
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 12 / 38
The big flow problem
Ring buffer overrun
Limited sized ring buffer
Overrun cause packets loss
that cause streaming malfunction
Ring size increase
Work around
Use memory
Fail for non burst
Dequeue at N
Queue at speed N+M
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 13 / 38
Introducing bypass
Stop packet handling as soon as possible
Tag flow as bypassed
Maintain table of bypassed flows
Discard packet if part of a bypassed flow
Bypass method
Local bypass: Suricata discard packet after decoding
Capture bypass: capture method maintain flow table and discard packets of
bypassed flows
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 14 / 38
Bypassing big flow: local bypass
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 15 / 38
Bypassing big flow: capture bypass
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 16 / 38
Bypassing big flow: capture bypass
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 16 / 38
Stream depth bypass
Attacks characteristic
In most cases attack is done at start of TCP session
Generation of requests prior to attack is not common
Multiple requests are often not even possible on same TCP session
Stream reassembly depth
Reassembly is done till stream.reassembly.depth bytes.
Stream is not analyzed once limit is reached
Activating stream depth bypass
Set stream.bypass to yes in YAML
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 17 / 38
Selective bypass
Ignore some traffic
Ignore intensive traffic like Netflix
Can be done independently of stream depth
Can be done using generic or custom signatures
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 18 / 38
Selective bypass
Ignore some traffic
Ignore intensive traffic like Netflix
Can be done independently of stream depth
Can be done using generic or custom signatures
The bypass keyword
A new bypass signature keyword
Trigger bypass when signature match
Example of signature
pass http any any −> any any ( content : " suricata . io " ;  
http_host ; bypass ; sid :6666; rev : 1 ; )
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 18 / 38
Bypass: a long running story
Suricata 3.2.1 (Feb. 2017)
Suricata bypass API
NFQ implementation
Suricata 4.1 (Nov. 2018)
Pfring HW bypass for Accolade NIC (Alfredo Cardigliano)
AF_PACKET eBPF socket filtering bypass
AF_PACKET XDP bypass
Suricata 5.0 (Oct. 2019)
Netronome hardware bypass
Tunnel decapsulation
Pattern based bypass for TLS
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 19 / 38
1 Bypass support in Suricata
2 XDP bypass
3 XDP in hardware mode
4 Other usages of XDP
5 AF_XDP
6 Challenge of XDP for a generic software
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 19 / 38
Implementation
Libbpf based
Suricata loads and install the eBPF filter
Set up the maps and pinned them if asked
Principle
Flow table maps in eBPF
eBPF filter drop packet belonging to the flow in the flow table
Suricata maintains the flow table maps
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 20 / 38
Flow table maintenance (Suricata 4.1)
eBPF update Flow table
Pass packet if not in a bypassed flow
Update the last seen timestamp and do accounting
Flow table dump
1 Suricata iterate on Flow table
2 Check entry with expired timeout
3 Remove them for the Flow table
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 21 / 38
Polling limitation
This is slow
2 syscall per item
Up to 30 seconds to dump a 300000 entries table
And we need big table
Accounting dead flow
Long bypassed flow get accounted at expiration
Wrong performance stats
Estimating bypass efficiency with flow data fails
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 22 / 38
1 Bypass support in Suricata
2 XDP bypass
3 XDP in hardware mode
4 Other usages of XDP
5 AF_XDP
6 Challenge of XDP for a generic software
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 22 / 38
XDP in hardware mode with Netronome cards
Netronome card can run XDP eBPF code
eBPF bytecode is loaded by the card
Maps are available
A true offloading
Usage
A specific function call in libbpf at eBPF installation
That’s all.
If hardware support the code
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 23 / 38
Hardware constraints
Costly time function
Netronome NIC CPUs get time via kernel
Costly to get it to update last seen
We need an algorithm update
Some minor constraints
Limited key+value size: fixed by compressing some fields in the keys
No per-cpu maps
Some XDP features can’t be offloaded
Some make no sense in hardware (CPU redirect)
Some are in the roadmap
Fixed by #ifdef in the code
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 24 / 38
Flow key compression
s t r u c t flowv4_keys {
__u32 src ;
__u32 dst ;
union {
__u32 ports ;
__u16 port16 [ 2 ] ;
} ;
− __u32 ip_proto ;
− __u16 vlan_id [ 2 ] ;
+ __u8 ip_proto : 1 ;
+ __u16 vlan0 :15;
+ __u16 vlan1 ;
} ;
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 25 / 38
Flow key compression
s t r u c t flowv4_keys {
__u32 src ;
__u32 dst ;
union {
__u32 ports ;
__u16 port16 [ 2 ] ;
} ;
− __u32 ip_proto ;
− __u16 vlan_id [ 2 ] ;
+ __u8 ip_proto : 1 ;
+ __u16 vlan0 :15;
+ __u16 vlan1 ;
} ;
u32 for ip_proto was like
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 25 / 38
Flow timeout logic update
Algorithm update
Keep Flow in Suricata internal flow table
Fetch eBPF flow entries when flow timeout
Increase timeout if traffic has been seen
Update bypassed counters
Benefit
Work on Netronome card
Avoid stressing system with a full dump
Intermediate accounting for flow
Exact per-flow accounting of bypassed traffic
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 26 / 38
Netronome RSS load balancing
Programmable Receive Side Scaling
RSS distributes packets on multiple queues to share load
Netronome supports RSS
RSS load balancing can be done in eBPF code
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 27 / 38
Netronome RSS load balancing
Programmable Receive Side Scaling
RSS distributes packets on multiple queues to share load
Netronome supports RSS
RSS load balancing can be done in eBPF code
Code is #KISS
/∗ IP−pairs + protocol (UDP/TCP/ICMP) h i t same CPU ∗/
__u32 xdp_hash = tuple . src + tuple . dst ;
xdp_hash = SuperFastHash ( ( char ∗) &xdp_hash , 4 , INITVAL + iph−>protocol ) ;
ctx −>rx_queue_index = xdp_hash % RSS_QUEUE_NUMBERS;
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 27 / 38
1 Bypass support in Suricata
2 XDP bypass
3 XDP in hardware mode
4 Other usages of XDP
5 AF_XDP
6 Challenge of XDP for a generic software
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 27 / 38
Improving Suricata restart
Feeling like the falling whale in H2G2
Flow taken in the middle can’t be properly analyzed
Suricata restart reset the in kernel Flow table
Big trouble at restart and bypassed flow striking hard
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 28 / 38
Improving Suricata restart
Feeling like the falling whale in H2G2
Flow taken in the middle can’t be properly analyzed
Suricata restart reset the in kernel Flow table
Big trouble at restart and bypassed flow striking hard
Pinned maps for flow table
Keep maps between Suricata run
Previously bypassed flows are not
seen again
Suricata is not overwhelmed at
restart
Flow restoration
Bypassed flows kept in the map need to
timeout
Need to restore the flow from the eBPF
map to Suricata
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 28 / 38
Tunnel Decapsulation
Minify the elephant
Fow reconstruction implies all packets of a flow on a single thread
IP transport tunnel reach one single thread
Let’s use bpf_xdp_adjust_head
nh_off += 4;
proto = grhdr−>proto ; /∗ parse GRE protocol to get o f f s e t to s t a r t of inner data ∗/
/∗ . . . some parsing skipped ∗/
i f ( grhdr−>flags & GRE_CSUM)
nh_off += 4;
i f ( data + nh_off > data_end ) /∗ pass in case of error ∗/
return XDP_PASS;
i f ( bpf_xdp_adjust_head ( ctx , 0 + nh_off ) ) /∗ move head of data to inner data ∗/
return XDP_PASS; /∗ pass in case of error ∗/
/∗ continue treatment , data s t a r t i s now inner data of GRE tunnel ∗/
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 29 / 38
TLS bypass improvement
Suricata TLS bypass
Can do TLS handshake analysis but nothing to be done on encrypted traffic
Suricat triggers bypass when TLS session switch to encrypted
Issue due to ring buffer
All packets of short living sessions are in ring buffer
Bypass is not efficient
XDP pattern based bypass
i f ( app_data [ 0 ] == 0x17 /∗ TLS 1.2 ∗/
&& app_data [ 1 ] == 0x3 && app_data [ 2 ] == 0x3 ) { /∗ and encrypted packet ∗/
tls_count = bpf_map_lookup_elem(& tls_bypass_count , &key1 ) ;
i f ( tls_count )
tls_count ++;
return XDP_DROP;
}
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 30 / 38
1 Bypass support in Suricata
2 XDP bypass
3 XDP in hardware mode
4 Other usages of XDP
5 AF_XDP
6 Challenge of XDP for a generic software
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 30 / 38
AF_XDP a new raw packet capture method
Principle
eBPF filter send packet to a shared buffer
packet reach userspace
Before skb creation
In a efficient hole compliant buffer structure
Implementation
New capture method in Suricata (like AF_PACKET or NFQUEUE)
Code using libbpf
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 31 / 38
I’m API with my life
Libbpf XSK API
High level API helps a lot
Setup the complex data structure
Start without even an eBPF file
Low level API also available
Know your hardware issue
Bind to a queue
Scalibility depends of hardware
No CPU based load balancing
But do we need that ?
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 32 / 38
Give me some time
Initial implementation
libbpf is easy to use
Suricata part was the most complex
Where is my timestamp ?
No hardware timestamp available
Mandatory in Suricata case
We are getting copy of packets
Case of splitted RX TX can’t be fixed
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 33 / 38
1 Bypass support in Suricata
2 XDP bypass
3 XDP in hardware mode
4 Other usages of XDP
5 AF_XDP
6 Challenge of XDP for a generic software
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 33 / 38
Easier now
libbpf
No de facto standard for eBPF handling in 2015
Had to patch libbpf to get it working
libbpf is now available in distribution
Kernel side stabilization
Less breakage when changing version
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 34 / 38
Packet decoding
No commodity decoding
Suricata needs to handle all networks case
Decoding in eBPF for a lot of common protocols
Examples exist but are too simple
Would love a decoding library
Reusable blocks
For main IP layers and layer 2 protocols
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 35 / 38
Dealing with distributions
Distributing libbpf
Available in Debian (sid with backport)
Available Fedora 30
Available in Mageia
Shipping eBPF files
What if we need to tune feature
Possible solutions
Use #ifdef and build eBPF file on prod system
Need to have compiler on production system
Security implication
Use (pinned) maps to setup the XDP filter
Need some tooling
Or code in Suricata
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 36 / 38
Conclusion
Suricata and XDP
It was a long journey
XDP toolkit has improved over time
Features and performance are there
AF_XDP is promising
More information
Stamus Networks: https://www.stamus-networks.com/
Suricata and XDP whitepaper: https://tinyurl.com/y6nqhalu
Suricata code: https://github.com/oisf/suricata
Libbpf code: https://github.com/libbpf/libbpf
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 37 / 38
Questions ?
Thanks for their help
Alexei Starovoitov
Daniel Borkmann
Jesper Dangaard Brouer
And Netronome Team
David Beckett
Jakub Kicinski
Jiong Wang
Contact me
Mail: eleblond@stamus-
networks.com
Twitter: @regiteric
More information
Suricata: https://www.suricata-ids.org/
Stamus Networks:
https://www.stamus-networks.com/
Suricata and XDP whitepaper:
https://tinyurl.com/y6nqhalu
Suricata code:
https://github.com/oisf/suricata
Libbpf code:
https://github.com/libbpf/libbpf
É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 38 / 38

More Related Content

What's hot

Understanding eBPF in a Hurry!
Understanding eBPF in a Hurry!Understanding eBPF in a Hurry!
Understanding eBPF in a Hurry!Ray Jenkins
 
Performance Wins with eBPF: Getting Started (2021)
Performance Wins with eBPF: Getting Started (2021)Performance Wins with eBPF: Getting Started (2021)
Performance Wins with eBPF: Getting Started (2021)Brendan Gregg
 
Meet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracingMeet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracingViller Hsiao
 
BPF Internals (eBPF)
BPF Internals (eBPF)BPF Internals (eBPF)
BPF Internals (eBPF)Brendan Gregg
 
Xdp and ebpf_maps
Xdp and ebpf_mapsXdp and ebpf_maps
Xdp and ebpf_mapslcplcp1
 
Kubernetes Networking with Cilium - Deep Dive
Kubernetes Networking with Cilium - Deep DiveKubernetes Networking with Cilium - Deep Dive
Kubernetes Networking with Cilium - Deep DiveMichal Rostecki
 
High-Performance Networking Using eBPF, XDP, and io_uring
High-Performance Networking Using eBPF, XDP, and io_uringHigh-Performance Networking Using eBPF, XDP, and io_uring
High-Performance Networking Using eBPF, XDP, and io_uringScyllaDB
 
Kernel Recipes 2017 - EBPF and XDP - Eric Leblond
Kernel Recipes 2017 - EBPF and XDP - Eric LeblondKernel Recipes 2017 - EBPF and XDP - Eric Leblond
Kernel Recipes 2017 - EBPF and XDP - Eric LeblondAnne Nicolas
 
Cilium - Bringing the BPF Revolution to Kubernetes Networking and Security
Cilium - Bringing the BPF Revolution to Kubernetes Networking and SecurityCilium - Bringing the BPF Revolution to Kubernetes Networking and Security
Cilium - Bringing the BPF Revolution to Kubernetes Networking and SecurityThomas Graf
 
Replacing iptables with eBPF in Kubernetes with Cilium
Replacing iptables with eBPF in Kubernetes with CiliumReplacing iptables with eBPF in Kubernetes with Cilium
Replacing iptables with eBPF in Kubernetes with CiliumMichal Rostecki
 
Accelerating Envoy and Istio with Cilium and the Linux Kernel
Accelerating Envoy and Istio with Cilium and the Linux KernelAccelerating Envoy and Istio with Cilium and the Linux Kernel
Accelerating Envoy and Istio with Cilium and the Linux KernelThomas Graf
 
BPF & Cilium - Turning Linux into a Microservices-aware Operating System
BPF  & Cilium - Turning Linux into a Microservices-aware Operating SystemBPF  & Cilium - Turning Linux into a Microservices-aware Operating System
BPF & Cilium - Turning Linux into a Microservices-aware Operating SystemThomas Graf
 
BPF: Tracing and more
BPF: Tracing and moreBPF: Tracing and more
BPF: Tracing and moreBrendan Gregg
 
急速に進化を続けるCNIプラグイン Antrea
急速に進化を続けるCNIプラグイン Antrea 急速に進化を続けるCNIプラグイン Antrea
急速に進化を続けるCNIプラグイン Antrea Motonori Shindo
 
YOW2021 Computing Performance
YOW2021 Computing PerformanceYOW2021 Computing Performance
YOW2021 Computing PerformanceBrendan Gregg
 
eBPF Trace from Kernel to Userspace
eBPF Trace from Kernel to UserspaceeBPF Trace from Kernel to Userspace
eBPF Trace from Kernel to UserspaceSUSE Labs Taipei
 
DoS and DDoS mitigations with eBPF, XDP and DPDK
DoS and DDoS mitigations with eBPF, XDP and DPDKDoS and DDoS mitigations with eBPF, XDP and DPDK
DoS and DDoS mitigations with eBPF, XDP and DPDKMarian Marinov
 

What's hot (20)

Understanding eBPF in a Hurry!
Understanding eBPF in a Hurry!Understanding eBPF in a Hurry!
Understanding eBPF in a Hurry!
 
Performance Wins with eBPF: Getting Started (2021)
Performance Wins with eBPF: Getting Started (2021)Performance Wins with eBPF: Getting Started (2021)
Performance Wins with eBPF: Getting Started (2021)
 
eBPF maps 101
eBPF maps 101eBPF maps 101
eBPF maps 101
 
Meet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracingMeet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracing
 
eBPF Workshop
eBPF WorkshopeBPF Workshop
eBPF Workshop
 
BPF Internals (eBPF)
BPF Internals (eBPF)BPF Internals (eBPF)
BPF Internals (eBPF)
 
Xdp and ebpf_maps
Xdp and ebpf_mapsXdp and ebpf_maps
Xdp and ebpf_maps
 
Kubernetes Networking with Cilium - Deep Dive
Kubernetes Networking with Cilium - Deep DiveKubernetes Networking with Cilium - Deep Dive
Kubernetes Networking with Cilium - Deep Dive
 
High-Performance Networking Using eBPF, XDP, and io_uring
High-Performance Networking Using eBPF, XDP, and io_uringHigh-Performance Networking Using eBPF, XDP, and io_uring
High-Performance Networking Using eBPF, XDP, and io_uring
 
Kernel Recipes 2017 - EBPF and XDP - Eric Leblond
Kernel Recipes 2017 - EBPF and XDP - Eric LeblondKernel Recipes 2017 - EBPF and XDP - Eric Leblond
Kernel Recipes 2017 - EBPF and XDP - Eric Leblond
 
Cilium - Bringing the BPF Revolution to Kubernetes Networking and Security
Cilium - Bringing the BPF Revolution to Kubernetes Networking and SecurityCilium - Bringing the BPF Revolution to Kubernetes Networking and Security
Cilium - Bringing the BPF Revolution to Kubernetes Networking and Security
 
Replacing iptables with eBPF in Kubernetes with Cilium
Replacing iptables with eBPF in Kubernetes with CiliumReplacing iptables with eBPF in Kubernetes with Cilium
Replacing iptables with eBPF in Kubernetes with Cilium
 
Accelerating Envoy and Istio with Cilium and the Linux Kernel
Accelerating Envoy and Istio with Cilium and the Linux KernelAccelerating Envoy and Istio with Cilium and the Linux Kernel
Accelerating Envoy and Istio with Cilium and the Linux Kernel
 
BPF & Cilium - Turning Linux into a Microservices-aware Operating System
BPF  & Cilium - Turning Linux into a Microservices-aware Operating SystemBPF  & Cilium - Turning Linux into a Microservices-aware Operating System
BPF & Cilium - Turning Linux into a Microservices-aware Operating System
 
BPF: Tracing and more
BPF: Tracing and moreBPF: Tracing and more
BPF: Tracing and more
 
急速に進化を続けるCNIプラグイン Antrea
急速に進化を続けるCNIプラグイン Antrea 急速に進化を続けるCNIプラグイン Antrea
急速に進化を続けるCNIプラグイン Antrea
 
YOW2021 Computing Performance
YOW2021 Computing PerformanceYOW2021 Computing Performance
YOW2021 Computing Performance
 
eBPF Trace from Kernel to Userspace
eBPF Trace from Kernel to UserspaceeBPF Trace from Kernel to Userspace
eBPF Trace from Kernel to Userspace
 
DoS and DDoS mitigations with eBPF, XDP and DPDK
DoS and DDoS mitigations with eBPF, XDP and DPDKDoS and DDoS mitigations with eBPF, XDP and DPDK
DoS and DDoS mitigations with eBPF, XDP and DPDK
 
Scale Kubernetes to support 50000 services
Scale Kubernetes to support 50000 servicesScale Kubernetes to support 50000 services
Scale Kubernetes to support 50000 services
 

Similar to Kernel Recipes 2019 - Suricata and XDP

SmartZone cid-demo(bu4)
SmartZone cid-demo(bu4)SmartZone cid-demo(bu4)
SmartZone cid-demo(bu4)Joseph Auby
 
Chapter 9 cryptography- symetric encryption
Chapter 9   cryptography- symetric encryptionChapter 9   cryptography- symetric encryption
Chapter 9 cryptography- symetric encryptionSyaiful Ahdan
 
L2_Wireshark.ppt
L2_Wireshark.pptL2_Wireshark.ppt
L2_Wireshark.pptLibaBali
 
Activities of Smart Ship Application Platform 2 Project (SSAP2)
Activities of Smart Ship Application Platform 2 Project (SSAP2)Activities of Smart Ship Application Platform 2 Project (SSAP2)
Activities of Smart Ship Application Platform 2 Project (SSAP2)MTI Co., Ltd.
 
PLUG : Presentation Layer Universal Generator
 PLUG : Presentation Layer Universal Generator PLUG : Presentation Layer Universal Generator
PLUG : Presentation Layer Universal GeneratorEmmanuel Fuchs
 
Bandwidth measurement
Bandwidth measurementBandwidth measurement
Bandwidth measurementjeromy fu
 
BRKRST-3068 Troubleshooting Catalyst 2K and 3K.pdf
BRKRST-3068  Troubleshooting Catalyst 2K and 3K.pdfBRKRST-3068  Troubleshooting Catalyst 2K and 3K.pdf
BRKRST-3068 Troubleshooting Catalyst 2K and 3K.pdfssusercbaa33
 
The Tofu Interconnect D for the Post K Supercomputer
The Tofu Interconnect D for the Post K SupercomputerThe Tofu Interconnect D for the Post K Supercomputer
The Tofu Interconnect D for the Post K Supercomputerinside-BigData.com
 
Electrical Schematic of PowerPC GNU/Linux Notebook
Electrical Schematic of PowerPC GNU/Linux NotebookElectrical Schematic of PowerPC GNU/Linux Notebook
Electrical Schematic of PowerPC GNU/Linux NotebookRoberto Innocenti
 
SRv6 Network Programming: deployment use-cases
SRv6 Network Programming: deployment use-cases SRv6 Network Programming: deployment use-cases
SRv6 Network Programming: deployment use-cases APNIC
 
In Network Computing Prototype Using P4 at KSC/KREONET 2019
In Network Computing Prototype Using P4 at KSC/KREONET 2019In Network Computing Prototype Using P4 at KSC/KREONET 2019
In Network Computing Prototype Using P4 at KSC/KREONET 2019Kentaro Ebisawa
 
IRJET- Boat Localization and Warning System for Border Identification
IRJET-  	  Boat Localization and Warning System for Border IdentificationIRJET-  	  Boat Localization and Warning System for Border Identification
IRJET- Boat Localization and Warning System for Border IdentificationIRJET Journal
 
Ontology Summit - Track D Standards Summary & Provocative Use Cases
Ontology Summit - Track D Standards Summary & Provocative Use CasesOntology Summit - Track D Standards Summary & Provocative Use Cases
Ontology Summit - Track D Standards Summary & Provocative Use CasesMark Underwood
 
Configuration of Residential Network using Enhanced Interior Gateway Routing ...
Configuration of Residential Network using Enhanced Interior Gateway Routing ...Configuration of Residential Network using Enhanced Interior Gateway Routing ...
Configuration of Residential Network using Enhanced Interior Gateway Routing ...ijtsrd
 
OIF 2015 FOE Architecture Presentation
OIF 2015 FOE Architecture PresentationOIF 2015 FOE Architecture Presentation
OIF 2015 FOE Architecture PresentationDeborah Porchivina
 
IRJET- Design and Characteristics of LIZARD Stream Cipher IP Core
IRJET- Design and Characteristics of LIZARD Stream Cipher IP CoreIRJET- Design and Characteristics of LIZARD Stream Cipher IP Core
IRJET- Design and Characteristics of LIZARD Stream Cipher IP CoreIRJET Journal
 
Krzysztof Mazepa - Netflow/cflow - ulubionym narzędziem operatorów SP
Krzysztof Mazepa - Netflow/cflow - ulubionym narzędziem operatorów SPKrzysztof Mazepa - Netflow/cflow - ulubionym narzędziem operatorów SP
Krzysztof Mazepa - Netflow/cflow - ulubionym narzędziem operatorów SPPROIDEA
 

Similar to Kernel Recipes 2019 - Suricata and XDP (20)

SmartZone cid-demo(bu4)
SmartZone cid-demo(bu4)SmartZone cid-demo(bu4)
SmartZone cid-demo(bu4)
 
Dpdk applications
Dpdk applicationsDpdk applications
Dpdk applications
 
Chapter 9 cryptography- symetric encryption
Chapter 9   cryptography- symetric encryptionChapter 9   cryptography- symetric encryption
Chapter 9 cryptography- symetric encryption
 
L2_Wireshark.ppt
L2_Wireshark.pptL2_Wireshark.ppt
L2_Wireshark.ppt
 
Activities of Smart Ship Application Platform 2 Project (SSAP2)
Activities of Smart Ship Application Platform 2 Project (SSAP2)Activities of Smart Ship Application Platform 2 Project (SSAP2)
Activities of Smart Ship Application Platform 2 Project (SSAP2)
 
PLUG : Presentation Layer Universal Generator
 PLUG : Presentation Layer Universal Generator PLUG : Presentation Layer Universal Generator
PLUG : Presentation Layer Universal Generator
 
SmartZone 5.0
SmartZone 5.0SmartZone 5.0
SmartZone 5.0
 
Bandwidth measurement
Bandwidth measurementBandwidth measurement
Bandwidth measurement
 
BRKRST-3068 Troubleshooting Catalyst 2K and 3K.pdf
BRKRST-3068  Troubleshooting Catalyst 2K and 3K.pdfBRKRST-3068  Troubleshooting Catalyst 2K and 3K.pdf
BRKRST-3068 Troubleshooting Catalyst 2K and 3K.pdf
 
hpsr-2020-srv6-tutorial
hpsr-2020-srv6-tutorialhpsr-2020-srv6-tutorial
hpsr-2020-srv6-tutorial
 
The Tofu Interconnect D for the Post K Supercomputer
The Tofu Interconnect D for the Post K SupercomputerThe Tofu Interconnect D for the Post K Supercomputer
The Tofu Interconnect D for the Post K Supercomputer
 
Electrical Schematic of PowerPC GNU/Linux Notebook
Electrical Schematic of PowerPC GNU/Linux NotebookElectrical Schematic of PowerPC GNU/Linux Notebook
Electrical Schematic of PowerPC GNU/Linux Notebook
 
SRv6 Network Programming: deployment use-cases
SRv6 Network Programming: deployment use-cases SRv6 Network Programming: deployment use-cases
SRv6 Network Programming: deployment use-cases
 
In Network Computing Prototype Using P4 at KSC/KREONET 2019
In Network Computing Prototype Using P4 at KSC/KREONET 2019In Network Computing Prototype Using P4 at KSC/KREONET 2019
In Network Computing Prototype Using P4 at KSC/KREONET 2019
 
IRJET- Boat Localization and Warning System for Border Identification
IRJET-  	  Boat Localization and Warning System for Border IdentificationIRJET-  	  Boat Localization and Warning System for Border Identification
IRJET- Boat Localization and Warning System for Border Identification
 
Ontology Summit - Track D Standards Summary & Provocative Use Cases
Ontology Summit - Track D Standards Summary & Provocative Use CasesOntology Summit - Track D Standards Summary & Provocative Use Cases
Ontology Summit - Track D Standards Summary & Provocative Use Cases
 
Configuration of Residential Network using Enhanced Interior Gateway Routing ...
Configuration of Residential Network using Enhanced Interior Gateway Routing ...Configuration of Residential Network using Enhanced Interior Gateway Routing ...
Configuration of Residential Network using Enhanced Interior Gateway Routing ...
 
OIF 2015 FOE Architecture Presentation
OIF 2015 FOE Architecture PresentationOIF 2015 FOE Architecture Presentation
OIF 2015 FOE Architecture Presentation
 
IRJET- Design and Characteristics of LIZARD Stream Cipher IP Core
IRJET- Design and Characteristics of LIZARD Stream Cipher IP CoreIRJET- Design and Characteristics of LIZARD Stream Cipher IP Core
IRJET- Design and Characteristics of LIZARD Stream Cipher IP Core
 
Krzysztof Mazepa - Netflow/cflow - ulubionym narzędziem operatorów SP
Krzysztof Mazepa - Netflow/cflow - ulubionym narzędziem operatorów SPKrzysztof Mazepa - Netflow/cflow - ulubionym narzędziem operatorów SP
Krzysztof Mazepa - Netflow/cflow - ulubionym narzędziem operatorów SP
 

More from Anne Nicolas

Kernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstKernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstAnne Nicolas
 
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMIKernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMIAnne Nicolas
 
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernelKernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernelAnne Nicolas
 
Kernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyKernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyAnne Nicolas
 
Kernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureKernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureAnne Nicolas
 
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...Anne Nicolas
 
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataKernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary dataAnne Nicolas
 
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...Anne Nicolas
 
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and BareboxEmbedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and BareboxAnne Nicolas
 
Embedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialEmbedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialAnne Nicolas
 
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre SiliconEmbedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre SiliconAnne Nicolas
 
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) pictureEmbedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) pictureAnne Nicolas
 
Embedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops wayEmbedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops wayAnne Nicolas
 
Embedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmakerEmbedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmakerAnne Nicolas
 
Embedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationEmbedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationAnne Nicolas
 
Embedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingEmbedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingAnne Nicolas
 
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaEmbedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaAnne Nicolas
 
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all startedKernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all startedAnne Nicolas
 
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)Anne Nicolas
 
Kernel Recipes 2019 - Formal modeling made easy
Kernel Recipes 2019 - Formal modeling made easyKernel Recipes 2019 - Formal modeling made easy
Kernel Recipes 2019 - Formal modeling made easyAnne Nicolas
 

More from Anne Nicolas (20)

Kernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream firstKernel Recipes 2019 - Driving the industry toward upstream first
Kernel Recipes 2019 - Driving the industry toward upstream first
 
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
Kernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMIKernel Recipes 2019 - No NMI? No Problem! – Implementing Arm64 Pseudo-NMI
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 - Hunting and fixing bugs all over the Linux kernelKernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
Kernel Recipes 2019 - Hunting and fixing bugs all over the Linux kernel
 
Kernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are moneyKernel Recipes 2019 - Metrics are money
Kernel Recipes 2019 - Metrics are money
 
Kernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and futureKernel Recipes 2019 - Kernel documentation: past, present, and future
Kernel Recipes 2019 - Kernel documentation: past, present, and future
 
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...Embedded Recipes 2019 - Knowing your ARM from your ARSE: wading through the t...
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 - GNU poke, an extensible editor for structured binary dataKernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
Kernel Recipes 2019 - GNU poke, an extensible editor for structured binary data
 
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...Kernel Recipes 2019 - Analyzing changes to the binary interface exposed by th...
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 - Remote update adventures with RAUC, Yocto and BareboxEmbedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
Embedded Recipes 2019 - Remote update adventures with RAUC, Yocto and Barebox
 
Embedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less specialEmbedded Recipes 2019 - Making embedded graphics less special
Embedded Recipes 2019 - Making embedded graphics less special
 
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
Embedded Recipes 2019 - Linux on Open Source Hardware and Libre SiliconEmbedded Recipes 2019 - Linux on Open Source Hardware and Libre Silicon
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 - From maintaining I2C to the big (embedded) pictureEmbedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
Embedded Recipes 2019 - From maintaining I2C to the big (embedded) picture
 
Embedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops wayEmbedded Recipes 2019 - Testing firmware the devops way
Embedded Recipes 2019 - Testing firmware the devops way
 
Embedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmakerEmbedded Recipes 2019 - Herd your socs become a matchmaker
Embedded Recipes 2019 - Herd your socs become a matchmaker
 
Embedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integrationEmbedded Recipes 2019 - LLVM / Clang integration
Embedded Recipes 2019 - LLVM / Clang integration
 
Embedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingEmbedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debugging
 
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimediaEmbedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
Embedded Recipes 2019 - Pipewire a new foundation for embedded multimedia
 
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all startedKernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
 
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
Kernel Recipes 2019 - Marvels of Memory Auto-configuration (SPD)
 
Kernel Recipes 2019 - Formal modeling made easy
Kernel Recipes 2019 - Formal modeling made easyKernel Recipes 2019 - Formal modeling made easy
Kernel Recipes 2019 - Formal modeling made easy
 

Recently uploaded

%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrandmasabamasaba
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benonimasabamasaba
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...masabamasaba
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...masabamasaba
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareJim McKeeth
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024VictoriaMetrics
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxAnnaArtyushina1
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationJuha-Pekka Tolvanen
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfkalichargn70th171
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastPapp Krisztián
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfonteinmasabamasaba
 

Recently uploaded (20)

%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 

Kernel Recipes 2019 - Suricata and XDP

  • 1. Suricata and XDP É. Leblond Stamus Networks September 27, 2019 É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 1 / 38
  • 2. About me Eric Leblond a.k.a Regit Network security expert Netfilter core team Suricata developer: In charge of packet acquisition Co-founder of Stamus Networks, a company providing Suricata based appliances. @Regiteric on Twitter (#sorry) Legendometer É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 2 / 38
  • 3. About me Eric Leblond a.k.a Regit Network security expert Netfilter core team Suricata developer: In charge of packet acquisition Co-founder of Stamus Networks, a company providing Suricata based appliances. @Regiteric on Twitter (#sorry) Legendometer (No log scale) É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 2 / 38
  • 4. What about Kernel Recipes logo ? É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 3 / 38
  • 5. What about Kernel Recipes logo ? É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 3 / 38
  • 6. What about Kernel Recipes logo ? É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 3 / 38
  • 7. What about Kernel Recipes logo ? É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 3 / 38
  • 8. What is Suricata ? IDS and IPS engine Get it here: http://www.suricata-ids.org Open Source (GPLv2) Initially publicly funded, now funded by consortium members Run by Open Information Security Foundation (OISF) More information about OISF at http://www.openinfosecfoundation.org/ É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 4 / 38
  • 9. Suricata Ecosystem (example) É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 5 / 38
  • 10. Suricata key points Suricata Protocol analysis Port inde- pendant detection Metadata extraction Protocols HTTP SMTP TLS DNS SMB NFS Intrusion detection Signatures Protocol keywords Multi step attacks Lua for advance analysis ArchitectureOutput JSON Redis Syslog Prelude IDSpcap afpacket netmap IPS Netfilter afpacket ipfw É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 6 / 38
  • 11. Suricata application layer analysis Suricata analysis Network interface gets copy of traffic Aggregated RX and TX of sniffed interface Reconstruct flow stream as target host Decode application layer Extract file (optional) É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 7 / 38
  • 12. Suricata EVE JSON event É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 8 / 38
  • 13. Packet loss drama (1/2) Suricata as a passive sniffer Work on traffic duplication No influence retransmission No influence on bandwitdth throttling Need to minimize packet loss Accuracy of reconstruction drop when packet are lost Packets drop means Missed IDS alerts Missed file extraction É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 9 / 38
  • 14. Packet loss drama (2/2) Some numbers 10% missed alerts with 3% packets loss 50% failed file extraction with 5.5% packets loss É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 10 / 38
  • 15. Suricata load balancing É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 11 / 38
  • 16. 1 Bypass support in Suricata 2 XDP bypass 3 XDP in hardware mode 4 Other usages of XDP 5 AF_XDP 6 Challenge of XDP for a generic software É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 11 / 38
  • 17. The big flow problem: elephant flow É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 12 / 38
  • 18. The big flow problem: elephant flow É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 12 / 38
  • 19. The big flow problem: elephant flow É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 12 / 38
  • 20. The big flow problem Ring buffer overrun Limited sized ring buffer Overrun cause packets loss that cause streaming malfunction Ring size increase Work around Use memory Fail for non burst Dequeue at N Queue at speed N+M É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 13 / 38
  • 21. Introducing bypass Stop packet handling as soon as possible Tag flow as bypassed Maintain table of bypassed flows Discard packet if part of a bypassed flow Bypass method Local bypass: Suricata discard packet after decoding Capture bypass: capture method maintain flow table and discard packets of bypassed flows É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 14 / 38
  • 22. Bypassing big flow: local bypass É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 15 / 38
  • 23. Bypassing big flow: capture bypass É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 16 / 38
  • 24. Bypassing big flow: capture bypass É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 16 / 38
  • 25. Stream depth bypass Attacks characteristic In most cases attack is done at start of TCP session Generation of requests prior to attack is not common Multiple requests are often not even possible on same TCP session Stream reassembly depth Reassembly is done till stream.reassembly.depth bytes. Stream is not analyzed once limit is reached Activating stream depth bypass Set stream.bypass to yes in YAML É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 17 / 38
  • 26. Selective bypass Ignore some traffic Ignore intensive traffic like Netflix Can be done independently of stream depth Can be done using generic or custom signatures É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 18 / 38
  • 27. Selective bypass Ignore some traffic Ignore intensive traffic like Netflix Can be done independently of stream depth Can be done using generic or custom signatures The bypass keyword A new bypass signature keyword Trigger bypass when signature match Example of signature pass http any any −> any any ( content : " suricata . io " ; http_host ; bypass ; sid :6666; rev : 1 ; ) É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 18 / 38
  • 28. Bypass: a long running story Suricata 3.2.1 (Feb. 2017) Suricata bypass API NFQ implementation Suricata 4.1 (Nov. 2018) Pfring HW bypass for Accolade NIC (Alfredo Cardigliano) AF_PACKET eBPF socket filtering bypass AF_PACKET XDP bypass Suricata 5.0 (Oct. 2019) Netronome hardware bypass Tunnel decapsulation Pattern based bypass for TLS É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 19 / 38
  • 29. 1 Bypass support in Suricata 2 XDP bypass 3 XDP in hardware mode 4 Other usages of XDP 5 AF_XDP 6 Challenge of XDP for a generic software É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 19 / 38
  • 30. Implementation Libbpf based Suricata loads and install the eBPF filter Set up the maps and pinned them if asked Principle Flow table maps in eBPF eBPF filter drop packet belonging to the flow in the flow table Suricata maintains the flow table maps É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 20 / 38
  • 31. Flow table maintenance (Suricata 4.1) eBPF update Flow table Pass packet if not in a bypassed flow Update the last seen timestamp and do accounting Flow table dump 1 Suricata iterate on Flow table 2 Check entry with expired timeout 3 Remove them for the Flow table É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 21 / 38
  • 32. Polling limitation This is slow 2 syscall per item Up to 30 seconds to dump a 300000 entries table And we need big table Accounting dead flow Long bypassed flow get accounted at expiration Wrong performance stats Estimating bypass efficiency with flow data fails É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 22 / 38
  • 33. 1 Bypass support in Suricata 2 XDP bypass 3 XDP in hardware mode 4 Other usages of XDP 5 AF_XDP 6 Challenge of XDP for a generic software É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 22 / 38
  • 34. XDP in hardware mode with Netronome cards Netronome card can run XDP eBPF code eBPF bytecode is loaded by the card Maps are available A true offloading Usage A specific function call in libbpf at eBPF installation That’s all. If hardware support the code É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 23 / 38
  • 35. Hardware constraints Costly time function Netronome NIC CPUs get time via kernel Costly to get it to update last seen We need an algorithm update Some minor constraints Limited key+value size: fixed by compressing some fields in the keys No per-cpu maps Some XDP features can’t be offloaded Some make no sense in hardware (CPU redirect) Some are in the roadmap Fixed by #ifdef in the code É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 24 / 38
  • 36. Flow key compression s t r u c t flowv4_keys { __u32 src ; __u32 dst ; union { __u32 ports ; __u16 port16 [ 2 ] ; } ; − __u32 ip_proto ; − __u16 vlan_id [ 2 ] ; + __u8 ip_proto : 1 ; + __u16 vlan0 :15; + __u16 vlan1 ; } ; É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 25 / 38
  • 37. Flow key compression s t r u c t flowv4_keys { __u32 src ; __u32 dst ; union { __u32 ports ; __u16 port16 [ 2 ] ; } ; − __u32 ip_proto ; − __u16 vlan_id [ 2 ] ; + __u8 ip_proto : 1 ; + __u16 vlan0 :15; + __u16 vlan1 ; } ; u32 for ip_proto was like É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 25 / 38
  • 38. Flow timeout logic update Algorithm update Keep Flow in Suricata internal flow table Fetch eBPF flow entries when flow timeout Increase timeout if traffic has been seen Update bypassed counters Benefit Work on Netronome card Avoid stressing system with a full dump Intermediate accounting for flow Exact per-flow accounting of bypassed traffic É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 26 / 38
  • 39. Netronome RSS load balancing Programmable Receive Side Scaling RSS distributes packets on multiple queues to share load Netronome supports RSS RSS load balancing can be done in eBPF code É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 27 / 38
  • 40. Netronome RSS load balancing Programmable Receive Side Scaling RSS distributes packets on multiple queues to share load Netronome supports RSS RSS load balancing can be done in eBPF code Code is #KISS /∗ IP−pairs + protocol (UDP/TCP/ICMP) h i t same CPU ∗/ __u32 xdp_hash = tuple . src + tuple . dst ; xdp_hash = SuperFastHash ( ( char ∗) &xdp_hash , 4 , INITVAL + iph−>protocol ) ; ctx −>rx_queue_index = xdp_hash % RSS_QUEUE_NUMBERS; É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 27 / 38
  • 41. 1 Bypass support in Suricata 2 XDP bypass 3 XDP in hardware mode 4 Other usages of XDP 5 AF_XDP 6 Challenge of XDP for a generic software É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 27 / 38
  • 42. Improving Suricata restart Feeling like the falling whale in H2G2 Flow taken in the middle can’t be properly analyzed Suricata restart reset the in kernel Flow table Big trouble at restart and bypassed flow striking hard É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 28 / 38
  • 43. Improving Suricata restart Feeling like the falling whale in H2G2 Flow taken in the middle can’t be properly analyzed Suricata restart reset the in kernel Flow table Big trouble at restart and bypassed flow striking hard Pinned maps for flow table Keep maps between Suricata run Previously bypassed flows are not seen again Suricata is not overwhelmed at restart Flow restoration Bypassed flows kept in the map need to timeout Need to restore the flow from the eBPF map to Suricata É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 28 / 38
  • 44. Tunnel Decapsulation Minify the elephant Fow reconstruction implies all packets of a flow on a single thread IP transport tunnel reach one single thread Let’s use bpf_xdp_adjust_head nh_off += 4; proto = grhdr−>proto ; /∗ parse GRE protocol to get o f f s e t to s t a r t of inner data ∗/ /∗ . . . some parsing skipped ∗/ i f ( grhdr−>flags & GRE_CSUM) nh_off += 4; i f ( data + nh_off > data_end ) /∗ pass in case of error ∗/ return XDP_PASS; i f ( bpf_xdp_adjust_head ( ctx , 0 + nh_off ) ) /∗ move head of data to inner data ∗/ return XDP_PASS; /∗ pass in case of error ∗/ /∗ continue treatment , data s t a r t i s now inner data of GRE tunnel ∗/ É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 29 / 38
  • 45. TLS bypass improvement Suricata TLS bypass Can do TLS handshake analysis but nothing to be done on encrypted traffic Suricat triggers bypass when TLS session switch to encrypted Issue due to ring buffer All packets of short living sessions are in ring buffer Bypass is not efficient XDP pattern based bypass i f ( app_data [ 0 ] == 0x17 /∗ TLS 1.2 ∗/ && app_data [ 1 ] == 0x3 && app_data [ 2 ] == 0x3 ) { /∗ and encrypted packet ∗/ tls_count = bpf_map_lookup_elem(& tls_bypass_count , &key1 ) ; i f ( tls_count ) tls_count ++; return XDP_DROP; } É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 30 / 38
  • 46. 1 Bypass support in Suricata 2 XDP bypass 3 XDP in hardware mode 4 Other usages of XDP 5 AF_XDP 6 Challenge of XDP for a generic software É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 30 / 38
  • 47. AF_XDP a new raw packet capture method Principle eBPF filter send packet to a shared buffer packet reach userspace Before skb creation In a efficient hole compliant buffer structure Implementation New capture method in Suricata (like AF_PACKET or NFQUEUE) Code using libbpf É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 31 / 38
  • 48. I’m API with my life Libbpf XSK API High level API helps a lot Setup the complex data structure Start without even an eBPF file Low level API also available Know your hardware issue Bind to a queue Scalibility depends of hardware No CPU based load balancing But do we need that ? É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 32 / 38
  • 49. Give me some time Initial implementation libbpf is easy to use Suricata part was the most complex Where is my timestamp ? No hardware timestamp available Mandatory in Suricata case We are getting copy of packets Case of splitted RX TX can’t be fixed É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 33 / 38
  • 50. 1 Bypass support in Suricata 2 XDP bypass 3 XDP in hardware mode 4 Other usages of XDP 5 AF_XDP 6 Challenge of XDP for a generic software É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 33 / 38
  • 51. Easier now libbpf No de facto standard for eBPF handling in 2015 Had to patch libbpf to get it working libbpf is now available in distribution Kernel side stabilization Less breakage when changing version É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 34 / 38
  • 52. Packet decoding No commodity decoding Suricata needs to handle all networks case Decoding in eBPF for a lot of common protocols Examples exist but are too simple Would love a decoding library Reusable blocks For main IP layers and layer 2 protocols É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 35 / 38
  • 53. Dealing with distributions Distributing libbpf Available in Debian (sid with backport) Available Fedora 30 Available in Mageia Shipping eBPF files What if we need to tune feature Possible solutions Use #ifdef and build eBPF file on prod system Need to have compiler on production system Security implication Use (pinned) maps to setup the XDP filter Need some tooling Or code in Suricata É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 36 / 38
  • 54. Conclusion Suricata and XDP It was a long journey XDP toolkit has improved over time Features and performance are there AF_XDP is promising More information Stamus Networks: https://www.stamus-networks.com/ Suricata and XDP whitepaper: https://tinyurl.com/y6nqhalu Suricata code: https://github.com/oisf/suricata Libbpf code: https://github.com/libbpf/libbpf É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 37 / 38
  • 55. Questions ? Thanks for their help Alexei Starovoitov Daniel Borkmann Jesper Dangaard Brouer And Netronome Team David Beckett Jakub Kicinski Jiong Wang Contact me Mail: eleblond@stamus- networks.com Twitter: @regiteric More information Suricata: https://www.suricata-ids.org/ Stamus Networks: https://www.stamus-networks.com/ Suricata and XDP whitepaper: https://tinyurl.com/y6nqhalu Suricata code: https://github.com/oisf/suricata Libbpf code: https://github.com/libbpf/libbpf É. Leblond (Stamus Networks) Suricata and XDP September 27, 2019 38 / 38