packet processing frameworks - home page of … · packet processing frameworks basics, bpf and...

85
Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 1/1

Upload: haxuyen

Post on 10-Jun-2018

230 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Packet Processing FrameworksBasics, BPF and PFil

George Neville-Neil

Neville-Neil Consulting

AsiaBSDCon March 2014

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 1 / 1

Page 2: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Intro

I OverviewI Berkeley Packet Filter (BPF)I pfilI IPFW and DummynetI PF in FreeBSDI NetmapI Netgraph

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 2 / 1

Page 3: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Speaker Bio

I Twenty year veteran of BSDs and Operating Systems in generalI Coauthor of The Design and Implementation of the FreeBSD

Operating SystemI Former member of FreeBSD’s Elected Core TeamI Director of the FreeBSD FoundationI Network Protocol and Security PractitionerI ACM Queue’s Kode Vicious

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 3 / 1

Page 4: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Why do they exist?

I Packet filteringI DebuggingI Kernel bypassI Access to full packet headersI New protocol development

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 4 / 1

Page 5: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Class Overview

I Necessary Data StructuresI BPFI PFILI IPFW and DummynetI NetmapI Netgraph

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 5 / 1

Page 6: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Memory for Packets

I Packets need to be stored for reception and transmissionI The basic packet memory structures are the mbuf and cluster

I mbuf structures have several types and purposesI Clusters hold only dataI History dictates that mbufs are named m

I In the kernel we will see many pointers to mbufs

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 6 / 1

Page 7: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Types of mbufs

I Wholly containedI Packet HeaderI Using a cluster

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 7 / 1

Page 8: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Four Types of mbufs

m_hdr m_hdr m_hdr

MH_pkthdr

MH_databuf

MH_databuf

MH_ext

m_hdr

MH_pkthdr

MH_ext

1 2 3 4

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 8 / 1

Page 9: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Code for an mbuf structure

1 struct mbuf {2 struct m_hdr m_hdr ;3 union {4 struct {5 struct pkthdr MH_pkthdr ; /∗ M_PKTHDR set ∗ /6 union {7 struct m_ext MH_ext ; /∗ M_EXT set ∗ /8 char MH_databuf [MHLEN] ;9 } MH_dat ;

10 } MH;11 char M_databuf [MLEN] ; /∗ !M_PKTHDR, !M_EXT ∗ /12 } M_dat ;13 } ;

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 9 / 1

Page 10: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Handling mbufs

I LimitsI Allocation typesI Reference counting

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 10 / 1

Page 11: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

mbuf Code Walk Through

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 11 / 1

Page 12: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Virtual Networking (VNET)

I Multiple instances of networking codeI Identified by struct vnet

I All new network subsystems must be virtualizedI Will not be covered in detail in this class

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 12 / 1

Page 13: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Break

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 13 / 1

Page 14: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

BPF

I Earliest Packet FrameworkI DebuggingI tcpdumpI libpcap

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 14 / 1

Page 15: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Uses

I DebuggingI Low Jitter ProtocolsI Cannot be used as a firewall

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 15 / 1

Page 16: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Theory of Operation

I Capture PacketI Examine ContentsI Match ListenersI Copy PacketI Continue normal processing

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 16 / 1

Page 17: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Location in the Stack

IPv4 IPv6

UDPTCP

Sockets

Ethernet

if0 if1 if2 lo0

BPF

/dev/bpfX

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 17 / 1

Page 18: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

The BPF Device

I Pseudo device (/dev/bpf0)I Enabled by default in all kernelsI Supports open/close/read/write/ioctl interfaceI Programmatically controlled via ioctl()

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 18 / 1

Page 19: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

BPF ioctl interface

I BIOCSETFI BIOCFLUSHI BIOCPROMISCI BIOCGDLTLISTI BIOCGDLTI BIOC[GET|SET]IFI BIOC[G|S]RTIMEOUTI BIOCGSTATSI BIOCIMMEDIATEI BIOCVERSIONI BIOC[G|S]RSIGI BIOC[G|S]HDRCMPLT

