智能网卡在分布式 SDN 网络的应用与实践 | 龙蜥技术

简介: 智能网卡加速原理和以及在浪潮分布式 SDN 网络加速的应用。

编者按:当前智能网卡能够加速数据处理和传输,并能实现网络、存储和安全等功能卸载,在云计算领域得到广泛的应用。今天,浪潮数据云计算网络架构师王培辉带大家了解智能网卡加速原理和以及在浪潮分布式 SDN 网络加速的应用,深入理解智能网卡加速虚拟化网络的基本原理。本文整理自龙蜥大讲堂第 79 期,以下为本次分享内容:

01 SDN 技术回顾

SDN 技术从提出到发展至今将近 20 年的时间,目前 SDN 相关解决方案和产品已经大规模落地和应用,虽然不同厂商在各自的 SDN 解决方案实现上有一定差异,但是在业界关于 SDN 相关技术特点或者理念上基本一致的:

  • 控制业务逻辑与转发逻辑分离。
  • 集中控制。
  • 支持 API 的可编程。

当前主要的 SDN 网络方案

网络 Overlay:网络 Overlay 一般是硬件解决方案,是指 Overlay 隧道封装在物理交换机上完成,通过控制边缘设备交换机完成网络的构建与扩展。这种方案一般性能和可靠性较高,但是因为需要采用 SDN 专用设备,成本上一般相对较高;再一个是因为网络 Overlay 的方案不够贴近云端,也即虚拟机、容器等云资源产生的网络 I/O,外部物理交换机是看不到的,所以容易产生发卡流量,也没有办法直接卸载网络 I/O 进行加速。

主机 Overlay:主机 Overlay 一般是软件解决方案,是指 Overlay 隧道封装的处理在主机内部的 vSwitch 完成,通过 vSwitch 完成 Overlay 网络的构建。这种方案一般灵活性比较高并且 vSwith 贴近云资源,能够比较容易做一些针对性的优化和卸载工作,但是因为流量转发是依靠软件处理,所以性能相对会比较差一些。

02 智能网卡发展概述

随着云计算和数据中心的不断发展,智能网卡的发展基本可以分为三个阶段:

  • 基础网卡:网络功能相对简单,支持一些 TSO、LRO、网卡多队列等特性,协助加速报文处理,这类网卡目前在数据中心仍然有比较广泛的采用。
  • 第一代智能网卡:除了基础网卡的功能外,具备了一些硬件卸载的特性,比如 OVS 流表的卸载以及 RDMA 加速的功能,能够基于网卡硬件的特性加速报文和数据处理,卸载数据面的业务,对业务进行加速。
  • 第二代智能网卡:一般是具有 SOC 系统,通用处理器对控制面处理,具备更高的灵活性,数据面可以由其他专用芯片来处理。可以将控制面和数据面全部卸载到智能网卡中,并且具有更多的硬件加速功能,比如加解密、解压缩等。

智能网卡的发展为云计算网络来的变革:

  • 可以将原本由专用硬件设备处理的功能,放在智能网卡上进行处理,达到与硬件设备处理相媲美的性能。
  • 可以针对虚拟机、容器的网络 I/O 进行卸载加速,降低 CPU 在系统任务上的消耗。
  • 增加云资源的灵活性和弹性,满足业务快速上线的需求。

03 智能加速原理

当前智能网卡卸载网络的主要方式通过卸载 OVS 流表,目前卸载 OVS 流表有两种接口方式:

1. 基于 TC Flower 接口的方式,ovs-vswitchd 通过将 openflow 转换为 TC flower,网卡驱动程序将 tc flower 规则转换为对应硬件转发表项,涉及内核模块和驱动开发,upstream 更新较慢。不过,目前内核对这一块支持已经比较完善。

2. 基于 Rte-Flow 接口的方式,ovs-vswitchd 通过将 openflow 转换为 rte flow,网卡 PMD 驱动程序将 rte flow 规则转换为对应硬件转发表项,用户态开发,upstream 更新较快。但这种方式需要开启大页、CPU 绑定等,有一定使用成本。

Datapath 转发原理

