Skip to content

Lifecycle Management Overview

The Broadband Apps Toolkit follows the Broadband Forum TR-369 USP specification, which provides standard definitions for Deployment Units (Downloadable Apps, AKA Software Modules), Execution Units (Running Instances), and Execution Environments (e.g. Containers, Virtual Machines, etc...), as well as standard models for managing the state of Apps and Environments on CPE devices.

Data Models

Note

This is up to date as of TR-181 v2.20.1 (USP).

The RDK Broadband Apps Toolkit primarily implements the standard TR-369 (USP - User Services Platform) data models for managing, monitoring, and controlling containerised applications on CPE devices, following the Broadband Forum specification for lifecycle management.

Additionally, provisions have been made to bring feature parity to legacy remote management standards such as TR-069 (CPE WAN Management Protocol (CWMP)) as used by ACS (Auto Configuration Server) solutions. This has been done by defining a new, custom data model that can be utilised without requiring support for method invocation or notification events.

Device.SoftwareModules.
├── InstallDU()                     # Method - not available in CWMP-compatible version
├── DUStateChange!                  # Notification - not available in CWMP-compatible version
├── ExecEnvClass.{i}.               # ~Execution Environments~
   ├── AddExecEnv()                # Method - not available in CWMP-compatible version
   └── Capability.{i}.
       └── Specification           
├── ExecEnv.{i}.                    # ~Execution Environments~
   ├── SetRunLevel()               # Method - not available in CWMP-compatible version
   ├── Reset()                     # Method - not available in CWMP-compatible version
   ├── Enable
   ├── Status
   ├── Name
   ├── Type
   ├── InitialRunLevel
   ├── CurrentRunLevel
   ├── AllocatedDiskSpace
   ├── AvailableDiskSpace
   ├── AllocatedMemory
   ├── AvailableMemory
   └── ...
├── DeploymentUnit.{i}.             # ~Deployment Units~
   ├── Update()                    # Method - not available in CWMP-compatible version
   ├── Uninstall()                 # Method - not available in CWMP-compatible version
   ├── UUID
   ├── DUID
   ├── Name
   ├── Status
   ├── Resolved
   ├── URL
   ├── ExecutionUnitList
   ├── ExecutionEnvRef
   └── ...
└── ExecutionUnit.{i}.              # ~Execution Units~
    ├── SetRequestedState()         # Method - not available in CWMP-compatible version
    ├── Restart()                   # Method - not available in CWMP-compatible version
    ├── EUID
    ├── Name
    ├── ExecEnvLabel
    ├── Status
    ├── ExecutionFaultCode
    ├── ExecutionFaultMessage
    ├── AutoStart
    ├── RunLevel
    ├── DiskSpaceInUse
    ├── MemoryInUse
    └── ...
Device.X_RDK_SoftwareModules.
└── ...                             # COMING SOON...

Key Terminology

The following sections provide an overview of the key terminology used in this wiki, with links to their definitions.

Terminology Description Notes
Software Modules Provides the framework for managing containerised applications through standardized data model objects.
Deployment Units (DU) Represents installable software packages (e.g., OCI bundles or images) that can be deployed to the device. The DU lifecycle follows a state machine with the following states:
- Installed: DU is installed on the device
- Uninstalled: DU has been removed from the device
- Failed: DU installation or operation failed

Key Operations:
- Device.SoftwareModules.InstallDU(): Install a new deployment unit from a URL
- Device.SoftwareModules.DeploymentUnit.{i}.Update(): Update an existing deployment unit
- Device.SoftwareModules.DeploymentUnit.{i}.Uninstall(): Remove a deployment unit from the device
Execution Units (EU) Represents running instances of deployed software (containers). The EU lifecycle follows a state machine with the following states:
- Idle: EU is installed but not running
- Starting: EU is in the process of starting
- Active: EU is running
- Stopping: EU is in the process of stopping
- Failed: EU failed to start or encountered a runtime error

Key Operations:
- Device.SoftwareModules.ExecutionUnit.{i}.SetRequestedState(): Request state transition (Active, Idle, etc.)
- Device.SoftwareModules.ExecutionUnit.{i}.Restart(): Restart the execution unit
Execution Environments (EE) Represents the container runtime environments (e.g., Dobby daemon, LXC runtime) where execution units run. The EE lifecycle follows a state machine with the following states:
- Up: EE is operational and can run execution units
- Down: EE is not operational
- Starting: EE is initializing
- Stopping: EE is shutting down
- Failed: EE encountered an error

Key Operations:
- Device.SoftwareModules.ExecEnv.{i}.Restart(): Restart the execution environment
- Device.SoftwareModules.ExecEnv.{i}.Reset(): Reset this execution environment back to its bootup state
- Device.SoftwareModules.ExecEnv.{i}.Remove(): Remove this execution from the device
Application Data Volumes Provides persistent storage for containerised applications, allowing data to survive container restarts and upgrades. Features:
- Persistent data storage across container lifecycle
- Volume mounting into containers
- Data retention policies

Related Data Models:
- Device.SoftwareModules.ExecEnv.{i}.ApplicationData
Signing Deployment Units Provides security mechanisms to verify the authenticity and integrity of software modules before installation. Features:
- Cryptographic signature verification
- Certificate chain validation
- Trust store management

Related Data Models:
- Device.Security.Certificate
Deployment Unit Faults Describes errors that can occur during DU installation, update, or operation. Common DU fault codes:
- Download failure
- Installation failure
- Insufficient storage
- Invalid package format
- Signature verification failure

Data Model Parameter:
- Device.SoftwareModules.DeploymentUnit.{i}.ExecutionFaultCode
Execution Unit Faults Describes errors that can occur during EU execution. Common EU fault codes:
- Startup failure
- Runtime crash
- Resource exhaustion
- Configuration error
- Dependency failure

Data Model Parameters:
- Device.SoftwareModules.ExecutionUnit.{i}.ExecutionFaultCode
- Device.SoftwareModules.ExecutionUnit.{i}.ExecutionFaultMessage