编者按:当前智能网卡能够加速数据处理和传输,并能实现网络、存储和安全等功能卸载,在云计算领域得到广泛的应用。今天,浪潮数据云计算网络架构师王培辉带大家了解智能网卡加速原理和以及在浪潮分布式 SDN 网络加速的应用,深入理解智能网卡加速虚拟化网络的基本原理。本文整理自龙蜥大讲堂第 79 期,以下为本次分享内容:
SDN 技术从提出到发展至今将近 20 年的时间,目前 SDN 相关解决方案和产品已经大规模落地和应用,虽然不同厂商在各自的 SDN 解决方案实现上有一定差异,但是在业界关于 SDN 相关技术特点或者理念上基本一致的:
-
控制业务逻辑与转发逻辑分离。 -
集中控制。 -
支持 API 的可编程。
-
基础网卡 :网络功能相对简单,支持一些 TSO、LRO、网卡多队列等特性,协助加速报文处理,这类网卡目前在数据中心仍然有比较广泛的采用。 -
第一代智能网卡 :除了基础网卡的功能外,具备了一些硬件卸载的特性,比如 OVS 流表的卸载以及 RDMA 加速的功能,能够基于网卡硬件的特性加速报文和数据处理,卸载数据面的业务,对业务进行加速。 第二代智能网卡:一般是具有 SOC 系统,通用处理器对控制面处理,具备更高的灵活性,数据面可以由其他专用芯片来处理。可以将控制面和数据面全部卸载到智能网卡中,并且具有更多的硬件加速功能,比如加解密、解压缩等。
-
可以将原本由专用硬件设备处理的功能,放在智能网卡上进行处理,达到与硬件设备处理相媲美的性能。 -
可以针对虚拟机、容器的网络 I/O 进行卸载加速,降低 CPU 在系统任务上的消耗。 -
增加云资源的灵活性和弹性,满足业务快速上线的需求。
Offload 规则下发的流程与上节所述类似,卸载规则的下发依赖业务流的首包触发,当首包到达智能网卡硬件时,由于没有转发规则,上送内核 OVS,内核 OVS 依然查不到转发规则,则报文上送 OVS 用户态,ovs-vswitchd 通过查找用户态 OpenFlow 流表,同时 OVS 会判断是否开启了 Hardware Offload 配置选项,如果开启则需要将 OpenFlow 转发规则转换为 TC Flower 规则走 netlink 通道下发到内核模块,内核 TC 模块会通过驱动注册的对应钩子函数将转发规则通过驱动程序下发到底层智能网卡中,后续报文转发则直接在智能网卡硬件匹配转发进行流量转发,这样就完成了 OVS 流表卸载规则的下发。
TC 规则的下发注意事项
TC 规则下发到硬件设备的条件:
卸载硬件是否 enable NETIF_F_HW_TC 标记,可以通过如下命令打开。
# ethtool -K eth0 hw-tc-offload on
# ethtool -K eth0 hw-tc-offload off
-
设备驱动是否注册实现了 ndo_setup_tc 函数。 -
Ovs 是开启了 hw-offload,以及 tc-policy 策略。
ovs-vsctl set Open_vSwitch . other_config:hw-offload=true
tc-policy策略
none: add software rule and offload rule to HW.
skip_sw: offload rule to HW only.
skip_hw: add software rule without offloading rule to HW
在实际使用中,因为 OVS TC 规则控制粒度比较粗,对不支持卸载规则的网卡最好关闭相应的 NETIF_F_HW_TC 特性。
浪潮数据在 2020 年就已经在业内率先发布了基于智能网卡的分布式 SDN 解决方案 SmartFlow,将专用算力的负载,例如将网络、存储等 I/O 密集负载卸载到智能加速卡处理,为虚拟机、容器、裸金属等计算资源加速。通过将分布式 SDN 系统构建在智能加速卡之上,为用户提供灵活可编程、高性能且成本更有优势的网络解决方案。
-
控制平面集群进行业务逻辑的处理以及提供标准 API。 -
vBGP 集群负载 BGP 路由和 OpenFlow 流表的转换。 -
本地控制器负责根据逻辑资源计算 OpenFlow 流表。 -
数据平面 OVS 通过 TC Flower 接口进行硬件卸载规则的下发
性能指标
通过将网络流量从 Open vSwitch 卸载到 SmartFlow 智能网卡,推进对 CPU 算力极大需求的数据包进行封装、解封装、校验、加解密等操作并下沉到智能网卡。通过智能网卡的加速,可以看到 Overlay 性能在 25G 链路上相比软件转发提升了 8 倍左右,报文转发的延时有大幅下降,一般业务报文延时小于 25us,64K 大包转发延时稳定在 60us 以下。
—— 完 ——
加入微信群:添加社区助理-龙蜥社区小龙(微信:openanolis_assis),备注【龙蜥】与你同在;加入钉钉群:扫描下方钉钉群二维码。
关于龙蜥
龙蜥社区是立足云计算打造面向国际的 Linux 服务器操作系统开源根社区及创新平台。龙蜥操作系统(Anolis OS)是龙蜥社区推出的 Linux 发行版,拥有三大核心能力:提效降本、更加稳定、更加安全。
加入我们,一起打造面向云时代的操作系统!
本文分享自微信公众号 - OpenAnolis龙蜥(OpenAnolis)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。