Universal Plug and Play

De Wikipedia, la enciclopedia libre
(Redirigido desde «Upnp»)

Universal Plug and Play (UPnP) es un conjunto de protocolos de comunicación que permite a periféricos en red, como computadoras personales, impresoras, pasarelas de Internet, puntos de acceso Wi-Fi y dispositivos móviles, descubrir de manera transparente la presencia de otros dispositivos en la red y establecer servicios de red de comunicación, compartición de datos y entretenimiento. UPnP está diseñado principalmente para redes de hogar sin dispositivos del ámbito empresarial.

El Foro UPnP es el encargado de promocionar el uso de la tecnología UPnP. Es una iniciativa de la industria informática para permitir una conectividad simple y robusta entre los dispositivos autónomos y computadoras personales de diferentes fabricantes. El Foro UPnP está compuesto por más de ochocientos fabricantes de diferentes ámbitos que van desde la Electrónica de consumo hasta las redes de computadoras.

El concepto de UPnP es una extensión de Plug and play, una tecnología para conectar dispositivos de manera directa y sin necesidad de configuración a una computadora, aunque UPnP no está relacionada directamente con la tecnología plug-and-play. Los dispositivos UPnP son "plug-and-play" en el sentido de que una vez conectados a una red son capaces de establecer de manera automática comunicaciones con otros dispositivos.

Visión general[editar]

La arquitectura UPnP permite la interconexión entre dispositivos como computadoras personales, electrodomésticos, dispositivos de electrónica de consumo y dispositivos inalámbricos. Es un protocolo con una arquitectura abierta y distribuida que se basa en estándares reconocidos como la Familia de protocolos de Internet (TCP/IP), HTTP, XML, y SOAP. Los puntos de control UPnP son dispositivos que utilizan UPnP para controlar dispositivos UPnP.[1]

La arquitectura UPnP soporta Zero Configuration Networking. Un dispositivo compatible con UPnP de cualquier fabricante es capaz de conectarse de manera dinámica a una red, obtener una dirección IP, anunciar sus servicios, comunicar sus funciones bajo demanda y descubrir la presencia y capacidades de los demás dispositivos existentes. Los servidores Dynamic Host Configuration Protocol (DHCP) y Domain Name System (DNS) son opcionales y sólo se utilizarán en caso de que estén presentes en la red. Los dispositivos se pueden desconectar de la red de manera automática sin dejar información de estado.

UPnP se publicó en diciembre de 2008 como un estándar internacional compuesto por 73 partes.[2][3][4]

UPnP incluye otras características destacadas como:

Independencia de formato y dispositivo
la tecnología UPnP puede ejecutarse en muchos medios que soportan IP incluyendo Ethernet, FireWire, IR (IrDA) y RF (Bluetooth, Wi-Fi). No son necesarios controladores especiales, en su lugar se utilizan protocolos de red comunes.
Control mediante Interfaz de usuario (IU)
la arquitectura UPnP permite que los dispositivos presenten una interfaz de usuario mediante un navegador web (ver Presentación más abajo).
Independencia de Sistema operativo y lenguaje de programación
se puede utilizar cualquier sistema operativo y cualquier lenguaje de programación para desarrollar productos UPnP. UPnP no especifica o restringe el diseño de un API de las aplicaciones que se ejecutan en los puntos de control; los desarrolladores de sistemas operativos pueden crear APIs que se ajusten a las necesidades de sus usuarios.
Extensibilidad
Los productos UPnP pueden tener servicios específicos para dicho dispositivo en capas superiores a la arquitectura básica UPnP. Además de combinar servicios definidos por el Foro UPnP de múltiples formas, los fabricantes pueden definir tipos de servicios y dispositivos propios, y pueden extender dispositivos y servicios ya definidos en el estándar para soportar acciones, variables de estado, elementos de estructuras de datos y variables definidas por ellos mismos.

Protocolo[editar]

UPnP utiliza el puerto UDP 1900 y el puerto TCP 2869.[5]

Direccionamiento[editar]

