使用tc命令模拟linux网络延迟环境
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 服务中。但是,请注意,这样做可能会影响生产环境的网络性能。始终在测试环境中验证你的更改。
本文来自博客园,作者:dashery,转载请注明原文链接:https://www.cnblogs.com/ydswin/p/18209214
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
· DeepSeek本地性能调优
· 一文掌握DeepSeek本地部署+Page Assist浏览器插件+C#接口调用+局域网访问!全攻略