scieee AI-readable full text Open interactive document viewer

Diseño de una plataforma de agentes para control de servicios de vídeo streaming móvil

Gualotuña Álvarez, Tatiana Marisol

Abstract

Programa de doctorado: Tecnología de la Información y sus aplicaciones. La fecha de publicación es la fecha de lectura

Full text

Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 2                              Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 3 Agradecimientos  Agradezcoamipadrecelestialporsufortalezaenestecaminollenodeaprendizajes, por su infinito amor y bendiciones. Un gracias desde lo profundodemialmaami preciosohijoSebastián,miregalodivino,quienhasidomiinspiraciónyalegría,quienha sabidosoportarmisausenciasymehaenseñadoconsugranternuraaservalientey lucharcontodoelcorazónparalograrlavictoria. También,agradezcoamifamiliaporsugranamor,porsiempreestaramiladoy compartirmisrisasyllantos,porsermialientoencadadesánimoylaalegríaencada conquista. A mis amigos, por estar presentes en cada etapa de mividayporsu motivacióndiariaparavolverasoñar. Contodomicorazón,unsentidograciasaElsayÁlvaro,porsupacienciayapoyo alevantarmedemiscaídasyseguirperseverandoenestehermosoanhelo. NopuedoolvidarteatiDiego,amigoyhermano,compañerodeestatravesía, dondemutuamentearrimamosnuestroshombroshastalograrllegaralaorilla.   Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 4   Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 5 Resumen Laevolucióndelascomunicacionesinalámbricasyeldesarrollodelosteléfonosmóviles inteligenteshaninfluidoenunacrecientedemandadeaplicacionesparamóviles,en especial video streaming. Los canales inalámbricos se ven afectados por el comportamientoimpredecibledelaRed,quepuedegenerarquiebresdecomunicación, queafectanlatransmisióndelvideostreaming.Sedefineunmodelobásicobasadoen proxies que permite controlar una interrupción del video y posibilita al cliente la continuidaddelvideodesdelaposiciónenlaqueseencontrabaunavezserestablezca elcanaldecomunicación. Para su funcionamiento en entornos Web, se propone el incremento de funcionalidad a este modelo básico a través de agentes ontológicosqueevalúanel estadodelosrecursosdeldispositivomóvilyelusodepatronessoftwaredediseñopara establecerunaposibleinterrupciónysolicitarlaejecucióndeestrategiasquepermitan alclientecontinuarvisualizandoelvideodesdeelpuntodequiebre.Estenuevomodelo secaracterizaporserinteroperableymultiplataforma. Enbasealaexperienciaobtenida,seplanteóuninteracciónalmodelo Web interoperabledesarrollado,conmirasaevaluarelestadodesensoresparadomótica controladosypermitireldesplieguedelvideostreamingentiemporealeneldispositivo móvil,estosehalogradomanteniendoelmodelobásicopropuestoyreemplazandola orientación de los patrones software de diseño anteriormente seleccionados, cumpliéndoseelobjetivodelcontroldeinterrupciónycontinuidaddelserviciodevideo streaming. Se han logrado desarrollar las propuestas en base a un diseño iterativo del modelobásicoelcualsemantieneconstante,peroensusincrementos se añaden patronessoftwareycomportamientos,estonosuponeuncostoadicionaleneltiempo deejecución,másbiensehalogradoreducirelimpactonegativodeunainterrupcióny mejorarlaexperienciadeusuarioenlosserviciosdevideostreaming.  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 6 Palabrasclave Videostreaming,comunicacióninalámbrica,dispositivosmóviles,agentesinteligentes, ontología,serviciosWeb,interrupción,recuperación,videostreamingentiemporeal, sensores,ambientesdomóticos.   Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 7 Abstract Theevolutionofwirelesscommunicationsandthedevelopmentofsmartphoneshave influenced a growing demand of mobile applications, especially video streaming. Wirelesschannelsarebeingaffectedbytheunpredictablebehaviorofnetwork,which cangeneratecommunicationbreakdownsthataffectthevideostreamingtransmission. Amodelbasedonproxiesisdefinedsoitcontrolsavideointerruptionandallowsthe costumerthecontinuityvideofromthepositionwherehewasonce that the communicationchannelisrestored. Foroperationinwebenvironments,isproposedthefunctionalityintendstothis basicmodelthroughontologicalagentsthatevaluatethestatusofmobileresourcesand theuseofsoftwaredesignpatternstoestablishapossibleinterruptionandrequest strategiesexecutionthatallowthecostumertocontinueviewingthevideofromthe breaking point. This new model is characterized for being interoperable and multi‐ platform. Based on the experience gained, an interaction with the web interoperable modeldevelopedwasraised,inordertoevaluatethesensorsstateforcontrolledhome automationandallowthevideostreamingdeploymentinthemobiledeviceinrealtime, thiswasachievedmaintainingthebasicmodelproposedandreplacingtheorientation ofsoftwaredesignpatternspreviouslyselected,accomplishingthegoalofinterruption controlandcontinuityserviceofvideostreaming. Ithasdevelopedproposalsbasedonaninteractivedesignofthebasicmodel whichisconstant,butinitincreasessoftwarepatternsandbehaviorshavebeenadded, thisisnotanadditionalcostintheexecutiontime,ratherithasmanagedtoreducethe negativeimpactofaninterruptionandimprovetheuserexperienceinvideostreaming service.   Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 8 Keywords Videostreaming,wirelesscommunication,mobiledevices,smartagents,ontology,Web services,interruption,recovery,videostreaminginrealtime,sensors,homeautomation environments.   Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 15 Índicedetablas Tabla2.1Análisisdelosestándaresdelanorma802.11...................................41 Tabla2.2EvolucióndelosdispositivosinalámbricosiPhone.............................43 Tabla2.3Tiposdesensores................................................................................45 Tabla2.4ProtocolosdeComunicación..............................................................55 Tabla2.5SistemasMAS......................................................................................70 Tabla2.6ComponentesMVC.............................................................................80 Tabla2.7Casodeusosolicitarvideo..................................................................90 Tabla2.8Casodeusoenviarvideo....................................................................90 Tabla3.1Casodeusoreproducirvideo...........................................................114 Tabla3.2Casodeusosolicitarrevisiónalmacenamiento................................115 Tabla3.3Casodeusoevaluarestadocanaldecomunicación.........................115 Tabla3.4Casodeusomantenercontinuidaddelvideo..................................116 Tabla3.5Casodeusogestionarinterrupcióndelservicio...............................116 Tabla3.6Casodeusogestionarreconexión....................................................117 Tabla4.1Casodeusoreproducirvideo...........................................................142 Tabla4.2Casodeusosolicitarrevisiónalmacenamiento................................143 Tabla4.3Evaluarestadoderecursosdeldispositivo.......................................143 Tabla4.4Casodeusomantenercontinuidaddelvideo..................................144 Tabla4.5Casodeusogestionarinterrupcióndelservicio...............................144 Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 16 Tabla4.6Casodeusogestionarreconexión....................................................145 Tabla4.7Casodeusorealizarmonitoreoestadoderecursos.........................146 Tabla4.8Casodeusorealizaranálisisontológicodelosrecursos..................147 Tabla4.9Casodeusoanálisisontológicobatería............................................147 Tabla4.10Casodeusoanálisisontológicolatencia.........................................148 Tabla4.11Casodeusorealizaranálisisontológicogeolocalización................148 Tabla4.12Casodeusotransformaraserviciosweb.......................................149 Tabla4.13DescripcióndelaontologíaWiFiOntology......................................167 Tabla4.14IntegracióndeagentesinteligentescomoserviciosWeb..............169 Tabla4.15PruebasrealesArquitecturaICASWA.............................................175 Tabla4.16RangossinICASWA.........................................................................176 Tabla4.17RangosconICASWA........................................................................176 Tabla4.18Pruebassimuladas..........................................................................177 Tabla5.1Casodeusoevaluarestadodesensores..........................................183 Tabla5.2Casodeusoreproducirvideo...........................................................183 Tabla5.3Casodeusosolicitarrevisiónalmacenamiento................................184 Tabla5.4Casodeusoevaluarestadocanaldecomunicación.........................184 Tabla5.5Casodeusomantenercontinuidaddelvideo..................................185 Tabla5.6Casodeusogestionarinterrupcióndelservicio...............................185 Tabla5.7Casodeusogestionarreconexión....................................................186 Tabla5.8Realizarmonitoreoestadoderecursos............................................187  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 17 Tabla5.9Casodeusorealizaranálisisontológicodelossensores..................187 Tabla5.10Casodeusoanálisisontológicotemperatura.................................188 Tabla5.11Casodeusoanálisisontológicoluminosidad.................................188 Tabla5.12Casodeusorealizaranálisisontológicomovimiento.....................189 Tabla5.13CasodeusotransformaraserviciosWeb.......................................189    Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 18    Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 19 ÍndicedeFiguras Figura2.1Evolucióndeltráficodedispositivosinalámbricos............................40 Figura2.2Númerodeusuariosmóvilesenelmundo........................................40 Figura2.3EvolucióndelestándarIEEE802.11...................................................41 Figura2.4Serviciodevideostreaming...............................................................49 Figura2.5Arquitecturabásicadelserviciodevideostreaming.........................51 Figura2.6Protocolosutilizadosenvideostreaming..........................................54 Figura2.7ArquitecturaJADE..............................................................................73 Figura2.8PatrónComposite..............................................................................80 Figura2.9PatrónStrategy..................................................................................81 Figura2.10PatrónObserver...............................................................................82 Figura2.11PatrónProxy....................................................................................83 Figura2.12PatrónAdapter................................................................................83 Figura2.13ComponentesdeWSIG....................................................................88 Figura2.14Casodeusodeesquemabásico......................................................89 Figura2.15Esquemabásicobasadoenpatronessoftware...............................91 Figura2.16Diagramadeclasesdelesquemabásico.........................................92 Figura2.17Diagramadesecuenciadelesquemabásico...................................93 Figura2.18Diagramadesecuenciadelesquemabásico...................................94 Figura2.19Análisispeorescenario....................................................................97 Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 20 Figura2.20Análisismejorescenario..................................................................98 Figura2.21Flujosretransmitidos.....................................................................101 Figura2.22Totaldeflujosretransmitidos........................................................101 Figura2.23Análisisderetransmisióndeflujos................................................102 Figura2.24Efectosdelaretransmisión...........................................................102 Figura2.25Experimentaciónmejorescenario.................................................103 Figura2.26Totalderetransmisiónmejorescenario........................................103 Figura2.27Resumenderetransmisionesmejorescenario.............................103 Figura2.28Efectosdelaretransmisiónmejorescenario................................104 Figura2.29Experimentaciónpeorescenario...................................................105 Figura2.30Totalretransmisiónenelpeorescenario......................................105 Figura2.31Resumenderetransmisionespeorescenario...............................105 Figura2.32Efectosdelaretransmisiónpeorescenario..................................106 Figura2.33Experimentaciónmejorescenario.................................................107 Figura2.34Experimentaciónpeorescenario...................................................107 Figura2.35Análisistiempodeejecución.........................................................107 Figura2.36Análisisdeinterrupciones..............................................................107 Figura2.37Tiemposexperimentaciónreal......................................................108 Figura2.38Tiemposaplicaciónmodelodetiempo.........................................109 Figura2.39Relaciónentretiemposdetransmisiónydeinterrupción...........109 Figura3.1Diagramadecasosdeuso...............................................................113  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 21 Figura3.2Modelobasadoenpatrones............................................................118 Figura3.3Diagramadeclases..........................................................................120 Figura3.4Diagramadesecuencia....................................................................121 Figura3.5Diagramadedespliegue..................................................................122 Figura3.6Experimentaciónmejorescenario...................................................125 Figura3.7Experimentaciónpeorescenario.....................................................125 Figura3.8Análisistiempodeejecución...........................................................126 Figura3.9DiagramadeclasesiPhone..............................................................128 Figura3.10Diagramadesecuencia..................................................................129 Figura3.11Diagramadedespliegue................................................................130 Figura3.12ModeloJADEiPhone......................................................................133 Figura3.13FuncionalidaddeJADEiPhone.......................................................135 Figura3.14Análisisdejitter.............................................................................136 Figura3.15Análisisdelretardo........................................................................136 Figura4.1CasodeUsosolucióninteroperable................................................142 Figura4.2Explosióndeldiagramadelcasodeuso..........................................146 Figura4.3ModeloWebinteroperable.............................................................150 Figura4.4Diagramadeclases..........................................................................153 Figura4.5Diagramadesecuencia....................................................................155 Figura4.6Diagramadedespliegue..................................................................156 Figura4.7Experimentacióntiempodeejecución............................................158 Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 22 Figura4.8Análisistiempodeejecuciónporescenario....................................158 Figura4.9Análisistiempodeinterrupciónporescenario................................159 Figura4.10Comparativausodememoria.......................................................160 Figura4.11Diagramadeclases........................................................................162 Figura4.12Diagramadesecuencia..................................................................163 Figura4.13Diagramadedespliegue................................................................164 Figura4.14PlataformadeserviciosWebyagentesinteligentes.....................166 Figura4.15EsquemadelaOntología...............................................................168 Figura4.16CreaciónagenteWSIG...................................................................169 Figura4.17ConsolaWSIG.................................................................................170 Figura4.18TesterWSIG...................................................................................170 Figura4.19Tiemposenexperimentaciónenvivo............................................171 Figura4.20Obtencióndeinformaciónenvivo................................................172 Figura4.21Datosresultantesdelapruebasimulada......................................172 Figura4.22Comparativatiempodeejecución.................................................173 Figura4.23Datospromediospruebacon3interrupciones.............................174 Figura4.24Tiempoejecucióncon3interrupciones........................................174 Figura4.25PruebasrealesconlaarquitecturaICASWA..................................175 Figura4.26PruebassimuladasdelaarquitecturaICASWA.............................177 Figura5.1Diagramadecasodeuso.................................................................182 Figura5.2Explosióndelcasodeusoevaluarestadodesensores...................186  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 23 Figura5.3Modelovideostreamingentiemporealbasadoensensores........190 Figura5.4Diagramadeclases..........................................................................194 Figura5.5Diagramadesecuencia...................................................................195 Figura5.6Diagramadedespliegue..................................................................197 Figura5.7Mejorescenario...............................................................................199 Figura5.8Peorescenario.................................................................................199 Figura5.9Análisisdeescenarios......................................................................199 Figura5.10Análisisdeinterrupcionesporescenario......................................200 Figura5.11Modelodeclases...........................................................................203 Figura5.12Diagramadesecuencia..................................................................204 Figura5.13Diagramadedespliegue................................................................205 Figura5.14ArquitecturaICARTS......................................................................207 Figura5.15FuncionalidaddeRpiCam.............................................................209 Figura5.16Escenarioexperimental.................................................................210 Figura5.17Ambientedomóticopartedelantera.............................................212 Figura5.18Ambientedomóticointeriores......................................................212 Figura5.19Ambientedomóticosensores........................................................212 Figura5.20Experimentaciónreal.....................................................................213 Figura5.21Análisisdeltiempodeejecuciónydeinterrupción......................213 Figura5.22Usodememoriadevideos............................................................214 Figura5.23Promediosusodememoria...........................................................214 Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 24 Figura5.24Usodememoriapromedio............................................................215 Figura5.25Pruebasenvivodevideostreamingentiemporeal.....................216 Figura5.26Análisisdeltiempodeejecuciónydeinterrupción......................216   Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 31 paralaejecucióndeestasnuevasfuncionalidadessesolapanconeltiempo de visualización del video, también es necesario indicar que al ocurrir interrupcionesenlatransmisióndelvideostreaming,elcontrolproactivo querealizaestasoluciónapoyaenlareduccióndeltiempodeejecucióndel video,deformasimilarqueloconsiguióelaplicativoJADE‐iPhone.Nuestro interés es aplicar la metodología incremental e iterativa, por lo que se mantuvo el modelo básico MVC y se adicionaron nuevas funcionalidades basados en el uso de otros patrones software. Para la implementación experimentaldelmodelopropuesto,sehautilizadounadd‐ondeJADEque es Web Services Integration Gateway(WSIG) [10] para lograr la transformacióndeagentesaserviciosWebyserconsumidosenelentorno Web,elagentecreadorealizaelanálisisontológicodelestadodelosrecursos deldispositivoinalámbricocomosonbatería,latenciaygeolocalizaciónpara establecer la posibilidad de una interrupción, permitiendo almacenar proactivamentelaposicióndelvideo,informaciónmuyútilunavezquese supereelproblemadecomunicación.  Paraevaluarlaefectividaddelmecanismodecontroldedesconexionesen serviciosdevideostreamingentiemporeal,seestablecióunasoluciónque analizadelestadodelossensoresenelambientecontrolado(movimiento, temperaturayluminosidad)medianteagentesinteroperablesquedefinen alertadeseguridadyactivanlacámaracuyacapturaesdesplegadaenel dispositivomóvilentiemporeal,estapropuestamantienelacontinuidaddel video en caso de que existan interrupciones, mediante un bucle de reconexiónencargadoderestablecerautomáticamenteelservicio.Mientras durelainterrupciónelvideoesalojadoenunalmacenamientotemporal, para posibilitar su visualización cuando el cliente lo requiera. Con la experimentación práctica se ha demostrado que es factible mantener el modelo básico e incrementar o reemplazar nuevas funcionalidades, sin afectareltiempodeejecucióndelvideostreamingquesoporte interrupciones, proveyendo de buenos niveles de QoE al proporcionar al usuario continuidad del servicio en tiempo real con reconexiones automáticasencasodeinterrupcionesyposibilidadderevisarendiferidolos Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 32 videos almacenados de lo que ocurrió durante la interrupción dada. Los sensoresconstantementemonitoreanelambientecontrolado,encasode intrusos definen una alerta que activara la cámara generando video streamingentiemporealasertransmitidoaldispositivomóvil. Estamos interesadosenimplantarelmecanismodecontroldeinterrupcionesenel videostreamingentiemporealconelobjetivodeconsolidarlavalidezdel modelobásicopropuestoydefinirquelaarquitecturaestablecidaadicional puedeserimplementadaconcualquierotrorecursoobservable.  Encuantoapublicacionesinternacionales,estetrabajohadadolugaralapublicación:   T. Gualotuña, D. Marcillo, E. M. López, and A. Suárez‐Sarmiento, Mobile VideoServiceDisruptionsControlinAndroidUsingJADE”inAdvancesin Computing and Communications, Springer, 2011, pp. 481–490,dondese expone una arquitectura basado en proxies y agentes inteligentes para dispositivosinalámbricosAndroid,queseencargaderesolverlainterrupción enambientesinalámbricosyreanudarautomáticamentelasesióndevideo streaming sin pérdida de la información al aplicar la técnica de almacenamientointermedio. Encuantoaponenciasinternacionales,estetrabajohadadolugaralaponencia:  G. Raura, T. Gualotuña, J. Báez, M. Ñauñay, Renderización de imágenes panorámicasdealtaresoluciónendispositivosmóvilesmedianteelusode agentesdesoftware,5toCongresoInternacionaldeTecnologias,Contenidos Multimedia y Realidad Virtual, 2011, La Habana, Cuba. Propone un mecanismodecontroldeinterrupcionesenenlacesinalámbricosnoseguros, quepermitalarenderizacióneficientedefotografíaspanorámicasdealta resoluciónalrecuperarlasesiónautomáticamente.     Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 33 EnrelaciónaladefiniciónyejecucióndeproyectosdeinvestigacióncomoDirectorde proyectosehadadolugara:   La Web semántica orientada a la generación de aplicaciones para discapacitados,quepromueveeldesarrollodeaplicacionesespecializadas en contenidos para discapacitados utilizando los principios de la Web semántica a través del uso de ontologías, agentes de software y herramientas.  Diseñodeunaplataformadeagentesparacontroldeinterrupcionespara servicios de video streaming en dispositivos móviles, que permitió el desarrollodesoftwareenAndroid para recuperar la sesión de streaming frenteaunainterrupciónygaranticelarecepcióncompletadelvideo. Enrelaciónaladefiniciónypropuestasdeproyectosdeinvestigaciónaejecutarseseha dadolugara:  ExtraccióndeconocimientodeuninvernaderomedianteelusodeWireless SensorNetwork(WSN)ytratamientodeflujosdedatosutilizandotécnicas adaptables a cambios del entorno, que busca desarrolla un sistema que permita capturar la información de la humedad relativa, temperatura y suelospormediodesensoresenuninvernadero,loscualesserían procesadosyanalizadospormediodelamineríadedatosconlafinalidadde establecerpatronesqueapoyenenlatomadedecisiones.  En cuanto a trabajo dentro del grupo de investigación en Modelos de Procesos de SoftwaredelaESPEsehacolaboradoconelproyecto:   Laboratorio industrial en Ingeniería de Software Empírica, que busca mejorarlacomprensióndelprocesodedesarrollodesoftwareenlaindustria paraloqueserealizaronexperimentoscontroladosyestudiosempíricosque permitenbrindarconocimientossobreelcomportamientodelastecnologías desoftwareendiferentesentornos. Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 34 1.5. Estructuradelamemoria Enlaprestacióndelserviciodevideostreamingmóvilenambientesinalámbricoses necesarioproporcionaralusuariodeunabuenaexperiencia,paraellosehadesarrollado variaspropuestasquebuscanmitigarelimpactodeunainterrupción.Eltrabajoqueha sidorealizadosepresentaenlosseiscapítulosdeestamemoria. Enelcapítulo2seestablecelosavancesdelasredesinalámbricasasícomola evolucióndelosdispositivosinalámbricos,loquehainfluidoenelapogeodeservicios multimediacomoesvideostreaming.Peseaestedesarrollosedefinenproblemasque presenta la creciente demanda de los servicios y los problemas que enfrentan la comunicaciónaltenerquesolventarmayorcapacidadyvelocidadenlatransmisión, estoconfluyeenlageneracióndesolucionesquepermitanaminorarlosimpactosdelas desconexionesenelclientealutilizarserviciodevideostreaming. Enelcapítulo3seexponeadetallelaimplementacióndelmecanismo que controlainterrupciones,deformapuntual,seexplicalageneracióndelsoftwareJADE‐ iPhone que implementa la solución básica propuesta, el cual se basa en agentes inteligentesparacontrolarunainterrupcióncuandosetransmiteunvideoaldispositivo móviliOSypermitelacontinuidaddelvideounavezquesereanudalacomunicación inalámbrica. Enelcapítulo4seestableceunasoluciónwebinteroperable,quebuscalograr queelserviciodevideostreamingproporcionadoacualquierdispositivomóvil,pueda enfrentarelcomportamiento caótico dela transmisióninalámbrica alcontrolar una interrupciónmediantesupredicciónontológica,proporcionarlareconexiónautomática y el despliegue del video desde el punto en el que se encontraba al ocurrir la interrupción. Enelcapítulo5seplanteaunasoluciónqueapoyaenlacapturayanálisisdela información proporcionada por sensores de luz, temperatura y movimiento, para establecer de forma ontológica una alerta en ambientes domóticos controlados, al suscitarse eventos inusuales el cliente mediante dispositivos inalámbricos puede observarelvideoentiemporealdeloqueestásucediendoenellugarcontrolado,en  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 35 casodeocurrirunainterrupciónseejecutaunbucledereconexiónquesolicitaelenlace automáticoconlacámaraunavezresueltoelproblemadelainterrupción. Enelcapítulo6sepresentanlasconclusionesylíneasdetrabajofuturo.                          Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 36         Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 37        2. Problemáticadevideostreamingen dispositivosinalámbricos Enestecapítulosepresentaeldesarrollodelasredesinalámbricasenespecialredes WiFi;laevolucióndelosdispositivosinalámbricosconénfasislosdeúltimageneración; lacrecientedemandadeservicios multimedia y el apogeo de los serviciosdevideo streaming. Se establece también la problemática que enfrenta esta evolución tecnológicacomo eslasaturacióndeloscanalesinalámbricosysucomportamiento impredecible. Se definen las dificultades que ocasionan las interrupciones en la prestacióndelserviciodevideostreamingylosretospropuestosconmirasaplantear mecanismosquepermitanreducirelimpactodeunainterrupciónenelcliente.  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 38  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 39 2.1. Tecnologíasderedesydispositivosinalámbricos La tecnología inalámbrica es un sistema de comunicación que ha experimentado crecientepopularidadalnoexigircableadoensuimplementaciónyposibilitaralusuario movilidadentiemporealloqueapoyaasuproductividadyproporcionaoportunidades deservicioimposiblesdelograrconlasredescableadas.Estanuevainfraestructurade comunicaciónpresentaventajascomo:movilidad,flexibilidad,escalabilidad,velocidad, simplicidadycostosreducidosdeinstalación. Elavancedelasredesinalámbricashapermitidoeldesarrollode muchos serviciosyaplicacionescomo:mensajesmultimedia,VozsobreInternetProtocol(VoIP), telefoníaIP...Laconvergenciadelasaplicacionesinalámbricasconlossistemasmóviles influyenenlaevolucióndelanchodebandamóvilinalámbrico,soncadavezmayoresla demandadeaplicacionesmultimediaaserejecutadasenlosteléfonos móviles inteligentes. En[11]sedeterminaqueelvolumendetráficogeneradoenredescontecnología WiFialcanzóun49%deltráficototaldeInternetenel2012,mientrasqueenel2017se prevésuincrementoal56%.Enrelaciónalasredesmóviles,en[12]seestablecequeel tráficodeestetipoderedessupondríaun12%deltráficototaldeInternetparael2017, avizorandosucrecimiento3vecesmásrápidoqueeltráficodelasredesfijas.Conlo expuesto,pareceevidentequelospróximosañossedaráuncrecimientodelasredes inalámbricasyaseantecnologíasWiFioredesmóvilesyundecrecimientodelusode redes cableadas. En resumen para el año 2017 el tráfico de las redes móviles en combinaciónconlasredesWiFialcanzaráuntotaldel68%deltráficototaldelared. EnlaFigura2.1(adaptadade[13])puederevisarselaestimaciónparael2019,el 54%deltráficogeneradopordispositivosinalámbricosserealizarápormediode conexionesWiFiyun46%loharíaatravésdelasredesmóviles. Se presenta la Figura 2.2 (adaptada de [14]) en la que se observa el amplio crecimiento que experimentarían las tecnologías inalámbricas para el 2020, considerandoelvolumendetráficoenInternetyelnúmerodeusuariosqueutilizarían dispositivosinalámbricos. Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 40  Figura2.1Evolucióndeltráficodedispositivosinalámbricos   Figura2.2Númerodeusuariosmóvilesenelmundo  Elcrecimientoexplosivodelosteléfonosinteligentes(smart)yotrosdispositivos inalámbricoshacreadountsunamiinalámbricoyaquelacaracterísticamásimportante deestosequiposeselaccesoaInternet.Aunquehaymúltiplestecnologíasdisponibles paraelaccesoaInternet,latecnologíaWiFi,eslafunciónutilizadapordefectoenla mayoríadelosdispositivosinalámbricos.Actualmente,sepresentaunaltoincremento de dispositivos clientes que demandan anchos de banda para ejecutar aplicaciones comovideostreamingmóvil.Esconstantelacrecientenecesidaddeoptimizacióndel rendimientoyusodelsistemaWiFi;parasatisfacerestasdemandasesteestándarha estadoenconstanteevoluciónparalograrunmayorrendimientodedatosyeficiencia espectral.  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 47 mostrarlosdatosenunaventanaterminal.LaplataformaArduinosecomunicaconel IDEmedianteunprogramacargador,precargadoenelmicrocontrolador. Con Arduino se puede tomar información del entorno a través de sensores conectadosasusentradasanalógicasydigitales,puedecontrolarluces,motoresyotros actuadoresdirectamenteoapartirdelasseñalesdecontrolgeneradasensussalidas, ofrecealgunasventajascomo:  Las placas Arduino son relativamente baratas comparadas con otras plataformasmicrocontroladoras.  ElsoftwareArduinoseejecutaensistemasoperativosWindows,Macintosh yLinux.  Elentornodeprogramaciónessimpleyclaro,fácildeusar.  ElsoftwareArduinoestápublicadocomoherramientasdecódigoabierto,el lenguajepuedeserexpandidomediantelibreríasC++.  ElArduinoestábasadoenmicrocontroladores,losplanosparalosmódulos estánpublicadosbajolalicenciaCreativeCommons. RaspberryPiesuncomputadordebajocosteysutamañoesde8,5x5,3cm,susistema dearranqueesunatarjetadememoriaSecureData(SD)ysucapacidadpuedevariar segúnlasaplicacionesqueselequieradar.Laalimentaciónserealizamedianteuna conexiónmicroUSB.Enlaplacaseencuentrasalidadevideoyaudioatravésdeun conector High Definition Multimedia Interface (HDMI),permitiendolaconexióna televisores,monitores.IncluyeconectoresdeexpansiónGeneralPurposeInput/Output (GPIO)quepuedenserutilizadosparalacomunicaciónconotrosdispositivos,como módulosespecíficosdeexpansión,einclusoescompatibleconArduino. ExistendosmodelosdeRaspberryPi,elmodeloAyB,quecompartenunaserie de características, como el chip, el procesador gráfico, las entradas/salidas y la capacidadparareproducirvídeo.ElmodeloBtieneeldobledememoria,512MBpor 256delA,tienedosUSB,porunodelmodeloAyconectorparacabledered.Dispone deunprocesadora700Mhz.ypuedeacelerargráficos3Dporhardware,esdecir,se Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 48 podíacompararconlosordenadoresquesalieronalmercadoenel2003,conlagran diferenciadetamaño,pesoyconunconsumo80vecesmenor. RaspberryPies40vecesmásrápidoqueunArduinocuandosetratadevelocidad dereloj.Además,Pitiene128,000vecesmásmemoriaRAM. 2.2. Videostreaminginalámbrico Los avances en comunicación inalámbrica proporcionan al usuarioelaccesoa informaciónentiemporealcomonoticias,alertasmédicas,mensajesdeadvertenciade desastresnaturales,publicadosporusuariosuorganizacionesencualquierpartedel mundo;puedeninteractuarconotraspersonasenelciberespacioatravésderedes sociales;buscarinformaciónpublicitariadeinteréspara determinarlaubicación de: restaurantes, hoteles... [36] [37] [38]. Con el rápido desarrollo de las tecnologías inalámbricasylapopularidaddelosclientesmóvilesinteligentes,videostreamingseha convertidoenunadelasmáspopularesaplicacionesdurantelosúltimosaños. Streamingesunatécnicaqueconsisteenlafragmentaciónycompresióndel video,secaracterizaporserunflujocontinuo de datos, los cuales sereproduceny descargansimultáneamente,sinlanecesidaddealmacenartodalainformaciónenla memoriadelcliente.Lavelocidadalaqueseconsumenlosdatosseajustaalavelocidad detransmisión;esteacoplamientoselogragraciasalbufferreceptor,elcualpermitela compensacióndeposiblesvariacionesquepuedendarseenlatransmisión,sielbuffer sevacíaelservicioseinterrumpe. La técnica de video streaming permite que los objetos multimedia se reproduzcan y descarguen simultáneamente desde el Internet sin la necesidad de almacenartodalainformaciónenlamemoriadelcliente.Laventajadeestatécnicaes quenorequierequeelvídeosealmaceneenelteléfonomóvildejandoespaciopara albergarmemoriaauxiliaryprogramasparatratarelvídeodemaneraeficiente.Porotro lado,graciasaquenoseconsumeesacantidaddememoria,sepueden desplegar programaseficientesypoderososenlosterminalesmóviles.  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 49 Elprocesodevideostreamingseiniciadesdeelcliente,conectándoseconel servidor que comienza a mandar el archivo. Para el envío se utiliza un Compresor‐ Descompresor(CODEC)quecomprimeelarchivoqueviajasobreunprotocololigero.En elclienteseconstituyeunbufferquealmacenalainformaciónquevallegando.Unavez queelbuffercontieneunapartedelarchivocomienzalareproduccióndelmismo,al mismotiempoquecontinúaconladescarga[39]. Cabedestacarlaimportanciadelasincronizaciónenestetipodesistemas,ya quelosprogramasnoreproduciránelarchivo.Sihayvariaciónderetrasoenlaconexión, sepodríareproducirelcontenidodelbuffer,segúnelprotocolo.Sisesufrendemasiados retrasos,elbuffersevacíaylaejecucióndelarchivotambiénsecortaría[40][41]. DeacuerdoalaFigura2.4,latransmisióndevideostreamingexigelapresencia dedoscanalesdiferenciados:porunladoelflujodecontrolutilizadoparagestionarel establecimiento de la comunicación y por otro lado el flujo para envió de datos multimediaqueseconstituyeelcanaldetransportedelosframes. Parainiciarlatransmisióndeloscontenidosmultimediaatravésdelaredde datos, la información debe segmentarse en frames de tamaño adecuado. El cliente recibelosframesyprocedeaalmacenarlesenunbuffer,cuandoestesellenacomienza lareproducción,mientrastantoelbuffercontinuarecibiendonuevosframes.   Figura2.4Serviciodevideostreaming Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 50 Estebufferdelclientesecaracterizaporaminorarlosefectosdevariacionesen lascondicionesdelared,alproducirseundescensoenelanchodebanda,elcliente puedecontinuarconlareproduccióndelospaquetesalojadosenelbuffer,encasode que los problemas de comunicación persistan, el buffer llegara avaciarseyla reproducciónsedetendrá. Lostiposdeserviciodevideostreamingson:  Bajodemanda:elvideoesalmacenadoenunservidordevideostreaming,el cual está en capacidad de atender las peticiones de visualización del contenido, entregándolo mediante flujos para ser visualizado enel reproductordelcliente,elusuariotienelaposibilidaddecontrolarelflujo paradetenersuejecución,realizarunretroceso,unapausaopasaraotra escena.  En tiempo real: servicio de transmisión en tiempo real, orientado a la multidifusión,sininteractividad.Losusuariosaccedenaunúnicoflujode informaciónenelinstantetemporalenelqueseencuentrelaemisión. La arquitectura básica en la que se basan los servicios de video streaming es la arquitectura cliente servidor. DeacuerdoalaFigura2.5sepuede observar los componentesquesonexplicadosacontinuación:  Sistemadeproducción:seencargadecapturarloscontenidosenvivoatravés decámarasomicrófonosparatransmitirlosenelformatoadecuado al servidor.Estesistemaestáconformadoporelementostantodehardwarey software que tienen la funcionalidad de comprimir los contenidos multimediaydarlesunformatoadecuado,conlafinalidaddequeresulten aptosparasu transmisiónatravésdelos protocolosdetransporte.Enla transformacióndeloscontenidosoriginalesparticipanlosCODECdeaudio y/ovideoasícomolastasasdecodificación.  Sistemadealmacenamiento:seencargadealmacenarloscontenidos,para quepuedansersolicitadosporlos clientes. Estecomponenteesutilizado paravideobajodemanda.  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 51  Servidor: se encarga de recibir y procesar peticiones de los clientes; establecerlasesiónmedianteelintercambiodeunaseriedeparámetrosy procesarelenvíodeloscontenidosmultimedia.  Reproductor:seubicaenelclienteyseencargadelainteracciónconel servidor, realiza actividades como: establecer conexiones, procesar los framesyreconstruirelflujodedatosrecibido.  Proxy:esunproxymultimediaqueseencargademantenerlacomunicación conelclientedurantelareproduccióndelvideo,mantieneelestadodela sesióneinteractúaconelusuario. Enlatelefoníamóvil,videostreamingestásometidoalcomportamientodeloscanales, existiendoproblemasexternoscomointerferenciasqueprovocandesconexionesenla transmisiónquemuchasvecessonmolestasparaelusuarioyhacenquelatécnicade videostreamingpierdaefectividad. Esporestoquepararecibirlosdatosdevideostreamingsedebeteneruna aplicacióndedicadallamadoreproductoromediaplayer,quedebeofrecerlassiguientes características:   Figura2.5Arquitecturabásicadelserviciodevideostreaming  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 52  Elreproductordebesercapazdedescomprimirlosdatosdeaudioyvideoa medidaquevayanllegando.  Debesercapazdeeliminareljitterantesdeenviarlospaquetes.  Correccióndeerroresparapoderevitarlapérdidadepaquetes. El tráfico de video streaming a través del Internet ha ido creciendo a un ritmo exponencialdebidoalaabundantedisponibilidaddecontenidodevideoenelInternet y la amplia disponibilidad de los dispositivos inalámbricos con altas capacidades de visualizaciónenelusuario.Estedesarrollohainfluidoenelsurgimientodeaplicaciones devideostreamingcomoInternet Protocol Television (IPTV), video conferencia, educación en línea..., las cuales imponen requisitos de ancho de banda, demora y latencia[42][43]. Enuncanalinalámbrico,elmayorinconvenienteeselanchodebandautilizado, enestascondicionesesimportantequeelvideostreamingpermitalafragmentacióndel contenido del video, es recomendable que cada frame generado tenga diferente resolución y poder satisfacer eficientemente las características específicas de cada cliente[44].Eldesarrollodigitalproponeavancesenlacomprensiónycomunicaciónde videoquepuedensermostradosmediante elusodedispositivos inalámbricospero debido a su limitación de recursos especialmente de memoria, se necesita utilizar técnicasquepermitanlavisualizacióndelvideodeformaeficiente.Latécnicadevideo streamingcumpleunrolimportanteenlaconstantebúsquedadecalidadyrapidezde transmisión. Videostreaminghaexperimentadouncrecimientoexponencial,generándose muchos esfuerzos de investigación en relación a la codificaciónytransmisióndela informaciónmultimedia,conlafinalidaddelograrvideostreamingeficiente,robusto, escalableydebajalatencia[45].Lasaplicacionesdevideorequierengrananchode banda,lacalidaddelvideodebemantenerseenunaredinalámbrica, la naturaleza impredecible del medio de transmisión tiene un efecto perjudicial en la calidad del video.Paracumplirconesteobjetivoesnecesariounaaltaeficacia y eficiencia de compresiónquepuedelograrseutilizandoCODECquepresenten:unbajoconsumode  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 53 energía,bajacomplejidaddecodificaciónydecodificaciónybajalatencia[46][47][48] [49][50]. Sehadadounaumentodelademandadeaplicacionesmultimediadebidoal crecimiento de los servicios de comunicación, comercio y entretenimiento. Actualmente, los ordenadores portátiles y teléfonos presentan mayor capacidad de procesamientoquepermitelatransmisióndevideomáseficienteyeficaz.Lastécnicas decodificacióndevideohancausadogranimpactoenlaindustriamultimedia,yaque proporcionan secuencias de video de alta calidad utilizando el ancho de banda disponible;muyútilesenlosserviciosdevideostreamingmóvildondeessignificativola eficienciadealmacenamientoytransmisión[51]. Conelvideostreamingnuevosmodelosdenegocioseestánexplorandocomo: plataformas de contenido y su facilidad de adaptación a los diferentes dispositivos, cambios de infraestructura en los distribuidores de contenidos, personalización de serviciosvideostreaming,cochesconectadosaserviciosvideostreaming,desarrollode dispositivos de contenido enriquecido... [52]. La tecnología inalámbrica también permitiráelincrementodecasasyedificiosinteligentes,autopistasautomatizadasy redesenelcuerpoparaelanálisisytratamientodecondicionesmédicas,aplicaciones paralaeducación,salud…[53][54]. LosproveedoresdeserviciosdeInternethanintroducidoredesinalámbricasen aeropuertos,hoteles,cafeterías...,yfacilitaproveerabajocostoconexionesdeInternet de altas velocidades para usuarios de teléfonos móviles. Aplicaciones tales como televisióndigital,videobajodemanda,vigilanciadevideodomésticoycomercial,video llamadassonampliamentepopulares.Unodelosobjetivosdelosproveedoresdedichos servicios es entregar el video con alta calidad que satisfaga einclusoimpresioneal usuario.Esteobjetivo,llevaalanecesidaddelacalidaddelvideo. Enlospróximosañosseesperaquevideostreamingsealaaplicaciónquedomine eltráficoquesecomparteenelInternet.Losusuariospodríandemandarresoluciones de imagen de alta calidad que pueden requerir anchos de banda más grande. Las estadísticasdeuso,indicanquehaydemandadevideosenlíneadelargaduracióncomo: noticias,deportesyentretenimiento[55][56]. Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 54 2.2.1. ProtocolosyCODEC Elapogeodelatecnologíadevideostreaminghasidoposiblegraciasaldesarrollodelos protocolos de comunicación y transporte, un protocolo es un conjunto de reglas establecidasentredosdispositivos para permitir la comunicaciónentreambos,los protocolosdecomunicaciónutilizadosenlatransmisióndevideostreamingsemuestran enlaFigura2.6. Losprotocolosdetransporteseencargandelcontroldeerrores,lasecuenciación yelcontroldelflujo,envideostreamingseutilizaránbásicamentedosprotocolosde transporteTransmissionControlProtocol(TCP)yUserDatagramProtocol(UDP),ideales paraladifusióndecontenidosmultimedia. Enrelaciónalosprotocolosdecomunicación,enlatabla2.4sepresentanlos protocolosdeestablecimientoygestióndesesiónporpartedelclienteRealTimeVideo Streaming Protocol (RTSP),losrelativosaltransporteycontrolReal Time Transport Protocol/RealTimeControlProtocol(RTP/RTCP)conlasprincipalesfuncionalidades.   Figura2.6Protocolosutilizadosenvideostreaming   Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 55 Tabla2.4ProtocolosdeComunicación PROTOCOLO DESCRIPCIÓN RTSP Estableceycontrolaunoomuchosflujossincronizadosdedatos,yaseandeaudioo devideo.RTSPesunprotocolonoorientadoaconexión,enlugardeestoelservidor mantieneunasesiónasociadaaunidentificador,enlamayoríadeloscasosRTSPusa TCPparadatosdecontroldelreproductoryUDPparalosdatosdeaudioyvídeo. Laconexióndebepermaneceractivadurantetodoelprocesodecomunicación,es decir,desdeelmomentoenelqueelclientelanzalaprimerapetición,hastaque terminaderecibirlosdatoscorrespondientes al vídeo o audio y utiliza el propio protocoloRTSPparacerrarlasesión. RTP Esunprotocoloqueseutilizaparaenviarcualquiertipodeformatodeaudioyvideo, funcionasobreelprotocoloUDP,haciendoqueelprotocoloRTPnogaranticequelos paqueteslleguenasudestinoyconlacalidaddeservicionienelordendeenvío. LasaplicacionesqueusanRTPsonmenossensiblesalapérdidadepaquetes,pero muysensiblesalosretardos,razónporlaqueseprefiereUDPsobreRTP. RTPademásdelosdatosensí,transportaciertainformaciónútilpararealizarun ciertocontroldelacomunicación,peronoinformasobreelestadodelamisma,es por esto que trabaja junto RTCP, el cual genera los mensajes decontroldelas transferenciasqueincluyeinformaciónsobrelospaquetesperdidos. RTCP Seutilizaparatransmitircontenidomultimediaentiemporealypermitehacerun control directo en el cliente de la reproducción del contenido enviado desde el servidormediantecomandoscomoplayypause. Se basa en la transmisión periódica de paquetes de control durante una sesión, utilizando el mismo mecanismo de distribución de los paquetes RTP. La función principaldeRTCPesinformardelacalidaddeservicioproporcionadaporRTP.Este protocolo recogeestadísticas de laconexióneinformaciónadicional como: bytes enviados,paquetesenviados,paquetesperdidosentreotros. Unaaplicaciónpuedeusarestainformaciónparaincrementarlacalidaddeservicio, yasealimitandoelflujoousandounCODECdecompresiónmásbaja. Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 56 Loscódecspuedencodificarelflujoolaseñal(paralatransmisión,elalmacenaje o el cifrado) y recuperarlo o descifrarlo del mismo modo para la reproducción o la manipulaciónenunformatomásapropiado. ElCODECpuedeservirendistintosestadosdelainformaciónycondiferentes funcionalidades.Puedeutilizarseenlatransmisióndeunarchivooenelalmacenaje, paracomprimirpropiamente,paracifraroparamodificarsuformato. ExistenCODECqueprovocanpérdidasdeinformaciónparaconseguiruntamaño lomáspequeñoposibledelarchivodestino,asícomotambiénexisten CODEC sin pérdidas.Perolosmásutilizadossonlosprimeros,yaquenojustificaunaumentode calidadcasiimperceptibleparaelserhumano,porunnotableaumentodeltamañode losdatos.LosCODECquenopierdeninformaciónenelprocesodecompresión,suelen emplearsecuandolacalidaddelarchivomultimediaenviadoporlaWeb,serequiere parauntratamientoposteriordedichoarchivo. El problema asociado al video digital es la gran cantidad de recursos de almacenamientoyanchodebandaquedemanda,parasolventarestasituaciónsehan desarrollado varios estándares de compresión de video, los cuales eliminan la redundanciaypermitensutransmisióndeunaformacompactayeficiente.Aestalabor se han enfocado dos organismos de estandarización que desarrollan estándares y algoritmosdecompresióndevideo.  LaInternationalTelecommunicationUnion(ITU)atravésdelosestándares “H”,entrelosquesedestacanH.263yH.264relacionadosconlacodificación devideo.  La InternationalOrganization for Standarization / International Electrotechnical Commission(ISO/IEC)desarrolla los estándares conocidos comoMPEG,entrelosquesedestacanMPEG2yMPEG4. UnCODECdeaudiosebasaenelalgoritmodecompresiónconpérdida,unprocesopor elqueseeliminanalgunosdelosdatosdeaudioparapoderobtenerelmayorgradode compresión posible, resultando en un archivo de salida que suena lo más parecido posiblealoriginal.  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 63 inalámbrico. La congestión antes mencionada afecta a otros servicios que están utilizandoelcanaldecomunicación.Eldesconocimientoporpartedelservidorquese ha dado una interrupción, provoca el desperdicio de recursos del servidor. Video streaming en redes inalámbricas es un desafío que aún no ha sido solucionado eficientemente, existe dificultad de controlar las desconexiones intermitentes ocasionadosporpérdidadecoberturauotrascausas,surgenentoncesdificultadesde recepcióndedatosmultimedia,cierredelasesiónactualyobligatoriedaddeabriruna nuevasesión,gastosdelosrecursosdelservidoralenviartramas multimedia desconociendoelestadorealdelcliente;todoestoconfluyealapérdidadeefectividad devideostreaming,ocasionandotambiénpérdidadetiempodelusuario,afectandode formadirectaenlaQoE. Latransmisióndedatosenloscanalesinalámbricossufrendemuchoserrores, pérdidasfrecuentesdepaquetesylacoberturaderadionosiempreesconstante,por lo que se pueden producir desconexiones frecuentes del teléfonomóvil.Estas desconexionessontotalmenteimpredecible,paramitigarsuefectoadversoserequiere deunaeficientecalidaddeservicioymecanismosdecontroldetransmisiónpara adaptaraloscambiosdelared[99][100][101].  2.3. JADEparacontroldeinterrupcionesdevideostreaming La técnica de agente es una de las más importantes tecnologías desarrolladas para apoyarlasaplicacionesdeInternet.Unagenteeslaentidaddesoftwarequeestásituado enalgúnmedioambienteyescapazderealizarunaacciónautónomadeacuerdoal entornoconelfindecumplirsusobjetivosdediseño.Losagentes inteligentes representan unidades computacionales autónomas, que fundamentansu comportamientoenreglasontológicas,paradeterminarlastareasproactivasarealizar de acuerdo al dinamismo del medio ambiente en el que actúan, se comunican intercambiandomensajesysecaracterizanporsuproactividad,inteligenciaymovilidad [102].Otradefinicióndescribelosagentesinteligentescomoentidadesdesoftwareo hardwarequeexhibencaracterísticasútilestalescomoautonomía, modularidad, proactividad, adaptación, racionalidad, habilidad social, reactividad, continuidad Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 64 temporal, orientación hacia el objetivo final, movilidad, benevolencia, colaboración, entreotras[103]. Losagentesactúandemaneraautónoma;estánprogramadosparaqueperciban yaprendandesuentorno,razonansobreloaprendido;eligenunaovariassoluciones pararesolverproblemasoconsultarrequisitosautomáticosohumanos;viajansobrela plataforma de comunicaciones de una red; sirven para automatizar tareas que se ejecutanrepetidamente;seprogramanunaúnicavezyposteriormentenorequieren manipulaciónhumana.Unagentedesoftwareinteligenteesunprogramaquetieneuna acciónsobreuncomportamientoloqueimplicalacapacidaddedecidirsilaacciónes apropiada.Losagentespuedeninvocarseasímismos,paraesto,elagentenecesitade muchoconocimientoqueloapoye,laontologíaesunbuencaminopararepresentar este conocimiento. El agente ejecuta una ontología si las acciones del entorno son consistentesconlasdefinicionesdelaontología.Unagenteesunaentidaddesoftware quepuedeactuarporsímismoconelfindealcanzarunosobjetivosquesehafijado inicialmenteyademásestácaracterizadoporunaovariascualidades tales como capacidadderazonamiento(inteligencia),percepcióndesuentornoyactuacióncon baseaciertascircunstancias(reactividad)[104].También,tienelacapacidaddeactuar enformaproactiva,esdecir,actúasinnecesidaddedarleunaordenylahabilidadde desplazarse de un lugar a otro (movilidad), entre otras características. Un agente inteligente,esunaentidadcapazdepercibirsuentorno,procesartalespercepcionesy responderoactuarensuentornodemaneraracional,esdecir,demaneracorrectay tendiendo a maximizar un resultado esperado. Todo agente tiene una función u objetivo. Los agentes presentan características como: autonomía, aprendizaje y proactividad;ademásunaltoniveldeabstraccióndebidoasumodularidadysencillez enlascomunicaciones.Tambiénsuescalabilidadyflexibilidadsonfactoresqueapoyaal desarrollodeaplicacionesdistribuidas[105][106].Losagentesmonitoreanelprogreso de las estrategias seleccionadas, se comunican intercambiando mensajes, explotan técnicasderesolucióndeproblemasytambiéndeaprendizajebasadaseninteligencia artificial,lograndoundesempeñodinámicoeindependiente.  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 65 Las propiedades básicas de los agentes son: reactivo, proactivo, autónomo, orientadoaobjetosytienencapacidadsocial.Losagentestienenqueestablecerporsi mismossupropiamaneradeaplicarrecomendacionesytomarunadecisión de confianza.Elusodeagentesproporcionamayoreficienciayseguridad. Unagentesedesarrollaenunambientedinámicoenelquesedebetomaren cuentaeltiempodeejecucióndeacciónyelestadoinicialdeunambiente, yaque duranteestetiempoelambientepuedecambiar,porloqueelagentedeberecolectar informacióndelestadoactualdelambiente,porquelametalogradapuedeserdiferente alaesperada[107].Tambiéndebetomarencuentalainterferenciaqueotrosprocesos puedenproducirsobrelaacciónaejecutar,estopodríaafectarelresultadoesperado, porloquedebecoordinarysincronizarlasaccionesconotrosprocesosoagentes. EldesarrolloorientadoaagentesesparadigmadeIngenieríadesoftware[108]. Su uso seha intensificadoen una gran variedadde aplicaciones,estosedebeasu autonomíaycontrolsobresuspropiasaccionesysuestadointerno;alacapacidadde analizarsuentornopararesponderdeacuerdolosobjetivosdesudiseño.Otrarazónes su flexibilidad ya que responde a los cambios que pueden ocurrir en el ambiente, direccionasu comportamiento ytomala iniciativa apropiada einteractúa con otros agentes,estosatributosalcanzadosenunaentidaddesoftwareha influido en el desarrollodeestenuevoenfoque. Elconceptodeagenteconstituyeunapotenteherramientadeabstracciónenel desarrollodesoftware,quefacilitalaconstruccióndesistemasdistribuidos,inteligentes y robustos [109]. En la actualidad latecnología deagentes inteligentesproporciona herramientasquepermitenconstruiraplicacionescuyasfuentesdeinformaciónestán distribuidas y que deben interactuar, en este entorno tecnológico donde nuevos y complejos servicios son demandados en los campos educativo, trabajoyocio,el concepto de agente se consolida como una solución a las tendencias actuales: ubicuidad,interconexión,inteligencia,delegaciónysocial. Los agentes inteligentes móviles surgen como una tecnología para reducir el impactodelosproblemasquepresentanlosdispositivosinalámbricosalserpartícipes de solución de aplicaciones personalizadas, reducir la latencia, controlar las Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 66 desconexiones de la red. Los agentes móviles pueden convertirse en un nuevo paradigmaparaprogramacióndistribuidadelasredesdecomunicaciónfuturas. El desarrollo tecnológico ha influenciado en la evolución de los sistemas de telecomunicaciónmóvil,losentornosactualesconvergenenelsurgimientodenuevos servicioscadavezmáscomplejoscomomultimedia,videostreaming,televisióndigital. Latecnologíadeagentesofrecemuchasventajasquepuedenserútileseneldiseñoe implementacióndeserviciosparadispositivosinalámbricosenambientesinalámbricos yaquelascaracterísticasintrínsecasdelosagentesayudaranasolventarproblemasde movilidaddeusuarios,dispositivosheterogéneosylosproblemaspropiosdelared. Eldesarrollodelastecnologíasdelainformaciónylascomunicaciones en especialelavancedelascomunicacionesinalámbricashapermitidoelaugedelusode dispositivosinalámbricosconmejorescaracterísticasenmemoria,procesamiento,etc. Esto ha ocasionado que el usuario exija nuevos servicios como tv digital, video streaming, comunicación con sensores, entre otros. A pesar de las innovaciones realizadas en las características de los dispositivos inalámbricos éstos disponen de limitadacapacidaddecálculoynopuedenmanejargrandescantidadesdedatos. Elinconvenientehabitualdelascomunicacionesinalámbricasesquealmomento deutilizarelservicio,segenereunainterrupciónporvariasrazonesentreellaslafalta decobertura,puedeocasionarenelusuariolaobligatoriedaddevolveralpuntode partida(iniciodelvideo,descargadeundocumento,llenarunformulariodesdecero). Dentrodelparadigmaorientadoaagentesinteligentesestáncobrando especial importancialosagentesmóviles,constituyéndoseenprogramasquepuedenpararen cualquier momento, trasladarse a otro dispositivo, continuar conlaejecucióndel serviciootareaenelpuntoenelquesesuspendió. El uso de la programación orientada a agentes móviles permite crear aplicaciones,demonitorizaciónderedesodefiltradoybúsquedadeinformación.Estas aplicacionescobranespecialrelevanciaalserusadasendispositivosinalámbricoscon conexiónaredesinalámbricas.Unadesuscaracterísticasprincipalespropiasdelagente permitegenerarloscálculosoprocesoseneldispositivoenelqueseencuentranlos datosocasionadoladisminucióndeltráficodeinformaciónenlared.  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 67 Paraestetipodesistemasesadecuadounsistemaontológicoqueproporciona unaseriedeventajas:  Sistemabasadoenelconocimiento:seutilizaontologíasyagentesconelfin detenerencuentaelconocimientopreviorecibidoporexpertos en una formadereglasheurísticas,razonamientobasadoencasos...  Representacióndelconocimiento:elsistemadeontologíasecreacomoun conjuntodeontologíasdeldominiocorrespondientealambiente,agentesy limitaciones.  El sistema propuesto es inteligente y puede reaccionar adecuadamente frente a perturbaciones imprevistas, puede utilizar los resultados de la negociaciónentreagentes.Podríasertantoreactivoyproactivo. 2.3.1. Ontología Eltérminoontológicoserefierealaformulacióndeunesquemaconceptualrigurosode undominoespecífico,elcualfacilitalacomunicaciónycomparticióndeinformación entrediferentessistemas,posibilitandoquelosrecursospuedanaccedersedeacuerdo a su contenido semántico, priorizando la base de conocimiento y permitiendo la recuperacióndelainformacióndeformaautomática[110]. Las ontologías definen las conceptualizaciones de un dominio específico que debensermodeladasyenriquecidasparaquepuedanserentendidasportodoslos agentesqueformanpartedelaarquitectura. EnelcampodelaInteligenciaArtificialseladefinecomo:unaespecificación explícitadeunaconceptualización[111]yenladisciplinadelosSistemasdeInformación selaconsideracomo:unartefactodelsoftware(olenguajeformal)diseñadoparaun conjunto específico de usos y ambientes computacionales[112].LaOntologíaesun esquemaconceptualquepermiteespecificarelconocimientodeunoovariosdominios queescompartidoporvariosagentesyesinterpretableporunprogramainformático [113].Laontologíaestableceunvocabulariocomúnnecesarioparaquelosagentesse comuniquen entre ellos, así la comunicación es facilitada a través una ontología compartida, el cual define los conceptos y las relaciones entre los conceptos de un Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 68 dominio en particular [114]. Hoy en día se entiende como ontología: un esquema conceptualquepermiteespecificarelconocimientodeunoovariosdominiosquees compartido por varios agentes e interpretable por un programa informático. Una ontología permite la representación del dominio con el objetivo de compartir, intercambiaryserreutilizadaporlosagentes.Lavisióndeunaontologíaparadiferentes propósitostalescomoaplicacionesWeb,Websemántica,sistemasdeinformación,está recibiendo mayor atención. Una ontología es una especificación de una conceptualización compartida, es un acuerdo para usar un vocabulario de forma consistente. Puedendarsevarioscasosdevideostreamingdondelosambientes son distribuidos,heterogéneosycontiposdiferentesdesistemas.Enestoscasosserequiere deestructurasmásflexiblesydinámicas,paraelloesnecesario la combinación del sistemabasadoenelconocimiento,elcualespresentadodesdelasontologíasyeluso demódulosinteligentesproactivospresentadoporsistemasdeagentes. 2.3.2. SistemaMultiagente Unúnicoagentenopuedelograrlasolucióndeproblemascomplejos,paraaquelloen loqueesnecesariounconjuntodeagentesqueinteractúanybuscanellogrodelos objetivoscomunesplanteadosenelsistema.Elusodevariosagentes representala descentralizacióndelaaplicaciónypriorizalacomunicacióncomofactorcríticodeéxito. Lossistemasexistentesnotienencapacidaddecolaboración,seutilizaagentes inteligentesporquecooperanentreellospararealizarlasactividades a ellos encomendadas.UnMultiagentSystem(MAS)esunsistemacompuestodemúltiples agentes inteligentes interactuantes, estos son utilizados para resolver problemas difícilesdehacerloporunagenteindividual[115][116]. EnunMAS,unconjuntodeagentesinteligentestrabajanparalogarunobjetivo global,defineunambientequecontienevariosagentes,estospuedeninteractuaruno con el otro a través de mensajes, en este entorno, el elemento fundamental es un  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 69 agente inteligente el cual tiene tres características como: habilidades sociales, proactivasyreactivas. La programación orientada a agentes permite el desarrollo de MAS estructuradosparainteractuarycooperarpararesolverproblemasqueestánfueradel alcancedecadaagente,sedestacalaimplementacióndeestructurascooperativasque sonmuyútilesparaelcontroldevideostreamingendispositivosinalámbricos[117]. UnMASesaquelcompuestodevariosagentes,loscualesdesempeñantareas encomendadasporunusuariouotroagente,debenserautónomosesdecirposeerlas capacidaddedecidirquédebenhacerparacumplirconsusobjetivos de diseño e interactuarconotrosagentesatravésdelintercambiodedatos.UnMASdebidoaque está constituido por varias entidades independientes (agentes) necesita definir muy biencómoestánorganizados,cómosecomunican,coordinanycooperan,yfinalmente como se controlan estos agentes para lograr un objetivo común. Los agentes son caracterizadospordiferentesvisionesdelMundoquesonexplícitamentedefinidaspor lasontologías,esdecir,quelasvisionesqueelagentereconocesonconceptosdescritos poreldominiodelaaplicaciónelcualestáasociadoalagentejuntoconsusrelacionesy restricciones. Lainteroperabilidadentreagentesselograatravésdelaconciliacióndelos puntosdevistaovisionesdelmundomedianteelcompromisodeontologíascomunes quepermitenalosagentesinteroperarycooperarmientrasmantienensuautonomía [118]. Han sido utilizados para construir aplicaciones distribuidas basadas en componentes.Existenunavariedaddemetodologíasyherramientasqueapoyanenel desarrollodeestetipodesistemas,esidealquesetomenencuentatodoslosaspectos delcomportamientodeunagenteysudespliegue.Esnecesarioentonces:1)modelar losagentesenunsistemaylasinterfacesdeestosagentes2)describirlainformación consumidaygeneradaporcadaagente3)esbozarlasposiblesinterrelacionesentre agentes4)especificarelcontenidodelainformaciónintercambiadaentreagentes.Estas especificaciones deber ser interpretables por la computadora y proveer suficiente detalleparaconduciraldesplieguedelosagentes. Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 70 Tabla2.5SistemasMAS PLATAFORMA LICENCIA LENGUAJE DOMINIO ABLE AgentBuildingand LearningEnvironment OpenSource AbleRule Language Construccióndeagentesinteligentes haciendousodemáquinasdeaprendizajey razonamiento iGen TheCognitiveAgent SoftwareToolkit Propietario C,C++,java Modeladodediversosaspectosbiológicos delserhumano ADK AgentDevelopmentKit GPL Java Aplicacionesconunaaltaescalabilidad ZEUS OpenSource VisualEditors Sistemasmulti‐agentebasadoenreglasy scripting JASA JavaAuctionSimulator ApplicationProgramming Interface(API) GPL Java Simulacióndeentornoseconómicos AgentBuilder Propietario KQML,java,C++ Sistemasmulti‐agentedepropósitogeneral  JADE JavaAgentDevelopment Framework GPL Java Sistemasmulti‐agentedepropósitogeneral   Esimportanterealizarelanálisisdelasplataformasquepermiteneldesarrollo deMASyseleccionarlamásidóneadeacuerdoalescenarioyelproblemaplanteado. Comosepuederevisarenlatabla2.5 (adaptada de [119])sehangeneradovarias plataformasentreellasJADE. CuandoungrupodeagentesindividualesconformanunMASesnecesariodefinir ellenguajedecomunicaciónquepermitaelintercambiodemensajesentrediferentes agentes.SehaescogidoellenguajedeagentesdepropósitogeneralFoundationfor intelligent Physical Agent(FIPA)  Agent Communication Language (ACL) que se caracteriza por permitir que los agentes se comuniquen utilizando ontologías y lenguajes de contenido. FIPA es una organización de estándares de la IEEE que promuevelatecnologíabasadaenagentesylainteroperabilidaddeéstosconotras tecnologías.FIPAdefinetodoslosaspectosfundamentalesdecomunicacióndentrode un MAS especificando protocolos de interacción, lenguajes de comunicación y ontologías.Establecereferenciasparalacreación,registro,localización,comunicacióny operacionesentreagentes.Lacomunicaciónentreagentesesfundamentalparapoder conseguirlapotenciapropiadelosMAS.Paraquelosagentessepuedancomunicar debenusarelmismolenguajedecomunicación.Ellenguajedecomunicacióndeagentes  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 71 (FIPAACL)permitirátransmitirunaseriedeconocimientoquevendráexpresadoenun lenguajedecontenido[120]. Latecnologíadeagentessehaconvertidoenunnuevocampoenlascienciasde lacomputación,esteavancehageneradounbuennúmerodeplataformasdediferentes calidadesymadurez.En[119]seevalúalasplataformasASDK,Ajanta,Tryllian`sADK, FIPA‐OS, Grasshopper, JADE, JACK Intelligent Agent, Zeus, de acuerdo a parámetros como: compatibilidad, comunicación, movilidad, políticas de seguridad, usabilidad; parámetros seleccionados de acuerdo a los estándares definidos en las recomendacionesFIPAparaimplantarplataformasdeagentes. En el análisis JADE ocupa el segundo lugar luego de Grasshopper, ya que se caracteriza por ser open source, tener buena documentación, muy buena interfaz gráfica,aceptacióndelosusuariosyesutilizadoenmuchosproyectosdedesarrollo. PerfeccionadoenbaseaFIPA,cuentaconbuenascaracterísticasdeseguridad,varios protocolosdecomunicación.SehaescogidoJADEcomolaherramientadedesarrollo, ya que cumple con las especificaciones FIPA y soporta la mayor parte de la infraestructura establecida como: protocolos de comunicación, codificación de mensajesyserviciodepáginasamarillas[121]. 2.3.3. JADE Fue desarrollado en Italia conjuntamente por Centro Studi e Laboratori Telecommunicazioni(CSELT).EsunmiddlewarecompletamenteimplementadoenJava, que simplifica la implementación de sistemas multiagente ya que proporciona un conjuntodeherramientasgraficasquepermitenladepuraciónenlasfasesdedesarrollo ydespliegue[122].Incluye:1)unentornodeejecucióndondelosagentesJADEpueden residirydebenestarpreviamenteactivosenunhostdeterminado,paraqueunoomás agentespuedaninvocarlos,2)unabibliotecadeclasesquesepuedeutilizarparael desarrollo de agentes y 3) un conjunto de herramientas graficasquepermitela administraciónysupervisióndelaactividaddelosagentesactivos[123].Proporciona tantoun entorno dedesarrollo como unentorno de ejecuciónpara la realización y Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 72 mantenimiento de sistemas multiagente, proporciona un conjunto de herramientas gráficasquepermitentareasdedepuración,monitorización,documentaciónysoporte. JADEsebasaenestándarFIPAadoptadoporlamayoríadeplataformasMAS. LascomunicacionesdeagentesFIPAseespecificanformalmenteenellenguaje decomunicaciónACLparacodificación,semánticayusodelosmensajesqueindica comointeraccionanysongestionadoslosagentes.ElmensajeFIPAsedefineporla ontologíaenlaquesedescribenlostérminosdelcontenidodelmensaje. AlgunasdelascaracterísticasqueJADEofreceson:  Es un middleware ya que permite el funcionamiento de agentes sobre plataformasheterogéneas.  Ejecucióndecadaagentecomounhiloseparado,capazdeejecutarseen máquinasremotas.  Proveeserviciosdepáginasamarillasyblancas.  Proporciona API para crear, suspender, reanudar, bloquear, despertar, mitigar,clonarydestruiragentes.  Apoyaalamovilidaddeagentesentreprocesosydiferentesmáquinas.  Proveedeherramientasparaanalizarlosmensajesdecomunicaciónentre agentes.  Soporteparaontologíasylenguajesdecontenido.  IntegracióncontecnologíasWeb.  Proporcionaaplicacionesgráficasquefacilitalamonitorizaciónydepuración. CadainstanciadelentornodeejecucióndeJADEsellamacontenedor.Losagentesviven enloscontenedores,quesonprocesosJavaprovistosporJADEentiempodeejecución yproporcionantodoslosserviciosnecesariosparalaejecucióndelosagentes.Hayun contenedor especial, llamado contenedor principal que representan el punto de arranquedelaplataforma:eselprimercontenedorqueseríalanzadoyelresto de contenedoresdebenunirseaestecontenedormedianteelregistrocorrespondiente. JADEposibilitalaimplementacióndeagentesindependientedelaplataformaen laquesevaaejecutar,estáconformadaporunoomáscontenedoresquepuedenestar  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 79 2.5. Contribuciones a la mitigación de las interrupciones de videostreaminginalámbrico Nosotrosproponemosvariassolucionesalamitigacióndelasinterrupcionesdelservicio de video streaming en terminales inalámbricos. En ninguno de los trabajos antes relacionados hemos encontrado que se analice la producción de software cliente servidorparaelserviciodevideostreaming.Nosotroshemosencontradolospatrones softwareadecuadosparaestediseño,proponiendounaarquitecturanovedosaenlaque basamosnuestrassolucionesdemitigacióndelasinterrupcionesdelserviciodevideo streamingenredesinalámbricas.  2.5.1. Patronessoftwaredediseño Unpatróndediseñoesunadescripcióndeclasesyobjetoscomunicándoseentresí adaptadapararesolverunproblemadediseñogeneralenuncontextoparticular. Cadapatróndescribeunproblemaqueocurreunayotravezennuestroentorno yentoncessedescribeelnúcleodelasoluciónadichoproblemadetalformaquese puedausarestasoluciónunmillóndevecessihacerdosvecesdelamismaforma. Lospatronessoftwaredediseñosonsolucionesgenéricasaproblemasconcretos quesurgeneneldesarrollodesoftware.Estosayudanaresolverproblemasdediseño querepetidamenteocurren,seenfocanendocumentarytransmitirlaexperienciaenla soluciónalproblemapromulgandolareutilización. Deacuerdoa[143]buenpatróndebecumplirlossiguientesrequisitos:  Debesolucionarunproblema.  Sonconceptosprobadosnoteorías.  La solución no es obvia, genera una solución para un problema indirectamente.  Describeunarelaciónesdecirdescribesistemas,estructurasomecanismos másprofundos. Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 80  Debeteneruncomponentehumano,recurrirexplícitamentealaestéticay utilidad. Acontinuaciónsedescribelospatronessoftwareutilizadosenelpresentetrabajode investigación,tomadode[144]: Tabla2.6ComponentesMVC  VISTA   CONTROLADOR  MODELO Enlavistaseproducela visualizacióndelas interfacesdeusuario.  Permitealusuario interactuarconlaaplicación.  Setrabajaconlosdatospero noserealizaunacceso directoalosmismos.  Secomponedela informaciónqueseenvíaal clienteylosmecanismosde interacciónconéste.  Eselenlaceentrelas vistasylosmodelos.  Seencargadeprocesar lasinteraccionesdel usuarioyrealizalos cambiosapropiadosen elmodelooenlavista.  Realizallamadasal modeloparaobtenerlos datosyselospasaala vistaparaquelos muestrealusuario.  Representalainformación conlaquetrabajala aplicación.  Dondesedefinen mecanismospara:  accederalainformación  actualizarelestado  Contieneuna representacióndelosdatos quemanejaelsistema,su lógicadenegocio relacionadaconlosdatos,y susmecanismosde persistencia.    Figura2.8PatrónComposite   Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 81  PatrónModeloVistaControlador(MVC):separaencomponentesdistintos los datos, la interfaz de usuario y la lógica de control, promulga orden, reutilización,flexibilidad…loscomponentesdeestepatrónysudetallese puedeobservarenlatabla2.6.  PatrónComposite:componeobjetosenestructuradeárbolpararepresentar jerarquíasdetodoparte,permitequelosclientestratendemanerauniforme alosobjetosindividuales.EnbasealaFigura2.8,seenfocaenlaconstrucción deobjetoscomplejosapartirdeobjetossimplesysimilaresentre sí, utilizando composición recursiva y definiendo la estructura jerárquica de elementosanidados.Elobjetivodeestepatróneslafacilidaddeusoyapoya alavistadelpatrónMVC.  PatrónStrategy:defineunafamiliadealgoritmos,encapsulaacadaunode ellos y los hace intercambiables. De acuerdo a la Figura 2.9, este patrón permite que los algoritmos o estrategias prestablecidas varíen de forma independiente de los clientes quelousan.Suimportanciaradica en que encapsulaunalgoritmosinpreocuparsedelosdetallesdeimplementacióny permiteuncambiodeestrategiaentiempodeejecución.Elobjetivodeeste patróneslograrmayorniveldefiabilidadyflexibilidad.Apoyaalcontrolador enelpatrónMVC.   Figura2.9PatrónStrategy  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 82  PatrónObserver:defineunadependenciadeunoamuchosentreobjetosde formaque,cuandounobjetocambiadeestado,senotifica a losobjetos dependientes para que se actualicen automáticamente. En este patrón diferentesobjetossuscriptoresestáninteresadosenelcambiodeeventode unobjetoobservadoyreaccionarandeformaindependientecuandoeste cambioocurra,puedeobservarseenlaFigura2.10.Elobjetivodeestepatrón esmantenerbajoacoplamiento.ApoyaalmodeloenelpatrónMVC.  PatrónProxy:proporcionaunsustitutoointermediarioparaotroobjetode modoquepuedacontrolarseelaccesoquesetienehaciaél.Deacuerdoala Figura2.11,esunaentidadalaquesedelegalaejecucióndeprocesos,y decidiráquéactividadesrealizarparasuconsecución.Setienenvariostipos deproxies. o Proxyremoto:se encargade la comunicación entreelclienteyel objetoremoto. o Proxy virtual: coordina la instanciación de objetos que realizan operacionescomputacionalescostosasúnicamentecuandoelacceso alobjetoesrequerido. o Proxydeprotección:controlaelaccesoaunobjetoenbaseareglas deautorización.   Figura2.10PatrónObserver  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 83  PatrónAdapter:conviertelainterfazdeunaclaseenotrainterfazqueel clienteespera.DeacuerdolaFigura2.12,defineunacapaintermediaque permitecomunicarseadosclasesconinterfacesincompatibles,atravésde una adaptación de la interfaz. Este patrón se aplica cuando se necesita transformarunaestructuraaotra,perosinmodificarlaclaseoriginal.   Figura2.11PatrónProxy     Figura2.12PatrónAdapter Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 84 2.5.2. JADE‐WSIG Ademásdeusarelmodeladodepatronessoftwareparadiseñarelserviciobásicode videostreaminginalámbrico,tambiénhemosusadoserviciosWebbasadosenaddons delaplataformaJADE(JADE‐WSIG)queproporcionainteroperabilidadynospermite diseñarunasoluciónmultiplataforma.Hastadondealcanzanuestroconocimientoesta eslaprimeravezqueseutilizaestaplataformaparaestepropósito. LosserviciosWeb[145][146][147]propicianlaintegracióndeaplicacionesque hansidodesarrolladasendiferenteslenguajesdeprogramaciónyseejecutansobre distintas plataformas. Constituyen un conjunto de funcionalidadaccesibleporel protocolo Simple Object Access Protocol (SOAP)[148] [149] basado en mensajes eXtensibilityMarkupLanguage(XML)[150][151]. ParaqueelservicioWebpuedaserleídoeinterpretadoseutilizaWebServices DescriptionLanguage(WSDL)[152][153],queesuncontratoentreelproveedoryel cliente,enésteseestablecenlosdetallesdetransportedemensajesysucontenido.La descripciónconcretadelservicio se puedepublicar en unservicio de registrocomo UniversalDescription,DiscoveryandIntegration(UDDI)[154],frecuentementedescrito comoelserviciodepáginasamarillasdelosserviciosWeb. Los servicios Web son un conjunto de aplicaciones o de tecnologías con capacidadparainteroperarenlaWeb,lascualesintercambiandatosentresíconel objetivo de ofrecer servicios. Los proveedores ofrecen sus servicios como procedimientos remotos y los usuarios solicitan un servicio llamandoaestos procedimientosatravésdelaWeb.Estosserviciosproporcionanmecanismosde comunicaciónestándaresentrediferentesaplicaciones,queinteractúanentresípara presentarinformacióndinámicaalusuario. Un servicio Web es un componente al que se puede acceder mediante protocolos Web estándar, utilizando XML para el intercambio de información. Un servicioWebesunacoleccióndemétodosalosquesepuedellamardesdecualquier lugardeInternet,siendoestemecanismodeinvocacióntotalmenteindependientede  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 85 la plataforma que se utilice y del lenguaje de programación en el que se haya implementadointernamenteelservicio. LosserviciosWebofreceninformaciónconunformatoestándarquepuedeser entendidofácilmenteporunaaplicación,soncomponentesdeaplicacionesdistribuidas queestándisponiblesdeformaexterna,sepuedenutilizarparaintegraraplicaciones escritas en diferentes lenguajes y que se ejecutan en plataformas diferentes. Los servicios Web son independientes de lenguaje y de la plataformagraciasaquelos vendedoreshanadmitidoestándarescomunes. ElWorldWideWebConsortium(WC3)defineunservicioWebcomounsistema softwarediseñadoparasoportarinteraccionesmáquinaamáquinaatravésdelared. Dicho de otro modo, los servicios Web proporcionan una forma estándar de interoperaciónentreaplicacionessoftwarequeseejecutanendiferentesplataformas. Porlotanto,suprincipalcaracterísticasugraninteroperabilidadyextensibilidadasí comoporproporcionarinformaciónfácilmenteprocesableporlasmáquinasgraciasal usodeXML.LosserviciosWebpuedencombinarseconmuybajoacoplamientopara conseguirlarealizacióndeoperacionescomplejas.Deestaforma,lasaplicacionesque proporcionanserviciossimplespuedeninteractuarconotraspara"entregar"servicios sofisticados. UnServicioWebestáformadoporlossiguientescomponentes:  Lógica: se trata del componente que procesa la petición para generar la informaciónsolicitadaporelcliente.Básicamenteresuelveel“problema”y puede,paraello,comunicarseconotrosserviciosWeb,accederabasesde datosobieninvocarAPIdeotrasaplicacionessolicitandolainformación(o partedeella)quehadegenerarparaenviarenformatoXML.  SOAP: protocolo de comunicación, basado en XML, que sirve para la invocacióndelosServiciosWebatravésdeunprotocolodetransporte,como HyperTextTransferProtocol(HTTP).Constadetrespartes:unadescripción delcontenidodelmensaje,unasreglasparalacodificacióndelostiposde datosenXMLyunarepresentacióndelasllamadasRemoteProcedureCall Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 86 (RPC)paralainvocaciónyrespuestasgeneradasporelServicioWeb. El mensajeSOAPestácompuestoporunenvelope(sobre),cuyaestructuraestá formadaporlossiguienteselementos:header(cabecera)ybody(cuerpo).  UDDI:directoriodondeesposiblepublicarlosserviciosWeb,permitiendo conelloquelosposiblesusuariosdeeseserviciopuedanobtenertodala informaciónnecesariaparalainvocaciónyejecucióndelservicioWeb.Un directorio UDDI ofrece una serie de interfaces que posibilitan tanto la publicación como la obtención de información sobre los servicios Web publicados.  WSDL:lenguajebasadoenXMLquepermiteladescripcióndelosServicios Webdefiniendolagramáticaquesedebeusarparapermitirsudescripcióny capacidades(datos,comandosqueaceptanoproducen),ysupublicaciónen undirectorioUDDI. LosserviciosWebdebencaracterizarseporlosiguiente:  Comunicación ubicua: la conexión de cualquier sistema o dispositivo a Internet debe garantizar la disponibilidad para cualquier otro sistema o dispositivoconectadoaInternet.  Formatode datosuniversal:cualquiersistemacompatibleconestándares abiertos como mensajes de texto autodescriptivos puede comprender y compartirlosserviciosWebXMLypermitirlacomunicaciónentresistemas autónomosyheterogéneos.  Interoperabilidad: un servicio debe permitir su utilización por clientes de otrasplataformas.  AmigabilidadconInternet:lasolucióndebepoderfuncionarparasoportar clientesqueaccedanalosserviciosdesdeInternet.  Interfacesclaramentedefinidas:nodeberíahaberambigüedadacercadel tipodedatoenviadoyrecibidodesdeunservicio.  AprovecharlosestándaresdeInternetexistentes:enlaimplementacióndel servicioWebyevitarreinventar soluciones a problemas que ya se han resuelto.  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 87  Soporteparacualquierlenguaje:elservicioWebesindependientementedel lenguajedeprogramaciónenelquesehallaescritoelcliente.  Distribuida:lasoluciónnodebeestarligadasoloaunainfraestructurade componentesenparticular. ElmiddlewareJADE[155],proporcionaadd‐onsquepermitenlograrlaaccesibilidady colaboraciónenaplicativosWeb.WSIGesunsoftwareadd‐onparaJADEqueposibilita que los agentes expongan sus operaciones como servicios Web, proporcionando interconectividad y escalabilidad. WSIG soporta el estándar de servicios Web que consistedeWSDLparadescripcionesdeservicios,SOAPparatransportedemensajesy elrepositorioUDDIparapublicarlosserviciosWeb. WSIGpromulgaelusodelasontologíasquenosoloincorporandatos sino contenidosemántico,medianteladescripcióndeconceptosysusrelacionesparaque formenpartedelconocimientodeunagenteypermitanlacomunicaciónentreagentes al compartir mismo idioma y vocabulario, JADE WSIG posibilita quelosagentes expongan sus operaciones como servicios Web, proporcionando interconectividad y escalabilidad[15].SoportaelestándardeWebServicesqueconsiste de WSDL para descripcionesdeservicios,SOAPparatransportedemensajesyelrepositorioUDDIpara publicarlosWebServices,contienedoselementos,mostradosenlaFigura2.13:  WSIGServlet:eselfront–endhaciaelmundodelInternetyresponsablede atenderlassolicitudesHTTP/SOAP,yprepararlaacciónqueesenviadaal AgenteWSIG,unavezquelaacciónhasidoejecutadaseencargadeconvertir elresultadoobtenidoenunmensajeSOAPygenerarunarespuestaquees entregadaalclientesolicitantedelservicio.  WSIG Agent: es el puente entre la Web y el mundo de agentes y es responsablededireccionarlasaccionesrecibidasdelWSIGServletalagente correspondienteparaqueejecuteelservicio.  LosagentesJADEpublicansusserviciosenelDFmedianteunaestructurallamadaDF‐ Agent‐DescriptionbasadaenlaespecificaciónFIPAdondesedetallalosserviciosque Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 88 proveeelagente,lasontologíasausarseparaaccederalservicioylasaccionesquese ejecutarán.DichasdescripcionessonmapeadasaunWSDLypublicadasenunregistro UDDI. WSIG requiere de JADE 3,5 o superior para ser instalado, siendo WSIG una aplicaciónWebesnecesariotenerunContenedorServletquepuedeserGlassfisho ApacheTomcat. Enresumen,WSIGseencargadeconectarlaplataformaJADEconlosservicios Web, provee de mecanismos de transformación que aseguran la integración, sin necesidad de cambiar las especificaciones de JADE.  Su función es de ser un intermediario,cuandounagentequiere comunicarseconunservicioWeb, WSIGse encargadeadministrarytransformarestepedidoparaposteriormenteenviarlosalos serviciosWebcorrespondientes.AlretornardesdeelservicioWeblosresultados,estos son receptados por WSIG para traducir esta respuesta y reenviarla al agente correspondiente. WSIGproporcionaunaarquitecturadereferenciaestándarquehaceposiblela interoperabilidadyextensibilidadcondiferentesaplicacionesypermitesucombinación paraejecutarlosserviciossolicitados.  Figura2.13ComponentesdeWSIG  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 95 Tinteseltiempodeduracióndelainterrupción. neselnúmerodeinterrupciones. Asumiendo que el servicio de video streaming presenta iguales tiempos de establecimientoentodosloscasos,entonceselTstartpresentaelmismotiempode duración,porloque:   ⋯  Entonces:  󰇛1󰇜∗    ⋯    ⋯   Luego si agrupamos los Tdata transmitidos más de una vez, agrupamos los Tint presentadosyseparamoselTdatantransmitidounasolavez,tenemos:  󰇛1󰇜∗ 󰇛  ⋯󰇜  󰇛  ⋯ 󰇜  Siaplicamoselsumatoriotenemoslaecuación1:  󰇛1󰇜  ∑   ∑    (1)  Tdataneslasumatoriadetodoslosflujosquehansidoretransmitidosmáselflujoque hasidoenviadounasolavez,sedeterminaporlasiguienteecuación. 󰇛  ⋯ 󰇜′  Aplicandolasumatoriatenemos: Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 96      ′ ReemplazandoTdatanenlaecuación1seobtiene:  󰇛1󰇜              ′ Obteniéndoselaecuacióndefinitiva:  󰇛1󰇜  2        ′ Donde:  󰇛1󰇜  eseltiempototaldeiniciodelosflujostransmitidosporn interrupciones. ∑   eseltiempototaldeTdatatransmitidosmásdeunavez. ∑   eseltiempototaldeinterrupciones. ′eseltiempodeldatotransmitidounasolavez.  Esimportanteanalizarelimpactodelasinterrupcionesenlatransmisióndelvideo,para ellosehaseleccionadodosescenarios:  Peorescenario:dondecadainterrupciónqueocurrasedarámuycercanoala finalizacióndelvideo.  Mejorescenario:cadainterrupciónsedaráenlomáscercanoaliniciodelvideo.  EnlaFigura2.19puedeobservaseelcomportamientodelosflujostransmitidosfrente aunainterrupción,enelpeorescenario.  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 97 Seanalizaacadaflujotransmitidoparaestablecerelnúmeroderetransmisiones queelflujopuedeteneralocurrirunainterrupción. ∗   ∗  1 ….  ∗  1 ∗  0   Obteniéndoselasiguienteecuación(2):  ú  1(2)  Dondei:eselnúmerosecuencialdeocurrenciadelainterrupción.    Figura2.19Análisispeorescenario Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 98 Para obtener en este peor escenario la cantidad de frames que no se retransmitensemuestraenlaFigura2.19elTflujonqueeslatransmisióndetodoel video,esiguala:  …  ElTflujon‐1queeselflujotransmitidoantesdelaúltimainterrupción,deestosederiva elnúmerodeframesquenoseretransmitenconlasiguienteecuación.     Concluyéndosequeelnúmeroframesnoretransmitidosseríasiempremuchomenor, enesteescenarioyaquelasinterrupcionesocurrencuandoelusuariohavistolamayor cantidaddelvideo.  EnlaFigura2.20puedeobservaseelcomportamientodelosflujostransmitidos frenteaunainterrupción.    Figura2.20Análisismejorescenario  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 99 Seanalizaacadaflujotransmitidoparaestablecerelnúmeroderetransmisiones queéstepuedeteneralocurrirunainterrupción. ∗  1 ∗  1 …. ….  ∗   ∗  0 Obteniéndoselasiguienteecuación: ú 1  Dondei:eselnúmerosecuencialdeocurrenciadelainterrupción.  Paraestablecerenestemejorescenariolacantidaddeframesquenoseretransmiten, seobservaenlaFigura2elTflujonqueeslatransmisióndetodoelvideoqueesiguala:  …  ElTflujo1queeselflujotransmitidoconlaprimerainterrupción,querepresentaelflujo conmayorcantidaddeframes,conloqueseestablecelasiguienteecuación.     Concluyéndosequeestenúmeroseríasiempremuchomayoryaquelasinterrupciones ocurrenenlosiniciosdelavisualizacióndelvideo.Realizandounacomparaciónentelos dos escenarios se puede establecer que en el peor escenario, la cantidad de retransmisióndelosframesocasionaunacongestiónenelusodelaredinaceptable. Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 100 Tambiénesimportanteindicarqueeltiempoderetransmisióndeframessiemprees menorenelmejorescenarioencomparaciónconelpeorescenario. Conlafinalidaddeevaluarelmodelomatemáticoesnecesarioutilizarunanueva métricaqueeselnúmerovecesqueunflujodebytesesretransmitidoenbasealnúmero de interrupciones dadas. Para determinar el tiempo invertido enrepetirlosflujos cuandoocurreunainterrupción,seplanteanlassiguientescondicionesideales:  Capacidaddecanalconstante.  Noexistenretransmisionesporcausasdepérdidadedatosenelcanal. EsnecesariodeterminarlacantidaddebitstransmitidosenTdata,lasiguienteecuación permitecalcularobtenerelnúmerodebits. ú  ∗  SielcanalesAsymmetricDigitalSubscriberLine(ADSL)conWiFitransmitea10Mbpsy siTdata1tuvountiempodeejecuciónde16,20segundos,entonceslaecuaciónpara obtenerelnúmerodebitsquesetransmitieronseria: ú  16,20∗10162  Paraobtenerlacantidadenbyteslodividimospara8obteniéndose20,25MB.  Paradefinirelanálisisdelacantidaddebytesquesonretransmitidosencada flujoseprocedeadesignarunvaloracadatdataparatransformarloanúmerodebytes ypoderanalizarelefectodelasretransmisiones,sedetermina3interrupcionesyse obtienelostiemposdeTdata1=28s,Tdata2=4s,Tdata3=12syTdatan=32s;aplicando laecuaciónanteriorseobtienelacantidaddebytesquesehantransmitidoencadauno deellos:Tval1=35MB,Tval2=5MB,Tval3=15yTvaln=40MB.EnlaFigura2.21estos valoressonordenadosdemenoramayorparapoderestablecerdeformagráficala cantidaddevecesquesonretransmitidoscadaflujo,tambiénpuedeanalizarsequehay flujosquenoseretransmiten.  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 101  Figura2.21Flujosretransmitidos   Figura2.22Totaldeflujosretransmitidos  EnlaFigura2.22sedefinematemáticamentecadatdataysucorrespondiente tamaño en bytes, también se detalla la cantidad de bytes de cada flujo que se retransmitenyelnúmeroderetransmisionesentotalquepresentacadaflujoporefecto de las interrupciones, para este número se aplicó la ecuación 2.Tambienpuede observarseeltotaldevideotransmitidoyeltotalderetransmisión, el 138% es totalmenteunfactornegativoinfluyenteenlaQoEdelusuario. LaFigura2.23indicalarelaciónentreelnúmerodevecesquelosflujoshansido retransmitidos,enesteescenarioelflujodemenortamañoseretransmitepormás ocasiones,apesardeserunflujodemenortamañoenbyteslacantidadtotaldebytes retransmitidos afecta directamente al servicio de video streaming que enfrenta interrupciones,provocandodegradacióndecalidadpercibidaporelcliente,quiendesea recibirunserviciocontinuoyefectivo. Tdata2 Tdata3 Tdata1 Tdatan #retrans 4s 12s 28s 32s 55 5 53 10 10 10 2 20 20 1 5 Tval2 Tval3 Tval1 Tvaln 5MB 15MB 35MB 40MB Tdata Tamaño bytes bytes retransmitidos #retrans totalbytes retrans 28,00 35,00 20,00 1 20 12,00 15,00 10,00 2 20 4,00 5,00 5,00 3 15 Totalvideo s Totalvideo MB Totalretrans MB % 32 40,00 55,00 138 Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 102  Figura2.23Análisisderetransmisióndeflujos   Figura2.24Efectosdelaretransmisión  La cantidad de bytes adicionales que deberá soportar el clientealdarse interrupciones puede observarse en la Figura 2.24, el efecto que ocasiona las retransmisionessuperannegativamentealosnivelessoportadosporelusuario. Para corroborar los resultados obtenidos en el supuesto caso planteado anteriormente,sehaprocedidoarealizarunaexperimentaciónreal en el mejor escenario,  generando interrupciones al inicio del video.  En la Figura 2.25 puede observarsetodoslosdatosobtenidostantodelatransmisióncomodelainterrupciony eltiempototaldeejecución.  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 103  Figura2.25Experimentaciónmejorescenario   Figura2.26Totalderetransmisiónmejorescenario   Figura2.27Resumenderetransmisionesmejorescenario  La definición de los datos, su transformación en bytes y la cantidad de retransmisiones de cada flujo se han establecido en la Figura 2.26.Enestemejor escenario, se puede observar el total de video transmitido y la cantidad de bytes retransmitidos,definiéndosequesedaunmenorporcentajedeafectacióncuandoel usuariohavisualizadopocosframesyenfrentaunainterrupción. abc Texec (n+1)*Tstart ∑(Tdatai) ∑(Tinti) a+2(b)+c+Tdatan' s3,93 16,20 12,21 3,93 22,18 10,90 3,93 11,80 16,06 3,93 1168,82 1219,00 15,72 50,18 39,17 1324,07 MB 4,91 20,25 15,26 4,91 27,73 13,63 4,91 14,75 20,08 4,91 1461,03 1523,75 19,65 62,73 48,96 1655,09 Tstart Tdata3 Tint3 Tstart Tdatan' TdatanTstart Tdata1 Tint1 Tstart Tdata2 Tint2 Tdata Tamaño bytes bytes retransmitidos #retrans totalbytes retrans 22,18 27,73 7,48 1 7,48 16,20 20,25 5,50 2 11,00 11,80 14,75 14,75 3 44,25 Totalvideo s Totalvideo MB Totalretrans MB % 1219 1523,75 62,73 4 Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 104  Figura2.28Efectosdelaretransmisiónmejorescenario  Enestemejorescenario,dondelasinterrupcionessehandadocasialiniciodel videosepuedeobservarenlaFigura2.27queelflujode14,75MBhasidoretransmitido 3veces. EnlaFigura2.28sepuedeestablecerlacantidaddebytesretransmitidosque afectanlaprestacióndelserviciodevideostreamingenun4%. Esimportantecompararlosefectosdelasinterrupcionesenelpeorescenario dondelasinterrupcionessedancercadelafinalizacióndelvideo,paraellosehatomado datosdeunaexperimentaciónreal(Figuras2.29y2.30),dondeeltamañodelosflujos retransmitidosesmuchomayorencomparaciónalosflujosdelmejorescenarioypor ende tienen un 50% de afectación a la calidad percibida por el usuario del servicio proporcionado. EnestepeorescenariosepuedeobservarenlaFigura2.31queelflujode236,88 MBhasidoretransmitido3veces.Esteflujoqueseretransmiteportresocasioneses totalmentesuperioralflujoqueserepiteigualcantidadenelmejorescenario(14,75 MB). Demostrando la afectación al canal por la cantidad de vecesquelosflujosse retransmiten,enestecasosoninaceptablesyaqueafectanindiscutiblementealaQoE yQoSdelserviciodevideostreaming,alocasionardesperdiciodetiempoporpartedel usuarioenlareproducciónrepetidadelvideo.  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 111         3. Solución básica basada en proxies paraiOS Seexponeaprofundidadeldiseñodelasoluciónbásica,sucaracterizaciónbasadaen patronessoftwareparaimplantarunmecanismoproactivoquecontrolainterrupciones en la transmisión de video streaming. De manera puntual, se detalla el proceso de desarrollodelprototipodesarrolladodenominadoJADE‐iPhone,que implementa el modelobásicopropuestoysedemuestrasuefectividadalbrindarcontinuidaddela transmisióndelvideoeneldispositivomóviliOS.         Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 112           Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 113 3.1. Análisisdeldiseñobasadoenpatronessoftware Enelcapítuloanteriorseexplicóelmecanismobásicoquepermitelaejecucióndel procesodereproduccióndevideoatravésdeusodelpatrónMVC,enbasealanálisisy pruebasrealizadasdelmodelomatemáticosedefinióelimpactodelasinterrupciones enlacantidadderetransmisionesdelosdatosquepuedenocurrir,influyendoenla congestióndelaredyeneltiempodeejecucióndelserviciovideostreaming.Elimpacto negativo de mayor preocupación, es la QoE del usuario al causarlemolestiasde demoras,malacalidaddevisualización,reiniciodesesiónqueprovocaelabandonode la sesión. Estamos interesados en establecer una solución basada en proxies que controlalasinterrupcionesyreducelasretransmisionesdelosflujos,estoselograalser proactivos en detectar una eminente quiebre en la comunicación y establecer los mecanismosnecesariosparapermitiralusuariocontinuarvisualizandoelvideodesdela posición de reproducción en la que se encontraba cuando ocurrió la interrupción. Buscamosdemostrarqueelmodelopropuestoreducelasretransmisionesymejorael tiempodeejecución,loqueapoyaindudablementealamejoradelaQoEdelusuario, tambiénpretendemosconseguirmedirelimpactodemejoradetransmisióndelcanal loqueinfluyeenlaQoS.  Figura3.1Diagramadecasosdeuso Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 114 Sehanestablecidonuevasfuncionalidadesaestemodeloconlafinalidadde controlarlasinterrupcionesquepuedandarseenelcanaldecomunicaciónylograrla reconexión automática, potenciando el servicio de video streaming al proveer de mejoresnivelesdeQoEalusuarioalproveercontinuidaddereproducciónalocurrir problemasenelcanaldecomunicación. El modelo propuesto mantiene la flexibilidad al cambio, orden, reutilización, escalabilidad, modularidad… aspectos solventados por uso del patrónMVCenel mecanismobásicodevideostreaming,descritoenelcapítuloanterior.Losrequisitos quedebecubrirlapropuestasehanestablecidoatravésdelmodelodecasosdeuso definidoenlaFigura3.1enelqueseestablecenlosprocesosdelareproduccióndel video,revisióndelalmacenamiento,análisisdelcanaldecomunicación,gestióndeuna interrupciónymanejodeunareconexión. Enlatabla3.1sedetallatodoelprocesodelasolicituddelserviciodevideo streaming,lacoordinaciónporpartedelProxyylaatencióndelpedidorealizadaporel servidor. Tabla3.1Casodeusoreproducirvideo CasodeUso:reproducirvideo Actores:cliente Resumen: se describe puntualmente como inicia la petición de la reproduccióndelvideoysudespliegue. Precondiciones: Descripción: CursoNormal: 1. Elclientesolicitalavisualizacióndelvideo 2. Ingresalosdatosdelpuertoyservidor 3. LosdatossonvalidadosporelProxy 4. AlnoexistirproblemaselProxysolicitaelservicioalservidordevideo streaming 5. Sedespliegaunaventanaenlaqueiniciaelvideostreaming 6. Elservidorinicialaentregaperiódicadelosflujosalalmacenamiento temporal  Poscondiciones:sesolicitalarevisióncontinuadelalmacenamiento Observaciones:   Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 115 Sedetallalafuncionalidadreferentealarevisiónperiódicadelalmacenamiento temporaldondesealojanlosframesparadeterminarsihayproblemascuandosesupera elumbralpermitido(tabla3.2)ytodoelprocesorelacionadoconevaluarelestadodel canaldecomunicacióninalámbricoyestablecersisehadadounainterrupciónpara alertardeesteeventoalProxyquienrealizalasaccionestendientesaenfrentareste problema(tabla3.3). Tabla3.2Casodeusosolicitarrevisiónalmacenamiento CasodeUso:solicitarrevisiónalmacenamiento Actores: Resumen:seexplicalaimportanciadeverificarelalmacenamientotemporal Precondiciones:elProxysolicitalarevisióndelalmacenamiento Descripción: CursoNormal: 1. Continuamentesepidelainformacióndelestadodel almacenamiento 2. Secomparaconelnivelmáximoestablecido 3. Segeneraunaalertaencasodesuperarelumbraldefinido 4. SecomunicadeesteproblemaalProxy  Poscondiciones:sesolicitalaevaluacióndelcanaldecomunicación Observaciones:   Tabla3.3Casodeusoevaluarestadocanaldecomunicación CasodeUso:evaluarestadocanaldecomunicación Actores: Resumen:paraasegurarquesetratadeunainterrupciónesnecesarioevaluar cómoestálacomunicacióninalámbrica. Precondiciones:elProxysolicitalaevaluacióndelcanaldecomunicación Descripción: CursoNormal: 1. SeevalúalacomunicaciónaniveldeRTSP 2. SeevalúalacomunicaciónaniveldeUDP 3. Sedeterminaelestadodelcanaldecomunicación 4. EsteestadoescomunicadoalProxy  Poscondiciones:sesolicitamantenerlacontinuidaddelservicio Observaciones:  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 116 SeexplicaelprocesoquesigueelProxyparadefinirlaoperaciónarealizary solventarunainterrupcióndada(tabla3.4)ysedetallatodalafuncionalidadalocurrir unainterrupción,elusodebufferparaalmacenarlosframesquehansidoenviadospor elservidoryquenopuedenserentregadosalclientealhaberocurridounainterrupción (tabla3.5). Tabla3.4Casodeusomantenercontinuidaddelvideo CasodeUso:mantenercontinuidaddelvideo Actores: Resumen:frenteauneventodelcanaldecomunicacióndebegestionarsela continuidaddelserviciodevideostreaming Precondiciones:elProxysolicitalaejecucióndeunprocesodeacuerdoal estadodelcanaldecomunicación Descripción: Cursoalertainterrupción: 1. Encasodeserunaalertadeconexiónsesolicitalagestiónde interrupción Cursoreconexión:  2. Cuandoelcanalseharestablecidosesolicitalareconexión automática  Poscondiciones: Observaciones:  Tabla3.5Casodeusogestionarinterrupcióndelservicio CasodeUso:gestionarinterrupcióndelservicio Actores:cliente Resumen:explicaeldetalledelasactividadesacumplircuandoocurreuna interrupciónycomosecontrolalamisma Precondiciones: Descripción: Cursonormal: 1. Sesolicitaelalmacenamientodelosflujosenelbuffer 2. Sedespliegaenlainterfazgráficadelusuarioelmensajequeseha dadounproblemayqueseencuentraenestadodeesperapara reconectarseautomáticamente 3. Sepideelserviciodeevaluarcontinuamenteelcanalde comunicación.  Poscondiciones: Observaciones:   Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 117 Tabla3.6Casodeusogestionarreconexión CasodeUso:gestionarreconexión Actores: Resumen:explicaeldetalledelasactividadesacumplircuandoelcanalseha restablecido Precondiciones: Descripción: Cursonormal: 1. Sesolicitaquelosflujosalmacenadosenelbufferseantransmitidos aldispositivocliente 2. Elclienteautomáticamentecontinúavisualizandoelvideoenelpunto enelqueseencontrabacuandoocurriólainterrupción.  Poscondiciones: Observaciones:  Enlatabla3.6seexplicalarecuperacióndelosframesdelbufferyeldespliegue enelclienteunavezquelacomunicaciónseharestablecido.  3.1.1. Justificacióndelospatronessoftwareautilizar Lapropuestadeestediseñosefundamentaenproveerunmodelogenéricoquepueda ser implementado en un escenario de experimentación específico para dispositivos inalámbricos,sehadecididoutilizarelpatrónMVCaplicadoenelmodelodelcapítulo anterior,porlaspotencialidadesquepresentaalpermitirdesarrollarcódigoordenado alsepararlosdatosdelaaplicación,lainterfazdeusuarioylalógicadecontrol,loque posibilitalafacilidaddecambiosyadicióndefuncionalidades,apoyaalaintegracióny la reutilización de componentes, brinda escalabilidad y facilidaddeldesarrollode prototipos.SehadecididoimplementarelpatrónCompositeenelladodelavistapara que su contexto y componentes se organicen estructuradamente y puedan ser reemplazadosconfacilidad;elpatrónObserveracompañaalmodeloparaestablecer cambios de estado del almacenamiento o buffer y notificar oportunamente al controladordeloscambiosdeestadodelobjetoobservadoyse utiliza el patrón Strategyenlacapacontroladoraparadeterminarlasaccionesaseguiren caso de gestionarunainterrupciónoreconexióndelservicio. Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 118  Figura3.2Modelobasadoenpatrones  El patrón Proxy es el encargado de ser el intermediario entre el cliente y el servidorseubicaenlacapacontroladora,quieneselorquestadordetodoelmecanismo decontroldeinterrupción.Paralograrlafuncionalidadrequeridaypermitirelcontrol delasinterrupcionessehanadicionado componentesquepuedenobservarseenla Figura3.2, en este se puede observar el incremento de un subsistema externo que permiteseejecutelaevaluacióndelcanaldecomunicación. Losrequisitosestablecidosenelcasodeusosolicitarrevisiónalmacenamiento sehaimplementadoatravésdelpatrónObserver,quefortalecelacapadelmodelodel MVC,seencargadeestarconstantementemonitoreandoalalmacenamientoyrealiza laevaluacióndelestadodelbuffervselnivelmáximoestablecido.Cuandoelbuffer superaelumbralelobservadornotificaalProxyesteevento.  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 119 Cuando ocurre la notificación de problemas en el almacenamiento, se debe ejecutarlosrequisitosdefinidosenelcasodeusoevaluarestadocanaldecomunicación paraellosehavistolanecesidad de crear un paquete externo conformado por un observadoralmismonivelqueelcontrolador,esteseencargaderecibirelpedidodel Proxyyrevisarquesucedeconelcanalinalámbrico,lapotencialidaddeesteobservador estáenquegarantizaalaplicativosirealmentehayunainterrupción,hecho quees notificadoalservidor.Deigualformacuandohayunareconexión,lautilidaddeeste observadoresvisiblealproporcionarelserviciodeindicardeformaoportunayeficiente cuandoserestableceelcanal. Paracumplirconlosrequisitosespecificadosenloscasosdeuso mantener continuidaddelservicio,gestionar interrupcióndel servicioygestionarreconexiónal obtenercomorespuestaelestadodecanaldesconectado,elProxysolicitaalpatrón Strategy, la ejecución del algoritmo de interrupción, el cual realiza dos actividades: solicitud del almacenamiento temporal de los flujos emitidos por el servidor y despliegueenlavistadelmensajereconectando. Cuando los problemas de conexiónhansidosuperados,elobservador del subsistemaexternodeterminaqueelcanaldecomunicaciónseharestablecido comunicandodeestehechoalProxy,quiénsolicitaalpatrónStrategylaejecucióndel algoritmodeconexión;enestecasosepidequelosflujosalmacenados en el almacenamientotemporalseantransmitidosalcliente.  3.1.2. Diseñoarquitectónicoydedespliegue Eneldiseñosedefinelaarquitecturadelapropuestaquesoportelosrequisitosynos lleveaimplantarelpatrónbásicobasadoenpatronessoftware.Eldiagramadeclases delsistemaseexponeenlaFigura3.3. Acontinuaciónseexplicalarelaciónentreelmodelodepatronessoftwareylas clasesquehansidodefinidaseneldiagramadeclases:  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 120  Modelo y patrón Observer: las clases que permiten el almacenamiento temporalyelobservadorqueanalizaconstantementeelestadodelbuffer son:ServerStreaming,BufferyDataListener.  Vista y patrón Composite:lasclasesquesonejecutadasparalograrel desplieguedelvideo streaming en el dispositivocliente son: VideoPlayer, URLStreamingyVideoView.  Controlador:defineelpatrónProxyelcualestárepresentadoporlasclases AgentProxy, ServerAgentProxyyClienteAgentProxy. El patrón Strategy también fortalece la capa de control implementado mediante las clases: ActionControler,InterrupciónActionyReconexionAction.  Elobservadorexternoquepermiteevaluarelestadodelcanalde comunicaciónestárepresentadoporlasclases:EnlaceListener,ListenerUDP yListenerRTSP.   Figura3.3Diagramadeclases   Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 127 3.3. Análisisdelaimplantaciónexperimental SehadesarrolladoJADE‐iPhoneparalaplataformaiOS,paraimplantarelmecanismo quecontrolalatransmisióndelvideoysuvisualizaciónenlosdispositivosinalámbricos, laideabásicaesevitarqueelusuariotengaquereiniciarunasesiónRTSP,cuandoocurre unainterrupciónyquepuedarecibirendiferidolosframesdevideoperdidos,locuales estántemporalmentealmacenadosenunbufferhastaqueeldispositivomóvilvuelvaal áreadecobertura.EneldesarrollodeJADEparaiPhoneseutilizaunaarquitecturade agentes de software, que proveen métodos orientados a establecer la reanudación automáticadelasesióndelusuariosinpérdidadelainformación. 3.3.1. Proyeccióndelospatronessoftwareenlosdiagramasdediseño En el diseño se define la arquitectura de la propuesta, los diagramas de clases del sistemaseexponenenlasFigura3.9.Acontinuaciónseexplicalarelaciónentreel modelodepatronessoftwareylasclasesquehansidodefinidaseneldiagramade clases:  Modelo y patrón Observer: las clases que permiten el almacenamiento temporalyelobservadorqueanalizaconstantementeelestadodelbuffer son:MemoryStream,DataStreamyNSStream.  Vista y patrón Composite: las clases que son ejecutadas para lograr el desplieguedelvideostreamingeneldispositivoclienteEAGLView,Rendery UrlRTSP.  Controlador:enestesedefineelpatrónProxyelcualestárepresentadopor lasclasesAgent,AgentProxyyNAgent.ElpatrónStrategytambiénfortalece lacapadecontrolimplementadomediantelasclases:BehaviourFactory, BehaviourConnectyBehaviourDisconnect.  Elobservadorexternoquepermiteevaluarelestadodelcanalde comunicaciónestárepresentadoporlasclases:ConnectionListener, ListenerPortUDP, ListenerPortRTSP, ListenerMessageUDP, ACLMessage, ListenerMessageRTSPyMessageRTSP. Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 128   Figura3.9DiagramadeclasesiPhone  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil  129   Figura3.10Diagramadesecuencia  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 130 EnlaFigura3.10semuestraneldiagramadesecuenciaqueexplicaadetallela comunicaciónquesedaentrelasclasesparacumplirelestablecimientodelasesiónde videostreaming,laactivacióndelosobservadores:delalmacenamientoydelcanalde comunicación, la definición de una interrupción y la selección del algoritmo que se ejecutadeacuerdoaleventoocurrido. En la Figura 3.11 se expone el diagrama de despliegue donde se indica la ubicacióndeloscomponentesylacomunicaciónentreellos,sepuedenotarqueelProxy seubicatantoenelclientecomoenelservidordeaplicaciónparaconseguirgenerarla comunicaciónygestióndelBuffercuandoocurralainterrupción,estoapoyaraaqueno sepierdanlosframesyqueseanmostradosenelclienteunavez solucionado el problemaqueocasionolainterrupción.  Figura3.11Diagramadedespliegue   Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 131 AliniciarestavisualizaciónelProxysolicitaeltrabajodeobservadoraNSStream quien continuamente está revisando a MemoryStream y define alerta de umbral superado.SiesteeventoocurreelProxysolicitaelserviciodeConnectionListenerde observarelestadodelcanaldecomunicación,siestarespuestaaseguraquehayuna interrupción el Proxy invoca al servicio del BehaviourFactory para que seleccione el algoritmoaejecutar,enestecasoBehaviourDisconnect.Estealgoritmoseencargade queelProxysolicitealServerStreamingelalmacenamientotemporaldelosflujosque nopuedensertransmitidosyalConnectionListenerpidequeevalúeelcanalydetermine surestablecimiento.AlrestablecerseelcanalelProxyrecibeestanotificaciónypideal BehaviourFactorylaejecucióndelalgoritmocorrespondiente,paraestasituaciónsería BehaviourConnect mediante el cual el Proxysolicitalatransmisióndelflujoquese encuentraalmacenadoenelBufferdelServidordeAplicaciónyseaentregadoalproceso devisualizaciónubicadoeneldispositivomóvil.  3.3.2. Desarrollodelmodeloconsoftwarepropietario Con miras a crear y ejecutar agentes en el entorno iOS, se desarrolló el aplicativo denominadoJADE‐iPhone,queesunportdelcódigodeJADESHARPcreadoparaser utilizadocon.NETCFo.NETJADE_SHARP. Este código está bajo licenciaGNULibrary GeneralPublicLicense(LGPL)3yescompatibleconlaversión2.1deJADESHARP,la libreríadesarrolladatomaencuentaloscopyrightylicenciasdeJADE. JADE‐iPhonees un aplicativodesarrolladoen código abiertopara interactuar específicamenteconeliOSyaligualqueJADE,posibilitalaimplementacióndeagentes bajolosestándaresFIPA,suprimeraversiónpermitelacomunicacióndemensajesACL; funciona como JADE LEAP en modo Split, significa que el contenedor en el que se despliegaelagentesedivideenunapartefrontal(FrontEnd)eneldispositivomóvily unapartetrasera(BackEnd)enunservidorremoto. JADE‐iPhonepermiteeldesarrolloyejecucióndeagentesJADEenterminales móvilesconectadosatravésderedesinalámbricas,tomandoencuenta que estos dispositivos presentan limitaciones en algunos recursos como es la conectividad, Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 132 memoria y procesamiento. Toda la comunicación está basada en elintercambiode mensajes.LaPlataformaJADE‐iPhonequealbergaalagenteseencargadehacerlellegar losmensajesalaplataformadelagentedestinatario.Lacodificacióndecodificaciónde mensajeslahacenautomáticamentelosagentes. LaprimeraversióndelaplicativoJADE‐iPhoneproporcionaunainterfazamigable paraelaccesoalasfuncionesbásicasdelterminalmóvilalejecutarvideostreaming, permitelacreacióndeagentesysucomunicaciónmediantemensajesACL,basadoen losestándaresFIPA;alserIphoneunaplataformacerradayalnoexistirenelmercado un aplicativo que posibilite la implementación de agentes, el aplicativo permite la transmisióndefotogramas. Se procedió a adaptar la arquitectura ya explicada de los agentes Jade al protocoloRTSP/RTPquehalogradoquelatécnicadevideostreamingseamuyutilizada, yestévigentehastalaactualidad.EléxitodelprotocoloRTSP,sedebeasuvelocidady eficienciaalahoradetransmitirvideosdegrantamañoycalidad.Aestaeficienciaen los dispositivos inalámbricos se le añade el CODEC de video H263, que comprimen mediantealgoritmoseltamañodelosfotogramas,paraevitarocuparungranespacio dememoriaeneldispositivomóvil. El Proxy se divide entre el cliente y el servidor, éstos se comunican continuamenteparaconocerelestadodelatransmisióndelvideostreaming,alocurrir unainterrupciónelProxyservidoralertaysolicitaquesealmacenenlosfragmentosen el buffer. El manejo de proxies y agentes inteligentes permite distribuir la carga computacionalymejorarlaefectividaddelarecuperacióndelainterrupción. Elmodeloquerealizalatransferenciadevideoentiemporealsobreteléfonos móvilesiOS,determinalassiguientesentidades(Figura3.12):unServidordevideoRTSP, un Agente Proxy Servidor(APS), un dispositivo móvil que actuará como cliente, albergandounAgenteProxyCliente(APC)yalaaplicaciónRTSPClientelacualsellama PlayeryvieneintegradaaldispositivoiPhone,estageneralaspeticionesyvisualizael video.  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil  133 ElServidorseconectaconelAPS,esteasuvezconelAPCmedianteunaconexión inalámbrica.EnlosenlacesentreServidor–APSyAPC–Clientesetransmitenmensajes utilizando RTSP que para comunicar video utiliza RTP.  Los agentes APS y APC se desplieganenlaplataformaJADEysecomunicanatravésdemensajesFIPAACL,conlo quesesimplificalacomunicaciónentreagentesevitandodeclararontologías.EnJADE‐ iPhoneelAPCsedivideendospartes:FrontEnddelAPCaserejecutadoenelteléfono iPhoneyelBackEndenelServidor,lasdospartesseconectanporunaredWiFi,donde lasposiblesdesconexionessegestionandeformatransparenteparaelAPC. ElAPScumpledosfunciones,laprimeraesladereceptarlosmensajesdelAPCy losenvíaalservidorsegúnlospuertosasignadosenlanegociaciónylafunciónrestante esreceptarlosmensajesprovenientesdelservidoryenviarlosalAPC. ElAPCpermitequeeldispositivomóvilpuedarecibiryenviarlosmensajesRTSP, lospaquetesRTPyRTCPdemanerasegura.EsteAPCimplementaunmecanismode almacenamientoyenvío,asícomoeldefiltrarlanegociaciónRTSPparaquesealomás transparenteposible.Esteresideeneldispositivomóvillocualaseguraqueelagente nuncasevaadesconectardelcliente.  Figura3.12ModeloJADEiPhone Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 134 AlcolocaragentesenelAPSyAPC,éstoscooperanendefinircuándoelmóvil está fuera de cobertura al usar señalización MTP, encargándose de resolver las desconexionesintermitentesyreanudarautomáticamentelasesióndevideostreaming. AlocurrirunainterrupciónlosmensajestransmitidosFIPA‐ACLalteléfonomóvilson guardados en el buffer del APS ya que no pueden ser entregados al destinatario, reenviándoseunavezquesereanudelaconexión. Al ocurrir una interrupción inalámbrica, los paquetes que llegan al APS son encapsuladosytratadosporelservicioderepartopersistente,estevaguardandotodos losmensajesquenosepuedenentregarasudestinatarioenelbuffer,hastacuandoel agenteAPCvuelvaaconectarseyseleenvíelosmensajesguardados.Deestamanera lainterrupciónporproblemasenlaredinalámbricapasainadvertidaparaelservidory elcliente. UnodelosbeneficiosenJADE‐iPhoneesqueintentareconectarelAPSyelAPC durantealgúntiempo.ElprotocoloMTPpermitedefinireltiempodeesperaparaqueel cliente se reconecte, éste tiempo influye en el dimensionamiento del buffer. Los fragmentos que no pueden ser visualizados en el cliente porque ha ocurrido una interrupciónsonguardadosenelbufferdelcliente.Losagentesinteligentescolaboran endefinirelestadodelaconexión.Alrestablecerselaconexiónentrelosagentes,elAPC leelosframesdevídeoordenadosen elbufferylos envíaalvideoreproductordel cliente.Deestaformasepermitequeelclienterecupereelvideodesdeelpuntode quiebre. ElcódigogeneradoposibilitaaliOSejecutaragentesJADEperoconlimitantes: nopermiteontologíassoloframesdetipoOrderedyQualified y se debe utilizar el servicioBEManagementServiceenelladodelservidor.Lossocketsdecomunicaciónse implantaronenObjectiveC.EstossocketsempaquetanlosmensajesACLenframesya sean OrdereroQuailified, para luego ser convertidos en datos binarios y que se encapsulanenTCP/IP;parapoderiniciarlaconexiónconelservidorJADE,seenvían mensajesdeHandShackingenlaplataforma.   Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 135 3.3.3. Resultadosexperimentales Enelescenariodepruebasseutilizóunservidordevideodelibredistribución,quees másaceptadoanivelmundialcomoesVLC.Sehatratadodeemitirelvideocodificado enunformatocompatibleconlosdispositivosinalámbricosiPhone.Laconfiguracióndel formatodevideoeselsiguiente:paravideoelCODECH.263,tasadebitsde900kbps, 25fps,ancho=176,alto=144yparaelaudioelCODECMPEG,tasadebitsde128kbps,1 canalylatasademuestreode44100.SeutilizóunaredinalámbricacontecnologíaWiFi conunpuntodeaccesode50Mbps,unaportátilIntelCorei5de2.67Ghzcon8GBde RAM, con tarjeta WiFi (Intel 82577LM) en el cual se ejecuta el servidor de video streamingyelAPS;unacomputadoraIntelCorei5de1.9Ghzcon4GBdeRAMytarjeta WiFi(IntelI218‐V)enelcualseejecutaAPCbackEndqueconectaaunmóviliPhone,en elqueseejecutaelclienteyelfrontEnddelAPCyundispositivomóviliPhonemodelo 5S. EnlaFigura3.13sepuedeobservarunafotografíadeestemecanismo en funcionamientoutilizandoproxies.Enestaimagen,puedeverseenlazonainferiorel dispositivo móvil y en su pantalla un fotograma del video que el cliente móvil está observando. En la parte central aparece la sucesión de mensajes FIPA ACL que se intercambianentreelAPCyelAPS,informaciónproporcionadaporlautilidadsnifferde laplataformaJADE‐iPhone.  Figura3.13FuncionalidaddeJADEiPhone Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 136 Se han realizado varias pruebas, simulando una interrupción en la red, para verificar y comprobar la efectividad de JADE al momento recuperarlospaquetes despuésdeunainterrupción.Sehaprobadoquemedianteelusodesistemadeagentes JADE‐iPhone,lassesionesdevideostreamingsiemprefueronreiniciadasenelpuntoen queelclienteperdiólaconexión. Paraelanálisisdeljitteryretardosehananalizado500framesendosescenarios, transmisióndevideostreamingsinproxiesytransmisiónconproxies.Enlafigura3.14 seanalizalavariacióndeljitter,enlacualseobservaqueel jitter enviando video streaming sin Proxy  tiene mayores niveles que la transmisión con control de interrupciones.  Figura3.14Análisisdejitter   Figura3.15Análisisdelretardo   Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 143 Sedetallalafuncionalidadreferentealarevisiónperiódicadelalmacenamiento temporaldondesealojanlosframesparadeterminarsihayproblemascuandosesupera elumbralpermitido(tabla4.2)ytodoelprocesoalanálisisontológicodelosrecursos deldispositivomóvilparaestablecersihayriesgodeunainterrupción,estecasodeuso esposteriormenteexplotadoydefinidosudetalle(tabla4.3).  Tabla4.2Casodeusosolicitarrevisiónalmacenamiento CasodeUso:solicitarrevisiónalmacenamiento Actores: Resumen:seexplicalaimportanciadeverificarelalmacenamientotemporal Precondiciones:elProxysolicitalarevisióndelalmacenamiento Descripción: CursoNormal: 1. Continuamentesepidelainformacióndelestadodel almacenamiento 2. Secomparaconelnivelmáximoestablecido 3. Segeneraunaalertaencasodesuperarelumbraldefinido 4. SecomunicadeesteproblemaalProxy Poscondiciones:sesolicitalaevaluacióndelestadoderecursosdeldispositivo Observaciones:   Tabla4.3Evaluarestadoderecursosdeldispositivo CasodeUso:evaluarestadoderecursosdeldispositivo Actores: Resumen:paraasegurarquesetratadeunainterrupciónesnecesarioevaluar ontológicamenteelestadodelosrecursosdeldispositivo Precondiciones:elProxysolicitalaevaluacióndelestadodelosrecursos Descripción: CursoNormal: 1. Serealizaelmonitoreodelestadodelosrecursos 2. Seefectúaelanálisisontológicodelosrecursos:batería,latenciay geolocalizaciónysedeterminasiexisteproblemadeinterrupción 3. SetransformalasaccionesdelagenteaserviciosWeb 4. SecomunicadelproblemadeinterrupciónalProxy  Poscondiciones:sesolicitamantenerlacontinuidaddelservicio Observaciones:  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 144 SeexplicaelprocesoquesigueelProxyparadefinirlaoperaciónarealizary solventarunainterrupcióndada(tabla4.4)ysedetallatodalafuncionalidadalocurrir unainterrupción,elusodebufferparaalmacenarlosframesquehansidoenviadospor elservidoryquenopuedenserentregadosalclientealhaberocurridounainterrupción (tabla4.5). Tabla4.4Casodeusomantenercontinuidaddelvideo CasodeUso:mantenercontinuidaddelvideo Actores: Resumen:frenteauneventodelcanaldecomunicacióndebegestionarsela continuidaddelserviciodevideostreaming Precondiciones:elProxysolicitalaejecucióndeunprocesodeacuerdoal estadodelosrecursosdeldispositivo Descripción: Cursoalertainterrupción: 1. Encasodeserunaalertadeinterrupciónsesolicitalagestiónde interrupción  Cursoreconexión: 2. Cuandoelcanalseharestablecidosesolicitalareconexión automática  Poscondiciones: Observaciones:  Tabla4.5Casodeusogestionarinterrupcióndelservicio CasodeUso:gestionarinterrupcióndelservicio Actores:cliente Resumen:explicaeldetalledelasactividadesacumplircuandoocurreuna interrupciónycomosecontrolalamisma Precondiciones: Descripción: Cursonormal: 1. Sesolicitaelalmacenamientodelaúltimaposicióndereproducción delvideo 2. Sedespliegaenlainterfazgráficadelusuarioelmensajequeseha dadounproblemayqueseencuentraenestadodeesperapara reconectarseautomáticamente 3. Sepideelserviciodeevaluarcontinuamenteelcanalde comunicación.  Observaciones:   Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 145 Tabla4.6Casodeusogestionarreconexión CasodeUso:gestionarreconexión Actores:Cliente Resumen:explicaeldetalledelasactividadesacumplircuandoelcanalseha restablecido Precondiciones: Descripción: Cursonormal: 1. Sepidealalmacenamientolaúltimaposicióndereproduccióndel video 2. ElProxysolicitaalservidorvideostreaminglareproduccióndelvideo desdelaposiciónespecifica 3. Elclienteautomáticamentecontinúavisualizandoelvideoenelpunto enelqueseencontrabacuandoocurriólainterrupción.  Poscondiciones: Observaciones:  Enlatabla4.6seexplicalarecuperacióndelosframesalmacenados temporalmenteenelbufferyeldespliegueenelclienteunavezquelacomunicaciónse harestablecido. DelaFigura4.1sehaexplotadoelcasodeusoevaluarestadoderecursosdel dispositivoenelqueseestablecetodalafuncionalidaddelanálisisontológicodelestado delosrecursosdeldispositivo,losagentesontológicosejecutansusaccionestendientes aestablecersihayunainterrupciónysutransformacióndelasaccionesdelagentea serviciosWebinteroperables(Figura4.2). Lafortalezadeestasoluciónradicaenladefiniciónproactivadelaocurrenciade unainterrupción,paralocualsesustentaenelplanteamientodeontologíasqueson gestionadas por el agente mediante comportamientos que en conjunto definirán la alertaeminentedeunainterrupciónylatransformaciónaserviciosWebparaapoyaren laejecucióndeestrategiasproactivasquepermitanenfrentarlamisma. Lanuevafuncionalidaddeestasoluciónsemuestraclaramenteenestediagrama decasodeusoenelquesedetallaelmonitoreo,elanálisisontológicoylaconsecución delainteroperabilidadatravésdeserviciosWeb. Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 146 Enlatabla4.7semuestralasactividadestendientesarealizarelmonitoreoconstante delosrecursosdeldispositivo:batería,latenciaygeolocalización.   Figura4.2Explosióndeldiagramadelcasodeuso  Tabla4.7Casodeusorealizarmonitoreoestadoderecursos CasodeUso:realizarmonitoreoestadoderecursos Actores:Proxy Resumen:seexplicalaimportanciademonitorearelestadodelosrecursos Precondiciones:elProxysolicitalarevisióndelestadoderecursos Descripción: CursoNormal: 1. Continuamenteseobtienelainformacióndelestadoalosrecursos deldispositivo:batería,latencia,geolocalización 2. Estainformaciónesalmacenadatemporalmente 3. Lainformacióndelosrecursosesmonitoreadaconstantemente 4. SecomunicaalProxyelestadodelosrecursosmonitoreados  Poscondiciones:sesolicitaelanálisisontológicodelosrecursos Observaciones:   Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 147 Sedetallatodoelprocesorelacionadoalasolicitudarealizar el análisis ontológico de: batería, latencia y geolocalización para poder definir si hay una interrupción(tabla4.8)ylaexplicacióndecómoseestableceelanálisisontológicodela bateríadeldispositivomóvil(tabla4.9).  Tabla4.8Casodeusorealizaranálisisontológicodelosrecursos CasodeUso:realizaranálisisontológicodelosrecursos Actores: Resumen:paraasegurarquesetratadeunainterrupciónesnecesarioevaluar ontológicamenteelestadodelosrecursosdeldispositivo  Precondiciones:elProxysolicitaelanálisisontológico Descripción: CursoNormal: 1. Sesolicitaelanálisisontológicodelabatería 2. Serequiereelanálisisontológicodelalatencia 3. Serequiereelanálisisontológicodelageolocalización 4. Sedeterminasiexisteproblemadeinterrupción  Poscondiciones:sesolicitatransformaraserviciosWeb Observaciones:  Tabla4.9Casodeusoanálisisontológicobatería CasodeUso:análisisontológicobatería Actores: Resumen:serealizaelanálisisontológicodelabatería  Precondiciones: Descripción: CursoNormal: 1. Serevisaelporcentajedecargadelabatería 2. Seestablecesielporcentajeestáenelrangodel10%al30% 3. Alestareneserangosedefineriesgodeinterrupciónderivadode estefactor.  Poscondiciones: Observaciones:  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 148 Sedetallatodaslasactividadestendientesaanalizarontológicamenteelestado delalatenciadeldispositivomóvil(tabla4.10)yseexplica el proceso del análisis ontológicodelageolocalización(tabla4.11).  Tabla4.10Casodeusoanálisisontológicolatencia CasodeUso:análisisontológicolatencia Actores: Resumen:serealizaelanálisisontológicolatencia  Precondiciones: Descripción: CursoNormal: 1. Serevisalalatenciaenmilisegundos 2. Seestablecesiestalatenciaessuperioralos100milisegundos 3. Siessuperiorseestableceunaalertadealtaprobabilidadde interrupción  Poscondiciones: Observaciones:  Tabla4.11Casodeusorealizaranálisisontológicogeolocalización CasodeUso:realizaranálisisontológicogeolocalización Actores: Resumen:serealizaelanálisisontológicodelageolocalización  Precondiciones: Descripción: CursoNormal: 1. Serevisalosdatosdelalatitudylongituddiagnosticandolared 2. Siestableceenquerangoseencuentraestainformación 2.1 0‐135m:conexiónfavorable 2.2 135‐150m:alertadeconexiónenriesgo 2.3 Mayorde150m:alertadeinterrupcióneminente 3. Sedefineeltipodealertadeacuerdoalrangoexplicado  Poscondiciones: Observaciones:   Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 149 Tabla4.12Casodeusotransformaraserviciosweb CasodeUso:transformaraserviciosWeb Actores: Resumen:SetransformanlasaccionesdelosagentesenserviciosWeb Precondiciones: Descripción: CursoNormal: 1. Seobtieneelanálisisontológicodelosrecursos:batería,latenciay geolocalizaciónysedeterminasiexisteproblemadeinterrupción 2. SetransformalasaccionesdelagenteaserviciosWeb 3. SeenvíalosserviciosWebalProxy  Poscondiciones: Observaciones:  Enlatabla4.12sedetallatodoelprocesodetransformacióndelasaccionesdel agenteaserviciosweb,conlafinalidaddeindicaralProxyqueestáocurriendouna interrupción.  4.1.1. Justificacióndelospatronessoftwareautilizar Enlasoluciónbásicabasadoenproxiesseplanteóundiseñosustentadoenpatrones softwarerobustoqueapoyaronenestablecermecanismosquepermitierongestionar efectivamenteelcontroldeunainterrupción,estediseñoproporcionaunaorganización estructuradadelMVC,sepotencióacadaunadeellasconlospatrones software Observer,StrategyyComposite. EnbasealasbondadesqueofreceMVCencuantoamodularidad,flexibilidad, facilidaddecambio,escalabilidad…yalosresultadosobtenidosenelcapítuloanterior, alasoluciónseadicionaunobservadorqueseencargadeevaluarynotificarelestado delosrecursosmonitoreados(batería,latenciaygeolocalización)yrealizarelanálisis ontológicoparadefinirproactivamentesihaocurridounainterrupción;tambiénseha incrementadounadaptadorquepermiteadaptarlosserviciosdelagenteontológicoen serviciosWebparaquepuedanserreconocidosenlaWebylograrlainteroperabilidad deseada. Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 150  Figura4.3ModeloWebinteroperable  ComosemuestraenlaFigura4.3sehaestablecidounincrementofuncionalen el subsistema externo que permite el monitoreo constante de los recursos del dispositivomóvilyelanálisisontológicoparadeterminarunainterrupción,enestecaso sehautilizadoelpatrónObserver.Paralograrlainteroperabilidad,elpatrónAdapter permitelatransformacióndelasaccionesdelagenteaserviciosWeb. AcontinuaciónsedescribeelsubsistemaMVC:  Modelo:estáubicadoenelservidordeaplicaciones,enesteseencuentra identificadoelalmacenamientotemporal,cuandoocurreunainterrupciónse grabalaposiciónactualdelareproduccióndelvideo.Lasoluciónsefortalece con la implementación del patrón Observer que constantemente está monitoreandoelestadodelalmacenamientotemporalyselocomunicaal Proxy.  Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 151  Vista:sedespliegaenlosdispositivosinalámbricosutilizandoelpatrónde diseño Composite. En caso de ocurrir una interrupción, se mostrará el mensajereconectando...,elcualpermaneceactivohastacuandoelcanalse restableceylareproduccióndelvideocontinúa.  Controlador:estáenelservidordeaplicaciones,paracomplementarsu accionarsehautilizadolospatronessoftware:ProxyyStrategy.Elpatrón Proxycumplelalabordeintermediarioentreelservidordevideostreaming yelreproductordevideo.Unadesusactividadesprincipalesesenviarla informacióndelhardwarededispositivomóvil,alsubsistemaexternoyen casoderecibirlaalertadeinterrupciónsolicitaalpatrónStrategylaejecución delalgoritmodeinterrupción.Almomentoderestablecerselacomunicación, el Proxy se encargará de requerir del patrón Strategy la ejecución del algoritmodeconexión. Sedescribeelsubsistemaexterno:  Enelladodelmodelosealmacenalainformacióndelhardwaredel dispositivocliente:latencia,bateríaygeolocalización.Estesefortalececonla implementación del patrón Observer que constantemente está monitoreandoelestadodelosrecursosdeldispositivomóvilyselocomunica alProxy.  EnelladodelcontroladorelObserver externo recibe la información del hardwaredeldispositivomóvilremitidoporelProxy; realiza el análisis ontológico correspondiente y define proactivamente una posible interrupción.EncasodeocurriresteeventoelpatrónAdaptertransformalas accionesdelagenteontológicoaserviciosWebinteroperablesylosenvíaal Proxy. EsimportantedetallarlafuncionalidaddelaplicativoWebinteroperable.Elreproductor devideosolicitaeldesplieguedelvideoalProxy,ésteasuvezlodemandadelservidor devideostreaming.Continuamenteseregistraelestadodelosrecursosdeldispositivo: batería,latenciaygeolocalización.Elestadodeestosrecursosesrevisadoporelpatrón ObserverdelsubsistemaexternoycomunicadosalProxy. Diseñodeunaplataformadeagentesparacontroldeserviciosdevideostreamingmóvil 152 ElProxysolicitaalObserverdelsubsistemaexternoelanálisisontológicodel estado de la batería, latencia y geolocalización. Del análisis realizado puede desprenderselaposibilidaddeinterrupción,enestecasoelpatrónAdapterseencarga detransformarlasaccionesdelagenteenserviciosWebylosenvía al Proxydel subsistema MVC. Este evento ocasiona que el Proxy solicite al patrón Strategyla ejecución del algoritmo de interrupción, el cual demanda que se almacene en el almacenamientotemporallaposiciónenlaqueseencuentraelvideo,despliegaenla vistaelmensajedequeestadesconectadoeiniciaelbucledereconexión. CuandoelProxyrecibelanotificacióndequeelcanalseharestablecido,solicita al Strategy la ejecución del algoritmo de conexión,elcualpermiterecuperar la informacióndelaúltimaposicióndelvideodelalmacenamientotemporalysolicitaal servidordevideostreamingeldesplieguedelvideodesdeestaposición. Enresumen,el aplicativodesarrolladopermiteelcontrolinteroperabledeunainterrupción;elusode agentesinteligentescomoserviciosWebapoyanenlaprediccióndeunainterrupción, pudiéndosealmacenarlaúltimaposicióndelvideo,conloqueselogralacontinuidad delvideostreaming. 4.1.2. Diseñoarquitectónicoydedespliegue Eneldiseñosedefinelaarquitecturadelapropuestaquesoportelosrequisitosydirija aimplantarelmodeloWebinteroperablebasadoenpatronessoftware.Eldiagramade clasesdelsistemaseexponeenlaFigura4.4. Acontinuaciónseexplicalarelaciónentreelmodelodepatronessoftwareylas clasesquehansidodefinidaseneldiagramadeclases:  ModeloypatrónObserver: las clases que permiten el almacenamiento temporalyelobservadorqueanalizaconstantementeelestadodelbuffer son:ServerStreaming,BufferyDataListener.  Vista y patrón Composite: las clases que son ejecutadas para lograr el desplieguedelvideo streaming en el dispositivocliente son: VideoPlayer, URLStreamingyVideoView.