ubuntu上通过openvswitch卸载实现roce over vxlan

环境

操作系统:

uname -a
Linux  5.4.0-187-generic #207-Ubuntu SMP Mon Jun 10 08:16:10 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux 

Mellanox网卡:

ethtool -i ens6np0
driver: mlx5_core
version: 23.10-2.1.3
firmware-version: 20.39.3004 (MT_0000000222)

openvswitch:

 ovs-vswitchd --version
ovs-vswitchd (Open vSwitch) 2.15.8

配置SRIOV

具体见https://blog.csdn.net/aashuii/article/details/140313972
在本例中,为了操作方便启用了1个VF,结果确认:

rdma link
link mlx5_0/1 state DOWN physical_state DISABLED 
link mlx5_0/2 state ACTIVE physical_state LINK_UP netdev ens6np0 
link mlx5_1/1 state ACTIVE physical_state LINK_UP netdev ens6np0v0

可以看出PF的接口是ens6np0 ,VF的接口是ens6np0v0

安装openvswitch

可以通过apt-get install openvswitch-switch安装,但版本较低(2.9),所以这里选择手动安装。

下载解压源码:

安装依赖:

sudo apt-get install build-essential linux-headers-$(uname -r) 
sudo apt-get install graphviz automake bzip2 debhelper dh-autoreconf procps python-all python-qt4 python-twisted-conch python-zopeinterface python-six dkms module-assistant ipsec-tools racoon  libc6-dev  module-init-tools  netbase  python-argparse  uuid-runtime
sudo apt-get install openssl python-pip libtool autoconf 

编译安装:

./boot
./configure --with-linux=/lib/modules/$(uname -r)/build
make
make install
make modules_install

启动:

utilities/ovs-ctl start --system-id=random

注意1:这种方式启动后的日志默认路径不是/var/log/openvswitch,而是/usr/local/var/log/openvswitch/
注意2:这种方式启动的没有systemctl守护,重启后可能需要手动启动
在这里插入图片描述
确认启动成功:
在这里插入图片描述

配置卸载

修改网卡模式:

#需要把每一个VF的pci地址卸载后才能更改
echo 0000:af:00.1 > /sys/bus/pci/drivers/mlx5_core/unbind
#PF接口ens6np0 
echo switchdev > /sys/class/net/ens6np0/compat/devlink/mode
echo 0000:af:00.1 > /sys/bus/pci/drivers/mlx5_core/bind
#VF接口ens6np0v0 
ifconfig ens6np0v0 10.50.0.1/24 up

配置ovs:

ovs-vsctl add-br ovs-br
#192.168.1.3是本地PF接口的IP
ovs-vsctl add-port ovs-br vx16 -- set interface vx16 type=vxlan options:local_ip=192.168.1.1 options:remote_ip=192.168.1.3 options:key=16
ovs-vsctl add-port ovs-br eth0 

配置完后使用ovs-vsctl show确认:
在这里插入图片描述
确认vxlan的tc规则tc -s qdisc show dev vxlan_sys_4789:
在这里插入图片描述

配置硬件卸载:

#可使用ethtool -k ens6np0 | grep tc-offload确认
ethtool -K ens6np0 hw-tc-offload on 

这一步应该生成vf rep,用rdma link确认:
在这里插入图片描述
继续配置:

ifconfig ens6np0v0 10.50.0.1/24 up
ifconfig eth0 up
ovs-vsctl set Open_vSwitch . other_config:hw-offload=true  

可使用使用ovs-vsctl get Open_vSwitch . other_config:hw-offload确认

验证

服务端执行:ib_send_bw -d mlx5_1 -x 3 --report_gbits
客户端执行:ib_send_bw -d mlx5_1 -x 3 --report_gbits 10.50.0.1
注:-x后面是gid,可根据show_gids查看,选择RoCEv2
在这里插入图片描述
这一步通了,并不能证明卸载成功,要确定走的是硬件转发还是软件转发,一般来说如果带宽特别低,可能就是软件转发,可以在vf rep(本例中为eth0)抓包查看,如果看到很多tcp和roce报文,那就是卸载失败了,正常应该是:
在这里插入图片描述
还可以在网卡上抓包确认:ib dump

卸载失败可以查看流表确认:

#卸载失败的
ovs-appctl dpctl/dump-flows type=non-offloaded
#卸载成功的
ovs-appctl dpctl/dump-flows type=offloaded

另外可以开启debug级别日志看是否有提示:

ovs-appctl vlog/set netdev_offload_tc:dbg
ovs-appctl vlog/set dpif_netlink:dbg

问题总结

make modules_install提示ssl相关c和h文件找不到

