28
DFC: Accelerating String Pattern Matching for Network Applications

DFC: Accelerating String Pattern Matching for …•Looking for known patterns in packet payloads −String pattern matching (Fixed-length string) and Regex matching (PCRE) −5K ~

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: DFC: Accelerating String Pattern Matching for …•Looking for known patterns in packet payloads −String pattern matching (Fixed-length string) and Regex matching (PCRE) −5K ~

DFC: Accelerating String Pattern Matching for

Network Applications

Page 2: DFC: Accelerating String Pattern Matching for …•Looking for known patterns in packet payloads −String pattern matching (Fixed-length string) and Regex matching (PCRE) −5K ~

• NFV : Commodity hardware appliances Software layer- Virtualizes entire class of network functions

- E.g., IDS, Firewall, NAT, Load balancer, …

Trend : Popularity of Network Function Virtualization (NFV)

2

Page 3: DFC: Accelerating String Pattern Matching for …•Looking for known patterns in packet payloads −String pattern matching (Fixed-length string) and Regex matching (PCRE) −5K ~

• Looking for known patterns in packet payloads− String pattern matching (Fixed-length string) and Regex matching (PCRE)

− 5K ~ 26K rules in public rule-sets for network applications

• Rule Examples− Rule 1

− Rule 2

− Rule 3

3

Content: “Object” PCRE: “/(ActiveX|Create)Object/i”

Content: “Persits.XUpload” PCRE: “\s*\([\x22\x27]Persits.XUpload/i”

Content: “FieldListCtrl” PCRE: “ACCWIZ\x2eFieldListCtrl\x2e1\x2e8/i”

String pattern matching Regular expression matching

Pattern Matching for Deep Packet Inspection

Page 4: DFC: Accelerating String Pattern Matching for …•Looking for known patterns in packet payloads −String pattern matching (Fixed-length string) and Regex matching (PCRE) −5K ~

• Looking for known patterns in packet payloads− String pattern matching (Fixed-length string) and Regex matching (PCRE)

− 5K ~ 26K rules in public rule-sets for network applications

• Network applications using pattern matching

Pattern Matching for Deep Packet Inspection

Intrusion Detection

Attack patterns

4

Fixed-length string 1Fixed-length string 2

Regex 1

Regex 2

String pattern matching(Multi patterns)

Regex matching(Single regex)

Page 5: DFC: Accelerating String Pattern Matching for …•Looking for known patterns in packet payloads −String pattern matching (Fixed-length string) and Regex matching (PCRE) −5K ~

• Looking for known patterns in packet payloads− String pattern matching (Fixed-length string) and Regex matching (PCRE)

− 5K ~ 26K rules in public rule-sets for network applications

• Network applications using pattern matching

Pattern Matching for Deep Packet Inspection

Parental Filtering Exfiltration Detection

Web Application FirewallIntrusion Detection

Attack patterns

Banned words Watermark

Attack patterns

5

Page 6: DFC: Accelerating String Pattern Matching for …•Looking for known patterns in packet payloads −String pattern matching (Fixed-length string) and Regex matching (PCRE) −5K ~

* (1) S. Antonatos et al. Generating Realistic Workloads for Network Intrusion Detection Systems. ACM SIGSOFT SEN, 2004.(2) M. A. Jamshed et al. Kargus: A Highly-scalable Software-based Intrusion Detection System. ACM CCS, 2012.(3) Chris Ueland. Scaling CloudFlare’s massive WAF. http://www.scalescale.com/scaling-cloudflaresmassive-waf/

However, String Pattern Matchingis Performance Bottleneck

NetworkApplications

Packet I/O

Networking Stack

Application Logic(e.g., String pattern matching,

Regular expression matching, …)

Intel DPDK, PF_RINGPacketShader [SIGCOMM 11]netmap [USENIX ATC 12]

IX [OSDI 14], OpenFastPathmTCP [NSDI 14], 6WINDGate

70-80% of CPU cyclesconsumed by

string pattern matching *

6

Page 7: DFC: Accelerating String Pattern Matching for …•Looking for known patterns in packet payloads −String pattern matching (Fixed-length string) and Regex matching (PCRE) −5K ~

* (1) S. Antonatos et al. Generating Realistic Workloads for Network Intrusion Detection Systems. ACM SIGSOFT SEN, 2004.(2) M. A. Jamshed et al. Kargus: A Highly-scalable Software-based Intrusion Detection System. ACM CCS, 2012.(3) Chris Ueland. Scaling CloudFlare’s massive WAF. http://www.scalescale.com/scaling-cloudflaresmassive-waf/

However, String Pattern Matchingis Performance Bottleneck

NetworkApplications

Packet I/O

Networking Stack

Application Logic(e.g., String pattern matching,

Regular expression matching, …)

Intel DPDK, PF_RINGPacketShader [SIGCOMM 11]netmap [USENIX ATC 12]

IX [OSDI 14], OpenFastPathmTCP [NSDI 14], 6WINDGate

70-80% of CPU cyclesconsumed by

string pattern matching *

Can we improve software-based string matching?

How does it affect application performance?

7

Page 8: DFC: Accelerating String Pattern Matching for …•Looking for known patterns in packet payloads −String pattern matching (Fixed-length string) and Regex matching (PCRE) −5K ~

1) Outperforms state-of-the-art algorithm by a factor of up to 2.4

