使用tc命令模拟linux网络延迟环境

tc,linux · 浏览次数 : 0

小编点评

**使用 tc 模拟网络延迟的步骤:** 1. **查看 qdisc 和 filter:** ```bash tc qdisc show dev <interface> ``` 2. **设置根 qdisc:** ```bash tc qdisc add dev <interface> root handle 1: htb3. ``` 3. **添加延迟规则:** ```bash tc qdisc add dev <interface> parent 1:1 netem delay 100ms. ``` 4. **验证设置:** ```bash ping -c 1 -W 10 ``` 5. **删除规则:** ```bash tc qdisc del dev <interface> root ``` **注意:** * 1:1 是一个子 qdisc 的句柄,用于应用特定的规则。 * htb qdisc 是层次化令牌桶,允许设置更复杂的规则。 * 此步骤仅用于简单的网络延迟模拟,在生产环境中可能需要考虑其他因素。

正文

tc(Traffic Control)是 Linux 中用于流量控制和网络模拟的强大工具。你可以使用它来模拟网络延迟、带宽限制、数据包丢失等。

以下是一个使用 tc 模拟网络延迟的基本步骤:

1.查看当前的 qdisc(队列规则)和 filter(过滤器)

首先,确保你的网络接口没有设置任何 qdisc。你可以使用以下命令查看:

tc qdisc show dev <interface>

其中 <interface> 是你的网络接口名称,如 eth0

2. 设置根 qdisc

为了应用 tc 规则,你需要在网络接口上设置一个 qdisc。最常用的 qdisc 是 handleroot,但在这里我们将使用 htb(层次化令牌桶)作为示例,因为它允许我们设置更复杂的规则(尽管对于简单的延迟模拟,这并不是必需的)。

tc qdisc add dev <interface> root handle 1: htb

3. 添加延迟规则

现在,你可以添加一个延迟规则。假设你想为所有从 <interface> 发送的数据包添加 100ms 的延迟:

tc qdisc add dev <interface> parent 1:1 netem delay 100ms

注意:上面的命令中,1:1 是一个子 qdisc 的句柄。在 htb qdisc 下,我们通常使用这种子 qdisc 来应用特定的规则。但是,对于简单的延迟模拟,你也可以直接使用 root qdisc,即:

tc qdisc change dev <interface> root netem delay 100ms

4. 验证设置

你可以使用 ping 或其他网络工具来验证延迟是否已应用。

5. 删除规则

当你完成模拟并希望删除这些规则时,可以使用以下命令:

tc qdisc del dev <interface> root

这将删除网络接口上的所有 qdisc 和相关的规则。

6. 注意

tc 规则在重启或网络接口重新加载后将失效。如果你希望这些规则在重启后仍然生效,你可能需要考虑将它们添加到启动脚本或 systemd 服务中。但是,请注意,这样做可能会影响生产环境的网络性能。始终在测试环境中验证你的更改。

与使用tc命令模拟linux网络延迟环境相似的内容:

使用tc命令模拟linux网络延迟环境

tc(Traffic Control)是 Linux 中用于流量控制和网络模拟的强大工具。你可以使用它来模拟网络延迟、带宽限制、数据包丢失等。 以下是一个使用 tc 模拟网络延迟的基本步骤: 1.查看当前的 qdisc(队列规则)和 filter(过滤器) 首先,确保你的网络接口没有设置任何 qdi

[转帖]使用 tc netem 模拟网络异常

https://cizixs.com/2017/10/23/tc-netem-for-terrible-network/ 在某些情况下,我们需要模拟网络很差的状态来测试软件能够正常工作,比如网络延迟、丢包、乱序、重复等。linux 系统强大的流量控制工具 tc 能很轻松地完成,tc 命令行是 ipr

高并发场景下,如何优化服务器的性能

摘要:tcp_nodelay参数主要是对TCP套接字来说的,那对于服务器硬件,如果要使其能够支撑上百万甚至上千万的并发,我们该如何对其进行优化呢? 本文分享自华为云社区《【高并发】高并发场景下如何优化服务器的性能?》,作者: 冰 河 。 写在前面 最近,有小伙伴在群里提问:Linux系统怎么设置tc

使用Cloudflare Worker加速docker镜像

前言 开发者越来越难了,现在国内的docker镜像也都️了,没有镜像要使用docker太难了,代理又很慢 现在就只剩下自建镜像的办法了 GitHub上有开源项目可以快速搭建自己的镜像库,不过还是有点麻烦,还好Cloudflare暂时还活着‍ 本文记录一下使用 Cloudf

使用C#/.NET解析Wiki百科数据实现获取历史上的今天

创建一个webapi项目做测试使用。 创建新控制器,搭建一个基础框架,包括获取当天日期、wiki的请求地址等 创建一个Http请求帮助类以及方法,用于获取指定URL的信息 使用http请求访问指定url,先运行一下,看看返回的内容。内容如图右边所示,实际上是一个Json数据。我们主要解析 大事记 部

Pybind11和CMake构建python扩展模块环境搭建

使用pybind11的CMake模板来创建拓展环境搭建 从Github上下载cmake_example的模板,切换分支,并升级pybind11子模块到最新版本 拉取pybind11使用cmake构建工具的模板仓库 git clone --recursive https://github.com/mr

说说RabbitMQ延迟队列实现原理?

使用 RabbitMQ 和 RocketMQ 的人是幸运的,因为这两个 MQ 自身提供了延迟队列的实现,不像用 Kafka 的同学那么苦逼,还要自己实现延迟队列。当然,这都是题外话,今天咱们重点来聊聊 RabbitMQ 延迟队列的实现原理,以及 RabbitMQ 实现延迟队列的优缺点有哪些? 很多人

使用FModel提取游戏资产

目录前言FModel简介FModel安装FModel使用初次使用资产预览资产导出附录dumperDumper-7生成usmap文件向游戏中注入dll 前言 这篇文章仅记录我作为初学者使用FModel工具提取某款游戏模型的过程。 FModel简介 FModel是一个开源软件,可以用于查看和提取UE4-

使用GSAP制作动画视频

GSAP 3Blue1Brown给我留下了深刻印象。利用动画制作视频,内容简洁,演示清晰。前两天刚好碰到一件事,我就顺便学习了一下怎么用代码做动画。 以javascrip为例,有两个动画引擎,GSAP和Animajs。由于网速的原因,询问了GPT后,我选择了GSAP来制作我的第一个动画视频。 制作动

使用ML.NET训练一个属于自己的图像分类模型,对图像进行分类就这么简单!

前言 今天大姚给大家分享一个.NET开源、免费、跨平台(支持Windows、Linux、macOS多个操作系统)的机器学习框架:ML.NET。并且本文将会带你快速使用ML.NET训练一个属于自己的图像分类模型,对图像进行分类。 ML.NET框架介绍 ML.NET 允许开发人员在其 .NET 应用程序