ovs vxlan 时延和吞吐

news2025/7/13 22:18:47

设计云时到底要不要用vxlan,如果用vxlan到底要不要购买比较贵的smart nic做offload,采用软件vxlan还是硬件交换机vxlan,很难决策,这儿简单测试一下,给个参考,资源终究是有限的,成本还是有考虑的,了解清楚云上业务再做决策。

把网络比作一条水管,虹吸原理把水从一个池塘A抽到另一个池塘B,当然是水管越粗越好,水管粗细就是不同能力的网卡,一秒钟能从水管流出多少水就是吞吐,假如从水管入口滴一滴墨水,那墨水从入口到出口的时间就是单向时延,水管壁粗糙弯曲不直,水流就慢,时延就大,水在水管里流得越快单位时间从水管口流出来的水就越多,时延影响吞吐。水流速度主要取决于池塘A和池塘B的水位差,假如一个人甲向池塘A加水,另一个人乙从池塘B取水,甲乙动作快慢影响水位差,池塘大小就是buffer,池塘越大,甲乙动作对水位差影响越小,而水位差类似于链路层反压和TCP流量控制,甲乙就是TCP和系统调用。而真实的网络情况是很多水管很多池塘串连,水管有粗有细,池塘有大有小,很多甲乙,有胖有瘦有老有幼,瓶颈到底在哪里很难说清楚。

测试环境

物理机物理口的MTU是1500,vxlan0,ovs internal口和虚拟机的网口MTU都是1450,host物理口打开多队列,虚拟机8核16G,vhost=on,网口无多队列。

最普通的环境,不做其它特殊优化,就看最通用的环境表现是怎样的。

两台物理机不同路径对打流量。

红色的是physical流量测试路径,两个物理机直接流量测试。

ip link add vxlan0 type vxlan id 1111 dstport 5799 remote 10.145.69.49 local 10.145.69.26 dev eth4
ip link set vxlan0 up
ip addr add dev vxlan0 192.168.111.1/24
ip link add vxlan0 type vxlan id 1111 dstport 5799 remote 10.145.69.26 local 10.145.69.49 dev eth4
ip link set vxlan0 up
ip addr add dev vxlan0 192.168.111.2/24

复制

蓝色的是kernel vxlan流量测试路径,做上面的命令创建vxlan device,做vxlan encap/decap。

红色的是namespace vxlan流量测试路径,借用了neutron创建的namespace,br-int上连接的是internal类型的口,也做vxlan encpa/decap。

两个物理机上的两台虚拟机对打流量。

红色的是vm vlan流量测试路径,流量不做vxlan encap/decap。

绿色的是vm vxlan流量测试路径,流量做vxlan encap/decap。

5种测试都要经过host或者guest kernel tcp/ip stack,区别就是有没有kvm介入,有没有vxlan encap/decap。

测试方法

没有硬件测试仪,用一些小软件模拟业务真实场景测试。

#用ping测试时延 ip netns exec qdhcp-5cc14009-86bb-4610-91a7-ae7627e8a5b5 ping 192.168.200.2 -c 100 #背景pps高 ,再用ping测试时延 iperf3 -c 192.168.200.2 -p 8099 -t 180 -l 1 -u #背景bps高,再用用ping测试时延 iperf3 -c 192.168.200.2 -p 8099 -t 180

#netperf测试TCP时延 netperf -H 192.168.111.2 -p 8077 -t TCP_RR -- -o mean_latency #netperf测试UDP时延 netperf -H 192.168.111.2 -p 8077 -t UDP_RR -- -o mean_latency

数据

ping和iperf3测试结果,时延单位是ms。

netperf测试时延结果,时延单位是us。

测试时延工具用的是ping和netperf,ping和netperf用默认发包频率,ping是一秒一个包,netperf是连续发包,ping和netperf的值比较没意义。

