网络接口加速器可能是助力也可能是阻力
扫描二维码
随时随地手机看文章
从校验和验证(checksum validation)到TCP及更高层协议的卸载,网络接口架构包含的加速功能日益增多。这些加速功能有部分可以利用软件来有效执行。在某些环境中,复杂加速功能的使用实际上可能降低性能,损害系统完整性和安全性。 正如过去30年中以太网标准取得了众多进步一样,这种主网络接口架构也不断有重大创新,其中许多旨在使操作系统和应用软件能够以更高的链路速度更有效地处理数据。在网络链路速度提高给服务器I/O性能带来挑战的同时,新的加速功能出现,这并非巧合。某些加速功能经受住了时间的考验,另一些因CPU和内核芯片组性能增益的稳定进步而渐被淘汰。研究如何在一个系统环境中运用某一特定加速功能,将有利于我们了解该功能的长期效用。 普通的网络接口不执行链路层协议以上的数据包处理。例如,以太网接口可以处理以太网帧校验和(FCS),执行第二层多点传送滤波。一个能够基于包含在单帧的高层协议中的本地状态提供最优化的适配器被定义为无状态卸载适配器。能够基于更高级协议被执行的无状态卸载包括数据包包头分离和TCP/IP校验和计算及验证。 即使检验和这样的简单卸载,也可能在系统中引入运算冲突。例如,未经以太网FCS检测的网络故障根源的研究发现了硬件(如网络接口适配器内部的直接存储器存取(DMA)控制器)中的系统性错误。在硬件中,当在硬件中验证检验和时,应用没有被保护免受这些故障的损害。鉴于这个原因,在引入复杂的硬件或进行故障检修时,应该谨慎地中止加速功能,以避免它们成为故障源头。不过,随着卸载技术和网络适配器日益复杂,这可能不再是一个选择。 例如,远程DMA(RDMA)协议激活网络接口,直接向应用缓冲器传送数据。因此,整个软件堆栈需要作大量改变。在这种模型中,检验和必然在网络适配器中产生并验证。关于为了解决可靠性问题而在整个数据中心禁用(Infiniband)RDMA这样的事件报告就不足为奇了。 关于卸载技术前景需考虑的另一个权衡问题是,加速由硬件还是软件实现最好。TCP段卸载(TSO) 即是一个好例子。TSO是无状态卸载,其中TCP层经堆栈把一个非常大的段(比连接的最大的段尺寸还要大)传送到网络接口,再由网络接口把它分割为大量数据包。 这种方法降低了网络堆栈内每个数据包的软件开销,从而提高了性能。这种分割工作通常由网络适配器执行,并需要复杂的硅技术或嵌入式处理器来为每个数据包产生包头。或者,也可以利用软件在堆栈最低层执行,如同在Linux普通段卸载(GSO)中所做的那样。同期测量结果显示,除了无硅成本之外,其获得的性能与采用硬件实现的几无差别。