La base de UPnP es el direccionamiento IP: cada dispositivo debe implementar un cliente DHCP y buscará un servidor DHCP en cuanto se conecte por primera vez a la red. Si no hay ningún servidor DHCP disponible, el dispositivo debe asignarse a sí mismo una dirección. El proceso por el cual un dispositivo UPnP se auto-asigna una dirección se denomina AutoIP. En la versión 1.0 de la especificación de la arquitectura UPnP,[6]​ se incluye textualmente la propia especificación de AutoIP; en versión 1.1,[7]​ la especificación de AutoIP referencia el RFC 3927 de IETF RFC 3927.[8]​ Si durante la transacción DHCP, el dispositivo obtiene un nombre de dominio, por ejemplo, mediante un servidor DNS o mediante DNS forwarding, el dispositivo deberá emplear dicho nombre en las operaciones de red posteriores; en otro caso, el dispositivo deberá utilizar su propia dirección IP.

Descubrimiento[editar]

Una vez que un dispositivo ha establecido una dirección IP, el siguiente paso en UPnP es el descubrimiento. El protocolo de descubrimiento de UPnP se denomina Simple Service Discovery Protocol (SSDP). SSDP permite a los dispositivos que acaban de añadirse a una red anunciar sus servicios a los puntos de control presentes en la red. Asimismo, cuando se añade un punto de control a la red, SSDP le permite buscar los dispositivos que le interese controlar. El intercambio fundamental en ambos casos es un mensaje de descubrimiento que contiene datos básicos del dispositivo o uno de sus servicios, por ejemplo, su tipo, identificador y un enlace una URL en la que obtener información más detallada.

Descripción[editar]

Después de que un punto de control haya descubierto un dispositivo, todavía dispone de muy poca información acerca de él. El punto de control debe obtener la descripción del dispositivo desde la URL proporcionada por el dispositivo en el mensaje de descubrimiento para conocer mejor sus capacidades y poder interactuar con él. La descripción de un dispositivo se codifica en XML e incluye información específica del fabricante como nombre de modelo y número, número de serie, nombre de fabricante, URLs a sitios web específicos de fabricante, etc. La descripción también incluye una lista de dispositivos o servicios embebidos, así como URLs de control, manejo de eventos y presentación. Para cada servicio, la descripción incluye una lista de los comandos, o acciones, a las que responderá el servicio, y parámetros, o argumentos, de cada acción; la descripción de un servicio también incluye una lista de variables; estas variables modelan el estado del servicio en tiempo de ejecución, y se describen en términos de su tipo de datos, rango y las características de sus eventos.

Control[editar]

Al obtener la descripción del dispositivo, el punto de control puede enviar acciones a los servicios de un dispositivo. Para ello, el punto de control envía un mensaje de control apropiado a la URL de control del servicio (proporcionada en la descripción del dispositivo). Los mensajes de control también se codifican en XML mediante Simple Object Access Protocol (SOAP). El servicio responderá con un mensaje de control con los resultados de la acción de forma similar a una llamada a una función. Los efectos de la acción, en caso de existir, se modelarán mediante cambios en las variables que describen el estado del servicio.

Notificación de eventos[editar]

Una capacidad adicional de UPnP es la notificación de eventos o eventing. El protocolo de notificación de eventos definido en la arquitectura UPnP se conoce como General Event Notification Architecture (GENA). La descripción UPnP de un servicio incluye una lista de las acciones a las que el servicio responde y otra con las variables que modelan el estado del servicio en tiempo de ejecución. El servicio enviará actualizaciones cuando cambien dichas variables a cualquier punto de control que se haya suscrito para recibir dicha información. El servicio publica actualizaciones enviando mensajes codificados en XML de evento que contiene los nombre de una o más variables de estado y el valor actual de dichas variables. Cuando un punto de control se suscribe por primera vez se le envía un mensaje especial de eventos; que contiene el nombre y los valores de todas las variables que generan eventos y permite al suscriptor conocer el estado actual del servicio. La notificación de eventos UPnP se ha diseñado para mantener a todos los puntos de control informados por igual sobre los efectos de cualquier acción, de este modo se permite soportar escenarios con múltiples puntos de control. Por tanto, los mensajes de eventos se envían a todos los suscriptores, los suscriptores reciben mensajes para todas las variables que han cambiado a las que se han suscrito y los mensajes se envían sin importar el motivo que modificó la variable de estado (tanto en respuesta a una petición, como por el cambio del estado interno del servicio).

