martes, 9 de abril de 2013

Laboratorio 6: Topología y Ruteo con NS-2

El ruteo en ns-2 es automático. Si nosotros creamos una comunicación entre dos nodos, el simulador automáticamente buscará el camino más corto entre estos dos. Pero en la práctica, puede ser necesario tomar otros caminos, ya sea por congestionamiento u otras razones. Para eso aquí se verá un método para sobre escribir el ruteo automático que impone el simulador ns-2.

Topología

Para generar topologías de anillo, y estrella realicé un pequeño script que escribe código en tcl en un archivo, generando una de las dichas topologías dadas como parámetro


Con este código, se generan las siguientes topologías:

     

La forma más sencilla de generar una pequeña topología de redes es manualmente, creando diferentes nodos y conectándolos entre sí para formar nuestra topología deseada.

Por ejemplo la siguiente:


La generación de la topología es hecha manualmente, colocando cuatro nodos conectados para formar un rectángulo, y para cada uno asignándole un par de nodos.

Así podríamos imaginar que dentro de esta topología, los cuadrados negros (4, 5, 6, 7) son los routers, y los círculos son las computadoras dentro de las redes locales. Entonces sería necesario definir una tabla de ruteo para cada uno de dichos nodos. 

Inicialmente no tenía idea de como realizar algo así, por lo cual busqué ejemplos y encontré uno muy bueno sobre como sobreescribir el ruteo automático de ns-2 agregando nuestra propia tabla de ruteo. El código original (incompleto, fácil de arreglar) se puede ver aquí

Ruteo

Como mencioné anteriormente, el simulador ns-2 automáticamente encuentra el camino más corto entre dos nodos, y cuando se realiza una comunicación entre estos toma dicho camino. Comprobando con la anterior topología, sin añadir una tabla de ruteo, ocurre lo siguiente:


Efectivamente se toma el camino más corto, siendo directamente desde el "router" 4 hasta el 5.

Ahora, imaginemos una situación donde la conexión entre el router 4 y el 5 esta congestionada, y lo sabemos de antemano. Por lo tanto sería correcto asumir que tomar otra ruta, aunque más larga, podría ser más eficiente. Para esto definimos una tabla de ruteo en cada router, diciéndole hacia donde redireccionar los paquetes que recibe para llegar al destino. Ahora, el resultado es:


(Nota: Solo se realizó un direccionamiento desde el nodo 0 al nodo 1 no de vuelta, y debido a que el tipo de comunicación es TCP, el ACK toma el camino más corto de vuelta)

Y de esta forma es como se puede modificar el ruteo para un cierto nodo en ns-2.

El código usado es el siguiente:


La primera parte interesante sobre el ruteo es:

que son un par de procedimientos usados para forzar el direccionamiento que se hace al pasar un paquete por un nodo. El primer procedimiento retorna el brinco siguiente que se debe dar, si hay uno, para llegar a un nodo dado. El segundo se encarga de sobreescribir el ruteo de un nodo determinado forzándolo a tomar la ruta designada si existe.

Lo último es definir la tabla de ruteo, que se hace en la parte de eventos, desde el inicio de la simulación:


Donde el primer parámetro corresponde al nodo al cual se editara la tabla de ruteo, el segundo el nodo destino, y el tercero el siguiente nodo que debe tomar para llegar al destino.

Referencias:

1 comentario:

  1. Hay topologías mucho más interesantes para probar; checa lo que le comenté a Juan Carlos. 6 pts.

    ResponderEliminar