How to watch bandwidth per iface → iftop or nload
How to Monitor Network Bandwidth Per Interface Using iftop and nload
Table of Contents
1. [Introduction](#introduction)
2. [Prerequisites](#prerequisites)
3. [Understanding Network Interface Monitoring](#understanding-network-interface-monitoring)
4. [Installing iftop](#installing-iftop)
5. [Installing nload](#installing-nload)
6. [Using iftop for Bandwidth Monitoring](#using-iftop-for-bandwidth-monitoring)
7. [Using nload for Bandwidth Monitoring](#using-nload-for-bandwidth-monitoring)
8. [Practical Examples and Use Cases](#practical-examples-and-use-cases)
9. [Advanced Configuration Options](#advanced-configuration-options)
10. [Troubleshooting Common Issues](#troubleshooting-common-issues)
11. [Best Practices and Professional Tips](#best-practices-and-professional-tips)
12. [Alternative Tools and Comparisons](#alternative-tools-and-comparisons)
13. [Conclusion](#conclusion)
Introduction
Network bandwidth monitoring is a critical aspect of system administration and network management. Whether you're troubleshooting network performance issues, monitoring server resources, or planning capacity upgrades, having real-time visibility into network interface utilization is essential. This comprehensive guide will walk you through two powerful command-line tools: iftop and nload, which provide detailed insights into network bandwidth usage per interface.
Both tools offer unique advantages for different monitoring scenarios. iftop provides detailed connection-level information showing which hosts are consuming bandwidth, while nload offers a clean, graphical representation of interface utilization over time. By the end of this guide, you'll understand how to effectively use both tools to monitor, analyze, and troubleshoot network bandwidth issues across various network interfaces.
Prerequisites
Before diving into the installation and usage of these tools, ensure you have the following prerequisites:
System Requirements
- Linux-based operating system (Ubuntu, CentOS, RHEL, Debian, etc.)
- Root or sudo privileges for installation and network monitoring
- Basic understanding of Linux command line operations
- Knowledge of network interfaces and TCP/IP fundamentals
Network Access Requirements
- Administrative access to the system you want to monitor
- Network interfaces that are active and configured
- Sufficient permissions to capture network packets (for iftop)
Knowledge Prerequisites
- Familiarity with network terminology (bandwidth, throughput, packets)
- Basic understanding of network interface naming conventions (eth0, enp0s3, wlan0)
- Command-line proficiency in Linux environments
Understanding Network Interface Monitoring
Network interface monitoring involves tracking the flow of data through network adapters on your system. Each network interface represents a physical or virtual connection point where your system communicates with networks.
Key Metrics to Monitor
Bandwidth Utilization: The amount of network capacity being used, typically measured in bits per second (bps), kilobits per second (Kbps), megabits per second (Mbps), or gigabits per second (Gbps).
Packet Rates: The number of packets transmitted and received per second, which can indicate network efficiency and potential issues.
Connection Details: Information about active connections, including source and destination addresses, ports, and protocols.
Historical Trends: Long-term patterns in network usage that help with capacity planning and anomaly detection.
Common Network Interface Types
- Ethernet interfaces (eth0, enp0s3): Wired network connections
- Wireless interfaces (wlan0, wlp2s0): Wi-Fi network connections
- Loopback interface (lo): Internal system communication
- Virtual interfaces: Docker, VPN, or virtualization-related interfaces
Installing iftop
iftop is a real-time network bandwidth monitoring tool that displays bandwidth usage by individual connections. It shows which hosts are communicating with your system and how much bandwidth each connection consumes.
Installation on Ubuntu/Debian Systems
```bash
Update package repositories
sudo apt update
Install iftop
sudo apt install iftop
Verify installation
iftop --help
```
Installation on CentOS/RHEL/Fedora Systems
```bash
For CentOS/RHEL 7/8
sudo yum install epel-release
sudo yum install iftop
For CentOS/RHEL 9 and Fedora
sudo dnf install iftop
Verify installation
iftop --version
```
Installation from Source
If iftop isn't available in your distribution's repositories, you can compile it from source:
```bash
Install development tools and dependencies
sudo apt install build-essential libpcap-dev libncurses5-dev
Download and compile iftop
wget http://www.ex-parrot.com/pdw/iftop/download/iftop-1.0pre4.tar.gz
tar -xzf iftop-1.0pre4.tar.gz
cd iftop-1.0pre4
./configure
make
sudo make install
```
Installing nload
nload is a console-based network monitoring tool that provides a visual representation of incoming and outgoing network traffic in real-time with ASCII-based graphs.
Installation on Ubuntu/Debian Systems
```bash
Update package repositories
sudo apt update
Install nload
sudo apt install nload
Verify installation
nload --help
```
Installation on CentOS/RHEL/Fedora Systems
```bash
For CentOS/RHEL with EPEL
sudo yum install epel-release
sudo yum install nload
For newer systems with dnf
sudo dnf install nload
Verify installation
nload --version
```
Installation from Source
```bash
Install dependencies
sudo apt install build-essential libncurses5-dev
Download and compile nload
wget https://github.com/rolandriegel/nload/releases/download/v0.7.4/nload-0.7.4.tar.gz
tar -xzf nload-0.7.4.tar.gz
cd nload-0.7.4
./configure
make
sudo make install
```
Using iftop for Bandwidth Monitoring
iftop provides detailed, connection-level bandwidth monitoring with information about individual hosts and their data transfer rates.
Basic iftop Usage
```bash
Monitor default network interface
sudo iftop
Monitor specific interface
sudo iftop -i eth0
Monitor with hostname resolution disabled (faster)
sudo iftop -n
Monitor specific interface without hostname resolution
sudo iftop -i wlan0 -n
```
Understanding iftop Output
The iftop interface displays several key components:
Connection List: Shows active connections with source and destination addresses, displaying data transfer rates for each direction.
Rate Columns: Three columns showing transfer rates:
- 2s: Average over the last 2 seconds
- 10s: Average over the last 10 seconds
- 40s: Average over the last 40 seconds
Bottom Statistics: Summary information including:
- TX: Total transmitted data
- RX: Total received data
- TOTAL: Combined transmitted and received data
- Peak: Maximum observed transfer rate
Interactive iftop Commands
While iftop is running, you can use these keyboard shortcuts:
```
h - Toggle help display
n - Toggle hostname resolution
s - Toggle source host display
d - Toggle destination host display
p - Toggle port display
P - Toggle port resolution
t - Toggle text interface
1/2/3 - Sort by 1st/2nd/3rd column
< - Sort by source name
> - Sort by destination name
o - Freeze current order
f - Edit filter code
l - Set screen filter
L - Linear/log scales
! - Shell command
q - Quit
```
Advanced iftop Options
```bash
Set custom filter (monitor HTTP traffic only)
sudo iftop -f "port 80"
Monitor specific subnet
sudo iftop -f "net 192.168.1.0/24"
Set custom refresh interval
sudo iftop -s 5
Use different sorting
sudo iftop -o 2s
Combine multiple options
sudo iftop -i eth0 -n -P -f "not port 22"
```
Using nload for Bandwidth Monitoring
nload provides a clean, graphical representation of network interface utilization with historical graphs and statistics.
Basic nload Usage
```bash
Monitor default interface
nload
Monitor specific interface
nload eth0
Monitor multiple interfaces
nload eth0 wlan0
Monitor all available interfaces
nload -m
```
Understanding nload Output
The nload display consists of several sections:
Interface Header: Shows the interface name and current status.
Incoming Traffic Graph: ASCII-based graph showing received data over time.
Outgoing Traffic Graph: ASCII-based graph showing transmitted data over time.
Statistics Panel: Detailed metrics including:
- Curr: Current transfer rate
- Avg: Average transfer rate
- Min: Minimum observed rate
- Max: Maximum observed rate
- Ttl: Total data transferred
nload Command-Line Options
```bash
Set refresh interval (in milliseconds)
nload -t 500
Set graph scale
nload -u m # Use MBit/s instead of KBit/s
Monitor with different averaging period
nload -a 300 # 300 seconds averaging
Combine options
nload -t 1000 -u m -a 600 eth0
```
Interactive nload Commands
While nload is running, use these controls:
```
Arrow Keys - Switch between interfaces
Enter - Rotate through interfaces
Tab - Switch between devices
F2 - Show option window
F5 - Save settings
F6 - Reload settings
q/Ctrl+C - Quit
```
Practical Examples and Use Cases
Example 1: Monitoring Web Server Traffic
When managing a web server, you need to monitor HTTP/HTTPS traffic patterns:
```bash
Monitor HTTP traffic specifically
sudo iftop -f "port 80 or port 443"
Monitor web server interface with nload
nload -u m eth0
```
Example 2: Troubleshooting Network Performance
For performance troubleshooting, combine both tools:
```bash
Terminal 1: Get overall interface utilization
nload -t 500 -u m eth0
Terminal 2: Identify top bandwidth consumers
sudo iftop -i eth0 -n -P
```
Example 3: Monitoring Multiple Interfaces
For systems with multiple network interfaces:
```bash
Monitor all interfaces with nload
nload -m
Monitor specific interface with detailed connections
sudo iftop -i wlan0 -f "not port 22"
```
Example 4: Database Server Monitoring
Monitor database server network activity:
```bash
Monitor MySQL/PostgreSQL traffic
sudo iftop -f "port 3306 or port 5432"
Monitor with bandwidth thresholds
nload -u k -t 1000 eth0
```
Example 5: Security Monitoring
Identify potential security issues:
```bash
Monitor unusual port activity
sudo iftop -f "not (port 80 or port 443 or port 22)"
Monitor for high bandwidth usage
nload -u m -a 60 eth0
```
Advanced Configuration Options
Creating iftop Configuration Files
Create a configuration file at `~/.iftoprc`:
```bash
Sample .iftoprc configuration
interface: eth0
dns-resolution: no
port-resolution: no
filter-code: not port 22
port-display: on
show-bars: yes
promiscuous: no
hide-source: no
hide-destination: no
use-bytes: no
sort: 2s
line-display: two-line
show-totals: yes
log-scale: no
```
nload Configuration
Create configuration directory and file:
```bash
Create nload config directory
mkdir -p ~/.nload
Create configuration file
cat > ~/.nload/nload.conf << EOF
nload configuration
Unit=Bit
RefreshInterval=500
BarMaxIn=10240
BarMaxOut=10240
MaxBandwidthIn=10485760
MaxBandwidthOut=10485760
EOF
```
Automated Monitoring Scripts
Create monitoring scripts for automated bandwidth checking:
```bash
#!/bin/bash
bandwidth_monitor.sh
INTERFACE="eth0"
LOGFILE="/var/log/bandwidth.log"
THRESHOLD_MBPS=100
while true; do
# Get current bandwidth using nload
CURRENT=$(nload -t 1000 $INTERFACE 2>&1 | grep "Curr:" | awk '{print $2}')
# Log if above threshold
if [ $(echo "$CURRENT > $THRESHOLD_MBPS" | bc -l) -eq 1 ]; then
echo "$(date): High bandwidth usage: $CURRENT Mbps" >> $LOGFILE
fi
sleep 60
done
```
Troubleshooting Common Issues
Permission Issues
Problem: "Operation not permitted" or "Permission denied" errors.
Solution:
```bash
Ensure you're running with sudo
sudo iftop -i eth0
Check if user is in appropriate groups
sudo usermod -a -G netdev $USER
For systems requiring additional permissions
sudo setcap cap_net_raw+ep /usr/sbin/iftop
```
Interface Not Found
Problem: "interface eth0 not found" or similar errors.
Solution:
```bash
List available interfaces
ip link show
or
ifconfig -a
Use correct interface name
sudo iftop -i enp0s3 # Use actual interface name
```
High CPU Usage
Problem: Monitoring tools consuming too much CPU.
Solution:
```bash
Reduce refresh rate for nload
nload -t 2000 eth0 # Refresh every 2 seconds
Disable hostname resolution for iftop
sudo iftop -n -P
Use filtering to reduce processing
sudo iftop -f "net 192.168.1.0/24"
```
Missing Dependencies
Problem: Tools not working due to missing libraries.
Solution:
```bash
Install required libraries for Ubuntu/Debian
sudo apt install libpcap0.8 libncurses5
For CentOS/RHEL
sudo yum install libpcap ncurses
```
Network Interface Issues
Problem: No traffic showing despite active connections.
Solution:
```bash
Check interface status
ip addr show eth0
Verify interface has traffic
cat /proc/net/dev
Check for promiscuous mode requirements
sudo iftop -i eth0 -p
```
Firewall Blocking
Problem: Monitoring tools blocked by firewall rules.
Solution:
```bash
Temporarily disable firewall for testing
sudo ufw disable # Ubuntu
sudo systemctl stop firewalld # CentOS/RHEL
Or allow specific monitoring traffic
sudo iptables -I INPUT -p tcp --dport 22 -j ACCEPT
```
Best Practices and Professional Tips
Performance Optimization
Minimize Resource Usage:
- Disable DNS resolution when not needed (`iftop -n`)
- Use appropriate refresh intervals
- Filter traffic to reduce processing overhead
- Run monitoring tools on dedicated monitoring interfaces when possible
Security Considerations
Protect Monitoring Data:
- Limit access to monitoring tools with proper permissions
- Use SSH tunneling for remote monitoring
- Regularly rotate log files containing sensitive network information
- Implement proper access controls for monitoring systems
Monitoring Strategy
Establish Baselines:
```bash
Create baseline measurements
nload -t 5000 -a 3600 eth0 > baseline_$(date +%Y%m%d).log
Regular monitoring schedule
Add to crontab for automated monitoring
/5 * /usr/bin/nload -t 1000 eth0 >> /var/log/network_usage.log 2>&1
```
Implement Alerting:
```bash
#!/bin/bash
bandwidth_alert.sh
THRESHOLD=1000000 # 1 Mbps in bytes
INTERFACE="eth0"
RX_BYTES=$(cat /sys/class/net/$INTERFACE/statistics/rx_bytes)
TX_BYTES=$(cat /sys/class/net/$INTERFACE/statistics/tx_bytes)
sleep 1
RX_BYTES_NEW=$(cat /sys/class/net/$INTERFACE/statistics/rx_bytes)
TX_BYTES_NEW=$(cat /sys/class/net/$INTERFACE/statistics/tx_bytes)
RX_RATE=$((RX_BYTES_NEW - RX_BYTES))
TX_RATE=$((TX_BYTES_NEW - TX_BYTES))
if [ $RX_RATE -gt $THRESHOLD ] || [ $TX_RATE -gt $THRESHOLD ]; then
echo "High bandwidth usage detected on $INTERFACE" | mail -s "Bandwidth Alert" admin@example.com
fi
```
Documentation and Reporting
Maintain Monitoring Logs:
- Document normal usage patterns
- Keep historical data for trend analysis
- Create regular reports for capacity planning
- Document any anomalies and their resolutions
Alternative Tools and Comparisons
Comparison Matrix
| Tool | Real-time | Connection Details | Historical Data | Resource Usage | Learning Curve |
|------|-----------|-------------------|-----------------|----------------|----------------|
| iftop | Yes | Excellent | Limited | Medium | Medium |
| nload | Yes | None | Basic graphs | Low | Easy |
| vnstat | No | None | Excellent | Very Low | Easy |
| nethogs | Yes | Process-level | None | Medium | Easy |
| bmon | Yes | Good | Good | Medium | Medium |
When to Use Each Tool
Use iftop when:
- You need to identify specific connections consuming bandwidth
- Troubleshooting network performance issues
- Monitoring server applications and their network usage
- Need detailed per-connection statistics
Use nload when:
- You want a quick overview of interface utilization
- Monitoring multiple interfaces simultaneously
- Need visual representation of traffic patterns
- Performing capacity planning with historical trends
Integration with Other Tools
Combining with System Monitoring:
```bash
Use with htop for complete system overview
Terminal 1
htop
Terminal 2
nload eth0
Terminal 3
sudo iftop -i eth0
```
Integration with Logging Systems:
```bash
Export nload data to log files
nload -t 1000 eth0 2>&1 | tee /var/log/bandwidth_$(date +%Y%m%d).log
Parse iftop output for logging
sudo iftop -t -s 10 -i eth0 2>&1 | grep -E "Peak|Total" >> /var/log/network_peaks.log
```
Conclusion
Monitoring network bandwidth per interface is essential for maintaining optimal system performance and troubleshooting network issues. Both iftop and nload provide valuable but different perspectives on network utilization:
iftop excels in providing detailed, connection-level information that helps identify specific hosts or applications consuming bandwidth. Its ability to show individual connections, resolve hostnames, and filter traffic makes it invaluable for detailed network analysis and troubleshooting.
nload offers a clean, intuitive interface with graphical representation of traffic patterns over time. Its low resource usage and multi-interface monitoring capabilities make it perfect for ongoing monitoring and quick status checks.
Key Takeaways
1. Choose the right tool: Use iftop for detailed analysis and nload for general monitoring
2. Implement proper security: Always run monitoring tools with appropriate permissions and security considerations
3. Establish baselines: Regular monitoring helps identify unusual patterns and plan for capacity needs
4. Combine tools effectively: Use multiple monitoring approaches for comprehensive network visibility
5. Automate when possible: Create scripts and alerts to proactively monitor network performance
Next Steps
After mastering these tools, consider:
- Implementing automated monitoring and alerting systems
- Exploring advanced network monitoring solutions like Nagios or Zabbix
- Learning about SNMP-based monitoring for network devices
- Investigating application-specific monitoring tools
- Setting up centralized logging and analysis systems
By following the guidance in this comprehensive guide, you'll be well-equipped to monitor, analyze, and troubleshoot network bandwidth usage across various interfaces in your Linux environment. Regular practice with these tools will enhance your network administration skills and help maintain optimal system performance.