Presentación[editar]

El último paso en UPnP es la presentación. Si un dispositivo tiene una URL de presentación, entonces el punto de control podrá obtener una página desde dicha URL, mostrarla en un navegador y, dependiendo de las características de la página, permitirá al usuario controlar el dispositivo y/o consultar su estado. El grado de control que se puede obtener depende en gran medida del dispositivo y de la interactividad presente en la interfaz de presentación.

Estándares UPnP AV[editar]

UPnP AV es una extensión de audio y vídeo para UPnP. El Foro UPnP publicó la versión 2 de la especificación el 12 de julio de 2006,[9]​ con una versión 2.0 de las clases MediaServer y MediaRenderer. La mejora consistió en añadir funciones a los dispositivos de clase MediaServer y MediaRenderer que permitían un mayor grado de interoperabilidad entre MediaServers y MediaRenderers de diferentes fabricantes.

Los estándares UPnP AV sirven como base de especificaciones publicadas por otras organizaciones como las Networked Device Interoperability Guidelines de Digital Living Network Alliance,[10]​ IEC 62481-1 de International Electrotechnical Commission,[11]​ y el protocolo OpenCable de CableLabs.[12]

Componentes UPnP AV[editar]

Servidor multimedia[editar]

Un Servidor Multimedia UPnP AV es el servidor UPnP (un dispositivo 'maestro') que proporciona información sobre su biblioteca de medios y transmite información multimedia (como audio/vídeos/imágenes/ficheros) a los clientes UPnP de la red. En otras palabras, es un dispositivo o una aplicación que almacena contenido multimedia, como fotografías, películas o música y lo comparte en red.

Los servidores multimedia UPnP AV proporcionan un servicio a los clientes UPnP AV, denominados puntos de control, que les permite consultar los contenidos multimedia del servidor y solicitar el envío de un fichero para su reproducción.

Los servidores multimedia UPnP están disponibles para casi todos los sistemas operativos y muchas plataformas hardware. Se pueden catalogar tanto como software o hardware; los servidores multimedia software se pueden ejecutar en una PC y los servidores multimedia hardware sólo servirán para el dispositivo para el que se desarrollaron como un NAS o un Grabador de vídeo digital específico.

En la siguiente tabla se compara la compatibilidad con distintos sistemas operativos así como las funciones básicas de varios Servidores multimedia UPnP AV.

