私のコンピュータには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)
}
注:
助けてください、なぜ期待した結果が得られないのですか?
スイッチがフロー制御をサポートしている場合、ホストに一時停止フレームを送信して、転送先のポートで許容できる速度に送信速度を制限している可能性があります。
NICの詳細設定を確認し、そのような設定が利用可能な場合はフロー制御を無効にすることができます。