首页 > 系统相关 >使用tc命令模拟linux网络延迟环境

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

时间:2024-05-23 19:40:21浏览次数:25  
标签:qdisc linux 规则 延迟 tc 模拟 网络接口

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 服务中。但是,请注意,这样做可能会影响生产环境的网络性能。始终在测试环境中验证你的更改。

标签:qdisc,linux,规则,延迟,tc,模拟,网络接口
From: https://www.cnblogs.com/ydswin/p/18209214

相关文章

  • Linux学习笔记16---常用操作命令(free命令)
    free命令显示系统内存的使用情况,包括物理内存、虚拟内存(swap)和内核缓冲区内存。如果加上-h选项,输出的结果会友好很多:有时我们需要持续的观察内存的状况,此时可以使用-s选项并指定间隔的秒数:$free-h-s3上面的命令每隔3秒输出一次内存的使用情况,直到你按下ctr......
  • webrtc FEC 协议
    参考:https://www.cnblogs.com/ishen/p/15333271.htmlhttps://zhuanlan.zhihu.com/p/6034212391.生成1.1等待并筹齐多个原始包webrtc会等待筹齐多个rtp包后,再统一生成冗余包,参看UlpfecGenerator::AddPacketAndGenerateFec()函数:voidUlpfecGenerator::AddPacketAndGe......
  • Win11 Linux子系统安装失败错误代码0x800701bc解决方法
    Win11Linux子系统安装失败错误代码0x800701bc解决方法 报错提示:Installing,thismaytakeafewminutes…WslRegisterDistributionfailedwitherror:0x800701bcError:0x800701bcWSL2???https://aka.ms/wsl2kernelPressanykeytocontinue… 处理方法......
  • linux常用命令
     系统信息top实时显示系统进程和资源使用情况  top-10:40:36•系统当前时间up10days,35min•系统到目前为止已运行的时间1user•当前登录系统的用户数量loadaverage:0.39,0.35,0.48•系统负载(任务队列的平均长度),3个数值分别为1分钟、5分......
  • Linux 开启定时任务执行脚本
    接到领导一个需求,要把压缩包放到当天日期的目录下,所以需要每天生成一个当前日期的文件夹1、创建sh文件,我这边命名为zip.sh#!/bin/bashtime=$(date"+%Y-%m-%d")##获取当前时间并且格式化时间##切换到这个目录下cd/root/app/bankcard/zip/mkdir"${time}"##创建以时......
  • linux关闭numa
    以下内容在Centos8操作系统演示1、编辑/etc/default/grub2、在GRUB_CMDLINE_LINUX里添加numa=off3、输入命令grub2-mkconfig-o/boot/grub2/grub.cfg用更改的文件重新生成/boot/grub2/grub.cfg重启生效4、重启后查看cat/proc/cmdline再次确认......
  • Linux C++ IDE
    在linux下开发C++一般使用cmake,而我们也需要一个IDE来提高开发效率,之前使用过VSCode,这个需要装各种插件进行许多配置才能成为一个真正的IDE,后来知道了Clion是一个更好的选择。那么我们怎么使用呢?官网下载安装包,可以试用一个月,然后我们可以去淘宝买个共享帐号,我......
  • 在Linux中, 如何进行内存泄漏的诊断?
    在Linux中,诊断内存泄漏通常涉及几个步骤,包括监控内存使用情况、识别异常的内存消耗模式、定位可能的内存泄漏源以及分析相关代码。以下是一些常用的方法和工具:1.使用top或htop命令这些工具可以实时显示系统中进程的内存使用情况。top或者htop在这些工具中,可以按内存使用......
  • 在Linux中,SELinux是什么?
    SELinux(Security-EnhancedLinux)是一个强大的安全模块,它为Linux操作系统提供安全策略机制。SELinux是NSA(美国国家安全局)开发并开源的,目的是增强系统的安全性,通过强制访问控制(MandatoryAccessControl,MAC)来限制对资源的访问,从而保护系统免受未授权访问和潜在威胁。1.SELinux的主......
  • 在Linux中,如何管理服务?
    在Linux中,管理服务通常涉及启动、停止、重启和查看服务的状态。不同的Linux发行版可能使用不同的服务管理工具,以下是几种常见的服务管理方法:1.使用Systemd(最新版CentOS、Fedora、Ubuntu16.04+)Systemd是现代Linux发行版中用于初始化系统和管理服务的标准。查看服务状态:syst......