Nombre Licencia Precio Mac OS X Linux, Unix MS Windows Audio Imágenes Vídeo Transcodificar A/V al vuelo Interfaz Web Compatibilidad DLNA Implementación
360 Media Server GPL $00.00 Gratis No No Sí  Sí  Sí  No No No No Sí  Sí  ? Java
aVia Media Player Archivado el 31 de mayo de 2012 en Wayback Machine. Prop. $00.00 Gratis Sí  Sí  Sí  Sí  Sí  Sí  Sí  No No Sí  ?
BRisa MIT $00.00 Gratis Sí  Sí  No No Sí  Sí  Sí  Sí [13] Sí  ? Python
Coherence MIT $00.00 Gratis Sí  Sí  Sí  Sí  Sí  Sí  Sí [14] Sí [13] Sí  Python
Elgato Eyeconnect Prop. $49.95 € Sí  No No No No Sí  Sí  Sí  No No No No ? ?
Foobar2000[15] Prop. $00.00 Gratis No No No No Sí  Sí  No No No No Sí  No No ? C++
FUPPES GPL $00.00 Gratis Sí  Sí  Sí  Sí  Sí  Sí  Sí  Sí  Parcial Parcial C++
GeeXboX uShare GPL $00.00 Gratis No No Sí [16] No No Sí [17] Sí [17] Sí [17] No No Sí  Sí  C
Gmediaserver GPL $00.00 Gratis No No Sí  No No Sí  No No Sí  No No No No ? C
iSedora DLNA Media Server Prop. $23.40 € Sí  No No Sí  Sí  Sí  Sí  Sí  Sí  Sí  Java
LXiMedia GPL $00.00 Gratis Sí  Sí  Sí  Sí  Sí  Sí  Sí  No No Sí  C++
Majestic Media Server Prop. $05.99 $ Sí  No No No No Sí  Sí  Sí  Sí  No No ? ?
MediaTomb GPL $00.00 Gratis Sí [18] Sí  No No Sí  Sí  Sí  Sí  Sí  Sí  C++
MiniDLNA GPL/BSD $00.00 Gratis Parcial Parcial[19] Sí  Sí [20] Sí  Sí  Sí  Parcial Parcial[21] Parcial Parcial[22] Sí  C
Mezzmo Prop. $29.95 $ No No No No Sí  Sí  Sí  Sí  Sí  No No Sí  ?
myiHome Prop. $00.00 Gratis Sí  Sí  Sí  Sí  Sí  Sí  No No No No ? Java
MythTV with uPnP GPL $00.00 Gratis Sí  Sí  No No Sí  Sí  Sí  Sí  Sí  ? C++
Nullriver Medialink Prop. $20.00 $ Sí  No No No No Sí  Sí  Sí  Sí  No No ? ?
Plex GPL $00.00 Gratis Sí  Sí  Sí  Sí  Sí  Sí  Sí  Sí  Sí  Python
PS3 Media Server GPL $00.00 Gratis Sí  Sí  Sí  Sí  Sí  Sí  Sí  Sí [23] Sí  Java
PyMedS MIT $00.00 Gratis Sí  Sí  No No ? ? ? Sí [24] No No ? Python
Rygel LGPLv2 $00.00 Gratis No No Sí  No No[25] Sí  Sí  Sí  Sí  No No Sí  Vala
Rivet[26] Prop. $00.00 Gratis Sí  No No No No Sí  Sí  Sí  No No No No ? ?
Serviio Prop. $00.00 Gratis Sí  Sí  Sí  Sí  Sí  Sí  Sí  Sí [27] Sí  Java
Skifta Prop. $00.00 Gratis Sí  Sí  Sí  Sí  Sí  Sí  Sí  No No Sí  Java
TVersity Prop. $19.99 €[28] No No No No Sí  Sí  Sí  Sí  Sí  Sí  Sí  ?
TVMOBiLi Prop. $26 €[29] Sí  Sí  Sí  Sí  Sí  Sí  No No Sí  Sí  C++
TVShare Prop. $14.95 $ No No No No Sí  Sí  Sí  Sí  Sí  No No ? Java
TwonkyServer Prop. $14.95 € Sí  Sí  Sí  Sí  Sí  Sí  Sí [30] Sí  Sí  ?
Windows Media Connect Prop. $00.00 Gratis[31] No No No No Sí  Sí  Sí  Sí  Sí [32] No No ? ?
Wild Media Server Prop. $15 $ Sí  Sí  Sí  Sí  Sí  Sí  Sí  Sí  Sí  Delphi
PlayOn Prop. $89.99 $[33] No No No No Sí  ? ? Sí  ? ? ? C#
Kodi GPL $00.00 Gratis Sí  Sí  Sí  Sí  Sí [34] Sí  No No Sí  Sí  C++
xupnpd GPLv2 $00.00 Gratis No No Sí  No No Sí  ? Sí  No No Sí  Sí  C++
Yazsoft Playback Prop. $15.34 € Sí  No No No No Sí  Sí  Sí  No No No No ? ?
Nombre Licencia Precio Mac OS X Linux, Unix MS Windows Audio Imágenes Vídeo Transcodificar A/V al vuelo Interfaz Web Compatibilidad DLNA Implementación

