Network ¡Traffic ¡Monitoring ¡& ¡ Analysis ¡with ¡GPUs ¡
Wenji ¡Wu, ¡Phil ¡DeMar ¡ wenji@fnal.gov, ¡demar@fnal.gov ¡
¡
Network Traffic Monitoring & Analysis with GPUs Wenji - - PowerPoint PPT Presentation
Network Traffic Monitoring & Analysis with GPUs Wenji Wu, Phil DeMar wenji@fnal.gov, demar@fnal.gov GPU Technology Conference 2013 March 18-21, 2013
¡
2 ¡
¡
– Each ¡packet ¡can ¡be ¡processed ¡independently ¡
– Typically, ¡data ¡processed ¡once ¡in ¡sequence; ¡ ¡rarely ¡reused ¡
3 ¡
4 ¡
5 ¡
Features ¡ NPU/ASIC ¡ CPU ¡ GPU ¡
High ¡compute ¡power ¡
Varies ¡ ✖ ¡ ✔ ¡
High ¡memory ¡bandwidth ¡
Varies ¡ ✖ ¡ ✔ ¡
Easy ¡programmability ¡
✖ ¡ ✔ ¡ ✔ ¡
Data-‑parallel ¡execuEon ¡model ¡
✖ ¡ ✖ ¡ ✔ ¡
6 ¡
7 ¡
8 ¡
...
GPU Domain
Monitoring & Analysis Kernels Output
User Space
Output Output
Packet Buffer
Network Packets NICs
Packet Buffer Output
...
Capturing Captured Data Packet Chunks
9 ¡
Free Packet Buffer Chunks
OS Kernel User Space
...
Capture Attach Recycle
Recv Descriptor Ring Packet Buffer Chunk
Incoming Packets NIC
...
Descriptor Segments
Processing Data
¡
¡
10 ¡
11 ¡
1 raw_pkts [ ] filtered_pkts [ ] filtering_buf [ ] scan_buf [ ]
index 1 2 3 4 5 6 7 1 2 3 4 5 6 7 index index 1 2 3
Filtering 1 Scan 2 Compact 3
p2 p1 p3 p5 p4 p6 p8 p7
1 1 1 1 1 2 3 3 3 4
p1 p3 p4 p7
x x x x
We ¡use ¡Berkeley ¡Packet ¡Filter ¡(BPF) ¡ as ¡the ¡packet ¡filter ¡ A ¡few ¡basic ¡GPU ¡operaWons, ¡such ¡ as ¡sort, ¡prefix-‑sum, ¡and ¡compact. ¡
12 ¡
7 6 5 4 3 2 dst2 raw_pkts[ ] inc_scan_buf[ ] sorted_pkts[ ]
1 2 3 4 5 6 7 index
1 diff_buf[ ] 1 1 4 4 4 3 2 1 src1 dst1 1 src1 src2 dst4 src1 dst1 src1 dst1 src1 dst3 src2 dst4 src2 dst4 7 6 5 4 3 2 dst2 src1 dst1 1 src1 src2 dst4 src1 dst1 src1 dst1 src1 dst3 src2 dst4 src2 dst4 1 1 1 key_value[ ]
value key1 key2 value key1 key2
IP_Traffic [ ] stats stats stats stats
index 1 2 3
src1 dst1 dst2 src1 src1 dst3 src2 dst4
Reads ¡an ¡array ¡of ¡n ¡packets ¡at ¡pkts[] ¡and ¡aggregates ¡traffic ¡between ¡same ¡src ¡& ¡dst ¡IP ¡
associated ¡traffic ¡staWsWcs ¡such ¡as ¡packets ¡and ¡bytes ¡sent ¡etc. ¡ ¡
13 ¡
1. ¡for ¡each ¡i∈[0,n-‑1] ¡in ¡parallel ¡do ¡ ¡ ¡IPs[i] ¡≔ ¡src ¡or ¡dst ¡addr ¡of ¡pkts[i]; ¡ ¡ ¡end ¡for ¡
¡for ¡each ¡i∈[1,n-‑1] ¡in ¡parallel ¡do ¡ ¡ ¡if(sorted_IPs[i] ¡≠sorted_IPs[i-‑1]) ¡diff_buf[i]=1; ¡ ¡ ¡else ¡diff_buf[i]=0; ¡ ¡end ¡for ¡ 4. ¡perform ¡exclusive ¡prefix ¡sum ¡on ¡diff_buf[]; ¡ 5. ¡for ¡each ¡i∈[0,n-‑1] ¡in ¡parallel ¡do ¡ ¡ ¡if(diff_buf[i] ¡==1) ¡Output[scan_buf[i]]=sorted_IPs[i]; ¡ ¡end ¡for ¡
14 ¡
15 ¡
– ¡an ¡array ¡that ¡is ¡used ¡to ¡store ¡protocol ¡staWsWcs ¡for ¡network ¡ traffic, ¡with ¡each ¡entry ¡associated ¡with ¡a ¡specific ¡protocol. ¡ ¡
– arrays ¡that ¡are ¡used ¡to ¡store ¡traffic ¡staWsWcs ¡for ¡IP ¡ conversaWons ¡in ¡the ¡send ¡and ¡receive ¡direcWons, ¡respecWvely. ¡
– a ¡hash ¡table ¡that ¡is ¡used ¡to ¡keep ¡track ¡of ¡network ¡traffic ¡ informaWon ¡of ¡each ¡IP ¡address ¡node. ¡ ¡
16 ¡
17 ¡
P0 P1 I O H I O H 10G-NIC M2070 Mem Mem QPI QPI QPI QPI PCI-E 10G-NIC PCI-E
Node 0 Node 1
PCI-E
18 ¡
!"# $!"# %!"# &!"# '!"# (!!"# ($!"# ()&#*+,# $)!#*+,# $)%#*+,#
3-8#961:51;/<1=#
A12B.4# *-8CDEF# !"# $!"# %!"# &!"# '!"# (!!"# ($!"# ()&#*+,# $)!#*+,# $)%#*+,#
.19;3<=>1?35# @3<A1B# *./CDEF#
19 ¡
!" #!!" $!!" %!!" &!!" '!!!" '#!!" '$!!" '%!!" '&!!" #!!!" '" #" (" $" )*+,-./0"123+"450267"82992:+,/0;<" )*=+>23+06"?@6@"A+6" :6@0;@>;BC=-B+*=" 33@=BC=-B+*=" ,=-B+*=B'D%E" ,=-B+*=B#D!E" ,=-B+*=B#D$E"
20 ¡
!" #!!" $!!!" $#!!" %!!!" %#!!" &!!!" &#!!" '(" )*(" +,)"$&$-%%#-$!." +,)"$%/-$#-&!" ,0123456")781"9:67;<"=7>>7?1256@A" B(C"C7>;1D?" EF3G10F" 2F3G10FG$-HI" 2F3G10FG%-!I" 2F3G10FG%-JI"
21 ¡
50 100 150 200 250 300 0.4 0.6 0.8 1 Packet Size (Byte) Packet Ratio One NIC Experiments 50 100 150 200 250 300 0.4 0.6 0.8 1 Packet Size (Byte) Packet Ratio Two NIC Experiments 1.6GHz 2.0GHz 2.4GHz OnDemand 1.6GHz 2.0GHz 2.4GHz OnDemand
22 ¡
23 ¡
24 ¡