The service delivery platform is the components you need to deliver and deploy software components on a router.
This work was started by Technicolor and completed by Stetel.
The idea is to be able to deploy third-party services without affecting the core functionality (i.e. routing): it should not reboot, or degrade performance. Also the installation must be controlled by the operator, and signed-off by a liable stakeholder (third-party provider).
The system reuses existing components: opkg for packaging, ACS for delivery, package signing, isolation in LXC containers. The LXC containers are optional. The Execution Environment defines what can be accessed by the container. It is itself a package that can be updated.
There is a strong border of responsibilities between the firmware itself and the services.
The CWMP daemon terminates the TR-069 / ACS communication. It is a proxy for LCM methods that go to the LCM (LifeCycle Manager) daemon over ubus. The LCM manages the execution environments and launches opkg in one of them to install the services. Each execution environment has its own catalog of installed opkgs. The default execution environment is at the top, you can install other execution environments in it as packages.
Demo of installing a Samsung SmartThings package on a router, which allows it to act as a Zigbee gateway and turn on a light from a smartphone.
Difference with Flatpak and Snap is that it can run on very resource-constrained environments, where flash space is at a premium.
Resources are constrained by LXC, so at least CPU and memory usage; not clear if network bandwidth can be limited. USB is exposed to the container if the execution environment does so.