web-dev-qa-db-ja.com

UDP。送信速度は、最小限のイーサネットアダプタ構成によって制限されます

私のコンピュータには1Gbitイーサネットアダプタがあります。そして、私はイーサネットアダプタを備えた他のコンピュータを持っています100Mbit。 1つのLANにあり、1Gbitスイッチを介して接続されています。

1テスト:コンピュータ(1Gbit)から他の(100Mbit)にパケットを[〜#〜] udp [〜#〜]高速で送信しようとしています- 以上 100Mbps。

期待される結果:速度は100Mbps以上です。一部のパケットは受信側のコンピューター(100Mbit)で失われます。

実際の結果:速度は100Mbps未満(約95〜98Mbps)です。すべてのパケットは受信側のコンピューター(100Mbit)で受信されます。

送信側のコード(PowerShellを使用):

$ipEndPoint = New-Object -TypeName System.Net.IPEndPoint -ArgumentList @([System.Net.IPAddress]::Parse("192.168.102.46"), 15000)
$udpClient = New-Object -TypeName System.Net.Sockets.UdpClient
$udpClient.Connect($ipEndPoint)

while ($true) {
  $bytes = [System.Byte[]]::CreateInstance([System.Byte], 1400)
  $udpClient.Send($bytes, $bytes.Length)
}

2テスト:同じテストですが、DPブロードキャストを現在のLANに送信しようとしています。

期待される結果:速度は100Mbps以上です。一部のパケットは受信側のコンピューター(100Mbit)で失われます。

実際の結果:速度は100Mbps未満(約95〜98Mbps)です。すべてのパケットは受信側のコンピューター(100Mbit)で受信されます。

送信側のコード(PowerShellを使用):

$ipEndPoint = New-Object -TypeName System.Net.IPEndPoint -ArgumentList @([System.Net.IPAddress]::Parse("192.168.102.255"), 15000)
$udpClient = New-Object -TypeName System.Net.Sockets.UdpClient
$udpClient.EnableBroadcast = $true
$udpClient.Connect($ipEndPoint)

while ($true) {
  $bytes = [System.Byte[]]::CreateInstance([System.Byte], 1400)
  $udpClient.Send($bytes, $bytes.Length)
}

注:

  1. 次の構成である送信コンピューター(1Gbit)、受信(1Gbit)について、上記のコードをテストしました。 100Mbps以上の速度で送ってみましたが、実は100Mbps以上でした。
  2. 受信側コンピューターの最初の2つのテストアダプター設定を100Mbitから10Mbitに変更しました。その結果、実際の速度は10 + Mbpsではなく約7〜9Mbpsになります。

助けてください、なぜ期待した結果が得られないのですか?

2

スイッチがフロー制御をサポートしている場合、ホストに一時停止フレームを送信して、転送先のポートで許容できる速度に送信速度を制限している可能性があります。

NICの詳細設定を確認し、そのような設定が利用可能な場合はフロー制御を無効にすることができます。

1
Tomek