SDN — OpenvSwitch 软硬件融合加速方案

news2024/11/15 17:16:59

目录

文章目录

  • 目录
  • OVS-DPDK
    • OvS-DPDK v.s. SR-IOV
      • 东西向流量
      • 南北向流量 / 跨服务器东西流量
  • OVS Hardware Offload
  • OVS-DPDK Hardware Offload
    • DPDK Hardware offload
    • OvS-DPDK Hardware offload
    • OvS-DPDK Hardware offload with vDPA

OVS-DPDK

在这里插入图片描述

上图中的深色模块就是引入 DPDK 的相关模块。

  • ofproto-dpif:实现了 ofproto 模块 API,直接操作 dpif 层。

  • dpif-netdev:用户空间中 “快速路径” 的实现,它实现了 dpif 模块 API,可以直接操作 netdev 设备,能够实现数据包在用户空间的快速处理,减少和内核空间的切换开销。

  • netdev-dpdk:应用 DPDK 库实现了 netdev 模块 API,提供了多种类型的接口,如下:

    • Physical ports(PMD):使用 vfio 或者 igb_uio 实现的端口。
    • vHost(dpdkvhostuser and dpdkvhostcuse):使用 librte_vhost 库实现的端口,用户可以基于这两种端口类型创建 vhost-user 和 vhost-cuse 端口来完成用户空间的数据转发,并且能够实现和 VM 的快速通信,只要提供 virtio 后端驱动 vhost 即可,virtio/vhost 被证实是用于 VM 通信的一套快速、安全、标准的接口。
    • dpdkr:使用 librte_ring 实现,用户可以基于这种端口类型创建 dpdk-ring 端口来完成用户空间的数据转发,它能够实现和 VM 之间快速的零拷贝通信(使用 IVSHMEM 或者其他进程间通信方式)。

OvS-DPDK 通过将 VirtIO 的 Backend 实现在 Userspace,实现了 VM 与 OVS-DPDK 共享 Userspace 内存,这样 VM 在收发报文时,只需要 OvS-DPDK 将从网卡收到的报文数据写入 VM 的内存,或从 VM 内存将要发送的报文拷贝到网卡 DMA 的内存,由于减少了内存拷贝次数和 CPU 调度干扰,提升了转发通道的整体效率和吞吐量。

OvS-DPDK 相对转发能力有所提高,但也存在新的问题。

  1. 首先,目前大多数服务器都是 NUMA 结构,在跨 NUMA 转发时性能要比同 NUMA 转发弱。而物理网卡只能插在一个 PCIe 插槽上,这个插槽只会与一个 NUMA 存在亲和性,所以 OvS-DPDK 上跨 NUMA 转发的流量不可避免。
  2. 第二,在 VM 与 OvS-DPDK 共享内存时,初始化的队列数量通常是与 VM 的 CPU 个数相同,才能保证 VM 上每一个 CPU 都可以通过共享内存收发数包,这样导致不同规格的 VM 在 OvS-DPDK 上收发队列所接入的 CPU 是非对称的,在转发过程中需要跨 CPU 转发数据。最后,OvS-DPDK 在转发数据时,不同 VM 的流量由于 CPU 瓶颈导致拥塞,会随机丢包,无法保障租户带宽隔离。

在这里插入图片描述

OvS-DPDK v.s. SR-IOV

东西向流量

东西向流量,DPDK 性能优于 SR-IOV。

在这里插入图片描述
SR-IOV 成为了一个瓶颈,流量路径会变长,网卡资源会被占用。Intel 官方给出东西向流量场景下 DPDK 与 SR-IOV 的性能测试数据。

在这里插入图片描述

南北向流量 / 跨服务器东西流量

南北流量,也包括跨服务器东西流量场景中,SR-IOV 性能要优于 DPDK。

在这里插入图片描述

在这里插入图片描述

OVS Hardware Offload

2018 年,Open vSwitch 发布了基于 TC Flower 的 Hardware offload 功能,支持将 Datapath 卸载到 SmartNIC 上。

OvS Hardware offload 架构如下,存在 3 个 Datapath。

  1. OvS Kernel Datapath:内核级的 Fast datapath。
  2. OvS Kernel TC Datapath:作为 SmartNIC TC Datapath 在内核中的挂载点。
  3. SmartNIC TC Datapath:硬件级的 Fast datapath。

在这里插入图片描述

以 Mellanox 为例,在 Mellanox Physical Network Interface 中存在一个 Virtual Switch 成为 eSwitch。如果 Mellanox 开启了 Hardware Offload Flag NETIF_F_HW_TC,那么 OvS 在初始化时就会通过 TC Flower 向 eSwitch 下发一条 Default Rule,包含了 Match Entry 和 Action。而 Default Rule 的 Match Entry 就是所有匹配不上 other rules 的所有数据流,Action 就是将数据报文发送至 OvS Kernel Datapath。