相对于普通 OVS 内核转发模式,基于 TC Flower 接口卸载的方式相当于增加了一层硬件数据转发面。原理如下图所示,当收到一条流的首包时,由于智能网卡硬件没有对应的转发表,会上送给内核 ovs datapath 模块查找转发表,对于首包 ovs datapath 也没有对应的转发表, OVS 内核会执行 upcall 将报文上送到用户态去查找流表,ovs-vswitchd 根据上送的报文查找对应的流表,生成相应的转发表项,下发给硬件 OVS,后续的报文转发就直接在硬件 OVS 转发完成处理。

Offload 规则下发流程

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 规则,支持 OVS 卸载主要看是否支持 Tunnel 加解封装和报文在硬件查表转发。

在实际使用中,因为 OVS TC 规则控制粒度比较粗,对不支持卸载规则的网卡最好关闭相应的 NETIF_F_HW_TC 特性。

04 浪潮数据在智能网卡应用与实践

浪潮数据在 2020 年就已经在业内率先发布了基于智能网卡的分布式 SDN 解决方案 SmartFlow,将专用算力的负载,例如将网络、存储等 I/O 密集负载卸载到智能加速卡处理,为虚拟机、容器、裸金属等计算资源加速。通过将分布式 SDN 系统构建在智能加速卡之上,为用户提供灵活可编程、高性能且成本更有优势的网络解决方案

SmartFlow 软件架构

  • 控制平面集群进行业务逻辑的处理以及提供标准 API。
  • vBGP 集群负载 BGP 路由和 OpenFlow 流表的转换。
  • 本地控制器负责根据逻辑资源计算 OpenFlow 流表。
  • 数据平面 OVS 通过 TC Flower 接口进行硬件卸载规则的下发

SmartFlow 异构多云大二层解决方案

SmartFlow 通过融合标准 MP-BGP 协议,提供独具特色的标准可扩展的异构多云网络互连互通的解决方案。

1、抽象设计转发模型,融合 EVPN 与 OpenFlow 协议,支持 EVPN 路由与 OpenFlow 流表的互相转换。

2、支持标准的对称转发模式,能够兼容业内 IRB 流量转发模型,兼容第三方硬件或软件交换机对接。

3、通过 EVPN 同步转发表项,使 SmartFlow 在多站点网络互连互通解决方案中拥有良好的扩展性。

性能指标

通过将网络流量从 Open vSwitch 卸载到 SmartFlow 智能网卡,推进对 CPU 算力极大需求的数据包进行封装、解封装、校验、加解密等操作并下沉到智能网卡。通过智能网卡的加速,可以看到 Overlay 性能在 25G 链路上相比软件转发提升了 8 倍左右,报文转发的延时有大幅下降,一般业务报文延时小于 25us,64K 大包转发延时稳定在 60us 以下。

关于直播课件及视频回放获取方式:

【PPT 课件获取】:关注微信公众号(OpenAnolis),回复“龙蜥课件” 即可获取。有任何疑问请随时咨询龙蜥助手—小龙(微信:openanolis_assis)。

【视频回放】:视频回放可在龙蜥视频号(账号:龙蜥社区_小龙)或龙蜥官网 https://openanolis.cn/video 查看。

—— 完 ——

加入龙蜥社群

加入微信群:添加社区助理-龙蜥社区小龙(微信:openanolis_assis),备注【龙蜥】与你同在;加入钉钉群:扫描下方钉钉群二维码。

