实验原理

网络链路拥塞是指在分组交换网络中传送分组的数目太多时,由于存储转发节点的资源有限而造成网络传输性能下降的情况。当网络发生拥塞时,一般会出现数据丢失,时延增加,吞吐量下降,严重时甚至会导致“拥塞崩溃”。通常情况下,当网络中负载过度增加致使网络性能下降时,就会发生网络拥塞。

因此,根据这些特征,构建了一个网络拓扑(SDN网络拓扑,普通拓扑也行,但是我这是构建的SDN架构,为了方便我后续的学习),设计了一种逐渐增加链路中发送的数据包,从而观察各个主机的丢包率和链路带宽的情况。

实验设备:2台Ubuntu虚拟机(普通网络拓扑一也行,这里的两台主要是有一台运行远程ryu控制器)

实验软件:mininet、ovs(普通拓扑不需要)、iperf、wireshark

实验步骤

1、构建网络拓扑

实验中,使用mininet进行网络拓扑构建,为了方便我使用的是可视化界面miniedit(mininet的具体使用方法见前几篇博客),拓扑图如下

根据上图,构建了一个SDN架构的网络拓扑,一共有7台主机连接到一个ovs交换机(普通网络拓扑可以不要控制器,使用普通的交换机,也就是左边的蓝色方形的交换机)。主机1-主机7的IP地址分别为10.0.0.1~10.0.0.7,此外,为了能够使链路可以拥塞,设置各个链路的带宽为1Mbit/s,链路设置中还有其他参数也可以根据情况进行设置。(链路的可选设置self.addLink( node1, node2, bw=10, delay='5ms', max_queue_size=1000, loss=10, use_htb=True): adds a bidirectional link with bandwidth, delay and loss characteristics, with a maximum queue size of 1000 packets using the Hierarchical Token Bucket rate limiter and netem delay/loss emulator. The parameter bw is expressed as a number in Mbit; delay is expressed as a string with units in place (e.g. '5ms', '100us', '1s'); loss is expressed as a percentage (between 0 and 100); and max_queue_size is expressed in packets.)。至于控制器和OVS的设置不是本节实验的重点,可以见之前的博客描述进行设置。

2、测试原始链路带宽

拓扑构建完成后,就可以运行拓扑了,然后打开主机1~主机7的xterm终端。本实验将主机7作为服务端,主机1~6作为客户端对其进行访问。测试原始带宽,即测试链路中没有数据传输时的各个主机访问主机7时的带宽,使用的工具为iperf,安装过程自行查找。

(1)在h7的终端中输入命令iperf -s -p 5566 -i 1开启服务,即在h7的终端中,将h7设为服务器server,设置端口为5566,间隔时间1s。

(2)分别在h1-h6的终端中输入命令iperf -c 10.0.0.7 -p 5566 >> host_link_bandwidth_before.txt,也就是分别在h1-h6去访问h7,将链路的带宽的数据记录在host_link_bandwidth_before.txt文件中,这个文件提前在/mininet/examples目录下建好了,>>即Linux的重定向命令,具体的使用可以自行查找。下图显示了h1-h6执行命令完成后,输入命令cat  host_link_bandwidth_before.txt查看文件的内容。

根据上图可以看出h1~h6和h7之间的链路带宽基本维持在1Mbit/s左右,基本符合前面对链路带宽的设置。

3、测试链路有数据时的链路带宽(2的对照实验)

为了更好的观察不同的数据密度下链路带宽的变化,实验主要统计h1和h7之间的链路带宽变化,以h2~h6这5个主机作为数据发送端,逐渐以1~5个主机发送ping泛洪数据为链路数据,记录h1和h7之间的链路带宽,即1,2,3,4,5个主机泛洪攻击主机7时,主机1到主机7链路的带宽变化。在h1的终端中输入命令iperf -c 10.0.0.7 -p 5566 >> host_bandwidth_after.txt,即h1访问h7,将测试带宽的结果写入文件host_bandwidth_after.txt中。下图从上倒下依次显示了,有1~5个主机对主机7进行泛洪时,主机1和主机7之间的链路带宽测试数据。

根据上图的结果可以看出带宽从924kbit/s逐渐下降到227kbit/s。

4、测试原始链路各个主机访问主机7的丢包率和时延

此步让各个主机分别发送icmp请求报文到主机7,即各个主机 ping 主机7。分别在h1~h6的终端中输入命令ping 10.0.0.7 >> host_ping_result_before.txt,即将主机ping h7的结果输出到文件host_ping_result_before.txt中。下图显示了h1 ping h7,并且显示了各个主机ping操作完成后的 host_ping_result_before.txt 里面的数据。

根据上图的结果,可以看出在每个主机单独 ping 主机7时丢包率基本为0,说明链路的质量较好,没有发生拥塞。

5、测试链路有数据时的数据丢包率(3的对照实验)

这一步,以h7作为服务端,h1作为数据测试端,在h1的终端中输入ping -f 10.0.0.7 >> host_pingflood_result_after.txt测试h1到h7的数据丢包率,ping -f即不断的对服务端进行ping操作。测试分别在h2~h6逐渐增多发送数据的情况下统计数据,即当链路中只有h1和h2对h7发送数据时输出一次h1和h7的丢包率测试结果,链路中有h1,h2,h3主机访问h7时输出h1和h7的丢包率测试结果,依次进行当6台主机都ping泛洪h7时,输出h1 ping h7的结果。下图第一个是h1和h2同时对h7进行ping泛洪,第二个图是h1丢包率的测试结果,第三个图是依次1-6个主机同时对h7进行ping泛洪时h1丢包率的测试结果。

根据上图结果,可以看出丢包率随着链路数据的逐渐增多而逐渐升高,说明了链路拥塞就会造成数据的丢包情况加剧。

