linux环境下模拟延时和丢包实现--tc(代码片段)

七月的小尾巴 七月的小尾巴     2022-12-25     671

关键词:

前言

在性能测试过程中,我们还需要模拟网络异常的情况下,是否会出现一些异常数据。最常见的就是写库操作,比如说我们下单的场景,如果出现网络异常的时候是否会出现数据对不上这种情况。

如我们JMeter发送成功的请求数量和最终数据库表中存入下单的数据对不上,通常在网络异常的情况下会出现这种情况,因为通常很多框架都会存在重试的功能,比如APP在向服务端发送网络请求,那么在这个请求的过程中网络不稳定,一直没有得到响应,那么APP会重试,但是出现这种情况下,我们就需要考虑是否会出现重复下单,生成两笔订单的情况。通常我们服务端通常会有一定的机制处理这种情况,但是我们需要去测试服务端这种机制是否生效。

tc工具的介绍

通常我们是在应用服务器上使用tc工具模拟网络丢包。tc工具是工作在服务端的,是专门针对网卡来进行一些相关的策略的。比如当我们请求传到网卡的时候,其实这个时候请求还没有到程序里面,那我们可以在网卡出来的时候加长延时时间或者丢包。

Linux中模拟延时和丢包

在模拟丢包之前,我们现在看一下我们机器的网卡,可以看到我们的网卡是 eth0

然后我现在在本机上ping我们的应用服务器,确认网络正常。

1、此时我们设置延时,其中 eth0 是我们的网卡名称,下面的命令实现了给 eth0 口发包时添加 30ms 的延时。

tc qdisc add dev eth0 root netem delay 30ms 

设置延时之后,此时我们可以看到时间已经在40ms左右了。

2、显示延时的设置


3、修改延时

tc qdisc change dev eth0 root netem delay 40ms 


4、删除延时配置

tc qdisc del dev eth0 root netem delay 40ms

可以看到删除延时之后,时间有恢复在10ms左右了。

模拟丢包

1、设置丢包

tc qdisc add dev eth0 root netem loss 10%

再看可以发现已经出现丢包的情况了

如果你是通过 SSH 登陆设备进行配置丢包的话,配置完这条命令就会感觉到机器访问时有点一卡一卡的。这说明,设备已经开始丢包了,可以通过具体抓包查看。

其他诸如修改、查看、删除的命令,都可以参考上面延时的设置。

markdown使用tc命令模拟网络延迟和丢包(代码片段)

查看详情

如何在linux下使用tc优雅的实现网络限流

...之为数据整形,shapethedata,包括对数据的以下操作:增加延时丢包重新排列重复、损坏速率控制在qdisc-class-filter结构下,对流量进行控制需要进行三个步骤:创建qdisc队列上面提到Linux是通过包的排队进行流量的控制,那么首先得有... 查看详情

tc和netem模拟动态网络(代码片段)

        Netem是Linux2.6及以上内核版本提供的一个网络模拟功能模块。该功能模块可以用来在性能良好的局域网中,模拟出复杂的互联网传输性能。例如:低带宽、传输延迟、丢包等等情况。        TC是Linux系统中的一... 查看详情

如何在windows环境下模拟丢包

[本文出自天外归云的博客园]Q&AQuestion:HowtosimulatepacketlossonWindows?Answer:Clumsy,anutilityforsimulatingbrokennetworkforWindows. 事实上,你在google上搜索上面的问答内容,就可以搜索到更多关于如何在Windows上模拟丢包的方法。而我,选择... 查看详情

用iperf3测试网络带宽和丢包

参考技术A用iperf3测试网络带宽和丢包具体步骤如下: 查看详情

renix如何查看时延和抖动和丢包——网络测试仪实操

查看时延和抖动​一、预约测试资源​打开Renix软件,连接机箱,预约端口​二、新建流​选中流模板,点击“新建流”,创建2条流,port1和port2相互发流​点击“发送所有流”​三、查看时延和抖动​默认情况下“统计2”StreamBlo... 查看详情

