Descripción de la actividad

La simulación por ordenador, como herramienta científica y técnico-profesional, ha ganado importancia progresivamente durante las últimas décadas. Esto es especialmente notable en el ámbito de las redes de comunicaciones debido, por una parte, al aumento de la capacidad de procesado de los ordenadores, y por otra parte a la creciente complejidad de las redes de comunicación. Esto ha hecho que los modelos matemáticos empleados tradicionalmente para el análisis y diseño de redes de comunicación de datos, fundamentalmente basados en análisis estocástico, vayan dando paso y en algunos casos, perdiendo terreno frente a las técnicas basadas en simulación.

La formación en estas técnicas está incorporada al currículo de Ingeniero de Telecomunicación en la titulación impartida en la Escuela Técnica Superior de Ingenieros de Telecomunicación (ETSIT) de la Universidad Politécnica de Cartagena, dentro de las prácticas de la asignatura Redes de Ordenadores del cuarto curso académico de dicha titulación.

El objetivo final del curso de simulación es que los alumnos sean capaces de analizar un sistema de comunicaciones real y desarrollar un simulador del mismo, obtener medidas y realizar un análisis estadístico de los resultados. En definitiva, que realicen una evaluación de prestaciones basada en simulación. En cuanto a la metododología,  está estructurada en dos etapas:

Viñeta La etapa de formación consta de 10 sesiones de prácticas en las que los alumnos van adquiriendo progresivamente los conocimientos y habilidades técnicas necesarias, mediante introducciones teóricas, experimentos prácticos, cuestiones de autoevaluación, repaso y ejercicios.Viñeta La etapa de proyecto consiste en la elaboración de un proyecto relativamente complejo, realizado en grupos de 2 ó 3 personas y en el que deben implementar un sistema del que se les proporciona una especificación, obtener medidas de rendimiento, analizar e interpretar los resultados y presentarlos, junto con el código, en una memoria completa.

Conviene destacar que los alumnos acceden a la asignatura sin conocimientos previos de C++, aunque sí de programación orientada a objetos. Tampoco han recibido formación en el resto de las herramientas comentadas (OMNeT++, perl, gnuplot). Se debe tener en cuenta, y así se le hace saber al alumno, que el objetivo de la asignatura no es aprender a programar en C++, por lo que C++ no se aborda de forma exhaustiva, sino muy al contrario, tan sólo se describe la sintaxis básica que el alumno necesitará para implementar la mayoría de los problemas que le pueden surgir durante el transcurso de las prácticas y el desarrollo del proyecto. Para una cobertura más completa, se insta a que el alumno empleé la bibliografía, incentivando su autonomía y su iniciativa a la hora de resolver problemas.

Profesor o equipo de profesores

Dr. D. Juan José Alcaraz Espin
juan.alcaraz@upct.es
Dr. D. Esteban Egea López
esteban.egea@upct.es
Departamento de Tecnologías de la Información y Comunicaciones   

Objetivos

Los objetivos del programa de prácticas se han planteado en los términos que establece el nuevo modelo educativo promovido por el proceso de integración del Espacio Europeo de Enseñanza Superior. De esta forma, los objetivos de la asignatura se han expresado en términos de competencias adquiridas por el alumno. Así, los dos objetivos fundamentales del programa: (1) que el alumno adquiera conceptos teóricos  relacionados con la simulación genérica de sistemas y (2) que sea capaz de emplear las herramientas necesarias para la evaluación por simulación de sistemas complejos, se plantean en términos de competencias a adquirir de la siguiente forma:

Competencias

Genéricas o transversales:
 Capacidad de organización y planificación
 Capacidad crítica y de trabajo en equipo
 Capacidad de aprender y de aplicar conocimientos a la práctica

Específicas:
Clasificadas en dos tipos
 Conceptuales (de carácter teórico): El alumno debe conocer: (1) Tecnicas de generación o   por computador de números aleatorios, (2)  la necesidad de simulación y los distintos modelos de simulación, (3)  el algoritmo de simulación por eventos discretos y (4) técnicas de análisis estadístico de resultados de simulación.
 Procedimentales (de carácter práctico). El alumno debe ser capaz de: (1)  programar aplicaciones complejas con C++, (2)  implementar un motor de simulación por eventos discretos, (3)  utilizar librerías de simulación y consultar la documentación necesaria, (4) manejar herramientas de automatización de las simulaciones, análisis de resultados y presentación de los mismos,  (5) dominar comandos básicos del sistema operativo Linux y (6) desarrollar un proyecto de simulación complejo.

Obsérvese que el objetivo fundamental de las prácticas no es el de experimentar los conceptos explicados en la parte teórica de la asignatura, sino proporcionar una visión teórica de los problemas y técnicas de simulación y, sobre todo, una experiencia práctica en la implementación  de simulaciones.

