云服务之智能网卡的兴起回顾

近年来公有云中网络虚拟化的发展以及hostbased SDN技术的兴起,对端系统协议栈提出了更高的要求,而传统的高性能网卡已难以满足这些要求。

当前的云服务提供商除了出售虚拟机服务外,还提供“基础设施即服务(Infrastructure-as-a-Service,IaaS)”这种服务模式。IaaS需要支持各式各样的网络功能,例如可让用户任意配置IP的虚拟私有网络、可扩展的4层负载均衡器、安全策略和访问控制列表、带宽计量以及服务质量控制等。这些网络功能目前普遍采用软件定义网络(Software Defined Network,SDN)的方式在端系统的协议栈内实现,端系统需在TCP/IP协议栈之外对数据包实现进一步的封装/解封装、计数、丢弃等操作。因为用户对于新网络功能的需求层出不穷,SDN协议栈支持的网络功能往往以月为单位频繁更新迭代。ASIC芯片的生产从确定需求到最后流片量产往往需要数年的时间,网卡厂商几乎不可能预测到未来几年内所有可能出现的网络功能,因此难以将这些处理逻辑实现到网卡的ASIC芯片上。

在此背景下,智能网卡这项新兴技术开始走进人们的视野。智能网卡是一种可编程的高性能网卡。智能网卡上具备可编程硬件,可对网卡的处理逻辑进行动态的编程重写。不同于普通网卡中通过ASIC实现固定的网络处理逻辑,智能网卡兼具高速的处理能力及灵活的可编程能力。

现在典型的智能网卡有两种实现方式,最典型的一种是采用现场可编程门阵列(Field-Programma-ble Gate Array,FPGA)实现。微软公司是这方面的代表,已在其Azure云内面向用户提供服务,腾讯公司也在积极研制自己的基于FGA的智能网卡。另一种智能网卡的实现方式是采用专用的多核网络处理器(Network Processor,NP)。华为公司采用的正是这类智能网卡。

这两种智能网卡的实现方式在可编程性以及处理性能上各有优劣。在性能方面,通过直接烧写硬件逻辑,基于FPGA的智能网卡性能与ASIC芯片非常接近;NP则采用多核的方式来提高整个网卡的处理能力,但其每个核的处理能力与通用CPU性能相比并无特别优势,因此对于单一网络流的处理性能较低。在可编程性方面,基于FPGA的智能网卡可编程性相对较低。一方面因为Verilog/VHDL语言编程难度大,并且开发FPGA的整套工具链的易用性也有待提高;另一方面因为FPGA受限于芯片面积,往往无法实现较复杂的处理逻辑。而NP则具备较高的可编程性。首先,其编程多采用通用的C/C++语言,相对简单;其次,NP具备几乎和通用CPU相当的表达能力,可实现灵活的处理逻辑。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190826A05V6I00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券