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 for bulk transfer.
Based on the experience of offloading various network applications to GPU, we design and implement a general
framework to ease the building high-performance network platform. We adopt feedback controlled scheduling
to well balance loads between CPU and GPU. The framework provides an easy way to batch independent tasks
and harness the computing capacity of both GPU and CPU.
네트워킹이 오늘날 대부분의 컴퓨터 시스템에서 필수적인 요소이며, 점점더 유연하고 고성능을 필요로하는 네트워크 처리를 필요로 하게 되고 있다.
네트워크의 속도는 지난 두 세기동안 급속도로 성장하였으며,
네트워크 장비들도 이제 단순히 패킷을 전단하는 역할을 넘어 침입 탐지, 암호화 등 복잡한 기능을 수행하고 있다.
본 연구에서는 그래픽 처리 장치 (GPU) 를 네트워크 프로세셍이 사용하여
보다 저렴하고 성능이 높은 범용시스템에 기반한 네트워크 장비를 만들 수 있는 가능성에 대해 연구한다.
GPU는 최근 대규모 공학 계산 등 많은 연산을 필요로 하는 분야에서 주목받기 시작했다.
GPU는 기본적으로 대규모 병렬 처리에 의존한다는 점에 있어 CPU와 큰 차이를 가진다.
네트워크 프로세싱은 대부분 패킷 아라는 단위를 독립적으로 처리할 수 있다는 점에서,
GPU의 대규모 병렬처리 방식과 조화를 이룬다.
본 연구에 서는 제일 먼저 인터넷에서 가장 핵심적인 장비이 라우터를 만드는것으로 시작한다.
GPU의 가용한 성능을 최대한 활용하기 위해서 가장 핵심은 패킷을 처리하는데 있어서 최대한의 병렬성을 활용하는 것이다.
본연구에서는 IPsec, IPv4 라우터, IPv6 라우터 3가지 프로토콜을 GPU에 구현하여,
GPU를 추가함 IPv6 의 경우 최대 5배, IPsec 의 경우 최대 3.5배, OpenFlow의 경우 최대 10배의 성능이 나오는것을 확인하였다.
다음으로 SSL (Secure Sockets Layer)을 GPU를 통해 가속하는 연구를 진행하였다.
SSL은 라우터와는 달리 TCP (Transmission Control Protocol) 상에서 동작하여, 단순히 패킷을 모아서 처리하는 방식으로 병렬성을 활용할 수 없다.
본 연구에서는 SSL상에서 수행되는 각 암호화를 비동기적으로 배치 프로세싱 하는 방식으로 GPU를 활용하였다.
이 방법을 통해 GPU가 CPU단독으로 하는것과 비교하여 SSL성능을 최대 6배까지 높은 성능을 보여주는 것을 확인하였다.
마지막으로 위 두가지 연구를 바탕으로 GPU를 네트워크 처리에 활용하기 위한 프레임 워크 개발하는 연구를 하였다.
이 연구에서 핵심은 모든 네트워크 처리를 GPU로 단순히 보낼경우 최적의 성능을 내지 못하는 경우도 있다는데 착안하여,
피드백 제어방법을 통해 GPU와 GPU사이에 처리하는 일의 양을 잘 분배하고 최적의 성능을 내는데 있다.