Saltar al contenido

TR-369 / USP

Agente vs Controlador USP: ¿en qué se diferencian y qué es un Endpoint ID?

Equipo de ingeniería de DodderwarePublicado 8 min de lectura

Respuesta corta

En USP (TR-369), el Agente es el Endpoint que expone Service Elements a uno o más Controladores, y el Controlador es el Endpoint que manipula esos Service Elements a través de uno o más Agentes. Cada Endpoint se identifica con un Endpoint ID de la forma authority-scheme:[authority-id]:instance-id, por ejemplo oui:00256D:my-unique-bbf-id-42, y el scheme define quién garantiza que el ID sea único.

¿Sabías que…?

  • Un Agente y un Controlador del mismo USP Domain pueden compartir un Endpoint ID, pero los Endpoints que comparten ID nunca deben comunicarse entre sí por USP.TR-369 §2.2.1 (R-ARC.0, R-ARC.2)
  • USP no define ningún proceso para detectar o resolver Endpoint IDs duplicados. Un ID que no es único produce un comportamiento impredecible.TR-369 §2.2.1
  • El OUI 00256D y el Private Enterprise Number 3561 están reservados para la documentación y los prototipos del Broadband Forum, y ninguna otra entidad puede usarlos.TR-369 §2.2.1 (R-ARC.3)
  • El instance-id de un Endpoint ID no puede pasar de 50 caracteres, porque los usuarios finales podrían llegar a verlo.TR-369 §2.2.2 (R-ARC.6)
  • En un certificado, el Endpoint ID se escribe como un URN que empieza por urn:bbf:usp:id:. En cualquier otro lugar se omite el espacio de nombres.TR-369 §2.2

Toda conversación USP tiene dos extremos, y TR-369 le asigna a cada uno un trabajo fijo. Ya sea que operes un NOC o construyas la plataforma que hay detrás, te vas a encontrar con los dos roles, Agente y Controlador, y con el identificador que nombra a cada uno, el Endpoint ID, en los USP Records, en los handshakes de WebSocket y en los certificados. Esta guía explica ambos usando solo lo que dice la especificación.

¿En qué se diferencian un Agente y un Controlador USP?

En USP, todo lo que envía o recibe un Message es un Endpoint, un punto de terminación de un Message (§1.4), y cada Endpoint cumple uno de dos roles (§2.1):

  • Un Agente (Agent) es un Endpoint que expone Service Elements a uno o más Controladores (§1.4). Los Service Elements son los Objects, Sub-Objects, Commands, Events y Parameters que forman una funcionalidad (§2.3).
  • Un Controlador (Controller) es un Endpoint que manipula Service Elements a través de uno o más Agentes (§1.4). Normalmente funciona como interfaz de una aplicación de usuario o de un motor de políticas (§2.1.2).

La dirección es fija: los Controladores solo envían mensajes a Agentes, y los Agentes envían mensajes a Controladores (§2.1).

Si vienes de TR-069, la propia especificación hace el paralelo: describe al Auto-Configuration Server (ACS) como el equivalente en CWMP de un Controlador (§7.6.1). La diferencia está en ese “uno o más”. Un Controlador y un Agente tienen una USP Relationship cuando pueden intercambiar mensajes, lo que normalmente significa que el Controlador ya está en la tabla de Controladores del Agente (§1.4), y esa tabla admite más de un Controlador.

¿Qué guarda cada lado y qué necesita saber del otro?

Los dos roles guardan cosas distintas y necesitan datos distintos del otro:

Pregunta Agente Controlador
Qué guarda Un Instantiated Data Model y un Supported Data Model (§2.1.1) Puede llevar una base de datos de Agentes, con sus capacidades y estados (§2.1.2)
Qué necesita saber del otro El Endpoint ID, las credenciales y el Role autorizado del Controlador, y cómo llegar a él (§3.1) El Endpoint ID del Agente, la conectividad de sus MTP y las credenciales (§3.2)
Dónde guarda al otro El Object Device.LocalAgent.Controller de su modelo de datos (§3.1, R-DIS.0) Su propio registro de Agentes conocidos (§3.2)
Requests que envía Notify, Register, Deregister Get, GetInstances, GetSupportedDM, GetSupportedProtocol, Set, Add, Delete, Operate

