在 Linux 系统中,tc(Traffic Control) QoS 常用命令简介
在 Linux 系统中,tc
(Traffic Control)命令是一个强大的工具,用于配置和管理网络流量控制。以下是 tc
命令的常用功能和基本用法:
1. 查看当前队列规则
使用以下命令查看指定网络接口上的队列规则:
tc qdisc show dev eth0
这里的 eth0
是网络接口名称,可以替换为实际的接口名称[1][2]。
2. 添加队列规则
添加队列规则以管理流量,例如使用 HTB(Hierarchical Token Bucket):
tc qdisc add dev eth0 root handle 1: htb default 11
root
表示这是根队列。handle 1:
定义了队列的句柄。htb
指定调度算法为 HTB。default 11
表示未匹配流量的默认分类[1][2][3]。
3. 删除队列规则
删除某个网络接口上的根队列规则:
tc qdisc del dev eth0 root
这将清除所有与该接口相关的流量控制规则[1][3]。
4. 创建类
为队列创建分类规则,并设置带宽限制:
tc class add dev eth0 parent 1: classid 1:1 htb rate 10mbps
parent 1:
指定父级队列(如根队列)。classid 1:1
定义类的 ID。rate 10mbps
设置带宽限制为 10 Mbps[1][2][4]。
5. 添加过滤器
过滤器用于将数据包分配到特定的类。例如,将目标端口为 80 的流量分配到类 1:1
:
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 \
match ip dport 80 0xffff flowid 1:1
protocol ip
指定协议类型。match ip dport 80
匹配目标端口为 80 的数据包。flowid 1:1
将匹配的数据包分配到类1:1
[1][2].
6. 模拟网络延迟和丢包
设置延迟:
tc qdisc add dev eth0 root netem delay 100ms
- 为所有流量添加 100 毫秒延迟。
设置丢包率:
tc qdisc add dev eth0 root netem loss 10%
- 模拟丢包率为 10%[3][6].
7. 列出和监控策略
列出已有策略:
tc -s qdisc ls dev eth0
实时监控流量和状态:
tc -s monitor
这些命令可以帮助管理员查看当前配置和实时流量信息[3][4].
8. 示例:限制带宽
以下是一个完整的带宽限制示例,限制网卡 eth0
的带宽为 500 Kbps:
# 添加根队列规则
tc qdisc add dev eth0 root handle 1: tbf rate 500Kbit latency 50ms burst 15kb
# 查看配置
tc -s qdisc ls dev eth0
# 删除规则(解除限制)
tc qdisc del dev eth0 root
这里使用了 TBF(Token Bucket Filter)算法,适合简单的速率控制[3].
通过以上命令,您可以灵活地使用 tc
来实现带宽限制、流量分类、延迟模拟等功能,以满足不同的网络管理需求。
Citations:
[1] https://my.oschina.net/emacs_8759915/blog/17197682
[2] https://www.cnblogs.com/lushichao/p/17477558.html
[3] https://blog.csdn.net/wsuyixing/article/details/125812823
[4] https://blog.csdn.net/mimiduck/article/details/111184980
[5] https://catbro666.github.io/posts/357ad3ec/
[6] https://www.cnblogs.com/sunsky303/p/14250452.html
[7] https://www.strickland.cloud/post/2
[8] https://arthurchiao.github.io/blog/lartc-qdisc-zh/