Linux Test Bandwidth Between Two Servers

RIPPED DIRECTLY FROM:  http://linuxaria.com/article/tool-command-line-bandwidth-linux

[expand title=”3 Command line tools to test bandwidth between 2 servers “]

One element that is often not know, or that should be measured after a problem statement or after a change in the infrastructure is the network . But how do you accurately measure the speed between two servers?

Someone use ftp, scp or other file transfer protocols, these can give some indication, but probably you’ll measure the limit of your disks or CPU.

In this article I will show you 3 way to measure the bandwidth from the command line, without using the disks.

Iperf

Iperf was developed by NLANR/DAST as a modern alternative for measuring maximum TCP and UDP bandwidth performance. Iperf allows the tuning of various parameters and UDP characteristics. Iperf reports bandwidth, delay jitter, datagram loss.

The quality of a link can be tested as follows:
– Latency (response time or RTT): can be measured with the Ping command.
– Jitter (latency variation): can be measured with an Iperf UDP test.
– Datagram loss: can be measured with an Iperf UDP test.

The bandwidth is measured through TCP tests.

To be clear, the difference between TCP (Transmission Control Protocol) and UDP (User Datagram Protocol) is that TCP use processes to check that the packets are correctly sent to the receiver whereas with UDP the packets are sent without any checks but with the advantage of being quicker than TCP.
Iperf uses the different capacities of TCP and UDP to provide statistics about network links.

With Iperf you have a server machine where iperf put itself in listening and the other that is the client that send the informations.

Example:

Iperf-example

 

Basic usage:

Server side:

#iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 8.00 KByte (default)
------------------------------------------------------------
[852] local 10.1.1.1 port 5001 connected with 10.6.2.5 port 54355
[ ID]   Interval          Transfer        Bandwidth
[852]   0.0-10.1 sec   1.15 MBytes   956 Kbits/sec
------------------------------------------------------------
Client connecting to 10.6.2.5, TCP port 5001
TCP window size: 8.00 KByte (default)
------------------------------------------------------------
[824] local 10.1.1.1 port 1646 connected with 10.6.2.5 port 5001
[ ID]   Interval          Transfer        Bandwidth
[824]   0.0-10.0 sec   73.3 MBytes   61.4 Mbits/sec

Client side

#iperf -c 10.1.1.1 -d
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
------------------------------------------------------------
Client connecting to 10.1.1.1, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[ 5] local 10.6.2.5 port 60270 connected with 10.1.1.1 port 5001
[ 4] local 10.6.2.5 port 5001 connected with 10.1.1.1 port 2643
[ 4] 0.0-10.0 sec 76.3 MBytes 63.9 Mbits/sec
[ 5] 0.0-10.1 sec 1.55 MBytes 1.29 Mbits/sec

So using Iperf (with appropriate flags) on both our machines we can simply measure the bandwidth between them.

Iperf is available also for Windows.

Complete guide: http://openmaniak.com/iperf.php

 

Netcat

To eliminate the disks from having any part of the transfer, we will use netcat transferring the output of command yes. Netcat is described as being a “feature-rich network debugging and exploration tool”. It can be obtained from Source Forge, or it may already be available in your distribution.

Again we will use one of the machines as a server that receives the data and the other as a client that sends the information.

Basic usage
On th server machine

nc -v -v -l -n  2222 >/dev/null
listening on [any] 2222 ...

On the client machine

time yes|nc -v -v -n 10.1.1.1 2222 >/dev/null

On client stop the process  after 10 seconds (more or less) with ctrl-c, you’ll get something like:

sent 87478272, rcvd 0

real 0m9.993s
user 0m2.075s
sys 0m0.939s

On the server machine, note the data received (in bytes)

 sent 0, rcvd 87478392

Now multiply the bytes rcvd by 8 to get total bits, then divide by the time: Result in this example is 70Mb/s

Reference: http://deice.daug.net/netcat_speed.html

Bandwidth Test Controller (BWCTL)