2) Improves network applications performance

DFC: High-Speed String Matching

0

10

20

30

40

K

K

K

K

K

K

0

2

4

6

8

10

Intrusion Detection Web Application Firewall Traffic Classification

Thro

ugh

pu

t (#

of

req

./se

c)

0

2K

4K

6K

8K

10K

12.8 Gbps

29.6 Gbps

4,155 req./s

6,537 req./s

4.2 Gbps

6.7 Gbps

Existing-approach-based

DFC-based

130%↑60%↑ 60%↑

Thro

ugh

pu

t (G

bp

s)

Thro

ugh

pu

t (G

bp

s)

8

Page 9: DFC: Accelerating String Pattern Matching for …•Looking for known patterns in packet payloads −String pattern matching (Fixed-length string) and Regex matching (PCRE) −5K ~

• Support exact matching− As opposed to false positives

• Handle short and variable size patternsefficiently

− 52% of patterns are short (< 9 byte).

• Provide efficient online lookup againsta stream of data (e.g., network traffic)

Three Requirements of String Matching

48%

26%

26%

< Pattern length distribution >* Commercial pattern sets of IDS & Web Firewall

(ET-Pro, Snort VRT, OWASP ModSecurity CRS)

9

Page 10: DFC: Accelerating String Pattern Matching for …•Looking for known patterns in packet payloads −String pattern matching (Fixed-length string) and Regex matching (PCRE) −5K ~

• Aho-Corasick (AC)− Widely used by Suricata, Snort, CloudFlare, …

− Constructs a finite state machine from patterns

− Locates all occurrences of any patterns using the state machine

Limitations of Existing Approaches

FINISHED

H I S

S H E

E R S∙ Input text :

∙ Result: SHE HE

∙ Patterns:

* Example

HIS HERS HE SHE

10

Page 11: DFC: Accelerating String Pattern Matching for …•Looking for known patterns in packet payloads −String pattern matching (Fixed-length string) and Regex matching (PCRE) −5K ~

• Aho-Corasick (AC)− Widely used by Suricata, Snort, CloudFlare, …

− Constructs a finite state machine from patterns

− Locates all occurrences of any patterns using the state machine

• Limitations of AC− State machine is very large.

− Working set ≫ CPU cache size

− Instruction throughput is slow.

Limitations of Existing Approaches

5.2x

5.4x

11

Page 12: DFC: Accelerating String Pattern Matching for …•Looking for known patterns in packet payloads −String pattern matching (Fixed-length string) and Regex matching (PCRE) −5K ~

• Heuristic-based approach ( Boyer-Moore, Wu-Manber, … )− Advances window by multiple characters using “bad character” and “good suffix”

− Not effective with short and variable size patterns

− Hard to leverage instruction-level pipelining

• Hashing-based approach ( Feed-forward Bloom filters (FFBF), … )− Compares hash of text block with hash of pattern

− Requires expensive hash computations (2.5X more instructions than DFC)

− Not effective with short and variable size patterns

− Induces false positives

Limitations of Existing Approaches (Cont.)12

Page 13: DFC: Accelerating String Pattern Matching for …•Looking for known patterns in packet payloads −String pattern matching (Fixed-length string) and Regex matching (PCRE) −5K ~

• Overcomes the limitations of existing approaches− Consumes small memory

− Works efficiently with short and variable size patterns

− Delivers high instruction-level parallelism

• Works efficiently even in worst case− Worst case where all packets contain attack patterns

