0

0

Linux网络带宽管理方案_限速与保障策略解析【指导】

舞夢輝影

舞夢輝影

发布时间:2026-01-05 09:31:53

|

571人浏览过

|

来源于php中文网

原创

tc限速不准主因是qdisc类型选错(如误用pfifo_fast)或根设备绑定错误(须用egress root而非parent,禁用ingress);容器需clsact+cgroup2实现进程级限速,iptables限速须在POSTROUTING打标配合egress策略。

linux网络带宽管理方案_限速与保障策略解析【指导】

tc 命令限速不准?关键在 qdisc 类型和根设备选择

Linux 下用 tc 限速失效或波动大,多数情况不是命令写错,而是选错了队列规则(qdisc)类型或绑错了网络接口。默认的 pfifo_fast 不支持速率控制,必须显式指定如 htbtbf;且限速必须施加在**出口方向(egress)**,不能对 loopback 或虚拟网卡(如 docker0)直接生效。

  • tc qdisc add dev eth0 root htb default 30 —— 必须用 root(非 parent),否则无法接管全部出向流量
  • 容器或 Docker 场景下,宿主机上对 eth0 限速只影响从宿主机发出的包,容器内进程的出向流量需在 docker0 或使用 clsact + tc filter 匹配 cgroup
  • tbf 简单但无分类能力,突发(burst)设太小会导致 TCP ACK 丢包、吞吐骤降;htb 更稳,但需配合 tc classtc filter 才能按 IP/端口分流

保障某服务带宽不被挤占:用 htb + cgroup2 实现进程级隔离

单纯给 IP 或端口限速无法解决“同一台机器上多个服务争抢带宽”的问题。真正可控的方式是把进程归入 cgroup2,并用 tcclsact qdisc 结合 matchall 过滤器绑定到 cgroup。

  • 确认内核启用 cgroup2:检查 /proc/cgroupsmemory 行的第 4 列是否为 1;Ubuntu 22.04+ 默认启用
  • 创建 cgroup 并设置 net_cls:
    mkdir /sys/fs/cgroup/myapp  
    echo 0x00110011 > /sys/fs/cgroup/myapp/net_cls.classid
    其中 0x00110011 是主类 ID(前 16 位)+ 子类 ID(后 16 位),后续 tc class 需匹配前 16 位
  • 启动进程时加入 cgroup:sudo cgexec -g net_cls:/myapp curl http://example.com
  • 在网卡上挂 clsact:tc qdisc add dev eth0 clsact,再用 tc filter add dev eth0 parent ffff: protocol ip flower skip_sw indev eth0 classid 0x00110011

iptables + tc 联动做源 IP 限速:为什么 mangle 表 PREROUTING 不起作用

想对进来的连接限速(比如限制某客户端上传速度),不能在 PREROUTING 链打标记,因为 tc 的 egress 限速只管发出去的包,而 PREROUTING 处理的是刚进来的包——此时还没走到 egress 队列。正确路径是:对**应答包(即服务器回包)** 打标,再在 egress 上按标记限速。

BgSub
BgSub

免费的AI图片背景去除工具

下载
  • 给特定源 IP 的响应流量打标记:iptables -t mangle -A POSTROUTING -s 192.168.1.100 -j CLASSIFY --set-class 1:10
  • 对应 tc class 必须建在 root htb 下:tc class add dev eth0 parent 1: classid 1:10 htb rate 2mbit
  • 注意:若服务器启用了 conntrack,且连接是 NAT 过来的(如 SNAT),-s 应该匹配 NAT 后的源地址(通常是内网地址),而非原始客户端 IP

实时监控限速效果:别只看 ifconfig,要用 tc -s 和 ip -s

ifconfig eth0 显示的 RX/TX 是底层驱动收发计数,不反映 tc 是否真在丢包或延迟。实际策略是否生效,得查 tc 自身统计和 qdisc 排队状态。

  • 查看某 class 的实时丢包与排队长度:tc -s class show dev eth0,重点关注 droppedoverlimitsqlen
  • 查过滤器命中次数:tc -s filter show dev eth0 parent ffff:(clsact)或 tc -s filter show dev eth0 parent 1:(htb)
  • 验证 cgroup 绑定是否成功:cat /proc/[pid]/cgroup 看进程是否在目标 cgroup;再查 cat /sys/fs/cgroup/myapp/net_cls.classid 确认值一致
  • 误将限速设在 ingress(tc qdisc add dev eth0 ingress)会导致完全无效——ingress 在 Linux 中仅支持简单重定向,不支持速率整形

相关专题

更多
curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

425

2023.06.14

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

172

2023.10.30

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1003

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

56

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

294

2025.12.29

class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

461

2024.01.03

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

8

2025.12.06

default gateway怎么配置
default gateway怎么配置

配置default gateway的步骤:1、了解网络环境;2、获取路由器IP地址;3、登录路由器管理界面;4、找到并配置WAN口设置;5、配置默认网关;6、保存设置并退出;7、检查网络连接是否正常。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

219

2023.12.07

深入理解算法:高效算法与数据结构专题
深入理解算法:高效算法与数据结构专题

本专题专注于算法与数据结构的核心概念,适合想深入理解并提升编程能力的开发者。专题内容包括常见数据结构的实现与应用,如数组、链表、栈、队列、哈希表、树、图等;以及高效的排序算法、搜索算法、动态规划等经典算法。通过详细的讲解与复杂度分析,帮助开发者不仅能熟练运用这些基础知识,还能在实际编程中优化性能,提高代码的执行效率。本专题适合准备面试的开发者,也适合希望提高算法思维的编程爱好者。

1

2026.01.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 6.6万人学习

Git 教程
Git 教程

共21课时 | 2.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号