路由器限速怎么设置才生效?Kbps 单位换算、DHCP 绑定与 tc HTB 分层限速命令
路由器限速有两种完全不同的实现:家用路由后台的 IP/带宽限速(傻瓜式,只能限下行或上下行对称值),和 Linux Traffic Control 的 qdisc 队列规则(精确,可分层、可抢占)。本文给出 tc 的官方参数与命令,并附上各品牌后台入口的实测可达性,说明为什么后台打不开不等于限速功能坏了。

一、后台限速的真实逻辑:先确认单位
家用路由的限速界面普遍填的是 Kbps(千比特每秒),而不是 KB/s。这是最常见的误操作来源:想限成 1MB/s 却填了 1024,实际得到 1024Kbps ≈ 128KB/s,被限到人以为断网。换算记一条即可:KB/s = Kbps ÷ 8。
管理入口以设备底部标签为准,常见为 http://192.168.1.1、http://192.168.0.1 或域名形式(TP-LINK 常用 tplogin.cn)。官网本次实测:https://www.tp-link.com.cn/ 返回 200,可正常取固件与说明书;而 support.asus.com.cn 出现 DNS 无法解析(getaddrinfo failed,errno 11001),https://www.mi.com/router 返回 302 跳转到 http://err.www.mi.com/04.html。结论:品牌站路径经常变更,找不到功能页面时不要怀疑路由器,直接改用 IP 进后台。
二、限速不生效的四个原因
- 基于 IP 的规则,但终端是 DHCP 动态地址:重启后 IP 变了,规则就落空。必须在 DHCP 里做 MAC 与 IP 绑定。
- 只限了内网段:IPv6 设备走的是另一个协议族,规则不覆盖,表现为"限了还能全速跑"。
- 上行下行只填了一项:BT/直播卡顿多在上行,下行看起来正常。
- 智能 QoS 与限速互相冲突:开启游戏加速后手工规则常被覆盖,需先关闭自动优化。
三、tc:限速的底层原理与正确命令
在 Linux/OpenWrt 上,限速由 tc(Traffic Control)完成。依据 tc(8) 手册页,语法主干是 qdisc [ add | change | replace | link | delete ],每个 qdisc 与 class 都分配一个 classid。手册原文对整形的定义是 "When traffic is shaped, its rate of transmission is under bandwidth - it is also used to smooth out bursts in traffic"——即通过令牌桶控制发包速率并抹平突发。
主力算法 HTB 的参数,来自 tc-htb(8):全称 Hierarchy Token Bucket(分层令牌桶),官方说明为 "HTB allows control of the outbound bandwidth on a given link",且 "Within the one HTB instance many classes may exist"。可用参数为 rate / ceil / burst / cburst / prio:
tc qdisc add dev eth0 root handle 1: htb default 30tc class add dev eth0 parent 1: classid 1:10 htb rate 8mbit ceil 10mbit prio 1tc class add dev eth0 parent 1: classid 1:20 htb rate 2mbit ceil 3mbit prio 2
读法:rate 是保底带宽,ceil 是空闲时可抢到的上限,prio 数值小者优先。三条要点:rate 之和不应超过实际线路带宽;ceil 决定"闲置时能不能加速";default 30 让没匹配上规则的流量走兜底类,否则未分类流量会挤占全部带宽。
四、必须挂叶子队列
这是 tc 最反直觉的一点。LARTC 手册明确指出:如果只做 SFQ 而不做速率控制,"nothing would happen",包会落进 classless 的 pfifo_fast;HTB 的每个类还需要挂 leaf qdisc(如 sfq 或 pfifo),例如 tc qdisc add dev eth0 parent 1:10 sfq perturb 10。同一文档还说明 PRIO qdisc 本身不整形("The PRIO qdisc doesn't actually shape"),它只是按过滤器把流量分到不同 band,属于 Work-Conserving 调度器。
查看与清除:
tc -s qdisc show dev eth0(带统计)tc qdisc del dev eth0 root(一键清空,排错首选)
五、为什么后台限速常不如 tc
带宽争抢时的公平性来自内部队列。后台只填一个数字时,路由器内部往往是单一 FIFO,一个 BT 客户端就能把队列填满,导致别人玩游戏延迟飙升。tc 用 HTB 分层加 SFQ 做类内公平排队,才能同时保证"限总量"和"内部公平"。这也是 OpenWrt 上 smartqos/cake 流行的原因。
六、常见问题 FAQ
问:限速会影响 WiFi 覆盖吗?
答:不影响信号强度,只影响吞吐。但若上行被打满,ACK 延迟会造成下行看起来也变慢,此时应限上行。
问:只想临时给一台设备降速怎么办?
答:家用后台用 IP 限速最省事;有可控环境时用 tc filter 按源 IP 匹配到指定 class 更精准。
问:改完没生效?
答:先 tc qdisc del dev eth0 root 清空再重建;另外确认真的接口是出口网卡,限速设在错误接口上完全不生效。
七、总结
限速的正确顺序是:①确认单位是 Kbps(除以 8 才是 KB/s)→ ②DHCP 绑定 MAC 防止 IP 漂移 → ③上行下行都限,且总和留 10% 余量 → ④需要精确控制时改用 tc,用 HTB 的 rate/ceil/prio 分层并给每个类挂 SFQ 叶子队列 → ⑤排错先 del 再 add。后台页面打不开多数是品牌站路径变更或 DNS 问题,与设备功能无关,直接用 IP 进后台即可。
生产内容,同时打通搜索引擎(SEO)与AI搜索引擎(GEO)流量入口的软件! 点击进入365建站器 »