如果该报文是 First Package 的话,那么 OvS Kernel Datapath 还会再发送至 ovs-vswitchd 进行转发以及 On-demand 的 OpenFlow Rule install to Datapath。在 Install OpenFlow Rule to Datapath 时,ovs-vswitch 还会根据 Hardware Offload Flag 来判断是安装到 OvS Kernel Datapath,还是安装到 SmartNIC TC Datapath。如果是后者的话,那么 ovs-vswitchd 会调用 TC Flower 接口将 Rule 下发到 SmartNIC。

此后,后续的数据流都可以直接在 SmartNIC 上进行转发,直到这条 Rule 老化(Aging)为止。

在这里插入图片描述

  • OvS Hardware offload to NVIDIA ConnectX SmartNIC

在这里插入图片描述

OVS-DPDK Hardware Offload

DPDK Hardware offload

DPDK Hardware offload 功能基于 DPDK 的 rte_flow Lib 来实现。

rte_flow Lib 是 DPDK 提供的通用流编程接口,是 DPDK 对 Flow Representation 的实现,rte_flow API & structure 用于将 pkt forwarding rule 编程到(Program)NIC-hardware。例如将 OvS-DPDK Rule 卸载到 SmartNIC 上。

一条 RTE_FLOW 由以下 3 个部分组成:

  1. Attributes:是流本身的属性,包括:port、ingress/egress、group、priority、transfer(将流卸载到硬件)。
  2. Match:流的匹配模式。
  3. Action:匹配成功以后执行的动作。

在这里插入图片描述

This dpdk-way of flow- representation is called rte-flow. An open-flow rule when converted into dpdk-defined flow-format, then this flow-data-structure is called rte-flow. Once a rte-flow is formed it can be passed to any PMD to be processed and Programmed into the hardware.

OvS-DPDK Hardware offload

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

OvS-DPDK Hardware offload with vDPA

vSwitch 的 Control Plane 部署在 DPU 的 CPU 核上,Data Plane 卸载到 DPU 上的硬件加速引擎处理。CP 和 DP 之间通过 DPDK 标准 rte_flow 方式进行交互,实现 vSwitch Full offload。

vSwitch 的 DP 卸载后,还可以把 VirtIO Networking Backend 一同卸载。通过 Hardware vDPA 框架实现的 virtio-net 后端传递给虚拟机或裸金属内部的标准 virtio-net 前端,数据的传递无需 CPU 的干预,实现更高的网络转发性能。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/488369.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Sublime软件及html相关软件安装

