230 likes | 531 Views
BPC: A language for packet classification. Haiyong Wang hw6h@cs.virginia.edu. What is classification. Classification is a mechanism that inspects incoming network packets, and based on the values found in selected header fields, determines how each to be processed.
E N D
BPC: A language for packet classification Haiyong Wang hw6h@cs.virginia.edu
What is classification • Classification is a mechanism that inspects incoming network packets, and based on the values found in selected header fields, determines how each to be processed. • Usually, specifications are expressed as rules. • Packets satisfying the same rule are classify into one flow.
net 202.128.201.0/24 net 202.128.202.0/24 net 202.128.203.0/24 Classification: an example Router ISP1 Flow1 Classifier ISP2 Flow2 Flow3 ISP3
Why Classification • Essential to QoS (admission control, resource reservation, per-flow queuing and fair scheduling) • Necessary to many advanced services ( load balancing and content-based routing) • ISP ( Accounting, billing and network monitoring ) • Network Security
What has been done? • Networking community: extend IP lookup • Focus on performance • Very limited specifications, no language. • Only work on Layer 3/4 header • OS community: packet demultiplexing • machine-code level specification(difficult to develop and test) • Filter composition issues
My work • Based on a high-level packet filter language(BPF) • Filter composition • Look deeper and smarter • Keep status
(((12:16 == 0x8 ) && #IP? Shift(6 + 6 + 2)&& #skip Ethernet header (9:8== 6)&& #TCP? Shift(20)&& #skip IP header (0:16 == 80)&& #src port 80 (2:16 == 80) #dst port 80 (((12:16 == 0x8 ) && #IP? Shift(6 + 6 + 2)&& #skip Ethernet header (9:8== 6)&& #TCP? Shift(20)&& #skip IP header (0:16 == 80)&& #src port 80 (2:16 == 80) #dst port 80 Tcp port HTTP Source network == Destination network Tcp port HTTP Why high-level language? Short! You can not express this in low level language! Easy to use and error-free
Filter Composition • Syntax • $1 filter expression1 • $2 filter expression2 • … • $n filter expression n • Priority is used to resolve conflict
ISP A Real Scenario UserA: Online chat Low Delay Low Bandwidth UserB: Napster fan Greedy Source UserC: Real player Stream Constant BW Low delay Low Jitter
$1 host user A and port A $2 host user B and port B $3 host user C and port C Flow A: the highest priority Flow B:the lowest priority Flow C: reserve bandwidth BPC solution UserA: Online chat UserB: Napster fan UserC: Real player Stream
Look Deeper and Smarter • Why • TCP/IP does not specify what to transmit • Many application-layer protocols put keywords at the beginning of the payload • How • Search Regular Expression • Allow User to define their own criteria
Ethernet Header Ethernet Header IP Header IP Header TCP Header TCP Header Application protocol Application protocol Syntax Include “Regular String” From Len1 to Len2 Include “Regular String” from Len1 to Len2 many protocols are case insensitive Limit the range can reduce the expense Invoke “user routine” boolean user_routine( void *packet, int len)
I Love you I Love you I Love you “I love you”
I Love you I Love you I Love you $include “I *Love*You” from 20 to 100 and port mail port “I love you” (con’d)
Why keep status • Enable us to classify packets dynamically according to the connections • Provide uniform services to all the packets in the same connection • Resource Reservation (allocation and de-allocation)
How to do that: Syntax • trigger ( start expression ) • remove ( end expression ) • satisfy ( match expression ) • identify by ( key words )
Keep status: an example • Example: TCP connection • trigger (tcp[13]&2 = 2) #SYN packet • remove tcp[13]&1 = 1 ) #FIN packet • satisfy ( tcp ) • identify (src host, src port, dst host, dst port)
DDOS Packet Classifier
luxury, spacious, butslow carriage economy, crowded and even unsafe, but super-fast rocket Performance!!! Is Everything all right Analogy What’s the moral
How to run fast • Replace interpreter with native code • Special hardware (hash table, parallel computation) • Compiler Optimization • Intra-filter • Inter-filter
Inter-filter Optimization Ip src host1 Ip dst host2
Summary • Work has been done • Design a packet classification language by extending BPF • Implement a working system.( You are welcomed to take a look after class ) • Future Work • Integrate BPC into BPF • Performance issues