At main.c:167:

  • SSL error:02001002:system library:fopen:No such file or directory: …/crypto/bio/bss_file.c:69
  • SSL error:2006D080:BIO routines:BIO_new_file:no such file: …/crypto/bio/bss_file.c:76
    sign-file: certs/signing_key.pem: No such file or directory
    INSTALL /home/lz/openvswitch-2.15.8/datapath/linux/vport-geneve.ko

根据https://blog.51cto.com/SpaceVision/5071551执行以下操作后重新make

cd /lib/modules/$(uname -r)/build/certssudo tee x509.genkey > /dev/null << 'EOF'
[ req ]
default_bits = 4096
distinguished_name = req_distinguished_name
prompt = no
string_mask = utf8only
x509_extensions = myexts
[ req_distinguished_name ]
CN = Modules
[ myexts ]
basicConstraints=critical,CA:FALSE
keyUsage=digitalSignature
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid
EOFsudo openssl req -new -nodes -utf8 -sha512 -days 36500 -batch -x509 -config x509.genkey -outform DER -out signing_key.x509 -keyout signing_key.pem

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

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

相关文章

HarmonyOS NEXT仓颉编程语言开发环境搭建(安装DevEco Studio Cangjie Plugin)

仓颉编程语言开发环境搭建主要是两部分&#xff1a; 安装最新版DevEco Studio&#xff1b;在DevEco Studio里面安装仓颉插件&#xff08;DevEco Studio Cangjie Plugin&#xff09;。 本文主要介绍DevEco Studio Cangjie Plugin的使用。 DevEco Studio Cangjie Plugin概述 …

【机器人工具箱Robotics Toolbox开发笔记(一)】Matlab机器人工具箱简介

MATLAB是一款被广泛应用于科学计算和工程领域的专业软件。它的全称为Matrix Laboratory&#xff08;矩阵实验室&#xff09;&#xff0c;因为其最基本的数据类型就是矢量与矩阵&#xff0c;所以在处理数学和科学问题时非常方便&#xff0c;可用于线性代数计算、图形和动态仿真的…

探索Python世界的趣味之旅:自制贪吃蛇游戏

通过本次贪吃蛇游戏的开发实践&#xff0c;不仅可以掌握Python编程语言的基础知识&#xff0c;还深入了解了游戏开发的基本流程和技术要点。这只是一个开始&#xff0c;Python的世界远不止于此。未来&#xff0c;你可以尝试开发更复杂、更有趣的游戏项目&#xff0c;甚至探索人…

Leetcode每日刷题之76.最小覆盖子串(C++)

1.题目解析 本题的题目是给定两个字符串 s 和 t &#xff0c;找出在 s 中的某个最小子串保证该子串中包含所以 t 中出现的字母即可&#xff0c;并且该结果是唯一答案&#xff0c;找不到结果就直接返回空串即可 2.算法原理 关于本题的核心思路就是"滑动窗口"&#xff…

教育行业解决方案:智能PPT在教育行业的创新应用

在信息化时代&#xff0c;教育行业面临着巨大的变革。随着人工智能技术的不断发展&#xff0c;传统教学方式正在被重新定义。彩漩科技作为 AI 技术的先行者&#xff0c;推出了歌者 PPT &彩漩 PPT&#xff0c;为教师、学生和家长提供了一种全新的教育体验&#xff0c;实现了…

开源云原生数据库PolarDB PostgreSQL 15兼容版本正式发布

开源云原生数据库PolarDB PostgreSQL 15兼容版正式发布上线&#xff0c;该版本100%兼容开源PostgreSQL 15。PolarDB是阿里云自研云原生关系型数据库&#xff0c;基于共享存储的存算分离架构使其具备灵活弹性和高性价比的特性&#xff0c;在开源PostgreSQL很好的性能表现的基础上…

Java 入门指南:Java 并发编程 —— Java 线程池详解

线程池 线程池&#xff08;ThreadPool&#xff09;是一种用于管理和复用线程的机制&#xff0c;它可以预先创建一批线程&#xff0c;并维护一个线程队列&#xff0c;用于执行提交的任务。 线程池的主要目的是提高多线程应用程序的性能和效率&#xff0c;通过重用已创建的线程…

【陪诊系统-H5客户端】订单状态进度条

似乎~客户端相对来说&#xff0c;要简单一点&#xff0c;就挑几个其中感兴趣的记录一下 订单状态进度条是根据当前订单的状态动态改变&#xff0c;这里的动态改变实际上是利用后端返回的状态数据&#xff0c;给标签添加不同的class属性来实现。进度条样式其实是两个圆角矩形框…