相关实践学习
CentOS 7迁移Anolis OS 7
龙蜥操作系统Anolis OS的体验。Anolis OS 7生态上和依赖管理上保持跟CentOS 7.x兼容,一键式迁移脚本centos2anolis.py。本文为您介绍如何通过AOMS迁移工具实现CentOS 7.x到Anolis OS 7的迁移。
相关文章
|
12天前
|
Kubernetes 安全 Devops
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
37 10
有效抵御网络应用及API威胁,聊聊F5 BIG-IP Next Web应用防火墙
|
17天前
|
机器学习/深度学习 人工智能 算法
深入解析图神经网络:Graph Transformer的算法基础与工程实践
Graph Transformer是一种结合了Transformer自注意力机制与图神经网络(GNNs)特点的神经网络模型,专为处理图结构数据而设计。它通过改进的数据表示方法、自注意力机制、拉普拉斯位置编码、消息传递与聚合机制等核心技术,实现了对图中节点间关系信息的高效处理及长程依赖关系的捕捉,显著提升了图相关任务的性能。本文详细解析了Graph Transformer的技术原理、实现细节及应用场景,并通过图书推荐系统的实例,展示了其在实际问题解决中的强大能力。
108 30
|
27天前
|
存储 监控 物联网
计算机网络的应用
计算机网络已深入现代生活的多个方面,包括通信与交流(电子邮件、即时通讯、社交媒体)、媒体与娱乐(在线媒体、在线游戏)、商务与经济(电子商务、远程办公)、教育与学习(在线教育平台)、物联网与智能家居、远程服务(远程医疗、智能交通系统)及数据存储与处理(云计算、数据共享与分析)。这些应用极大地方便了人们的生活,促进了社会的发展。
49 2
计算机网络的应用
|
12天前
|
运维 Kubernetes 调度
阿里云容器服务 ACK One 分布式云容器企业落地实践
阿里云容器服务ACK提供强大的产品能力,支持弹性、调度、可观测、成本治理和安全合规。针对拥有IDC或三方资源的企业,ACK One分布式云容器平台能够有效解决资源管理、多云多集群管理及边缘计算等挑战,实现云上云下统一管理,提升业务效率与稳定性。
|
19天前
|
机器学习/深度学习 存储 运维
分布式机器学习系统:设计原理、优化策略与实践经验
本文详细探讨了分布式机器学习系统的发展现状与挑战,重点分析了数据并行、模型并行等核心训练范式,以及参数服务器、优化器等关键组件的设计与实现。文章还深入讨论了混合精度训练、梯度累积、ZeRO优化器等高级特性,旨在提供一套全面的技术解决方案,以应对超大规模模型训练中的计算、存储及通信挑战。
50 4
|
19天前
|
存储 安全 网络安全
网络安全的盾与剑:漏洞防御与加密技术的实战应用
在数字化浪潮中,网络安全成为保护信息资产的重中之重。本文将深入探讨网络安全的两个关键领域——安全漏洞的防御策略和加密技术的应用,通过具体案例分析常见的安全威胁,并提供实用的防护措施。同时,我们将展示如何利用Python编程语言实现简单的加密算法,增强读者的安全意识和技术能力。文章旨在为非专业读者提供一扇了解网络安全复杂世界的窗口,以及为专业人士提供可立即投入使用的技术参考。
|
23天前
|
NoSQL Java 数据处理
基于Redis海量数据场景分布式ID架构实践
【11月更文挑战第30天】在现代分布式系统中,生成全局唯一的ID是一个常见且重要的需求。在微服务架构中,各个服务可能需要生成唯一标识符,如用户ID、订单ID等。传统的自增ID已经无法满足在集群环境下保持唯一性的要求,而分布式ID解决方案能够确保即使在多个实例间也能生成全局唯一的标识符。本文将深入探讨如何利用Redis实现分布式ID生成,并通过Java语言展示多个示例,同时分析每个实践方案的优缺点。
43 8
|
26天前
|
机器学习/深度学习 自然语言处理 语音技术
Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧
本文介绍了Python在深度学习领域的应用,重点讲解了神经网络的基础概念、基本结构、训练过程及优化技巧,并通过TensorFlow和PyTorch等库展示了实现神经网络的具体示例,涵盖图像识别、语音识别等多个应用场景。
51 8
|
24天前
|
网络协议 物联网 数据处理
C语言在网络通信程序实现中的应用,介绍了网络通信的基本概念、C语言的特点及其在网络通信中的优势
本文探讨了C语言在网络通信程序实现中的应用,介绍了网络通信的基本概念、C语言的特点及其在网络通信中的优势。文章详细讲解了使用C语言实现网络通信程序的基本步骤,包括TCP和UDP通信程序的实现,并讨论了关键技术、优化方法及未来发展趋势,旨在帮助读者掌握C语言在网络通信中的应用技巧。
35 2
|
25天前
|
数据采集 XML 存储
构建高效的Python网络爬虫:从入门到实践
本文旨在通过深入浅出的方式,引导读者从零开始构建一个高效的Python网络爬虫。我们将探索爬虫的基本原理、核心组件以及如何利用Python的强大库进行数据抓取和处理。文章不仅提供理论指导,还结合实战案例,让读者能够快速掌握爬虫技术,并应用于实际项目中。无论你是编程新手还是有一定基础的开发者,都能在这篇文章中找到有价值的内容。

热门文章

最新文章