DFC: Design Goal13

Page 14: DFC: Accelerating String Pattern Matching for …•Looking for known patterns in packet payloads −String pattern matching (Fixed-length string) and Regex matching (PCRE) −5K ~

DFC: Overview

• Exploits a simple and efficient primitive− Used as a key building block of DFC

− Requires small number of operations and memory lookups

− Filters out innocent windows of input text

• Progressively eliminates false positives− Handles each pattern in a different way in terms of pattern length

• Verifies exact matching− Exploits hash tables

14

Page 15: DFC: Accelerating String Pattern Matching for …•Looking for known patterns in packet payloads −String pattern matching (Fixed-length string) and Regex matching (PCRE) −5K ~

DFC: Component Overview

4~7B2~3B 8B~1B

• Initial Filtering− Uses an efficient primitive “Direct filter”

− Eliminates innocent windows of input text comparing few bytes (2~3 byte)

• Progressive Filtering− Eliminates innocent windows further

− Determines lengths of patterns that window might match

− Applies additional filtering proportional to the lengths

• Verification− Verifies whether exact match is generated

15

Page 16: DFC: Accelerating String Pattern Matching for …•Looking for known patterns in packet payloads −String pattern matching (Fixed-length string) and Regex matching (PCRE) −5K ~

• Uses a single Direct filter− A bitmap indexed by several bytes of input text

− Example (Using 2B sliding window)

DFC: Initial Filtering

Example pattern:

attack01100100 01100101

GET /destroy/attack/try-20Packet Payload:

Direct filter

dddc de atas au

10 0 0 0 0 00 author

athlete

1

16

Page 17: DFC: Accelerating String Pattern Matching for …•Looking for known patterns in packet payloads −String pattern matching (Fixed-length string) and Regex matching (PCRE) −5K ~

• Uses a single Direct filter− A bitmap indexed by several bytes of input text

− Example (Using 2B sliding window)

DFC: Initial Filtering

Example pattern:

attack01100100 01100101

GET /destroy/attack/try-20Packet Payload:

Direct filter

dddc de atas au

10 0 0 0 0 00

No pattern beginning with

‘de’

author

athlete

1

17

Page 18: DFC: Accelerating String Pattern Matching for …•Looking for known patterns in packet payloads −String pattern matching (Fixed-length string) and Regex matching (PCRE) −5K ~

• Uses a single Direct filter− A bitmap indexed by several bytes of input text

− Example (Using 2B sliding window)

DFC: Initial Filtering

Example pattern:

attack

Further inspection

01100100 01100101

GET /destroy/attack/try-20Packet Payload:

Direct filter 10 0 0 0 0 00 author

athlete

1

18

Page 19: DFC: Accelerating String Pattern Matching for …•Looking for known patterns in packet payloads −String pattern matching (Fixed-length string) and Regex matching (PCRE) −5K ~

• Uses a single Direct filter− A bitmap indexed by several bytes of input text

− Example (Using 2B sliding window)

DFC: Initial Filtering

Example pattern:

attackGET /destroy/attack/try-20Packet Payload:

Direct filter 10 0 0 0 0 00

1) No data dependency(Instruction parallelism ↑)

author

athlete

1

3) 2 byte 𝟐𝟏𝟔

= 65536 = 8KB

2) 2 SHIFTs and 1 AND+

1 memory reference

19

94% of windows are filtered out.

Page 20: DFC: Accelerating String Pattern Matching for …•Looking for known patterns in packet payloads −String pattern matching (Fixed-length string) and Regex matching (PCRE) −5K ~

• Further eliminates innocent windows− Uses multiple layers of Direct filters

− Determines approximate lengths of potentially matching patterns

DFC: Progressive Filtering

4~7B2~3B 8B~1B

GET /destroy/attack/try-20Packet Payload:

attack

athlete

attacker

attachment

hi

m

4~7B

2~3B

8B~

1B

Direct Filter

attacker

Additional filtering

20

Page 21: DFC: Accelerating String Pattern Matching for …•Looking for known patterns in packet payloads −String pattern matching (Fixed-length string) and Regex matching (PCRE) −5K ~

• Exact matching : (100 – 94%) * (100 – up to 84%) = only 4%!− By comparing text with actual patterns in the pattern class

− Where only small fraction of windows reach

4~7B2~3B 8B~1B

Hash( 1B )

Hash( 2B )

Hash( 4B )