Los dos modelos de datos responden preguntas distintas en una llamada de soporte. El Instantiated Data Model contiene los Service Elements que el Agente representa en este momento, con su estado (§2.4.1). El Supported Data Model contiene lo que el Agente entiende (§2.4.2), y GetSupportedDM le permite al Controlador saber qué entiende un Agente, en lugar de cuál es su estado actual (§7.5.3).

El Controlador obtiene el Endpoint ID, los datos de MTP y las credenciales del Agente cuando este se conecta por primera vez (§3.2). Cómo encuentra el Agente a su Controlador se explica en cómo un Agente USP encuentra a su Controlador.

¿Cómo se arma un Endpoint ID de USP?

Cada Endpoint se identifica con un Endpoint Identifier, un identificador de la capa USP que es único, a nivel local o global según el scheme con el que se asigna (§2.2). Tiene tres partes:

authority-scheme ":" [authority-id] ":" instance-id

  • El authority-scheme indica qué tipo de autoridad asigna el ID y define el formato del authority-id (§2.2).
  • El authority-id identifica a esa autoridad. Algunos schemes exigen que vaya vacío, y por eso IDs como os::00256D-0123456789 llevan dos signos de dos puntos seguidos (§2.2.1).
  • El instance-id nombra al Endpoint. Solo puede usar letras, dígitos, -, ., _ y caracteres con codificación porcentual (R-ARC.5), y no puede pasar de 50 caracteres (R-ARC.6). Mejor si es corto, porque los usuarios finales podrían ver los Endpoint IDs (§2.2.2).

En un certificado, el ID se escribe como un URN en el espacio de nombres del Broadband Forum: urn:bbf:usp:id: seguido de las mismas tres partes. En cualquier otro lugar, por ejemplo en los campos to_id y from_id de un USP Record, se omite el espacio de nombres (§2.2).

¿Qué authority schemes puede usar un Endpoint ID?

La especificación define doce schemes (§2.2.1), y el requisito R-ARC.2a hace obligatorias sus reglas:

Scheme authority-id instance-id Ejemplo
oui Un OUI del IEEE, en 6, 7 o 9 caracteres hexadecimales Lo define el dueño del OUI, único dentro de ese OUI oui:00256D:my-unique-bbf-id-42
cid Un CID del IEEE, en 6 caracteres hexadecimales Lo define el dueño del CID cid:3AA3F8:my-unique-usp-id-42
pen Un Private Enterprise Number de IANA, en decimal Lo define el dueño del número pen:3561:my-unique-bbf-id-42
self Opcional, de 1 a 6 caracteres generados por el Endpoint Lo genera el Endpoint self::my-Agent
user De 0 a 6 caracteres Se asigna desde una interfaz de usuario o de gestión La especificación no da uno
os Vacío OUI, un guion y el número de serie os::00256D-0123456789
ops Vacío OUI, product class y número de serie ops::00256D-STB-0123456789
uuid Vacío Un UUID uuid::f81d4fae-7dec-11d0-a765-00a0c91e6bf6
imei Vacío Un IMEI según la definición de la GSMA imei::990000862471854
proto De 0 a 6 caracteres, sin punto Libre; solo para prototipos proto::my-Agent
doc De 0 a 6 caracteres Libre; solo para documentación doc::agent (§4.3.2.1)
fqdn Vacío Un nombre de dominio completo (FQDN), sin comodines fqdn::www.example.org

