# TR-069

El Technical Report 069 o CWMP es un estándar técnico del DSL Forum (renombrado posteriormente a Broadband Forum) conocido como CPE WAN Management Protocol (CWMP), que define un protocolo como capa de abstracción para el mantenimiento remoto de los dispositivos del usuario final. TR-069 se publicó por primera vez en mayo de 2004, con enmiendas en 2006, 2007, 2010, julio de 2011 para la versión 1.3. y noviembre de 2013 para la versión 1.4 (am5)
A finales de 2011 se calcula que había 150 millones de dispositivos habilitados con este protocolo, y se espera que para fines del 2016 haya casi 356 millones de dispositivos habilitados en el mundo.

## Tecnología

Como protocolo basado en SOAP/HTTP bidireccional proporciona una comunicación entre el CPE y Auto Configuration Server (ACS), e incluye también un servicio de autoconfiguración y control del CPE en modo seguro en un entorno de trabajo.
El puerto que suele usar es el TCP 7547.

## Modelo de Datos

La mayor parte de la configuración y el diagnóstico se realiza a través de establecer y recuperar el valor de los parámetros del dispositivo. Estos están organizados en una estructura jerárquica bien definida que es más o menos común a todos los modelos de dispositivos y fabricantes. Broadband Forum publica sus normas de modelos de datos en dos formatos - archivos XML que contienen una especificación detallada de cada modelo de datos posterior y todos los cambios entre sus versiones y archivos PDF que contienen datos legibles por personas. Estándares y extensiones compatibles deben estar claramente marcados en el modelo de datos del dispositivo. Este debe estar en el campo Device.DeviceSummary o en InternetGatewayDevice.DeviceSummary que se requiere a partir de Device:1.0 y de InternetGatewayDevice:1.1 respectivamente. Si el campo no se encuentra, se supone InternetGatewayDevice:1.0. A partir del Device:1.4 y de InternetGatewayDevice:1.6 se introdujo un nuevo campo ( '<RO>'.SupportedDatamodel) para la especificación estándar soportada.
El modelo está siempre anclado en una clave única llamada Device (dispositivo) o InternetGatewayDevice (Dispositivo-de-acceso-a-Internet) dependiendo de la elección del fabricante. En cada nivel de la estructura se permiten objetos y parámetros (o casos-de-matriz). Las claves se construyen mediante la concatenación de los nombres de los objetos y parámetros utilizando '.' (Punto) como separador, por ejemplo, InternetGatewayDevice.Time.NTPServer1.
Cada uno de los parámetros puede ser marcado como modificable o no-modificable. Esto es informado por el dispositivo en el mensaje GetParameterNamesResponse. El dispositivo no debe permitir el cambio de cualquier parámetro marcado como de sólo lectura. Especificaciones del modelo de datos y extensiones marcan claramente el estado requerido de la mayoría de los parámetros.
Los valores válidos para el parámetro, su tipo y significado también se definen precisamente por la norma.

### Objetos Multi-instancia

Algunas partes del modelo de datos requieren la existencia de múltiples copias del subárbol. Los mejores ejemplos son las tablas que describen, por ejemplo, la Tabla de Forwarding de puertos (PortForwarding Table). Un objeto que representa un array sólo tendrá números de instancia o nombres de alias como sus hijos.
Un objeto multi-instancia puede ser modificable (permitiendo la creación y/o eliminación dinámica de sus hijos) o solo lectura en función de los datos representados. Si por ejemplo el objeto representa cuatro puertos físicos en un switch no debería ser posible añadir o eliminar éstos desde el modelo de datos. Si se añade una instancia de un objeto se le asigna un identificador. Después de ser asignado, identificadores no pueden cambiar durante el ciclo de vida del dispositivo, excepto para reinicialización de fábrica.

### Problemas comunes

A pesar de que la lista de los parámetros y sus atributos está bien definida la mayoría de los dispositivos no siguen las normas por completo. La mayoría de los problemas comunes incluyen parámetros que faltan, identificadores de instancia omitido (por varias instancias de objetos, donde sólo una instancia está presente), parámetros de nivel de acceso erróneos y sólo usar correctamente valores definidos como válidos. Por ejemplo, para el campo que indica el nivel compatible de protocolos WLAN, el valor 'g' debe indicar compatibilidad de 802.11b y 802.11g, y 'solo-g' compatibilidad únicamente de 802.11g. Aunque valores tales como 'bg' o 'b/g' no son legales de acuerdo con las normas del Foro de banda ancha, son comúnmente encontrados en los modelos de datos de dispositivos.

## Motivos para el desarrollo

El protocolo permite configurar y administrar la variedad de dispositivos distintos utilizados para acceder a Internet, tales como módems, routers, puertas de enlaces, terminales de voz sobre IP). Al mismo tiempo, la configuración de estos equipos se ha hecho más complicada, por lo que resulta ardua para los usuarios finales. Por esta razón se ha desarrollado el estándar TR-069, que ofrece la posibilidad de configuración automática de estos tipos de equipos de acceso. Las especificaciones técnicas fueron publicadas por el DSL Forum que actualmente se sigue encargando de la evolución de este tema.
TR-069 es el estándar actual para la activación de terminales de la gama de mercado de banda ancha ADSL. Otros foros, tales como Home Gateway Initiative (HGI) y DVB, ya han aprobado el protocolo para la gestión remota de los dispositivos de red (por ejemplo, la puerta de enlace HGI) y terminales (por ejemplo, la IPTV STB DVB).
Un ACS TR-069 proporciona la conectividad necesaria entre CPE y servidor para automatizar su gestión.

## Funciones generales de TR-069

* Gestión y configuración automática de los servicios en un CPE
* Configuración remota de un CPE
* Gestión de firmware
* Gestión de versiones
* Actualización de la gestión y de control de la ejecución
* Log de análisis dinámico y mensajes
* Diagnósticos
* Conectividad y control de servicios
En el futuro, TR-069 de control dará muchas otras opciones además de las evaluaciones a las normas de pureza para la activación:
* El equipo de investigación de las funciones
* Investigación de información, diagnóstico, estado y capacidad
* Proceso automático controlado por alarma
* Modelo de datos sea cual sea la puerta de enlace, en el acceso con TR-064 es actualizable con el equipo y las funciones secundarias

## Implementaciones de fuentes abiertas

* freecwmp cliente CWMP (C/SHELL)
* EasyCwmp - cliente TR069 cwmp desarrollada con C/SHELL