限制不带宽,但在linux中每秒数据包

时间:2015-08-05 08:51:03

标签: linux trafficshaping

子问题#1

tc及其所有qdisc是限制带宽的完美方式,但Linux中是否有任何方法可以限制输出数据包的pps?

为什么我问它。

通常你只考虑一个资源 - 带宽(每秒字节数),但是当某个应用程序开始生成大量的小数据包时(例如对不同站点的http GET请求,其中包含相对少量的byres)可能 pps 将是资源。

子问题#2

所以,我想将我的所有流量分成两组 - A组带有小pps和带宽(高优先级),B组带有大pps和低优先级。然后我想限制汇总(来自两个组)输出pps,优先考虑来自A组的数据包。

P.S。当然,我想分享这两个群体之间的共同渠道。所以我不能只限制B,因为当A根本不使用通道时,B必须使用100%。

有可能吗?怎么样?

1 个答案:

答案 0 :(得分:0)

好的,这是决定这个问题。 您可以这样使用iptables

sudo iptables -I OUTPUT 1  -m owner --uid-owner debian-tor -j NFQUEUE --queue-num 1
sudo iptables -A OUTPUT                                    -j NFQUEUE --queue-num 0

这会将所有tor流量重定向到队列号1,将所有其他流量重定向到队列号0。

下一步是编写用户空间应用程序,它将从队列中读出数据包并发出判决 - 接受或删除。

Here is关于如何构建此类应用的精彩描述

此应用的here is实施。整个应用的Main part位于TScheduler::operator()

TVerdictAction Action;
   if(QueueNum != TorClass) {
      Action = TVerdictAction::Accept;
   } else {
      Action = CurrentRate > d->OverallRate ? TVerdictAction::Drop : TVerdictAction::Accept;
   }