BWCTL is a command line client application and a scheduling and policy daemon. These tests can measure maximum TCP bandwidth, with various tuning options available, or, by doing a UDP test, the delay, jitter, and datagram loss of a network.

The bwctl client application works by contacting a bwctld process on the two test endpoint systems. BWCTL will work as a 3-party application. The client can arrange a test between two servers on two different systems. If the local system is intended to be one of the endpoints of the test, bwctl will detect whether a local bwctld is running and will handle the required server functionality if needed.

The bwctl client is used to request the type of throughput test wanted. Furthermore, it requests when the test should be executed. bwctld either responds with a tentative reservation or a test denied message. Once bwctl is able to get a matching reservation from both bwctld processes (one for each host involved in the test), it confirms the reservation. Then, the bwctld processes run the test and return the results. The results are returned to the client from both sides of the test. Additionally, the bwctld processes share the results from their respective sides of the test with each other.

bwctl-example

For more information check the man page: http://www.internet2.edu/performance/bwctl/manpages.html[/expand]

Wise exe switches

Ripped directly from http://www.symantec.com/connect/blogs/wisescript-command-line-options

NOTE: I did find for Aleph that when running the uninstaller (unwise32.exe) I needed to use the shorthand C:Progra~1<<INSTALLDIR>>INSTALL.LOG syntax for it to find the log file.

[expand Title=”You can apply the following command line options to the WSE file. Command line options let you compile as well as set properties.”]

/c file.wse
Compiles the installation script.
/c /s file.wse
Compiles the installation script silently. You can use this option with the /d option.
WiseScript Installations Command Line Options

You can apply the following command line options to compiled .EXE files.

/M
Runs the installation in manual mode, prompting for system directories (examples: Windows, System).
/M=filename
Specifies a value file for installation.
/S
Installs in silent (automatic) mode with no end user choices.
Uninstall Command Line Options

You can apply the following command line options to the WiseScript Express uninstall executable file, unwise.exe or unwise32.exe.

/Z
Removes empty directories, including the one containing Unwise.
/A
Automatic mode. The Wise splash screen appears on the destination computer, and the uninstall proceeds immediately with no end user choices, except for questions about uninstalling shared files.
/S
Silent mode. The uninstall proceeds silently with no splash screen, no dialogs, and no end user choices.
/R
Rollback mode.
/U
Removes the Select Uninstall Method dialog, which means the end user does not see options for a custom, automatic, or repair uninstall.
When you use command line options for the uninstall program, you must send it the path to the log file as a parameter. It must be the log file that is in the same folder as unwise.exe. If the path to the log file contains spaces, it must be surrounded by quotation marks.

Example:
“C:Program FilesApplicationUNWISE.EXE” /A “C:Program FilesApplicationINSTALL.LOG” Application Uninstall[/expand]

msiexec error codes

taken from http://www.msierrors.com/tag/1618/

 

[expand title=”msiexec codes”]

