As networking is becoming essential in most of computer systems today, there is increasing demand for faster
and flexible network processing. Network access speed has been increased tremendously in last two decades, and
unlike old days where network infrastructure simply forwards packets, today’s network infrastructure does a lot
more complex functions such as encryption / decryption or intrusion detection.
In this work, we explore possibility of using GPUs (Graphics Processing Units) as a network processor to
build cost-effective and high-performance network equipment out of commodity hardware. GPUs are gaining their
popularity in scientific computing cluster that requires huge amount of computations. GPU’s fundamental difference
from CPU is in massive parallel processing. GPUs massive parallel processing matches network processing
well in a sense that network processing typically involves processing independent small unit called packets.
We begin with building a router which is the most fundamental part of the todays Internet. Main challenge
here is to exploit as much parallelism as possible in packet processing to exploit GPU’s full capacity. We build a
prototype with several popular router functionalities. Our evaluation shows that GPU can boost the performance
of IPv6 routing by factor of five, IPsec by factor of 3:5, and OpenFlow switch by factor of ten.
Next, we move onto SSL (Secure Sockets Layer) which is the most popular security protocol in today’s Internet.
Accelerating SSL poses more challenge than packet processing, as it works over TCP (Transmission Control
Protocol) layer. We cannot simply process packets independently, instead, we need to parse flows, and batch
independent tasks at the application level. We designed and implemented SSLShader that batches cryptographic
operation in SSL processing, and offload it to GPU. Our evaluation shows that GPU can boost the SSL processing
performance by factor of six for short transactions, and up to 2:3x...