【问题标题】:Limit not bandwith, but packets per second in linux限制不是带宽,而是linux中每秒的数据包
【发布时间】:2015-08-10 15:20:13
【问题描述】:

子问题 #1

tc 及其所有qdiscs 是限制带宽的完美方法,但Linux 中有什么方法可以限制传出数据包的pps 吗?

我为什么这么问。

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

子问题 #2

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

附:当然,我想在这两个群体之间共享公共频道。所以我不能只限制B,因为当A根本不使用通道时,B必须使用它的100%。

有可能吗?怎么样?

【问题讨论】:

    标签: linux trafficshaping


    【解决方案1】:

    好的,这就是这个问题的决定。 你可以这样使用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 partTScheduler::operator()

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-22
      • 2022-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多