Hash( 8B )

DFC: Verification

1

0

2

4~7B

atta

athl

ck Pattern ID

traf

ete

fic

Pattern ID

Pattern ID

GET /destroy/attack/try-20Packet Payload:

Hash( ‘atta’ )

ComparisonComparison

Reporting!

21

Page 22: DFC: Accelerating String Pattern Matching for …•Looking for known patterns in packet payloads −String pattern matching (Fixed-length string) and Regex matching (PCRE) −5K ~

DFC: Two-Stage Hierarchical Design

4~7B2~3B 8B~1B

6~7B5B4B

1st Stage

2nd Stage

Initial Filtering

Progressive Filtering

Verification

Progressive Filtering

Verification* Found from

ET-Pro

Pattern Set

.asp

.asp?

.asp?a=

.asp?p=

.asp?u=

.aspx

.aspx?

22

Page 23: DFC: Accelerating String Pattern Matching for …•Looking for known patterns in packet payloads −String pattern matching (Fixed-length string) and Regex matching (PCRE) −5K ~

Evaluation

• Two questions1) Can we improve software-based string matching?

2) How does it affect application performance?

• Machine Specification & Workload− Intel Xeon E5-2690 (16 cores, 20MB for L3 cache)

− 128 GB of RAM

− Intel® Compilers (icc)

− Using real traffic trace from ISP in south Korea

23

Page 24: DFC: Accelerating String Pattern Matching for …•Looking for known patterns in packet payloads −String pattern matching (Fixed-length string) and Regex matching (PCRE) −5K ~

Standalone Benchmark (1/2) – Average Case

2.4 2.2 2.1 2.1 2.0

0

0.5

1

1.5

2

2.5

0

20

40

60

80

100

1K 5K 10K 15K 26K

Improvement over AC

Throughput (Gbps)

Number of patterns(From ET-Pro, May 2015)

Heuristic-based (MWM) Aho-Corasick (AC) DFC Improvement

* MWM: Modified Wu-Manber

*

24

Page 25: DFC: Accelerating String Pattern Matching for …•Looking for known patterns in packet payloads −String pattern matching (Fixed-length string) and Regex matching (PCRE) −5K ~

Standalone Benchmark (2/2) – Worst Case

0

10

20

30

0% 50% 100%

Throughput (Gbps)

Fraction of malicious packets

AC DFC

70%↑

• Worst case 1 (Single pattern)

innocentATTACKinnocent

• Worst case 2 (Concatenated)

ATTACK1 ATTACK2 ATTACK3

0.0

0.3

0.5

Throughput (Gbps)

AC DFC

40%↑AC: 62X increased size of working set

* Packet size : 1514B

25

Page 26: DFC: Accelerating String Pattern Matching for …•Looking for known patterns in packet payloads −String pattern matching (Fixed-length string) and Regex matching (PCRE) −5K ~

Why does DFC work well?

1.2

2.3

0

1

2

3

Instruction Count IPC

1.07

0.19 0.28

0.04 0

1

2

L1-Dcache

L2 cache

AC DFC

3.8X↓

4.8X↓

26

Factor increase with DFC over AC

# of cache missesper one byte

processing

Page 27: DFC: Accelerating String Pattern Matching for …•Looking for known patterns in packet payloads −String pattern matching (Fixed-length string) and Regex matching (PCRE) −5K ~

Accelerating Network Applications using DFC

0

1

2

3

Intrusion Detection(Kargus - CCS `12, 6K)

Web Application Firewall(ModSecurity, 5K)

Traffic Classification(from nDPI, 100K)

No

rmal

ize

d t

hro

ugh

pu

t

AC-based DFC-based

12.8 Gbps

130%↑29.6 Gbps

4,155 req./s

60%↑6,537 req./s

4.2 Gbps

60%↑6.7 Gbps

Large # of patterns

27

Page 28: DFC: Accelerating String Pattern Matching for …•Looking for known patterns in packet payloads −String pattern matching (Fixed-length string) and Regex matching (PCRE) −5K ~

DFC: High-Speed String Pattern Matching

• String pattern matching is a performance-critical task.

• DFC accelerates string pattern matching by− Using small size of basic building block

− Avoiding data dependency in critical path

• DFC delivers 2.4X speedup compared to Aho-Corasick.− 1.4X in the worst case

• DFC improves application performance by up to 130%.

• Detailed information at ina.kaist.ac.kr/~dfc

28