PacketShader-GPU加速的软件路由器(2011)

2020-05-02 17:56:50

最新消息:I/O引擎现已推出!我们已经部分发布了这项工作中使用的源代码。您可以在此处找到英特尔82598/82599网卡的用户级数据包I/O引擎。到目前为止,我们还没有一个明确的发布计划来发布PacketShader代码的其他部分,这些代码还没有在网络上提供。

PacketShader是一款基于PC的高性能软件路由器平台,可通过图形处理单元(GPU)加速核心数据包处理。基于CPU是高速软件路由器中典型的性能瓶颈的观察,我们使用大规模并行GPU以经济高效的方式扩展计算能力。PacketShader将计算和内存密集型路由器应用程序卸载到GPU,同时优化Linux上的数据包接收和传输路径。..。

众所周知,GPU是显卡的中央芯片。GPU通过支持数万个硬件线程和充足的内存带宽,实现了高水平的处理并行性。除了快速的图形渲染,最新的GPU被广泛用于高性能并行应用程序,这些应用程序的工作负载需要巨大的计算周期和/或内存带宽。GPU的数据并行执行模型很好地符合大多数路由器应用程序固有的并行性。

我们为用户级应用实现了高性能的包I/O引擎。该项目正在单独维护,源代码现已公开。当前可用的Linux网络堆栈没有针对高性能IP数据包处理进行优化,例如,对于多10G网络。为了实现高速软件路由器和更好地利用GPU,我们通过以下方法优化了Linux中的数据包I/O路径。

巨大的数据包缓冲区:PacketShader没有为每个数据包接收分配元数据(SK_BUFF或SKB)和数据包数据,而是预先分配了两个循环缓冲区,可以容纳大量的元数据和数据包数据。这大大降低了高速分组接收的存储器分配/释放开销。

批处理:PacketShader在硬件、设备驱动程序甚至应用层一次批处理一组数据包。这会摊销每个数据包的处理开销。

支持NUMA的数据放置:PacketShader在非一致内存访问(NUMA)系统中最大限度地减少了本地和远程内存之间的数据包移动。NIC接收的数据包由其本地CPU和内存处理。

多核CPU可伸缩性:PacketShader利用接收端伸缩(RSS)来消除访问NIC队列时的锁定争用。它还通过将RX队列的起始地址与缓存行边界对齐来消除与CPU缓存的虚假共享问题。最后,它去掉了全局的.。

通过我们的数据包I/O优化,我们能够在用户级别运行数据包处理,即使是在多个10G路由器工作负载的情况下也是如此。

图1显示了我们优化的数据包I/O引擎的性能。RX+TX条形图表示无操作转发的情况,即在不进行进一步处理的情况下将数据包从一个端口传输到另一个端口。

我们基于数据包I/O引擎实现了四个路由器应用程序:IPv4转发、IPv6转发、OpenFlow交换机和IPsec隧道。以下四个图表比较了纯CPU实施和GPU加速实施的吞吐量。表演结果清楚地表明..。

对于IP转发,我们将最长前缀匹配卸载到GPU。转发表查找占用大量内存,GPU可以同时提高延迟隐藏能力和带宽。

在我们的工作中,OpenFlow和IPsec代表了软件路由器的计算密集型工作负载。我们已经确认计算密集型应用程序可以从GPU和内存密集型应用程序中获益。

我们的原型实施使用两个四核Intel Nehalem CPU(2.66 GHz)、四个双端口10GbE Intel网卡和两个NVIDIA GTX 480卡。因为我们使用很多PCI-e设备,所以我们的机器采用两个IOH(以前称为Northbridge)。有趣的是,我们的系统性能受到双IOH…。

PacketShader:GPU加速的软件路由器(幻灯片)韩相进、张启恩、朴永洙和苏文。2010年ACM SIGCOMM会议论文集,印度德里。2010年9月。

建设单盒100Gbps软件路由器韩相进、张基恩、朴英秀和苏文。第17届IEEE局域网和城域网研讨会(LANMAN)邀请论文,2010年5月,新泽西州Long Branch。

PacketShader:使用GPU进行大规模并行数据包处理,以加速软件路由器Sangjin han、Keon Jang、Kyoung gSoo Park和Sue Moon。Usenix NSDI海报,加利福尼亚州圣何塞。2010年4月。

学生:韩相进和张基恩学院:朴金秀和苏文我们是通过我们的邮寄名单集体联系到的:tengig at an.kaist.ac.kr