Protocolos de Descubrimiento de Servicio Service Discovery Protocol

Anuncio
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*
[email protected]
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
Descargar