You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
FreeDMR/docs/freedmr-2/01-system-model.md

42 lines
2.1 KiB

# FreeDMR 2 System Model
FreeDMR 2 is a layered system. The layers are design boundaries, not necessarily separate processes at first.
## Access Layer
The access layer owns HBP and future client/repeater protocols. It handles login, authentication, options, keepalive, access sessions, RF-facing slot state, and RF-visible TG presentation.
A configured listener is not the client identity. A single listener should eventually support multiple clients directly, replacing proxy-mediated fan-out where possible.
## Subscription Layer
The subscription layer owns talkgroup conference membership. It handles direct TG subscriptions, dial-a-TG subscriptions, static subscriptions, default reflectors, user/API/SMS activated subscriptions, expiry, and RF-visible TG to conference TG mapping.
Packet routing should consume subscription state. It should not need to know whether a subscription came from static config, dial-a-TG, API, SMS, or a future UI.
## Mesh Layer
The mesh layer owns FBP/OBP/trunk-style inter-server traffic. It handles loop control, source quench, hop/version handling, bridge control, source server/repeater metadata, and conference traffic between servers.
FreeDMR remains a peer network, not hub-and-spoke. Local sysops retain local routing and policy autonomy.
## Packet/Stream Layer
The packet/stream layer owns packet parsing, stream lifecycle, sequence handling, terminators, LC/embedded LC handling, data-vs-voice classification, and packet mutation boundaries.
Raw packet bytes are immutable input until an explicit named rewrite operation occurs.
## Reporting Layer
The reporting layer is observational only. It emits state and events to local dashboards, global lastheard exporters, logs, and monitoring consumers.
Reporting must not steer packet routing.
## Control/API Layer
The control/API layer provides explicit authenticated operations for sysop and control-plane actions. It should operate on access sessions, subscriptions, mesh peers, and reporting state without blocking the packet path.
## Critical Invariant
Reporting, dashboards, APIs, databases, exporters, and monitoring consumers must not block or steer packet handling.

Powered by TurnKey Linux.