摘要:智能网卡最初是为了应对云和虚拟化技术的发展,出于卸载部分CPU的能力而出现,如今,智能网卡被赋予了越来越多的功能,如网络和存储加速等,还催生出了可编程网卡等新的类型。
智能网卡是针对传统网卡而言的,目前在业界并没有一个明确的定义。我们知道传统网卡主要完成数据链路层和物理层的功能,更高层的协议解析和处理则需要交给CPU来完成。近年来随着公有云中虚拟化技术的发展以及SDN技术的兴起,VXLAN等overlay协议以及OpenFlow、Open vSwitch(OVS)等虚拟交换技术的引入,使得基于服务器的网络数据平面的复杂性急剧增加,而执行这些功能会给CPU资源造成难以承受的压力。
为了解决这个问题,业界先后出现了DPDK和SR-IOV等技术来提升数据处理性能和吞吐率。DPDK(Intel Data Plane Development Kit)是英特尔提供的数据平面开发工具集,专注于网络应用中数据包的高性能处理,通过绕过Linux内核协议栈对数据包处理过程来提升数据处理性能,但它仍然需要大量的CPU内核资源。SR-IOV(Single Root I/O Virtualization)允许网卡将物理端口映射为多个虚拟端口或虚拟功能(VF),使得每个虚拟端口都可以绑定到VM,这样吞吐量性能和CPU使用效率得以改善,但灵活性却降低了,复杂性也增加了,而且仍然需要一定的CPU资源,需要专用的SR-IOV网卡支持。因此,最理想的方案是将虚拟交换机功能完全从服务器CPU转移到网卡,以释放昂贵的服务器计算资源,因此智能网卡应运而生。
智能网卡从功能上来说,早期主要是为了完成业务卸载,解放CPU资源。随着云和虚拟化技术的发展,智能网卡被赋予越来越多的功能,如网络和存储加速等。同时,为了满足各种灵活的业务应用和部署,单纯卸载型网卡已不能胜任,由此催生了可编程网卡。所以目前所谓的智能网卡,其“智能”的含义,更多是指其可编程特性。但是这种可编程特性一旦成熟马上会变成卸载型特性卡,所以卸载型网卡和可编程网卡都可以归入到智能网卡的范畴。
智能网卡的用途
智能网卡有不同的分类方法,从架构上来说,可分为以下几种:基于ASIC、 基于FPGA、基于SOC。不同架构实现在成本、可编程性和灵活性方面各有优劣:基于ASCI的智能网卡具有价格优势,但灵活性有局限,网卡功能受限于ASIC中定义的功能,无法满足客户特定的业务需求和场景。基于FPGA架构的智能网卡具有高度可编程性,能灵活满足客户的定制化需求,但FPGA最大的问题是编程难度大且价格昂贵。而针对更复杂的用例,SOC是较佳的选择,内置的CPU完成协议层面的处理,而FPGA或者ASIC则完成数据层面的卸载,两者配合完成更复杂的应用,兼具灵活性和高性能,但成本也是较高的。
智能网卡应用非常广泛,从功能上来说,主要是实现网络加速、存储加速和安全加速。网络加速包括OVS加速、TCP卸载、Vxlan/GRE隧道报文卸载、可靠UDP、NAT/PAT、RDMA等,存储加速包括NVMe-OF、支持本地PCIE SSD盘、支持远端NVMe阵列等,安全加速包括:IPSec加解密的卸载、报过滤、防火墙、DPI、DDoS等。
图1 传统网卡与智能网卡的功能区别
智能网卡应用于云服务/数据中心
云服务(数据中心)是目前智能网卡应用最广泛的场景,其主要功能是实现网络加速和存储加速,包括VXLAN/GRE报文解封装、OVS加速、RDMA等。
1. VXLAN/GRE报文解封装
由于主机Overlay方案的兴起,需要支持对VXLAN报文进行卸载。网络Overlay由网络设备(图中是leaf节点)完成IP报文到VXLAN的封装和解封装,切换到主机Overlay后,VXLAN报文的封装和解封装由虚机完成,这样给虚机带来沉重的负担,占用了大量宝贵的CPU计算资源,而利用智能网卡完成VXLAN报文的卸载就成了自然的选择,GRE也是类似的。
图2 网络Overlay和主机Overlay的架构区别
2.OVS加速
OpenVSwitch硬件卸载是近几年才提出的方案,到目前为止并不完全成熟。OpenVSwitch在2018年增加了对TC(Traffic Control ) Flower的支持,从而使OVS的Data path有卸载到网卡的可能,相应的网卡上也会有一个“虚机交换机”。OVS初始化的时候,会向这个“虚机交换机”下发一条默认的规则,如果网络包匹配不了任何其他规则,则会被这条默认规则匹配。这条规则的Action就是将网络数据包送到“虚机交换机”的管理主机,也就是说送到了位于Linux kernel的Datapath上。如果这个网络数据包是首包的话在Kernel的OVS Datapath会继续上送到位于用户空间的OVS-vswitchd。因为OVS-vswitchd中有OpenFlow规则,OVS-vswitchd完成转发,同时OVS-vswitchd会判断当前数据流对应的规则能否Offload(卸载)到网卡。如果可以的话,OVS-vswitchd会调用通过TC接口将flow规则下发至硬件。这样,同一个数据流的后继报文,可以直接在网卡的“虚机交换机”中完成转发。
图3 OVS硬件加速业务流程
3.RDMA
为了支持数据的快速传输和存储,需要支持RDMA(Remote Direct Memory Access)协议,特别是RoCEv2,具有重要的应用。传统的TCP/IP技术在数据包处理过程中,要经过操作系统及其他软件层,需要占用大量的服务器资源和内存总线带宽,数据在系统内存、处理器缓存和网络控制器缓存之间来回进行复制移动,给服务器的CPU和内存造成了沉重负担。尤其是网络带宽、处理器速度与内存带宽三者的严重"不匹配性",更加剧了网络延迟效应。而RDMA是一种新的直接内存访问技术,RDMA让计算机可以直接存取其他计算机的内存,而不需要经过处理器的处理。RDMA将数据从一个系统快速移动到远程系统的内存中,而不对操作系统造成任何影响。而为了实现RDMA,需要网卡实现相关的协议栈。
图4 传统TCP传输和RDMA传输的对比
4. 卸载NVMe/NVMe-OF等协议栈,实现存储加速。
随着高性能计算和数据中心应用对高性能存储需求的持续增长,NVMe-SSD被广泛应用于高性能存储领域,以满足应用程序对于高带宽和低延迟的I/O需求。基于NVMe扩展的NVMeoF(NVMe over Fabric)网络存储协议可以基于多种RDMA网络承载,用于主机和存储节点或设备之间进行互连通信,更适用于新时代的高性能数据中心。针对软件实现NVMeoF协议带来的CPU和内存瓶颈问题,基于硬件的NVMeoF协议卸载技术具有重要的研究意义。以下是基于FPGA的NVMeoF硬件卸载结构,通过硬件卸载,可达到以下效果:
更高的IO吞吐
更低的访问延迟
更低的成本和功耗
图5 NVMe硬件加速架构
其他应用场景
除了在数据中心得到应用之外,智能网卡的典型应用场景海包括极速交易和可靠UDP卸载场景、5G UPF核心网解耦场景、以及安全应用场景。
1. 证券业极速交易和可靠UDP卸载场景
在证券业,普通散户只需满足一般需求,但专业投资者对速度与服务有更高的要求,如股指套利需求、策略化需求、对资讯行情送达的需求等。为提高专业投资者抢单的成功几率,报盘速度的快慢已成为期货公司、券商的核心竞争力,而传统的IT系统已无法满足极速服务对时延的要求,各大证券行业IT服务商接连推出其为报盘系统优化的软硬件及服务解决方案。图6是一个典型的极速交易系统架构:
图6 极速交易系统架构
从以上架构我们可以看到,整个交易系统包括低延时交换机、高频服务器、快速存储器、极速交易软件等,而低延时网卡是核心,通过集成TOE引擎、RDMA引擎、行情解码引擎等以达到微妙级处理延迟,满足极速交易的要求。
2. 5G UPF核心网解耦场景
以软硬件解耦为主要技术特征的网络功能虚拟化(NFV,Network Function Virtualized)技术作为未来5G网络应用和发展的重要技术之一,越来越多地受到关注。其中,核心变化体现在几个方面,一是CU(Centralized Unit,中央单元)和DU(Distributed Unit,分布式单元)的分离,CU采用通用计算设备;二是5G核心网云化和虚拟化;三是面向垂直行业的UPF下沉和解耦。其中,UPF下沉边缘可以解决两个问题,一是本地业务本地处理,缩短了业务时延,提高了用户体验;二是节省了宝贵的承载网带宽。今年1月份,中国移动正式启动OpenUPF——面向行业的5G UPF及N4接口开放合作伙伴计划,目的就是解决N4接口的规范和标准问题。
图7 5G核心网网元架构及接口示意图
智能网卡在解耦场景上主要是为了实现N4接口管理和业务数据处理的硬件加速,包括:N4接口的节点管理、路由与转发功能、流规则和Qos、业务分流和DNS卸载、GTP报文卸载等等。
3. 安全应用场景
智能网卡应用在安全场景,主要是完成IPSec的加解密卸载、防火墙功能和DDOS防攻击等,也可以集成一些专用的加解密算法,如国密算法等。这些功能实际上可以应用在前面的各个场景上,所以安全应用场景并不算一个单独的应用场景,跟其他场景是融合的。
结束语
从以上各种应用场景我们可以看到,不同的场景,智能网卡所需要具备的核心功能要求也是不一样的,基础功能+专用场景功能是智能网卡的发展方向,而通用型网卡的地位会逐渐下降。另外,从市场侧看,受益于数据中心/云端和边缘计算市场快速发展,智能网卡市场规模将会快速增长,基于FPGA的方案由于其可编程特性良好受益会更大;从技术架构来看,兼顾性能和灵活性的SOC方案会成为主流的解决方案,虽然成本上存在一些压力。最终,网卡的功能会越来越丰富,基于FPGA的方案会集成AI推理功能,以实现对流量的智能管理和监控,同时在智能运维上发挥重要作用,以满足网络可视化、智能化的需求,今后围绕智能网卡的业务创新会层出不穷。