分析

  • 物理口支持各种offload和多队列所以性能最高时延最小。
  • 没流量时namespace vxlan时延是physical的2倍,而vm vxlan是physical的7倍,vm vxlan相比于namespace vxlan多了qbr桥和kvm处理时间,说明相比vxlan处理,qbr和kvm耗费的时间更多。
  • 背景pps大时 namespace vxlan时延是physical的4倍并且pps只是physical的80%,而vm vxlan时延是物理的17倍并且pps只是physical的26%,pps大时流量对kvm冲击更大,性能瓶颈突显,在看pps大时vm vlan的表现,时延是physical的15.6倍并且pps只是physical的70%,时延同样表现不佳,再比较vm vxlan以及vm vlan和namespace vxlan和kernel vxlan,更说明pps大时时延是由于kvm处理处理不及时导致的。pps大时观察到发送端vhost线程cpu 100%,接收端一个qemu-kvm线程cpu 100%,多队列,分散处理irq能提高处理性能减小部分时延。
  • 小报文pps大时配置ethtool -N eth4 rx-flow-hash udp4 sdfn后ping时延没有改善,相比于vxlan处理引入的时延,更应当关注kvm对中断处理以及vcpu调度引入的时延,目前现状应该优先优化kvm。
  • bps大时报文长度大pps相对小点,pps小vxlan encap/decap少kvm处理也少,vm vxlan bps只是namespace vxlan bps的66%,按道理说它的时延也应该是namespace vxlan的66%即1.145才对,结果确是2.888,说明kvm处理把时延翻倍了。
  • bps大时vm vxlan相比vm vlan时延大是真正vxlan封装的问题,长报文大量占用vxlan device的budget,观察到一个ksoftirqd占用cpu 100%,配置网卡rss用udp源和目的port后,ethtool -N eth4 rx-flow-hash udp4 sdfn,ping时延才0.368,因为ping包hash到不同的物理cpu,ping包处理插队了,说明此时cpu处理vxlan存在性能瓶颈,性能影响了时延。
  • 大报文bps大时,因为有MTU限制,pps其实也不小,ovs vxlan处理和kvm处理会引入相等的时延,但这个时延只是大pps时kvm引入时延的10%,一条流处理有上限,不同流占用不同的物理cpu能提高vxlan性能减小vxlan处理时延。
  • vm vxlan相比于vm vlan,pps和bps都上不去,性能上存在较大瓶颈。
  • netperf TCP和UDP测试发的都是小包,TCP和UDP封装的长度都是1字节,pps高,测试时发现qemu进程和vhost线程cpu占用率很高,说明性能瓶颈在于kvm,physical, kernel vxlan和namespace vxlan相比时延成20%增长,但加上kvm后,时延翻了二三倍,如果硬要知道vxlan encap/decap引入的时延比一下vm vxlan和vm vlan就知道了,大概10%左右,但kvm引入200%左右。

结论

  • 时延瓶颈点在于kvm,kvm引入的时延远远大于vxlan encap/decap。
  • ovs实现vxlan性能存在瓶颈,单cpu的ksoftirq很容易就100%了,吞吐上不去。
  • 一旦用smart nic offload或者硬件交换机做vxlan处理后,vxlan对物理cpu占用基本没了,vxlan性能会大幅提高,单流kvm就更承受不住,时延会更大,性能瓶颈会转移到kvm,但多条流分散到不同的虚拟机会有部分收益,但肯定不会成线性的,linux进程调度和kvm处理中断很快就会成瓶颈。

原文链接:https://cloud.tencent.com/developer/article/1792384 

(免费订阅,永久学习)学习地址: Dpdk/网络协议栈/vpp/OvS/DDos/NFV/虚拟化/高性能专家-学习视频教程-腾讯课堂

更多DPDK相关学习资料有需要的可以自行报名学习,免费订阅,永久学习,或点击这里加qun免费
领取,关注我持续更新哦! !   

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

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

相关文章

Flutter splash 屏幕

Flutter splash 屏幕 原文 https://medium.com/bedirhanssaglam/flutter-splash-screen-a8cafec52c8e 前言 启动画面通常被特别大的应用程序用来通知用户程序正在加载过程中。它们提供的反馈表明,一个漫长的过程正在进行中。有时,启动画面中的进度条会指…

【MYSQL】在线恢复主从复制方案

一、恢复前提 因复杂情况,从库无法从binlog中恢复主从复制关系,需要从备份文件中恢复。恢复过程的几个关键点为: 1、从库现有数据的清理。本方案采用覆盖的方式,导出时添加add-drop参数即可。还有一个方案是手动删除数据文件&…

1990-2021年全国各省外商直接投资水平

1990-2021年全国各省外商直接投资水平 1、包括全国30省,不含西藏 2、指标包括: 行政区划代码、长江经济带、年份、地区、经度、纬度、GDP(亿元)、外商直接投资(美元)(万美元)、人民币对美元汇率(美元1)(元)、外商直接投资(万元)、外商直接投资水平 3、…

第三章:CompletableFuture

Future接口复习FutureTask 实现类Future 编码的优缺点优点缺点get() 方法导致阻塞isDone() 轮询总结CompletableFutureCompletableFuture 为什么会出现?CompletableFuture 架构图CompletionStageCompletableFuture 四个静态方法CompletableFuture 减少阻塞和轮询注意…

Elasticsearch 8.4.1 配置自签名证书和启用Https

一、背景 某次安全扫描过程中,发现环境存在【SSL证书不可信】和【SSL自签名证书】漏洞;漏洞描述: 此服务的X.509证书链未由认可的证书颁发机构签名。如果远程主机是生产中的公共主机,这将取消SSL的使用,因为任何人都可…

干货分享:超级浏览器使用感受

在亚马逊做工艺品时间挺长的了,来说说我这几年使用超级浏览的感受。 现在做跨境的就跟做国内的电商平台一样卷了,不仅产品要新奇独特、要包邮价格还要有优势,可以说以前跨境电商是卖方市场,现在已经妥妥变成买方市场了。但这是国际…

python基础之模块与列表

文章目录一、模块模块名也是一个标识符二、列表高级变量类型:在python中,所有非数字型变量都支持以下特点:列表的定义:列表函数使用:关键字、函数和方法科普:列表的迭代 遍历:一、模块 模块是p…

