10

ターミナル エンド (クライアント) でイングレス トラフィックを調整するための概念実証をセットアップしています。

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

スロットルしたい特定のプログラム用に 2 つのソース IP があります。問題のプログラムは、一連の tcp 接続 (ダウンロード、したがってイングレス スロットル) を開きます。使用する総イングレス帯域幅を制限し (完了)、同じ IP アドレスへの接続間で公平なスケジューリングを行いたい (この質問)。

最終的に、レートがアタッチされた 1 つのバケットと 1つのfq_codelインスタンスがあります。

動作していますが、いくつか質問があります。

  • 確かに codel はプロトコルごとに別のキューを持っています (tcp と udp)?
  • codel にはソース IP ごとに個別のキューがありますか?
  • codel には tcp 接続ごとに個別のキューがありますか?
  • 手動でフローを分離/タグ付けする必要がありますか?

インターネット調査フロー ID は「5 タプルのハッシュ」です。問題は、パケットのどの要素が 5 タプルの一部であるかということです。送信元ポートと宛先ポートの両方が含まれていますか?

4

2 に答える 2

1

少なくともデフォルトでは、送信元ポートと宛先ポートの両方が含まれているようです。

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)
于 2016-01-27T15:36:36.703 に答える
0

http://mdh.diva-portal.org/smash/get/diva2:754020/FULLTEXT01.pdf (誰かの博士論文) によると:

フローは、パケットからの 5 タプル値 (デフォルトは src/dest port/ip および protocol) と乱数をハッシュすることによって分離されます。

デフォルトビットとは別に、それは明らかです。

于 2016-02-05T08:07:42.693 に答える