VALUE RETURNED
ERROR CODE
ERROR DESCRIPTION
SOLUTION
0
ERROR_SUCCESS
Action completed successfully.
Nothing to be done
13
ERROR_INVALID_DATA
The data is invalid
87
ERROR_INVALID_PARAMETER
One of the parameters was invalid.
1601
ERROR_INSTALL_SERVICE_FAILURE
The Windows Installer service could not be accessed. Contact your support personnel to verify that the Windows Installer service is properly registered.
There’s a problem with the Windows Installer Service. It might happen after a KB that affects it has just been installed. Solution: Restarting the machine usually solves the problem.
1602
ERROR_INSTALL_USEREXIT
User cancel installation.
The user has cancelled the installation. Solution: just don’t cancel it
1603
ERROR_INSTALL_FAILURE
Fatal error during installation.
It’s the most common error code. It means something is wrong with the package.
1604
ERROR_INSTALL_SUSPEND
Installation suspended, incomplete.
1605
ERROR_UNKNOWN_PRODUCT
This action is only valid for products that are currently installed.
This happens when you try to uninstall/repair an MSI using its product code. Solution: Check if the product is installed first. For example, the existance of HKCRInstallerProductshash corresponding key
1606
ERROR_UNKNOWN_FEATURE
Feature ID not registered.
1607
ERROR_UNKNOWN_COMPONENT
Component ID not registered.
1608
ERROR_UNKNOWN_PROPERTY
Unknown property.
1609
ERROR_INVALID_HANDLE_STATE
Handle is in an invalid state.
1610
ERROR_BAD_CONFIGURATION
The configuration data for this product is corrupted. Contact your support personnel.
1611
ERROR_INDEX_ABSENT
Component qualifier not present.
1612
ERROR_INSTALL_SOURCE_ABSENT
The installation source for this product is not available. Verify that the source exists and that you can access it.
1613
ERROR_INSTALL_PACKAGE_VERSION
This installation package cannot be installed by the Windows Installer service. You must install a Windows service pack that contains a newer version of the Windows Installer service.
1614
ERROR_PRODUCT_UNINSTALLED
Product is uninstalled.
1615
ERROR_BAD_QUERY_SYNTAX
SQL query syntax invalid or unsupported.
1616
ERROR_INVALID_FIELD
Record field does not exist.
1618
ERROR_INSTALL_ALREADY_RUNNING
Another installation is already in progress. Complete that installation before proceeding with this install.
This happens when you try to install a product while another installation is in progress. Solution: Wait until the previous installation is finished.
1619
ERROR_INSTALL_PACKAGE_OPEN_FAILED
This installation package could not be opened. Verify that the package exists and that you can access it, or contact the application vendor to verify that this is a valid Windows Installer package.
Either the file (MSI) doesn’t exist, or it’s being locked for editing (by tools such as Orca, insted, etc). Solution: Check the location and make sure no process holds it locked.
1620
ERROR_INSTALL_PACKAGE_INVALID
This installation package could not be opened. Contact the application vendor to verify that this is a valid Windows Installer package.
1621
ERROR_INSTALL_UI_FAILURE
There was an error starting the Windows Installer service user interface. Contact your support personnel.
1622
ERROR_INSTALL_LOG_FAILURE
Error opening installation log file. Verify that the specified log file location exists and is writable.
Solution: Make sure you have the permissions to write to the log file. Or change its location.
1623
ERROR_INSTALL_LANGUAGE_UNSUPPORTED
This language of this installation package is not supported by your system.
1624
ERROR_INSTALL_TRANSFORM_FAILURE
Error applying transforms. Verify that the specified transform paths are valid.
Solution: Make sure the path to the MST is correct.
1625
ERROR_INSTALL_PACKAGE_REJECTED
This installation is forbidden by system policy. Contact your system administrator.
1626
ERROR_FUNCTION_NOT_CALLED
Function could not be executed.
1627
ERROR_FUNCTION_FAILED
Function failed during execution.
1628
ERROR_INVALID_TABLE
Invalid or unknown table specified.
1629
ERROR_DATATYPE_MISMATCH
Data supplied is of wrong type.
1630
ERROR_UNSUPPORTED_TYPE
Data of this type is not supported.
1631
ERROR_CREATE_FAILED
The Windows Installer service failed to start. Contact your support personnel.
1632
ERROR_INSTALL_TEMP_UNWRITABLE
The temp folder is either full or inaccessible. Verify that the temp folder exists and that you can write to it.
1633
ERROR_INSTALL_PLATFORM_UNSUPPORTED
This installation package is not supported on this platform. Contact your application vendor.
1634
ERROR_INSTALL_NOTUSED
Component not used on this computer.
1635
ERROR_PATCH_PACKAGE_OPEN_FAILED
This patch package could not be opened. Verify that the patch package exists and that you can access it, or contact the application vendor to verify that this is a valid Windows Installer patch package.
1636
ERROR_PATCH_PACKAGE_INVALID
This patch package could not be opened. Contact the application vendor to verify that this is a valid Windows Installer patch package.
1637
ERROR_PATCH_PACKAGE_UNSUPPORTED
This patch package cannot be processed by the Windows Installer service. You must install a Windows service pack that contains a newer version of the Windows Installer service.
1638
ERROR_PRODUCT_VERSION
Another version of this product is already installed. Installation of this version cannot continue. To configure or remove the existing version of this product, use Add/Remove Programs in Control Panel.
1639
ERROR_INVALID_COMMAND_LINE
Invalid command line argument. Consult the Windows Installer SDK for detailed command line help.
1640
ERROR_INSTALL_REMOTE_DISALLOWED
Installation from a Terminal Server client session not permitted for current user.
1641
ERROR_SUCCESS_REBOOT_INITIATED
The installer has started a reboot.
1642
ERROR_PATCH_TARGET_NOT_FOUND
The installer cannot install the upgrade patch because the program being upgraded may be missing, or the upgrade patch updates a different version of the program. Verify that the program to be upgraded exists on your computer and that you have the correct upgrade patch.
3010
ERROR_SUCCESS_REBOOT_REQUIRED
A restart is required to complete the install. This does not include installs where the ForceReboot action is run.