截止此时,实验已经可以看出链路拥塞带来的数据传输的影响,为了有更好的说服力,接下来使用wireshark进行抓包分析。

6、wireshark抓包

安装wireshake自行查找相关的知识。对于wireshark的过滤器的操作参考https://blog.csdn.net/csdnhxs/article/details/80941842。

具体也就是分别在h1和h7的终端上输入命令sudo wireshark & 启动wireshark对数据进行抓包,h1中的wireshark抓h1 ping h7的数据包,h7中的wireshark抓h1 ping h7的数据包。

根据上图结果,可以看出h1发送了4113个icmp请求报文给h7,但是h7只收到了3743个请求报文,说明链路拥塞对数据传输产生了很大的影响。

利用mininet进行链路拥塞造成数据丢包的实验相关推荐

  1. K8S集群中Pod资源数据丢包排查思路

    K8S集群中Pod资源数据丢包排查思路 Pod资源可能会由于网络原因产生丢包的现象. 当Pod资源存在丢包的现象时,会出现下面的报错: Connect to 100.111.156.74 port 5 ...

  2. 服务器数据丢包是什么原因?服务器丢包怎么解决?

    服务器数据丢包是什么原因?服务器丢包怎么解决? 相信大家在服务器租用的使用过程中,往往会遇到数据丢包的情况,造成网站的延时或者访问打不开的情况,给用户造成了很大一些困恼,那么服务器数据丢包是什么原因造 ...

  3. 数据丢包怎么修复_一种网络传输中实时音频数据丢包恢复的方法与流程

    本发明涉及通信技术领域,具体涉及一种网络传输中实时音频数据丢包恢复的方法. 背景技术: 随着通信技术的发展,音频传输系统对实时性和准确性的要求越来越高.在网络的音频传输过程中,影响音频音质的主要因素是 ...

  4. Udp数据丢包测试--iperf3

    1.背景 近期需要用UDP来传输大量数据,为了避免出现大量丢包,所以需要对UDP数据丢包进行测试.推动开发减少丢包率. 2.环境 目前demo测试使用的环境是windows环境(后期如有要求可以改为l ...

  5. 数据丢包怎么修复_交换机发生网络通信故障怎么解决?

    交换机故障一般可以分为硬件故障和软件故障两大类,交换机虽然不常发生故障,但是一旦发生故障后都不太好检测与排除.那么,当交换机发生网络通信故障了该怎么办呢?今天就由飞畅科技的小编来给大家说说交换机网络通 ...

  6. 数据丢包怎么修复_网络丢包率如何解决

    网络丢包率如何解决 网络丢包是我们在使用 ping (检测某个系统能否正 常运行) 对目站进行询问时, 数据包由于各 种原因在信道中丢失的现象. ping 使用了 ICMP 回送请求与回送回答报文. ...

  7. 数据丢包怎么修复_网络丢包怎么办?这些解决办法不得不知

    在做弱电项目中,我们经常会出现网络比较卡.监控有几路画面不显示.网络时正常,时不正常等问题,这些故障大部分情况下是跟网络丢包有关,今天我们来看下,网络丢包怎么办,常见故障分析及处理方式. 当网络有问题 ...

  8. UDP 分片 与 丢包,UDP 真的比 TCP 高效吗?

    关注.星标公众号,直达精彩内容 素材来源:https://blog.csdn.net/LearnLHC/article/details/115268028 整理:技术让梦想更伟大 | 李肖遥 一.UD ...

  9. UDP 分片 与 丢包,UDP 真的比 TCP 高效吗?UDP 的应用场景

    目录 一.UDP 报文格式 二.UDP 分片 1.UDP 有发送缓存区吗? 1>.先说结论: 2>.逐步分析: 2.UDP 分片 1>.UDP 包最佳传输大小 2>.分片问题 ...

最新文章

  1. 浅谈android中的目录结构
  2. php和python哪个用了开发web好-php与python谁更适合web开发?为什么?
  3. bytebuf池_Netty默认的Bytebuf是堆内还是堆外?池化or非池化?
  4. wxWidgets:wxWindowUpdateLocker类用法
  5. 升级tomcat7.0之后的问题
  6. 用计算机算出鞋子的鞋码,【鞋子尺码对照】鞋子尺码怎么算_鞋子尺码怎么量 - 妈妈网百科...
  7. Tensorflow相关面试题
  8. WebSocket 详解教程
  9. 【Computer Organization笔记06】浮点数的数据表示,浮点数加减运算
  10. Vue 新手引导标签
  11. 3.2 Tensorflow基础运算
  12. Svn装到eclipse
  13. sublime text3 快捷方式汇总
  14. 单细胞数据高级分析之初步降维和聚类 | Dimensionality reduction | Clustering
  15. ]Vi/Vim查找替换使用方法
  16. html table冻结首行,Html Table的首行和首列冻结效果
  17. StarRocks 社区一周年:极速统一,感谢遇见!
  18. html图片自适应裁剪,html 图片裁剪 图片固定高度 图片自适应。图片完美适配
  19. 如何改typecho主题头像_细节决定成败,抖音昵称、头像、简介、视频封面的重要性...
  20. 我所知道的专业搜索引擎

热门文章

  1. 简洁,简单,再简化...
  2. 后端技术 - 收藏集 - 掘金
  3. 程序员面试时应该知道的福利待遇
  4. [正则表达式] 匹配空行、空白行
  5. python boxplot 画盒须图
  6. 在ICT圈子找非研发工作
  7. 评估指标(Metric)(一)
  8. 僕が死のうと思ったのは——中岛美嘉
  9. 一个优秀IT专家的成长历程-献给所有的颓废或即将颓废的人们
  10. 实时时间(24小时制)