Skip to content

sherqo/packet-pulse-protocol

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Packet Pulse Protocol

UDP-based IoT telemetry protocol.

Install

Linux Packages (for network simulation)

# Ubuntu/Debian
sudo apt install iproute2 tcpdump

# Arch Linux
sudo pacman -S iproute2 tcpdump

Python Packages

pip install -r requirements.txt

Run

1. Server (Collector)

Receives data from sensors and logs to CSV.

python3 collector.py --port 8787 --csv results/data.csv

Options:

  • --port - UDP port to listen on (default: 8787)
  • --csv - Output CSV file path

2. Sensor (Client)

Simulates an IoT sensor sending temperature/humidity readings.

python3 sensor.py --port 8787 --device-id 0x0101

Options:

  • --device-id - Device ID in hex (default: 0x0101)
  • --port - Server port (default: 8787)
  • --host - Server address (default: localhost)
  • --collect-interval - Seconds between collecting readings (default: 1.0)
  • --send-interval - Seconds between sending batches (default: 5.0)
  • --enable-ack - Wait for server acknowledgment

Examples:

# Collect every 0.5s, send every 10s (batch of 20 readings)
python3 sensor.py --port 8787 --collect-interval 0.5 --send-interval 10 --heartbeat-interval 1

# With acknowledgments enabled
python3 sensor.py --port 8787 --enable-ack

# Multiple sensors
python3 sensor.py --port 8787 --device-id 0x0101
python3 sensor.py --port 8787 --device-id 0x0102

3. Run Experiments

Runs 16 predefined experiments with different configurations.

python3 run_experiments.py

Options:

  • --experiments 1 2 3 - Run specific experiments only
  • --duration 60 - Set experiment duration in seconds

Output: results/experiments_YYYYMMDD_HHMMSS/

4. Run Phase 2 Tests

Runs comprehensive tests: scalability, packet loss, latency, stress tests.

python3 run_phase2_tests.py

Output: results/phase2_YYYYMMDD_HHMMSS/

Output

All results go to results/ folder:

File/Folder Description
data.csv Server logs from manual runs
experiments_*/ Results from run_experiments.py
phase2_*/ Results from run_phase2_tests.py

Network Simulation

Simulate packet loss or delay:

# 5% packet loss
sudo tc qdisc add dev lo root netem loss 5%

# 100ms delay
sudo tc qdisc add dev lo root netem delay 100ms

# Remove simulation
sudo tc qdisc del dev lo root

About

Packet Pulse Protocol (PPP) is a lightweight, UDP-based application-layer protocol for IoT sensors. It efficiently transmits periodic sensor readings and heartbeat messages, supporting batching, sequence tracking, and loss-tolerant operation, with tools for logging, analysis, and reproducible network experiments.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages