web-dev-qa-db-ja.com

Squidで帯域幅を動的に制限する

実際、私の問題は、私のネットワークのインターネットから大きなファイルをダウンロードするユーザーにあります。

ネットワークとインターネットの間に配置されたSquidキャッシュ/プロキシサーバーがネットワークにあります。

長い間生きている接続を終了することは、ユーザーが大きなファイルをダウンロードするのを防ぐのに役立つかもしれないと思いました。したがって、SOこの投稿では)で質問しますが、明確な答えは得られませんでした。イカでは無理そうです。:-/

さて、その投稿でも提案された1つの解決策は、各ユーザーの帯域幅を制限することです。各ユーザーに適切な帯域幅を与えるだけで、ユーザーは他のユーザーに迷惑をかけることなく何でも(ダウンロードも)実行できます。

しかし、私が知る限り、Squidは一部の静的帯域幅しかユーザーに割り当てることができません。したがって、どのユーザーにも、変更できない特定の静的帯域幅があります。これは公平でも最適でもないようです。アイドル状態(ほとんどのユーザーが要求していない場合)では、ビジー状態でのシェアよりも多くの帯域幅を提供する必要があるためです。

したがって、公平なシステムでは、優先順位を考慮して、使用可能なユーザー間で帯域幅を分割する必要があります(一部のユーザーは他のユーザーよりも多くのシェアを持つ必要があります)。ユーザーのシェアは、利用可能なすべてのユーザーによって異なります。より多くのユーザーがより少ない共有。このようなもの:

UserBandwidth = (OverallAllBandWidth / NumberOfCurrentUsers)

ある瞬間にユーザーが1人しかいない場合は、すべての帯域幅をそのユーザーに割り当てる必要があります。

だから:

  • この解決策はSquidで可能ですか?

  • 他のソフトウェアで可能ですか? Linux自体はどうですか? Linuxカーネルのトラフィックシェーピング機能について聞いたことがあります。

それが実用的でない場合、次のことを行うために他にどのような解決策を提案しますか。

  • ユーザーがダウンロードできないようにする(特にHTTPダウンロード)

または

  • 公平で確実に動的な帯域幅制限を適用します

ありがとう!

1
Isaac

あなたが使うことができます

acl aclname rep_mime_type mime-type

特定のmimeタイプのダウンロードをブロックする(ISOなど)

そして

reply_body_max_size

ダウンロード可能な最大のファイルに上限を設定する

また、free-saを使用してログを分析し、帯域幅がどこに向かっているのかを確認することもできます。

http://free-sa.sourceforge.net/

編集:実際にはイカの遅延プールはあなたが必要なことを正確に行います。

この記事を読む: http://www.howtoforge.com/squid-delay-pools-bandwidth-management

3
jamespo

遅延プールは、帯域幅の使用を制限し、それでも小さなファイルをダウンロードする方法です.mime-typesの問題は、ユーザーがhttpsで接続していて、場合によっては違法なプロキシを使用していても、リクエストのコンテンツを表示できないことです。 。イカのトラフィックの統計を生成するためにイカを使用することをお勧めします。微調整がどこに役立つかが明確になります。 https://topnetworkguide.com/calamaris-an-external-logfile-analyzer-for-squid-proxies/

0
Renato Bonfanti