ovs vxlan 时延和吞吐

news/2024/5/19 18:13:51/文章来源:https://blog.csdn.net/lingshengxiyou/article/details/128043840

设计云时到底要不要用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.luyixian.cn/news_show_225691.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【HDU No. 2586】 树上距离 How far away ?

【HDU No. 2586】 树上距离 How far away ? 杭电 OJ 题目地址 【题意】 有n 栋房屋,由一些双向道路连接起来。 每两栋房屋之间都有一条独特的简单道路(“简单”意味着不可以通过两条道路去一个地方)。人们每天总是喜欢这样问&a…

Linux 软链接 与 硬链接 的区别

Linux 软链接 与 硬链接 的区别 1、概念 ​  链接文件:是 Linux 操作系统中的一种文件,主要用于解决文件的共享使用问题,而链接的方式分为两种——软链接和硬链接。 ​  inode:是文件系统中存储文件元信息(文件的…

3.71 OrCAD新建原理图时,每一个类目的含义是什么?OrCAD软件怎么显示元器件的封装名称?

笔者电子信息专业硕士毕业,获得过多次电子设计大赛、大学生智能车、数学建模国奖,现就职于南京某半导体芯片公司,从事硬件研发,电路设计研究。对于学电子的小伙伴,深知入门的不易,特开次博客交流分享经验&a…

Word处理控件Aspose.Words功能演示:在 Python 中将 Word 文档转换为 PNG、JPEG 或 BMP

MS Word 文件到图像格式的转换让您可以将文档的页面嵌入到您的 Web 或桌面应用程序中。为了在 Python 应用程序中执行此转换,本文介绍了如何使用 Python 将 Word DOCX或DOC文件转换为PNG、JPEG或BMP图像。此外,您将学习如何使用不同的选项控制 Word 到图…

SpringBoot2.7.4整合Redis

目录 一、添加maven依赖 二、添加配置项 三、新增配置类 四、编辑实体类 五、编写接口 六、编写业务层 1.编写service层 2.编写service实现层 七、测试接口 一、添加maven依赖 <dependency><groupId>org.springframework.boot</groupId><artif…

Python测试框架之Pytest基础入门

Pytest简介 Pytest is a mature full-featured Python testing tool that helps you write better programs.The pytest framework makes it easy to write small tests, yet scales to support complex functional testing for applications and libraries. 通过官方网站介绍…

Flink部署之Yarn

Flink部署之Yarn 一、环境准备 1、Flink 是一个分布式的流处理框架&#xff0c;所以实际应用一般都需要搭建集群环境。 需要准备 3 台 Linux 机器。具体要求如下&#xff1a; 系统环境为 CentOS 7.5 版本。安装 Java 8。安装 Hadoop 集群&#xff0c;Hadoop 建议选择 Hadoop…

【代码随想录】二刷-二叉树

# 二叉树《代码随想录》 二叉树的遍历方式 深度优先遍历: 前序遍历(递归法、迭代法): 中左右中序遍历(递归法、迭代法): 左中右后序遍历(递归法、迭代法): 左右中 广度优先遍历: 层序遍历(迭代法) 二叉树的定义 struct TreeNode{int val;TreeNode* left;TreeNode* right;Tree…

React - Ant Design3.x版本安装使用,并按需引入和自定义主题

React - Ant Design3.x版本安装使用&#xff0c;并按需引入和自定义主题一. 安装使用 antd二&#xff0e;antd 高级配置安装 react-app-rewired&#xff0c;对 create-react-app 的默认配置进行自定义安装 babel-plugin-import &#xff0c;按需加载组件代码和样式自定义主题An…

[毕业设计]机器学习水域检测标注算法

前言 &#x1f4c5;大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投…

IO模型Netty

一、IO模型 对于一次IO操作&#xff0c;数据会先拷贝到内核空间中&#xff0c;然后再从内核空间拷贝到用户空间中&#xff0c;所以一次read操作&#xff0c;会经历以下两个阶段&#xff0c;基于这两个阶段就产生了五种不同的IO模式。 为了避免用户进程直接操作内核&#xff0c;…

Android8.1 MTK 浏览器下载的apk点击无反应不能安装

最近测试人员发现用原生浏览器下载的apk点击安装时无反应&#xff0c;不能安装。 在/vendor/mediatek/proprietary/packages/apps/Browser/src/com/android/browser/DownloadHandler.java 中&#xff0c;发现下载的apk文件缺少了mime类型&#xff0c;如下图 mimetype null造…

RS编码译码误码率性能matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法描述 纠错编码技术在卫星通信、移动通信及数字存储等领域已获得了广泛的应用。RS码作为其中最重要的码类之一,具有优良的纠随机错误和突发错误的能力,被空间数据系统咨询委员会(CCSDS)作为一种…

计算机毕业设计——基于SpringBoot框架的网上购书系统的设计与实现

文章目录前言一、背景及意义选题背景选题目的二、系统设计主要功能运行环境三、系统实现部分页面截图展示部分代码展示四、源码获取前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 二十一世纪是网络化&#xff0c;信息化的时代&#xff0c;为了满足广大…

植入“人工心脏”助患者重获“心”生

【同期】人工心脏移植患者 刘女士这要是在过去的时候也就放弃了&#xff0c;我再活20年&#xff0c;我还能看着我大孙子成家&#xff0c;这就是我最大的希望。【解说】11月22日&#xff0c;人工心脏移植患者和心脏移植患者在即将康复出院前&#xff0c;互相握手庆贺。据了解&am…

18.3 内存池概念、代码实现和详细分析

一&#xff1a;内存池的概念和实现原理概述 malloc&#xff1a;内存浪费&#xff0c;频繁分配小块内存&#xff0c;浪费更加明显。 “内存池”要解决什么问题&#xff1f; 1、减少malloc()的次数&#xff0c;减少malloc()调用次数就意味着减少对内存的浪费 2、减少malloc()的…

Wireshark Ethernet and ARP 实验—Wireshark Lab: Ethernet and ARP v7.0

Wireshark Lab: Ethernet and ARP v7.0 1. Capturing and analyzing Ethernet frames 清除浏览器缓存 使用wireshark抓包并请求网页 修改“捕获数据包列表”窗口&#xff0c;仅显示有关 IP 以下协议的信息。 抓包干扰较多&#xff0c;故分析作者的数据包回答下列问题 包含…

关于WEB端实现电子海图之Openlayers加载切片

记笔记&#xff0c;免忘记&#xff01; 关于WEB端实现电子海图研究之思路 关于WEB端实现电子海图研究二GeoServer GeoServer完成shp文件切矢量图后&#xff0c;我们需要加载GeoServer切片在web上展示。 vector-tiles-tutorial官方示例 以下示例使用openLayers来加载 D:\s…

Django Cookie 与 Session 对比

文章目录原理比较语法比较Cookie 示例创建 Cookie更新 Cookie删除 CookieSession 示例创建 session查询 session删除一组键值对删除 session参考文档本文通过示例演示 Django 中如何创建、查询、删除 Cookie 与 Session。 原理比较 在Web开发中&#xff0c;使用 session 来完成…

Docker-CentOS开启防火墙firewalled映射Docker端口

开启docker的Tomcat容器后&#xff0c;启动 docker run -d -p 8080:8080 tomcat 访问不了Tomcat 查看防火墙所有开放的端口 firewall-cmd --zonepublic --list-ports 一、需要防火墙开启8080 端口 1、通过systemctl status firewalld查看firewalld状态&#xff0c;发现当前…