CWMP is a standardized, text-based protocol enabling communication between CPE and Auto Configuration Servers (ACS). TR-069 standardizes the wide area network (WAN) management of CWMP devices and gives Internet Service Providers a framework and a common language to remotely provision and manage these devices regardless of device type or manufacturer.
CWMP - past & present
CWMP (CPE WAN Management Protocol), sometimes called TR-069 (Technical Report 069), is a technical specification of a Broadband Forum designed for remote governing of CPE (Customer Premises Equipment). First published in May 2004 to answer the growing number of Internet access devices, TR-069 enables automatic configuration and management of devices such as modems, routers, gateways and end-user devices which connect to the Internet. Latest amendments to the specification were published in July 2011 for protocol version 1.3 and November 2013 for version 1.4.
In a nutshell, CWMP based system is divided into two large units: the ACS located in ISP’s data center and the client implemented in CPE. ACS is contacted by the client, who is then configured by the ACS. The most important functions of CWMP are dynamic service provisioning and auto-configuration, diagnostics, software or firmware image management and the monitoring of status and performance.
Figure 1. Remote CPE management via CWMP (TR-069, TR-181, other technical reports.)
From the beginning, TR-069 found its way into a variety of service provider networks, including DSL, cable, FTTH, Ethernet and others. Furthermore, it was occasionally used in conjunction with other remote management protocols. Although CWMP, along with TR-069, TR-181 and other technical reports, is a de-facto industry standard, in the open source world there are currently no production-ready solutions. Portability and extensibility of existing solutions based on these standards are not in line with the progress of modern embedded devices, both in regards to features and security.
Users are forced to program CWMP clients from scratch or invest in various third-party CWMP versions. Moreover, the lack of a quality testing infrastructure resulted in low interest by the hacker community. In all of this there is an evident market gap concerning a CWMP carrier grade feature and a quality, turn-key client solution in the open source world.
In response to this market gap, Sartura has developed Rocket CWMP, a premium CWMP-client capable of supporting TR-069, TR-181 and other technical reports. The project is a continuation on past CWMP-related projects by Sartura such as freecwmp, freeacs-ng and mod_cwmp.
As a lightweight and modular CWMP client, Rocket CWMP is designed to be highly portable and can run on different Linux platforms — along with OpenWrt, it can run on any other Linux distribution such as Yocto, Ubuntu, Debian or others.
The modularity of Rocket CWMP implies that end user developers can easily build their own extensions based on their requirements. In other words, customers are able to write their own plugins to achieve the desired functionality without having to understand the complexity behind CWMP internals.
Testing of Rocket CWMP is based on Docker images which enable reliable development, integration and testing environments.