Linux 系统下的流量控制工具之tc命令案例解析

目录

1. 带宽限制(限速)

场景:限制某个接口的带宽,防止网络拥堵。

清除规则:

2. 模拟网络延迟

场景:模拟高延迟网络环境(如测试远程应用性能)。

清除延迟规则:

3. 模拟网络丢包

场景:模拟网络不稳定时的丢包情况(如测试应用容错性)。

清除丢包规则:

4. 模拟网络重复包

场景:测试应用对重复数据包的处理能力。

清除重复包规则:

5. 复合网络条件(延迟 + 丢包 + 重复)

场景:综合模拟复杂的网络环境。

清除复合规则:

6. 限制特定 IP 的带宽

场景:限制某个 IP 的带宽(如限制某用户流量)。

清除规则:

7. 配置优先级队列

场景:为不同类型的流量分配优先级(如 VoIP 高优先级)。

绑定流量到优先级:

8. 流量整形(Rate Limiting)

场景:限制突发流量,平滑网络负载。

9. 查看当前流量控制规则

场景:查看接口的流量控制配置。

10. 持久化配置(开机生效)

场景:确保重启后规则仍然有效。

11. 注意事项


以下是 tc 命令(Linux 系统下的流量控制工具)的常见使用案例汇总,涵盖带宽限制、延迟模拟、丢包率设置等典型场景:


1. 带宽限制(限速)

场景:限制某个接口的带宽,防止网络拥堵。
# 限制 eth0 接口的带宽为 100Mbps
sudo tc qdisc add dev eth0 root handle 1: htb default 10
sudo tc class add dev eth0 parent 1: classid 1:10 htb rate 100mbit ceil 100mbit
  • 参数说明
    • htb:Hierarchical Token Bucket(分层令牌桶),用于带宽分配。
    • rate:指定最大带宽。
    • ceil:指定带宽上限(可选)。
清除规则
sudo tc qdisc del dev eth0 root

2. 模拟网络延迟

场景:模拟高延迟网络环境(如测试远程应用性能)。
# 在 eth0 接口添加 100ms 延迟
sudo tc qdisc add dev eth0 root netem delay 100ms
  • 参数说明
    • netem:网络模拟模块,支持延迟、丢包、重复等操作。
    • delay:指定延迟时间(可选抖动,如 100ms 10ms 表示 100ms ±10ms)。
清除延迟规则
sudo tc qdisc del dev eth0 root

3. 模拟网络丢包

场景:模拟网络不稳定时的丢包情况(如测试应用容错性)。
# 在 eth0 接口添加 10% 的随机丢包率
sudo tc qdisc add dev eth0 root netem loss 10%
  • 参数说明
    • loss:指定丢包率(可选方向,如 loss 10% 5% 表示发送丢包 10%,接收丢包 5%)。
清除丢包规则
sudo tc qdisc del dev eth0 root

4. 模拟网络重复包

场景:测试应用对重复数据包的处理能力。
# 在 eth0 接口添加 5% 的重复包
sudo tc qdisc add dev eth0 root netem duplicate 5%
  • 参数说明
    • duplicate:指定重复包比例。
清除重复包规则
sudo tc qdisc del dev eth0 root

5. 复合网络条件(延迟 + 丢包 + 重复)

场景:综合模拟复杂的网络环境。
# 添加 200ms 延迟、10% 丢包率、5% 重复包
sudo tc qdisc add dev eth0 root netem delay 200ms loss 10% duplicate 5%
清除复合规则
sudo tc qdisc del dev eth0 root

6. 限制特定 IP 的带宽

场景:限制某个 IP 的带宽(如限制某用户流量)。
# 限制 eth0 接口下源 IP 为 192.168.1.100 的流量为 10Mbps
sudo tc qdisc add dev eth0 root handle 1: htb default 10
sudo tc class add dev eth0 parent 1: classid 1:10 htb rate 10mbit
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip src 192.168.1.100/32 flowid 1:10
  • 参数说明
    • u32:基于规则的匹配(支持 IP、端口等)。
    • match ip src:匹配源 IP。
清除规则
sudo tc qdisc del dev eth0 root

7. 配置优先级队列

场景:为不同类型的流量分配优先级(如 VoIP 高优先级)。
# 配置优先级队列(PRIO)
sudo tc qdisc add dev eth0 root handle 1: prio
sudo tc class add dev eth0 parent 1: classid 1:1 prio 1
sudo tc class add dev eth0 parent 1: classid 1:2 prio 2
sudo tc class add dev eth0 parent 1: classid 1:3 prio 3
  • 参数说明
    • prio:优先级队列(1 为最高优先级)。
绑定流量到优先级
# 将端口 5060(VoIP)绑定到最高优先级
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 5060 0xffff flowid 1:1

8. 流量整形(Rate Limiting)

场景:限制突发流量,平滑网络负载。
# 配置 TBF(Token Bucket Filter)限制突发流量
sudo tc qdisc add dev eth0 root tbf rate 1mbit burst 32k latency 50ms
  • 参数说明
    • burst:突发流量大小(字节)。
    • latency:最大允许延迟。

9. 查看当前流量控制规则

场景:查看接口的流量控制配置。
# 查看 eth0 接口的规则
tc qdisc show dev eth0
tc class show dev eth0
tc filter show dev eth0

10. 持久化配置(开机生效)

场景:确保重启后规则仍然有效。
  • 方法
    1. 将规则写入脚本(如 /etc/network/if-up.d/tc)。
    2. 在系统启动时自动执行脚本。
    # 示例脚本(需根据需求修改)
    #!/bin/sh
    tc qdisc add dev eth0 root netem delay 100ms

11. 注意事项

  1. 权限要求:所有操作需要 root 权限。
  2. 接口名称:根据实际网络接口(如 eth0enp0s3)调整。
  3. 复杂场景:高级配置(如多级分类、流量镜像)需结合 htbhfsc 等模块。
  4. 调试工具:使用 ipssnload 等工具辅助监控网络状态。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值