██████╗ ██████╗ ██████╗ ██╗████████╗██████╗ ██████╗ ███╗ ██╗
██╔═══██╗██╔══██╗██╔══██╗██║╚══██╔══╝██╔══██╗██╔═══██╗████╗ ██║
██║ ██║██████╔╝██████╔╝██║ ██║ ██████╔╝██║ ██║██╔██╗ ██║
██║ ██║██╔══██╗██╔══██╗██║ ██║ ██╔══██╗██║ ██║██║╚██╗██║
╚██████╔╝██║ ██║██████╔╝██║ ██║ ██║ ██║╚██████╔╝██║ ╚████║
╚═════╝ ╚═╝ ╚═╝╚════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝
This project is developed and maintained by Shahab Afshar.
Professor: Dr. Mohamed Selim
Course: Wireless Network Security
Department: Electrical and Computer Engineering (ECPE)
University: Iowa State University
Testbed: ORBIT (Open-Access Research Testbed for Next-Generation Wireless Networks)
ORBIT is a two-tier wireless network emulator/field trial designed to achieve reproducible experimentation, while also supporting realistic evaluation of protocols and applications.
ORBITRON is a comprehensive network testing suite designed for wireless network security analysis and performance evaluation.
This framework provides tools for testing WiFi performance and saturation on the ORBIT testbed.
- Automated setup of Access Point (AP), Client, and Saturator nodes
- Real-time monitoring of WiFi metrics:
- Signal strength and quality
- CPU utilization
- Interface statistics
- Channel utilization
- Performance testing with iperf3:
- TCP and UDP throughput
- Retransmission analysis
- Jitter measurements
- Comprehensive data analysis and visualization
- Detailed performance reports
- User-friendly menu interface for easy operation
The scripts are Bash-based. On Windows you need a Bash environment:
- Option A (recommended): Install Git for Windows; then in Git Bash or PowerShell run:
or
.\run.ps1
bash main.sh
- Option B: Use WSL; then from WSL run
./main.shas on Linux.
Without Git Bash or WSL, the .sh scripts cannot be run natively in CMD or PowerShell.
- ORBIT testbed access
- Python 3.6 or higher
- Required Python packages (install using
pip install -r requirements.txt):- pandas
- matplotlib
- seaborn
- numpy
- Required system packages:
- iperf3
- aireplay-ng (aircrack-ng suite)
- iw
- iwconfig (wireless-tools)
- hostapd
- wpa_supplicant
- tmux
- ssh
- hping3
The framework supports multiple node roles:
- AP (Access Point)
- Client
- Saturator (for generating traffic)
- Jammer (optional)
- Control (for monitoring and coordination)
Configuration is managed through config.sh:
# Example node configuration
NODES=(
["ap"]="node1-3.outdoor.orbit-lab.org|10.1.0.17|ap|wlan0|main_network"
["client"]="node1-1.outdoor.orbit-lab.org|10.1.0.15|client|wlan0|main_network"
["saturator"]="node1-2.outdoor.orbit-lab.org|10.1.0.16|saturator|wlan0|main_network"
)The easiest way to use the framework is through the menu interface:
./orbitron.shThe menu provides the following options:
- Initialize Test Environment
- Setup Nodes
- Run TCP Saturation Test
- Run UDP Saturation Test
- Run WiFi Jamming Test
- Run All Tests
- View Test Results
- Configure Test Parameters
- About ORBITRON
- Exit
For advanced users, the framework can be operated manually:
-
Setup nodes:
./setup.sh
-
Start monitoring:
./monitor.sh
-
Run specific tests:
./run_tests.sh [test_type] # where test_type can be: tcp, udp, wifi, or all -
Analyze results:
python analysis/iperf_analysis.py logs/[test_timestamp]
The analysis generates:
-
Time-series plots for:
- Signal strength
- Connection quality
- CPU usage
- Bandwidth
- Retransmissions
- Jitter
-
A comprehensive Markdown report with:
- Per-node WiFi metrics
- Performance statistics
- Test summary
-
SSH Connection Issues:
- The framework now includes robust SSH connection handling
- Automatic retry for package installation
- SSH key verification skipping for testing
-
Package Installation:
- Automatic cleanup of problematic repositories
- Lock file handling
- Multiple installation attempts
-
Node Connectivity:
- Node reachability checks before operations
- Interface reset and cleanup procedures
- Proper process termination
-
Analysis Issues:
- Note that analysis must be performed on a local system
- Copy log files from the ORBIT testbed to your local machine
- Run
python analysis/iperf_analysis.py <log_dir>locally with the copied log files
- Fork the repository
- Create a feature branch
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.