El scheme también define quién responde por la unicidad: el dueño del OUI, del CID, del número de empresa o del nombre de dominio (incluido el OUI dentro de os y ops), el usuario o la máquina que asigna el ID en user, y el propio Endpoint en self (§2.2.1). Antes de asignar IDs a todo un parque de equipos, revisa tres requisitos más:

  • R-ARC.3: el OUI del Broadband Forum, 00256D, y su Private Enterprise Number, 3561, están reservados para la documentación y los prototipos del BBF, y nadie más puede usarlos. Por eso aparecen en los ejemplos de arriba.
  • R-ARC.4: los schemes proto y doc no se deben usar en entornos de producción.
  • R-ARC.4a: un Endpoint que usa fqdn debe presentar certificados TLS con un subjectAltName que permita ese nombre de dominio.

¿Dónde aparece el Endpoint ID durante una sesión?

En una conexión WebSocket segura, el Endpoint ID aparece tres veces, en este orden:

  1. Handshake TLSEn el certificadoEl subjectAltName lleva el Endpoint ID en su forma URN.
    • urn:bbf:usp:id:…
  2. Handshake WebSocketEn la solicitud de aperturaEl cliente ofrece el subprotocolo v1.usp y pone su propio Endpoint ID en el URI de la solicitud.
    • eid=…
  3. USP RecordEn cada RecordDos campos obligatorios nombran al Endpoint de destino y al de origen.
    • to_id
    • from_id
Dónde aparece un Endpoint ID cuando una sesión USP corre sobre WebSocket con TLS, en orden. Diagrama de Dodderware, basado en TR-369 §2.2, §4.1.3.1, §4.3.2.1 y §8.1.
  1. En el certificado. Cuando un certificado X.509 autentica a un Endpoint, su subjectAltName debe llevar la forma URN del Endpoint ID o, en el caso de fqdn, el nombre de dominio. Cuando los certificados autentican en la capa del MTP, los Endpoints no deben procesar Records cuyo from_id no coincida con el ID del certificado (R-SEC.0a, §8.1).
  2. En el handshake de WebSocket. No se envía ningún USP Record hasta que termina TLS, así que el servidor no puede saber quién es el cliente sin mirar dentro del certificado (§4.3.2.1). El cliente envía el encabezado Sec-WebSocket-Protocol con el valor v1.usp (R-WS.9, R-WS.10) y agrega su Endpoint ID al query del URI de la solicitud como eid (R-WS.10b). Si el ID lleva un signo de porcentaje, ese signo también se codifica, así que doc::agent%21 viaja como doc::agent%2521 (R-WS.10c).
  3. En cada Record. Cada USP Record lleva el Endpoint ID de destino en to_id y el de origen en from_id, y ambos campos son obligatorios (§4.1.3.1).

Como el otro lado verifica la identidad contra este valor, trata el Endpoint ID como permanente: uno que cambia después de haberse usado también puede causar un comportamiento impredecible (§2.2.1). Los certificados, la confianza y los roles de los Controladores se explican en seguridad en TR-369.

¿Un Agente y un Controlador pueden compartir Endpoint ID?

Sí, con límites. Un Agente y un Controlador del mismo USP Domain pueden usar el mismo Endpoint ID, y todo Endpoint debe tolerarlo (R-ARC.0, R-ARC.1). Pero los Endpoints que comparten ID no deben comunicarse entre sí por USP (R-ARC.2), y salvo que la autoridad que asignó el ID indique que están relacionados, no se puede suponer ninguna relación entre ellos (§2.2.1). En la modularización del software, compartirlo incluso se recomienda: un USP Service que lleva dentro un Agente y un Controlador debería usar el mismo Endpoint ID para ambos, o el USP Broker no podrá relacionarlos como un solo USP Service (Apéndice VI.2).

Lo que USP no te da es una red de seguridad contra duplicados dentro de un mismo rol. No define ningún proceso para identificar o resolver un Endpoint ID que no sea único entre todos los Agentes o entre todos los Controladores, y el resultado es un comportamiento impredecible (§2.2.1). La única regla incorporada es la de self: un Endpoint que se encuentra con otro que usa su mismo ID debe cambiar el suyo (§2.2.1).

