専用のマシンについて言及してきたので、ネットワークブリッジから管理していると仮定します。そのため、システム全体でパケット全体にアクセスできます。
リンクの飽和と言っているとき、接続の受信側のスロットルは意味がありません。パケットが表示されるまでには、すでにのリソースが消費されています。これはあなたが橋であっても当てはまります。現実的には、出力インターフェイスでインテリジェントな操作しか行うことができません。
私は、あなたが望むものをまさに行うことができる既製品を見つけることはないと思います。実行中に派生したルールに従って、dummynetのようなものを動的に変更する必要があります。あるいは、既存のインフラストラクチャを使用してダイナミックソフトウェアルータをプログラムする必要があります。私がよく知っているのはClick modular routerですが、他にもあります。私は実際にtc
とipfw
のようなものが高頻度で構成/再構成されることに反応するかどうかはわかりません。
ただし、事前に対処する必要があることがあります。実装に関係なくこのタスクを困難にするようなこと。たとえば、
- どのようにscp bulkとsshの対話動作を区別することを計画していますか?最初の動作を監視し、それに基づいてルールを適用しますか?
- HTTP固有のスロットリングについて説明します。これはDPIを意味します。あなたはこのブリッジ/ルータでこれをサポートできますか?いくつのクラスのアプリケーショントラフィックをサポートしますか?
- どのように競合を処理する予定ですか? (あなたは '一括'フローを割り当ててそれぞれ容量の30%を得ますが、消費しようとすると、10 'バルク'フローを取得します)
- リンク容量をハードコードするか測定しますか?それは固定されているのか、それとも変わるのだろうか
一般に、ネットワーキング5タプルをハッシュするだけで、「フロー」というかなりの考えを得ることができます。しかし、アプリケーションのセマンティクスを扱うことができれば、すべてのベットはオフになり、パケットの内容を掘り下げて必要なものを得る必要があります。
もっと具体的な目的を持っていれば、これらの問題の一部を解決するかもしれません。
アウトバウンドまたはインバウンドのトラフィックを整形しますか?インバウンドの場合、なぜですか? – ezpz
実際、これは専用のマシンで実行されるため、両方向の作成が目的です(つまり、巨大なダウンロードや巨大なアップロードはリンクをブロックしません)。 相互シェイピングは実現が難しいことを知っています。そのため、インターフェイス上で各方向を別々に形作ることは完全にうまくいくでしょう。 – rumpel