Otros componentes[editar]

  • UPnP MediaServer ControlPoint - es el cliente UPnP (un dispositivo 'esclavo') que puede detectar de manera automática los servidores UPnP de una red, consultar su contenido y controlar la transferencia de la información multimedia.
  • UPnP MediaRenderer DCP - es un dispositivo 'esclavo' que puede renderizar (reproducir) contenidos.
  • UPnP RenderingControl DCP - controla los parámetros de un MediaRenderer, como volumen, brillo, nitidez y demás.
  • Cliente/servidor Remote User Interface (RUI) UPnP - envía/recibe comandos de control entre los clientes y servidores UPnP de la red, (como grabar, programar, reproducir, parar, detener, etc.).
    • Web4CE (CEA 2014) para Remote UI UPnP[35] - estándar CEA-2014 diseñado por el Comité R7 Home Network de la Consumer Electronics Association. Protocolo y Framework basado en Web para Interfaz de Usuario Remota en redes UPnP e Internet (Web4CE). Este estándar permite a los dispositivos UPnP del hogar proporcionar su interfaz (visualización y opciones de control) como una página web que podrá ser mostrada en cualquier otro dispositivo conectado en dicha red.
  • QoS (Calidad de Servicio) - es una funcionalidad de servicio importante (aunque no obligatorio) para usar con UPnP AV (Audio y Vídeo). QoS se refiere a los mecanismos de control que proporcionan diferentes prioridades a diferentes usuarios y flujos de datos, o garantizan cierto nivel de rendimiento a un flujo de datos de acuerdo con una solicitud previa. Como UPnP se utiliza principalmente para transmitir datos multimedia en tiempo real, es crítico asegurar la entrega dentro de un intervalo temporal o la transmisión se interrumpirá. Las garantías de QoS son especialmente importantes cuando la capacidad de la red es limitada, como por ejemplo en las redes públicas como Internet.
    • QoS (Calidad de Servicio) para UPnP consta de funciones de servicio para Dispositivos Sumidero (cliente) y Dispositivos Fuente (servidor). Con clases como: Traffic Class que indica el tipo de tráfico contenido en el flujo (por ejemplo, audio o vídeo), Traffic Identifier (TID) que identifica los paquetes que pertenecen a un mismo flujo de datos, Traffic Specification (TSPEC) que contiene un conjunto de parámetros que definen las características del flujo (como requisitos de operación y planificación), Traffic Stream (TS) que es un flujo de datos unidireccional que se origina en un dispositivo fuente y termina en uno o más dispositivos sumidero.
  • Acceso Remoto - define métodos para conectar grupos de dispositivos UPnP que no comparten el mismo dominio multicast.

Atravesar NAT[editar]

UPnP implementa como solución para atravesar NAT, el denominado Internet Gateway Device Protocol (Protocolo IGD). Muchos routers y firewalls se exponen como Internet Gateway Devices (IGD), lo que permite a cualquier punto de control UPnP realizar varias acciones, como obtener la IP externa del dispositivo, enumerar los mapeos de puertos existentes y añadir/eliminar mapeos de puertos. Añadiendo un mapeo de puertos, cualquier punto de control UPnP detrás de un IGD puede permitir el acceso a los clientes internos de la red desde cualquier dirección externa.

Problemas de UPnP[editar]

Falta de autenticación[editar]

El protocolo UPnP, por defecto, no implementa ningún tipo de autenticación, por lo que cada dispositivo debe implementar sus propios mecanismos de autenticación o el Device Security Service.[36]​ Por desgracia, muchas implementaciones de UPnP carecen de mecanismos de autenticación y por defecto asumen que los sistemas locales y sus usuarios son completamente de confianza.[37][38]​ En particular, los routers y firewalls que emplean el protocolo UPnP IGD son vulnerables a ataques puesto que los creadores de IGD omitieron un método estandarizado de autenticación. Por ejemplo, los programas Adobe Flash son capaces de generar peticiones HTTP específicas que permitirían controlar el router a cualquier sitio web malicioso.[39]

Véase también[editar]

Bibliografía[editar]

  • Golden G. Richard: Service and Device Discovery : Protocols and Programming, McGraw-Hill Professional, ISBN 0-07-137959-2
  • Michael Jeronimo, Jack Weast: UPnP Design by Example: A Software Developer's Guide to Universal Plug and Play, Intel Press, ISBN 0-9717861-1-9

