4: Topolog´ıas de red libres de ciclos: Minimum spanning trees.

Anuncio
Sistemas Operativos II
Ingenierı́a informática
Práctica 3: 4: Topologı́as de red libres de ciclos:
Minimum spanning trees.
Calendario
Comienzo: Lunes 30 de noviembre de 2009.
Entrega: Lunes 11 de enero de 2010.
1.
Objetivos
Conocer un problema distribuido real.
Implementar un algoritmo distribuido como una interaccion de automatas finitos
deterministas.
2.
Introducción
En esta última práctica vamos a fusionar todo lo que hemos estado viendo hasta
ahora. Vamos a crear un conjunto de agentes que sean capaces de comunicarse entre
sı́ para alcanzar un objetivo común. Para ello usaremos lo aprendido en las prácticas 1 y
2. Además, deberán responder a los sucesos que ocurran en su entorno dependiendo del
estado en que se encuentren, por lo que será necesario modelar el problema utilizando la
herramienta desarrollada en la práctica 3.
El problema a resolver será el de encontrar una topologı́a lógica sin ciclos en una red
con redundancia.
1
3.
Redes de enlace con redundancia
En una red de comunicaciones se pueden distinguir varios niveles de funcionalidad.
Por ejemplo, el nivel fı́sico es el de más bajo nivel, abarcando todos los dispositivos que
permiten la comunicación fı́sica entre dos estaciones. El nivel de enlace es el segundo nivel,
y se encarga de que dos estaciones conectadas fı́sicamente sean capaces de comunicarse
libres de errores. Por encima de éste estaria ya el nivel de red, encargado de hacer que la
informacion vaya saltando de estacion en estacion hasta alcanzar su destino.
Bien, en esta práctica pensaremos en un problema tı́pico del nivel de enlace. Las redes
ethernet se pueden entender como un conjunto de estaciones conectadas a un único cable
compartido. Cuando una estación quiere mandar un mensaje a otra, construye una trama
especial indicando su dirección y la direcciónd de destino. Todas las estaciones conectadas
al cable están constantemente escuchando hasta que detectan una trama destinada a ellas.
Por limitaciones fı́sicas no se puede hacer una red ethernet mayor de un tamaño dado,
por lo que para un número grande de estaciones es necesario construir más de una red.
Para hacer que dos estaciones conectadas a redes ethernet separadas puedan comunicarse, se pueden utilizar bridges. Los bridges son dispositivos que sirven precisamente
de “puente” entre dos o más redes. Cuando un bridge arranca, no sabe nada de la red,
solamente las interfaces que estén conectadas. Cuando escucha un mensaje de una estación por una de sus interfaces, graba la localización de esa estación. De esta manera,
si en el futuro recibe un mensaje para ella proveniente de otra red, sabrá que tiene que
encaminarlo por la interfaz que habı́a registrado. Si un bridge escucha un mensaje para
una estación que no tiene registrada, no puede tener certeza de si estará a un lado o a
otro, por lo que es necesario que reenvı́e el mensaje por todas las interfaces excepto por
la que lo escuchó. Y aquı́ aparece el problema.
El problema es que si existe redundancia en la red, se originará una tormenta de
mensajes que no terminará nunca. Una manera de evitarlo es que todos los bridges de la
red decidan desactivar algunos caminos, de tal forma que entre dos estaciones cualesquiera
exista un único camino posible.
4.
Ejercicios
En esta última práctica habrá que implementar un algoritmo que resuelva el problema
de construir un árbol mı́nimo en un grafo de manera distribuida. Los requisitos son los
siguientes;:
1. Implementar un agente que sea capaz de comunicarse con otros agentes mediante
TCP/IP. Deberá recibir como argumentos por lı́nea de comandos un número de
puerto y, opcionalmente una lista de direcciones con el formato IP:puerto:peso.
2. El agente deberá crear un socket pasivo asociado al puerto recibido como argumento y deberá establecer conexiones con las demás direcciones especificadas. El peso
representará el coste de mandar un mensaje por un camino concreto. Las dos partes
de la conexión deben conocer el peso.
2
3. Si un agente recibe como argumento la palabra “end” después de todos los demás
argumentos, se considerará que la red está formada y podrá empezar el algoritmo
de construcción de un MST.
4. El algoritmo distribuido debe encontrar un árbol de peso mı́nimo para el grafo
formado por los agentes y las conexiones entre ellos.
5. El algoritmo deberá estar implmementado como un AFD, utilizando la biblioteca
implementada en la práctica 3.
6. Todos los nodos deben saber cuándo el algoritmo ha terminado.
7. Cuando el algoritmo termine, cada nodo debe imprimir por pantalla una lista especificando qué enlaces están activos y cuales no.
8. Cuando el algoritmo termine todos los agentes deben terminar limpiamente.
3
Descargar