I BIOC[G|S]DIRECTIONI BIOCLOCKI BIOCSETWFI BIOCFEEDBACKI BIOCGETBUFMODEI BIOCSETBUFMODEI BIOCGETZMAXI BIOCROTZBUFI BIOCSETZBUFI BIOCSETFNRI BIOC[G|S]TSTAMP

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 19 / 1

Page 20: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

How does it work?

I Driver HooksI BPF ProgramsI Libpcap simplifies access

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 20 / 1

Page 21: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Driver Hooks

I Network Drivers must support BPF for outputI Ethernet input routines handle inbound packetsI BPF_TAP, BPF_MTAP, BPF_MTAP2I catchpacket()

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 21 / 1

Page 22: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Driver Capture Points

1 BUS_DMASYNC_POSTWRITE) ;2 sc−>tx_descs [ sc−>txhead ] . addr = segs [ 0 ] . ds_addr ;

I Example from the ATE driver if_ate.cI Add drivers effectively the sameI Called with interface pointer and mbuf

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 22 / 1

Page 23: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

BPF Programs

I Assembly Language for PacketsI Difficult for non programmersI OptimizableI Re targetable to real hardware

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 23 / 1

Page 24: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

BPF Example

1 struct bpf_ insn insns [ ] = {2 BPF_STMT(BPF_LD+BPF_H+BPF_ABS, 12) ,3 BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, ETHERTYPE_IP, 0 , 8 ) ,4 BPF_STMT(BPF_LD+BPF_W+BPF_ABS, 26) ,5 BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 0x8003700f , 0 , 2 ) ,6 BPF_STMT(BPF_LD+BPF_W+BPF_ABS, 30) ,7 BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 0x80037023 , 3 , 4 ) ,8 BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 0x80037023 , 0 , 3 ) ,9 BPF_STMT(BPF_LD+BPF_W+BPF_ABS, 30) ,

10 BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 0x8003700f , 0 , 1 ) ,11 BPF_STMT(BPF_RET+BPF_K, ( u_ i n t )−1) ,12 BPF_STMT(BPF_RET+BPF_K, 0 ) ,13 } ;

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 24 / 1

Page 25: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

What does this do?

I Accepts only IP packets between host 128.3.112.15 and128.3.112.35

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 25 / 1

Page 26: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

What does this do?

I Accepts only IP packets between host 128.3.112.15 and128.3.112.35

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 25 / 1

Page 27: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Libpcap and BPF

I Libpcap simplifies accessI Easier to understand syntaxI proto ip and host 128.3.112.15 or host 128.3.112.35

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 26 / 1

Page 28: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

BPF Code Walk Through

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 27 / 1

Page 29: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Break

I Please return in 15 minutes

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 28 / 1

Page 30: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

pfil

I generic packet filtering points throughout the kernelI used by all other packet processing frameworks

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 29 / 1

Page 31: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

PFil Consumers

I ipfwI PFI ipfilterI SIFTR

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 30 / 1

Page 32: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Current Locations

I BridgeI ENC DeviceI ether_output/ether_demuxI ip_input/ip_outputI ip6_input/ip6_output

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 31 / 1

Page 33: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Theory of Operation

I Capture packets at various pointsI Run packets through one or more hooksI Return value indicates disposition of the packet

I 0 to continueI errno to stop processing the packet

I Filtering function is responsible for mbuf cleanupI Hooks can have multiple filters

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 32 / 1

Page 34: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Hook Prototype

1 i n t (∗ p f i l _ f u n c _ t ) (2 void ∗ , /∗ Po in te r to a r b i t r a r y data ∗ /3 struct mbuf ∗∗ , /∗ Packet data , can be replaced ∗ /4 struct i f n e t ∗ , /∗ I n t e r f a c e from which the packet o r i g i n a t e d ∗ /5 int , /∗ D i r e c t i o n ∗ /6 struct inpcb ∗ /∗ Pro toco l Cont ro l Block ∗ /7 ) ;

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 33 / 1