Temporalización/Programación

La metodología empleada  se apoya en dos actividades:
 Estructuración de los contenidos en sesiones "autocontenidas''. Cada sesión de prácticas aborda un contenido concreto del temario previsto. Se proporciona un cuadernillo de prácticas para cada sesión. En dicho cuadernillo se incluye, por este orden:  (1) los objetivos de la práctica, separados en dos grupos, los relativos a simulación y los relativos a programación; (2) una explicación teórica, más o menos extensa en función del tema tratado, (3) un desarrollo paso a paso muy detallado de las tareas a realizar en la práctica, (4) una sección de revisión de conceptos manejados, (5) una serie de cuestiones cortas de autoevaluación, (6) una conjunto de ejercicios propuestos y (7) bibliografía relacionada.
 Desarrollo de un proyecto de simulación final. Se proporciona al alumnado un documento que especifica los requisitos de un proyecto de simulación complejo: (1) introducción teórica, (2) requisitos del simulador, (3) escenarios a simular y (4) resultados a presentar, así como una serie de consejos para el desarrollo y los criterios de evaluación.

La metodología en sí es la siguiente. Dos terceras partes del curso se dedican al desarrollo presencial de las sesiones de prácticas. En cada sesión, al comienzo el profesor introduce el tema y explica brevemente los contenidos teóricos. En algunos casos, la explicación se apoya en la resolución de uno de los ejercicios planteados en el cuadernillo. Los alumnos deben a continuación seguir el desarrollo de la práctica tal y como se detalla en el cuadernillo y el profesor resuelve las dudas que surgen. Hay que destacar que para cada experimento o tarea que indica el cuadernillo se incluye una explicación del concepto manejado. La sesión finaliza con indicaciones sobre autoevaluación. El último tercio del curso se dedica al desarrollo del proyecto final.  En este caso, el profesor está disponible en el horario habitual de laboratorio aunque la asistencia no es obligatoria. El profesor resuelve dudas sobre el proyecto y proporciona sugerencias e indicaciones respecto a la implementación. En el diagrama de la figura 1 se muestra una secuencia temporal en la que observamos, en cada sesión, qué conjunto de contenidos se trabajan.

 

La figura ilustra la secuencia temporal de contenidos por sesiones. Las líneas rojas denotan contenidos de simulación y las azules de programación.

Proyectos desarrollados

Cada curso se propone un proyecto de simulación que aborda el estudio de un problema práctico de telemática. En general, se intenta buscar proyectos que permitan una amplia variedad de modificaciones con mínimas variaciones en el código para tener  flexibilidad a la hora de plantear requisitos mínimos y funcionalidad adicional y de los resultados a exigir.  En varios de los trabajos se exige además la validación del simulador sin indicar directamente cómo, de manera que los alumnos deben buscar un modelo teórico y un experimento adecuado. Con los proyectos se persiguen varios objetivos: Que los alumnos pongan en práctica los conceptos teóricos de desarrollo de modelos de simulación y apliquen y desarrollen las competencias adquiridas en el manejo de herramientas software. Al mismo tiempo, se les plantean trabajos relacionados con redes reales, tratando de despertar su curiosidad e interés y favoreciendo un conocimiento más profundo de dichas tecnologías. El planteamiento del proyecto contiene partes con una especificación más cerrada, lo que por un lado evita complicar en exceso la tarea asignada y por otro les fuerza a trabajar con el rigor y el orden necesarios en el diseño e implementación de especificaciones de sistemas de comunicaciones. Otras partes de la propuesta se dejan más abiertas para fomentar la iniciativa y la creatividad de los alumnos, así como su capacidad en la resolución de problemas. El trabajo requiere también que los alumnos trabajen en grupo, con todo lo que ello implica, y desarrollen también sus capacidades de comunicación escrita en la redacción de la memoria, de la que se le proporciona una guía general de elaboración y unos criterios de evaluación muy claros.