ABAP正则表达式 特殊字符处理

REPLACE ALL OCCURRENCES OF REGEX [[:space:]] IN <fs_purhdinfo>-cell_value WITH ."可去掉空格或回车键 REPLACE ALL OCCURRENCES OF &#xff1a; IN <fs_purhdinfo>-cell_value WITH ."可去掉空格或回车键 REPLACE ALL OCCURRENCES OF R…

AI绘画SD中如何安装/更新/卸载 Stable Diffusion WebUI 插件?SD新手必看的保姆级教程!

大家好&#xff0c;我是画画的小强 最近有一部分朋友对如何在AI绘画StableDiffusion中 安装管理 WebUI 插件十分陌生&#xff0c;不知道如何下手。 今天就系统地为大家介绍一下 WebUI 插件安装、更新、卸载的相关知识&#xff0c;让初学者能快速掌握插件的使用方法&#xff0c…

iomuxc、pinctrl子系统、gpio子系统(学习总结)

iomuxc、pinctrl子系统、gpio子系统三者的关系 相互依赖&#xff1a;IOMUXC、pinctrl子系统和gpio子系统在功能上相互依赖。IOMUXC提供了引脚复用和电气属性的配置能力&#xff0c;pinctrl子系统负责从设备树中获取这些配置信息并完成初始化&#xff0c;而gpio子系统则在引脚被…

C++中protobuffer的具体使用方法以及重要原理的实现

一、protobuffer的具体使用 对于基本的知识可以看我之前的文章。 那一片文章主要是知识点&#xff0c;这一片是实战。 1、头部 我们通过syntax 这个来指定版本号&#xff0c;如果不写的话就会默认为proto2&#xff0c;2这个版本是一个比较旧的版本。旧的版本写起来就比较繁琐。…

25届计算机毕业设计,如何打造Java SpringBoot+Vue博客系统,一步一脚印,开发心得分享

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

Spring源码-从源码层面讲解声明式事务配置文件的加载和相关对象的创建1(创建对向,属性填充,动态代理均有涉及)

tx.xml事务配置文件的解析 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns:context"http://www.spr…

项目实战 - 贪吃蛇

目录 1. 基本功能 2. 技术要点 3. 环境 4. 效果演示 5. 控制台设置 6. Win32 API介绍 6.1 Win32 API 6.2 程序台控制(Console) 6.3 控制台屏幕上的坐标(COORD) 6.4 GetStdHandle 6.5 GetConsoleCursorInfo 6.5.1 CONSOLE_CURSOR_INFO 6.6 SetConsoleCursorInfo 6…

Android终端如何快速接入GB28181平台实现实时音视频回传

技术背景 GB28181是由中国国家标准委员会发布的基于IP网络的安防视频监控标准。Android平台GB28181设备对接模块&#xff0c;主要涉及到视频监控领域&#xff0c;可实现不具备国标音视频能力的 Android终端&#xff0c;通过平台注册接入到现有的GB/T28181—2016服务&#xff0…

数据结构——单链表查询、逆序、排序

1、思维导图 2、查、改、删算法 //快慢排序法找中间值 int mid_link(Link_t *plink) {Link_Node_t *pfast plink->phead;Link_Node_t *pslow pfast;int m 0;while(pfast ! NULL){pfast pfast->pnext;m;if(m % 2 0){pslow pslow->pnext;}}printf("%d\n&quo…

WPF-快速构建统计表、图表并认识相关框架

一、使用ScottPlot.Wpf 官网地址&#xff1a;https://scottplot.net/quickstart/wpf/ 1、添加NuGet包&#xff1a;ScottPlot.Wpf 2、XAML映射命名空间&#xff1a; xmlns:ScottPlot"clr-namespace:ScottPlot.WPF;assemblyScottPlot.WPF" 3、简单示例&#xff1a;…

刘润《关键跃升》读书笔记6

把教练传授内容的知识含量分成五个级别&#xff1a;⽩⽔级、啤酒级、⻩酒 级、红酒级和⽩酒级&#xff08;⻅图3-4&#xff09; 第⼀个层级是⽩⽔级&#xff08;0&#xff09;。教练在传授的时候&#xff0c;什么都没有教&#xff0c;只 会训⼈。 ⼆个层级是啤酒级&#xff08…

LaTeX各符号表示方式(持续更新~)

- "\mu"&#xff1a;穆 miu - "\sigma"&#xff1a;西格玛xigema - "\lambda"&#xff1a;兰姆达或拉姆达lamuda - "\alpha"&#xff1a;阿尔法aerfa - "\beta"&#xff1a;贝塔beita - "\gamma"&#xff1a;伽马…