liunx模拟网络延迟、丢包----tc命令

TC(traffic control)命令介绍

TC是linux自带的模块,一般不需要安装。tc 命令提供了一个非常灵活和强大的接口,可以用来实现各种复杂的网络流量控制和管理策略。广泛应用于网络性能优化、网络模拟测试、服务质量保证等场景。

主要功能

流量整形(Traffic Shaping):

    限制网络接口的带宽
    控制网络数据包的出口速率
    管理网络拥塞

流量监控(Traffic Monitoring):

    收集网络流量统计信息
    跟踪网络数据包的传输情况

网络模拟(Network Emulation):

    模拟延迟、丢包、乱序等网络异常情况
    测试应用程序在各种网络环境下的表现

数据包分类(Packet Classification):

    根据数据包的特征进行分类
    为不同类型的数据包应用不同的策略

tc 命令的基本语法

tc [options] object [command] [arguments]

object 表示要管理的网络对象,如 qdisc(排队规则)、class(流量分类)、filter(过滤器)等
command 则是要执行的操作,如 add、delete、change 等
arguments 是针对不同 object 和 command 的具体参数。

tc qdisc: 管理排队规则
    add: 添加排队规则
    change: 修改排队规则
    replace: 替换排队规则
    delete: 删除排队规则
tc class: 管理流量类别
    add: 添加流量类别
    change: 修改流量类别
    replace: 替换流量类别
    delete: 删除流量类别
tc filter: 管理过滤规则
    add: 添加过滤规则
    change: 修改过滤规则
    replace: 替换过滤规则
    delete: 删除过滤规则

示例

模拟延迟传输: tc qdisc add dev eth0 root netem delay 100ms

模拟网络丢包: tc qdisc add dev eth0 root netem loss 1%

查看流量管理:tc qdisc show eth0

删除指定规则:
tc qdisc del dev eth0 root netem delay 100ms
tc qdisc del dev eth0 root netem loss 1%

删除指定类型的所有规则:
tc qdisc del dev eth0 root netem (netem: 删除所有 netem 类型的排队规则,而不是指定某个具体的规则)

详细解释:
    tc qdisc add: 添加一个新的排队规则(Queueing Discipline)
    tc qdisc del: 删除指定的排队规则
    dev eth0: 指定要操作的网络设备是 eth0
    root: 表示这是根级别的排队规则
    netem: 是一种特殊的排队规则,用于模拟网络状况
    delay 100ms: 为网络流量添加 100 毫秒的延迟
    loss 1%:为网络流量添加1%的丢包率

TC模拟网络延迟、丢包常用命令

网络延迟

模拟延迟传输:
tc qdisc add dev eth0 root netem delay 100ms

该命令将 eth0 网卡的传输设置为延迟 100 毫秒发送,更真实的情况下,延迟值不会这么精确,会有一定的波动,后面用下面的情况来模拟出带有波动性的延迟值

模拟延迟波动:
tc qdisc add dev eth0 root netem delay 100ms 10ms

该命令将 eth0 网卡的传输设置为延迟 100ms ± 10ms (90 ~ 110 ms 之间的任意值)发送。 还可以更进一步加强这种波动的随机性

延迟波动随机性:

该命令将 eth0 网卡的传输设置为 100ms ,同时,大约有 30% 的包会延迟 ± 10ms 发送。
tc qdisc add dev eth0 root netem delay 100ms 10ms 30%

丢包

模拟网络丢包:
tc qdisc add dev eth0 root netem loss 1%
该命令将 eth0 网卡的传输设置为随机丢掉 1% 的数据包

网络丢包成功率:
tc qdisc add dev eth0 root netem loss 1% 30%
该命令将 eth0 网卡的传输设置为随机丢掉 1% 的数据包,成功率为 30%

包重复、损坏、乱序

模拟包重复:
tc qdisc add dev eth0 root netem duplicate 1%
该命令将 eth0 网卡的传输设置为随机产生 1% 的重复数据包

模拟包损坏:
tc qdisc add dev eth0 root netem corrupt 0.2%

该命令将 eth0 网卡的传输设置为随机产生 0.2% 的损坏的数据包 。 (内核版本需在 2.6.16 以上)

模拟包乱序:
tc qdisc change dev eth0 root netem delay 10ms reorder 25% 50%

该命令将 eth0 网卡的传输设置为:有 25% 的数据包(50%相关)会被立即发送,其他的延迟10 毫秒。

查看配置

查看网卡配置:
tc qdisc show dev eth0
该命令将 查看并显示 eth0 网卡的相关传输配置

查看丢包率:
tc -s qdisc show dev eth0

删除配置

删除相关配置(将之前命令中的 add 改为 del 即可删除配置):
tc qdisc del dev eth0 root netem delay 100ms

要删除所有的qdisc(排队规则)
tc qdisc add dev eth0 root

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值