2010 Sep.
PacketShader:
A GPU-Accelerated Software Router
Sangjin Han†
In collaboration with:
Keon Jang †, KyoungSoo Park‡, Sue Moon †
† Advanced Networking Lab, CS, KAIST ‡ Networked and Distributed Computing Systems Lab, EE, KAIST
PacketShader: A GPU-Accelerated Software Router Sangjin Han In - - PowerPoint PPT Presentation
PacketShader: A GPU-Accelerated Software Router Sangjin Han In collaboration with: Keon Jang , KyoungSoo Park , Sue Moon Advanced Networking Lab, CS, KAIST Networked and Distributed Computing Systems Lab, EE, KAIST 2010
2010 Sep.
† Advanced Networking Lab, CS, KAIST ‡ Networked and Distributed Computing Systems Lab, EE, KAIST
2010 Sep. 2
2010 Sep.
3
2010 Sep.
4
2010 Sep.
5
2010 Sep.
6
2010 Sep.
7
1,200 600 1,200 1,600
Packet I/O IPv4 lookup = 1,800 cycles = 2,800
1,400 cycles 10G, min-sized packets, dual quad-core 2.66GHz CPUs
5,400 1,200
… = 6,600 Packet I/O IPv6 lookup Packet I/O Encryption and hashing
IPv4 IPv6 IPsec + + + (in x86, cycle numbers are from RouteBricks [ Dobrescu09] and ours)
2010 Sep.
8
Packet I/O Packet I/O Packet I/O Packet I/O
600 1,600
IPv4 lookup = 1,800 cycles = 2,800
5,400
… = 6,600 IPv6 lookup Encryption and hashing
+ + +
1,200 1,200 1,200
2010 Sep.
9
Packet I/O Packet I/O Packet I/O
600 1,600
IPv4 lookup
5,400
… IPv6 lookup Encryption and hashing
+ + +
2010 Sep.
10
2010 Sep.
11
(Ubisoft’s AVARTAR, from http: / / ubi.com)
2010 Sep.
12
2010 Sep.
13
2010 Sep.
14
2010 Sep.
15
2010 Sep.
16
= 2.66 (GHz) × 4 (# of cores) × 4 (4-way superscalar)
= 1.4 (GHz) × 480 (# of cores)
2010 Sep.
17
Cache miss Cache miss
Switch to Thread 2 Switch to Thread 3
2010 Sep.
18
2010 Sep.
19
RAM NIC
CPU RAM
RAM CPU
NIC RAM
2010 Sep.
20
2010 Sep.
21
2010 Sep.
22
2010 Sep.
23
2010 Sep.
24
2010 Sep.
25
RX queue
in GPU
2010 Sep.
26
2010 Sep.
27
2010 Sep.
28
Pre- shader Shader Post- shader
2010 Sep.
29
Pre- shader Shader Post- shader
Collected
Some packets go to slow-path
2010 Sep.
30
Pre- shader Shader Post- shader
2010 Sep.
31
Pre- shader Shader Post- shader
Update packets and transmit
2010 Sep.
32
Pre- shader Shader Post- shader Device driver Packet RX Device driver Packet TX
2010 Sep.
Device driver Pre- shader Shader Post- shader Device driver
33
2010 Sep. 34
Device driver Pre- shader Shader Post- shader Device driver Shader
2010 Sep.
35
2010 Sep.
36
Quad-core, 2.66 GHz
Total 80 Gbps Dual-port 10 GbE Total 8 CPU cores 480 cores, 1.4 GHz Total 960 cores
2010 Sep.
37
… 8 × 10 GbE links
(Up to 80 Gbps)
Input traffic Processed packets
2010 Sep.
38
2010 Sep.
39
… … … …
Prefix length 1 64 128 96 80
2010 Sep.
(Routing table was randomly generated with 200K entries)
40
Bounded by motherboard IO capacity
2010 Sep.
41
IP header IP payload IP header IP payload ESP trailer
+
Original IP packet
IP header IP payload ESP trailer ESP header + IP header IP payload ESP trailer ESP header ESP Auth. New IP header +
IPsec Packet
2010 Sep.
42
2010 Sep. 43
2010 Sep.
44
2010 Sep.
45