Analisis de Big Blue Button
Analisis de Big Blue Button
Analisis de Big Blue Button
Mster Universitario en
Ingeniera de Redes y Servicios Telemticos
Autor
lvaro Alonso Gonzlez
Director
Joaqun Salvacha Rodrguez
Departamento de Ingeniera de Sistemas Telemticos
2013
Resumen
Los sistemas de videoconferencia han sufrido un gran impulso en los ltimos aos.
El desarrollo de las comunicaciones de datos inalmbricas as como la abundancia de
dispositivos mviles de cada vez mayor potencia y capacidades multimedia ha
propiciado que la popularidad de las comunicaciones en tiempo real a travs de
Internet aumente considerablemente.
Entre estos avances destaca, dentro del marco del estndar HTML5, la irrupcin del
estndar WebRTC, que permite realizar comunicaciones de este tipo directamente
entre navegadores web. Entre sus posibles usos destaca la comunicacin de voz y
vdeo como streaming y videoconferencias y los juegos online.
En este Trabajo Fin de Mster se describe el proyecto Licode, una plataforma para
proveer comunicaciones en tiempo real en la web. Licode est diseado para poder
instalarse en cualquier infraestructura y est puramente orientado al Cloud. De esta
forma podr ofrecerse un servicio escalable y que ahorrar costes gracias a un uso
eficiente de los recursos.
La descripcin del sistema incluye el diseo de su arquitectura y la descripcin de la
funcionalidad de cada uno de los mdulos necesarios. Adems se realiza un anlisis
exhaustivo de la conveniencia de desplegar el sistema en infraestructuras Cloud. Este
anlisis describe las principales ventajas que el Cloud provee al sistema as como los
retos ms importantes a los que hay que enfrentarse para conseguir un despliegue
eficiente y efectivo que haga un uso adecuado de los recursos disponibles en cada caso
y acorde a la demanda de los usuarios.
Abstract
Videoconference systems have experimented an important impulse in the last years.
The improvement of the wireless data communication and the increase of the mobile
devices of much more performance and multimedia capabilities have stimulated the
popularity of the real time communications in Internet.
One of these progresses is, inside de HTML5 standard frame, the irruption of the
WebRTC standard that allows us to make real time communications between web
browsers. Its possible uses are voice and video communications, such as streaming or
videonferencing and online video games.
In this document is described the Licode project, a platform to provide real time
communications in the web. Licode is designed to be installed in any computer or
infrastructure and it is totally oriented to the Cloud. This way it offer a scalable service
that saves costs and makes an efficient use of the available resources in the systems.
The project description includes the design of its architecture and the description of
the functionality of each module. It is also made an exhaustive analysis of the
convenience of deploy the system in Cloud infrastructures. This analysis describes the
main advantages that Cloud provides to the system. Also the more important
challenges that must be faced in order to make an efficient and effective deployment by
making an appropriate use of the available resources and accord to the user demand in
the service.
iii
ndice general
Resumen................................................................................................................................... i
Abstract .................................................................................................................................. iii
Siglas ........................................................................................................................................ x
Agradecimientos .................................................................................................................. xii
1
Introduccin ................................................................................................................... 13
1.1
Objetivos .................................................................................................................. 14
1.2
Estructura del documento..................................................................................... 14
2
Estado del arte ............................................................................................................... 16
2.1
Sistemas de videoconferencia en la Web ............................................................ 16
2.1.1
Adobe Flash Player ......................................................................................... 16
2.1.2
VaaS ................................................................................................................... 16
2.1.3
Google Hangouts ............................................................................................ 17
2.1.4
Big Blue Button ................................................................................................ 17
2.1.5
OpenTok ........................................................................................................... 18
2.2
WebRTC................................................................................................................... 18
2.3
Cloud Computing .................................................................................................. 19
3
Arquitectura ................................................................................................................... 21
3.1
Nuve ......................................................................................................................... 23
3.1.1
MAuth ............................................................................................................... 24
3.1.2
API de cliente ................................................................................................... 25
3.1.3
Servidor ............................................................................................................ 29
3.1.4
La Base de Datos ............................................................................................. 33
3.2
Erizo ......................................................................................................................... 34
3.2.1
Wrapper Node ................................................................................................. 35
3.3
Erizo Controller ...................................................................................................... 37
3.3.1
API de Cliente .................................................................................................. 37
v
vi
ndice
de
figuras
Figura 1. Arquitectura del sistema .................................................................................... 21
Figura 2. Topologas de red ............................................................................................... 35
Figura 3. Ejemplo de intercambio de eventos ................................................................. 44
Figura 4. Varias MCUs ........................................................................................................ 54
Figura 5. Distribucin geogrfica de MCUs .................................................................... 55
Figura 6. Uso de CPU en Streaming ................................................................................. 56
Figura 7. Uso de ancho de banda en Streaming .............................................................. 57
Figura 8. Uso de CPU en Videoconferencia..................................................................... 58
Figura 9. Uso de ancho de banda en Videoconferencia ................................................. 58
Figura 10. Proxy ................................................................................................................... 61
vii
ndice
de
tablas
Tabla 1. Interfaz Nuve API. Inicializacin ....................................................................... 26
Tabla 2. Interfaz Nuve API. Salas ...................................................................................... 27
Tabla 3. Interfaz Nuve API. Usuarios ............................................................................... 27
Tabla 4. Interfaz Nuve API. Servicios ............................................................................... 28
Tabla 5. Interfaz Nuve API. Tokens .................................................................................. 29
Tabla 6. API REST Nuve ..................................................................................................... 31
Tabla 7. Interfaz Erizo Controller API. Stream ............................................................... 39
Tabla 8. Interfaz Erizo Controller API. Room ................................................................. 41
Tabla 9. Interfaz Erizo Controller API. Event .................................................................. 43
Tabla 10. Configuracin Licode ......................................................................................... 50
ix
Siglas
API
DOM
DTLS
GING
HTML
HTTP
HMAC
IaaS
Infraestructure as a Service
ICE
IETF
IP
Internet Protocol
JSON
MCU
NAT
NoSQL
PaaS
Platform as a Service
REST
RIA
RPC
RTCP
RTMP
RTP
RTT
SaaS
Service as a Service
x
SDP
SHA1
SRTP
URL
WebRCT
W3C
xi
Agradecimientos
El proyecto Licode ha sido diseado y desarrollado junto a mis compaeros Javier
Cervio y Pedro Rodrguez. Se ha realizado en el marco de desarrollo de proyectos de
investigacin del Grupo de Intenet de Nueva Generacin (GING) bajo la direccin del
Juan Quemada y Joaqun Salvacha.
xii
1 Introduccin
En el Grupo de Internet de Nueva Generacin de la Universidad Politcnica de
Madrid, se ha trabajado en sistemas y aplicaciones de videoconferencia entre mltiples
usuarios desde hace ms de 20 aos.
En un principio, estos programas de videoconferencia eran complejos programas
difciles de instalar y gestionar, especialmente para usuarios sin perfil tcnico. Esto
supona una barrera de entrada que se sumaba a la disponibilidad de ancho de banda y
la potencia de los terminales, en aquel momento, casi exclusivamente ordenadores de
sobremesa.
La videoconferencia ha sufrido un gran impulso en los ltimos aos. El desarrollo
de las comunicaciones de datos inalmbricas as como la abundancia de dispositivos
mviles de cada vez mayor potencia y capacidades multimedia ha propiciado que la
popularidad de las comunicaciones en tiempo real a travs de internet aumente
considerablemente.
Entre estos avances destaca, dentro del marco del estndar HTML5, la irrupcin de
WebRTC. WebRTC es un estndar que est siendo definido en colaboracin entre el
W3C (World Wide Web Consortium) y el IETF (Internet Engineering Task Force) para
permitir la comunicacin en tiempo real directamente entre navegadores. Entre sus
posibles usos destaca la comunicacin de voz y vdeo y los juegos. WebRTC es una
tecnologa inherentemente peer to peer donde nicamente se requiere un servidor Web
para establecer la comunicacin inicialmente mediante el intercambio de los mensajes
de sealizacin.
No obstante, para casos avanzados de videoconferencia tales como: conversaciones
con muchos participantes, clases distribuidas o eventos que necesiten grabacin, es
necesaria la existencia de un nodo central que reciba toda la comunicacin procedente
de los usuarios, la trate de la manera adecuada y la reenve si es necesario. Este
componente central, adems de ser un desarrollo nuevo, requiere que el sistema tenga
cierta inteligencia, sobre todo a la hora de reaccionar frente a cambios dinmicos en la
demanda.
13
1.1 Objetivos
El objetivo planteado en este Trabajo Fin de Mster es el de disear la arquitectura y
funcionalidad de Licode. Licode, diseado e implementado en el marco de desarrollo
de proyectos del Grupo de Investigacin, es una plataforma de comunicaciones en
tiempo real en la web. Estas comunicaciones incluyen servicios de streaming,
videoconferencia entre muchos usuarios y transmisin de datos en tiempo real. Estn
enteramente basadas en el nuevo estndar de la web HTML5 y WebRTC (Web RealTime Communications). Adems gracias a Licode podrn realizarse funcionalidades
avanzadas como grabacin de las sesiones o transcodificacin para la adaptacin a
terminales mviles y tablets.
De esta forma cualquier desarrollador web que quiera incluir comunicaciones de
este tipo en sus servicios y aplicaciones web podr hacerlo de forma rpida y sencilla
utilizando las APIs que Licode ofrece. Pero adems podr controlar totalmente todos
los aspectos relacionados con el servicio ya que tiene la posibilidad de desplegar el
servicio en sus propias infraestructuras.
Por ltimo Licode estar orientado a su despliegue en infraestructuras Cloud de
manera que se pueda aprovechar las grandes ventajas que ofrecen este tipo de
despliegues. Estas ventajas estn relacionadas con la escalabilidad del sistema frente a
cambios dinmicos en la demanda por parte de los usuarios y frente a los distintos
tipos de escenarios que pueden ser necesarios para las diferentes aplicaciones
realizadas con Licode.
Para su diseo y desarrollo deber estudiarse las caractersticas de cada mdulo y
establecer las tecnologas que mejor permiten su implementacin.
14
2. Estado del arte: en este captulo se realiza una descripcin del estado actual de
algunas tecnologas, estndares y productos de relevancia o estrechamente
relacionados con el tema que se trata en este Trabajo Fin de Mster.
3. Arquitectura: es el captulo central de este documento. En l se describe a
arquitectura general del sistema y se realiza una descripcin exhaustiva de cada
uno de sus mdulos explicando su diseo, funcionalidad y las relaciones con el
resto.
4. Despliegue en el Cloud: en este captulo se hace una descripcin de la
conveniencia de desplegar un sistema como Licode en una infraestructura
Cloud. Adems se analizan los retos que este despliegue plantea y que se
abordarn como trabajos futuros.
5. Resultados: en este captulo se comentan los resultados que se han obtenido o
piensan obtenerse a partir del desarrollo de Licode. Esto incluye los proyectos
del departamento en que se ha utilizado, las lneas de investigacin surgidas y la
comunidad de software libre creada a su alrededor.
6. Conclusiones: ltimo captulo del documento en el que se explican las
conclusiones del trabajo as como los trabajos futuros a realizar a partir de este
momento.
15
2.1.1
orientada
objetos,
comparable
en
funciones
uso
al
lenguaje JavaScript.
Originalmente creado para mostrar animaciones vectoriales en 2 dimensiones, ha
pasado a utilizarsepara crear aplicaciones Web que incluyen flujo de audio y video e
interactividad. La utilizacin de grficos vectoriales le permite disminuir el ancho de
banda necesario para la transmisin y, por ende, el tiempo de carga de la aplicacin.
Actualmente Flash Player est disponible para las versiones ms recientes de los
navegadores ms populares (Internet Explorer,Mozilla Firefox, Safari, Opera, etc.). El
navegador Google Chrome no lo necesita porque viene incluido dentro de l.
2.1.2
VaaS
16
servidor que de acceso a clientes tanto desde PC fijo/porttil, como desde terminales
mviles.
El servidor de multivideoconferencia es capaz de interconectar PCs con terminales
mviles, con acceso en ambos casos a travs de navegador Web y sin necesidad de
instalar aplicaciones. El sistema tiene las siguientes caractersticas:
1. El servidor se realiza adaptando Isabelv5, el gateway flash y otras tecnologas
asociadas para soportar los siguientes terminales en la videoconferencia:
A. PC con navegador con soporte de video Flash. B. Terminal mvil capaz de emitir
y recibir video en HTML5. C. Terminal mvil tipo iPad capaz de emitir y recibir video
en HTML5.
2. Capacidad para soportar varias multiconferencias simultneas e independientes.
El nmero mximo de participantes se determinar en funcin de las caractersticas del
servidor.
3. El sistema incluye una gestin mnima de multiconferencias.
4. El sistema incluye la gestin de estadsticas de cdecs, uso de CPU, uso de BW,
resolucin, etc.
2.1.3
Google Hangouts
2.1.4
BigBlueButton es una aplicacin web open source para videoconferencia y elearning o educacin a distancia. Es un programa distribuido bajo licencia GNU y que
ha surgido de la reutilizacin de proyectos varios como Asterisk, Flex SDK, Red5,
MySQL y otros.
17
2.1.5
OpenTok
OpenTok provee un API libre que permite a cualquier desarrollador web introducir
caractersticas de chat y vdeo en grupo a sus sitios web. La plataforma est basada en
la tecnologa Adobe Flash y permite a los usuarios realizar sesiones de
videoconferencia con chat y vdeo en vivo de hasta 20 participantes. Permite realizar
invitaciones para usar el servicio a travs de cuentas en las redes sociales Twitter,
Facebook o MySpace.
2.2 WebRTC
WebRTC [A. Bergkvist et al. 2012] [S. Loreto et al. 2012] es un estndar en desarrollo
por el Internet Engineering Task Force (IETF) y el World Wide Web Consortium (W3C)
que pretende definir un framework, protocolos e interfaces de programacin que
proveern comunicaciones interactivas y en tiempo real de audio, video y datos a las
aplicaciones en los navegadores web.
Como se explica en [C. Jennings et al. 2013], la arquitectura en las aplicaciones
WebRTC son peer-to-peer de tal forma que nicamente es necesario un servidor
externo a los navegadores de los clientes para establecer la comunicacin
intercambiando los mensajes de sealizacin al comienzo de la misma. Los APIs de los
que consta el protocolo son los siguientes:
-
18
19
Amazon AWS
RackSpace
CloudSigma
Windows Azure
GoGrid
Terremark vCloud
Joyent
20
3 Arquitectura
En esta seccin se explica la arquitectura general de este sistema, Licode. Los
diferentes mdulos que son necesarios para montar un servicio Licode, la funcin y
caractersticas de cada uno de ellos y sus relaciones.
En la Figura 1 puede observarse la arquitectura del sistema.
Nuve
Es el mdulo que se encarga de la gestin de los recursos que son necesarios en
una sesin multimedia como salas, usuarios, etc. Consta de una parte servidor
que se arrancar como un proceso Node y que recibir peticiones REST de la
parte cliente que se incorporar como parte de los servidores web de las
21
aplicaciones que utilicen Licode. Para la persistencia de los datos utiliza una
base de datos MongoDB.
-
Erizo
Es la MCU del sistema. Se encarga de redireccionar los flujos multimedia de
unos clientes a otros.
22
3.1 Nuve
Nuve es el mdulo que se encarga de gestionar todos los componentes que
intervienen en las sesiones multimedia de Licode. Estos componentes son:
-
Salas
Una sala de videoconferencia es un lugar abstracto donde los clientes publican
sus flujos multimedia o donde acuden a suscribirse a los que otros clientes han
publicado en esa sala. Lo que ocurre en una sala es privado y solo pueden
participar en una sala los clientes con permiso explcito para ello.
Usuarios
Un usuario es un cliente que se conecta a una sala y publica o se suscribe a los
flujos multimedia que otros usuarios han publicado.
Servicios
Un servicio es una aplicacin que utiliza Nuve para la gestin de los recursos
multimedia necesarios en su funcionamiento. Hay un tipo de servicio llamado
super servicio que tiene una serie de privilegios respecto al resto de servicios
como la capacidad de realizar acciones sobre los recursos de tipo servicio como
crearlos o borrarlos.
Tokens
Un token en una ficha proporcionada por nuve a un cliente para que ste pueda
acceder de manera autenticada a una sala de videoconferencia. Es de un solo uso
y adems nicamente vlido durante un periodo de tiempo determinado.
Las aplicaciones web que utilicen Licode utilizarn por lo tanto Nuve para la
gestin de estos recursos. Dispondrn de un servicio en el que podrn crear salas
multimedia a las que darn acceso a los usuarios mediante un token de sesin.
Para ello utilizarn en sus servidores web un API de cliente de Nuve que acceder a
los recursos mediante un API REST. Las peticiones http debern estar autenticadas
utilizando un protocolo diseado en este departamento especficamente para Nuve. Se
trata de MAuth. Adems para proveer de persistencia al sistema, Nuve utilizar una
base de datos.
A continuacin se explica con detalle cada uno de estos componentes, el protocolo
MAuth, el API de cliente de Nuve, el servidor REST, y la estructura de la base de datos.
Tambin la comunicacin del servidor Nuve con el componente Erizo Controller.
23
3.1.1
MAuth
mauth_cnonce: Un nmero entero positivo aleatorio que hay que asegurar que
cambie entre peticiones con un mismo timestamp. As se protege frente ataques
de replay.
Hasta aqu los parmetros obligatorios en cada peticin, los dos siguientes son
especiales ya que nicamente se utilizan en aquellos casos en los que se pretende
solicitar el acceso a una sala para un usuario.
-
La cadena con la que se obtiene la firma variar dependiendo de los parmetros que
se incluyen en la cabecera. As esta cadena ser:
(mauth_serviceid, mauth_timestamp, mauth_cnonce,
[mauth_username, mauth_role])
Por lo tanto cualquier peticin REST que se realice al servidor de Nuve deber ir
autenticado con los parmetros explicados. Como Licode provee a los servicios web un
API de cliente de Nuve la implementacin de este protocolo ya est incluida en el API
y el desarrollador que lo utilice nicamente deber preocuparse de configurar antes de
realizar cualquier peticin las credenciales del servicio que est utilizando como se
explica en el siguiente apartado.
3.1.2
API de cliente
En la fecha en que se escribe este documento, el API de Nuve est escrito en los
lenguajes de programacin Node.js, Python y Ruby. Por lo tanto puede utilizarse en
25
cualquier servidor web que utilice estos lenguajes en su lgica de servicio. Todos ellos
tienen la misma interfaz de atributos y mtodos, que se pasa a explicar a continuacin.
Inicializacin
Inicializacin
init (serviceId, serviceKey, nuve_host)
serviceKey: clave de acceso a Nuve para este servicio. Se utilizar junto con
el campo anterior para la autenticacin en las cabeceras del protocolo MAuth
segn se ha explicado anteriormente.
Salas
26
Propiedades
Funciones
Room._id
createRoom (name)
Room.name
getRooms ()
getRoom (roomId)
deleteRoom (roomId)
Usuarios
Funciones
User.name
getUsers (roomId)
User.role
getUsers: devuelve una lista de los usuarios que estn conectados a una sala
especificada mediante su identificador en la base de datos.
Servicios
Funciones
Service_id
createService (name)
Service.name
getServices ()
Service.key
getService (servideId)
Service.rooms
deleteService (serviceId)
28
Tokens
Propiedades
Funciones
createToken (roomId, name, role)
3.1.3
Servidor
Se trata del servidor REST que recoge las peticiones enviadas utilizando el API de
Nuve desde los servidores de las aplicaciones web que usan Licode. Su lgica est
escrita utilizando el lenguaje de programacin Node.js. Antes de explicar la interfaz
REST con la descripcin de las acciones posibles sobre los recursos de Nuve es
necesario hablar de un mdulo fundamental en la gestin de la escalabilidad en
Licode. Este mdulo se llama Cloud Handler debido a su futura relacin con el
despliegue en el Cloud que se explicar en otro captulo de este documento.
Cloud Handler
arrancar ms de una MCU o mdulo Erizo. Cuando un nuevo usuario se conecte a una
sesin y quiera publicar sus datos multimedia en una sala o suscribirse a otros
existentes en ella pedir a Nuve (a travs del servidor de la aplicacin) un token de
conexin. En ese momento Nuve necesitar saber la ubicacin fsica de la MCU que
est gestionando esa sala, es decir, la direccin IP de la mquina donde la MCU est
corriendo. Para ello se utiliza el mdulo Cloud Handler y la IP servir para que el
cliente sepa dnde se encuentra la sala, es decir, con qu mquina debe establecer una
conexin de websockets como se explicar en la seccin dedicada a Erizo.
As Cloud Handler debe llevar un control de los Erizos (que estarn gestionados por
un Erizo Controller cada uno) disponibles y de las salas que gestiona cada una de ellos.
Para ello cuando se arranque un nuevo Erizo en el sistema ste se lo comunicar a
Cloud Handler a travs de una llamada a procedimiento remoto.
Adems cada Erizo Controller enviar a Cloud Handler un mensaje peridico de
Keep Alive para confirmar que ese Erizo sigue corriendo y disponible para gestionar
salas de videoconferencia.
Por ltimo Cloud Handler dispone de una cola ordenada con los Erizos arrancados
en el sistema segn el nmero de salas que gestiona cada uno. As cuando se cree una
nueva sala sabr a qu Erizo debe asignarla. Cada Erizo Controller enviar a Cloud
Handler un mensaje con informacin acerca de su estado. Este estado incluye
parmetros como el nmero de salas o de usuarios que estn activas en la sesin. Los
mensajes de este tipo se enviarn cuando haya un cambio en el estado y servirn para
que Cloud Handler actualice esta cola segn la prioridad de asignacin de salas. La
informacin de este estado se explicar como ms detalle en el la seccin dedicada a
Erizo Controller.
Interfaz REST
En la Tabla 6 puede observarse una relacin de las acciones REST que pueden
realizarse sobre los recursos de Nuve y su correspondencia con las funciones
explicadas anteriormente para el API de cliente.
30
Recurso
Mtodo
Sala
POST
createRoom
GET
getRooms
GET: room
getRoom
DELETE :room
deleteRoom
GET
getUsers
GET :user
No soportado
DELETE :user
No soportado
POST
createService
GET
getServices
GET :service
getService
DELETE :service
deleteService
POST
createToken
Usuario
Servicio
Token
31
El string con estos tres campos se devuelve en la respuesta REST y el token, con el
resto de parmetros que se explicarn en la subseccin dedicada a la base de datos se
almacena.
32
keepAlive: mensaje de keep alive para indicar que el Erizo Controller sigue
arrancando y ejecutndose sin ningn problema. Si tras un periodo de
tiempo no se reciben mensajes de este tipo de un Erizo Controller se
eliminar del registro en Cloud Handler.
3.1.4
La Base de Datos
Para la persistencia de los datos en Nuve se utiliza una base de datos MongoDB. Se
trata de una base de datos NoSQL orientada a documentos JSON que est escrita en
C++. Utilizando una librera de Node.js puede accederse a la base de datos que guarda
tablas para los recursos sala, servicio y token. As las entradas de la base de datos de
cada uno de los tipos tienen la siguiente estructura:
room
{name: string, _id: ObjectId}
service
{name: string, key: string, rooms: Array[room], _id: ObjectId}
token
{host: string, userName: string'', room: roomId, role: string, service: serviceId,
creationDate: Date(), _id: ObjectId}
33
3.2 Erizo
Erizo es el mdulo que se encarga de la gestin multimedia de las comunicaciones
en Licode. Es la MCU (Multipoint Control Unit) del sistema. Una MCU [WillebeekLeMair et al. 1994] es un componente software utilizado en sistemas multimedia y de
comunicaciones en tiempo real para actuar como mdulo central entre los clientes o
usuarios. De esta manera, como se observa en la Figura 2, puede convertirse una
topologa en malla en la que todos los usuarios se comunican con todos, en una
topologa en estrella donde la MCU acta de nodo central e interconecta a todos los
clientes. Gracias a esta topologa la MCU realiza las siguientes funciones con sus
consecuentes ventajas para el sistema:
1. Redireccin
En una topologa en malla en la que todos los usuarios se comunican con el
resto, cada usuario debe enviar sus flujos multimedia a todos y cada uno de los
clientes y recibir un flujo de cada uno de ellos. En cambio en una topologa en
estrella la MCU actuando como nodo central recibe los flujos de cada cliente y
los distribuye al resto. Esto se traduce en un ahorro considerable de ancho de
banda ya que cada cliente tiene que enviar una nica vez su flujo multimedia a
la MCU.
2. Composicin
La situacin descrita anteriormente mejora an ms si la MCU no enva a cada
cliente un flujo de datos por cada uno del resto de clientes sino que realiza una
composicin resultando en el envo de un nico flujo resultado de la suma del
resto.
3. Transcodificacin
En determinadas ocasiones los clientes que participan en una sesin multimedia
son de naturalezas muy distintas. Por ello resulta interesante que el nodo central
MCU pueda realizar una transformacin de los flujos multimedia para
adaptarlos a las necesidades de cada cliente. Estas necesidades pueden ser de
varios tipos. En ocasiones el formato de los datos con los que es compatible cada
cliente puede variar (cdecs de audio y vdeo por ejemplo). Tambin puede ser
necesario adaptar las calidades a las necesidades de cada cliente. Esto puede ser
debido a que operen en redes con diferentes capacidades de ancho de banda
(redes 3G, WiFi, wired) o simplemente que por las caractersticas del terminal
34
de
las
sesiones
para
almacenarlas
poder
reproducirlas
posteriormente. Para esto es muy til la presencia de una MCU ya que al recibir
los flujos multimedia de todos los participantes podr realizar la grabacin de la
sesin completa (o de una parte de ella) y almacenarla para su posterior uso.
Erizo por lo tanto es la MCU [P. Rodrguez et al. 2012] del sistema y desde el punto de
vista de WebRTC se comporta como un cliente ms. Por lo tanto Erizo debe
implementar los protocolos necesarios para establecer una comunicacin WebRTC.
Como se explic a principio del documento estos protocolos son ICE y SRTP (con la
extensin DTLS-SRTP para la gestin de claves).
Erizo est escrito en los lenguajes de programacin C y C++ y puesto que el mdulo
superior (Erizo Controller) que se encarga de controlar a gestin de la MCU est
desarrollado utilizando Node.js, es necesario un wrapper que recubra las clases que
sern accesibles desde fuera (y que son las que se explicarn en este documento).
3.2.1
Wrapper Node
de control Erizo Controller. Est desarrollado utilizando las libreras V8 de C++ que a
partir de clases C++ crean interfaces accesibles desde JavaScript.
Las clases que recubre son las siguientes:
-
OneToManyTranscoder:
su
funcin
es
la
misma
que
la
del
36
Sala: representa una sala de Nuve. Es decir, un espacio virtual donde los clientes
pueden publicar sus streams o suscribirse a otros streams.
Por lo tanto Erizo Controller se encarga de gestionar tanto la conexin de los clientes
web a las salas de videoconferencia autenticndolos mediante un token contra Nuve
como el manejo de los streams de los clientes en las salas. Un cliente podr publicar sus
streams en una sala o suscribirse a los que previamente otros clientes han publicado.
Desde un punto de vista de la arquitectura Erizo Controller est colocado por
encima del mdulo Erizo y dispone de un API de cliente (Erizo Client) que los clientes
web utilizarn para comunicarse con l a travs de una conexin de websockets.
A continuacin se explica con detalle cada uno de estos componentes, el API de
cliente de Erizo Controller, el servidor y tambin la comunicacin de ste con el
componente Nuve.
3.3.1
API de Cliente
Stream
38
Inicializacin
Erizo.Stream ({audio: boolean, video: boolean, data: boolean, attributes: JSON})
Propiedades
Funciones
showing
hasAudio ()
room
hasVideo ()
local
hasData ()
init ()
getID ()
close ()
show (elementID, options)
hide ()
sendData (msg)
getAttributes ()
getVideoFrame ()
getVideoFrameURL ()
Tabla 7. Interfaz Erizo Controller API. Stream
Al crear un objeto del tipo Stream debe especificarse si contendr audio, datos y
vdeo. Puede contener cualquier combinacin de estos tres. Adems puede incluirse
una lista de atributos en forma de objeto JSON que se utilizar para lo que cada
desarrollador necesite en sus aplicaciones.
Room
objeto Room utilizar el API PeerConnection del estndar. Al igual que en el caso del
API GetUserMedia se utiliza un recubrimiento que permite la compatibilidad con
distintos navegadores.
El intercambio de los mensajes de sealizacin se realizan a travs de la conexin de
websockets por lo que el objeto Room se encargar tanto del envo de los mensajes
como de escuchar para la recepcin de las respuestas. La conexin tambin se utilizar
para el envo de objetos JSON a travs de Streams de datos.
En la Tabla 8 puede observarse tanto la forma de inicializar un objeto de este tipo
tanto las propiedades y funciones de que dispone y cuya funcin se explica a
continuacin.
Inicializacin
Erizo.Room ({token: string})
Propiedades
Funciones
roomID
connect ()
state
publish (stream)
localStreams
subscribe (stream)
remoteStreams
unpublish (stream)
unsubscribe (stream)
disconnect ()
getStreamsByAttribute (name, value)
Tabla 8. Interfaz Erizo Controller API. Room
41
unpublish: dejar de enviar los datos a la sala. En caso de audio y/o vdeo
implica cerrar el PeerConnection.
Event
Se trata de un objeto especial que representa eventos sobre otros objetos. La forma
de inicializarlos no es relevante en esta descripcin del API ya que se hace
42
Funciones
Room.addEventListener (type, function (evt) { });
Stream.addEventListener (type, function (evt) { });
Los tipos de eventos que pueden lanzarse en un objeto de tipo Room son los
siguientes:
Los tipos de eventos que pueden lanzarse en un objeto de tipo Stream son los
siguientes:
A continuacin se explican las acciones que van realizndose por el cliente y los
eventos que estas acciones lanzan, tanto para l mismo como para otros clientes
conectados a la misma sala.
1. Sobre un Stream local se llama a la funcin init de tal forma que el navegador
pedir acceso a su cmara y /o micrfono. En caso de que el usuario acepte se
recibir sobre ese Stream un evento de tipo access-accepted.
2. Sobre un objeto de tipo Room se llama a la funcin connect con lo que se
establece la conexin con Erizo Controller. En caso de que esta accin tenga xito
se recibir sobre ese objeto un evento de tipo room-connected incluyendo la lista
de Streams remotos que hay publicados en la sala.
44
Como ltima consideracin sobre el API de cliente de Erizo Controller cabe destacar
que tambin est disponible para utilizarse como una librera de Node.js. De esta forma
puede simularse un cliente que ejecutar en cualquier servidor Node y que puede
conectarse a una sala y realizar las mismas acciones que un cliente web utilizando
exactamente el mismo API.
Esto resulta til por ejemplo para publicar flujos multimedia provenientes de otros
medios que no sean la cmara de un cliente como cmaras IP o para publicar datos en
una sala desde un servidor sin necesidad de arrancar un navegador web.
3.3.2
Servidor
Se trata del servidor que escucha los mensajes enviados por los clientes web que
utilizan el API de cliente de Erizo Controller, los procesa y se comunica con Erizo para
realizar las acciones correspondientes en la MCU. Est escrito en el lenguaje de
programacin Node.js por lo que para realizar esta comunicacin con Erizo Controller
es necesario el wrapper o addon de Node para C++ que se explic anteriormente.
45
Adems Erizo Controller se comunicar con Nuve a travs de un bus de mensajes para
realizar llamadas a procedimiento remoto.
En primer lugar y cuando se arranca un Erizo Controller ste se comunica con Nuve
para notificarle que est preparado para comenzar a gestionar salas multimedia de
Licode. Lo hace ejecutando la llamada a procedimiento remoto addNewErizoController
que se explic en la interfaz RPC de Nuve. En esta llamada le indica a Nuve su
direccin IP y cuando Nuve contesta afirmativamente a la peticin Erizo Controller
comienza a enviar los mensajes de keepalive y a escuchar en el puerto de websockets
mensajes de los clientes.
Es importante destacar que Erizo Controller est preparado para ser arrancado en
mquinas de proveedores de cloud pblicos. Actualmente es compatible con el
proveedor de cloud Amazon EC2 [Amazon]. Al arrancar una mquina de esta forma
Erizo Controller le indicar a Nuve esta circunstancia para que Nuve realice una
llamada al API del proveedor consutando la IP pblica de la mquina en la que est
corriendo el Erizo Controller.
Erizo Controller posee una lista con el registro de las salas multimedia que est
gestionando. Este registro inluye un identificador de la sala, una lista de los Streams
publicados en la sala, una lista de los clientes conectados a la sala (a travs del
identificador de su conexin de websockets) una lista con la correspondencia de
suscripciones a Streams en la sala y un objeto WebRtcController.
Un objeto WebRtcController representa una sala multimedia desde el punto de vista
de Erizo. Por lo tanto se utiliza para realizar las acciones necesarias para gestionar la
MCU utilizando la interfaz del wrapper Node de Erizo. As utiliza los objetos
WebRtcCOnnection, ExternalInput, OneToManyProcessor y OneToManyTranscoder
que se explicaron anteriormente y las acciones sobre ellos.
Los mensajes enviados por los clientes que Erizo Controller puede procesar
escuchando en el puerto de websockets son los siguientes:
y cierra la conexin de
47
Erizo Controller realiza una monitorizacin del estado de carga del Erizo que
controla. Esta monitorizacin tiene en cuenta el nmero de salas que est gestionando.
El desarrollador que configura el sistema puede configurar unos valores de referencia
de carga. Estos valores son dos, uno indica un nmero de salas nivel de warning y el
otro un nmero de salas lmite. En funcin del nmero de salas que estn activas en el
Erizo que controla el estado de carga ser available, warning o notAvailable.
Un estado available indica que el nmero de salas est por debajo del niver de
warning y que por lo tanto el Erizo puede gestionar ms salas si es necesario.
Este estado se enviar a Nuve (concretamente a Cloud Handler) cada vez que vare
a travs de una llamada a procedimiento remoto. De tal modo que Cloud Handler
tomar las acciones que sean oportunas en funcin del estado de los Erizo Controller
arrancados. Cada vez que se realice una accin que implique crear una sala, o
eliminarla Erizo Controller recalcular su estado y en caso de que vare enviar la
actualizacin a Nuve.
48
Al igual que el caso de Nuve Erizo Controller dispone de una interfaz de llamadas a
procedimiento remoto RPC para comunicarse con Nuve a travs de un bus de mensajes
sobre el que se ha implementado esta funcionalidad.
Los mtodos pblicos de los que dispone Erizo Controller son los siguientes:
deleteRoom: elimina una sala con todo lo que ello implica. Cerrar las
conexiones de los clientes que estn publicando o suscritos a Streams de la
sala y notificndolo a los clientes.
49
Componente
Parmetro
Descripcin
RabbitMQ
host
port
dataBaseURL
superServiceID
superServiceKey
stunServerURL
warning_n_rooms
limit_n_rooms
interval_time_KA
name
host
Identificador de la zona
accessKey
secretAccesKey
Nuve
Erizo Controller
Cloud Provider
50
4 Despliegue
en
el
Cloud
Como se ha explicado en la seccin anterior, la arquitectura de Licode est muy
orientada a su despliegue en el Cloud. Cuando el nmero de usuarios en el sistema es
elevado es necesario arrancar varias instancias de Erizo o MCUs ya que es este mdulo
el que soporta una mayor carga computacional. Pero adems este nivel de carga puede
variar de forma dinmica durante el transcurso de una sesin multimedia.
Los requisitos de este mdulo casan muy bien con el modelo de Cloud Computing
ya que, de acuerdo con la definicin NIST [P. Mell et al. 2009] provee caractersticas de
On- demand self-service, Broad network access, Resource pooling, Rapid elasticity y Measured
service.
En esta seccin van a analizarse las oportunidades que ofrece el despliegue de una
MCU en una infraestructura Cloud y que podrn aplicarse directamente a una MCU
como Erizo. No obstante este despliegue implica tambin ciertos retos a los que hay
que enfrentarse y que tambin se explicarn en esta seccin.
Cabe destacar que la investigacin realizada al respecto se encuentra ya publicada
en un artculo de investigacin [Alvaro Alonso et al. 2013] presentado en el congreso
internacional CLOUD COMPUTING, International Conference on Cloud Computing,
GRIDs, and Virtualization.
4.1 Oportunidades
Un componente MCU puede requerir diferentes caractersticas de computacin en
funcin del nmero de participantes, las condiciones de la sesin (grabacin,
redireccin, transcodificacin, composicin) y la posicin fsica de los participantes.
Adems estas condiciones pueden variar de forma dinmica durante la sesin
multimedia. En una infraestructura Cloud la sesin va a poder adaptarse de forma
sencilla y dinmica a las variaciones de este tipo de condiciones en funcin de los
requisitos de cada momento.
El modelo definido por NIST y citado previamente ilustra estas ventajas que se
explicarn a continuacin:
.
51
4.1.1
4.1.2
La operacin de una MCU tambin depende del tipo de sesin que est
gestionando. Cada tipo de funcionalidad o tarea que desarrolle requiere diferentes
capacidades de computacin: redireccionamiento de flujos multimedia, composicin
de vdeos, transcodificacin, grabacin de las sesiones, etc.
Un componente MCU bsico solamente redirecciona flujos de un participante al
resto y requiere bajos niveles de computacin. Sin embargo estos niveles (como el uso
de memoria y CPU) aumentan considerablemente si la MCU realiza tareas avanzadas.
La necesidad de realizar estas tareas puede variar de forma dinmica durante el
transcurso de una sesin dependiendo de factores como el nmero de usuarios, el
tamao de los vdeos generados, los cdecs que manejan los usuarios en sus
dispositivos, etc.
Por ejemplo un alto nmero de usuarios puede forzar a la MCU a realizar una
composicin de vdeos en uno solo a partir de los de un conjunto de usuarios. Por otro
lado en escenarios en los que los usuarios se conectan desde diferentes dispositivos, la
MCU deber adaptar los flujos que enva a cada uno de ellos en funcin de ciertas
caractersticas de los dispositivos como el tamao de la pantalla, la conexin de red,
etc. Por ltimo la MCU puede tener que grabar la sesin multimedia o parte de ella
para realizar una reproduccin posterior.
Entornos virtualizados en sistemas Cloud ayudan a la MCU a adaptarse a las
variaciones de los requisitos de estas funcionalidades. Como en el caso anterior
podemos encender una nueva mquina para realizar nuevas tareas y apagarla cuando
no sea necesaria. O aadir capacidad a las mquinas que ya se encuentran corriendo en
la infraestructura cuando sea necesario.
Otra posibilidad que ofrece el Cloud es la de configurar diferentes tipos de
mquinas virtuales dependiendo de las tareas que vayan a desempear. En la Figura 4
se puede observar un ejemplo en el que la mquina encargada de redireccionar los
flujos multimedia necesita un alto nivel de CPU y memoria. Por otro lado la mquina
encargada de grabar la sesin consumir poca memoria y CPU si recibe un nico flujo
de vdeo con la composicin de la sesin.
Resumiendo, el despliegue de una MCU en una infraestructura Cloud hace que sea
sencillo y dinmico gestionar la configuracin de diferentes tipos de mquinas
virtuales adaptando sus caractersticas a las necesidades del escenario concreto. As
podremos proveer un servicio adaptativo que utilizar de manera eficiente los recursos
disponibles reduciendo constes y mejorando el rendimiento del sistema.
53
4.1.3
Flexibilidad geogrfica
Otro factor crtico en las aplicaciones de tiempo real que afecta directamente a la
experiencia de usuario es la latencia de las paquetes que viajan entre los usuarios
conectados a una sesin multimedia. La latencia normalmente depende de la distancia
geogrfica entre los clientes. En los escenarios con un dispositivo MCU todos los flujos
multimedia atraviesan la mquina en la que sta est corriendo por lo tanto resulta
crucial la posicin en la que se encuentra.
Gracias a un sistema basado en el Coud podemos correr MCUs en diferentes
localizaciones geogrficas conectando cada una de ellas con los usuarios que estn
utilizando el servicio en cada regin. Por ejemplo, en la fecha en que se escribe este
documento, Amazon EC2 provee centros de datos en North Virginia, Oregon, North
California, Ireland, Singapore, Tokyo, Sydney y Sao Paulo, y Rackspace [Rackspace] en
Texas, Illinois, Vancouver, Hong Kong, London y Slough, UK.
Estos proveedores adems permiten la interconexin de MCUs en diferentes
regiones por lo que pueden ofrecerse sesiones en todo el mundo conectando usuarios a
la MCU ms cercana e interconectando las MCUs entre ellas. En la Figura 5 puede
observarse un ejemplo de esta distribucin.
54
4.2 Retos
Para realizar un despliegue que aproveche todas las posibilidades que ofrece el
Cloud y que han sido descritas en la seccin anterior es necesario realizar un diseo
minucioso y teniendo en cuenta todas las caractersticas del sistema que manejamos.
En esta seccin se analizan todos los retos que plantea este problema y se esbozan
posibles soluciones que habr que desarrollar con ms detalle en futuros trabajos de
investigacin.
Adems se proponen ciertas soluciones de escalabilidad que se salen de as
aproximaciones generales que suelen plantearse como por ejemplo las expuestas en [L.
M. Vaquero et al. 2011].
4.2.1
55
56
57
58
N = n (n1)
Donde n es el nmero de usuarios en la sala. El uso de memoria en este escenario
tambin aumenta de forma exponencial pero de nuevo con una variacin insignificante
para este estudio.
4.2.2
escalabilidad
explicados
anteriormente.
La
MCU
deber
monitorizar
4.2.3
De la misma forma que durante una sesin puede ser necesario incrementar los
recursos disponibles puede ocurrir que en un momento dado un pico de demanda
haya desaparecido y estemos ofreciendo ms recursos de los necesarios. Como se ha
mostrado en la seccin anterior hay diferentes mtodos de incrementar los recursos de
un mdulo MCU. En el caso del escalado hacia abajo ocurre lo mismo peor en sentido
contrario.
Por lo tanto el primer reto que plantea el escalado hacia abajo es similar al caso
anterior. Cuando detectamos que segn la demanda del sistema estamos ofreciendo
ms recursos de los necesarios debemos elegir la mejor forma de disminuirlos.
Podemos realizar un escalado vertical y reducir la capacidad de computacin de las
mquinas que ya estn corriendo o realizar un escalado horizontal reduciendo el
nmero de mquinas arrancadas.
60
Un cliente que est participando en una sesin est enviando y recibiendo varios
flujos multimedia desde y hacia la MCU. Si esta MCU va a ser apagada es necesario
redirigir estos flujos a otra MCU y esta redireccin debe realizarse de forma
transparente para el usuario. Adems para optimizar el uso de recursos debe realizarse
una correcta distribucin de los usuarios y las salas de videoconferencia procurando
agrupar estos en las mismas MCUs.
Una posible solucin a este problema, mostrado en la Figura 10, es la de incluir un
proxy entre los clientes y el mdulo MCU. De esta forma cuando una mquina va a ser
apagada el proxy comenzar a duplicar los flujos entre la antigua MCU y la nueva.
Cuando los flujos estn preparados el proxy cambiar en envo y recepcin al cliente de
la antigua MCU a la nueva y en ese momento podr apagarse la antigua.
4.2.4
Distribucin geogrfica
Pero decidir cmo actuar cuando los usuarios estn distribuidos en distintos lugares
puede determinar la calidad de la sesin.
Para tomar esta decisin debe tenerse en cuenta el nmero de usuarios en cada
regin geogrfica pero tambin a calidad de sus conexiones. Para caracterizar las
conexiones entre las regiones es interesante realizar medidas de ancho de banda, jitter,
prdidas de paquetes y RTT. Probando la conexin de cada usuario con las diferentes
regiones podemos decidir dnde la calidad ser mejor.
Como puede comprobarse en [J. Cervino et al. 2011] las conexiones de red entre
instancias de Amazon en diferentes regiones rinden mejor que las conexiones de
Internet medias. Debe tenerse esto en cuenta a la hora de realizar el diseo y
despliegue del sistema.
62
5 Resultados
En esta seccin se realiza una descripcin de los diferentes resultados obtenidos o
que se van a obtener en relacin a Licode. Esto incluye desarrollo de proyectos del
departamento y el grupo de investigacin, lneas de investigacin y la comunidad
creada en torno al proyecto.
El sitio web en el que se encuentra publicada toda la informacin al respecto del
proyecto es
http://lynckia.com/licode
76 stars
19 forks
496 commits
3 pull requests
8 branches
63
5.2 La
comunidad
En torno al proyecto de cdigo libre se ha creado una comunidad de usuarios que
cada da se descargan el proyecto y utilizan con diferentes fines realizando por tanto
pruebas en diferentes entornos y con distintos casos de uso. Se ha creado una lista de
correo para consultar y discutir temas relacionados con Licode. Cualquier
desarrollador interesado en el proyecto puede suscribirse a esta lista de correo y
participar en ella en:
lynckia@googlegroups.com
Algunos datos acerca de esta lista son los siguientes:
87 miembros
Ms de 50 discusiones
5.3 Proyectos
El proyecto Licode se est utilizando en algunos proyectos de investigacin del
departamento. En el momento en que se escribe este documento son los siguientes:
5.3.1
FI-WARE
FI-WARE (Plataforma central del Internet del futuro, del ingls Future Internet Core
Platform) es un proyecto europeo que se
5.3.2
64
5.4 Investigacin
Durante este ao se ha realizado una contribucin publicando un artculo [Alvaro
Alonso et al. 2013] en el congreso internacional IARIA CLOUD COMPUTING 2013.
The Fourth International Conference on Cloud Computing, GRIDs, and Virtualization.
En esta contribucin se realiza el anlisis descrito en la seccin 4 de este documento,
en relacin a los retos y oportunidades que plantea el despliegue del componente Erizo
en una infraestructura Cloud.
Adems fruto del trabajo realizado hasta el momento surgen ms lneas de
investigacin relacionadas con este despliegue que se explicarn a continuacin en la
seccin dedicada a trabajos futuros.
Durante este periodo tambin se ha realizado una contribucin relacionada con el
campo de la videoconferencia en la web junto a Pedro Rodrguez, Joaqun Salvacha y
Javier Cervio. En concreto acerca de un algoritmo de calidad de servicio en la
plataforma VaaS explicada en el Estado del Arte de este documento. La contribucin
va
publicarse
en
el
congreso
internacional
WCCIT'13
65
6 Conclusiones
Licode es un proyecto software que provee comunicaciones en tiempo real en los
navegadores de tal forma que puede instalarse en cualquier infraestructura orientado a
ser escalable en el Cloud. Por lo tanto cumple los requisitos previstos en este Trabajo
Fin de Mster. Como resultado del trabajo y en colaboracin con los compaeros del
grupo se han cumplido los siguientes objetivos:
-
66
67
Bibliografa
[Alvaro Alonso et al. 2013] Alvaro Alonso, Pedro Rodr iguez, Joaquin Salvachua, Javier
Cervio. Deploying a Multipoint Control Unit in the Cloud- Opportunities and
Challenges. 2013, CLOUD COMPUTING, International Conf. on Cloud Computing,
GRIDs, and Virtualization.
[Amazon] Amazon AWS. http://aws.amazon.com [retrieved: March, 2013].
[A. Bergkvist et al. 2012] A. Bergkvist, D. C. Burnett, C. Jennings, and A. Narayanan,
Webrtc 1.0: Real-time communication between browsers, W3C, Working Draft WD,
August 2012, http://www.w3.org/TR/webrtc/ [retrieved: March, 2013].
[A. V. Do et al. 2011] A. V. Do, J. Chen, C. Wang, Y. C. Lee, A. Zomaya, and B. B. Zhou,
Profiling applications for virtual machine placement in clouds, in Cloud Computing
(CLOUD), 2011 IEEE International Conference on, July 2011, pp. 660 667.
[C. Jennings et al. 2013] Cullen Jennings, Ted Hardie and Magnus Westerlund, Real
Time Communications fot the Web2 IEEE Communications Magazine. Abril 2013.
[E. Caron et al. 2010] E. Caron, F. Desprez, and A. Muresan, Forecasting for grid and
cloud computing on-demand resources based on pattern matching, in Cloud
Computing Technology and Science (CloudCom), 2010 IEEE Second International
Conference, December 2010, pp. 456 463.
[F. Galn et al. 2009] F. Galn, A. Sampaio, L. Rodero-Merino, I. Loy, V. Gil, and L. M.
Va- quero, Service specification in cloud environments based on extensions to open
standards, in Proceedings of the Fourth International ICST Conference on
COMmunication System softWAre and middlewaRE, ser. COMSWARE 09, New York,
NY, USA, 2009, pp. 19:119:12.
[J. Cervino et al. 2011] J. Cervino, P. Rodriguez, I. Trajkovska, A. Mozo, and J.
Salvachua, Testing a cloud provider network for hybrid p2p and cloud streaming
architectures, in Cloud Computing (CLOUD), 2011 IEEE International Conference,
July 2011, pp. 356 363.
[L. M. Vaquero et al. 2011] L. M. Vaquero, L. Rodero-Merino, and R. Buyya,
Dynamically scaling applications in the cloud, SIGCOMM Comput. Commun. Rev.
vol 41, num 1, January 2011, pp. 45 52.
69
70