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

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.