前提:
田舎の場所。高帯域幅のインターネット接続には多くの選択肢はありません。最も速いのは衛星インターネットですが、それは高価で(機器と月額の両方のコストがあり、遅延の欠点があります)、複数の世帯が共有したいと考えています。
これ自体は簡単です。各家庭(VLANまたは物理ポート)にサブネットを持つルーターをセットアップし、それらの間のトラフィックをブロックし、それらのサブネットにルーティングするようにモデムを構成するか、ダブルNATをセットアップします。
問題:
TCPが通常機能する方法は、各TCP接続が多かれ少なかれ利用可能な帯域幅の1 / nを取得することを意味します。ここで、nは接続の数です。そのため、1人の世帯/ユーザーが多数の接続を作成すると、接続全体の大きなシェアを獲得できます。これは特に公平ではありません-飽和リンクでは、各世帯が平等なシェアを獲得する必要があります。一方、誰も接続を使用していない場合、全帯域幅を使用できるはずです。
たとえば、4世帯が12Mビット/秒のダウン接続を共有しているとします。それらのいずれかがダウンロード/ストリーミング/何であれ、彼らは完全な12Mbit / sを使用できるはずです(または十分に近い)。2つの世帯が接続を使用している場合、1つの世帯が1つのファイルをダウンロードしているかどうかに関係なく、それぞれ6Mbit / sを取得する必要があります。11。(帯域幅管理なしで、各ファイルはおよそ1Mbit / sそれぞれ4Mbit / sを取得します。
私がこれまでに解決したこと:
このようなポリシーを実装するのに最適な場所(ダウンストリーム用)は、狭いパイプのもう一方の端、つまりISPです。明らかに、この場合はそれが不可能なので、なんとかそれを近似できると良いでしょう。しかし、どのように?このようなものをサポートする市販のルーターはありますか?LinuxまたはBSDボックスを構成することはできますか?それは防弾である必要はありません-誤動作するTCPサーバーまたは攻撃的なUDPサービスはおそらく最後に私ができることを回避することができます-しかし、それは多くのRFC準拠で構成されるトラフィックの一般的なケースで動作するはずですTCP接続。
明確にするために、私は特定のアプリケーションに優先順位を付けることについて話しているのではなく、特定のイーサネットデバイスまたはIPアドレス範囲との間でトラフィックを集約します。一部のトラフィックに他のトラフィックよりも高い優先順位を与えることは十分にサポートされているようですが、トラフィックのクラスに帯域幅を均等に割り当てようとすると状況はそれほど明確ではありません。
Web上のトラフィックシェーピングについては、ひどく書かれた/ひどく逆流された/そうでなければ情報のない情報がたくさんあります。ルーターのハードウェアに関するドキュメントは非常に不明確であるため、私は輪になって走り回っているようです。
私が理解しているように、TCPをこのように動作させる方法は、実際に利用できるよりもわずかに狭いパイプを実際にシミュレートし、パケットをドロップしてバックオフさせることです。したがって、余分なパケットを人為的にドロップすることにより、上記の例で全員に正確に3Mbit / sを提供するのはかなり簡単だと思います。ほとんどの場合、予備の容量があるため、これは実際に接続を効率的に使用しません。
私が求めていることを行う方法はありますか?私はそれについて間違っていますか?私は(または問題の世帯は)これにお金を使うことをいとわない-それは手頃な価格の既製のルーター/アプライアンスであろうと、LinuxまたはBSDディストリビューションを実行する汎用ボックスであろうと。