Page 35: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Adding a Hook

1 p fh_ ine t = p f i l _head_ge t ( PFIL_TYPE_AF , AF_INET ) ;2 i f ( p f h_ ine t == NULL)3 return (ESRCH) ; /∗ XXX ∗ /4 pf i l_add_hook ( pf_check_in , NULL, PFIL_IN | PFIL_WAITOK , p fh_ ine t ) ;

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 34 / 1

Page 36: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Example Hook

1 pf_check_in ( void ∗arg , struct mbuf ∗∗m, struct i f n e t ∗ i f p , i n t d i r ,2 struct inpcb ∗ i np )3 {4 i n t chk ;56 chk = p f _ t e s t ( PF_IN , i f p , m, inp ) ;7 i f ( chk && ∗m) {8 m_freem(∗m) ; /∗ We are respons ib le f o r f r e e i n g s ta te ∗ /9 ∗m = NULL;

10 }1112 return ( chk ) ;13 }

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 35 / 1

Page 37: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

PFIL Code Walk Through

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 36 / 1

Page 38: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Summary of Part 1

I Not all networking code is TCP/IPI BPF is the lowest layer packet filterI PFil is the basis of all other packet processing frameworks

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 37 / 1

Page 39: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Coming in Part 2

I IPFW and DummynetI PF in FreeBSDI NetmapI Netgraph

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 38 / 1

Page 40: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Break

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 39 / 1

Page 41: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Review of Material from Part 1

I OverviewI Berkeley Packet Filter (BPF)I pfil

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 40 / 1

Page 42: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Overview Part 2

I IPFW and DummynetI PF in FreeBSDI NetmapI Netgraph

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 41 / 1

Page 43: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

IPFW and Dummynet

I FreeBSD FirewallI Does more than provide a firewall

I DelaysI QueueingI Bandwidth shaping

I builds on on concepts from BPF

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 42 / 1

Page 44: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Theory of Operation

I A single pfil hook (ipfw_check_hook)I ip_inputI ip6_outputI ip6_forwardI ip_inputI ip_output

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 43 / 1

Page 45: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

IPFW capture points

I Link LayerI IPv4I IPv6

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 44 / 1

Page 46: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Filter Matching

I Rules are expressed as instructionsI Very similar to BPFI Some added instructions specific to ipfw

I PIPEI QUEUEI DIVERTI TEE

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 45 / 1

Page 47: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Rule Lookup

I Centralized via ipfw_chk routineI Called from

ipfw_check_frame Link layer filtersipfw_check_packet IPv4 and IPv6 filters

I Explained further during code walk through

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 46 / 1

Page 48: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Disposition

IP_FW_PASS Accept the packetIP_FW_DENY Drop the packetIP_FW_DIVERT Divert packet to another portIP_FW_TEE Copy the packet packet, pass and send to another portIP_FW_DUMMYNET Send to Dummynet pipeIP_FW_NETGRAPH Hand to netgraph

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 47 / 1

Page 49: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

IPFW Code Walk Through

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 48 / 1

Page 50: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Dummynet

I Bandwidth ShapingI Delay and Loss EmulationI Integrated with ipfwI Initially developed for testing TCP congestion control

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 49 / 1

Page 51: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Dummynet Structure

I Packets are taggedI Assigned to a flowsetI Scheduled through the system

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 50 / 1

Page 52: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Pipes, Queues, Delaying and Drops

I Handled via centralized codeI Each scheduler is its own file

I FIFOI PriorityI Round RobinI Weighted Fair QueueingI QFQ, a variant of Weighted Fair Queueing

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 51 / 1

Page 53: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Dummynet Walk Through

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 52 / 1

