Trabajo Fin De Grado Grado Ingeniería De Las Tecnologías De Telecomunicación
Total Page:16
File Type:pdf, Size:1020Kb
Trabajo Fin de Grado Grado Ingeniería de las Tecnologías de Telecomunicación Evaluación de calidad de la API WebRTC Autor: Alejandro Alhama Riego Tutor: Rafael Estepa Alonso Equation Chapter 1 Section 1 Dep. de Ingeniería Telemática Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2017 i Proyecto Fin de Grado Grado Ingeniería de las Tecnologías de Telecomunicación Evaluación de calidad de la API WebRTC Autor: Alejandro Alhama Riego Tutor: Rafael Estepa Alonso Profesor titular Dep. de Ingeniería Telemática Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2017 iii Trabajo Fin de Grado: Evaluación de calidad de la API WebRTC Autor: Alejandro Alhama Riego Tutor: Rafael Estepa Alonso El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes miembros: Presidente: Vocales: Secretario: Acuerdan otorgarle la calificación de: Sevilla, 2017 El Secretario del Tribunal v A mi familia A mis amigos vii Agradecimientos A mi familia, por apoyarme durante tanto tiempo y animarme con cada pequeña victoria que iba consiguiendo, asi como en los peores momentos de desaliento, enseñándome que por muchos problemas que se presenten, la perserverancia y la voluntad conseguirán llevar a cabo cualquier proyecto. Pero por encima de todo, por su amor incondicional. A mis amigos, con los que he compartido todos estos últimos años, sufriendo con cada examen y disfrutando de cada reunión improvisada en el piso que tanta gente ha acogido. Especialmente a mis compañeros de piso, a los cuales podía recurrir tanto para quejarme de todo como para divertirme, y también muy especialmente a mi querida amiga y compañera, que siempre ha estado conmigo animándome a seguir y brindándome todo su cariño. A mis maestros, por todos estos años de formación durante los cuales han conseguido transmitirme la pasión por el conocimiento, que espero no perder nunca. Gracias especialmente al departamento de telemática, tanto como por las lecciones impartidas como por la oportunidad de disponer de un laboratorio donde llevar a cabo las pruebas. Gracias dentro de este departamento a mi tutor, por toda su dedicación y por las facilidades que me ha proporcionado durante la realización de este proyecto. Alejandro Alhama Riego Sevilla, 2017 ix Resumen En los últimos años, las comunicaciones se han transformando de forma vertiginosa, portando cada vez más al entorno web, debido a esta tendencia, se considera necesario el estudio de las nuevas tecnologías que se nos ofrecen, prestando especial atención a la calidad de servicio. Siempre han existido gran cantidad de programas en nuestros ordenadores destinados a la comunicación entre los usuarios, tanto gratuitos como de pago, muchos de estos programas han decidido ofrecer sus servicios también en nuestro navegador web, ofreciéndonos en el mismo un entorno cada vez más unificado. La obtención de los medios y la señalización para realizar dichas comunicaciones por parte de los programas siempre ha conllevado un problema extra para los desarrolladores en el entorno web, pero, la tecnología WebRTC nos permite solventar dichos problemas con facilidad. El objetivo de este documento es el estudio de la tecnología WebRTC y la realización de pruebas que nos permitan, de forma objetiva, evaluar la calidad de servicio que nos ofrece. xi Abstract In recent years, our communication has greatly evolved, leading to the web environment, due to this trend, it is necessary to study these recent technologies, paying special attention to its quality of service. A lot of different programs have always existed for user communication, commercial or free, many of them have chosen to also deliver their services to our browsers, giving us a unified environment. Media devices and signaling have been a struggle for developers in web environment, but WebRTC allows us to easily solve those problems. The purpose of this paper is the development of a study in WebRTC’s technology and to test objectively its quality of service. xiii Índice Agradecimientos ix Resumen xi Abstract xiii Índice xiv Índice de Tablas xvi Índice de Figuras xviii 1 Introducción y objetivos 1 1.1 Introducción 1 1.2 Objetivos 3 2 WebRTC 5 2.1 ¿Que es WebRTC? 5 2.1.1 Historia 5 2.1.2 Actualidad 7 2.2 Casos de uso y alternativas. 8 2.2.1 Casos de uso 9 2.2.2 Alternativas al uso de WebRTC 15 2.3 WebRTC 19 2.3.1 Explicaciones previas 19 2.3.2 Descripción y funcionamiento 25 3 Implementación del escenario WebRTC 35 3.1 Requisitos y escenario 35 3.1.1 Requisitos 35 3.1.2 Escenario 41 3.2 Alternativas de implementación 41 3.2.1 Manera de utilizar la tecnología WebRTC 42 3.2.2 Servidor web que utilizar 43 3.2.3 Forma de señalización que implementar 44 3.2.4 Alimentación de audio a la aplicación 45 3.3 Implementación propuesta 46 4 Pruebas y resultados 49 4.1 Batería de pruebas 49 4.1.1 Códecs 49 4.1.2 Medidas de QoS 50 4.1.3 Audios utilizados 53 4.2 Obtención de resultados 53 4.2.1 Software de automatización 54 4.2.2 Preparación de audios y ejecución de análisis. 55 4.3 Estadísticas obtenidas 56 4.3.1 P.563 56 4.3.2 P.862 57 5 Conclusiones y líneas de avance 61 5.1 Conclusiones 61 5.2 Líneas de avance 62 Referencias 65 ANEXO A: CONFIGURACIÓN Y USO DEL ENTORNO 71 Glosario 79 xv ÍNDICE DE TABLAS Tabla 2–1. Ventajas e Inconvenientes de WebRTC 25 Tabla 2–2. Websocket Vs DataChannel 31 Tabla 3–1. RQF-00 Mostrar página de inicio y bienvenida 35 Tabla 3–2. RQF-01 Registrar usuario 36 Tabla 3–3. RQF-02 Redirigir al usuario a la sala de llamada 36 Tabla 3–4. RQF-03 Establecer un socket de conexión 36 Tabla 3–5. RQF-04 Realizar llamada 37 Tabla 3–6. RQF-05 Autoaceptación llamada 37 Tabla 3–7. RQF-06 Selección de códec 37 Tabla 3–8. RQF-07 Finalizar la llamada 38 Tabla 3–9. RQF-08 Carga de audios 38 Tabla 3–10. RQNF-00 Interfaz de usuario simple e intuitiva 39 Tabla 3–11. RQNF-01 Interfaz de usuario responsiva 39 Tabla 3–12. RQNF-02 Ejecución correcta de la aplicación en varios navegadores 39 Tabla 3–13. RQNF-03Múltiples sesiones concurrentes 40 Tabla 3–14. RQNF-04 Seguridad en las comunicaciones 40 Tabla 3–15. RQNF-05 Pruebas de software 40 Tabla 3–16. Opciones de señalización para WebRTC [78] 44 Tabla 4–1. Escala MOS para calidad de audio 50 Tabla 4–2. Resultados para cada audio 59 xvii ÍNDICE DE FIGURAS Figura 1-1. Cliente-Servidor HTTP. 1 Figura 1-2. RTC en el navegador. 2 Figura 2.1 Primera Implementación por parte de Ericsson 6 Figura 2.2 Crecimiento en el uso por sectores [11] 7 Figura 2.3 Twilio 9 Figura 2.4 Regroup Therapy 10 Figura 2.5 BananaBread 11 Figura 2.6 WebRTC Snake 12 Figura 2.7 XirSys 13 Figura 2.8 Solaborate 14 Figura 2.9 Seguimiento de cabezas Skype 16 Figura 2.10 Códecs soportados por Flash Player 17 Figura 2.11 Pila de protocolos de WebRTC para datos y señalización 19 Figura 2.12 Arquitectura WebRTC 21 Figura 2.13 Escenario real en Internet con STUN y TURN 23 Figura 2.14 Paquetes RTP y SRTP 24 Figura 2.15 Arquitectura de WebRTC 26 Figura 2.16 Interacciones del objeto MediaStream 28 Figura 2.17 Interacciones del objeto RTCPeerConnection 29 Figura 2.18 Envío de audio y video mediante SRTP sobre UDP 30 Figura 2.19 Realización de llamada WebRTC 32 Figura 2.20 Recepción de llamada WebRTC 33 Figura 2.21 Cierre de llamada WebRTC 33 Figura 2.22 Llamada completa WebRTC 34 Figura 3.1 Escenario real a simular 41 Figura 3.2 Talky.io 42 Figura 3.3 Cuota de mercado de diferentes servidores web 43 Figura 3.4 Estructura con cables de audio virtuales 45 Figura 3.5 Escenario de laboratorio planteado 47 Figura 4.1 Diferencias entre métodos de análisis 52 Figura 4.2 Primera conversación mostrada con Audacity 53 Figura 4.3 Pseudocódigo de automatización 54 Figura 4.4 Ejemplo de notas obtenidas con P.563 para un audio 56 Figura 4.5 Notas obtenidas con P.862 y códec OPUS 57 Figura 4.6 Notas obtenidas con P.862 y códec PCMA 58 Figura A.1 Configuración IP señalización 71 Figura A.2 Inicio del Servidor 71 Figura A.3 Página registro 72 Figura A.4 Página de llamada 72 Figura A.5 Codecs disponibles 73 Figura A.6 Codecs soportados 73 Figura A.7 Instalacion Python 3 74 Figura A.8 Instalacion Selenium 74 Figura A.9 Cables virtuales 75 Figura A.10 Pseudocódigo de automatización 76 Figura A.11 Cambio IP scripts 77 Figura A.11 Cambio IP scripts 77 xix 1 INTRODUCCIÓN Y OBJETIVOS Through our memories, future generations will see that we can overcome any fear! -Zidane Tribal - 1.1 Introducción as comunicaciones en tiempo real o Real Time Communication (RTC) se han convertido en uno de los mayores retos para la web, las RTC deberían ser tan sencillas y comunes como la introducción de texto L en aplicaciones web [1]. Sin ellas, estamos limitados en nuestra capacidad de crear nuevas formas de interacción. Hasta ahora las RTC han sido complejas y por lo general, corporativas, necesitando de tecnologías de audio y video licenciadas o desarrolladas personalmente. Además, la integración en servicios existentes ha sido difícil, especialmente en la web. Aun con estas dificultades, muchos servicios web utilizan RTC en la actualidad, pero, necesitan descargas, aplicaciones nativas o plugins para su correcto funcionamiento, como podría ser el caso de Skype, estas necesidades, además, tienden a ser problemáticas y molestas, son difíciles de desplegar, probar y mantener.