当前位置: 首页 > news >正文

WANem弱网环境模拟工具的使用探索

目录

1、WANem简介

2、使用WANem工具时需要用到的其他辅助工具

3、WANem网损环境部署与测试场景

3.1、WANem网损环境部署

3.2、测试场景与测试参照

4、模拟网络损伤分析

4.1、丢包

4.2、延时

5、总结


       WANem工具可以对网络损伤进行模拟,该工具在软件系统的网络测试中有着广泛的应用,可以模拟网络丢包、网络抖动。那么WANem所模拟的网络损伤对数据包会对网络环境和软件系统造成怎样的影响呢?本文将对WANem进行详细的分析探索,以便更好地了解WANem工具的特性,为我们的软件测试服务。

1、WANem简介

       WANem全称Wide Area Network emulator,广域网网络仿真器(弱网络环境模拟工具),是一款基于GPL授权的开源软件工具。WANem旨在在局域网环境下模拟广域网/互联网的真实网络环境体验。使用可用于模拟广域网的网络环境特性,如网络延迟、数据包丢失、数据包损坏、断开连接、数据包重新排序、抖动等。

       测试软件系统时,很多时候会因为业务的需要,需要在局域网环境中模拟Internet互联网的网络环境,目的是尽可能模拟出真实环境中的用户请求和数据交互,以检验软件系统对弱网环境的适应性。局域网的网络特点是高带宽、低延迟、丢包率低;Internet相对局域网而言,Internet的网络特点是低带宽、高延迟、有丢包且网络抖动。因此我们需要寻找一款工具,能人为地去控制带宽、丢包率、抖动、延迟。弱网络环境模拟工具WANem,是个不错的选择,今天我们就来详细讲述一下该工具的使用。

2、使用WANem工具时需要用到的其他辅助工具

       在使用WANem是,还需要使用到WireShark和iPerf两个辅助分析工具。

       网路抓包分析工具WireShark,在辅助分析时主要用于分析包流量、丢包率、两个包之间的平均间隔时间,以及包乱序的情况。

Wireshark是一个网络数据包抓取及分析工具,是排查网络问题的利器。使用该工具可以抓取网卡上发出去及收到的所有网络数据,通过分析这些网络数据包可以去排查网络上的故障,也可以去分析软件交互数据上的问题。作为IT从业人员,必须要掌握该工具的使用。

        网络性能测试工具iPerf,在辅助分析时主要用于分析网络的丢包率、抖动情况。

iPerf是一个网络性能测试工具,使用iPerf可以测试最大TCP和UDP带宽性能,具有多种参数和UDP特性,可以根据需要调整,可以报告带宽、延迟抖动和数据包丢失。

3、WANem网损环境部署与测试场景

3.1、WANem网损环境部署

        部署的环境如下所示:

在两台PC上均安装要测试的客户端软件与iperf工具;若需要设置PC A端的客户端软件的上行(发送)丢包、延时、抖动,则选择eth0进行相关设置;若需要设置PC A端的客户端软件的下行(接收)丢包、延时、抖动,则选择eth1进行相关设置。

3.2、测试场景与测试参照

3.2.1、测试场景

       客户端A和客户端B之间进行点对点opus纯音频会议, 客户端A麦克风采集声音,扬声器静音; 客户端B扬声器播放声音,麦克风哑音。在 客户端B所在PC抓取数据包并对音频包进行分析。

注:opus没有丢包重传机制。

3.2.2、测试参照

       客户端的音频包发包间隔是固定的,每20ms发一个音频包,即每秒50包。未设置网络损伤的情况下抓包,得到音频包流量如下所示:

从上图可以看出,未设置网络损伤情况下,客户端的收包流量是每秒50包。‘

       Wireshark中丢包率统计如下所示:

从上图可以看到,未设置网络损伤情况下丢包率Lost RTP pacekets的统计结果0.00%,网络状况良好没有丢包。

       两台PC机上分别安装iperf工具,PC A运行iperf的客户端命令以768K的码率发udp包,PC B运行iperf的服务器端命令,统计网络状况的结果报告,未设置网络损伤情况下iperf工具测试网络结果如下所示:

 服务器端收到的udp包在每秒768K左右,Jitter值均为0.000ms表示无网络抖动,Datagrams均为0%表示无丢包,网络状况良好。

4、模拟网络损伤分析

4.1、丢包

        纯音频点对点OPUS会议,WANem模拟丢包20%,音频包流量:

图中,纵坐标代表每秒包的流量个数,可以看到丢包20%情况下,音频包流量曲线明显没有达到50的刻度,音频包流量在每秒50包以下。

       下面我们来看一下纯音频点对点OPUS会议,模拟丢包20%,Wireshark音频丢包统计:

从图中可以看到丢包率Lost RTP pacekets的统计结果20.55%,平均丢包率和设置的20%的丢包率非常接近。图中粉色底纹的条目为Wrong sequence number,结合前面的Sequence序号来看,出现Wrong sequence number的前面均有丢包情况,丢包1个到几个不等,丢包较随机,且没有突发丢包的情况出现,因此WANem模拟的丢包为随机丢包。

       iperf工具的丢包统计情况:

从上图看到,经过WANem后服务器端收包的Bandwidth明显减小,丢包率统计在12%~32%之间,丢包率统计值在20%左右较为集中。WANem模拟丢包没有造成网络抖动。

4.2、延时

4.2.1、单纯延时

       WANem单纯设置延时500ms,点对点OPUS纯音频会议,音频包流量统计:

音频包流量为一条直线,说明发包间隔较均匀,500ms的延时对所有包起作用。

两个音频包之间的平均时间间隔在20ms左右,波动很小。

       我们再看看单纯设置延时500ms,点对点OPUS纯音频会议,音频包Wrong Number的统计情况:

