Skip to main content

TRIAGE/4 core scheduling package for priority-aware IoT message serving

Project description

TRIAGE/4

LES2 Banner

PyPI version Python versions Jupyter Notebook License: MIT

TRIAGE/4 (Tiered Resource Allocation for IoT Alarm and Geographic-priority Emergency) is a four-band message scheduler designed for distributed IoT emergency monitoring networks.

It resolves the classic priority inversion conflict between geographic zone priorities (e.g., routine telemetry from high-priority zones delaying critical emergency alarms from low-priority zones) while preventing channel monopolization by malicious or malfunctioning devices.


Key Features

  1. Semantic & Geographic Prioritization: Divides message traffic into 4 hierarchical bands:
    • Band 0 (ALARM): Critical emergency alarms. Served with strict priority.
    • Band 1 (HIGH): High-priority zone telemetry (token-constrained).
    • Band 2 (STANDARD): Standard zone telemetry (token-constrained).
    • Band 3 (BACKGROUND): Low-priority zone telemetry (token-constrained).
  2. Adaptive Alarm Protection: Uses rate monitoring and token buckets to detect and mitigate alarm floods (DoS attacks or sensor failures) by dropping excessive traffic in Band 0 while maintaining clean service for legitimate alarms.
  3. Per-Device Fair Queuing: Employs round-robin queueing inside bands to prevent a single high-frequency device from starving other sensors in the same band.

Installation

Install the core runtime package from PyPI:

pip install triage4

To run the research benchmarks or test suites locally, install with development dependencies:

pip install "triage4[dev,research]"

Quick Start

from triage4 import TRIAGE4Scheduler, TRIAGE4Config

# Configure the scheduler
config = TRIAGE4Config(
    service_rate=20.0,            # Mean service rate (messages/second)
    high_zone_max=1,              # Zone priority threshold for HIGH band (0-1)
    standard_zone_max=3,          # Zone priority threshold for STANDARD band (2-3)
    high_token_budget=10,         # Maximum tokens per refill window for HIGH band
    enable_alarm_protection=True, # Protect against alarm storms
)

# Initialize the scheduler
scheduler = TRIAGE4Scheduler(config, scheduler_seed=42)

# Define a message workload
arrival_times = [0.0, 0.1, 0.15, 0.2]
device_ids = ["sensor_1", "sensor_2", "sensor_1", "sensor_3"]
zone_priorities = [0, 5, 0, 2]  # Lower number = higher priority
is_alarm = [False, True, False, False]

# Execute discrete-event simulation
result = scheduler.schedule(
    arrival_times=arrival_times,
    device_ids=device_ids,
    zone_priorities=zone_priorities,
    is_alarm=is_alarm
)

# Inspect outcomes
print("Waiting times:", result.waiting_times)
print("E2E latency:", result.e2e_times)
print("Assigned bands:", result.priorities)  # Mapped to Band 0, 1, 2, or 3
print("Alarms dropped:", result.metadata.get("alarm_dropped", 0))

Project Structure

  • src/triage4/: Contains the core scheduling logic and algorithms (packaged for distribution).
  • assessment/: Contains baselines, scenarios, workloads, and performance benchmarking scripts (excluded from wheel packaging).
  • tests/: Integration and unit tests.

Development and Testing

Run the test suite using pytest:

pytest

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

triage4-1.1.0.tar.gz (21.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

triage4-1.1.0-py3-none-any.whl (24.2 kB view details)

Uploaded Python 3

File details

Details for the file triage4-1.1.0.tar.gz.

File metadata

  • Download URL: triage4-1.1.0.tar.gz
  • Upload date:
  • Size: 21.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for triage4-1.1.0.tar.gz
Algorithm Hash digest
SHA256 1deed06e08d90ca4177a4c8b2f94892bafda8dbb41d511eb6fe20bb64f049b8d
MD5 b9b8e1bb5f05220ab9ca23951aaf02e5
BLAKE2b-256 8f7e93289d473c8337f02e52322730412523db4e1d0cf218a94603fbf07cd43b

See more details on using hashes here.

Provenance

The following attestation bundles were made for triage4-1.1.0.tar.gz:

Publisher: publish.yml on les2feup/triage4

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file triage4-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: triage4-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 24.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for triage4-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4fb3a6d12d9b1eab0a4688088d61dbbeb5f6740b67f6f090a1cf43bee75f16e4
MD5 d700c414af3b152291683261f3808f29
BLAKE2b-256 b8f74ec5e54f3b93f7785198d4432c9779157370def85356f6d362d3c51f26e9

See more details on using hashes here.

Provenance

The following attestation bundles were made for triage4-1.1.0-py3-none-any.whl:

Publisher: publish.yml on les2feup/triage4

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page