Resumimos a continuación algunos de los proyectos planteados hasta el momento:
  TCP. El objetivo de este proyecto es programar los mecanismos de control de congestión del protocolo  Transport Control Protocol (TCP), el más empleado a nivel de transporte en Internet. Concretamente los alumnos implementaron el mecanismo especificado conocido como  Fast Retransmit Fast Recovery, así como el cómputo del  Round Trip Time (RTT) y el Retransmission Time Out (RTO). Este mecanismo de control de congestión se basa en el control del tamaño de la ventana de envío de paquetes en el transmisor TCP. Este control responde a los eventos que el transmisor percibe: funcionamiento correcto, caracterizado por la llegada de ACKs en secuencia, pérdida de un paquete, detectado por la llegada de varios reconocimientos consecutivos; o pérdida de varios paquetes dentro de periodo de propagación de ida y vuelta, Round Trip Time (RTT), detectado por el vencimiento del temporizador de retransmisión. El simulador puede ser validado mediante la inspección de las trazas de diversos parámetros de TCP, y permite a los alumnos experimentar con fuentes de datos TCP en situaciones de congestión. Se proponen diversos escenarios en los que los alumnos comprobarán el efecto del ancho de banda disponible, el tamaño del buffer en el router, y el retardo en el rendimiento de las fuentes, caracterizado por la tasa de recepción de paquetes, la tasa de pérdida de paquetes y el retardo e transferencia. También se comprueban otros efectos como el reparto del ancho de banda entre distintas fuentes o la sincronización de las fuentes. De esta forma el alumno va descubriendo por sí mismo problemas clásicos en el tráfico de datos, lo que constituye la base para la explicación de tecnologías más recientes que dan respuesta a dichos problemas, como la gestión activa del buffer, los mecanismos de calidad de servicio o las versiones más recientes de TCP.
 OSPF. Se estudia el encaminamiento basado en estado del enlace mediante el protocolo OSPF Open Shortest Path First). La implementación completa del protocolo se considera demasiado compleja, así que se propone una versión con funcionalidad reducida del mismo. Para el cálculo de la mejor ruta se propone la implementación del algoritmo de Dijkstra. Este sistema también ofrece mucha flexibilidad, puesto que se pueden probar diferentes algoritmos de búsqueda de la mejor ruta y múltiples métricas para los enlaces. Cabe destacar que por la relación tan directa con los contenidos de teoría,  se pueden plantear una variedad de estudios teóricos relacionados con el tema. De hecho, varias de las soluciones entregadas los incluían incluso aunque no se exigieran como parte del proyecto.
 ATM. El Modo de Transferencia Asíncrono (ATM) es un protocolo de capa 2 ampliamente empleado en redes de datos, especialmente en las redes de acceso ADSL y en las redes de transporte de telefonía móvil 3G. ATM se caracteriza por ser capaz de albergar tráfico diverso, y por tanto de ancho de banda variable, asegurando unos parámetros predeterminados de calidad de servicio. Esto es posible siempre que las fuentes de tráfico estén caracterizadas por unos descriptores de tráfico que describen su comportamiento (tasa máxima, variación de la tasa de emisión de paquetes, tasa media, máxima duración de una ráfaga). Estos descriptores definen un ``contrato" de tráfico, tal que si las fuentes cumplen su contrato, la calidad queda asegurada por la red. Por su parte, la red ATM incorpora mecanismos de gestión de tráfico mediante los cuales se comprueba permanentemente que cada fuente cumple su contrato. Estos mecanismos se conocen como Control del Parámetro de Utilización (UPC).El proyecto consiste en que los alumnos programen el mecanismo de Control del Parámetro de Utilización UPC del Modo de Transferencia Asíncrono (ATM). El UPC consiste en un doble mecanismo de Leacky Bucket, y se emplea en el simulador para gestionar el tráfico proveniente de unas fuentes de tasa variable cuyo código se proporciona. El simulador permite a los alumnos comprobar el efecto de la multiplexación estadística en ATM, entender los descriptores de tráfico y cómo influyen en la tasa de pérdida de celdas de las fuentes. Estos experimentos permiten entender cómo las fuentes pueden adecuar su tráfico mediante la técnica de Traffic Shaping, que los alumnos implementan mediante un sencillo mecanismo de token bucket. Los alumnos comprueban que los flujos de datos mejoran su calidad de servicio (o al menos algunos parámetros de calidad) sin aumentar el ancho de banda de la red. Otra técnica, muy sencilla de implementar para los alumnos y que logra interesantes resultados en este sentido es el descarte selectivo de celdas.
 Algoritmos ARQ. Se aborda el estudio de los algoritmos ARQ clásicos: Go-Back-N y Selective Repeat. En este proyecto, puesto que consideramos que la complejidad de la implementación del simulador no es muy alta, se hace especial hincapié en la automatización de los resultados obtenidos, es decir, se exige la presentación de gráficas variando múltiples parámetros.
 OPS_v2
 Scheduling
 RFID
 Especificación Video Streaming

Conclusiones

Desde el momento en el que se implantó el curso en el año 2002, el planteamiento del mismo busca una implicación mayor del alumno en el proceso de aprendizaje, de acuerdo a las directrices  del nuevo modelo del EEES. El formato del curso actualmente es el resultado del proceso iterativo de evaluación y realimentación obtenido cada año que se ha impartido.

La experiencia hasta el momento nos ha permitido comprobar que  la calidad de los proyectos finales de simulación presentados año tras año es, por lo general, muy alta. La conclusión que extraemos de este hecho es que, a pesar de la percepción inicial de los alumnos ante la relativamente elevada carga de trabajo y de contenidos del curso, la estrategia empleada consigue los objetivos de aprendizaje planteados.