LINUX 网速限制¶
限制网速
使用以下命令来限制网络速度,将 eth0 替换为你的网络接口名称,1000kbit 替换为你想要限制的速度(以 kbit 为单位):
这个命令将网络接口 eth0 的速度限制为 1000 kbit/s,允许最大突发速率为 32 kbit,并且设置了 400 毫秒的延迟。
请注意,这个速度限制会在重启后失效,如果你想要在系统重新启动后保持限制,可以将上述命令添加到系统启动脚本中,或者使用类似 tc 的工具来创建持久性的速度限制规则。
要取消在Linux上设置的网络速度限制,你可以使用以下命令:
请确保将 eth0 替换为你之前设置速度限制的网络接口名称。这个命令会删除之前设置的速度限制规则,恢复到默认的网络速度设置。
解释¶
tc 命令是Linux系统上用于配置 Traffic Control (流量控制) 的工具,它允许你管理和控制网络流量的各个方面,包括带宽限制、队列管理、延迟控制等。tc 是 “Traffic Control” 的缩写,通常用于管理网络带宽,以确保网络资源公平地分配给不同的应用程序或服务。
以下是一些常用的 tc 命令选项和其功能的详细解释:
-
qdisc(队列调度器):队列调度器用于管理数据包的排队和调度。你可以在网络接口上设置不同类型的队列调度器,以控制流量的排队和调度方式。 -
add:add命令用于添加一个新的流量控制规则。你可以使用它来创建一个新的队列调度器或类别,并定义相关的参数。 -
dev:dev选项指定要配置的网络接口,例如,eth0表示以太网接口。 -
root:root类别是顶层的类别,用于组织和管理其他子类别或队列。你可以将流量控制规则附加到root类别,然后添加子类别来实现不同的流量控制策略。 -
tbf(Token Bucket Filter):tbf是一种队列调度器,用于实现带宽限制。它基于令牌桶算法,控制通过接口的数据包速率。 -
rate:rate选项用于指定带宽速率,通常以比特每秒(bps)或千比特每秒(kbps)为单位。它定义了数据包通过接口的速率上限。 -
burst:burst选项定义了令牌桶的容量,即允许突发流量的大小。如果流量超出速率限制,允许一定数量的数据包通过,但超过这个值后将被限制。 -
latency:latency选项用于指定延迟时间,以模拟延迟或控制数据包的传输延迟。
rate:限制带宽速率。 ceil:限制带宽峰值速率。 burst:限制突发流量大小。 cburst:限制类别突发流量大小。
总之,tc 命令允许系统管理员配置网络接口上的流量控制规则,以满足特定需求,如限制带宽、管理队列和控制延迟。这对于确保网络资源的公平共享以及优化网络性能非常有用。根据你的需求,你可以使用不同的队列调度器和参数来实现不同类型的流量控制策略。
1)模拟延迟传输:
tc qdisc add dev eth0 root netem delay 100ms
该命令将 eth0 网卡的传输设置为延迟 100 毫秒发送,更真实的情况下,延迟值不会这么精确,会有一定的波动,后面用下面的情况来模拟出带有波动性的延迟值
2)模拟延迟波动:
tc qdisc add dev eth0 root netem delay 100ms 10ms
该命令将 eth0 网卡的传输设置为延迟 100ms ± 10ms (90 ~ 110 ms 之间的任意值)发送。 还可以更进一步加强这种波动的随机性
3)延迟波动随机性:
该命令将 eth0 网卡的传输设置为 100ms ,同时,大约有 30% 的包会延迟 ± 10ms 发送。
tc qdisc add dev eth0 root netem delay 100ms 10ms 30%
4)模拟网络丢包:
tc qdisc add dev eth0 root netem loss 1%
该命令将 eth0 网卡的传输设置为随机丢掉 1% 的数据包
5)网络丢包成功率:
tc qdisc add dev eth0 root netem loss 1% 30%
该命令将 eth0 网卡的传输设置为随机丢掉 1% 的数据包,成功率为 30%
6)删除相关配置(将之前命令中的 add 改为 del 即可删除配置):
tc qdisc del dev eth0 root netem delay 100ms
7)模拟包重复:
tc qdisc add dev eth0 root netem duplicate 1%
该命令将 eth0 网卡的传输设置为随机产生 1% 的重复数据包
8)模拟包损坏:
tc qdisc add dev eth0 root netem corrupt 0.2%
该命令将 eth0 网卡的传输设置为随机产生 0.2% 的损坏的数据包 。 (内核版本需在 2.6.16 以上)
9)模拟包乱序:
tc qdisc change dev eth0 root netem delay 10ms reorder 25% 50%
该命令将 eth0 网卡的传输设置为:有 25% 的数据包(50%相关)会被立即发送,其他的延迟10 秒。
新版本中,如下命令也会在一定程度上打乱发包的次序:> tc qdisc add dev eth0 root netem delay 100ms 10ms
10)查看网卡配置:
tc qdisc show dev eth0
该命令将 查看并显示 eth0 网卡的相关传输配置
11)查看丢包率:
tc -s qdisc show dev eth0