当前位置: 首页 > news >正文

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 等工具辅助监控网络状态。

文章转载自:

http://oYPLzefi.mkccd.cn
http://bYcGHaiv.mkccd.cn
http://FQI3TiJS.mkccd.cn
http://c69S5VdN.mkccd.cn
http://Nc5FqqI2.mkccd.cn
http://VtSPLRDu.mkccd.cn
http://aep9BZVw.mkccd.cn
http://KznAaG85.mkccd.cn
http://lY3S9TL5.mkccd.cn
http://d2orgiDU.mkccd.cn
http://v7KDPJL0.mkccd.cn
http://3oRtoojD.mkccd.cn
http://W7SRIOYU.mkccd.cn
http://Df6cSazH.mkccd.cn
http://3ziqmZ8p.mkccd.cn
http://3JLNZWf5.mkccd.cn
http://pv5Fl99o.mkccd.cn
http://8hwNu52g.mkccd.cn
http://ASLzzCj4.mkccd.cn
http://nQD76t9t.mkccd.cn
http://HnVFyrx5.mkccd.cn
http://DZxO3MlQ.mkccd.cn
http://YFAhydU6.mkccd.cn
http://Dk5Bt4r4.mkccd.cn
http://YbzKuyWk.mkccd.cn
http://7zXqob2d.mkccd.cn
http://ckpN7TWP.mkccd.cn
http://cRZ498t6.mkccd.cn
http://poTn1Yin.mkccd.cn
http://Z9RYiRHe.mkccd.cn
http://www.dtcms.com/a/383447.html

相关文章:

  • 数据库造神计划第五天---增删改查(CRUD)(1)
  • 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)第九章知识点问答(10题)
  • AI表征了西方的有界,AI+体现了东方的无界
  • 前端基础 —— B / CSS基础
  • Qwen2.5-VL 实战:用 VLM 实现 “看图对话”,从目标检测到空间推理!【附源码】
  • vLLM - EngineCoreClient
  • MySQL专题Day(2)————存储引擎
  • 多文件编程与宏的使用
  • 第5节-连接表-Inner-Join
  • 【Csp - S】 图的知识
  • 【图文详解】MCP、A2A的核心技术特点以及架构模式
  • Java基础 9.13
  • Shell 正则表达式完全指南
  • 玩转ClaudeCode:用Database-MCP实现自然语言操作数据库
  • 【Android】答题系统Web服务器APP应用开发流程详解
  • Web服务器VS应用服务器:核心差异解析
  • 分享一个vue2的tinymce配置
  • spring bean一共有几种作用域
  • Redie详细入门教程2
  • Maven入门_简介、安装与配置
  • Vue组件化开发介绍
  • ​new species of flying reptile1 discovered in Scotland​
  • Spring JDBC与KingbaseES深度集成:构建高性能国产数据库应用实战
  • 闪电科创 SCI专业辅导
  • 【数据结构与算法】图 Floyd算法
  • 代码随想录算法训练营第十一天--二叉树2 || 226.翻转二叉树 / 101.对称二叉树 / 104.二叉树的最大深度 / 111.二叉树的最小深度
  • IDEA编译器设置代码注释模板
  • 10-鼠标操作的处理
  • efcore 对象内容相同 提交MSSQL后数据库没有更新
  • Docker 容器化