web-dev-qa-db-ja.com

Linuxカーネルパケット転送パフォーマンス

私は今度はしばらくの間ルーターとしてLinuxボックスを使用していました。カーネルでの転送を可能にし、マスカレードをオンにし、ファイアウォールのいくつかの穴を開くためにiptablesを設定するだけで、あまりにも派手なことはありません。

最近、私の友人はパフォーマンスの問題を指摘しました。単一TCP接続は非常に悪い性能が低下しているようです。まともな速度を取得するには、複数の並列TCP接続を開く必要があります。

たとえば、10 Mビットのインターネット接続があります。 Downthemallのようなものを使って既知の速いソースからファイルをダウンロードするとき! Firefox(複数の並列TCP接続を開く)の拡張機能は、約1 MB/sで私のダウンストリーム帯域幅を最大出力にすることができます。ただし、Firefoxの組み込みダウンロードマネージャを使用して同じファイルをダウンロードすると(単一のTCP接続のみを使用します)。 /NS。

私は内部ネットワークをチェックしました、そしてそれは問題があるようです。すべて100 Mビットスイッチを通過します。また、(ルータからマイデスクトップへ)および外部から(私のデスクトップからNETに自分のデスクトップからLinuxボックスまで)、問題を見ていない問題もありません。それはそれがそうであるべきですね。 SpeedTest.netは10 MBのスピードも報告します。

Linuxマシンの負荷は約0.00、0.00、0.00であり、常にたくさんの無料RAMがあります。 Pentium M 1.6 GHzプロセッサと1 GBのRAMが付いている古いラップトップです。内部ネットワークは内蔵インテルNICに接続され、ケーブルモデムは NetGear FA511 32ビットPCMCIAネットワークに接続されています。カード。

私は問題がルーターのパケット転送を伴うものであると思いますが、私は正直に問題があるかもしれない場所はわかりません。単一TCPストリームを実質的に遅くすることはありますか?

2
Bob Somers

問題は修正されました。マシン上のある種のハードウェアの問題(まだわかりません)がありました。同じLinux Distroをインストールし、ファイアウォールとパケットを別のマシンで同じ方法で再設定した後、問題が発生していません。

変。

1
Bob Somers

これは、リモートエンドまたはISPのどちらかでストリームごとのパフォーマンスの問題です。間に)。

あなたの終わりに障害があることはほとんどありません。

問題が輻輳時にこれがどのように機能するかの例として、10000KBYTE/SEC接続を持つWebサーバーと他の制限/ボトルネックを想像してみてください。大規模なオブジェクトをダウンロードするアクティブな接続がある場合は、それぞれ(各クライアントとサーバーの間の輻輳の違いと輻輳の違いによって引き起こされる)が平均して約100KBYTE /秒を取得します。 1つではなく5つの接続を開いた場合は、480KByte/sec(10000/104 * 5)のようになっていますが、各シングルストリームは95KBYTE /秒の行に沿って何かを取得します(10000/104 * 1)。もちろんこの例では、複数の接続を使用している唯一のものです。これは実際の生活の中でそうである可能性は低いです。また、この数学は、輻輳下のトラフィック管理が各ストリームに与えられた公正な平均レートをもたらす場合にのみ機能します。これは、これが異なる原因となる多くの要因があります。また、トラフィック管理は一番上にホスト制限ごとに一部を課す可能性があります。ストリーム1の明示的または黙示的なもの。

0
David Spillett