Revista Pensamiento AMERICANO Revista Pensamiento Americano ISSN: 2027-2448 Vol 2 No. 6. Enero – Junio 2011 (Págs 51-56 Protocolos de Descubrimiento de Servicio Service Discovery Protocol José G. Palacio Velásquez* jpalacio@coruniamericana.edu.co Resumen: Los servicios se pueden definir como aplicaciones que se encuentran disponibles para que otras aplicaciones llamadas clientes pueden hacer usos de las funciones de dicho servidor, para la comunicación con dichos servidores se hace necesario que los clientes sepan cuáles de los equipos que se encuentran disponibles brindan servicios y cual servicio brinda cada uno, esto exige la configuración del cliente para que este puede realizar la comunicación con el respectivo servidor. Este tipo de configuración exige conocer que servicios se están brindando en la red y quien los brinda, pero qué sucede si los clientes no saben quiénes son los servidores y peor aún qué sucedería si los clientes no saben qué servicios se están prestando, en este caso aparecen unos sistemas que permiten descubrir qué servicios se encuentran disponibles en una red. Los protocolos de descubrimiento de servicios están pensados precisamente para poder llevar a cabo estas actividades, buscando generar redes que se configuren de manera automática. Protocolos como el SDP usado por el sistema Bluetooth, Jini de Sun Microsystem, Universal Plug and Play de Microsoft son ejemplos claros de dichos protocolos, los cuales abarcaremos en este artículo. Palabras claves: Protocolos de Descubrimiento de Servicios, Bluetooth, Jini, UPnP, Salutation, SDP, SLP, SSDP, TCP/IP, RMI, JVM, RPC, HTTPU, HTTPMU. Abstract: The services can be defined as applications that are available for other applications called customers can use the functions of a server, for communicating with those servers is necessary for customers to know which of the teams that provide services are available and what each service provides, this requires client configuration so that this can make communication with the respective server. This configuration requires knowing what services are being provided on the network and who offers them, but what happens if customers do not know who the servers and even worse would happen if customers do not know what services are being provided, in this case are systems that allow you to discover what services are available on a network. The service discovery protocols are designed precisely to carry out these activities, seeking to create networks that are configured automatically. SDP protocols such as used by the Bluetooth system, Sun Microsystem’s Jini, Universal Plug and Play Microsoft are clear examples of these protocols, which cover in this article. Key words: Service Discovery Protocol, Bluetooth, Jini, UPnP, Salutation, SDP, SLP, SSDP, TCP/IP, RMI, JVM, RPC, HTTPU, HTTPMU.Keywords: Service Introducción tecnologías se han volcado al desarrollo de cada vez más y más servicios, buscando facilitar la vida de los usuarios finales que hacen uso de los mismos. L as redes de computadores han representado un gran cambio en el estilo de vida de las personas en el mundo actual, en los escenarios de red podemos encontrar una gran diversidad de servicios orientados a realizar una serie de actividades que han hecho que los usuarios finales modifiquen su comportamiento en comparación con las generaciones anteriores, actualmente el concepto de Internet está arraigado en todas las diferentes culturas, tanto así que llegado a crear en algunos una adicción a la misma, las empresas desarrolladoras de Dichos servicios se basan en los denominados protocolos de comunicación que dictan las reglas que los sistemas de cómputo deben seguir para poder llevar a cabo su respectivo proceso comunicativo, protocolos como el HTTP, utilizado en el servicio web, permiten a los usuarios acceder a una gran cantidad de información y recursos a través de la Internet, lo que ha popularizado en gran medida el uso de dicho sistema. * Ingeniero Químico. MSc (c) Ingeniería de Sistemas y Computación. Artículo recibido: Marzo 13/2011. Aceptado: Agosto 16/2011. 51 Revista Pensamiento AMERICANO Protocolos de Descubrimiento... El problema con estos servicios se basa en el hecho de que se debe dar un proceso de comunicación entre el sistema servidor y el sistema que realiza las solicitudes a los mismos denominado cliente, un cliente debe saber quien es su sistema servidor, afortunadamente existen protocolos que permiten facilitar la búsqueda por parte de los clientes de dicho servidor, protocolos como el DNS que permiten localizar equipos servidores en una red con el simple nombre de la misma, son un ejemplo de ellos, el problema principal de dicho servicio es que en la máquina cliente se hace necesario especificar quien o quienes son tus servidores DNS. Salutation Consortium, disuelto el 30 de junio del 2005, el cual estaba formado por un conjunto de empresas (norteamericana, japonesas y europeas), entre las que encontramos Hewlett-Packard, Canon, Fujitsu, Xerox, Toshiba, Epson, Sun Microsystem, Sharp, etc. encontraron una forma sencilla que permitiría solucionar los problemas que se venían presentando [2]: • Deberá existir una manera uniforme para la descripción de las posibilidades que tienen los distintos aparatos digitales. • Deberá existir un único método en común de confrontación de información. Qué hacer en caso de que un cliente no posee información de ese tipo, como puede una máquina cliente en particular acceder a un servicio si no sabe quien brinda el mismo dentro de una red, la solución ya ser encuentra a la mano desde hace algún tiempo, se denomina Protocolos de Descubrimiento de Servicios. Protocolos de descubrimiento de servicios En la figura 1 podemos observar algunos de los protocolos de descubrimiento de servicios más conocidos y las empresas encargadas de su desarrollo. Dichos protocolos son los siguientes: • SLP (Service Location Protocol – Protocolo de Localización de Servicios) desarrollado por la IETF (Internet Engineering Task Force). • Jini, basado en Java. • UPnP (Universal Plug and Play) de Microsoft Corporation. • SDP (Service Discovery Protocol) usado en Bluetooth. • Salutation, desarrollado por la Salutation Consortium. Los protocolos de descubrimiento de servicios se pueden definir como protocolos de red que permiten la detección automática de dispositivos y servicios que ofrecen estos dispositivos en una red, permiten facilitar los procesos de configuración de diferentes dispositivos electrónicos, de tal manera que los mismos se autoconfiguren cuando el usuario los seleccione. Grandes compañías como Hewlett-Packard, Sun Microsystem (actualmente Oracle), Microsoft, IBM, Hitachi, Xerox, Canon, entre muchas otras, han unido esfuerzos para el desarrollo de sistemas que permitan la detección de dispositivos y los servicios provistos por los mismos, para solucionar los problemas que se venían presentando cuando se diseñaban nuevos dispositivos y los mismos se trataban de conectar a las redes existentes. En este artículo abarcaremos las características principales de cada uno de estos protocolos. 2.1. SLP El Protocolo de Localización de Servicios (SLP) es un protocolo de descubrimiento automático de servicios basado en redes IP. Este protocolo puede ser implementado independientemente del lenguaje, su mecanismo de funcionamiento se basa en el descubrimiento de diferentes atributos del servicio y además soporta la navegación por diferentes servicios, permitiendo la búsqueda masiva de servicios disponibles, utilizando tráfico de tipo multidifusión. Figura 1: Empresas involucradas en el desarrollo de Jini, Salutation, UPnP, y SLP [3]. La arquitectura SLP consta de tres componentes principales denominados agentes: • Agentes Usuarios (UA): es el encargado de realizar el descubrimiento del servicio, este adquiere los vínculos de acceso a los servicios. • Agentes de Servicio (SA): se encargan de publicar el servicio e indicar las características del mismo, publicando los vínculos de servicio a los Agentes de Directorio haciendo que los servicios se encuentren disponibles a los Agentes Usuario. • Agentes de Directorio (DA): este agente mantiene una lista de los servicios disponibles en la red, almacenando las direcciones e información recibi 52 Revista Pensamiento AMERICANO Protocolos de Descubrimiento... das desde los SA y respondiendo a las solicitudes de los UA. software - cualquier cosa se puede conectar a una red [5]. En la Figura 2 se observa cómo se da la interacción entre los diferentes agentes. Jini es una arquitectura distribuida orientada a servicios, los cuales pueden representar hardware o software o una combinación de ambos, No es un protocolo como el SLP, es una API de Java orientado hacia la búsqueda de servicios. Los servicios ofrecidos por SLP son los siguientes [4]: • Obtener vínculos de servicios para los UA. • Mantener el directorio de servicios publicados. • Descubrir atributos de los servicios disponibles. • Descubrir DA disponibles. • Descubrir los tipos disponibles de SA. Cuando en una red se encuentran más de un servidor Jini, los mismos se coordinan formando lo que se denomina una federación. Como todo sistema Java, Jini requiere de la JVM para su funcionamiento, usando tecnología RMI (Remote Method Invocation), lo que permite que un objeto Java pueda invocar a un objeto o clase remota. Los sistemas Jini están formados por tres componentes fundamentales: • Clientes • Servidor • Servidor Lookup (JLS: Jini Lookup Service) El servidor Lookup mantiene información dinámica sobre los servicios disponibles dentro de la federación, la ubicación del servidor puede estar determinada o puede ser descubierta utilizando multicast para su localización. Figura 2: Agentes SLP y sus transacciones para descubrimiento y registro de servicios [3]. Un servidor Jini que desee unirse a una federación primero deberá descubrir uno o más servicios. Para el descubrimiento de servicios se pueden utilizar tres metodologías: • Estática • Activa. • Pasiva. El proceso de unión a una federación consta de los siguientes pasos: 1. El servicio Jini detecta uno o más JLS ya sea en su red local o en redes remotas (p.e. Internet), usando el proceso discovery. La metodología estática se hace uso de un servidor DHCP para la asignación de las direcciones IP de los DA a los equipos que los soliciten. 2. El servicio carga un conjunto de clases denominadas proxy de servicio al JLS, a través del proceso join. El descubrimiento activo los UA y los SA envían solicitudes de servicio a las direcciones de grupo multicast SLP. 3. Los clientes envían por multicast una consulta para localizar al JLS, si este existe, el objeto remoto se descarga en la máquina cliente. Un DA que se encuentre escuchando en dicha dirección recibirá la solicitud y responderá directamente al agente que envió la solicitud. 4. El cliente utiliza el objeto remoto descargado para localizar el servicio deseado En el método pasivo el DA envía periódicamente anuncios multicast de sus servicios, los SA y los SA escuchan la dirección del DA y por lo tanto ahora está disponible para contactarlo por vía unicast. En el servicio Lookup de Jini se registran los atributos del servicio a través de objetos Java que se agregan al proxy del servicio y que contienen las características propias del dispositivo, dichas características están conformadas por caracteres cadenas de caracteres que deberán coincidir con las solicitadas por el cliente. 2.2. Jini Jini es un proyecto de Sun Microsystem que dramáticamente expande el poder de la tecnología Java. La tecnología Jini permite la creación de redes espontáneas de una amplia variedad de hardware y La definición de dichas características dependerán 53 Revista Pensamiento AMERICANO Protocolos de Descubrimiento... de la persona que programe el dispositivo, algunos atributos estándar que sugiere Jini son [6]: Servicios Servicios de Red de red JavaSpaces JavaSpaces biertos y control de servicios, el protocolo es capaz de funcionar sobre cualquier dispositivo y plataforma ya que es independiente del lenguaje de programación. Otros Servicios Otros Servicios La creación del protocolo UPnP está basada en protocolos preexistentes como HTTP, XML, etc. Está constituido por varios sub sistemas y SSDP (Simple Service Discovery Protocol – Protocolo de Descubrimiento de Servicios Simple), encargado de definir qué servicios se encuentran disponibles en una red TCP/IP. Lookup Lookup JINI Discovery // Join Discovery Join JVM JVM JVM JVM JVM JVM Solaris Solaris Mac Mac Windows Windows Sparc Sparc PPC PPC X86 X86 El protocolo SSDP se encuentra construido sobre HTTPU (HTTP usando UDP) y HTTPMU (variación de HTTPU que usa multicast) y define métodos para un punto de control en la localización de recursos de interés en la red y para que los dispositivos anuncien su disponibilidad, al utilizar las solicitudes de búsqueda y el anuncio de presencia, se elimina la sobrecarga que sería necesaria si se utilizara sólo uno de los mecanismos. Debido a esto, todos los puntos de control poseen información completa del estado de la red mientras se mantiene un tráfico bajo. Figura 3. Estructura del sistema Jini En el servicio Lookup de Jini se registran los atributos del servicio a través de objetos Java que se agregan al proxy del servicio y que contienen las características propias del dispositivo, dichas características están conformadas por caracteres cadenas de caracteres que deberán coincidir con las solicitadas por el cliente. La definición de dichas características dependerán de la persona que programe el dispositivo, algunos atributos estándar que sugiere Jini son [6]: La figura 4 muestra la pila de protocolos utilizados por UPnP para el descubrimiento de los servicios en una red TCP/IP. UPnP Vendor Defined • Address: Contiene la ubicación geográfica de un servicio, ya sea un país, estado, ciudad, etc. • Comment: Puede contener cualquier comentario sobre el dispositivo. • Location: Provee información referente a la localización del servicio dentro de una organización. • Name: Se emplea para designarle un nombre al servicio que sea fácil de entender para el usuario humano. • ServiceInfo: Provee información genérica del fabricante, el modelo, el número serial, etc. • ServiceType: Se usa para especificar información adicional que describe un servicio pero siendo natural para el usuario. • Status: Define el estado operacional del servicio. UPnP Device Architecture Defined SSDP SSDP HTTPMU HTTPU UDP IP Figura 4. Pila protocolos utilizada en UPnP para el descubrimiento de servicios[3]. 2.3. UPnP Si un servicio desea unirse a una red, debe envíar un mensaje de anuncio, avisanso a la red acerca de su presencia. Si se necesita enviar un aviso multiple, el sistema envia dicho aviso a una dirección multicast reservada. Si en la red se encuentra presente un servicio de directorio o búsqueda, éste puede registrar los avisos. Mientras tanto, otros servicios pueden ver directamente estos anuncios. El anuncio contiene una URL (Universal Resource Locator) que identifica el servicio publicado y una URL a un archivo que brinda una descripción del servicio publicado. Universal Plug and Play es un protocolo abierto desarrollado por un conjunto de empresas lideradas por Microsoft Corporation. Este protocolo se extiende de la tecnología Plug and Play de Microsoft, y se utiliza para la detección de dispositivos en redes TCP/IP. Está diseñado para trabajar en pequeñas oficinas o redes caseras, en donde se pueden encontrar mecanismo de comunicación peer to peer para la autoconfiguración de dispositivos, servicios descu54 Revista Pensamiento AMERICANO Protocolos de Descubrimiento... Un cliente que necesite descubrir un servicio, puede enviar una solicitud de búsqueda multicast, en caso de descubrir un servicio, el pedido del cliente puede ser respondido por el servicio de directorio o directamente por el servicio solicitado, o se puede contactar a un servicio a través de la URL que se indica en el anuncio del servicio. se denomina navegación o browsing. 2.1. Salutation Salutation es un protocolo de descubrimiento de servicios y administración de sesión desarrollado por diferentes compañías líderes en tecnología a través de un grupo denominado Salutation Consortium. Salutation es un estándar abierto e independiente del sistema operativo, protocolos de comunicaciones y plataformas de hardware. Salutation fue creado para resolver los problemas de descubrimiento de servicios y utilización entre un amplio conjunto de dispositivos y equipos en un entorno de gran cobertura de conectividad y movilidad. La arquitectura provee aplicaciones con diferentes servicios que son escasos a través de toda la red. También contiene funciones para descubrir las capacidades de servicios remotos. Salutation brinda características para que una aplicación establezca sesiones interoperables con cualquier servicio remoto. 2.1. SDP El Bluetooth Service Discovery Protocol (SDP), hace parte de la pila de protocolos de Bluetooth utilizado para la localización de servicios provistos por dispositivos con tecnología Bluetooth. SDP se encuentra basado en una plataforma desarrollada por Motorola llamada Piano, que fue modificada para ajustarse a las comunicaciones ad hoc. Figura 5. Pila protocolos Bluetooth[7]. Figura 6. Modelo de Administración de Salutation. SDP se basa en una comunicación entre un servidor SDP y un cliente SDP. El servidor mantiene una lista de registros de servicios, los cuales describen las características de los servicios ofrecidos. Cada registro contiene información sobre un determinado servicio. La arquitectura Salutation define una entidad llamada Administrador Salutation (SLM por sus iniciales en inglés - Salutation Manager) que funciona como un intermediario de servicios para los servicios en la red. Las diferentes funciones de un servicio están representadas por unidades funcionales. Las Unidades Funcionales representan características esenciales de un servicio (por ej. fax, impresora, escáner, etc). Además, los atributos de cada Unidad Funcional se capturan en el Registro de Descripción de Unidad Funcional. Salutation define la sintaxis y semántica del Registro de Descripción de Unidad Funcional (por ej. nombre, valor). SLM puede ser descubierto por los servicios en un número de maneras tales como: Usando una tabla estática que guarda la dirección de transporte del SLM remoto. Enviando una consulta de descubrimiento usando el protocolo definido por la arquitectura Salutation. Preguntando la dirección de transporte del SLM remoto a través de un servidor de directorio central. Este protocolo está indefinido por la arquitectura Salutation, sin embargo, la especificación actual sugiere el uso de SLP. Un cliente puede recuperar la información de un registro de servicio almacenado en un servidor SDP lanzando una solicitud SDP. Si el cliente o la aplicación asociada con el cliente deciden utilizar un determinado servicio, se debe establecer una conexión independiente con el servicio en cuestión. SDP proporciona un mecanismo para el descubrimiento de servicios y sus atributos asociados, pero no proporciona ningún mecanismo ni protocolo para utilizar dichos servicios. Un cliente SDP realiza una búsqueda de servicios limitada por determinadas características. No obstante hay momentos en los que resulta deseable descubrir todos los servicios ofrecidos por un servidor SDP sin que pueda existir ningún conocimiento previo sobre los registros que pueda contener. Este proceso de búsqueda de cualquier servicio ofrecido 55 Revista Pensamiento AMERICANO Protocolos de Descubrimiento... El servicio especifica directamente la dirección de transporte del SLM remoto. gramación, exceptuando Jini que funciona sobre una plataforma Java, lo que exige que los sistemas deben tener instalada la Maquina Virtual Java para el funcionamiento del mismo, todos los protocolos son dependientes del sistema operativo menos Jini, debido a las características multiplataforma propias del lenguaje Java. El proceso de descubrimiento de servicios puede realizarse a través de múltiples SLMs. Un SLM puede descubrir otros SLMs remotos y determinar los servicios que están registrados allí. El Descubrimiento de Servicios se lleva a cabo comparando el tipo de servicio requerido, según lo especifica el SLM local, con el tipo de servicio disponible en un SLM remoto. Todos los protocolos se encuentran basados en arquitecturas abiertas, aunque sistemas cono el UPnP se encuentra solo abierto a los miembros que hacen parte del equipo de desarrollo del protocolo. Se usan RPC para transmitir el tipo de Servicio requerido desde el SLM local al SLM remoto y para transmitir la respuesta desde el SLM remoto al SLM local. El SLM determina las características de todos los servicios registrados en un SLM remoto al manipular la especificación del tipo de servicio requerido. También puede determinar las características de un servicio específico registrado en un SLM remoto o la presencia de un servicio específico en un SLM remoto al comparar un conjunto específico de características. Referencias [1] RIZOS, G.E., et al. (2007). Comparative Study of Service Discovery Protocols for ah-hoc Networks. Translation Journal Style. [2] BETTSTETTER, C. Renner, C. (2000). A Comparison of Service Discovery Protocols and Implementation of the Service Location Protocol. Translation Journals style. [3] ALARCÓN, C. (2003) Descubrimiento de Servicios para Comercio Móvil, Universidad de Concepción. [4] ALVAREZ, F. (2005) Tecnnical White Paper: What is Jini?, Sun Microsystem. Retrieve from http://www. di.uniovi.es/~falvarez/whatisjini.pdf. [5] LUGO, L. (2001) Modelado de dispositivos para un sistema de seguridad implementando tecnología Jini. Tesis Licenciatura. Ingeniería en Sistemas Computacionales. Retrieve from http://catarina.udlap.mx/u_dl_a/tales/ documentos/lis/lezama_l_a/capitulo3.pdf. [6] MARIN-PERIANU, R. et. al.(2005). A Clasification of Service Discovery Protocols. Conclusion [7] Arquitectura de Protocolos Bluetooth, http://www. seguridadmobile.com/bluetooth/especificacion-bluetooth/ arquitectura-de-protocolo/index.html. Existe una gran diversidad de Protocolos de Descubrimiento de Servicios, aquí sólo tocamos los más representativos, dichos protocolos brindan un gran servicio a las plataformas sobre las que cada uno se sustentan, permitiendo que sistemas clientes se comuniquen con los mismos para detectar los servicios que son brindados por los sistemas servidores que se encuentren ubicados en diferentes tipos de redes. Luego de comparar los diferentes protocolos de descubrimiento de servicios vistos se puede determinar que todos trabajan de forma muy parecida. Todos los protocolos utilizan una arquitectura similar, con algunas diferencias fundamentales. Sistemas como Jini y Salutation son independientes de la plataforma de red sobre la que se trabaje, en cambio protocolos como UPnP y SLP funcionan sobre arquitectura TCP/IP. Todos los protocolos revisados son independientes del lenguaje de pro56