Académique Documents
Professionnel Documents
Culture Documents
Universidade da Coruña
Departamento de Computación
Campus de Elviña – 15071 A Coruña (SPAIN)
e-mail: {enano,gulias,mosky,juanjo}@lfcia.org
Resumen
El vı́deo bajo demanda (VoD) es un servicio que permite al usuario solicitar cual-
quier contenido multimedia en cualquier momento, sin estar sujeto a programaciones
preestablecidas. La mayorı́a de las soluciones actuales de este tipo poseen un coste
elevado, además de poca flexibilidad y escalabilidad.
El servidor que se describe en este artı́culo, diseñado con una arquitectura
jerárquica, implementado mediante un lenguaje de programación funcional (Er-
lang) y construido sobre una arquitectura de clusters Linux de bajo coste (Beo-
wulf), presenta caracterı́sticas que permiten satisfacer la mayorı́a de los requisitos
tradicionales que se le plantean a un servicio de este tipo.
El sistema resultante se puede adaptar con flexibilidad a la topologı́a de red
subyacente y puede escalarse para soportar un número creciente de usuarios concu-
rrentes, todo ello con una solución de bajo coste, utilizando ordenadores de consumo.
Después un diseño inicial del sistema, donde la estructura jerárquica era estática
y de tres capas especializadas (streaming, caché y almacenamiento masivo), y tras
las primeras implementaciones y pruebas de rendimiento y adaptación, se ha ido
evolucionando la arquitectura hacia un número variable de capas, compuestas por
módulos con una interfaz conocida, dotando a la solución de una mayor capacidad
de adaptación y versatilidad.
1 Introducción
Un servidor de Vı́deo Bajo Demanda (Video On Demand, VoD) es un sistema que pro-
porciona servicios de vı́deo, en los cuales un usuario puede solicitar un VO (Video Object)
en cualquier momento, sin restricciones temporales preestablecidas.
∗ Parcialmente financiado por FEDER TIC-1FD97-1759, Xunta de Galicia PGIDT99COM10502 y
UDC 2000-5050252026
Los servicios de pelı́culas bajo demanda, herramientas de aprendizaje a distancia, o
servicios informativos que permitan al usuario visualizar únicamente las noticias que le
interesan, son algunos de los muchos ejemplos de aplicaciones multimedia que pueden
hacer uso de este tipo de servidores.
Los sistemas de vı́deo bajo demanda deben satisfacer una serie de requisitos derivados
de su funcionalidad, entre los cuales destacan:
• Gran capacidad de almacenamiento: en la mayorı́a de sus aplicaciones, el sistema
deberá ser capaz de ofertar al usuario un amplio abanico de objetos multimedia,
que serán almacenados de algún modo en la arquitectura del servidor.
• Gran ancho de banda: el hecho de que los contenidos multimedia se caracterizan por
hacer uso de un elevado ancho de banda, unido a la necesidad de dar servicio a un
número elevado de usuarios, hace necesario que el servidor sea capaz de aprovechar
un gran ancho de banda.
• Tiempo de respuesta predecible: cuando un usuario solicite un objeto de vı́deo, el
sistema debe ser capaz de realizar, mediante estimaciones estadı́sticas que hagan
uso del estado del sistema en ese momento, una aproximación del tiempo de espera.
Además, el servidor debe tratar en todo momento de que el tiempo de espera sea
el mı́nimo posible para todos los usuarios.
• Soportar a gran número de usuarios concurrentes: el sistema debe ser capaz de
gestionar un número elevado de peticiones, que pueden realizarse al mismo tiempo.
• Tolerancia a fallos: un servidor de estas caracterı́sticas, con un funcionamiento de
24 horas al dı́a, necesita poseer mecanismos, tanto hardware como software, de
reacción ante posibles fallos, cambio de código en caliente, etc.
Además de los requisitos tradicionales en este tipo de servidores, a la solución pre-
sentada en este artı́culo se le han añadido otros tres, muy importantes, que condicionan
las decisiones de diseño:
Tertiary level
(massive storage)
Secondary level
(large scale cache)
Cluster heads
Primary level
(buffering and
protocol adaptation)
Output streams
6
5
4
CPU CPU ... CPU CPU CPU ... CPU
frontend 2
1
1 FORERUNNER 3810 (External world)
2 10 Mb Ethernet link
3 Dual Pentium II 350Mhz 384MB RAM 8GB HD SCSI
4 AMD K6 300Mhz 96MB RAM 4GB HD IDE (23, up to 47)
5 100 Mb Fast Ethernet link (2 per node)
6 3COM SuperStack II Switch 3300 (4, 24 ports per switch)
7 1 Gb link (2 independent networks)
en un cálculo.
La reconfiguración de la arquitectura genérica del Borg para adaptarse a la estructura
jerárquica de tres niveles, se puede observar en la figura 3. Como nivel terciario se utiliza
un nodo especializado con acceso a un robot de cintas; en el secundario, funcionando como
caché de objetos de vı́deo, se han colocado los 23 nodos del cluster; y como primario se
ha colocado otro nodo especializado con mayores requisitos de memoria, como se puede
ver en la figura. Las conexiones entre capas se realizan a través de los switches, y el
frontend del cluster actúa de nodo de administración.
3.2.1 Erlang/OTP
El lenguaje utilizado, Erlang, ha sido diseñado y utilizado en el laboratorio de computa-
ción (CSLab) de Ericsson para la programación de sus sistemas de control distribuidos.
La combinación del paradigma funcional y la computación paralela dan lugar a un len-
guaje declarativo, sin efectos colaterales, y con un alto nivel de expresividad, abstracción
y facilidad para el prototipado.
Erlang es especialmente adecuado para sistemas de tiempo real “blandos” (soft real
time) distribuidos y tolerantes a fallos. Se trata de un lenguaje basado en paso de men-
sajes ası́ncrono, transporte transparente de valores y comunicaciones de orden superior,
que posee capacidad para dar soporte a un número elevado de procesos concurrentes. El
lenguaje es adecuado para el desarrollo de sistemas distribuidos y permite la ubicación
transparente de procesos en distintos nodos. Incluye además primitivas para el soporte
de tolerancia a fallos y proporciona facilidades para el reemplazamiento “en caliente” de
código, sin necesidad de detener el sistema para ello.
A mayores del lenguaje, la solución propuesta utiliza ampliamente las bibliotecas
y los patrones de diseño distribuido de la Open Telecom Platform (OTP), que incluye
K7 500 128MB Bus 32 bits
Alpha Server DS20 Buses 64 bits
borg24 (192.168.155.24)
Borg0
borg0−1 (192.168.155.254)
borg0−0 (192.168.154.254)
borg1−0 ... borg23−0 (192.168.154.1...23)
RTP
Cache
HTTP Group Storage Storage
H.263 Storage
Frontend Driver Driver
HTTP Group
Streamer (File) (TAPE)
HTTP
Frontend
Cache Cache
Storage
Driver Driver
(File) (File) Driver
(HTTP)
• Buen rendimiento.
• Amplia disponibilidad de herramientas de desarrollo.
• Extensivo soporte de diferentes plataformas hardware (x86, Alpha, SPARC, ARM,
S/390 (zSeries), IA64, SH3, MIPS...).
Caché en
Streamer en
nodo de red
Almacenamiento nodo final
secundario
(réplica)
Caché en
nodo de red
primario Usuarios finales
Consults
Request1 SERVLETS
Request2(MO) HTTP
Consults Agent
XSLT
Management Data (MO)
Response1
Management Subsystem
MO
MO
Stream DD2 Streaming DD2 Storage Storage
Group lookup Sched Sched lookup Group
lookup
lookupAns(A) lookupAns(A) lookupAns(A,B,C)
MO lookup
DD1 lookup lookup lookupAns(C)
f(State,MO)={DS1,DD2} lookup
RTP lookupAns(A) lookupAns(A)
f(State,MO)=DS2 lookupAns(B)
borg24 borg25
VODKA_slave VODKA_slave
10Mb/s
ATM HTTP
Frontend
VODKA_slave VODKA_slave VODKA_slave
Referencias
[1] Apple Computer Inc. About Darwin Streaming Server en
http://www.publicsource.apple.com/projects/streaming/
[2] J. Armstrong, R. Virding, C. Wikström, M. Williams. Concurrent Programming in
Erlang. Second Edition, Prentice-Hall. 1996.
[3] M. Barreiro, V. M. Gulı́as, Cluster setup and its administration. In Rajkumar
Buyya, editor, High Performance Cluster Computing, Vol. I. Prentice Hall, 1999.
[4] S. G. Chan and F. Tobagi Hierarchical storage systems for interactive Video-on-
demand Technical Report, Stanford University, Computer Systems Laboratory,
Number CSL-TR-97-723, p. 84. 1997
[5] T. Chiueh, C. Venkatramani, M. Vernick, Design and Implementation of the Stony
Brook Video Server. Software – Practice and Experience. 1997.
[6] T. Chiueh, M. Vernick, C. Venkatramani, Performance Evaluation of Stony Brook
Video Server. ECSL-TR-24. 1997.
[7] Cisco Systems, Inc. A Distributed Video Server Architecture for Flexible Enterprise-
Wide Video Delivery en
http://www.cisco.com/warp/public/cc/pd/mxsv/iptv3400/tech/dvsa wp.htm,
White Paper, 2000.
[8] D. Du, J. Hsieh, J. Liu, Building Video-on-Demand servers Using Shared-Memory
Multiprocessors. Distributed Multimedia Research Center and Computer Science
Department, University of Minnesota, and Ronald J. Vetter, Computer Science De-
partment, North Dakota State University. 1996.