Page 54: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Break

I Please return in 15 minutes

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 53 / 1

Page 55: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

PF

I Originally imported from OpenBSDI Most popular packet filter on the BSDs

I Because of its rule languageI Uses pfil hooks

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 54 / 1

Page 56: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Matching a Packet

I pf_test routine starts lookupI pf_test6 used for IPv6I Higher layer protocols have their own tests

I pf_test_state_icmpI pf_test_state_udpI pf_test_state_tcpI pf_test_state_other

I No generalized filtering system

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 55 / 1

Page 57: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Packet Disposition

PF_PASS Allow packet to proceedPF_DROP Drop packet

PF_SCRUB Scrub TCP flagsPF_NAT Network Address Translation

PF_BINAT Bidrectional NAT MappingPF_RDR Redirection

PF_SYNPROXY_DROP Perform 3-way handshakePF_DEFER Part of pfsync

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 56 / 1

Page 58: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

PF Walk Through

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 57 / 1

Page 59: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Break

I Please return in 15 minutes

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 58 / 1

Page 60: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Netmap

I Kernel bypassI Exposes NIC queues in user spaceI Direct Access to packets

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 59 / 1

Page 61: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Theory of Operation

I Direct access to hardwareI Maps device structures into user spaceI Depends on kernel for safe synchronization

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 60 / 1

Page 62: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

How does a NIC work?

I Rings of Packet DescriptorsI Synchronization BitI DMA EngineI Head and Tail Pointers

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 61 / 1

Page 63: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Receive Ring

packetdescriptor

descriptor

descriptor

descriptor

descriptor

descriptor

packet

packet

packet

packet

packet

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 62 / 1

Page 64: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Receive Ring

packetdescriptor

descriptor

descriptor

descriptor

descriptor

descriptor

packet

packet

packet

packet

packet

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 62 / 1

Page 65: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Receive Ring

packetdescriptor

descriptor

descriptor

descriptor

descriptor

descriptor

packet

packet

packet

packet

packet

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 62 / 1

Page 66: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Receive Ring

packetdescriptor

descriptor

descriptor

descriptor

descriptor

descriptor

packet

packet

packet

packet

packet

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 62 / 1

Page 67: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Receive Ring

packetdescriptor

descriptor

descriptor

descriptor

descriptor

descriptor

packet

packet

packet

packet

packet

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 62 / 1

Page 68: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Receive Ring

packetdescriptor

descriptor

descriptor

descriptor

descriptor

descriptor

packet

packet

packet

packet

packet

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 62 / 1

Page 69: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Receive Ring

packetdescriptor

descriptor

descriptor

descriptor

descriptor

descriptor

packet

packet

packet

packet

packet

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 62 / 1

Page 70: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Transmit Ring

I Looks much like the receive ringI May have different meta dataI Descriptor still has an ownership bit

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 63 / 1

Page 71: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Uses

I Direct access to all packet dataI Speedup for native virtualization (bhyve)I Single node test systemsI Latency sensitive applications

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 64 / 1

Page 72: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

VALE Switch

I Virtual Local Ethernet SwitchI Accessed via netmapI Used to interconnect VMs (qemu etc.)

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 65 / 1

Page 73: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Netmap Code Walk Through

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 66 / 1

Page 74: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Break

I Please return in 15 minutes

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 67 / 1

Page 75: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Netgraph

I Directed Graph for Packet ProcessingI Used to develop new protocolsI Currently supports

I PPPI ATMI Bluetooth

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 68 / 1

Page 76: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Object Oriented Packet Processing

Node Class and ObjectHook Method on the Node

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 69 / 1

Page 77: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Simple Example: Ethernet Bridge

ng_etherigb0

ng_bridge

ng_etherigb1

link0 link1

lower lower

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 70 / 1

Page 78: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Nodes

I Where packet processing is doneI Should only do one thing

