如何为所有 HTTP 配置带宽限制?

网络工程 拥塞
2022-02-19 07:37:12

我使用以下命令为 HTTP 和 ftp FTP 配置了带宽限制:

sudo /sbin/tc qdisc add dev eth0 root handle 1:0 htb default 1
sudo /sbin/tc class add dev eth0 parent 1:0 classid 1:1 htb rate 5kbps ceil 9kbps prio 0
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip sport 21 0xffff flowid 1:1

然后我wget通过从 Internet 下载文件来检查该命令。(还检查了端口 80 和 21)。但是下载速度没有变化,例如不限制在 9 Kbps 下。

我该怎么办?我还必须配置延迟吗?如果是,多少钱?

2个回答

系统仅对接口上的tc传出数据包进行整形(除非您使用的是入口过滤,但您没有使用)。因此,除非您运行这些命令的计算机是服务器,否则不会进行任何整形。

此外,正如@Teun Vink 所说,端口 21 仅用于 FTP 控制。补充一下他关于端口 20 的说法,如果您在被动模式下使用 FTP(很可能),那么您不太可能仅基于tc过滤器对其进行整形,因为它将使用随机高端口。在这种情况下,您可能需要使用组合iptables来匹配流并设置 fwmarks,以及tc要匹配的规则。

端口 21 用于 FTP 控制。如果你想限制 FTP 流量,你应该限制端口 20(FTP 数据),如果你想限制 HTTP 流量,你应该为端口 80 创建一个类似的规则。