在高速网卡中实现可编程传输协议.docx
《在高速网卡中实现可编程传输协议.docx》由会员分享,可在线阅读,更多相关《在高速网卡中实现可编程传输协议.docx(21页珍藏版)》请在第一文库网上搜索。
1、在高速网卡中实现可编程传输协议摘要:数据中心网络协议栈正在转向硬件,以在低延迟和低侬利用率的情况下实现IOOGbPS甚至更高的数据速率。但是,N叫中网络协议栈的硬连线方式扼杀了传输协议的创新。本文通过设计ToniC(一种用于传输逻辑的灵活硬件架构)来实现高速网卡中的可编程传输协议。在IOOGbPS的速率下,传输协议必须每隔几纳秒在NIC上仅使用每个流状态的几千比特生成一个数据段。通过识别跨不同传输协议的传输逻辑的通用模式,我们为传输逻辑设计了一个高效的硬件“模板”,该模板在使用简单的AE1编程的同时可以满足这些约束。基于FPGA的原型系统实验表明,ToniC能够支持多种协议的传输逻辑,并能满足
2、IOOGbPS背靠背128字节数据包的时序要求。也就是说,每隔10ns,我们的原型就会为下游皿流水线的一千多个活动流中的一个生成一个数据段的地址,以便获取和传输数据包。1. 介绍传输协议以及网络协议栈的其余部分传统上都在软件中运行。尽管软件网络协议栈一直在努力提高其性能和效率,但为了跟上当今数据中心的应用程序,软件网络协议栈往往会消耗30-40%的CPU周期。随着数据中心转移到100GbDS以太网上,软件网络协议栈的CPU利用率变得越来越高。因此,多个供应商开发了完全在网卡(NIC)上运行的硬件网络协议栈。但是,在这些NIC上仅实现了两种主要的传输协议,它们都是硬连线方式并且只能由供应商修改。
3、RoCE.R。CE用于远程直接内存访问(RDMA),使用KQCN43进行拥塞控制,并使用简单的go-back-N策略进行可靠数据传输。TCP.一些供应商将他们选择的TCP变体卸载到NIa以便直接通过套接字API(TCP卸载引擎)使用或启用RDNIA(iWARP)。然而,在过去几十年中提出的用于可靠传输和拥塞控制的无数可能篁法中,这些协议仅使用了一小部分。例如,最近的研究表明,低延迟数据中心网络可以显著受益于接收端驱动的传输协议,这并不是当今硬件堆栈的选择。在微软数据中心部署RoCE网卡的尝试中,运营商需要修改数据传输算法以避免网络中出现活锁,但必须依赖N1C供应商进行更改。己经提出了其他算法来
4、改进RoCE的简单可靠传输算法。多年来,TCP在各种网络中的优化列表证明了传输协议对可编程性的需求。在本文中,我们研究如何实现硬件传输协议可编程化。即使N1C供应商开放了硬件编程接口,在高速硬件中实现传输协议也需要大量的专业知识、时间和精力。为了跟上IOOGbPS的速度,传输协议应该每隔几纳秒生成并传输一个数据包。它需要能够处理超过Iooo个活动流,这在今天的数据中心服务器中是很普遍的。然而,NIC在其片上内存和计算资源的数量方面受到极大的限制。我们认为,高速网卡上的传输协议可以通过编程实现,而不需要让用户接触高速硬件编程的全部复杂性。我们的论点主要基于两个因素:首先,可编程传输逻辑是实现灵活
5、硬件传输协议的关键。传输协议的实现完成了多种功能,例如连接管理、数据缓冲区管理和数据传输。然而,它的核心任务是决定传输哪些数据段(数据传输)和何时传输(拥塞控制),统称为传输逻辑,这也是大多数创新的地方。因此,在高速NIC上实现可编程传输协议的关键是使用户能够修改传输逻辑。其次,可以利用传输逻辑中的通用模式来创建可重用的高速硬件模块。尽管它们在应用级API(例如,TCP的套接字和字节流抽象与RDNIA的基于消息的谓词API)以及连接和数据缓冲区管理方面存在差异,但传输协议有几种共同的模式。例如,不同的传输协议使用不同的算法来检测丢失的数据包。但是,一旦数据包被宣布丢失,可靠传输协议就会将其重传
6、而优先于发送一个新的数据段。另一个例子,在拥塞控制中,给定由控制环路确定的参数(例如,拥塞窗口和速率),只有几种常见的方法来计算流在任何时候可以传输多少字节。这使我们能够为硬件中的传输逻辑设计一个高效的“模板”,可以使用简单的AP1对其编程。基于这些观点,我们设计并开发了Tor1ie,这是一种可编程的硬件架构,可以使用简单的API来实现各种传输协议的传输逻辑,同时支持IOOGbps的数据速率。每个时钟周期,TOniC都会生成下一个数据段的地址进行传输。数据段由下游DMA流水线从内存中提取,并由硬件网络协议栈的其余部分转换为一个完整的数据包(图DoFigure1:Tonicprovidingpr
7、ogrammab1etransport1ogicinahanwarenetworkstackontheNIC(sender-side).我们认为Tonic将驻留在NIC上,取代传输协议硬件实现中的硬编码传输逻辑(例如,未来的RDMANIC和TCP卸载引擎)。TOniC为传输逻辑提供了一个统一的可编程架构,与不同传输协议的具体实现如何执行连接和数据缓冲区管理以及它们的应用层AP1无关。然而,我们将以SoCketAP1为例,描述ToniC如何与传输层的其余部分交互(2),以及如何将其集成到1irWX内核中以与应用程序进行交互(5)。我们在约8000行的VeriIOg代码中实现了Tonic原型,并在
8、不到200行代码中实现各种传输协议的传输逻辑,从而证明了ToniC的可编程性。我们还使用FPGA展示了Tonic满足100Mpps的时序,即支持IOOGbps的背靠背128B数据包。也就是说,每隔10ns,ToniC可以生成下游DMA流水线获取和发送一个数据包所需的传输元数据。从生成到传输,单个段地址通过TOniC的延迟约为0.1s,ToniC最多可支持2048个并发流。2. OniC作为传输逻辑本节概述了TOniC如何适应传输层(2.1),以及如何克服在高速N1C上实现传输逻辑的挑战(2.2)。2.1Tonic如何适应传输层位于应用程序和堆栈其余部分之间的传输层协议执行两个主要功能:连接管理
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高速 网卡 实现 可编程 传输 协议