I and do that thing wellI Pass DataI React to messages

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 71 / 1

Page 79: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Some Sample Nodesng_atm ATM nodeng_bpf Berkeley Packet Filter

ng_bridge Ethernet bridgingng_device Device node

ng_echo Echo nodeng_etf Ethertype filtering

ng_frame Frame relayng_gif Generic tunnel interfaceng_ip IP input

ng_ipfw Interface between netgraph and IP firewallng_ksocket Kernel socket netgraph node type

ng_one2many Multiplexing nodeng_split Separate incoming and outgoing flowsng_tag Manipulate mbuf tagsng_ubt Driver for Bluetooth USB devices

ng_vlan IEEE 802.1Q VLAN taggingGeorge Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 72 / 1

Page 80: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Node Messages

I Control plane messagesI ConfigurationI Setting up connections among nodes

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 73 / 1

Page 81: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Node Connections

I One to OneI One to ManyI Many to One

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 74 / 1

Page 82: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Hooks

I Form the edges of the graph

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 75 / 1

Page 83: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Node Structure

1 struct ng_node {2 char nd_name [NG_NODESIZ ] ; /∗ o p t i o n a l g l o b a l l y unique name ∗ /3 struct ng_type ∗nd_type ; /∗ the i n s t a l l e d ’ type ’ ∗ /4 i n t nd_f lags ; /∗ see below f o r b i t d e f i n i t i o n s ∗ /5 i n t nd_numhooks ; /∗ number o f hooks ∗ /6 void ∗nd_pr iva te ; /∗ node type dependant node ID ∗ /7 ng_ID_t nd_ID ; /∗ Unique per node ∗ /8 LIST_HEAD( hooks , ng_hook ) nd_hooks ; /∗ l i n k e d l i s t o f node hooks ∗ /9 LIST_ENTRY( ng_node ) nd_nodes ; /∗ name hash c o l l i s i o n l i s t ∗ /

10 LIST_ENTRY( ng_node ) nd_idnodes ; /∗ ID hash c o l l i s i o n l i s t ∗ /11 struct ng_queue nd_input_queue ; /∗ i npu t queue f o r l ock ing ∗ /12 i n t nd_refs ; /∗ # of re ferences to t h i s node ∗ /13 struct vnet ∗nd_vnet ; /∗ network stack ins tance ∗ /14 } ;

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 76 / 1

Page 84: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Hooks

1 struct ng_hook {2 char hk_name [NG_HOOKSIZ ] ; /∗ what t h i s node knows t h i s l i n k as ∗ /3 void ∗hk_pr i va te ; /∗ node dependant ID f o r t h i s hook ∗ /4 i n t hk_f lags ; /∗ i n f o about t h i s hook / l i n k ∗ /5 i n t hk_type ; /∗ tbd : hook data l i n k type ∗ /6 struct ng_hook ∗hk_peer ; /∗ the o ther end of t h i s l i n k ∗ /7 struct ng_node ∗hk_node ; /∗ The node t h i s hook i s at tached to ∗ /8 LIST_ENTRY( ng_hook ) hk_hooks ; /∗ l i n k e d l i s t o f a l l hooks on node ∗ /9 ng_rcvmsg_t ∗hk_rcvmsg ; /∗ c o n t r o l messages come here ∗ /

10 ng_rcvdata_t ∗hk_rcvdata ; /∗ data comes here ∗ /11 i n t hk_refs ; /∗ dont a c t u a l l y f r ee t h i s t i l l 0 ∗ /12 } ;

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 77 / 1

Page 85: Packet Processing Frameworks - Home Page of … · Packet Processing Frameworks Basics, BPF and PFil George Neville-Neil Neville-Neil Consulting AsiaBSDCon March 2014 ... Libpcap

Netgraph Code Walk Through

George Neville-Neil (Neville-Neil Consulting) Packet Processing Frameworks AsiaBSDCon March 2014 78 / 1