使用tc命令可实现Linux网络带宽限制。首先确认安装iproute2包,利用tc qdisc添加HTB调度器限制出方向带宽,如限制eth0为1Mbps;通过ingress qdisc和police动作控制入方向流量;使用netem模拟延迟与丢包;最后用tc qdisc del或flush清除规则。掌握qdisc、class、filter关系,适用于测试与资源隔离场景。

在Linux中限制网络带宽,可以使用
tc
(Traffic Control)命令,它是Linux内核中流量控制的核心工具,配合
netem
、
htb
等调度器,可实现精确的带宽限制、延迟、丢包等网络行为控制。下面通过几个实用的
tc
限速配置实例,帮助你快速掌握如何在Linux中进行带宽限制。
1. 安装和确认tc工具
大多数Linux发行版默认已安装
tc
,它属于
iproute2
包。可通过以下命令确认:
tc -version
如果没有安装,在Debian/Ubuntu系统上执行:
sudo apt install iproute2
在CentOS/RHEL上执行:
sudo yum install iproute
2. 限制指定网卡的出方向带宽(egress)
使用HTB(Hierarchical Token Bucket)调度器限制
eth0
网卡的出方向带宽为1Mbps:
sudo tc qdisc add dev eth0 root handle 1: htb default 10sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit
说明:
qdisc add
添加一个队列规则
dev eth0
指定作用网卡
root
表示这是根队列
handle 1:
是该队列的标识
htb
使用分层令牌桶算法
classid 1:1
创建一个类,限制速率为1mbit
验证配置:
tc -s qdisc ls dev eth0
3. 限制入方向带宽(ingress)
入方向限速需要先添加一个
ingress
qdisc,再通过
filter
将流量重定向到
htb
:
# 添加ingress队列sudo tc qdisc add dev eth0 handle ffff: ingress限速为512kbit
sudo tc filter add dev eth0 parent ffff: protocol ip u32 match u32 0 0 action police rate 512kbit burst 10k drop flowid :1
注意: ingress限速本质是“流量监管”(policing),不是排队,因此使用
police
动作。
冬瓜配音
AI在线配音生成器
66 查看详情
4. 清除限速配置
要恢复原始网络状态,需删除已配置的队列规则:
# 删除出方向规则sudo tc qdisc del dev eth0 root删除入方向规则
sudo tc qdisc del dev eth0 ingress
或者更彻底地清除所有规则:
sudo tc qdisc flush dev eth0
5. 添加延迟和丢包模拟(高级用法)
结合
netem
可模拟复杂网络环境。例如,给
eth0
增加100ms延迟和5%丢包率:
sudo tc qdisc add dev eth0 root netem delay 100ms loss 5%
查看效果:
tc -s qdisc ls dev eth0
此功能常用于测试应用在弱网环境下的表现。
基本上就这些。通过
tc
命令,你可以灵活控制Linux系统的网络带宽、延迟、丢包等参数,适用于测试、调试或资源隔离场景。关键是理解
qdisc
、
class
、
filter
之间的关系,并根据实际需求选择合适的调度器和参数。不复杂但容易忽略细节,建议在测试环境先行验证。
以上就是如何在Linux中限制带宽 Linux tc限速配置实例的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/436993.html
微信扫一扫
支付宝扫一扫