# Flent: The FLExible Network Tester

## Installing Flent

Installing Flent can be done in several ways, depending on your operating system:

- Arch Linux:

  Install Flent from the AUR.

- Debian and Ubuntu:

  >     apt install flent

- Fedora:

  >     dnf install flent

- Gentoo: (supported in pkalin overlay)

  >     eselect repository enable pkalin && eix-sync
  >     emerge net-analyzer/flent

- Nix:

  Flent is available in nixpkgs through the flent attribute.

- Ubuntu pre-18.04:

  Add the tohojo/flent PPA.

- Other Linux:

  Install from the Python Package Index:

  >     pip install flent

- FreeBSD:

  Install the package

  >     pkg install flent

  Or install the port

  >     cd /usr/ports/net/flent && make install

- macOS:

  Homebrew and Python 3 must be installed (Python 3 can be installed using Homebrew)

  Install the patched netperf package

  >     brew tap kris-anderson/netperf
  >     brew install netperf-enable-demo

  Install other dependencies

  >     brew install fping
  >     pip3 install matplotlib --user

  Install Flent using pip

  >     pip3 install flent --user

  Optional (install this if you want to use flent-gui)

  >     pip3 install pyqt5 qtpy --user

# Quick start

You must run netperf on two computers - a server and a client.

1. Server (Computer 1): Netperf needs to be started in “server mode” to listen for commands from the Client. To do this, install netperf on the Server computer, then enter:

   `netserver &`

   Note: Instead of installing netperf on a local server, you may substitute the netserver that is running on netperf.bufferbloat.net by using `-H netperf.bufferbloat.net` in the commands below.

   List of public hosts you can test against:

   - netperf.bufferbloat.net (also called netperf-east.bufferbloat.net)

   - netperf-west.bufferbloat.net

   - netperf-eu.bufferbloat.net

2. Client (Computer 2): Install netperf, then install flent on your Client computer. When you invoke flent on the Client, it will connect to the specified netserver (`-H`) and carry out the measurements. Here are some useful commands:

   - RRUL: Create the standard graphic image used by the Bufferbloat project to show the down/upload speeds plus latency in three separate charts:

         flent rrul -p all_scaled -l 60 -H address-of-netserver -t text-to-be-included-in-plot -o filename.png

   - CDF: A Cumulative Distribution Function plot showing the probability that ping times will be below a bound:

         flent rrul -p ping_cdf -l 60 -H address-of-netserver -t text-to-be-included-in-plot -o filename.png

   - TCP Upload: Displays TCP upload speed and latency in two charts:

         flent tcp_upload -p totals -l 60 -H address-of-netserver -t text-to-be-included-in-plot -o filename.png

   - TCP Download: Displays TCP download speeds and latency in two charts:

         flent tcp_download -p totals -l 60 -H address-of-netserver -t text-to-be-included-in-plot -o filename.png

The output of each of these commands is a graphic (PNG) image along with a data file in the current working directory that can be used to re-create the plot, either from the command line (see Running Flent), or by loading them into the GUI. Run flent-gui to start the GUI.