一文了解 Go 中的指针和结构体

一文了解 Go 中的指针和结构体前言指针指针的定义获取和修改指针所指向变量的值结构体结构体定义结构体的创建方式小结耐心和持久胜过激烈和狂热。 前言 前面的两篇文章对 Go 语言的基础语法和基本数据类型以及几个复合数据类型进行介绍,本文将对 Go 里面的指针和结…

机器学习-(手推)线性回归-最小二乘法(矩阵表达)、几何意义

一、最小二乘法(矩阵表达)误差平均分散每个样本 如下数学推到过程(手推!!!): 数据介绍: D{(x1,y1),(x2,y2),......(xn,yn), Xi(P维列向量&…

行列向量的维数和个数的关系【三秩相等作为桥梁】

前置知识 1.列向量组维数增加时,向量组的极大无关组增加(或不变)。 2. 三秩相等 向量组证明 直观证明 这两个列向量显然是相关的。 这两个列向量当a和b取k和2k的时候相关(k为任意常数),当不是k和2k的时…

【2-Docker安装部署ElasticSearch和Kibanan详细步骤】

一.知识回顾 【0.ElasticSearch专栏在这里哟,想要学习的可自行进入专栏学习】 【1-ElasticSearch的基本介绍与用途、ElasticSearch中一些基本的概念、倒排索引的基本概念】 二.Docker安装部署ElasticSearch 2.1 docker pull 从镜像仓库中拉拉取ElasticSearch的镜像…

【零基础入门SpringMVC】第三期——请求域添加数据与视图

一、域对象共享数据 SpringMVC 中有哪些域对象? Request请求域,代表一次请求,从浏览器开启到关闭Session请求域,代表一次会话,从服务器开启到关闭【一次getSession获得了cookie,这个会话没关闭,…

Romantics三大浪漫(编译原理+操作系统+计算机图形学)

Romantics三大浪漫 一、编译原理1.1 研究翻译的科学1.2 编译器和解释器1.3 编译的流程(JIT为例)1.4 词法分析器1.5 多有限状态机提取Token- 实现词法分析器lexer1.6 实现流的peek和putBack操作一、编译原理 本章目标: 提升编程能力 区别于面向研究人员、学者的编译原理教学&a…

CSS学习笔记(三)

her~~llo,我是你们的好朋友Lyle,是名梦想成为计算机大佬的男人! 博客是为了记录自我的学习历程,加强记忆方便复习,如有不足之处还望多多包涵!非常欢迎大家的批评指正。 目录 一、CSS 的三大特性 1.1 层叠…

mybatis复习05,mybatis的缓存机制(一级缓存和二级缓存及第三方缓存)

mybatis复习05,mybatis的缓存机制(一级缓存和二级缓存)MyBatis的缓存机制MyBatis的一级缓存MyBatis的二级缓存二级缓存的相关配置MyBatis缓存查询的顺序整合第三方缓存EHCacheEHCache配置文件说明:MyBatis的缓存机制 MyBatis作为持久化框架&…

社区故事|SmartX 用户社区技术发烧友独家专访

小伙伴们,SmartX 用户社区已经陪伴我们走过近两年的时光,这期间有一千多位小伙伴加入我们,共同讨论问题、分享经验。今天,SmartX 用户社区的一线记者小乐为我们带来了独家采访,揭秘社区中两位技术发烧友的幕后故事&…

葡萄糖-聚乙二醇-转铁蛋白|Transferrin-PEG-Glucose|转铁蛋白-PEG-葡萄糖

转铁蛋白又名运铁蛋白 transferrin,TRF,siderophilin)还可以提供PEG接枝修饰葡萄糖,葡萄糖-聚乙二醇-转铁蛋白,Transferrin-PEG-Glucose,转铁蛋白-PEG-葡萄糖 中文名称:葡萄糖-转铁蛋白 英文名称:Glucose…

Java学习——Servlet服务器请求响应程序

Servlet服务器程序 1. Servlet的概念 Servlet(Server Applet):运行在Web服务器端(Tomcat)的小程序。 Servlet的主要作用:接收客户端浏览器的请求,还可以为客户端浏览器做出响应。 学习Servl…

戴尔笔记本重装系统按f几进入

有不少使用戴尔笔记本电脑的用户对于u盘重装系统中的按f几进入u盘启动的操作不熟悉,导致自己无法独立完成戴尔笔记本重装系统的步骤怎么办?其实相关的方法不难,下面小编就教下大家戴尔笔记本重装系统按f几进入u盘启动项安装。 工具/原料&…

【培训】MMEdu离线版的使用:实现石头剪刀布图像分类的检测

一、MMEdu离线版的使用 1.双击XEdu v1.0.exe解压缩到某个盘,会是一个文件夹XEdu 2.进入XEdu,双击运行“点我初始化.bat”,等待至运行结束命令提示符窗口自动关闭 3.双击运行“jupyter编辑器.bat”,将会打开一个网页版jupyter&…