Referencias[editar]

  1. «Using the UPnP Control Point API». Microsoft. Consultado el 2 de marzo de 2011. 
  2. International Electrotechnical Commission, 2008-12-09. Consultado el 2009-05-07.
  3. International Organization for Standardization "ISO/IEC standard on UPnP device architecture makes networking simple and easy", 2008-12-10. Consultado el 2009-05-07.
  4. UPnP Forum "UPnP Specifications Named International Standard for Device Interoperability for IP-based Network Devices", 2009-02-05. Consultado el 2009-05-07.
  5. «How Windows Firewall affects the UPnP framework in Windows XP Service Pack 2». Microsoft. Consultado el 14 de mayo de 2012. 
  6. Foro UPnP, UPnP Device Architecture versión 1.0, 2008-04-24
  7. Foro UPnP, UPnP Device Architecture versión 1.1, 2008-10-15
  8. Stuart Cheshire, et al, IETF RFC 3927, "Dynamic Configuration of IPv4 Link-Local Addresses", May 2005
  9. «UPnP Forum Releases Enhanced AV Specifications Taking Home Network to the Next Level» (PDF). 12 de julio de 2006. Consultado el 14 de mayo de 2012. 
  10. Digital Living Network Alliance, DLNA Networked Device Interoperability Guidelines, 2006-10
  11. International Electrotechnical Commission, IEC 62481-1,"Digital living network alliance (DLNA) home networked device interoperability guidelines - Part 1: Architecture and protocols", 2007-08-30
  12. Cable Television Laboratories, OpenCable Home Networking Protocol, 2006-06-30
  13. a b Trabajo en progreso
  14. Audio: usando gstreamer, Vídeo: trabajo en progreso
  15. Con el complemento foo_upnp
  16. GeeXboX se proporciona como una distribución Linux
  17. a b c Página Web: GeeXboX
  18. Compatibilidad con Mac proporcionada por Fink en http://pdb.finkproject.org/pdb/package.php/mediatomb
  19. Parches disponibles en [1]
  20. Consultar [2]
  21. Parches en [3]
  22. Interfaz Web soportada mediante módulo Webmin, consultar [4]
  23. Se está trabajando en una interfaz Web en la biblioteca multimedia opcional presente en las últimas betas.
  24. Usa ffmpeg sólo para vídeo
  25. Soporte experimental disponible, consultar http://jensge.org/2010/04/1-21-gigawatts/
  26. Versión de pago interrumpida el 21 de julio de 2011. Consultar [5] Archivado el 14 de junio de 2012 en Wayback Machine.. Todavía está disponible una versión gratuita, pero sin soporte.
  27. Mediante complementos de terceros
  28. La versión Pro para un solo PC cuesta 19,99€. También existe una versión Basic más limitada por 3,99€.
  29. Los 10 primeros GBytes de cada mes son gratuitos. 26€ licencia de por vida, posibilidad de pago mensual por 1,30€/mes.
  30. Transcodificación soportada en TMS 5.0 y posteriores para PC. Es necesario descargar FFmpeg, VLC o otros motores de transcodificación de terceros para usarlo
  31. Obligatorio comprar una licencia de Microsoft Windows para usar
  32. http://blogs.msdn.com/b/e7/archive/2009/05/12/media-streaming-with-windows-7.aspx
  33. La versión completa de por vida cuesta 89,99$. Existe una versión gratuita con limitaciones.
  34. Esta característica no está disponible en la última versión estable de XBMC, pero está disponible en las publicaciones diarias.
  35. «R07 WG09 Enhanced UPnP Remote User Interface». Archivado desde el original el 31 de julio de 2012. Consultado el 3 de junio de 2012. 
  36. «Device Security and Security Console V 1.0». 
  37. «Shorewall firewall author on UPnP security». Consultado el 30 de septiembre de 2007. 
  38. «Linux-IGD authors on UPnP security». Consultado el 30 de septiembre de 2007. 
  39. «Flash UPnP attack». 

Enlaces externos[editar]