我正在建立一个概念证明来限制终端(客户端)的入口流量:

eth0 -> ifb0 -> htb -> filter by ip -> htb rate -> fq_codel+ecn

我要限制的特定程序有2个源ips。有问题的程序打开了许多tcp连接(下载,因此有入口 throttle ),我想既限制(使用)它使用的总入口带宽,又要在到相同ip地址的连接之间进行合理的调度(此问题)。

最后,有1个带有速率的存储桶和1个fq_codel实例。

我有它的工作,但我有一些问题:
  • 确定编解码器每个协议(protocol)都有单独的队列(TCP还是UDP)?
  • 每个源ip编解码器是否有单独的队列?
  • 每个TCP连接中编解码器是否有单独的队列?
  • 我是否必须手动分离/标记流?

  • 每个互联网研究流的ID是“5元组的哈希”,问题是,5元组的一部分是包中的哪些元素?是否包含源端口和目标端口?

    最佳答案

    似乎默认情况下至少包括源端口和目标端口:

    http://lxr.free-electrons.com/source/net/core/flow_dissector.c#L655

    655 /**
    656  * __skb_get_hash: calculate a flow hash
    657  * @skb: sk_buff to calculate flow hash from
    658  *
    659  * This function calculates a flow hash based on src/dst addresses
    660  * and src/dst port numbers.  Sets hash in skb to non-zero hash value
    661  * on success, zero indicates no valid hash.  Also, sets l4_hash in skb
    662  * if hash is a canonical 4-tuple hash over transport ports.
    663  */
    664 void __skb_get_hash(struct sk_buff *skb)
    

    关于linux - Linux fq_codel中的单独流程是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35010739/

    10-10 12:29