A comprehensive suite for benchmarking network performance between Amazon EC2 instances.
I am currently a master student majoring in Financial Engineering at UIUC graduating in December 2025. I have strong hands-on experience in building high-frequency trading systems, low-latency infrastructure, and quantitative research pipelines. Skilled in C++, Python, Docker, and Linux, I have developed real-time trading systems based on CTP APIs, asynchronous backtesting frameworks, and event-driven crypto strategies.
Email: hs67@illinois.edu LinkedIn: https://www.linkedin.com/in/hanliang-song/ Github: https://github.com/hanksong
I am an undergraduate student at the University of Illinois Urbana-Champaign pursuing a BSLAS in Statistics and Computer Science, expected graduation May 2027. Full-stack software engineer and clean code practitioner. Open to internship opportunities and part-time roles during studies, seeking full-time positions starting May 2027.
- LinkedIn: https://www.linkedin.com/in/tim-rolsh-492088261/
- GitHub: https://github.com/timrolsh
- Details for Austin Belman can be added here.
I am currently a junior studying Computer Engineering at UIUC graduating in Spring 2026. I have previous experience working with low-latency C++ embedded systems at Rivian and I am currently working at DRW as a software engineering intern. I am interested in intersecting my understanding of computer systems with trading, and I am motivated by solving hard problems.
Email: davidm16@illinois.edu LinkedIn: https://www.linkedin.com/in/davidmun910/
- Point-to-Point TCP Bandwidth Testing - Measures bandwidth between EC2 instances using iperf3 in TCP mode
- UDP Performance Testing - Measures bandwidth, packet loss, and jitter using iperf3 in UDP mode
- Latency Testing - Measures network latency (RTT) between EC2 instances using ping
- Visualization - Generates histograms, heatmaps, and detailed HTML reports
- Organized Output - All visualization outputs are stored in timestamped log directories
scripts/- Core test scriptsp2p_test.py- Point-to-point TCP bandwidth testing scriptudp_test.py- UDP testing script (bandwidth, packet loss, jitter)latency_test.py- Ping-based latency testing scriptrun_benchmark.py- Main script to orchestrate all testsformat_data.py- Data processing utility
data/- Raw test results in CSV and JSON formatvisualization/- Visualization scripts and output filesgenerate_histograms.py- Creates histogram and heatmap visualizationsgenerate_report.py- Creates HTML reportvis_log_*- Timestamped directories for visualization outputs
Added comprehensive latency testing capabilities that measure Round Trip Time (RTT) between EC2 instances:
- Implemented ping-based testing with customizable packet count and interval settings
- Added latency matrix generation for visualizing the RTT patterns between instances
- Integrated latency data into the HTML report generation
Improved organization of visualization outputs:
- All generated visualizations and reports are now stored in timestamped directories (
vis_log_YYYYMMDD_HHMMSS) - A symlink to the latest report is created in the project root for easy access
- Reduced file clutter in the main visualization directory
-
Get the following info from AWS:
- Access Key ID
- Secret Access Key
- Default region name
- Default output format
-
Install the AWS CLI from this page: https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html
-
Install Terraform from this page: https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli
-
Configure the AWS CLI with your credentials:
aws configurepython3 scripts/run_benchmark.py --config config/benchmark_config.json# Run point-to-point TCP bandwidth test
python3 scripts/p2p_test.py --config config/test_config.json
# Run UDP performance test
python3 scripts/udp_test.py --config config/test_config.json
# Run latency test
python3 scripts/latency_test.py --config config/test_config.json# Generate histograms and heatmaps
python3 visualization/generate_histograms.py --p2p-csv data/p2p_results_*.csv --udp-csv data/udp_results_*.csv --latency-csv data/latency_results_*.csv
# Generate HTML report
python3 visualization/generate_report.py --summary-json data/results_summary_*.jsonThe benchmark suite uses JSON configuration files to specify:
- EC2 instance details (IPs, instance types, regions)
- Test parameters (duration, parallel streams, etc.)
- Visualization options
Sample configuration files are provided in the terraform/config.json directory.
-
Python 3.6+
-
Terraform 0.14+
-
The following Python packages:
- pandas
- matplotlib
- seaborn
- jinja2
- numpy
-
iperf3
-
Clone the repository:
git clone https://github.com/yourusername/aws-network-benchmark.git cd aws-network-benchmark -
Install dependencies:
pip install -r requirements.txt -
Configure AWS credentials:
aws configure -
Modify the
config.jsonconfiguration file (optional):{ "aws_regions": ["us-east-1", "us-west-2", "eu-west-1", "ap-northeast-1", "sa-east-1"], "instance_type": "t2.micro", "ssh_key_name": "aws-network-benchmark", "create_ssh_key": true, "use_private_ip": false, ... }- Set
use_private_iptotrueto use private IPs for testing (when using VPC Peering or other connection methods within the same region) - Set
use_private_iptofalse(default) to use public IPs for testing (for general cross-region scenarios)
- Set
-
Run the benchmark:
python3 scripts/run_benchmark.py [options]| Option | Description |
|---|---|
--config PATH |
Specify the path to the configuration file (default:../terraform/config.json) |
--skip-terraform |
Skip the Terraform deployment step |
--skip-install |
Skip the iperf3 installation step |
--skip-tests |
Skip the network test step |
--cleanup |
Clean up AWS resources after testing |
MIT
Issues and pull requests are welcome.
aws ec2 import-key-pair --region us-east-1 --key-name aws-network-benchmark --public-key-material fileb://$HOME/.ssh/aws-network-benchmark.pub
This project is licensed under the MIT License - see the LICENSE file for details.


