3.8.Ethernet-throughput interactions

  • Sequence Diagram

  • Programming

    • 1.iperf UDP server

              $p = Start-Process -FilePath "$serverDrive\$serverShareFolder\$iperfdir\iperf.exe" -ArgumentList "-s -u -w 256k"
              #echo  $p
              $id=(get-process iperf).Id
              Wait-Process -id $id -timeout ($timeout_iperf +20)
      
              $iperf = Get-Process iperf -ErrorAction SilentlyContinue
              if ($iperf) {
                taskkill /T /F /PID $id
              }
    • 2.iperf UDP client

              $_bandwidth=$bandwidth+"M"  
              $pinfo = New-Object System.Diagnostics.ProcessStartInfo
              $pinfo.FileName = "$serverDrive\$serverShareFolder\$iperfdir\iperf.exe" 
              $pinfo.Arguments="-u -c $clientIP -t $timeout_iperf -i 1 -f 'm' -b $_bandwidth -w 256k"
              $pinfo.UseShellExecute = $false
              $pinfo.CreateNoWindow = $true
              $pinfo.RedirectStandardOutput = $true
              $p = New-Object System.Diagnostics.Process
              $p.StartInfo = $pinfo
              $p.Start() | Out-Null
              $p.WaitForExit()
              $stdout = $p.StandardOutput.ReadToEnd()
    • 3.iperf TCP server

              $p = Start-Process -FilePath "$serverDrive\$serverShareFolder\$iperfdir\iperf.exe" -ArgumentList "-s -w 256k"
              $id=(get-process iperf).Id
              Wait-Process -id $id -timeout ($timeout_iperf +20)
              $iperf = Get-Process iperf -ErrorAction SilentlyContinue
              if ($iperf) {
                taskkill /T /F /PID $id
              }
    • 4.iperf TCP client

            $pinfo = New-Object System.Diagnostics.ProcessStartInfo
            $pinfo.FileName = "$serverDrive\$serverShareFolder\$iperfdir\iperf.exe"
            $pinfo.Arguments="-c $clientIP -t $timeout_iperf -i 1 -f 'm' -w 256k"
            $pinfo.UseShellExecute = $false
            $pinfo.CreateNoWindow = $true
            $pinfo.RedirectStandardOutput = $true
            $p = New-Object System.Diagnostics.Process
            $p.StartInfo = $pinfo
            $p.Start() | Out-Null
            $p.WaitForExit()
            $stdout = $p.StandardOutput.ReadToEnd()
  • 5.Change NIC speed & duplex mode

            Param (   
                         [parameter(mandatory=$False,HelpMessage='threshold for performane test')]      
                         [string]$computer
                         [parameter(mandatory=$False,HelpMessage='disk type for performane test')]     
                         [string]$speed = "1"     
             )  
          #"0" {$duplex = "Auto Detect"}            
          #"1" {$duplex = "10Mbps \ Half Duplex"}            
          #"2" {$duplex = "10Mbps \ Full Duplex"}            
          #"3" {$duplex = "100Mbps \ Half Duplex"}            
          #"4" {$duplex = "100Mbps \ Full Duplex"}     
          #"6" {$duplex = "1Gbps \ Full Duplex"}     

          #$computer = "192.168.31.22"
          #$speed = "1"
          $HKLM = 2147483650            
          $reg = [wmiclass]"\\$computer\root\default:StdRegprov"            
          $keyroot = "SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}"            

          Get-WmiObject -Class Win32_NetworkAdapterConfiguration -ComputerName $computer -Filter "IPEnabled='$true'" |            
          foreach {            

              $data = $_.Caption -split "]"            
              $suffix = $data[0].Substring(($data[0].length-4),4)            
              $key = $keyroot + "\$suffix" 

              $value = "*SpeedDuplex"            
              $dup = $reg.SetStringValue($HKLM, $key, $value, $speed)  ## REG_SZ       

              $nic = $_.GetRelated("Win32_NetworkAdapter") | select Speed, NetConnectionId            

              netsh interface set interface $nic.NetConnectionID DISABLED  
              netsh interface set interface $nic.NetConnectionID ENABLED 
          }

Last updated

Was this helpful?