私のLANには、Sambaサーバーを実行するルーターがあり、PCはルーターに接続します。
サーバーへのアップロードとサーバーからのダウンロード中にワイヤーシャークを実行しました。
Wiresharkの結果は次のことを示しています。
その結果、ダウンロードでは約120,000フレームが生成されますが、アップロードでは70,000フレームしか生成されません。また、ダウンロード速度は約12.7Mバイト/秒、アップロード速度は20Mバイト/秒です。
だから私はこれの考えられる理由を理解したいと思います。
返されるACKパケットの量を減らすには、主に2つのメカニズムがあります。NagleアルゴリズムとDelayed ACKで、どちらも RFC 1122 で説明されています。どちらもオプションであるため、それらを使用しないように構成されているか、適切な実装が欠落しているホストがあります。 特に、構成でsocket options = TCP_NODELAY
を使用することにより、SambaにNagleアルゴリズムを無効にするように指示できます 。
SMBファイルコピーのアップストリーム/ダウンストリームデータレートの違いには、TCP ACKパケットが豊富にあること以外の理由がある可能性があります。
TCP実装は1つおきのデータパケットをACKします。したがって、通常、2つのデータパケットが受信されてからACKが送信されます。もちろん、送信者はACKを待機していません。 ACKがない場合でも、ウィンドウがいっぱいになるまで送信を続けます。
Nagleや遅延ACKなど、ここで潜在的に関係している他の要因があります。しかし、あなたがそれらの影響を見ているようには見えません。