Para el panorama completo, con mensajes, transportes y modelos de datos, empieza por qué es TR-369.

Preguntas frecuentes

¿Cuál es la diferencia entre un Agente y un Controlador USP?
El Agente expone Service Elements, los Objects, Parameters, Commands y Events de su modelo de datos, a uno o más Controladores. El Controlador manipula esos Service Elements a través de uno o más Agentes. Los Controladores solo envían mensajes a Agentes, y los Agentes envían mensajes a Controladores.
¿Qué formato tiene un Endpoint ID de USP?
Tres partes separadas por dos puntos, authority-scheme:[authority-id]:instance-id, donde el authority-id puede ir vacío. En un certificado, el mismo ID se escribe como un URN que empieza por urn:bbf:usp:id:.
¿Qué significa os:: en un Endpoint ID de USP?
os es un authority scheme cuyo authority-id siempre va vacío, por eso el ID lleva dos signos de dos puntos seguidos. Su instance-id es un OUI, un guion y el número de serie, como en os::00256D-0123456789. El scheme ops agrega el product class entre ambos.
¿Un equipo USP puede tener más de un Controlador?
Sí. La especificación define al Agente como un Endpoint que expone Service Elements a uno o más Controladores, y un Agente que admite la configuración de Controladores por USP los guarda en el Object Device.LocalAgent.Controller de su modelo de datos.
¿Puedo usar Endpoint IDs proto:: o doc:: en producción?
No. El requisito R-ARC.4 dice que los authority schemes proto y doc no se deben usar en entornos de producción. Existen solo para prototipos y para documentación, como tutoriales y ejemplos.
¿Qué caracteres puede llevar un Endpoint ID de USP?
El instance-id puede usar letras, dígitos, guion, punto, guion bajo y caracteres con codificación porcentual, y no puede pasar de 50 caracteres. La especificación prefiere valores cortos porque los usuarios finales pueden llegar a verlos.

Fuentes

  • Broadband Forum, TR-369 – The User Services Platform, Issue 1 Amendment 5 (USP 1.5), enero de 2026.
  • Dodderware, documentación de producto e ingeniería de DWS Support.
  • §1.4Definiciones (Agent, Controller, Endpoint, Endpoint Identifier, USP Domain, USP Relationship)
  • §2.1, §2.1.1, §2.1.2, §2.3Endpoints, Agentes, Controladores y Service Elements
  • §2.2, §2.2.1, §2.2.2Endpoint Identifier, authority schemes (R-ARC.0 a R-ARC.4a) y reglas del instance-id (R-ARC.5, R-ARC.6)
  • §2.4.1, §2.4.2, §7.5.3Instantiated y Supported Data Model, GetSupportedDM
  • §3.1, §3.2, §3.3, §3.4.2Lo que Agentes y Controladores necesitan saber del otro, el número de empresa del Broadband Forum
  • §4.1.3.1, §4.3.2, §4.3.2.1Campos to_id y from_id del Record, handshake de la sesión WebSocket (R-WS.9 a R-WS.10c)
  • §7.3.3.2, §7.6.1Tipos de request, y el ACS como equivalente en CWMP de un Controlador
  • §8.1Endpoint IDs en certificados (R-SEC.0a)
  • Apéndice VI.2USP Brokers y USP Services que llevan dentro un Agente y un Controlador

Leer la especificación TR-369

TR-369 © The Broadband Forum. Todos los derechos reservados. Citado brevemente y parafraseado con fines explicativos; los diagramas son de Dodderware.

Gestiona equipos TR-069 y TR-369 desde una sola consola.

DWS Support reúne cada ONT y router del hogar en una consola web, hable el protocolo que hable: TR-069 por GenieACS o un ACS integrado, TR-369 por un controlador USP nativo. Se instala en tu propia infraestructura.

Solicita una demo