自动调节导致大量stream量的用户的networking带宽

是否有人知道基于FreeBSD,Linux或Windows的产品能够自动降低在最后一刻造成大量networkingstream量的用户的networking数据包的优先级? (FreeBSD的标准pf和ALTQ机制不能这样做。)

不是在谈论为某些协议或端口号定义数据包优先级; 我想根据用户的实际带宽使用情况dynamic降低优先级。

这些Windows解决scheme非常接近您的需求: 带宽分配器和带宽pipe理器

如果我正在使用Linux,我会使用tc来控制峰值上限和SNMP来计算在交换机端口上传输的GB数量,以惩罚大量用户(使用数据包优先级或更低的上限)。

你可以在一定程度上使用ALTQ来做到这一点。 在使用HFSC的特定时间之后,使用ALTQ可以做的是降低特定pipe道的带宽。 这个实际上是否完成了你所需要的,主要取决于协议。

有关PF和HFSC的深入信息可以在这里find ,您将在选项7中查看您的实现。 它不是“一段时间后优先”,而是“最初授予更多的带宽”。 这可以具有相同的期望的最终结果。

我写了一个脚本来为Linux设置HFSC + SFQ(使用tc); HFSC应该做你想做的事情,而上面的SFQ强制批量stream之间的公平性。 结果对我来说效果很好,即使面对多个批量上传或下载,也可以实现低延迟。

这是脚本: https : //gist.github.com/939373

我不是一个PF / ALTQ的家伙,但我知道IPFW / DummyNet,它可以做本质上是你之后,调度优先级的利率。

一个非常简单的例子(因为我没有关于你的路由器如何设置的任何细节):

 ipfw pipe 1 bw 300Kbit/s ipfw sched 1 config pipe 1 mask src-ip 0xffffffff ipfw queue 1 config sched 1 ipfw add 10 queue 1 ip from 192.168.1.0/24 to any 

我不会推荐使用这些规则不变…

他们只是采取所有来自192.168.1.0的stream量,通过队列1运行。
队列1与附表1相关联
附表1使用FWQ +根据最less使用情况分配带宽(当没有足够的可用空间时)获得最高优先级。 stream量按来源IP地址进行分组(我假设您希望来自特定IP的所有stream量都是相同的)。
Schedule受到Pipe的限制,它告诉它它有300Kbps的工作能力(否则它会认为它具有以太网接口的整体速度,你的Internet连接可能不是那么快)。 你会改变300Kbps到任何你的实际连接。

快速解释这是做什么的:这将build立一个数据包队列,默认50个数据包深。 假设您的networking上有两个用户,一个是BitTorrenting,另一个是查看电子邮件; 也不以任何方式限制他们的使用。 BitTorrent客户端发送的IP将产生足够的stream量来填充队列并使Internet连接饱和。 当检查他们的电子邮件的人发送了一些东西的时候,它将被排列在队列中(并且因此将尽快发送),因为他们没有发送数据。 如果情况是两个英国电信的客户,他们每个都会得到一半的连接,因为他们的队列不断饱和。

DummyNet允许使用正确的选项进行非常复杂的stream量整形,您只需要非常具体地了解您要完成的任务。 另外请记住,路由器只能控制发送的内容,不能控制接收的内容(因为它受到发送的内容的控制)。 想想如果你的邮政信箱,邮递员决定你收到什么,你决定通过它发送。