Что такое отдельный поток в Linux FQ codel?

я настраиваю доказательство концепции для дросселирования трафика на конце терминала (клиент):

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

у меня есть 2 источника ips для конкретной программы, которую я хочу дросселировать. Программа открывает кучу tcp-соединений (загрузки, таким образом, вход дроссельной заслонки), и я хотел бы как ограничить общую пропускную способность входа, которую он использует (сделано), так и иметь справедливое планирование между соединениями с тем же ip-адресом (этот вопрос).

в конце концов 1 ведро с прикрепленным тарифом и 1 fq_codel экземпляра.

у меня это работает, но у меня есть некоторые вопросы:

  • конечно, у codel есть отдельная очередь на протокол (tcp vs udp)?
  • имеет ли codel отдельные очереди на IP-адрес источника?
  • имеет ли codel отдельную очередь на tcp-соединение?
  • должен ли я вручную отделять / потоки тегов?

в Internet research flow id - это "хэш 5-кортежа", вопрос в том, какие элементы пакета являются частями из 5-ти? Включены ли порты источника и назначения?

2 ответов


Кажется, что оба порта источника и назначения включены, по крайней мере по умолчанию:

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)

Per http://mdh.diva-portal.org/smash/get/diva2:754020/FULLTEXT01.pdf (чья-то Кандидатская диссертация):

потоки разделяются хэшированием значения 5 кортежей из пакета (по умолчанию src/dest port / ip и протокол) вместе со случайным номер

помимо по умолчанию немного, это понятно.