A set of PerfSONAR container extensions designed to automate periodic network performance monitoring tests across a defined set of hosts.
This project extends standard PerfSONAR containers to facilitate automated, periodic network testing. It supports various performance tests such as latency, throughput, RTT, MTU discovery, path tracing, and jitter measurements across multiple hosts.
Builds upon the official perfsonar-testpoint-docker container with the following enhancements:
- Adds a Python script to automate periodic network tests.
- Reads target hosts from the
HOSTS
environment variable defined indocker-compose.yml
. - Mounts configuration and log directories for persistence.
- Uses
systemd
and appropriatecgroup
settings for test compatibility.
Launch:
docker compose up -d perfsonar-testpoint
docker exec -it perfsonar-testpoint /bin/bash /etc/cron.hourly/bootstrap_cron.sh
A lightweight container based on rocky:9
that installs PerfSONAR command-line tools and runs periodic network tests on specified hosts.
Launch:
docker compose up -d perfsonar-tool
The following network tests are supported and scheduled periodically:
Test Type | Tools Used |
---|---|
Latency | owping , twping , halfping |
RTT | ping , tcpping , twping |
Throughput | iperf3 , nuttcp , ethr |
MTU | fwmtu |
Path Trace | traceroute , paris-traceroute , tracepath |
Jitter | Captured using owping , twping , iperf3 |
- Docker & Docker Compose installed.
- Necessary network permissions (for
host
mode and required ports).
git clone https://github.com/your-repo/perfsonar-extensions.git
cd perfsonar-extensions
Edit docker-compose.yml
and update:
environment:
- HOSTS=23.134.232.210 23.134.232.242
Add or remove hosts as needed.
Edit docker-compose.yml
and update:
environment:
- CRON_EXPRESSION=0 */2 * * * # Example: Run every 2 hours
Change interval as needed.
docker compose up -d <container_name>
docker compose down
docker logs perfsonar-testpoint
docker logs perfsonar-tool
Logs and results are stored in the ./data
directory for both services.
├── Dockerfile-perfsonar-testpoint # Dockerfile for perfsonar-testpoint
├── Dockerfile-perfsonar-tool # Dockerfile for perfsonar-tool
├── docker-compose.yml # Compose file defining both services
├── compose/
│ └── psconfig/ # Custom psconfig files for testpoint
├── data_testpoint/ # Stores logs and test results for testpoint container
├── data_tools/ # Stores logs and test results for tool container
└── README.md
-
Provision or connect to the Ubuntu VM onboard the ship.
-
Clone the repository and install Docker:
git clone https://github.com/kthare10/perfsonar-extensions.git
cd perfsonar-extensions
./enable_docker.sh
- Update the
AUTH_TOKEN
in thedocker-compose.yml
file under theenvironment
section of theperfsonar-testpoint
service.
We will provide theAUTH_TOKEN
value.
services:
perfsonar-testpoint:
...
environment:
- AUTH_TOKEN=<insert_token_here>
- Bring up the containers and initialize the scheduler:
docker compose up -d perfsonar-testpoint
docker exec -it perfsonar-testpoint /bin/bash /etc/cron.hourly/bootstrap_cron.sh
Note: This container is configured to automatically run tests every 2 hours and store the results in:
perfsonar-extensions/data_testpoint
- At the end of the cruise, archive and export the test results:
tar -zcvf data_testpoint.tgz perfsonar-extensions/data_testpoint
The resulting archive can then be transferred to a student’s laptop or uploaded to a cloud storage location for us to retrieve.