Políticas de QoS en una Plataforma de Trabajo Colaborativo sobre

Anuncio
Políticas de QoS en una Plataforma de Trabajo
Colaborativo sobre Middleware DDS
Jose M. Lopez-Vega1, Javier Povedano-Molina1, Javier Sanchez-Monedero2, Juan M.
Lopez-Soler1
1
Departamento de Teoría de la Señal, Telemática y Comunicaciones, Universidad de Granada.
2
Departamento de Informática y Análisis Numérico. Universidad de Córdoba.
1
{jmlvega, jpovedano, juanma} @ugr.es
2
{i02samoj} @uco.es
Abstract. El proyecto desarrollado propone una nueva aproximación para el
diseño de una herramienta de trabajo colaborativo. En concreto, el sistema
implementado utiliza el paradigma publicación/subscripción, para proporcionar
un servicio de videoconferencia entre distintos puntos finales remotos.
Por tanto, el sistema propuesto es una prueba concepto sobre la viabilidad de
implementar aplicaciones de muchos a muchos con contenidos de audio/vídeo
sobre middleware DDS (Data Distribution Service).
DDS es un estándar de la OMG (Object Management Group) cuyo objetivo es
abstraer al programador de las tareas necesarias para la transmisión fiable de
datos en entornos distribuidos con requisitos de tiempo-real. Este trabajo pone
de manifiesto la utilidad de incorporar las así llamadas políticas de QoS
(Quality of Service), que no son sino la definición de modelos de
comportamiento para las entidades que generan o consumen información.
Keywords: middleware, DDS, calidad de servicio, tiempo real,
videoconferencia, multimedia, audio, video
1
Introducción
La progresiva globalización y deslocalización de las empresas y la dispersión de sus
distintas sedes generan nuevas necesidades para la comunicación de los diferentes
equipos que las conforman. Del mismo modo, las demandas de educación a distancia,
justifican el uso de diferentes plataformas para el trabajo colaborativo.
Algunos ejemplos de estas plataformas los encontramos en aplicaciones como Click
to Meet [1], Isabel [2], Connecta 2000 [3] o Microsoft Office Communication Server
[4]. Dichos sistemas mejoran la productividad en entornos empresariales y
académicos mediante servicios de presencia y comunicación multimedia en tiempo
real.
En este trabajo se presenta el desarrollo de un sistema de trabajo colaborativo. En
concreto, el sistema permite la videoconferencia entre distintos clientes remotos, que
se conectan a una determinada sala virtual donde pueden interactuar con el resto de
participantes (mediante audio, vídeo y mensajes de texto).
Además, el sistema propuesto pretende demostrar la viabilidad de implementar
aplicaciones de streaming de audio/vídeo sobre middleware DDS (Data Distribution
Service) [5]. DDS es un estándar de la OMG (Object Management Group) [6]
diseñado con el fin de abstraer al programador de las tareas necesarias para el envío y
recepción de datos distribuidos. La utilización de middleware DDS permite acortar el
tiempo de desarrollo de aplicaciones de tiempo real, configurando el comportamiento
del mismo mediante un conjunto de políticas de QoS (Quality of Service). Esto es
posible debido a que el middleware facilita una capa adicional que desacopla a la
aplicación de las dificultades inherentes en la comunicación.
Para el intercambio de información, DDS aplica un modelo data-oriented [7] [8].
Dicho modelo se caracteriza por la existencia de una serie de fuentes y consumidores
de información (publicadores y subscriptores respectivamente) que tienen acceso a un
conjunto de datos de interés, conocido como data-space (espacio de datos). En este
caso no importa tanto la procedencia o destino de la información, sino disponer en
cada momento de versiones actualizadas de los datos. Un claro ejemplo de este
modelo lo encontramos en la monitorización de sensores: lo relevante no es la
localización o el número de sensores, sino que el monitor cuente con los valores más
recientes de los parámetros medidos y, por supuesto, que dicha información sea
fiable.
Como se ha comentado con anterioridad, existen en el mercado numerosas soluciones
comerciales y de código abierto que cubren las necesidades de la mayoría de usuarios
existentes (especialmente en el ámbito académico y corporativo). La meta principal
de este trabajo no es, por tanto, aportar nuevas funcionalidades a las disponibles en
otras plataformas existentes, sino desarrollar y evaluar la implantación de este tipo de
sistemas sobre middleware DDS identificando las ventajas que este enfoque
proporciona en términos de modularidad, extensibilidad, escalabilidad, robustez frente
a fallos y en tiempo de desarrollo de aplicaciones, haciendo hincapié en la
incorporación de las políticas adecuadas de QoS que el middleware puede facilitar.
2
Antecedentes y estado del arte en middleware DDS
Una característica importante de las grandes redes de ordenadores actuales, como
Internet, es su heterogeneidad. La heterogeneidad y la estandarización nos permiten,
idealmente, utilizar la mejor combinación de hardware y software, aumentando el
rendimiento de las aplicaciones sin afectar a su interoperabilidad, consiguiendo un
sistema coherente, eficiente y altamente operativo. Pero la práctica demuestra que
cumplir los requerimientos de seguridad, eficiencia, flexibilidad y extensibilidad, en
sistemas distribuidos heterogéneos es altamente complejo. Estas exigencias motivaron
la especificación y desarrollo de CORBA (Common Object Request Broker
Architecture) [9].
Sin embargo, cuando se trata de sistemas distribuidos con requisitos de tiempo real,
CORBA no constituía una solución del todo adecuada, al no estar preparado para
responder a las necesidades de mínimo retardo y determinismo que dichos sistemas
requieren.
Como respuesta a esta necesidad, en Junio de 2004 la OMG finaliza la especificación
de DDS [5] para sistemas de tiempo real. En dicha especificación, se unificaron las
mejores prácticas presentes en los middleware de distribución de datos en tiempo real
desarrollados de forma independiente por las empresas RTI [10] y Thales [11]. Este
hecho fue definido por aquel entonces como “el avance más significativo para
sistemas de tiempo real llevado a cabo por la OMG en los últimos años” [12].
Aunque inicialmente sólo existían las versiones de RTI y Thales, actualmente son
numerosas las implementaciones del estándar DDS de la OMG, algunas de ellas de
código abierto. Entre ellas, destaca RTI Data Distribution Service [13], una
implementación comercial de la capa DCPS (Data-Centric Publish-Subscribe) [5] del
estándar DDS que soporta múltiples arquitecturas (incluyendo entre ellas varios
sistemas empotrados) y múltiples lenguajes (C, C++, C#, Java…). El trabajo
presentado ha sido desarrollado sobre esta implementación del estándar DDS.
3
Arquitectura propuesta
En este apartado se describirá la arquitectura de la solución propuesta, con el fin de
dar al lector una visión general del sistema desarrollado.
El diseño realizado e implementado consiste en un sistema de videoconferencia
aplicando el modelo de publicación-subscripción. La plataforma propuesta permite el
intercambio de vídeo, audio, mensajes de texto y de señalización entre sistemas
remotos mediante middleware DDS. Se ha optado, por tanto, por un modelo
distribuido para el intercambio de información entre los distintos miembros de las
salas de conferencia. Además, para el envío de vídeo se ha implementado módulo que
sirve de puente entre cámaras IP (que trabajan con HTTP) y middleware DDS.
En la figura 1 se presenta la arquitectura propuesta. Como se puede observar, el
sistema desarrollado permite la comunicación distribuida entre sistemas heterogéneos
mediante de middleware DDS. Al aplicar un modelo de publicación-subscripción, los
recursos dejan de estar centralizados en un servidor, para pasar a formar parte del
denominado data-space. Las ventajas de esta aproximación radican en una mayor
escalabilidad y robustez, al no requerir la existencia de nodos centrales para establecer
la comunicación entre los distintos sistemas remotos.
3.1
Tópicos utilizados
Para el intercambio de datos entre las fuentes y los consumidores de información,
DDS define el concepto de tópico. Un tópico es un canal lógico para el intercambio
de información entre los publicadores y subscriptores de un determinado espacio de
datos DDS [5] [14]. Aunque un tópico sólo puede tener un tipo de dato, varios tópicos
pueden corresponder a un mismo tipo.
El sistema de trabajo colaborativo propuesto utiliza tres tipos de tópicos diferentes:



Señalización: El tópico de señalización permite notificar a los
publicadores de problemas en la recepción de los datos. Asimismo, este
tópico se utiliza para la moderación del canal de audio por parte del
administrador de la sala virtual de conferencia.
Vídeo/Audio: Cada sala de conferencia tiene asociado un tópico diferente
para cada nivel de calidad de vídeo y audio. De este modo, los clientes
pueden subscribirse a un nivel de calidad dependiendo de las condiciones
de la red.
BuiltinTopic: Se utilizan para el descubrimiento de participantes en
una sala, así como para gestionar el control de acceso a la misma.
Fig. 1. Arquitectura propuesta
3.2
Descubrimiento de las salas
Antes de poder interactuar con otros usuarios, es necesario acceder a una sala de
conferencia. El sistema desarrollado implementa dos tipos de salas:
 Públicas: Como su nombre indica, estas salas están abiertas y no cuentan con
ningún tipo de control de acceso. Por tanto, podrán ser descubiertas y accedidas
por cualquier usuario.
 Privadas: En su creación se define una lista de usuarios permitidos (diferenciados
por un número de identificación único). Por tanto, sólo los usuarios que se
encuentren en la lista asociada a cada sala podrán descubrirla y acceder a la misma.
En cuanto a la aproximación seguida, se ha mantenido el modelo distribuido en el
descubrimiento de salas. De este modo, al iniciar la búsqueda de salas el sistema
localizará dinámicamente las salas existentes mediante los mecanismos de
descubrimiento facilitados por DDS.
3.3
Moderación del canal de audio. Figura del moderador.
En los sistemas de multiconferencia, varios usuarios pueden intercambiar audio.
Este hecho puede llevar a situaciones conflictivas, al no existir contacto visual directo
entre los usuarios, reduciendo la calidad de la comunicación. Por tanto, al desarrollar
una plataforma de multiconferencia es necesario decidir cómo se va a gestionar el
canal de voz. Entre las alternativas posibles destacamos las siguientes:
 No hacer nada: En este caso, se espera que los usuarios se turnen para evitar
interrupciones. Quizá sea la alternativa menos adecuada, por la carencia de
contacto visual directo.
 Arbitrar un sistema de turnos automático: En este caso, es el propio sistema el que
decide qué usuario tiene derecho a usar el canal de audio cada vez. Aunque mejor
que el anterior, esta aproximación no es excesivamente flexible.
 Sala moderada: Esta aproximación es la que se ha implementado en el sistema que
nos ocupa. En las salas moderadas existe un usuario especial (el moderador) que
puede ceder o retirar la palabra al resto de usuarios. Así, cuando un usuario desea
hablar, solicita el canal de audio al moderador, el cual aceptará o denegará la
solicitud.
4
Políticas de calidad de servicio adecuadas para audio/vídeo
DDS extiende el modelo publicación-subscripción para responder a las necesidades
de aplicaciones de tiempo real con datos críticos. Para ello, proporciona una serie
de mecanismos estandarizados conocidos como políticas de calidad de servicio,
que permiten configurar cómo se produce la comunicación, para así limitar los
recursos utilizados por el middleware con objeto de detectar incompatibilidades en
el sistema y configurar rutinas de gestión de errores.
Además, las políticas de QoS aligeran a la aplicación librándola de ciertas tareas
que pueden ir desde el filtrado de información hasta el almacenamiento temporal
de datos, reduciendo por tanto su complejidad.
Algunas de las políticas de QoS establecen un contrato entre las publicaciones y
subscripciones. En estos casos, únicamente se establecerá la comunicación si las
políticas de QoS configuradas en el DataWriter1 y DataReader2 son
compatibles [5]. La evaluación de la compatibilidad de políticas de QoS se realiza
de forma transparente a la aplicación, mediante a un mecanismo de DCPS
denominado RxO (Request versus Offered). Cuando un DataReader se une a un
data-space, especifica un determinado valor requerido para las políticas QoS que
utilizan RxO. Por otro lado, cuando un DataWriter se une a un data-space
indica un determinado valor ofrecido para las políticas QoS con RxO. Finalmente,
DDS emparejará las entidades que son compatibles entre sí en términos de RxO,
permitiendo que se descubran entre sí.
En el caso de que un DataWriter no pueda satisfacer las políticas de QoS
solicitadas por un DataReader, no se produce el descubrimiento entre ellos y
ambos son notificados de la incidencia.
A continuación se estudiarán las principales políticas de calidad de servicio
incorporadas a nuestra aplicación.
4.1
DEADLINE
DEADLINE fija una separación máxima entre dos actualizaciones del tópico,
separación reflejada mediante el parámetro period. Cuando expira el tiempo
fijado por la política DEADLINE, DDS informa a la aplicación, lo que permite
detectar problemas en el intercambio de datos entre DataWriters y el
DataReaders.
Aunque esta política puede ser cambiada en cualquier momento, es necesario que
los periodos fijados a ambos lados de la comunicación sean compatibles, es decir,
que el periodo configurado en el DataWriter sea menor o igual que el fijado en
el DataReader. Si los periodos son incompatibles, DDS el middleware notificará
de este hecho para que la aplicación active los mecanismos oportunos y no se
establecerá la comunicación.
Esta política es de gran utilidad para el control de sesiones interactivas de audio y
vídeo, al constituir un indicador del estado de congestión de la red o de los
publicadores/subscriptores que envían/procesan dichos flujos multimedia.
De este modo, con una adecuada configuración del valor de máximo retardo entre
dos actualizaciones de una instancia (en el sistema propuesto cada instancia
corresponde a un flujo multimedia) se pueden detectar problemas en la transmisión
y actuar en consecuencia.
4.2
TIME_BASED_FILTER
TIME_BASED_FILTER limita el número de muestras que se entregan a la
aplicación por segundo, estableciendo una separación temporal mínima entre ellas.
Cuando se detectan problemas en el DataWriter de vídeo, el sistema reduce la
tasa de transmisión mediante una reducción en la calidad del stream de vídeo. Si
1
2
Entidad DDS que escribe datos en el data-space.
Entidad DDS que lee datos del data-space.
los problemas se producen en el DataReader de vídeo, se notifica a los
DataWriters mediante un tópico de señalización, con objeto de que reduzcan la
calidad del vídeo emitido de forma remota.
4.3
LIVELINESS
La política LIVELINESS permite a DDS comprobar si un DataWriter sigue
activo y, en caso contrario, notificar a los correspondientes DataReaders.
LIVELINESS ha sido utilizada en el sistema aquí presentado para mantener el
servicio de presencia. Es decir, informa a los clientes de la entrada y salida de
usuarios a una determinada sala de conferencias.
4.4
LIFESPAN
El propósito de esta política es evitar la entrega de muestras con un retardo
asociado excesivo. De este modo, cada muestra de datos escrita por un
DataWriter tiene asociado un tiempo de expiración, a partir del cual no debe ser
entregada a ninguna aplicación. Una vez que la muestra expira, los datos serán
eliminados de las caché de los DataReaders, así como de las cachés de los
servicios de persistencia de datos de DDS.
Esta política permite desestimar aquellos paquetes que tienen un retardo excesivo,
por lo que es especialmente útil aplicaciones de tipo interactivo, donde los
paquetes que tienen un retardo superior a cierto límite dejan de ser válidos y han de
ser eliminados de los búferes.
OWNERSHIP y OWNERSHIP_STRENGTH
4.5
OWNERSHIP establece si cualquier DataWriter puede actualizar los datos de
interés o, por el contrario, sólo podrá llevarlo a cabo un DataWriter concreto.
OWNERSHIP_STRENGTH permite asignar una puntuación a un DataWriter, lo
que determinará si los datos que éste escribe serán entregados.
Estas políticas han sido utilizadas para la gestión del canal de audio.
Concretamente, el usuario con permisos de moderador puede indicar mediante el
tópico de señalización qué usuario tiene la palabra. Según esta información, cada
cliente actualiza el valor de las políticas OWNERSHIP y OWNERSHIP_STRENGTH
para los DataWriters, con lo que únicamente se entregarán los paquetes de
audio que provengan del cliente con el control del canal de audio.
4.6
Otras políticas de interés para la transmisión de audio y vídeo

PARTITION: Esta política de calidad de servicio permite la división lógica
de un dominio. Esta división puede ser utilizada para la implementación de
un multipublicador de vídeo con distintos niveles de calidad.


5
PUBLISH_MODE: Esta política de calidad de servicio está incluida en la
implementación del estándar DDS correspondiente a RTI y permite la
implementación de mecanismos de control de flujo de forma sencilla.
TOPIC_DATA/USER_DATA: Estas políticas de calidad de servicio
permiten la entrega de información adicional durante el descubrimiento de
entidades DDS. Concretamente, han sido utilizadas para comunicar la
identidad del usuario durante el descubrimiento de entidades DDS. Dicha
información ha permitido implementar mecanismos de control de admisión a
las salas de conferencia privadas.
Diseño
En la figura 2 se muestra el diagrama de paquetes correspondiente al sistema
desarrollado.
Fig. 2. Diagrama de paquetes del sistema
Como se aprecia en la figura, los paquetes pueden ser clasificados en cuatro
bloques principales:
 Control del sistema: Engloba los paquetes encargados de las tareas de
control y comunicación entre los distintos módulos que componen el
sistema.
 Comunicación DDS: Engloba los paquetes encargados de la
comunicación DDS, tanto para el intercambio de información de audio,
como vídeo, mensajería y señalización.


6
Puente HTTP/DDS: El sistema implementado cuenta con un puente
HTTP/DDS que permite la comunicación del mismo con una cámara IP
para la obtención de un stream de vídeo.
JSPEEX [15]: Es un módulo que permite la codificación y decodificación
de audio con el codec de voz SPEEX [16].
Implementación
El presente trabajo no se ha limitado al diseño del sistema, sino que se ha llevado a
cabo la implementación del mismo. A continuación se describen aquellos detalles de
la implementación que se consideran especialmente relevantes.
 Descripción IDL de los tipos de datos intercambiados: RTI DDS dispone de la
herramienta rtiddsgen para la generación automatizada de código a partir de un
archivo IDL (Interface Description Language) [17]. IDL es un estándar de la OMG
utilizado en sistemas de computación distribuida para la descripción de los
componentes de las interfaces. IDL permite especificar los datos que se
intercambiarán en un lenguaje neutral, pudiendo generar componentes en diversos
lenguajes, sin que se pierda la interoperabilidad de los mismos.
 Comunicación con cámara IP: El sistema obtiene la señal de vídeo desde una
cámara IP. Concretamente, se ha utilizado una cámara AXIS 207W. Las cámaras
de este fabricante disponen de una API común, denominada VAPIX® [18], que
permite interactuar con las mismas mediante HTTP. De este modo, se pueden
configurar de forma remota lo parámetros del stream de vídeo/audio capturado o
incluso cambiar la posición del eje de la cámara. Con el fin de hacer más flexible la
configuración de la cámara, se ha diseñado un formato XML de configuración,
especificado mediante XML Schema [19].
 Integración de codec de audio SPEEX: Durante la implementación del sistema, se
evaluaron distintas posibilidades para la codificación y decodificación de la señal
de audio transmitida por el sistema. Finalmente, se escogió el codec de voz
SPEEX, que permite alcanzar una calidad elevada para un ancho de banda
reducido. Con el fin de integrar SPEEX se ha utilizado la librería JSPEEX, una
librería escrita en Java (más concretamente, basada en JavaSound [20]) que
implementa la versión 1.0.3 de SPEEX. Durante la implementación fue necesario
realizar algunas modificaciones sobre dicha librería para adecuarla a los
requerimientos del sistema.
7
Conclusiones y trabajo futuro
7.1
Principales contribuciones
Cabe destacar que el sistema propuesto ha sido realizado en el contexto de la
relación que tiene el Departamento de Teoría de la Señal, Telemática y
Comunicaciones de la Universidad de Granada con Real Time Innovations (líder
mundial en la implementación de DDS) [10].
Los resultados del desarrollo de este proyecto fueron parcialmente presentados en
Julio de 2008 en el IX Workshop on Distributed Object Computing for Real-time
and Embedded Systems celebrado en Washington (DC, USA) [21].
El trabajo ha conseguido cumplir los objetivos propuestos con las siguientes
conclusiones:
1. La utilización de middleware DDS efectivamente acorta los tiempos de desarrollo
de aplicaciones que requieren la distribución de datos en tiempo real. Además,
DDS facilita la implementación de servicios como el descubrimiento dinámico de
salas, la moderación del canal de audio o notificación de presencia gracias a la
provisión de un conjunto extenso de políticas de calidad de servicio.
2. La aplicación del modelo de publicación-subscripción para un sistema de
videoconferencia no es sólo viable, sino que además es adecuada. Esta
aproximación, al no requerir de un servidor centralizado para tareas como el
descubrimiento de salas o intercambio de datos, es altamente escalable.
3. Dada la arquitectura modular del sistema desarrollado, el código generado es
altamente reutilizable, por lo que se pueden integrar con un mínimo esfuerzo los
servicios de mensajería, intercambio de audio o vídeo implementados en nuevas
aplicaciones que se desarrollen.
4. La implementación de un puente DDS/HTTP para el acceso a cámaras IP
proporciona una interfaz reutilizable en aplicaciones fuera del ámbito de la
videoconferencia. Por ejemplo, puede servir para implementar sistemas de
videovigilancia que deban gestionar numerosas cámaras distribuidas. Además, la
descripción de los parámetros de las cámaras mediante XML facilita la
reusabilidad del puente.
7.2
Trabajo futuro
Aunque el sistema desarrollado es completamente funcional, podría ser mejorado
en los siguientes aspectos:
 Realización de test analíticos de escalabilidad: Aunque la plataforma
implementada ha sido testeada y cumple la funcionalidad especificada, sería
deseable comprobar hasta qué punto es escalable cuando es utilizada por un
número elevado de usuarios y/o de salas de conferencia. Mayor soporte de codecs
de audio: Actualmente el sistema soporta los codecs µLaw y SPEEX para audio.
Un mayor soporte de codecs lo dotaría de una mayor flexibilidad.
 Mejora del rendimiento alcanzado en audio: Dado que el sistema se ha
implementado sobre Javasound, cuenta con ciertas restricciones de retardo
inevitables. Para mejorar esta situación sería necesario utilizar JNI (Java Native
Interface), método que permite la ejecución de código escrito en un lenguaje
distinto de Java y con el que se podría hacer uso de librerías más eficientes. Esta
aproximación implica, sin embargo, la pérdida de la portabilidad del sistema (al
requerir de librerías específicas para cada plataforma).
 Establecer un método para la autenticación de los usuarios: Actualmente el sistema
ha sido diseñado bajo la premisa de que cada usuario utiliza una identificación
única. Antes de poder aplicar el producto en entornos reales sería necesario
habilitar mecanismos que permitan la obtención de dicho identificador tras un
proceso de autenticación del usuario con un servidor de
 Ampliar el soporte de fuentes de vídeo: El sistema ha sido diseñado para trabajar
con cámaras IP. No obstante, sería interesante ampliar la funcionalidad del mismo
con objeto de soportar cámaras USB, así como ampliar el soporte de codecs de
vídeo.
8
Referencias
[1] RADVISION: Click to meet platform; 2008. Available from: http://www.radvision.com/Products/Desktop/CTMPlatform/.
[2] DIT – UPM: Isabel Plaza - Home; 2008. Available from: http://isabel.dit.upm.es/.
[3] CONNECTA 2000: Connecta 2000 - Videoconferencia Peer-to-peer; 2008.
Available from: http://www.connecta2000.com/.
[4] Microsoft: Página principal de Office Communications server - Microsoft Office
Online;
2008.
Available
from:
http://office.microsoft.com/es-es/communicationsserver/default.aspx/.
[5] OMG: Data-Distribution Service for Real-Time Systems (DDS).v1.2. OMG;
2006. Available from: http://www.omg.org/cgi-bin/doc?formal/07-01-01.pdf.
[6] OMG: Object Management Group; 2009. Available from: http://www.omg.org/.
[7] RTI: Data-Oriented Architecture; 2008. Available from: http://www.rti.com/mk/data-oriented-architecture.html.
[8] Pardo-Castellote G., Farabaugh B., Warren R.: An Introduction to DDS and
Data-Centric Communications; 2005. Available from: http://www.omg.org/news/whitepapers/Intro_To_DDS.pdf.
[9] OMG: Common Object Request Broker Architecture (CORBA/IIOP).v3.1.
OMG; 2008. Available from: http://www.omg.org/spec/CORBA/3.1/.
[10] RTI: Real-Time Innovations (RTI) - World Leader in DDS - Real-time
application integration and low-latency messaging; 2009. Available from:
http://www.rti.com/.
[11] THALES: THALES; 2009. Available from: http://www.thalesgroup.com/Countries/Spain/Pagina_de_inicio/.
[12] Pardo-Castellote G.: OMG Data distribution service: Real-Time
publish/subscribe becomes a standar; 2005. Available from: http://www.rti.com/docs/reprint_rti.pdf.
[13] RTI: Real-Time Innovations Inc. RTI Data Distribution Service. Users’ Manual
(version 4.4); 2009.
[14] Pardo-Castellote G.: OMG Data-Distribution Service: architectural overview;
2003. Available from: http://dx.doi.org/10.1109/ICDCSW.2003.1203555.
[15] JSPEEX Team: JSpeex - Java Implementation of SPEEX; 2005. Available from:
http://sourceforge.net/projects/jspeex/files/.
[16] Xiph OSC: Speex: A free codec for free speech; 2009. Available from: http://www.speex.org/.
[17] OMG: OMG IDL Syntax and Semantics. OMG; 2002. Available from: http://www.omg.org/docs/formal/02-06-07.pdf.
[18] AXIS: Axis Communications - Network Camera Developer pages - API
VAPIX; 2008. Available from: http://www.axis.com/techsup/cam_servers/dev/cam_http_api_2.php.
[19] W3C: XML Schema Part 0: Primer Second Edition. W3C; 2004. Available
from: http://www.w3.org/TR/2004/REC-xmlschema-0-20041028/.
[20] SUN: Java Sound API; 2004. Available from: http://java.sun.com/products/javamedia/sound/.
[21] Lopez-Vega JM, Sanchez-Monedero J, Povedano-Molina J, Lopez-Soler JM.:
QoS Policies for Audio/Video Distribution Over DDS Middleware. In:
Workshop on Distributed Object Computing for Real-time and Embedded
Systems; 2008. Available from: http://www.omg.org/news/meetings/workshops/rt_embedded_2008.htm.
Descargar