可编程网卡芯片在滴滴云网络的应用实践

可编程网卡芯片在滴滴云网络的应用实践

可编程网卡芯片在滴滴云网络的应用实践

​桔妹导读:随着云规模不断扩大以及业务层面对延迟、带宽的要求越来越高,采用DPDK 加速网络报文处理的方式在横向纵向扩展都出现了局限性。可编程芯片成为业界热点。本文主要讲述了可编程网卡芯片在滴滴云网络中的应用实践,遇到的问题、带来的收益以及开源社区贡献。

1. 数据中心面临的问题

随着滴滴云规模的不断扩大,业务层面对延迟以及带宽的要求越来越高。2018年滴滴云网络团队上线了基于开源社区的OVS-DPDK方案。DPDK是X86平台报文快速处理的库和驱动的集合, 其主要优势为通过Bypass Linux内核,Hugepage内存以及PMD(Poll Mode Driver)模型驱动的方式实现加速。我们为OVS-DPDK提供了在线热升级功能,该功能保证了在升级过程中虚拟机业务无感知,并且网络Downtime时间为毫秒级别。同时我们优化了OVS-DPDK数据转发平面。实现了不同物理主机上的虚拟机网络延迟<150us,单核性能约~400w pps(双向)。

滴滴内部上云、高性能计算HPC,以及机器学习,对网络提出了更高的要求。通过CPU DPDK处理报文的方式,虽然在性能以及延迟方面远优于基于Linux 内核的转发实现。但CPU DPDK已经不能满足数据中心流量激增带来的需求。

2. 技术方案选择

云网络环境中,在计算节点DPDK不会占用过多的CPU,否则会影响CPU售卖,一般会使用1-2 CPU用于数据报文处理。同时DPDK 处理数据报文的性能强依赖CPU算力。因此在计算节点网络的横向扩展以及纵向扩展都具有局限性。

在边际网关节点,我们可以通过扩展服务器的方式,提高网络处理容量进而满足业务需求。但是大规模的扩展服务器,需要承担更多的机器、功耗以及运维成本。

软件定义网络(Software Defined Network,SDN)是一种新型网络创新架构,是网络虚拟化的一种实现方式。其核心思想是将网络设备的控制面与数据面分离开来。控制层面可以通过集中控制的方式实现不同的业务逻辑:拓扑发现,路由管理,安全策略,网络虚拟化等。数据平面更专注在数据报文转发。2018年AWS re:Invent,AWS 介绍了Nitro System。该系统通过硬件芯片加速虚拟机IO处理(网络、存储、安全等)。

可编程网卡芯片在滴滴云网络的应用实践

目前工业界,加速网络处理的焦点聚集到了硬件层面:AISC,FPGA,P4,可编程网卡,以及智能网卡等。

3. 基于可编程芯片的解决方案 3.1 硬件芯片选择

传统AISC卡
该卡比较成熟,但业务逻辑固定,很难适应云上复杂的业务场景。

可编程门队列FPGA
FPGA 实现网络加速需要专业FPGA技术人员,以及专业网络RD。同时在成本,和研发周期都需要具有一定的局限性。

可编程网卡芯片在滴滴云网络的应用实践

P4
P4 具有灵活的可编程性,较为合适做为网关节点数据处理。并不适合在计算节点使用。同时价格也是需要考虑的因素。

可编程网卡芯片在滴滴云网络的应用实践

可编程网卡芯片
通过调研发现,可编程网卡除了具有通用网卡的功能外,还可以通过下发流表规则的方式,实现报文匹配并对报文执行特定的action如:修改,封装,以及转发、上送报文至CPU等。这种具有灵活性、可编程性的‍‍硬件芯片,能够满足快速迭代的需求。

可编程网卡芯片在滴滴云网络的应用实践

3.2 转发模型

为了满足网元业务灵活性、多样性的需求,我们将网元业务和底层平台功能分离,舍去了传统的数据面Pipeline转发模型,采用了类似Open Flow的macth+action的方式。这样不同的match规则和不同action 匹配能够实现不同的业务逻辑。这种弱依赖的关系能够剥离了业务和底层细节,方便业务功能迭代、快速上线,同时底层可编程芯片的更新不会对业务逻辑产生影响。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwpgsz.html