3 Command line tool 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.
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
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.
16 Useful Bandwidth Monitoring Tools to Analyze Network Usage in Linux
Are you having problems monitoring your Linux network bandwidth usage? Do you need help? It’s important that you are able to visualize what is happening in your network in order to understand and resolve whatever is causing network slowness or simply to keep an eye on your network.
In this article, we will review 16 useful bandwidth monitoring tools to analyze network usage on a Linux system.
If you are looking to manage, troubleshoot or debug your Network, then read our article – A Linux Sysadmin’s Guide to Network Management, Troubleshooting and Debugging
The tools listed below are all open source and can help you to answer questions such as “why is the network so slow today?”. This article includes a mix of small tools for monitoring bandwidth on a single Linux machine and complete monitoring solutions capable of handling a few number of hosts on a LAN (Local Area Network) to multiple host even on a WAN (Wide Area Network).
ManageEngine Netflow Analyzer
ManageEngine NetFlow Analyzer is a flow-based bandwidth monitoring solution that offers multi-vendor support. It monitors your network, analyzes traffic patterns, and detects and diagnoses bandwidth hogs.
You can track the traffic patterns in your network over any period of time, and drill down further into the device, interface, application, and user-level details. With its traffic shaping abilities, NetFlow Analyzer helps you identify network anomalies in real-time and troubleshoot them before they affect your end-users.
With its customizable reports, NetFlow Analyzer also helps you predict and plan your bandwidth requirements. You can create, schedule, and generate comprehensive bandwidth analysis reports in just a few clicks.
ManageEngine Netflow Analyzer
1. vnStat – A Network Traffic Monitor
VnStat is a fully-featured, command line-based program to monitor Linux network traffic and bandwidth utilization in real-time, on Linux and BSD systems.
Vnstat Network Traffic Monitor Tool
One advantage it has over similar tool is that it logs network traffic and bandwidth usage statistics for later analysis – this is its default behavior. You can actually view these logs even after system reboots.
Install VnStat in Linux
2. iftop – Displays Bandwidth Usage
iftop is a simple, easy to use, real time top-like command line based network bandwidth monitoring tool, used to get a quick overview of network activities on an interface. It displays network usage bandwidth updates every 2, 10 and 40 seconds on average.
Iftop Display Bandwidth Usage
Install iftop in Linux
3. nload – Displays Network Usage
nload is a another simple, easy to use command-line tool for monitoring network traffic and bandwidth usage in real time. It uses graphs to help you monitor inbound and outbound traffic. In addition, it also displays information such as the total amount of transfered data and min/max network usage.
nload – Monitor Network Usage
Install nload in Linux
4. NetHogs – Monitor Network Traffic Bandwidth
NetHogs is a tiny top-like, text-based tool to monitor real time network traffic bandwidth usage by each process or application running on a Linux system. It simply offers real time statistics of your network bandwidth usage on a per-process basis.
NetHogs – Monitor Network Usage Per User
Install NetHogs in Linux
5. bmon – Bandwidth Monitor and Rate Estimator
bmon is also a straightforward command line tool for monitoring network bandwidth utilization and a rate estimator, in Linux. It captures network statistics and visualizes them in a human friendly format so that you can keep an eye on your system.
Bmon – Bandwidth Monitor and Rate Estimator
Install Bmon in Linux
6. Darkstat – Captures Network Traffic
Darkstat is a small, simple, cross-platform, real-time, efficient web-based network traffic analyzer. It is a network statistics monitoring tool that works by capturing network traffic, computes usage statistics, and serves the reports over HTTP in a graphical format. You can also use it via the command line to get the same results.
Darkstat – Captures Network Traffic
Install Darkstat in Linux
7. IPTraf – An IP Network Monitor
IPTraf is an easy to use, ncurses-based and configurable tool for monitoring incoming and outgoing network traffic passing through an interface. It is useful for IP traffic monitoring, and viewing general interface statistics, detailed interface statistics and so much more.
IPTraf – Network Statistics Utility
Install IPTraf in Linux
8. CBM – (Color Bandwidth Meter)
CBM is a tiny command line utility for displaying current network traffic on all connected devices in colored output in Ubuntu Linux and its derivatives such as Linux Mint, Lubuntu and many others. It shows each connected network interface, bytes received, bytes transmitted and total bytes, allowing you to monitor network bandwidth.
CBM – Monitor Network LAN Usage
Install Color Bandwidth Meter in Linux
9. Iperf/Iperf3 – Network Bandwidth Measurement Tool
Iperf/Iperf3 is a powerful tool for measuring network throughput over protocols such as TCP, UDP and SCTP. It is primarily built to help in tuning TCP connections over a particular path, thus useful for testing and monitoring the maximum achievable bandwidth on IP networks (supports both IPv4 and IPv6). It requires a server and a client to perform tests (which reports the bandwidth, loss, and other useful network performance parameters).
Iperf3 – Network Performance and Tuning
Install Iperf3 in Linux
10. Netperf – Network Bandwidth Testing
Netperf is similar to iperf, for testing network performance. It can help in monitoring network bandwidth in Linux by measuring data transfer using either TCP, UDP. It also supports measurements via Berkeley Sockets interface, DLPI, Unix Domain Sockets and so many other interfaces. You need a server and a client to run tests.
Netperf – Network Bandwidth Testing
For installation instruction, check out project github page.
11. SARG – Squid Analysis Report Generator
SARG is a squid log files analyzer and internet bandwidth monitoring tool. It produces useful HTML reports with information including but not limited to IP addresses, and total bandwidth usage. It is a handy tool for monitoring internet bandwidth utilization by individual machines on a single network.
Sarg – Squid Network Analysis Report Generator
For installation instruction and usage, check out our article – How to Install SARG to Monitor Squid Internet Bandwidth Usage.
12. Monitorix – System and Network Monitoring Tool
Monitorix is a lightweight system resources and network monitoring application, designed for small Linux/Unix servers and also comes with amazing support for embedded devices.
It helps you monitor network traffic and usage statistics from unlimited number of network devices. It supports IPv4 and IPv6 connections, includes packet traffic and traffic error graphs, and supports up to 9 qdiscs per network interface.
Monitorix – System and Network Monitoring Tool
Install Monitorix in Linux
13. Cacti – Network Monitoring and Graphing Tool
Cacti is a fully functional, web based network graphing PHP application with an intuitive, easy to use interface. It uses MySQL database for storing data collected network performance data, used to produce customized graphing. It is a frontend to RRDTool, useful for monitoring small to complex networks with thousands of devices.
Cacti – Network Monitoring and Graphing Tool
For installation instruction and usage, check out our article – How to Install Cacti – A Network Monitoring and Graphing Tool.
14. Observium – Network Monitoring Platform
Observium is a fully-featured network monitoring platform with an elegant and powerful, robust yet simple and intuitive interface. It supports a number of platforms including, Linux, Windows, FreeBSD, Cisco, HP, Dell and many others, and includes autodetection of devices. It helps users to gather network metrics and offers intuitive graphing of device metrics from collected performance data.
Observium – Network Monitoring Platform
15. Zabbix – Application and Network Monitoring Tool
Zabbix is a feature-rich, commonly used network monitoring platform, designed in a server-client model, to monitor networks, servers and applications in real time. It collects different types of data that are used for visual representation network performance or load metrics of the monitored devices.
It is capable of working with well known networking protocols such as HTTP, FTP, SMTP, IMAP and many more, without the need to install additional software on the monitored devices.
Zabbix – Monitoring Solution for Linux
16. Nagios – Monitors Systems, Networks and Infrastructure
Nagios is a robust, powerful, feature-rich and widely used monitoring software. It allows you to monitor local and remote network devices and their services from a single window.
It offers bandwidth monitoring in network devices such as switches and Routers via SNMP thus enabling you to easily find out over utilized ports, and pin point possible network abusers.
In addition, Nagios also helps you to keep an eye on per-port bandwidth utilization and errors, and supports fast detection of network outages and protocol failures.
Nagios – IT Infrastructure Monitoring Tool
Summary
In this article, we have reviewed a number of useful network bandwidth and system monitoring tools for Linux. If we’ve missed to include any monitoring tool in the list, do share with us in the comment form below.
If You Appreciate What We Do Here On TecMint, You Should Consider:
TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.
If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.
We are thankful for your never ending support.