Sublime软件及html相关软件安装 下载Sublime编译器并安装下载链接: [https://www.sublimetext.com/3](https://www.sublimetext.com/3)安装emmet自动补全插件 验证 下载Sublime编译器并安装 下载链接: https://www.sublimetext.com/3 安装emmet自动补全插件 第一步&#xff1…

css分享 | 常用按钮效果记录(关注追加)

今日分享几个css样式,在日常业务中,我们会追求更友好的交互体验,所以记录一些业务中常用的按钮样式,下次遇到可以拿来即用。 目录 1.按钮水波纹点击效果 2.流光波光闪烁效果 3.按钮点击立体效果 4.按钮悬停出现箭头效果 1.按钮…

玩客云刷armbian证书错误server certificate verification failed

文章目录 前言大概操作:1、换http源(感觉https应该也行)2、修改armbian.list3、证书认证4、更新软件源、索引5、安装证书、更新证书6、禁用ssl7、手动添加网站证书(好像失败了)8、安装debian软件包公钥(好像…

uni push2.0使用

uni push2.0配置 需要开通uniCloud服务(推荐阿里云) 生成证书:安卓(https://ask.dcloud.net.cn/article/68),ios(https://docs.getui.com/getui/mobile/ios/apns/) 进入开发者中心…

C++ 1.基础语法

1.using namespace std; 建议a:项目中尽量不要用上述语句。b:日常练习中使用。c:项目中指定名空间访问展开常用。 这个语句表示标准库的东西都放到std,为了解决自己定义的名字和库名发生冲突。如果定义和库名冲突的名字&#xf…

基于 Docker 的 MySQL GTID 主从复制与测试

目录 一、规划1.1 基础环境1.2 应用架构1.3 路径规划 二、部署2.1 服务部署2.2 主从配置2.2.1 主从同步配置2.2.2 主主同步配置 2.3 主从验证2.3.1 主从同步验证2.3.2 主主同步验证 2.4 客户端连接2.4.1 控制台2.4.2 图形化 三、压测3.1 安装 sysbench3.2 sysbench 压测3.2.1 读…

玩具蛇+正则问题(JAVA解法)

玩具蛇:用户登录 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 小蓝有一条玩具蛇,一共有 16 节,上面标着数字 1 至 16。每一节都是一个正方形的形状。相邻的两节可以成直线或…

5 个冷门且实用的 Kubectl 使用技巧

kubectl 是 K8s 官方附带的命令行工具,可以方便的操作 K8s 集群。这篇文章主要介绍一些 kubectl 的别样用法,希望读者有一定基础的 K8s 使用经验。 有一篇文章也介绍了一些技巧,写博客的时候正好搜到了,正好也分享出来吧。 Ready…

【Linux】 OpenSSH_7.4p1 升级到 OpenSSH_8.7p1(亲测无问题,建议收藏❤)

🍁博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 文章目录 文章声明前述安装一些必要的命令&…

细讲shell中的循环语句--for、while、until

目录 一:何为循环 1.循环概述 2.使用循环的好处 二:for循环语句 1.for语句的用法 ​2. 语法结构 (1)一般格式 (2)类C语言格式 (3)死循环 3.事例 ​4.常用转义符 ​5.制作九九乘法表 …

Winform从入门到精通(39)——ToolStrip(史上最全)更新中

1、Name获取控件对象 2、AllowDrop 3、AllowItemReorder 4、AllowMerge 5、Anchor 设置ToolStrip如何锚定父控件 6、AutoSize 设置ToolStrip的尺寸大小是否根据Font属性的变化而变化 7、BackColor 设置ToolStrip的背景色 8、BackgroundImage 设置背景图像 9、Back…

精炼计算机网络——序章(二)

文章目录 前言1.4 计算机网络在我国的发展1.5 计算机网络的类别1.5.1计算机网络的定义1.5.2 几种不同类别的计算机网络 1.6 计算机网络的性能1.6.1 计算机网络的性能指标1.6.2 计算机网络的非性能特征 1.7 计算机网络体系结构1.7.1 计算机网络体系结构的形成1.7.2 协议与划分层…

ChatExcel?

大家好,我是章北海mlpy 最近在浅学LangChain,在大模型时代,感觉这玩意很有前途。 LangChain是一个开源的应用开发框架,目前支持Python和TypeScript两种编程语言。 它赋予LLM两大核心能力:数据感知,将语言模…

5月1日起正式实施!图解《关键信息基础设施安全保护要求》

2023年5月1日,GB/T 39204-2022《信息安全技术 关键信息基础设施安全保护要求》将正式实施。作为我国第一项关键信息基础设施安全保护的国家标准,对于我国关键信息基础设施安全保护有着极为重要的指导意义。 《信息安全技术 关键信息基础设施安全保护要求…

Swift 技术 监听电话中断,音乐(用于恢复播放音乐)(源码)

一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络&#xff0…

【高烧39°考研上岸】23上交819考研经验分享

笔者来自通信考研小马哥23上交819全程班学员 一,基本情况介绍和考研经历 大家好,首先介绍一下我的基本情况。我本科毕业于东南大学,报考的是上海交通大学电子系电子与通信工程专业(专业学位)。我二战上岸&#xff0c…

Selenium:HTML测试报告

自动化测试过程中,获得用例的执行结果后,需要有具象化、简洁明了的测试结果,比如:用例执行时间、失败用例数、失败的原因等,这时候,就需要用到测试报告。 HTML测试报告是python语言自带的单元测试框架&…

等保各项费用支出明细

等保收费主要依据文件: 等保工作的定级指南文件_luozhonghua2000的博客-CSDN博客 Q7:做等级保护要多少钱? 答:开展等级保护工作主要包含:规划费用、建设或整改费用、运维费用、测评费用等,具体费用因各单位现状、保护对象承载业务功能、重要程度、所在地区等差异较大。 …

Input事件在应用中的传递(一)

Input事件在应用中的传递(一) hongxi.zhu 2023-4-25 前面我们已经梳理了input事件在native层的传递,这一篇我们接着探索input事件在应用中的传递与处理,我们将按键事件和触摸事件分开梳理,这一篇就只涉及按键事件。 一、事件的接收 从前面的…

Kubernetes(k8s)概念介绍

文章目录 1. k8s概述和特性2. k8s架构组件3. k8s核心概念 1. k8s概述和特性 K8s是一个开源的用于管理云平台中多个主机上的容器化的应用,k8s的目标是让部署容器化的应用简单并且高效,k8s提供了应用部署,规划,更新,维护…