收集tcp端口的访问延迟和丢包率

需求:   找一款工具可以对TCP80端口收集访问延迟和丢包率找到的工具:   1、Hping: http://www.hping.org/   2、paping:https://docs.azure.cn/zh-cn/articles/azure-operations-guide/virtual- 查看详情

千兆以太网卡吞吐量和丢包率优化总结

...兆,并且丢包率很高。最近我做了一些以太网吞吐量和丢包率方面的优化工作,有一些心得和大家分享一下。一、测试模型 二、影响吞吐量和丢包率的因素1.网卡DMA缓冲区大小  这个缓冲区决定txringbuffer和rxringbuffer的大... 查看详情

javasocket编程解决粘包和丢包问题

##socket丢包粘包解决方式采用固定头部长度(一般为4个字节),包头保存的是包体的长度header+body包头+包体 思路是:先读出一个包头,得到包体的长度,解析出包体 publicclassSocketServer{publicstaticvoidmain(Stringargs[]){ServerSockets... 查看详情

为什么tcp在高时延和丢包的网络中传输效率差?

说明:有同学私信问到,为什么TCP在高时延和丢包的网络中传输效率差?Google可以搜到很多的信息,这里转译了部分IBMAsperafasp技术白皮书的第一章节内容,作为参考。-在这个数字世界中,数字数据的快速和可靠移动,包括全球范... 查看详情

《linux从0到99》六进程概念下(代码片段)

...危害3.进程优先级01PRIandNI02PRIvsNI查看进程优先级的命令4.环境变量01为什么需要环境变量(环境变量的概念)02常见环境变量03如何查看环境变量04环境变量相关命令05环境变量的组 查看详情

弱网测试:使用netem模拟网络延迟丢包损坏重复和乱序等网络问题(代码片段)

...;报文延时分布满足正态分布2、丢包率---loss2.1、enp2s0网卡模拟发送的报文有16%的丢包率2.2、enp2s0网卡模拟发送的报文使用lossstate/lossgemodel模型进行丢包2.3、enp2s0网卡模拟发送的报文选用lossstate/lossgemodel模型进行丢包时的enc选项3... 查看详情

混沌工程之chaosmesh使用之模拟pod网络丢包(代码片段)

...aosMesh的网络丢包,看一下有没有新鲜的玩意。前面的环境部分,我就不再重复了,你可以去看下前面的文章,如果不出意外,我们的环境都是不会改变的。所以我们现在就直接进入操作步骤。模拟POD产生丢包... 查看详情

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

...介2、使用WANem工具时需要用到的其他辅助工具3、WANem网损环境部署与测试场景3.1、WANem网损环境部署3.2、测试场景与测试参照4、模拟网络损伤分析4.1、丢包4.2、延时5、总结    WANem工具可以对网络损伤进行模拟,该工具在... 查看详情

混沌工程之chaosmesh使用之模拟pod网络丢包(代码片段)

...aosMesh的网络丢包,看一下有没有新鲜的玩意。前面的环境部分, 查看详情

千兆以太网卡吞吐量和丢包率优化总结

...兆,并且丢包率很高。最近我做了一些以太网吞吐量和丢包率方面的优化工作,有一些心得和大家分享一下。一、测试模型 二、影响吞吐量和丢包率的因素1.网卡DMA缓冲区大小  这个缓冲区决定txringbuffer和rxringbuffer的大... 查看详情

c语言用定时器模拟多线程

TC并不直接支持多线程。事实上,dos下只能模拟多线程。听书可以用一个定时器完成调度问题。请问什么是定时器,怎么实现呢?能不能给点提示,或代码参考技术A定时器,就是延时.我看看我以前编的还在不?要是在的话,我就给... 查看详情

弱网测试

...要针对这些场景,去关注一下软件的运行状态。以及弱网环境下,出现丢包、延时软件的处理机制。避免造成用户的流失。测试关注点用户体验  APP使用过程中,弱网的高延迟和高丢包,在实时性要求非常高的场景,容易伤害... 查看详情