您现在的位置: 365建站网 > 365文章 > 路由器限速怎么设置才生效?Kbps 单位换算、DHCP 绑定与 tc HTB 分层限速命令

路由器限速怎么设置才生效?Kbps 单位换算、DHCP 绑定与 tc HTB 分层限速命令

文章来源:365jz.com 点击数:69 更新时间:2024-07-25 08:45

路由器限速有两种完全不同的实现:家用路由后台的 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 30
tc class add dev eth0 parent 1: classid 1:10 htb rate 8mbit ceil 10mbit prio 1
tc 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建站器 »