展览馆网站建设方案书网站建设与网页制作技术
在 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/
