dd-wrt ​​路由器固件 QoS 故障排除

Jef*_*ood 18 dd-wrt qos

我一直在我的路由器上使用dd-wrt固件,我非常喜欢它!

但是——我不确定服务质量 (QoS) 是否在起作用。我把它设置如下:

  • http,端口 80 -- 高级
  • bittorrent,端口 6969 -- 批量
  • https,端口 443 -- 高级
  • dns,端口 53 -- 高级

根据QoS 文档,这些级别是:

带宽是根据每个类别的以下上行链路和下行链路值的百分比分配的:

  • 豁免:100mbps - 忽略全局限制。
  • 溢价:75% - 100%
  • 快递:15% - 100%
  • 标准:10% - 100%
  • 散装:1.5% - 100%

不过,这似乎并不完全有效——随着洪流的涌动,我的网页浏览会出现严重的停顿,这很糟糕!

QoS的文档给出了一些步骤,检查服务质量...

您将有兴趣查看第一组源和目标 IP,包括端口号。接下来是 l7proto 和“mark”字段的存在。这些条目基于“标记”字段指示应用于它们的当前活动连接 QoS 优先级。“标记”值对应于以下内容

  • 豁免:100
  • 溢价:10
  • 快递:20
  • 标准:30
  • 散装:40
  • (没有匹配的 QoS):0

即使在 QoS 规则列表中配置了某些 l7proto 服务,您也可能会看到“mark=0”。这可能意味着第 7 层模式匹配系统不匹配该协议的新头或更改头。端口匹配的自定义服务通常会处理这些。

在端口6969(BitTorrent的),我看到的东西,一个奇怪的混合mark=0mark=40像这样

cat /proc/net/ip_conntrack

udp 17 105 src=98.162.182.42 dst=1.2.3.4 运动=64512 dport=6969 数据包=3 字节=290 src=10.0.0.2 dst=98.162.182.42 运动=6964 字节=120 数据包=6964 字节=20 数据包标记=0 秒标记=0 使用=1
tcp 6 117 TIME_WAIT src=98.248.173.174 dst=1.2.3.4 Sport=51114 dport=6969 packet=12 bytes=704 src=10.0.0.2 dst=98.248.173.173.174 dst=1.2.3.4 sport=51114 dport=6969 packets=12 bytes=704 src=10.0.0.2 dst=98.248.173.173.174 dst=1.2.3.4 sport=51114 ] 标记=40 秒标记=0 使用=1
tcp 6 598 ESTABLISHED src=165.132.128.201 dst=1.2.3.4 Sport=57218 dport=6969 packet=8024 bytes=9919881 src=10.0.0.2 dst=165.132.128.201 dst=1.2.3.4 sport=57218 dport=6969 packet=8024 bytes=9919881 src=10.0.0.2 dst=165.132.128.201 dst=1.2.3.4 Sport=57218 dport=6969 ] 标记=0 秒标记=0 使用=1
tcp 6 586 已建立 src=68.46.9.24 dst=1.2.3.4 运动=64688 dport=6969 数据包=6 字节=490 src=10.0.0.2 dst=68.46.9.24 运动=6969 字节 dport=6969 字节 dport=6964 字节 dport=48 ] 标记=40 秒标记=0 使用=1
udp 17 45 src=222.254.228.38 dst=1.2.3.4 运动=25438 dport=6969 数据包=5 字节=454 src=10.0.0.2 dst=222.254.228.38 运动=69234 字节=1.2.3.4 数据包=6954 数据包=1D 18D标记=0 秒标记=0 使用=1

(完整文件可见于http://pastebin.com/AZE6EtWm

我一直在玩这个日志一段时间,我看不到任何模式!

为什么有些端口 6969 bittorrent 流量被mark=0dd-wrt ​​的 QoS标记(不匹配),而其他端口被标记mark=40(批量).. 有什么想法吗?

par*_*oid 13

我注意到很多人抱怨 QoS 在 DD-WRT 中不起作用,所以他们转而使用 Tomato。它在番茄中运行良好(我使用它)。Tomato 也有非常漂亮的图表,这对于调整您的 QoS 设置很有用。

与 DD-WRT 相比,Tomato 的缺点是它的功能较少,尽管有一些 mod 版本增加了某些东西,比如 USB 存储和 OpenVPN。但是,正如下面提到的 Jeff Atwood,它只支持 Broadcom 芯片组。

我在 Netgear WNR3500L 上使用泰迪熊模组。 我现在使用 Toastman mod,它基于 Teddy Bear,具有更多功能和更好的默认 QoS 类,适用于大多数人。

就个人而言,我在 Tomato 中唯一缺少的是 VLAN 支持和多 SSID 广播。(Toastman 的 mod 现在拥有它们,以及辅助 SSID 的 Captive Portal)。

  • Tomato 仅适用于具有 Broadcom 芯片的路由器。我的路由器(Buffalo WZR-HP-G300NH)使用 Atheros。 (2认同)

Chr*_*pin 8

虽然它只塑造传出流量,但您可能会发现Alex Rice 博客上的这个优秀的 QoS 脚本镜像在 pastebin 上)很有用。它经历了几位作者和化身。一定要正确设置 UPLINK 和 DEV。对我来说,DEV 的默认值不正确,请改用注释$(nvram get wan_ifname)nvram get wan_iframe通过 SSH执行的正确值。

此外,您可以在 QoS GUI 中复制其配置,而不是使用它。您会看到它使用 1024:65535 处理批量流量,其他设置(80、22、3389 等)优先。该脚本对我来说效果很好,并按照建议使用了 HFSC。


此外,如果您不使用该脚本,您可能会遇到您的版本相关的错误

例如:QoS设置为WAN将上行流量发送到下行队列
然后意识到这个补丁失败,因为:rc_firewall脚本中的命令没有应用于QoS

您可以使用在 rc_firewall 之后执行脚本解决该问题,如故障单中所述。我个人最终启用了 JFFS并将带有修复程序的脚本放置在 中/jffs/etc/config/qos.ipup,与前面提到的相同。

我发现使用KiTTYWinSCP很方便。您可以使用 KiTTY SSH 进入路由器以进行故障排除/验证,就像第一张票一样,然后使用Start WinSCPKiTTY 左上角图标下的命令直接启动路由器上的文件浏览。如果失败(默认情况下路由器不运行 SFTP),您可以启用 FTP 并手动连接,或者只需使用 Unix 命令添加文件。请记住在脚本上设置所有者执行权限。

  • 我应该提到种子文件,这样你会想要 TCP 超时 [低至 10 分钟](http://www.dd-wrt.com/wiki/index.php/Router_Slowdown#Solution)(默认为 60!),也应该更快地启动 QoS。 (3认同)