Práctica 1. ”Introducción a la Programación sobre Ethernet” Objetivo Familiarización con el entorno de programación basado en Linux/windows y la librería LINPAL/NEPAL. Acceso a las características de las tarjetas de comunicaciones. Especificación En esta práctica se pretende tener un primer contacto con el entorno de programación del laboratorio. Para ello se pide desarrollar un programa (nepal_info.c) que interactúe con la librería LINPAL/NEPAL con objeto de detectar el número de tarjetas de interfaz disponibles en su puesto de trabajo, mostrando toda la información posible sobre dichas tarjetas de interfaz, incluidas las estadísticas de las mismas. Parte Opcional Desarrollar un programa (nepal_stats.c) que permita seleccionar una de las tarjetas de interfaz disponibles y muestre las estadísticas detalladas de dicha tarjeta en un intervalo de tiempo seleccionable (Valor por defecto 15 segundos). Resultado El resultado de esta práctica consistirá en el código del programa (nepal_info.c), así como una breve memoria explicativa que incluya al menos la estructura del programa y las estructuras de datos utilizadas. En caso de entregar la parte opcional deberá entregar el código del programa nepal_stats.c, así como el pseudocódigo del mismo y las estructuras de datos más representativas. Práctica 2. “Mecanismo de Auto-Aprendizaje de Direcciones” Objetivos El objetivo es codificar el mecanismo de autoaprendizaje utilizado por los bridges para construir su tabla de encaminamiento. Especificación En la presente práctica se desarrollará un programa denominado bridge que deberá ir almacenando las direcciones MAC aprendidas por la interfaz de red. El programa denominado bridge, no admitirá parámetros de entrada y deberá ofrecer a los usuarios una interfaz textual de comandos que permita las siguientes instrucciones: 1 2 3 show, para mostrar la tabla de direcciones MAC aprendidas a través de la red. stats, para mostrar las estadísticas de tráfico de la interfaz. fin, para terminar el programa. Resultado El resultado de esta práctica consistirá en el código del programa bridge.c, así como una breve memoria explicativa que incluya al menos la estructura del programa y las estructuras de datos utilizadas. Práctica 3. “Protocolo de Resolución de Direcciones. ARP” Objetivo Implementación de protocolos de resolución de direcciones físicas a partir de direcciones de nivel de red. Especificación Una subred como Ethernet opera a nivel de enlace de datos y emplea su propio esquema de direccionamiento -direcciones IEEE de 48 bits- que los protocolos o las aplicaciones de nivel superior como el nivel de red deben respetar. Por otro lado, los protocolos de las capas superiores al nivel de enlace, pueden definir una estructura distinta para su espacio de direcciones, con un tamaño y una organización que respondan a principios de diseño diferentes. El protocolo de nivel de red IP (Internet Protocol) transmite y recibe datagramas con direcciones de longitud igual a 32 bits sobre cualquier tipo de subred. En el caso de que la subred sea Ethernet, el protocolo IP necesita conocer dada una dirección IP destino perteneciente a un sistema de su misma subred, la dirección Ethernet correspondiente. Para ello se utiliza el protocolo denominado Address Resolution Protocol o ARP [RFC826] [Stevens94]. En la Figura 1 se representa el formato de trama del protocolo ARP. En dicha figura se muestra la asignación de algunos campos en el caso del protocolo de red IP y el protocolo de enlace Ethernet. Para evitar tener que generar mensajes ARP por cada uno de los datagramas transmitidos, cada ordenador mantiene una tabla con las correspondencias entre direcciones IP y direcciones MAC que ha aprendido. Las entradas en la tabla dejan de tener validez después de un plazo de 5 minutos. En esta práctica se pide diseñar, desarrollar y comprobar un programa arp que genere y responda mensajes del protocolo ARP. El programa deberá mantener una tabla de 10 posiciones donde almacenar los valores de la correspondencia (dir_IP, dir_MAC) en la que cada entrada sólo será válida durante los 5 minutos siguientes a la recepción de cada respuesta. En caso de no recibir respuesta a una petición después de 2 segundos, el programa transmitirá de nuevo la misma petición hasta un máximo de 5 intentos. El programa también deberá ofrecer a los usuarios una interfaz textual de comandos que permita las siguientes instrucciones: 1. arp <dirección_IP>, para hallar la dirección MAC correspondiente a la dirección IP <dirección_IP>. 2. arp –a, para mostrar por pantalla el contenido de la tabla de direcciones 3. fin, para terminar el programa 0x01 ARP Request 0x0806 (ARP) 0x0001 0x0800 0x06 0x02 ARP Reply 0x03 RARP Request 0x04 RARP Reply 0x04 Destinat. MAC address Source MAC address Protocol Type 6 6 2 Cabecera Ethernet Hard. type Prot. type Hard. size 2 2 1 Prot. size operation MAC origen 1 2 6 Protocolo ARP IP origen 4 MAC destino IP destino 6 4 Bytes Figura 1: Formato de encapsulación Ethernet-ARP. Resultados El resultado de esta práctica consistirá en el código del programa arp.c así como una breve memoria explicativa que incluya la estructura del programa (pseudocódigo o diagrama de flujo) así como las estructuras de datos utilizadas. PROYECTO 1.- Desarrollo de un entorno autoconfigurado Objetivo Desarrollar un entorno de autoconfiguración de parámetros de red de equipos de una subred. Especificaciones La presente práctica pretende crear un entorno en donde no sea necesario configurar manualmente los parámetros de red (dirección ip, mascara de red,…) de los equipos de una subred. Ese entorno será cliente servidor, es decir habrá un servidor que, a petición de los clientes, les ofrecerá los parámetros de configuración (leídos de un archivo). Se seguirá el protocolo estándar de configuración de equipos (hosts). Deberá implementar la funcionalidad del servidor y de los clientes. Escenario de pruebas Nota.- en la memoria del diseño de la práctica los alumnos deberán completar el escenario de pruebas expuesto. 1. Usará la red del laboratorio. En un PC del laboratorio correrá su servidor de configuración. Otros PC del laboratorio serán los clientes. Servidor de configuración Clientes Red del laboratorio Práctica Previa. Para que el grupo se familiarice con la programación en LINPAL/NEPAL y le sea más fácil afrontar el proyecto deberá desarrollar una práctica previa más sencilla. La asociada a este proyecto consiste en el envió y recepción de tramas. Haga un programa que envíe un texto inferior a 1500-14 bytes y otro que lo reciba y lo muestre por pantalla. PROYECTO 5.- Control de Disponibilidad de Equipos Objetivo El objetivo del proyecto es desarrollar un sistema para averiguar la disponibilidad de diferentes equipos conectados en red. Especificaciones En la presente práctica hay que desarrollar un software de comunicaciones que verifique la disponibilidad de determinados equipos, que pueden estar situados tanto dentro de nuestra red como fuera. En el caso de equipos de otra red, habrá que averiguar el número de routers intermedios que se atraviesan hasta llegar al equipo remoto. Las especificaciones mínimas que el programa debe cumplir son las siguientes: • El programa debe ser autoconfigurable, es decir, debe ser capaz de obtener los parámetros de configuración de red al arrancar (dirección IP, máscara de red, router por defecto, servidor dns, ...). • El programa leerá de un archivo de configuración los nombres de los equipos cuya disponibilidad hay que vigilar. • El programa debe hacer una comprobación de que los equipos estén activos cada minuto, y debe mostrar por pantalla la lista de los equipos y si están funcionando correctamente o no. En el caso de que alguno de los equipos se encuentre fuera de nuestra subred, el programa debe mostrar por pantalla el número de routers intermedios que hay entre nuestra red y la red del equipo remoto. • La sintaxis de llamada al programa será la siguiente: Disp_control -f <nombre_fichero> Escenario de Pruebas Nota.- en la memoria del diseño de la práctica los alumnos deberán completar el escenario de pruebas expuesto. El escenario de pruebas más sencillo es aquel en el que los equipos del archivo de configuración se encuentran en nuestra misma subred y todos están disponibles. En otros escenarios se pueden desconectar algunos de estos equipos y comprobar si nuestro programa reacciona bien. Otro escenario consiste en probar el programa con un conjunto de equipos ubicados fuera de nuestra subred. Equipos a verificar Red IP : Equipo verificador Práctica Previa. Para que el grupo se familiarice con la programación en LINPAL/NEPAL y le sea más fácil afrontar el proyecto deberá desarrollar una práctica previa más sencilla. La asociada a este proyecto consiste en la implementación del protocolo ARP. PROYECTO 6.- Protocolo de Transferencia de Ficheros Objetivo El objetivo de esta práctica es desarrollar un protocolo de transferencia de ficheros que soporte mecanismos de parada y espera, rechazo simple y rechazo selectivo y tenga la posibilidad de simular errores de transmisión. Especificaciones La presente práctica pretende desarrollar un protocolo para la transferencia ficheros entre distintas máquinas a través de una red Ethernet. Los requisitos mínimos de este proyecto son los siguientes: • Debe diseñarse un protocolo para transferir ficheros entre un cliente y un servidor. Este diseño debe contemplar las opciones necesarias para soportar mecanismos de parada y espera, rechazo simple y rechazo selectivo. • Deben implementarse dos programas: un servidor de ficheros, y un cliente que se comunique con el anterior y que reciba los ficheros solicitados. La implementación del servidor y del cliente debe permitir utilizar al menos los mecanismos de parada y espera y rechazo simple. • El tipo de mecanismo a utilizar para transferir el fichero se seleccionará en el cliente así como el resto de parámetros necesarios (tamaño de trama, tamaño de ventana,...). • La sintaxis de llamada al cliente debe contener estas dos opciones, además de las que considere necesarias para definir el resto de parámetros: -f <nombre_fichero>. Indicará el nombre del fichero que se desea obtener del servidor. -s <dirección_MAC_servidor>. Indicará la dirección ethernet del servidor de ficheros. • La implementación del servidor y del cliente deben permitir la simulación de errores de transmisión. Por ejemplo, se propone que tanto el cliente como el servidor tiren algunas tramas periódicamente, o que las tramas sean eliminadas según una determinada probabilidad seleccionable por el usuario. Escenario de Pruebas Nota.- en la memoria del diseño de la práctica los alumnos deberán completar el escenario de pruebas expuesto. Para realizar las pruebas serán necesarios dos ordenadores para poder ejecutar el cliente y el servidor simultáneamente. Los ordenadores estarán conectados a través de la red ethernet del laboratorio. Las pruebas consistirán al menos en comprobar que los dos equipos intercambian ficheros de cualquier tipo y tamaño, incluso cuando se producen errores en la transmisión de las tramas. Emisor / receptor de ficheros Emisor / receptor de ficheros Red Del laboratorio Práctica Previa. Para que el grupo se familiarice con la programación en LINPAL y le sea más fácil afrontar el proyecto deberá desarrollar una práctica previa más sencilla. La asociada a este proyecto consiste en el envió y recepción de tramas. Haga un programa que envíe un texto inferior a 1500-14 bytes y otro que lo reciba y lo muestre por pantalla. PROYECTO 7.-Desarrollo de un bridge transparente Objetivo En esta práctica se pretende desarrollar un Bridge transparente con funcionalidad completa, que incluya tanto funciones básicas como mecanismo de autoaprendizaje y el protocolo BPDU para eliminación de bucles (algoritmo de spanning tree). Especificación La presente práctica debe implementar un mecanismo de transmisión y recepción de BPDUs así como un algoritmo de spanning tree para la determinación del estado del bridge en cada uno de los puertos: activo, bloqueado. Adicionalmente a este algoritmo, el software debe implementar las funcionalidades básicas y mecanismo de autroaprendizaje. El sistema a desarrollar debe ser capaz de eliminar bucles como los representados en la figura y debe poder parametrizar tanto la selección del identificador del bridge como el tiempo de refresco de transmisión de BPDUs. Ambos valores deben tener un valor por defecto, si bien dichos valores deben poder ser fijados mediante línea de comandos o bien en tiempo de configuración del programa. El bridge deberá mostrar información de que estado mantiene en cada puerto además de realizar las funciones de interconexión necesarias. Escenario de Pruebas Nota.- en la memoria del diseño de la práctica los alumnos deberán completar el escenario de pruebas expuesto. El escenario de pruebas más sencillo es el que está compuesto por tres subredes, tal como se muestra en la figura. Una de las redes será la del laboratorio, las otras dos las creará usted usando hubs, o en su defecto, uniendo directamente los equipos con un cable cruzado. Se probará: Asociando a A id1 a B id2 y a C id3: Que el enlace entre C y B se corta. El enlace entre A y C y el enlace A y B se mantienen. Un PC de la red A-B puede transmitir a otro de la red C-B. Práctica Previa. Para que el grupo se familiarice con la programación en NEPAL y le sea más fácil afrontar el proyecto deberá desarrollar una práctica previa más sencilla. La asociada a este proyecto consiste en la implementación de un mecanismo de autoaprendizaje de direcciones. PROYECTO 8.- Simulación de ISP Objetivo Uno de los problemas de la extensa utilización del protocolo IP, es la cada vez menor disponibilidad de direcciones globales. Una posible solución a este inconveniente, es el empleo de direcciones privadas. Supongamos que un ISP da servicio a la red de una organización. Las máquinas de la red corporativa, utilizarán direcciones privadas. El objetivo de esta práctica es la implementación de un sistema que permita el acceso de las máquinas de la organización a cualquier máquina en internet. Especificaciones Las especificaciones mínimas del sistema diseñado serán las siguientes: • El equipo del proveedor de servicios permitirá que ordenadores en la red de la organización puedan comunicarse con máquinas en internet, realizando la correspondiente traducción de direcciones. • El sistema debe soportar el uso de los protocolos TCP, UDP e ICMP. • Además, al ISP le resultará interesante procesar la información sobre la utilización de su equipo, tanto por razones de mantenimiento como por cuestiones de tarificación. Escenario de pruebas Nota.- en la memoria del diseño de la práctica los alumnos deberán completar el escenario de pruebas expuesto. En la figura siguiente se muestra un posible escenario de pruebas, donde aparece el equipamiento del ISP que permitirá la comunicación 10.0.0.0 Internet Máscara de subred 255.255.255.0 Red de la organización Equipamiento ISP Práctica Previa. Para que el grupo se familiarice con la programación en NEPAL y le sea más fácil afrontar el proyecto deberá desarrollar una práctica previa más sencilla. La asociada a este proyecto consiste en la implementación del protocolo ARP.