Universidad Politécnica de Madrid Escuela Técnica Superior de Ingenieros de Telecomunicación
Universidad Politécnica de Madrid Escuela Técnica Superior de Ingenieros de Telecomunicación
Universidad Politécnica de Madrid Escuela Técnica Superior de Ingenieros de Telecomunicación
2019
Universidad Politécnica de Madrid
Escuela Técnica Superior de Ingenieros de Telecomunicación
Máster Universitario en
Ingeniería de Redes y Servicios Telemáticos
Autor
Luis Enrique Reyes Zabala
Director
Luis Bellido Triana
2019
Resumen
Por su parte, el surgimiento de las Redes Definidas por Software ofrece cambiar las
limitaciones de las infraestructuras de red actuales, mediante su principal característica:
la separación del plano de control del plano de datos y alojarlo en una unidad lógica de
control centralizada. Esto produce que la red sea programable y más flexible que las
redes tradicionales.
En este Trabajo Fin de Máster se desea demostrar que es posible aprovechar las
bondades que ofrecen tanto SDN como DASH en la transmisión de video en multicast
sobre redes móviles. Para ello se utilizó una amplia gama de herramientas, entre las que
destacan: VNX para construir topologías de red virtualizadas sobre las que se
desarrollaron diferentes pruebas, el controlador de red ONOS junto con sus aplicaciones,
y el software UFTP para realizar el envío de ficheros. Adicionalmente, se explica
detalladamente el estado del arte de estas tecnologías.
i
ii
Abstract
In the recent years, we have witnessed how the telecommunications industry has
enormously grown, which led to originate new services over the web, and the
improvement of existing ones. This scenario has produced the convergence of
multimedia services, such as video conference, video on demand, live streaming, among
others, and the birth of great enterprises that now generate a huge portion of the overall
traffic on the web. Therefore, it has been necessary to develop new technologies that
guarantee high levels of satisfaction among users.
To solve these new challenges, different techniques and protocols have been
developed. However, Dynamic Adaptive Streaming over HTTP, also known as DASH,
has turned out to be the most popular technology to stream multimedia content, to the
extent of being standardized, because it allows multimedia players to adapt the quality
of the video according to the state of the network, which translate in less freezing
throughout playback.
On the other hand, the rise of Software Defined Networks, offers to change all
limitations related to traditional networks, through it most valuable proposal: the
separation of the control plane from the data plane. The control plane is housed in a
centralized control logic unit, which entails the network to be programmable and more
flexible than the traditional ones.
The main aim of this Project is to demonstrate that it is possible to take advantage
of the benefits provided by DASH and SDN in multicast video broadcasting over mobile
networks. In order to achieve so, a wide range of tools have been used. Among these
tools are: VNX to design and create virtualized network topologies to perform different
tests over, ONOS network controller and its applications and UFTP to send files over the
network. Additionally, an state-of-the-art of these technologies is given in details.
iii
iv
Índice general
Resumen .................................................................................................................................. i
Abstract.................................................................................................................................. iii
Índice general......................................................................................................................... v
1 Introducción .................................................................................................................... 1
v
3.5.2.1.1 RYU ............................................................................................................ 26
4.1.9 UFTP............................................................................................................... 35
5 Experimentación ........................................................................................................... 44
vi
6 Conclusiones ................................................................................................................. 55
7 Bibliografía .................................................................................................................... 58
8 Anexos ........................................................................................................................... 62
vii
Índice de figuras
Figura 1. Arquitectura DASH. ............................................................................................. 6
Figura 7. SDN en (a) planos, (b) niveles y (c) arquitectura de diseño del sistema ..... 13
Figura 16. Estructura del comando para la creación de grupo multicast en ONOS. . 31
Figura 26. Envío de “ping multicast” desde el “Servidor Web”, usando iperf. ......... 42
Figura 28. Recepción del “ping multicast” en el “Proxy-B”, usando iperf. ................ 43
ix
Figura 30. Representación esquemática del funcionamiento del escenario de red ... 45
Figura 33. Ejemplo de error mostrado por el cliente DASH cuando no consigue un
fichero ........................................................................................................................................ 47
Figura 34. Código modificado en el cliente DASH para recuperar los segmentos de
video desde el “Servidor Web”. ............................................................................................. 48
Figura 35. Captura del tráfico en la interfaz eth1 del “Proxy-B” al iniciar la transmisión
multicast. ................................................................................................................................... 51
Figura 39. Consumo del ancho de banda con múltipes comunicaciones en unicast
simútaneas. ................................................................................................................................ 53
Figura 41. Fragmento de traza durante la compilación del módulo “Sender” .......... 62
Figura 43. Errores durante la compilación de las librerías flute y multisflute. .......... 63
x
Índice de tablas
Tabla 5. Contenido de las variables del nuevo fragmento de código javascript del
cliente DASH............................................................................................................................. 49
xi
Siglas
xii
QoS Quality of Service
RAM Random Access Memory
REST Representational State Transfer
ROUTE Real Time Object Delivery Over Unidirectional Transport
SDM Software Defined Multicast
SDN Software Defined Networks
SI Southbound Interface
TCP Transmission Control Protocol
UDP User Datagram Protocol
VNX Virtual Networks over linuX
xiii
1 Introducción
1.1 Contexto
Los protocolos de red de control distribuido y transporte que se ejecutan dentro de
los routers y switches son la tecnología clave para que la información, en forma de
paquetes digitales, pueda viajar alrededor del mundo, pero, a pesar de su amplia
adopción, las redes IP son complejas y difíciles de gestionar. Para expresar las políticas
de red de alto nivel, los operadores de red necesitan configurar cada dispositivo usando
comandos propios de algún fabricante. Adicionalmente, las redes deben soportar fallas
(que son de carácter dinámico), y adaptarse a los cambios de carga.
Para hacerlo aún más complicado, las redes tradicionales están verticalmente
integradas, lo que significa que el plano de control y el plano de datos están incluidos
dentro del mismo dispositivo de red, lo que reduce flexibilidad y obstaculiza la
innovación y la evolución de la infraestructura de red.
En los últimos años hemos sido testigos de grandes avances en el área de las
telecomunicaciones, lo que ha propiciado la convergencia de servicios multimedia, como
video conferencia, video bajo demanda, transmisiones en vivo, entre otros, y del
crecimiento exponencial de empresas de streaming como YouTube o Netflix, al punto
que hoy en día, entre estas dos compañías se genera aproximadamente la mitad del
tráfico total de internet.
Sin embargo, a pesar de las mejoras, y debido al incremento constante del tráfico
proveniente de aplicaciones multimedia, siguen existiendo problemas que dificultan la
entrega del video y que afectan negativamente la experiencia percibida por los usuarios
finales.
Por su parte, las Redes Definidas por Software (SDN) son un paradigma de red
emergente que ofrece cambiar las limitaciones de las infraestructuras de las redes
actuales. Primeramente, rompe la integración vertical al separar el control lógico de la
red (plano de control) de los routers y switches que reenvían el tráfico (plano de datos).
En segundo lugar, con la separación del plano de control del plano de datos, los switches
se convierten en simples dispositivos de reenvío y el control es implementado por una
unidad centralizada, simplificando así la evolución y configuración de la red.
1
Las tecnologías SDN y DASH tienen el potencial de mejorar considerablemente la
transmisión de video bajo demanda y en vivo sobre la red, y por lo tanto se puede
aumentar la calidad de experiencia percibida por los usuarios finales que suscriben estos
servicios. Sin embargo, la intersección de estas dos áreas es un campo de estudio muy
novedoso sobre el cual se están desarrollando un gran número de investigaciones, y por
lo tanto no se cuenta con tanta información en comparación con técnicas tradicionales.
Para el desarrollo de este Trabajo Fin de Máster se recreó un escenario de red donde
se realiza la transmisión de video en vivo y bajo demanda, tomando ventaja de la
flexibilidad y los beneficios que ofrecen los controladores SDN, y aprovechando las
bondades de la codificación del video de acuerdo al estándar MPEG-DASH. Es
importante resaltar que durante la fase de investigación y desarrollo se tomó como
ejemplo y guía las investigaciones [13] y [14]
1.2 Objetivos
Distribuir contenido multimedia en una topología de red virtualizada,
aprovechando las bondades ofrecidas por DASH, SDN y multicast.
Para alcanzar este objetivo, fue necesario abordar las siguientes tareas:
2
En el capítulo 2 se realiza una reseña sobre el streaming multimedia, se explica cómo
la mayoría de las primeras investigaciones se concentraban en proveer streaming en
tiempo real sobre UDP porque se consideraba que TCP no era apto para estos fines, y
como luego se adopta el uso de HTTP sobre TCP para la transmisión de video, gracias a
las amplias ventajas que ofrece este enfoque.
El capítulo 3 abarca todos los fundamentos conceptuales relacionados con las Redes
Definidas por Software. Específicamente, se cubren los aspectos básicos de las SDN
como lo son las características principales y la terminología básica relacionada con este
paradigma de las redes. También se da una explicación detallada de la arquitectura SDN,
incluyendo cada una de las capas que la conforman y las funciones que cumplen cada
una de ellas.
3
en vivo. Se ahonda en las ideas sobre las que se trabajaron, los pasos que se siguieron,
los problemas que se presentaron y las soluciones que se les dieron a dichos problemas.
4
2 Streaming Multimedia
Al inicio de la década del 2000, los investigadores aceptaron que TCP ofrece
beneficios para la transmisión de video, y por lo tanto se introdujo un buffer de
reproducción en la capa de aplicación para compensar las fluctuaciones de bitrate de
TCP. Utilizar HTTP sobre TCP resulta ser muy conveniente ya que presenta los
siguientes beneficios:
Los clientes usan el protocolo estándar HTTP, lo que provee mayor alcance ya
que este tipo de tráfico puede atravesar tanto NATs como firewalls.
Permite el despliegue de caches para mejorar el desempeño de la red y reducir
su carga.
Un cliente solicita cada trozo de video de manera independiente, y mantiene
el estado de la sesión de reproducción, de modo que los servidores no
necesitan rastrear el estado de dicha sesión. El hecho que se mantenga la
sesión de reproducción en el cliente significa que este puede recuperar trozos
de video desde múltiples servidores con balanceo de carga y tolerancia a fallos
entre servidores HTTP.
5
2.2 Streaming Dinámico Adaptativo sobre HTTP
6
reducción en la capacidad del ancho de banda, mediante el uso de señales de feedback
de los trozos de video recuperados previamente, solicita una calidad de video más baja.
Cuando las capacidades de la red vuelven a aumentar, el reproductor vuelve a solicitar
una mejor calidad. Este procedimiento produce como resultado que el cliente
reproduzca el video sin problemas, sin tener que sobre provisionar la red o mantener un
buffer excesivamente grande.
7
Multicast es apto para aplicaciones que sacan provecho de la agrupación lógica de
hosts, sobre todo si se requiere transmitir grandes cantidades de datos a múltiples
receptores al mismo tiempo. Para este tipo de casos, multicast presenta grandes ventajas
en comparación a unicast en términos de ahorro de recursos de red y carga. Los casos de
usos más comunes son: video conferencias (donde todos los participantes pertenecen al
mismo grupo) y streaming multimedia o IPTV (donde cada grupo multicast representa
un canal de TV) [20].
El 3GPP, una iniciativa que reúne a las principales organizaciones del sector de las
telecomunicaciones, define como distribuir contenido multimedia sobre redes LTE
utilizando DASH. Es importante resaltar que DASH fue originalmente definido para
conexiones unicast bidireccionales. Sin embargo, y con el propósito de gestionar de
manera más eficiente los recursos de la red, el 3GPP propone que para la entrega de
segmentos multimedia a dispositivos móviles se combine DASH con multicast usando
eMBMS. En este caso, se crea una sola representación del contenido multimedia, la cual
es enviada a todos los dispositivos a través de un canal eMBMS. Por lo tanto, no se utiliza
la adaptabilidad de DASH, ya que el receptor no puede escoger entre diferentes
representaciones [9].
Considerando que las transmisiones sobre canales eMBMS son propensas a errores,
el 3GPP propone el uso de AL-FEC y técnicas de recuperación unicast. Los segmentos
multimedia que se transmiten están protegidos con AL-FEC y el cliente utiliza AL-FEC
para recuperar los segmentos que se vean afectados por errores en la transmisión.
Aquellos segmentos que no puedan ser recuperados mediante esta técnica son
recuperados mediante HTTP. Pero como solo existe una representación del contenido,
el cliente DASH solicita la misma representación directamente a un servidor web [9].
Existe una amplia gama de protocolos utilizados con diferentes propósitos para las
comunicaciones en multicast, siendo alguno de ellos:
RTP
Este protocolo está definido como un estándar IETF que permite conectividad en
tiempo real para el intercambio de datos que necesitan prioridad. Su función principal
es mover datos entre dos extremos tan eficientemente como sea posible, de acuerdo a las
condiciones de la red [34].
Baja latencia.
8
Paquetes enumerados secuencialmente y con marcas de tiempo para su
reensamblado en caso de que lleguen desordenados.
No se limita a comunicaciones audiovisuales. Puede ser utilizado para
cualquier tipo de transferencia activa de datos.
FLUTE
Los ficheros que van a ser transportados mediante el protocolo FLUTE deben cumplir
con las siguientes características [33]:
Identificador del fichero, expresado como una URI. Este identificador puede
ser globalmente único. El identificador puede también proveer la ubicación
del archivo.
Nombre del fichero
Tipo de fichero, expresado como un tipo multimedia MIME. Si se suministra
un valor explicito para el tipo de MIME distinto de la extensión del fichero,
entonces el valor explícito suministrado debe ser usado como el tipo MIME.
Tamaño del fichero, expresado en bytes. Si el fichero esta codificado, entonces
el tamaño será el observado antes de la codificación de su contenido.
Propiedades de seguridad del fichero como firmas digitales.
ROUTE
Varios organismos de estandarización, incluyendo el Instituto Europeo de Normas
de Telecomunicaciones (ETSI), Proyecto Asociación de Tercera Generación (3GPP) y el
9
Comité de Sistemas de Televisión Avanzada (ATSC) han trabajado para habilitar la
entrega de contenido DASH vía broadcast. Aunque previamente se utilizaba el protocolo
FLUTE para estos fines, este no fue diseñado para la entrega de contenido en tiempo real
que se requiere en las transmisiones difusivas. Para este propósito, ATSC está utilizando
el protocolo ROUTE, el cual supera los distintos obstáculos que enfrentaba FLUTE en la
entrega de contenido en tiempo real. [25]
10
3 Redes Definidas por Software
Las redes definidas por software son un paradigma de red emergente que ofrece
cambiar las limitaciones de las infraestructuras de red actuales. Este paradigma presenta
cuatro características fundamentales:
11
Figura 6. Vista simplificada de la arquitectura SDN
12
Interface northbound (NI)
El controlador puede ofrecer una API para desarrolladores de aplicaciones. Esta API
representa la interface northbound la cual abstrae conjuntos de instrucciones de bajo
nivel usados por SI para programar los dispositivos de reenvío.
Figura 7. SDN en (a) planos, (b) niveles y (c) arquitectura de diseño del sistema
13
e interoperabilidad de configuración y comunicación entre diferentes dispositivos de los
planos de control y de datos.
En contraste, hasta ahora las redes han sido gestionadas y configuradas usando
conjuntos de instrucciones de bajo nivel específicas para cada dispositivo y sistemas
operativos cerrados y que pertenecen a algún propietario, como Cisco, Juniper, etc.
14
Controladores centralizados, como Floodlight, han sido diseñados para ser sistemas
altamente concurrentes para alcanzar el rendimiento deseado.
Funciones principales: las funciones de servicio base de la red son consideradas como
las funcionalidades esenciales que todo controlador debe proveer. Estos servicios son
usados por servicios de otros niveles del sistema operativo y aplicaciones de usuarios.
De una forma similar, funciones como la topología, estadísticas, notificaciones, gestión
de dispositivos, junto con OSPF y mecanismos de seguridad, son funcionalidades
elementales de control de red que las aplicaciones de red pueden usar para construir su
lógica.
Southbound: en el nivel más bajo de la plataforma de control, las APIs southbound son
vista como una capa de drivers de dispositivos. Estas proveen una interface común para
las capas superiores mientras permiten que la plataforma de control puedan usar
diferentes APIs southbound y protocolos plug-in para gestionar tanto dispositivos
físicos como virtuales, nuevos o existentes. Esto es esencial, por ejemplo, para permitir
múltiples protocolos y conectores de gestión de dispositivos. Por lo tanto, en el plano
de datos, pueden coexistir una mezcla de dispositivos físicos, virtuales y una variedad
de interfaces de dispositivos. Actualmente, la mayoría de los controladores solamente
soportan OpenFlow como API southbound.
East and Westbound: APIs eastbound y westbound, son casos especiales de interfaces
requeridos para controladores distribuidos. Actualmente, cada controlador implementa
sus propias APIs eastbound y westbound. Las funciones de estas interfaces incluyen
importar y exportar datos entre controladores, algoritmos para modelos de consistencia
de datos y capacidades de monitoreo/notificación.
15
Los controladores ofrecen una vasta variedad de interfaces northbound, como ad hoc
APIs, RESTful APIs, interfaces de programación a múltiples niveles, entre otros. Se
espera que una API northbound común emerja a medida que SDN evoluciona.
3.3 OpenFlow
OpenFlow es considerado como uno de los primeros estándares de las redes definidas
por software (SDN). El concepto original de OpenFlow nació en 2008, en la Universidad
de Stanford (Estados Unidos), y definió el protocolo de comunicación en ambientes SDN
que le permite a un controlador SDN interactuar directamente con el plano de datos de
los dispositivos de red como lo son switches y routers, tanto físicos como virtualizados
de modo que permite adaptarse de una manera mucho más óptima a los cambios de
requerimientos del negocio [2]. Desde entonces, y hasta la actualidad OpenFlow ha sido
gestionado por la Open Networing Foundation (ONF). [2]
16
Configuración: prácticamente todos los aspectos del protocolo tienen
configuraciones o valores iniciales.
Modelo de datos: cada switch OpenFlow mantiene un modelo de datos
relacionales que contiene los atributos para cada abstracción OpenFlow. Estos
atributos pueden describir las capacidades de una abstracción, su estado de
configuración o algún conjunto de estadísticas.
El uso de OpenFlow presenta una seria de beneficios, entre los que destacan:
Programabilidad
o Habilita innovación y diferenciación
o Acelera la introducción de nuevos servicios y características
Inteligencia centralizada
o Aprovisionamiento simplificado
17
o Desempeño optimizado
o Políticas de gestión granulares
Abstracción
o Desacople del plano de control y el plano de datos
Puertos: los paquetes entran y salen del switch a través de los puertos. De
acuerdo a la versión del protocolo, se soportan diferentes tipos de puertos,
propiedades y configuraciones.
Clasificadores: compara un paquete con los registros de la tabla de flujos.
Acciones: gobiernan la forma en como el paquete es procesado una vez haya
coincidido con un registro de la tabla de flujos. Entre las acciones básicas que
se pueden ejecutar sobre los flujos se encuentran:
o Reenviar los flujos a través de un puerto determinado.
o Reenvío del flujo de paquetes al controlador. Esto solo se ejecuta
cuando ese flujo no está en la tabla de flujos, por lo tanto el controlador
decide si agregarlo o no
o Descarte de flujo.
Tabla de flujos: es el bloque de construcción básico de la arquitectura del
switch. Este componente se explica en mayor detalle en la próxima sección
18
Flujo: se define como un conjunto de paquetes que comparten las mismas
características.
Tabla de flujos
Cada tabla de flujos contiene entradas que están compuestas por seis campos, los
cuales son [29]:
19
Figura 11. Representación gráfica del ciclo de vida de un paquete.
20
o Flujo eliminado: informar al controlador sobre la eliminación de una
entrada en la tabla de flujos.
o Estado del puerto: informar al controlador sobre un cambio de
puertos.
o Error: notificar al controlador de errores.
Simétricos: estos mensajes son enviados sin ser solicitados por el controlador
o el switch, y son sumamente útiles. Los mensajes que conforman esta clase
son:
o Hello: intercambio entre el switch y el controlador al inicio de la
conexión.
o Echo: los mensajes echo de solicitud y respuesta, pueden ser enviados
tanto desde el switch y como desde el controlador.
o Experimentador: para funciones adicionales.
21
3.5 Controladores SDN
El controlador SDN es el “cerebro” de una red definida por software. En concreto, es
la aplicación que actúa como punto de control estratégico en una SDN, gestiona el flujo
de control hacia los routers/switches a través de la southbound API y gestiona las
aplicaciones y lógica del negocio superiores a través de la northbound API para
desplegar redes inteligentes. [10]
3.5.1 ONOS
Arquitectura
La arquitectura de ONOS fue diseñada basada en los siguientes principios: [4]
Núcleo distribuido
Provee escalabilidad, alta disponibilidad y desempeño. Para garantizar
escalabilidad, ONOS se despliega como un servicio en un clúster de servidores, y el
mismo software se ejecuta en cada servidor. Es precisamente esta característica la forma
en la que se brinda agilidad estilo web al plano de control SDN y a las redes de
proveedores de servicios. Los operadores de red pueden añadir servidores
incrementalmente, sin interrupción alguna. Aplicaciones y dispositivos de red no tienes
que saber si están trabajando en un solo servidor, o en un conjunto de servidores.
22
En lo que a la disponibilidad se refiere, esta se logra gracias al despliegue
simétrico, que es un principio de diseño sumamente importante y es el responsable de
proporcionar recuperaciones rápidas en caso de fallos. Mediante intercambio de
mensajes que siguen el modelo “publish/subscribe” las instancias pueden informar y
ser informadas, de manera muy rápida, sobre el estados de las demás instancias. El
núcleo distribuido también provee servicios de elección de líder.
APIs Northbound:
Incluye dos abstracciones muy poderosas. La primera de ellas, es el Intent
Framework, el cual permite a una aplicación solicitar un determinado servicio de la red
sin tener que saber los detalles de cómo se ejecutara dicho servicio. Esto permite que los
operadores de red y los desarrolladores de aplicaciones puedan programar la red. Este
framework toma todas las solicitudes de todas las aplicaciones, resuelve cuales no
pueden ser acomodadas, resuelve los conflictos entre aplicaciones, aplica las políticas
que correspondan y entrega los servicios solicitados a la aplicación. Por su parte, la vista
global de la red, que es la segunda abstracción, provee una vista de la red (host, switches,
enlaces, etc) a la aplicación, que, a través de APIs, pueda observar esta vista como un
grafo de red, permitiendo así su programación.
APIs Southbound
Permite el funcionamiento de protocolos “enchufables” que controlan tant
dispositivos OpenFlow como Legacy. Las abstracciones Southbound de ONOS
representan cada elemento de la red como un objeto en una forma genérica. A través de
esta abstracción, el núcleo distribuido puede mantener el estado de los elementos de la
red sin tener que saber sus especificaciones. La abstracción de los elementos de la red
también permite la adición de nuevos protocolos y dispositivos.
Modularidad
Se refiere a como el software ha sido estructurado en componentes, y como esos
componentes se relacionan entre sí [3].
Últimas versiones
23
Figura 13. Capas del controlador SDN ONOS [5].
24
Contenedores: el proyecto del motor de orquestación de contenedores incluye
un plug-in para Kubernetes y extensiones Northbound para entornos mixtos
de MV-contenedores.
Armonización: para soportar este enfoque hacia la armonización, los
desarrolladores de ODL han aumentado la eficiencia de los releases a través
de mejoras en la arquitectura y en los procesos. Uno de los primeros pasos fue
la implementación de Karaf 4 en Nitrogen, la versión previa a Oxygen. Con
Oxygen, se empieza una transición hacia un modelo de distribución
gestionada, el cual desacopla proyectos que no tienen impacto sobre el núcleo
del proyecto, permitiendo que estos evolucionen a su propio ritmo.
El controlador ODL está escrito en Java y se basa tecnologías como OSGI (framework
de backend), Karaf y YANG( lenguaje de modelado de datos). Este controlador provee
una serie subsistemas orientados a modelo como la base para aplicaciones Java. Entre
estos subsistemas se encuentran [41]:
25
entre el controlador y los dispositivos de red. Esto ofrece protección a las aplicaciones, a
medida que los protocolos evolucionan en el tiempo.
Para que el controlador pueda controlar los dispositivos bajo su dominio necesita
saber las capacidades, alcanzabilidad y otras características de los dispositivos. Toda esta
información es almacenada y gestionada por el Gestor de Topología. Otros componentes
como el gestor ARP, el rastreador de hosts, gestor de dispositivos y gestor de switches
ayudan a nutrir la base de datos de la topología para el Gestor de Topología.
Por otra parte, el controlador expone una API Northbound abierta que es utilizada
por aplicaciones. ODL soporta el framework OSGi y REST bidireccional. La lógica de
negocio reside en las aplicaciones, que utilizan en controlador para recolectar
inteligencia de la red, ejecutar algoritmos que hacen análisis y para orquestar reglas en
la red.
3.5.2.1.1 RYU
Es un framework SDN, que provee componentes software con APIs bien definidas
para facilitar a desarrolladores la creación de nuevas aplicaciones de gestión y control
de red. RYU soporta diversos protocolos para la gestión de redes, como OpenFlow en
sus versiones 1.0, 1.2, 1.3, 1.4, 1.5, y su código está disponible bajo licencia Apache 2.0
[12].
En Ryu existen distintas definiciones básicas. Las aplicaciones son entidades que
implementan diversas funcionalidades. Estas aplicaciones se envían distintos tipos de
mensajes entre ellas, los cuales son denominados eventos. Cada aplicación tiene una cola
FIFO para recibir eventos, por lo tanto estos son procesados de acuerdo al orden de
llegada. [32]
26
Ejecutables
Ryu-manager: el ejecutable principal.
Componentes básicos
Ryu.base.app_manager: el gestor central de las aplicaciones Ryu. Entre sus
funciones principales están cargar las aplicaciones Ryu, proveer contexto a las
aplicaciones y enrutar mensajes entre dichas aplicaciones.
Controlador OpenFlow
Ryu.controller.controller: es el componente principal del controlador
OpenFlow. Este se encarga de gestionar conexiones entre switches, y generar
y enrutar eventos a las entidades correspondientes.
Ryu.controller.dpset: gestiona los switches.
Ryu.controller.ofp_event: define los eventos OpenFlow.
Ryu.controller.ofp_handler: gestión OpenFlow básica, incluyendo
negociación.
3.5.3 FloodLight
Es un controlador SDN diseñado por Big Switch Networks, que trabaja con el
protocolo OpenFlow para orquestar flujos de tráfico en un entorno SDN. Este
controlador está escrito en Java e incluye REST APIs para permitir a los desarrolladores
adaptar software y desarrollar nuevas aplicaciones.
27
Figura 15. Arquitectura del controlador Floodlight
Para el momento del desarrollo de esta memoria, Floodlight contaba con seis
versiones, siendo la más reciente la versión 1.2. Las versiones antiguas de este
controlador son la 0.85, 0.90, 0.91, 1.0 y 1.1
3.6.1 Caracteristicas
28
Tabla 2. Comparativa de los controladores SDN más populares [1].
ONOS
ONOS cuenta con una amplia gama de aplicaciones northbound que implementan
distintas funcionalidades y protocolos de red. Entre estas se encuentra la aplicación
Multicast Forwarding.
Multicast Forwarding
Este módulo presenta una arquitectura que está compuesta por cuatro
funcionalidades primarias, las cuales son:
29
SinglePointToMultiPointIntent para cada ruta multicast que es utilizada para
renviar estado multicast. También es responsable de liberar y limpiar intents
después de que la aplicación MFWD es desactivada.
Multicast Forwarding: es el encargado de manejar la data multicast en vivo. Para
los paquetes multicast entrantes que no coincidan con una entrada de reenvío
multicast, el modulo creará una entrada de reenvío con un ConnectPoint de
ingreso pero sin uno de egreso. El estado estará listo cuando y si los receptores
indican interés. Cuando data multicast es recibida, y si se tiene una regla que
coincida, y si esa entrada tiene uno o más ConnectPoints de salida, la entrada es
completada con el ConnectPoint de ingreso y es entregado al
MulticastIntentManager, y por lo tanto, crea un SinglePointToMultiPointIntent
que es usado posteriormente para instalar el flujo correspondiente en los
switches relevante. Si un estado de reenvío multicast no existe, el
McastForwarding creará el estado multicast.
MFWD CLI: permite que operadores y aplicaciones externas examinen y
modifiquen el estado mfwd.
Esta aplicación permite realizar tres acciones básicas, las cuales son:
OpenDaylight
El controlador OpenDaylight soporta multicast IPv4, ya que entre todos los
protocolos que emplea se encuentra IGMP. Para realizar multicast se deben realizar una
serie de actividades, entre las que se encuentran:
Reenviar todas las solicitudes IGMP al controlador, de modo que este pueda
saber cuáles son los host que desean unirse al grupo multicast. Para esto se debe
crear un conjunto de reglas en el controlador.
30
Seguidamente, todas las direcciones en el rango multicast deben ser reenviadas
al controlador. De esta manera, el controlador podrá saber cuál es la fuente del
tráfico multicast.
Finalmente, se debe crear un grupo OpenFlow por cada grupo multicast
conocido por el controlador, y añadir los puertos por donde se recibe el tráfico
IGMP.
ODL ofrece diferentes acciones que se pueden ejecutar para gestionar los grupos
OpenFlow en los switches. Estas acciones son agregar, modificar y eliminar grupos.
Adicionalmente, es posible chequear el estado de un grupo bien sea directamente en el
switch o en el controlador a través de RESTCONF y buscar estadística de los grupos a
en el controlador mediante el uso de RESTCONF [42].
Figura 16. Estructura del comando para la creación de grupo multicast en ONOS.
RYU
RYU cuenta con librerías que implementan las distintas versiones del protocolo
IGMP. Una instancia de librería ryu.lib.packet.igmp.igmp_v3 tiene, por lo menos, los
siguientes atributos [36]:
Esta librería cuenta con dos métodos, cada uno con funciones específicas:
31
Parser(buf)
Este método se usa cuando se va a decodificar un paquete. Decodifica la cabecera de
un protocolo con compensación cero en un bytearray y devulve los siguientes objetos:
Serializable(payload, prev)
Este método solamente se utiliza cuando se quiere codificar un paquete, y su
funcionamiento consiste en codificar la cabecera del protocolo y devolver un bytearray
que contiene dicha cabecera. Payload es el resto del paquete, el cual seguirá
inmediatamente a la cabecera, mientras que prev es una subclase
packet_base.PacketBase para la cabecera del protocolo externo.
Floodlight
Floodlight maneja multicast por defecto desde el plano de control, sin embargo, su
rendimiento no es óptimo para el streaming de video. Para este fin, es necesario utilizar
un módulo Java que cree árboles de reenvío para enviar los streams al destino deseado.
32
4 Diseño y construcción del escenario
En esta sección se describen las herramientas utilizadas durante el diseño y la
construcción del escenario de red sobre el cual se realizó este proyecto, los componentes
más importantes de la topología diseñada y las pruebas realizadas para validar su
correcto funcionamiento.
33
4.1.2 Servidor Web Apache
El servidor HTTP Apache es un desarrollo de software colaborativo que apunta a
crear una implementación robusta, funcional, de grado comercial y completamente
disponible de un código fuente de un servidor HTTP. Este proyecto es parte de la Apache
Software Foundation [15].
4.1.3 Iperf
Es una herramienta diseñada para realizar mediciones activas del ancho de banda
máximo alcanzable en redes IP. Soporta el ajuste de diversos parámetros relacionados
con timing, buffers y protocolos. En cada test realizado se reporta el ancho de banda
alcanzado, pérdida de paquetes y otras estadísticas [16].
OpenFlow Base
Provee el conjunto básico de dispositivos y flujos de paquetes que se basan en el
protocolo OpenFlow para interactuar con dispositivos de red.
OpenFlow
Aplicación de ONOS que provee el conjunto básico de proveedores OpenFlow junto
con proveedores de ubicación de hosts ARP/NDP y proveedores de enlaces LLDP.
Forwarding
Aplicación perteneciente a la categoría de gobierno de tráfico, responsable de proveer
tráfico entre hosts utilizando programación de flujos salto a salto mediante la
intercepción de paquetes para los que no hay un flujo objetivo que concuerde en el plano
de datos. Para que la aplicación Multicast Forwarding pueda funcionar correctamente, es
necesario que esta aplicación también sea implementada.
4.1.5 Karaf
Karaf es un contenedor polimórfico, ligero y poderoso que pertenece al proyecto
Apache. Puede ser utilizado como un contenedor stand alone y soporta un amplio rango
de tecnologías, como cloud, imágenes dockers, etc. Karaf puede ser escalado desde un
contenedor muy ligero hasta un servicio empresarial complejo. Entre sus características
se encuentran [18]:
34
la carpeta etc. Cualquier cambio en el archivo de configuración es detectado y
recargado.
Instancias: múltiples instancias de Karaf pueden ser gestionadas directamente
desde una instancia principal.
Remoto: contiene un servidor SSHd que le permite al usuario acceder a la consola
de manera remota. La capa de gestión también se puede acceder de esta manera.
4.1.6 GPAC
Es una implementación de los sistemas MPEG-4 que provee las siguientes
características [22]:
4.1.7 FFMPEG
Es un framework multimedia, capaz de decodificar, codificar, transcodificar,
multiplexar, desmultiplexar, filtrar y reproducir una amplia variedad de formatos
multimedia. FFMPEG contiene las librerías libavcodec, libavutil, libavformat, libavfilter,
libavdevice, libswscale y libswresample. [23]
4.1.8 Dash.js
Es una iniciativa del foro industrial DASH para establecer un framework de calidad
de producción para la construcción de reproductores de video y audio que reproduzcan
contenido MPEG-DASH usando librerías JavaScript del lado del cliente y aprovechando
las ventajas que ofrecen las librerías de la API Media Source Extensions definidas por
W3C. Todo el código de este proyecto está publicado bajo licencia BSD-3. [24]
4.1.9 UFTP
UFTP es un programa que se encarga de transferir ficheros en multicast encriptado,
y fue diseñado para enviar archivos simultáneamente a múltiples receptores de manera
segura, eficiente y confiable. El funcionamiento de este software se puede resumir en
tres fases, las cuales son [44]:
35
Seguidamente el servidor enviara mensajes de confirmación si el encriptado
está deshabilitado, o las claves de encriptado si esta es habilitada.
Fase de transferencia de ficheros: comienza con la fase de información del
fichero a ser enviado, donde el servidor envía un mensaje describiendo dicho
fichero. Esta descripción incluye el nombre del fichero, el tamaño y la forma
en cómo se va a dividir en bloques. Una vez finalizada esta fase, comienza la
fase de transferencia de datos, donde cada bloque de datos es enviado por el
servidor. Considerando que UDP no garantiza que los bloques de datos
lleguen en orden, cada uno de estos está enumerado para que el cliente pueda
reemzamblarlos. Cuando el servidor envía todos los bloques, envía un
mensaje al cliente indicando esto.
Fase de culminación/confirmación: cierra la sesión entre cliente y servidor.
Comienza con un mensaje enviado por el servidor donde se indica el final de
la sesión. El cliente responde a este mensaje y el servidor finalmente lo
confirma.
4.1.10 CORS
Es un mecanismo que utiliza encabezados HTTP adicionales para permitir que un
cliente, en un domino distinto, pueda acceder a determinados recursos de un servidor
[45]. Para el desarrollo de este proyecto fue necesario utilizar un plug-in de CORS para
Google Chrome ya que, por razones de seguridad, los exploradores restringen las
peticiones HTTP de origen cruzado iniciadas dentro de un script.
36
Figura 17. Escenario de red
Una vez que se construye el escenario y se inicia el servicio ONOS, se debe ingresar a
la consola del controlador y crear la ruta multicast tal como se muestra en la figura 19.
37
De la información contenida en la imagen 19 es necesario explicar cada uno de los
parámetros necesarios para la creación de la ruta multicast. Primeramente hay que
indicar la dirección IPv4 de la fuente, que en este caso es la 192.168.0.10 correspondiente
al “Servidor Web”. De la fuente, también es necesario indicar el switch y el puerto al cual
se conecta el servidor, el cual es el puerto número tres del “switch2”
(of:000000000102/3).
El último parámetro que se debe definir son los sumideros, es decir, los host que se
van a subscribir al grupo multicast para recibir la información que va a ser transmitida.
Para ello es necesario indicar únicamente el switch y el puerto al que se conecta cada
host. Para los efectos de este proyecto, y debido a limitaciones técnicas, solamente se
añadieron dos hosts al grupo multicast, los cuales son las máquinas virtuales
denominadas “Proxy-A”, la cual se conecta a través del puerto tres del “switch1”
(of:000000000101/3), y “Proxy-B”, que se conecta al puerto tres del
“switch0”(of:000000000100/3).
38
almacenamiento de los ficheros de video, con sus respectivos permisos, e inicia el
servicio Apache. Este script se ejecuta a través de la secuencia “config-Apache”.
4.2.3 Proxy
En la composición del escenario, las máquinas “Proxy-A” y “Proxy-B” son elementos
importantes para alcanzar los objetivos planteados durante el desarrollo de este
proyecto. Su función principal es recibir las peticiones del “Host” y entregarle el
contenido solicitado, si lo tuviese en caché. Para ello, a estas máquinas virtuales LXC de
arquitectura x86_64 se les crea la secuencia “config-Squid” donde se ejecuta un script
que crea los directorios necesarios con los permisos correspondientes, compila, instala y
configura el software que se utiliza en este proyecto y finalmente inicia todos los
servicios indispensables para llevar a cabo sus funciones. El código empleado para la
construcción de estos elementos se puede observar en las figura 22(a) y 22(b).
39
Figura 22(b). Creación de la máquina virtual “Proxy-B”.
Cada una de estas máquinas virtuales cuenta con dos interfaces de red. El “Proxy-A”
se conecta “switch1” a través de la interfaz “eth1”, mientras que por “eth2” se conecta al
puente “bridge-A”. Por su parte, el “Proxy-B” se conecta al “switch0” y a la red de
gestión “netmgt” a través de las interfaces “eth1” y “eth2”, respectivamente.
4.2.4 Host
El host es un ordenador portátil que cuenta con las siguientes características:
RAM: 8Gb
Procesador: 4 núcleos
Memoria de video: 128Mb
HDD: 500Gb
40
4.2.5 Switches virtuales
El escenario cuenta con tres switches virtuales de tipo openvswitch conectados en
malla. Cada uno de los switches cuenta con el protocolo OpenFlow versión 1.3 y todos
están conectados al controlador SDN a través del puerto TCP 6633. Adicionalmente, se
debe especificar el nombre del switch, el modo de fallo, la dirección MAC y los
parámetros de conexión. En la figura 24 se puede observar el código empleado para la
creación de los switches virtuales y el valor que se le asigna a cada uno de los parámetros
mencionados.
41
En primer lugar se validó el correcto funcionamiento del servicio ONOS, y que todas
las aplicaciones necesarias estuvieran instaladas y en estado activo (Figura 25).
En segundo lugar se validó que los elementos de la red se pudieran comunicar entre
sí. Para ello se realizaron pings unicast entre cada componente de la topología y se
observó que en cada caso se obtuvo una respuesta satisfactoria. Luego, se validó el
funcionamiento de la aplicación MFWD de ONOS, mediante el uso de la herramienta
iperf. Esta prueba consistió en un “ping multicast” enviado por el “Servidor Web” y
recibido tanto por el “Proxy-A” como por el “Proxy-B”. Al igual que en la primera
prueba la respuesta fue satisfactoria y se comprobó que el envío y recepción de paquetes
en multicast se realiza correctamente. Los detalles de esta prueba se pueden observar en
las imágenes 26, 27 y 28.
Figura 26. Envío de “ping multicast” desde el “Servidor Web”, usando iperf.
42
Figura 28. Recepción del “ping multicast” en el “Proxy-B”, usando iperf.
43
5 Experimentación
Para realizar todas las pruebas requeridas durante el desarrollo de este Trabajo Fin
de Máster se utilizó el video “Big Buck Bunny”, el cual es un corto animado desarrollado
por el Instituto Blender mediante el uso de herramientas de software libre. [27]
Por su parte, para generar los segmentos de video y para crear el fichero .MPD se
utilizó la herramienta MP4Box, también descrita en el capítulo 4. Cada segmento se creó
con una duración de 2 segundos. En la figura 29 se puede observar la estructura del
archivo .MPD generado.
45
Una vez agotados todos los recursos con el ATSC_ROUTE, y no haber obtenido un
resultado satisfactorio, se optó por utilizar el código del proyecto MAD_FLUTE [43]. Este
proyecto fue desarrollado en la Universidad de Tampere, Finlandia, y consiste en la
implementación del protocolo FLUTE, el cual se describe en detalle en el capítulo 2. Al
igual que en el caso anterior, también se encontraron una serie de problemas con este
software. Todos los inconvenientes que se presentaron están relacionados con el hecho
de que este código tiene más de diez años sin ser actualizados (la última actualización
que se observa en su web data del mes de marzo del año 2007), y el sistema operativo
sobre el que se está trabajando es un Ubuntu 18.04, el cual, para el momento del
desarrollo de este trabajo, era la última versión publicada por Linux. En consecuencia
muchas de las librerías que este software necesita ya no se encuentran disponibles.
46
Por su parte, para recibir los ficheros es necesario que cada cliente interesado esté
previamente unido al grupo multicast, para luego ejecutar el comando con las opciones
correspondientes. En general este comando tiene la siguiente forma:
uftpd –D directorio_donde_se_almacenaran_los_ficheros
Una vez que fueron estudiadas las bases teóricas descritas en [9], se procedió a
analizar en profundidad la lógica del código JavaScript del cliente DASH. A groso modo,
lo primero que hace este código es leer el fichero .MPD que se generó previamente, el
cual se explica en la sección 5.1. Para poder leer dicho archivo, se añade al fichero
sources.json del cliente DASH la URL donde se encuentra el fichero .MPD. Seguidamente,
se crea una solicitud HTTP que se compone de la dirección IP de la máquina a la cual se
le va a hacer la solicitud (en este caso, el “Servidor Web”) y el nombre del fichero que se
va a solicitar junto con su ubicación. Luego, se obtienen las métricas DASH y se inicia la
reproducción del segmento de video recuperado. Si un segmento de video no se
consigue, el cliente vuelve a solicitarlo. En total, se realiza un máximo de cinco intentos
para recuperar un determinado fichero. Si realizado el último intento no se ha podido
recuperar el segmento deseado, el cliente detiene la reproducción del video y muestra
un mensaje de error, como el que se muestra en la imagen 33.
Figura 33. Ejemplo de error mostrado por el cliente DASH cuando no consigue un fichero
47
determinado segmento de video y este le responde con un error 404 not found, el cliente
modifica la petición original para ejecutarla directamente contra el “Servidor Web”. En
otras palabras, se modifica la IP a donde se va a lanzar la petición HTTP pero se mantiene
el segmento de video a solicitar. El fragmento de código modificado del cliente DASH
se muestra en la imagen 34.
Figura 34. Código modificado en el cliente DASH para recuperar los segmentos de video desde el
“Servidor Web”.
Como se puede observar en la imagen 34, se trabaja sobre la función onload del fichero
HTTPLoader.js del cliente DASH, y lo que se hace es añadir el bloque de código else if
(httpRequest.response.status == 404). Dicho en otras palabras, si el estado de la respuesta
que envía el “Proxy” al cliente es igual a 404, se entra en este nuevo trozo de código y se
procede a modificar la petición HTTP original. Un ejemplo del formato de la petición
original es el siguiente:
http://192.168.10.10/video/segments/dash_videBBBrep4_2M_1.m4s
48
Tabla 5. Contenido de las variables del nuevo fragmento de código javascript del cliente DASH.
Variable Contenido
new_serviceLocation http://192.168.0.10/video/segments/
original_url http://192.168.10.10/video/segments/dash_videBBBrep4_2M_1.m4s
fields http:, , 192.168.10.10, video, segments, dash_videBBBrep4_2M_1.m4s
video_segment dash_videBBBrep4_2M_1.m4s
new_url http://192.168.0.10/video/segments/dash_videBBBrep4_2M_1.m4s
uftpd –D /var/www/html/video/segments
49
fuera recuperado del “Proxy” y no del “Servidor web”. Es decir, el cliente DASH vuelve
a su funcionamiento normal.
Sin embargo, surgieron algunos inconvenientes que impidieron desarrollar esta idea
de la manera que fue originalmente concebida. El primer problema encontrado está
relacionado con la actualización o modificación del grupo multicast. Si los clientes se
unen al grupo multicast en diferentes momentos, este se tendría que modificar (en el
controlador de la red) en “caliente” cada vez que un cliente desee unirse a la transmisión,
o separarse del grupo multicast. Sin embargo, de acuerdo a la documentación del sitio
oficial de ONOS [46], para el momento del desarrollo de este proyecto el módulo
multicast forwarding está siendo desarrollado en fases, y por lo tanto, aún presenta una
funcionalidad bastante básica. Por lo tanto, no se encontró una manera de hacerlo. Para
solucionar esta situación, se resolvió por añadir previamente todos los clientes al grupo
multicast, de la siguiente manera:
Por último, y por las razones argumentadas en el párrafo anterior, no se encontró una
manera para que el controlador de la red pueda determinar de manera automática el
número de clientes que se encuentran asociados a un grupo multicast para proceder a
cambiar las transmisiones unicast por multicast. Para subsanar esta situación, se ideó
que el Host, mediante el mecanismo de recuperación de segmentos de video en unicast,
recuperase los ficheros desde el “Servidor Web”, y que en un momento aleatorio, se
iniciase la transmisión en multicast de los segmentos de video. Por lo tanto, el Host ya
no consumiría estos ficheros desde el servidor, sino que lo haría desde su Proxy.
50
Web”. Cabe destacar que en la figura 39 se muestra en detalle el funcionamiento del
protocolo utilizado por el software UFTP, el cual es explicado en detalle en el capítulo 4
Figura 35. Captura del tráfico en la interfaz eth1 del “Proxy-B” al iniciar la transmisión multicast.
51
Por su parte, en la imagen 37 se aprecia la recepción de ficheros en el cliente “Proxy-
B”, el cual está habilitado para recibir ficheros.
52
Figura 38. Transmisión de ficheros de video en multicast.
Figura 39. Consumo del ancho de banda con múltipes comunicaciones en unicast simútaneas.
53
Figura 40. Consumo del ancho de banda durante la transmisión de ficheros en multicast.
54
6 Conclusiones
Durante la fase de investigación de este Trabajo Fin de Máster, se analizó
exhaustivamente la tecnología que actualmente es la más utilizada para la transmisión
de contenido multimedia en internet: DASH. Este análisis abarcó distintos aspectos,
como su arquitectura, la manera jerárquica en la que estructura el contenido y los
beneficios que presenta, siendo esta última la razón principal por la cual está técnica es
ampliamente utilizada por gigantes tecnológicos dedicados al streaming de video como
YouTube o Netflix. Toda esta información permitió asentar bases teóricas indispensables
para desarrollar las siguientes fases de este proyecto y comprender la realidad de este
sector.
Dentro del área SDN, se indagó sobre el estado del arte de algunos de los
controladores más populares del momento: Open Networking Operating System
(ONOS), Open Daylight, RYU y Floodlight. De cada uno de ellos se estudiaron sus
principales características, arquitectura, últimas versiones, y sobre todo, las
posibilidades que ofrecen cada uno de ellos para envíos en multicast.
55
de desarrolladores y un módulo robusto que soporta multicast, que si bien sigue en
pleno desarrollo, fue lo suficientemente sólido para ejecutar todas las actividades
previstas. Resulta necesario destacar que el hecho de contar con conocimientos previos
relacionados con ONOS, producto de prácticas de laboratorios impartidas durante este
Máster, también fue un factor influyente durante la selección del controlador.
Con el módulo Multicast Forwarding instalado, se creó una ruta o grupo multicast
a través de la consola de ONOS. En dicho grupo, se indicó la dirección IP de la fuente
(en este caso el “Servidor Web”), la dirección IP multicast a la cual van a suscribirse los
clientes, y el identificador del switch y el puerto al que están conectados cada uno de los
interesados en unirse al grupo multicast. Habiendo realizado esto, y con el usó de la
herramienta iperf, se comprobó que había comunicación multicast en la topología
virtualizada.
56
acción el mecanismo de recuperación de segmentos de video en unicast, el cual funcionó
de manera satisfactoria.
Al finalizar este trabajo, se pudo constatar que a pesar de las limitaciones inherentes
a los recursos utilizados, es posible aprovechar las bondades ofrecidas tanto por SDN
como por DASH para distribuir contenido multimedia desde un servidor a diversos
clientes, tanto en la modalidad on demand, como en vivo, de manera que se puedan
aprovechar de manera óptima los recursos de la red mediante el envío en multicast de
los ficheros de video.
Una mejora que permitiría obtener mejores resultados sería instalar un escenarío con
elementos físicos, especialmente si se considera que el objetivo fundamental de esta
investigación era la exploración de la intersección de las tecnologías DASH, SDN y
multicast en la distribución de contenido multimedia, y que por esta misma razón se
trabajó en una topología de red virtualizada.
57
7 Bibliografía
[3] “Introducing ONOS – a SDN network operating system for Service Providers”,
http://onosproject.org/wp-content/uploads/2014/11/Whitepaper-ONOS-
final.pdf, [Online], 2014.
58
[13] I. Domínguez Martínez-Casanueva, “Distribución multicast de vídeo en diecto
sobre la red móvil LTE”, 2015.
[20] A. Menabo, “Evaluating SDN and SDN-based Multicast for Network Intensive
Services in UNINETT”, 2015.
59
[27] “Big Buck Bunny”, https://peach.blender.org/, [Online].
[36] “IGMP”,
https://ryu.readthedocs.io/en/latest/library_packet_ref/packet_igmp.html?h
ighlight=multicast, [Online].
60
[39] “Multicas SDN application using Floodlight project repository”,
https://github.com/daniel666/multicastSDN, [Online], 2014.
61
8 Anexos
Analizando las trazas se pudo observar que las librerías flutelib, flute y multisflute,
que conforman este módulo, estaban causando problemas. Durante la compilación de la
primera, como se aprecia en la imagen 42 se arrojaron una serie de errores relacionados
con un conjunto de variables no declaradas y tipos de datos desconocidos en el archivo
flute.c, el cual se encuentra en este directorio.
62
Figura 42. Errores durante la compilación de la librería flutelib.
Las otras dos librerías que presentaron problemas durante la compilación, arrojaron
exactamente el mismo error (figura 43). Este error está relacionado con la ausencia de
dos ficheros específicos: lflutelib y lexpat
63
sed -e 's|PATH="\(.*\)"|PATH="/usr/local/ssl/bin:\1"|g' -i /etc/environment
source /etc/environment
echo "Checking configuration is succesful"
which openssl
echo "--------------------------------------------------------------------"
echo "Compiling and installing UFTP"
cd /usr/local/src/uftp-4.9.8
sudo make clean
sudo make
sudo make install
#!/bin/bash
COUNTER=1
PATH=/var/www/html/video/segments/
FOURTH_BASE=dash_videBBBrep4_2M_
MPD=videoBBB.mpd
INIT=videoBBB_init.mp4
/usr/bin/uftp -M 230.4.4.1 -P 230.4.4.1 $PATH$MPD $PATH$INIT
while [ $COUNTER -lt 325 ]; do
if [ $COUNTER -ne $(($RANDOM%324)) ];
then
/usr/bin/uftp -M 230.4.4.1 -P 230.4.4.1 -R 4000
$PATH$FOURTH_BASE$COUNTER.m4s
/usr/lib/klibc/bin/sleep 1.5
else
echo No se envia el fichero $PATH$FOURTH_BASE$COUNTER.m4s
fi
let COUNTER=COUNTER+1
done
Como se puede observar, al inicio del script hay una condición que permite que se
realice el envío de ficheros siempre que la variable COUNTER sea menor a 325. Esto se
debe a que la duración del video es de aproximadamente de 10 minutos con 40 segundos.
Si se considera que cada segmento tiene una duración de 2 segundos obtenemos un total
de 324 segmentos. Seguidamente, se agrega otra condición la cual permite que se realice
el envío de los ficheros de video cuyo identificador sea diferente a un número aleatorio
entre 1 y 324. Esto se hace con el propósito de forzar que no se envíe algún fichero, y así
simular la pérdida de segmentos multimedia, garantizando así que en algún momento
64
de la reproducción del video, entre en acción el mecanismo de recuperación de
segmentos.
65