Skip to content

quobyte/network-tester

Repository files navigation

Network tester

This is a network tester playbook, which uses HP Netperf and Flent under the hood. The test is based on a mixed TCP/UDP/ICMP workload that is executed over three different client-server set configurations (1xM, Nx1, NxM). This software requires python 3.6 and ansible >= 2.4, which is used to install and execute the tests across all machines. The playbook has been tested on the following OS platforms: RHEL/CentOS 7.x, Ubuntu 18.04, and Rocky 9.

Installation

Start cloning this repository on the host where you would like to run the test. Go to the root of the repository, then install ansible packages with the following:

ansible-galaxy collection install -r requirements.yaml

All further dependencies will be installed by the install role of the playbook. Be aware that this includes adding package repositories and installing software from them. See the network_diag_install tasks and defaults for more details.

Preparations

To complete this test, it is essential that the host running the ansible code can perform password-less sudo and that all target hosts are accessible via SSH.

We recommend using SSH keys for authentication, although passwords also can be used. You may rely on your current SSH client configuration or provide authentication data explicitly in the file group_vars/netdiag_hosts.yaml. Refer to Ansible documentation for further information. Log in once to each host for them to be added to trusted hosts.

Make sure that the firewall configuration of all hosts allows pings and TCP connections on ports in the range of 5000-65536.

Further, the following conditions must be met:

Hosts are divided into two sets: clients and servers. The sets may overlap, but since this playbook is about network testing, disjoint set configuration is recommended. Populate the inventory_file accordingly. When you open the inventory_file, it will look like this:

Inventory File

You will now populate the netdiag_clients section with the hostname or IP’s of the client machines, with one per line and no punctuation between lines. Then you will do the same for servers in the netdiag_servers section. An example of an inventory_file for a disjoint set configuration is shown below:

Example inventory File

For a typical Quobyte installation, you will want to run two tests - one between actual client and server machines and one between one half of the servers as clients, and the other half as servers.

To verify that the configuration is correct and that all of the listed machines are accessible, run the following:

ansible -i inventory_file -m ping -b all

The command must produce no errors. The output should look something like this, and be indicated with a SUCCESS message for each machine:

Inventory Ping

Due to extensive use of sockets, the user on behalf of which tests are executed should be granted very high or unlimited file descriptor limits on target hosts. This is typically done by the ansible command execution automatically.

Test execution

To install dependencies, run the test, and clean up afterwards in one go, run:

ansible-playbook -i inventory_file netdiag.yaml

You can also split that into three phases:

ansible-playbook -i inventory_file netdiag.yaml -t install
ansible-playbook -i inventory_file netdiag.yaml -t test
ansible-playbook -i inventory_file netdiag.yaml -t cleanup

Test results are stored on an ansible host at /tmp/quobyte_netdiag_data. The results can be inspected with the flent-gui and help identify a range of issues in the network. It is important to include a representative set of servers and client machines, in particular if the machines are on different leaf switches, e.g. include machines so that communication between them must traverse the spine.

Once you have the results from the test runs, you can visualize them with flent-gui. Installation of this tool depends on your distribution. Once you have the flent-gui installed, you have to copy the flent config file from network-tester/roles/network_diag_traffic/files/rrul_be_nflows_mulithost.conf into the flent config directory. The location of that directory depends on how you installed flent-gui (package vs. python pip), e.g. /usr/local/lib/python3.9/site-packages/flent/tests.

When the configuration file is in place, navigate to your results directory, /tmp/quobyte_netdiag_data. From here, you may run

flent-gui

The GUI will pop up and from there you may select files from your results directory to visualize. Example plots rendered from the flent-gui are pictured below:

Download, Upload, Ping (scaled)

Combined Total Bandwidth and Average Ping Plot

Total Bandwidth and Average Ping Plot

Legal notice

Product names and brands found in the repository are property of their respective owners. The playbook is distributed under Apache License 2.0.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 5