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

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 文档给出了一些检查 QoS 的步骤......

您感兴趣的是第一组源 IP 和目标 IP,包括端口号。接下来是 l7proto 和“mark”字段的存在。这些条目根据“mark”字段指示当前实时连接应用的 QoS 优先级。“mark”值对应于以下

  • 豁免:100
  • 保费:10
  • 快递:20
  • 标准:30
  • 批量:40
  • (无 QoS 匹配):0

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

在端口 6969 (bittorrent) 上,我看到一些奇怪的混合内容,mark=0例如mark=40

cat /proc/net/ip_conntrack

udp 17 105 src=98.162.182.42 dst=1.2.3.4 sport=64512 dport=6969 数据包=3 字节=290 src=10.0.0.2 dst=98.162.182.42 sport=6969 dport=64512 数据包=4 字节=202 [已确保] 标记=0 secmark=0 使用=1
tcp 6 117 TIME_WAIT src=98.248.173.174 dst=1.2.3.4 sport=51114 dport=6969 数据包=12 字节=704 src=10.0.0.2 dst=98.248.173.174 sport=6969 dport=51114 数据包=10 字节=440 [已确保] 标记=40 秒标记=0 使用=1
tcp 6 598 已建立 src=165.132.128.201 dst=1.2.3.4 sport=57218 dport=6969 数据包=8024 字节=9919881 src=10.0.0.2 dst=165.132.128.201 sport=6969 dport=57218 数据包=4211 字节=239607 [已确保] 标记=0 secmark=0 使用=1
tcp 6 586 已建立 src=68.46.9.24 dst=1.2.3.4 sport=64688 dport=6969 数据包=6 字节=490 src=10.0.0.2 dst=68.46.9.24 sport=6969 dport=64688 数据包=8 字节=944 [已确保] 标记=40 秒标记=0 使用=1
udp 17 45 src=222.254.228.38 dst=1.2.3.4 sport=25438 dport=6969 数据包=5 字节=454 src=10.0.0.2 dst=222.254.228.38 sport=6969 dport=25438 数据包=3 字节=154 [已确保] 标记=0 secmark=0 使用=1

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

我已经玩弄这个日志一段时间了,但我没有发现任何模式!

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

答案1

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

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


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

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

你可以用以下方法解决问题:rc_firewall 之后执行的脚本如票上所述。我个人最终启用 JFFS并将修复后的脚本放在中/jffs/etc/config/qos.ipup,如前所述。

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

答案2

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

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

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

就我个人而言,Tomato 中我唯一缺少的是 VLAN 支持和多 SSID 广播。(Toastman 的 mod 现在有这两项功能,以及用于辅助 SSID 的 Captive Portal)。

答案3

我发现 DD-WRT v24 sp2 build 15362 在我的 Netgear WNDR3700 v1 上非常稳定,但是尽管花费了大量时间尝试设置 QoS 和 TCP Vegas(拥塞控制),但这两种机制似乎都无法在这种用于入站流量的优秀固件上运行(我不需要出站控制,因为我不使用 VOIP)。

例如,无论我使用什么选项(Mac 控制、网络掩码、服务控制)来尝试优先处理入站视频流量并降低入站 bit torrent 流量的优先级,都无济于事。我已经向

底线:如果您想要所有其他功能(尤其是多个 SSID 的广播),请使用 DD-WRT使用番茄如果您有一个适用的芯片组(Tomato 不适用于基于 Atheros 的 WNDR3700)并且喜欢它的 QoS 功能。

答案4

我注意到了同样的事情。我现在找不到确切的帖子,但翻看论坛后,一位开发人员表示,QoS 在上传方面效果很好,但在下载方面效果不佳。其背后的原因是路由器可以控制从网络传出的流量(上行链路),但不能控制传入的流量,因为它无法控制传入的数据流。

我知道您不太喜欢浏览论坛帖子,但您可能想在那里发布您的问题。

相关内容