Lost RTP pacekets值为1,仅有一个Wrong sequence number是由于上一个包丢掉了造成的,没有乱序现象。

        iperf工具的测试结果如图4-2-4所示:

从上图中看到,经过WANem后服务器端收包的Bandwidth和768K较为接近,丢包率统计为0%,Jitter值均为0.000ms表示无网络抖动,单纯的WANem模拟延时不会造成网络抖动及丢包。

4.2.2、延时+抖动

       延时500ms,抖动10ms,点对点OPUS纯音频会议,流量统计:

音频包流量较平稳,在每秒50包上下浮动。两个包的每秒平均时间间隔如下图所示:

对比上面两个图发现,当设置延时500ms+抖动10ms的时候,两个包的每秒平均时间间隔的曲线比单纯设置500ms延时的情况波动略大,有轻微的抖动。

       下面我们再结合音频包Wrong Number统计看一下抖动10ms是否会造成包乱序现象,统计如下:

上图仅为截取的一段有代表性的统计结果,我们可以看到粉色底纹处的两个相邻的包Sequence号是连续的,但顺序是颠倒的,由此可知,延时500ms加10ms的抖动情况下没有造成丢包,但有乱序情况出现,乱序不严重,仅为偶尔的相邻的两个包做乱序。

       ipef工具统计的网络情况:

从上图中看到,经过WANem后服务器端收包的Bandwidth和768K较为接近,丢包率统计为0%,Jitter值均为10ms以内, WANem模拟延时500ms+抖动10ms的情况会造成轻微的网络抖动,不会造成丢包。

       如果加大抖动值,会出现怎样的乱序呢?是否会造成丢包呢?下面我们继续抓包分析。延时500ms,抖动400ms,点对点OPUS纯音频会议,包流量情况:

音频包流量较平稳,但比抖动值为10ms的情况,流量波动要严重一些。

对比上面两个图会发现,当设置延时500ms+抖动400ms的时候,两个包的每秒平均时间间隔的曲线比单纯设置抖动10ms的情况明显波动大,有明显的抖动。

       下面我们再结合音频包Wrong Number统计看一下抖动10ms会造成怎样的包乱序现象。

上图仅为截取的一段有代表性的统计结果,我们可以看到统计数据全部是粉色底纹,再来观察Sequence号发现顺序比较错乱,由此可知,延时500ms加400ms的抖动情况下包乱序情况较严重。

        ipef工具统计的网络情况如下:

从上图可以看到,经过WANem后服务器端收包的Bandwidth在700K左右到800K左右之间有波动,丢包率统计不为0%,Jitter值有较大的波动, WANem模拟延时500ms+抖动400ms的情况会造成严重的网络抖动。

5、总结

       从上面的测试,我们可以得到结论:

1)WANem模拟丢包为随机丢包,不会造成网络抖动、包的乱序;
2)WANem单纯模拟延时,针对所有经过的包加固定的延时值,不会造成网络的抖动、包的乱序;
3)WANem模拟延时+抖动的情况,抖动值设置越大(抖动值的设置小于延时值),网络的抖动越严重。

相关文章:

  • springboot毕设项目医院预约挂号系统ey211(java+VUE+Mybatis+Maven+Mysql)
  • 深入理解计算机系统,汇编的流程控制
  • 202206-2 CCF 寻宝!大冒险! (简单模拟 满分题解)
  • Linux 下基于cpr 开发 http 应用 : 通过编译安装cpr源码方式进行C++ 开发
  • Android初级工程师进阶教程
  • 【Python零基础入门篇 · 3】:掌握数值类型、进制的转换
  • 基于ssm的电动车实名制挂牌管理系统
  • 解锁新技能《Redis ACL SETUSER命令》
  • 1044 Shopping in Mars(二分)
  • 最大公约数——Hankson的趣味题(线筛法求质数+gcd+质因数组合搜索约数)
  • 华为云弹性云服务器有哪些优势?
  • word图片无法居中,原因可能是非嵌入式!
  • 腾讯云服务器与普通服务器区别在哪?如何选择?
  • Matlab:Matlab编程语言应用之数学计算(求极限/渐近线求导数常微分方程求解求微分方程组的解求临界阻尼系数的解)的简介、案例实现之详细攻略
  • 移动Web第一天 1 字体图标 2 平面转换 3 渐变
  • 3.7、@ResponseBody 和 @RestController
  • css系列之关于字体的事
  • Facebook AccountKit 接入的坑点
  • QQ浏览器x5内核的兼容性问题
  • 闭包--闭包之tab栏切换(四)
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 浅谈Golang中select的用法
  • 世界上最简单的无等待算法(getAndIncrement)
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • ​Python 3 新特性:类型注解
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • ​你们这样子,耽误我的工作进度怎么办?
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #1014 : Trie树
  • #微信小程序:微信小程序常见的配置传值
  • (二)springcloud实战之config配置中心
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (一) storm的集群安装与配置
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • ***利用Ms05002溢出找“肉鸡
  • .NET Core跨平台微服务学习资源
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .NET基础篇——反射的奥妙
  • .skip() 和 .only() 的使用
  • ;号自动换行
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)
  • [ 隧道技术 ] cpolar 工具详解之将内网端口映射到公网
  • [Android] Amazon 的 android 音视频开发文档
  • [CUDA 学习笔记] CUDA kernel 的 grid_size 和 block_size 选择
  • [LeetCode] Contains Duplicate
  • [LeetCode][面试算法]逻辑闭环的二分查找代码思路
  • [LeetCode]剑指 Offer 42. 连续子数组的最大和
  • [Linux] PXE批量装机