[/expand]

Windows Registry Key Permissions

To take change ownership of registry keys in Windows use of the regini.exe tool seems simplest.

[expand title=”MS KB 245031 describes using a script that regini.exe calls to execute, basically just the registry key referenced in a text file:”]

Install the latest version of the Windows NT Server 4.0 Resource Kit.
Create a script file that contains the change commands:
Start any text editor (such as Notepad).
Type the registry keys and the appropriate permissions in the following format
Registryhivekey [permissions]
where hive is the name of the registry hive, key is the name of the registry key, and [permissions] is the binary number format of the permissions. 

For example, to modify the HKEY_LOCAL_MACHINESoftware registry key to give the Administrators group and the Creator/Owner group Full Control permission and the Everyone group Read permission, type the following string:
RegistryMachineSoftware [1 5 8]
NOTE: You must type the permissions in the binary number format. You must also refer to the registry hive in the predefined format. For more information about how to refer to a registry hive in a script file and about the binary numbers for various types of permissions, refer to the 'Reference to Registry Hives and Binary Number Representation for Permissions' section in this article.
Save and then close the script file.
Type the following command at a command prompt, and then press ENTER
REGINI [-m \computername] scriptname
where computername is the name of the computer and scriptname is the name of the script file you just created. 

NOTE: Use the -m option only when you edit the registry of a remote computer. Be sure to include the entire path to the script file.
Reference to Registry Hives and Binary Number Representation for Permissions 

Refer to registry hives as indicated below:
  HKEY_LOCAL_MACHINE - RegistryMachine
  HKEY_USERS - RegistryUsers
  HKEY_CURRENT_USER - RegistryUserUser_SID (where User_SID is the current user's security identifier)

[/expand]

http://support.microsoft.com/Default.aspx?kbid=245031

 

[expand title=”MS KB 237607 describes permissions levels:”]

 1  - Administrators Full Access
 2  - Administrators Read Access
 3  - Administrators Read and Write Access 
 4  - Administrators Read, Write and Delete Access
 5  - Creator Full Access
 6  - Creator Read and Write Access
 7  - World Full Access
 8  - World Read Access
 9  - World Read and Write Access
 10 - World Read, Write and Delete Access
 11 - Power Users Full Access
 12 - Power Users Read and Write Access
 13 - Power Users Read, Write and Delete Access
 14 - System Operators Full Access
 15 - System Operators Read and Write Access
 16 - System Operators Read, Write and Delete Access
 17 - System Full Access
 18 - System Read and Write Access
 19 - System Read Access
 20 - Administrators Read, Write and Execute Access
 21 - Interactive User Full Access
 22 - Interactive User Read and Write Access
 23 - Interactive User Read, Write and Delete Access

[/expand]

http://support.microsoft.com/?kbid=237607