共享 Internet 连接上的带宽管理选项

pmd*_*mdj 13 networking router bandwidth qos traffic-shaping

前提:

农村地区,高带宽互联网连接的选择不多。迄今为止最快的是卫星互联网,但它很昂贵(设备和每月费用,并且有延迟缺点),因此多个家庭希望共享它。

这本身很简单 - 为每个家庭(VLAN 或物理端口)设置一个带有子网的路由器,阻止它们之间的流量,然后将调制解调器配置为路由到这些子网或设置双 NAT。

问题:

TCP 正常工作的方式意味着每个 TCP 连接或多或少会获得可用带宽的 1/n,其中 n 是连接数。因此,如果一个家庭/用户创建了大量连接,他们将在整体连接中获得更大份额。这并不是特别公平——在饱和链接的情况下,每个家庭都应该获得平等的份额。另一方面,当没有其他人使用连接时,应该可以使用全部带宽。

例如,假设有 4 个家庭共享 12Mbit/s 下行连接。如果其中之一正在下载/流式传输/其他任何内容,他们应该能够使用完整的 12Mbit/s(或足够接近)。如果2户使用连接,每户应该得到6Mbit/s,无论是一户下载1个文件,另一户11个。(没有任何带宽管理,在这种情况下,每个文件下载速度大约为1Mbit/s) 3户各获得 4Mbit/s,依此类推。

到目前为止我已经解决了:

实施此类策略(对于下游)的最佳位置是窄管道的另一端,即 ISP。显然,在这种情况下这是不可能的,所以能够以某种方式近似它会很好。但是如何?是否有支持此类功能的现成路由器?我可以配置 Linux 或 BSD 机器来执行此操作吗?它不必是防弹的——行为不端的 TCP 服务器或激进的 UDP 服务大概可以规避我在我最后可以做的任何事情——但它应该适用于大多数流量的常见情况,包括大量符合 RFC 的TCP 连接。

明确地说,我不是在谈论优先考虑特定应用程序,而是聚合进出特定以太网设备或 IP 地址范围的流量。为某些流量赋予比其他流量更高的优先级似乎得到了很好的支持,但在尝试为流量类别平均分配带宽时,情况就不太清楚了。

网络上有很多关于流量整形的写得很糟糕/不经意地反刍/其他不知情的信息。关于路由器硬件的文档非常不具体,所以我似乎在兜兜转转。

据我了解,让 TCP 以这种方式运行的方法实际上是模拟一个比实际可用的管道稍窄的管道,并人为地丢弃数据包以使其退出。所以我认为通过人为地丢弃任何额外的数据包,在上面的例子中为每个人提供 3Mbit/s 是相当简单的。这并没有真正有效地使用连接,因为大多数时候都有空闲容量。

有没有办法做我要问的?我这样做错了吗?我(或者更确切地说,有问题的家庭)愿意为此花钱——无论是价格适中的现成路由器/设备,还是运行 Linux 或 BSD 发行版的通用机器。

use*_*067 2

OpenWRT似乎确实支持它,尽管我自己从未使用过它。您可以查看他们网站上的网络流量控制页面,尤其是第二个示例:与 HTB 的简单带宽共享(又名流量整形)。这涉及到对 qdisc 的简单调用,因此任何 Linux 机器都可以做到这一点。