PDC Console is a Parallel and Distributed Computing research project for intrusion-detection analysis on the UNSW-NB15 dataset. It combines MPI-based C programs, a dashboard presentation layer, and a code explorer for reviewing the implementation, results, and benchmark evidence.
| Link | URL |
|---|---|
| Live dashboard | https://pdc.onichealth.com/ |
| Repository | https://github.com/Haseeb-1698/pdc-console |
| Question | Focus | Main MPI Concepts |
|---|---|---|
| Q1 | Parallel detection of Backdoor, DoS, and Reconnaissance records | MPI_Bcast, MPI_Scatterv, MPI_Reduce, MPI_Gather |
| Q2 | Suspicious-IP correlation, deduplication, and validation | MPI_Scatter, MPI_Reduce, MPI_Allreduce, MPI_Gatherv, MPI_Bcast |
| Q3 | Serial vs parallel timing, speedup, efficiency, and overhead | MPI_Wtime, reductions, checksum verification |
The project demonstrates correct distributed coordination first, then uses the measurements to explain why this specific workload did not benefit from parallel execution.
The project was evaluated on a real 3-node Azure cluster with one master node and two worker nodes. The cluster has since been deleted, but the setup is documented so the environment can be understood and reproduced.
| Item | Value |
|---|---|
| Cloud provider | Microsoft Azure |
| Region | eastus |
| Resource group | pdc-fyp-rg |
| VM image | Ubuntu Linux |
| VM size | Standard_D2s_v3 |
| MPI runtime | OpenMPI |
| Project path | /opt/pdc-project |
| Dashboard port | 8080 |
| Role | VM name | Public IP | Private IP | Purpose |
|---|---|---|---|---|
| Master | pdc-master |
52.147.201.53 |
10.0.0.4 |
Dashboard host, compile/run coordinator, MPI launcher |
| Worker 1 | pdc-worker1 |
20.120.99.8 |
10.0.0.5 |
MPI worker process execution |
| Worker 2 | pdc-worker2 |
20.172.177.198 |
10.0.0.6 |
MPI worker process execution |
MPI hostfile used during the demo environment:
10.0.0.4 slots=2
10.0.0.5 slots=2
10.0.0.6 slots=2
Sanity check used to prove ranks were launching across the full cluster:
mpirun --hostfile /opt/pdc-project/hosts.txt --mca plm_rsh_agent ssh -np 6 hostname | sort | uniq -cExpected distribution:
2 pdc-master
2 pdc-worker1
2 pdc-worker2
The presentation flow followed the same order used in the live dashboard:
- Open the dashboard and verify dataset/result cards.
- Compile all three question programs.
- Run Q1 with four MPI processes.
- Run Q2 with four MPI processes.
- Run Q3 with
np=1,np=2,np=4, andnp=6. - Review benchmark CSV output and performance conclusions.
The project uses UNSW-NB15 network traffic data.
| File | Used For |
|---|---|
UNSW_NB15_training-set.csv |
Q1 and Q3 labelled attack counting |
UNSW_NB15_testing-set.csv |
supporting labelled dataset file |
UNSW_NB15_combined.csv |
larger combined benchmark input |
UNSW-NB15_1.csv to UNSW-NB15_4.csv |
Q2 distributed suspicious-IP correlation |
Q1 and Q3 focus on the selected labelled attack categories. Q2 uses split raw traffic files to demonstrate rank-level correlation, validation, variable-size gathering, and final broadcast of the authoritative suspicious-IP list.
| Metric | Value |
|---|---|
| Records | 82,332 |
| Backdoor | 583 |
| DoS | 4,089 |
| Reconnaissance | 3,496 |
| Total malicious records | 8,168 |
| Unique suspicious IPs in Q1 | 2,606 |
Rank 1 showed zero detections in one Q1 run because the UNSW-NB15 training file was not shuffled. Its contiguous slice mostly contained non-target labels. This was an important observation: equal row counts do not always produce equal useful work.
| Metric | Value |
|---|---|
| Max suspicious IPs in one process | 24 |
| Global suspicious IPs before deduplication | 94 |
| Unique suspicious IPs after deduplication | 36 |
| Failed logins | 468,828 |
| Port scans | 183,521 |
| Connection attempts | 339,807 |
| Validation | PASSED |
Q2 used a checksum and per-process byte reports to verify that ranks processed distinct data segments before suspicious-IP lists were gathered, deduplicated, and broadcast.
The selected Backdoor, DoS, and Reconnaissance workload was communication-bound.
| Observation | Meaning |
|---|---|
| Useful computation was very small | The selected label-counting work was often too light to amortize MPI startup and communication cost. |
| MPI communication dominated | Scatter, reduce, gather, and synchronization overhead exceeded the useful computation. |
| Speedup stayed below 1x | Sequential processing was faster for this exact workload and data slice. |
| Correctness still held | Parallel checksums matched the serial baseline, so the slowdown was a performance property, not a correctness failure. |
The main lesson is that parallelization must match the workload. For this dataset and these three selected labels, sequential processing was more efficient. Results could change with larger data, heavier feature extraction, broader label selection, or model inference where each record requires more computation.
This repository preserves the source code, dashboard, command flow, and research presentation assets. It can be reused as a UI and MPI workflow template, but anyone reproducing the project should prepare their own dataset placement, cluster configuration, result files, and presentation content.
Compile:
make clean
makeRun Q1:
mpirun -np 4 ./q1 dataset/UNSW_NB15_training-set.csvRun Q2:
mpirun -np 4 ./q2Run Q3:
mpirun -np 2 ./q3 dataset/UNSW_NB15_training-set.csvMulti-node run example:
mpirun --hostfile /opt/pdc-project/hosts.txt --mca plm_rsh_agent ssh -np 4 ./q1 dataset/UNSW_NB15_training-set.csvFor a new cluster, make sure all nodes have the same project files, compiled binaries, dataset files, OpenMPI version, and passwordless inter-node SSH configured for MPI.
.
|-- dashboard/
| |-- index.html
| |-- editor.html
| |-- file-index.json
| |-- img1.png
| |-- img2.png
| `-- img/
| `-- AzureExportedTemplate.png
|-- q1-Lubna/
| `-- main.c
|-- q2-Insharah/
| |-- main.c
| |-- attack_detection.c
| `-- attack_detection.h
|-- q3-haseeb/
| |-- main.c
| |-- benchmark.sh
| `-- benchmark_results.csv
|-- shared/
| |-- STATUS.md
| `-- RUN_RESULTS_VM_2026-04-02.md
|-- PDC_3_NODE_SETUP_RUNBOOK.md
|-- RUN_RESULTS_VM_2026-04-02.md
|-- Makefile
`-- README.md
- 🖥️ PDC 3-Node Setup Runbook: full Azure MPI setup, cluster topology, commands, dataset placement, and findings.
- 📊 Run Results: result tables and command outputs used by the dashboard.
- ✅ Project Status: question-wise project completion summary.
Made with ❤️ by:
- Lubna
- Insharah
- Haseeb


