讲师中心 微信公众号
AI工具推荐 视频效率加速

Linux tc filter u32 / flower 的分类与 policing 限速规则模板

星杰小哥_3667

星杰小哥_3667

发布时间:2026-02-18 11:50:03

|

905人浏览过

|

来源于php中文网

原创

u32 filter匹配失败主因是未设flowid、协议层顺序错(需ip protocol+ip dport)、端口掩码误用(须0xffff)、priority顺序混乱;flower适用于需隧道/VLAN/conntrack的现代场景;police限速需协同mtu与burst,且drop不可省略。

linux tc filter u32 / flower 的分类与 policing 限速规则模板

u32 filter 匹配失败的典型现象和定位方法

你加了 tc filter add 却发现流量完全没被分类,tc -s filter show 里计数器始终为 0——大概率是匹配条件没生效,不是规则写错了,而是没走到那条规则。

  • 检查是否漏了 flowid:u32 必须显式指定 flowid 才能真正分类,只写 match 不设 flowid 等同于“看一眼就放行”
  • 确认协议层顺序:u32 默认在 IP 层匹配,TCP/UDP 端口必须用 ip protocol + ip dport 组合,单独写 ip dport 会被忽略
  • 注意掩码写法:端口匹配要用 0xffff(16 位全掩),写成 0xff 或省略会导致高位被截断,80 端口可能匹配到 32848
  • 优先级顺序不能乱:u32 按 priority 数值升序执行,priority 1 比 priority 10 先匹配;默认不写 priority 是 0,容易被后续规则覆盖

flower filter 替代 u32 的实际适用场景

flower 不是 u32 的“升级版”,而是更贴近现代内核网络栈的分类接口——它原生支持隧道、VLAN、conntrack 状态等,但代价是某些老设备或低版本内核(flower。

  • 需要匹配 ct_state(如只限速 ESTABLISHED 连接)或 enc_key_id(VXLAN 流量)时,必须用 flower,u32 做不到
  • 匹配 IPv6 扩展头(如 ESP、AH)时,flower 支持 ip6 frag 和 ip6 nh,u32 只能靠偏移硬算,极易出错
  • flower 的 action mirred egress redirect 在多队列网卡上比 u32 + mirred 更稳定,尤其在高吞吐下不易丢包
  • 但 flower 的 skip_sw 默认关着,如果没显式加 skip_sw 1,部分匹配会 fallback 到软件路径,性能反而不如 u32

police action 中 rate/burst/mtu 的真实含义

police 不是“限速器”,它是令牌桶的实时决策模块:每来一个包,按速率补令牌,够就放行,不够就丢或重标记——所以 rate 和 burst 的单位、换算关系必须对得上,否则限速会漂移。

Linux installer
Linux installer

先解析安全源,运行本地CLI安装、启动、卸载Linux桌面应用。用户请求时使用。

下载
  • rate 单位是 bit/s(不是 byte/s),写 rate 10mbit 就是 10,000,000 bit/s ≈ 1.25 MB/s,别按文件下载速度去估
  • burst 单位是字节(byte),不是 bit,且它决定的是“瞬时突发容量”,不是缓冲区大小;设太小(如 burst 1kb)会导致小包密集时频繁触发 drop
  • mtu 参数仅影响 police 对“超大包”的处理逻辑:当包长 > mtu 时,直接按 exceed 处理,不查令牌;不设 mtu 则所有包都走令牌桶,但巨型帧可能被误限
  • 实际限速效果受 qdisc 类型影响:用 fq_codel 底层时,police 的 burst 容量会被进一步压缩,建议 burst ≥ rate / 200(即 5ms 等效字节数)

一条能跑通的 u32 + police 规则模板

以下命令限制目标端口 80 的 TCP 流量为 5Mbit/s,burst 64KB,只作用于 eth0 出向:

tc qdisc add dev eth0 root handle 1: htb default 30
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 5mbit ceil 5mbit
tc filter add dev eth0 parent 1: protocol ip u32 match ip protocol 6 0xff match ip dport 80 0xffff flowid 1:10
tc filter add dev eth0 parent 1: protocol ip u32 classid 1:10 \
  match ip protocol 6 0xff match ip dport 80 0xffff \
  police rate 5mbit burst 64kb mtu 1500 drop flowid 1:10

注意:第二条 tc filter 必须带 classid 1:10,否则 police 无法绑定到对应 class;drop 是动作,不是选项,漏掉就变成 pass(透传)。

复杂点在于 burst 和 mtu 的协同——mtu 设 1500,burst 却设 64kb,意味着前 42 个满载 MTU 包可以无损通过,第 43 个才开始受令牌约束。这个窗口期容易被误判为“限速没生效”。

热门AI工具

更多
Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

相关专题

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

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

3108

2023.10.19

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

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

4669

2025.10.17

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

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

3729

2025.12.29

java接口相关教程
java接口相关教程

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

426

2026.01.19

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

5367

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2348

2023.08.10

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

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

3636

2024.01.03

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

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

306

2025.12.06

Kratos框架HTTP与gRPC服务开发教程
Kratos框架HTTP与gRPC服务开发教程

本专题围绕Kratos框架双协议服务开发,涵盖HTTP路由与处理器编写、参数获取、gRPC服务实现与客户端调用、metadata上下文传递、encoding编解码注册、统一响应封装、超时控制与流式响应实现方法。

0

2026.10.10

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn