0

私がここで最初に達成しようとしていることについての小さな情報。Texas Instrument ボード EVM6678LE を使用しています。ボードと PC 間の UDP 転送速度を上げようとしています。

PC の MTU を netsh>interface>ipv4 で 15,000 に増やしました。しかし、PC からボードに ping を実行すると、「ping 192.168.2.100 -l 10194」までしか ping できません。195 バイト以降で ping を実行すると、リクエスト タイムアウトが発生します。これは私のPCの制限か何かですか?

これの考えられる原因は何ですか?アドバイスや提案は大歓迎です。転送速度を上げる唯一の方法として、パケットごとのサイズを増やしてオーバーヘッドを減らすことが考えられます。そして、10k で約 9.1MB/s のレートがあり、25MB/s を達成しようとしています。

ありがとう!

4

1 に答える 1

0

PC の MTU を増やしても、断片化を防止できない場合があります。何がこれを制御しているのか正確にはわかりませんが、ネットワーク カードまたはドライバーは、MTU に達していなくてもパケットを断片化できます。Wireshark などのスニファーを使用して、パケットがどのように送信されるかを確認します。

タイムアウトについては、ボードがフラグメント化された ping を拒否する可能性があります (Ping of Death 保護のため)。また、パケット バッファの長さが 10kB (10240) バイトであり、それより大きいパケットを受信できない可能性もあります。また、受信エンドポイントの MTU が一致していることを確認してください。

とにかく、転送速度を上げようとしているのなら、間違った方向に進んでいます。UDP のオーバーヘッドは 8 バイト、IP は 20 バイト、イーサネットは 18 バイトで、合計 46 バイトになります (偶然、46+10194 は正確に 10240 です)。1024 MTU の 46 バイトのオーバーヘッドは 95.5% です。4096 の 46 バイトは 98.9%、16384 の 46 バイトは 99.7% です。つまり、1024 MTU から 4096 MTU まで +3.5% の転送速度が得られ、4096 から 16384 までさらに +0.8% の転送速度が得られます。この増加はばかげているので、MTU を一般的なデフォルトの 1500 にする必要があります。

とにかく、MTU を変更するだけで 9.1MB/s から 25MB/s に変更することは不可能です (変更した場合、なぜ PC のデフォルトが高くないのでしょうか?)。ここでは、Fast Ethernet (100BASE-T) を使用していると思いますが、すでにほぼ全帯域幅で転送しています。より高い速度を得るには、ギガビット イーサネット (1000BASE‑T) が必要です。つまり、1000BASE-T をサポートするには両方のハードウェア エンドポイントが必要です。

于 2015-01-13T09:50:52.577 に答える