Simured
Simured
1 Introduccin
SimuRed es un simulador sencillo de redes de multicomputadores. El programa simula el envo de paquetes a travs de una red presentando estadsticas de tiempos consumidos, bloqueos producidos, etc. Permite una configuracin casi completa de la red y del proceso de envo de los paquetes, permitiendo el uso de ficheros de trazas donde se especifican los paquetes a enviar. El simulador es completamente visual y permite incluso ver la evolucin de los paquetes a travs de la red, por lo que es una buena herramienta para el aprendizaje del funcionamiento de las redes de multicomputadores. Existe tambin una versin en lnea de comandos cuyo funcionamiento interno es idntico, pero que al no tener ningn tipo de capacidad visual, los resultados son puramente estadsticos. La configuracin de los parmetros de la simulacin se realiza redireccionando la entrada estndar desde un fichero donde se guardan los parmetros. Estos parmetros se incluyen en este manual entre parntesis al lado de las explicaciones de las opciones de men. En este manual se explican los diferentes paneles de opciones que tiene el programa, de manera que los conceptos y el funcionamiento del simulador se explican a partir de estos paneles.
2 Configuracin de la red
El primer panel sirve para configurar la red de interconexin. Una red tiene tres partes bsicas: Topologa. En este apartado introducimos los aspectos estructurales de la red, es decir, parmetros como el nmero de canales, el nmero de nodos, las dimensiones, etc. Control de flujo. Se refiere al mecanismo mediante el cual se transfieren los paquetes de un nodo a otro. Encaminamiento. Es el algoritmo utilizado para establecer un camino desde un nodo actual hasta un destino.
En este panel hay un tercer apartado dedicado a los retrasos de los elementos de la red. Esta parte se encuentra entre la topologa y el control de flujo, por lo que se ha puesto de forma diferenciada.
2.1 Topologa
En este subapartado se describen las caractersticas fsicas de la red de interconexin de multicomputadores. Se toma como base siempre una red estrictamente ortogonal de tipo n-cubo k-aria (toro) que es la ms general dentro de las estrictamente ortogonales. Aunque la red malla no es un caso particular de este tipo de redes, se pueden utilizar
tambin pues una red n-cubo k-aria es igual que una red malla siempre que el mecanismo de encaminamiento impida el paso en los canales de vuelta. Estos son los parmetros que se pueden modificar: Dimensiones. Son las dimensiones de la red. En principio no hay lmite. Debe ser siempre mayor que cero. (DIMENSIONS). Nodos por dimensin. Son los nodos de cada dimensin. Por ejemplo, una red con 2 dimensiones y 4 nodos por dimensin (red bicubo cuaternaria) tiene 16 nodos en total. Debe introducirse un valor mayor que cero. (NODOSDIM). Longitud del buffer. Esta es la longitud de las colas FIFO de entrada y salida por cada canal. Tanto las colas de entrada como las de salida tienen la misma longitud, por lo que no pueden asignarse longitudes diferentes a unas y otras. El valor debe ser mayor que cero. (LONBUFFER). Canales virtuales. Cada canal puede subdividirse en varios canales. Por defecto estos canales sern virtuales, es decir, comparten el mismo cable fsico pero cada uno tiene su propio buffer, por lo que funcionan como si fueran fsicos pero con el aumento de la latencia que conlleva compartir el mismo cable. Si realmente se quiere que estos canales sean fsicos, hay una opcin para ello (ver un poco despus en este mismo punto). (NUMVIRT). Bidireccional. Se puede especificar si los canales son bidireccionales o no. Hay que tener cuidado pues es posible que algunos algoritmos de encaminamiento no puedan encontrar un camino si el canal es unidireccional (el de orden de dimensin para mallas por ejemplo). (NUMDIR). Adelanto en buffer. En una cola fifo sencilla los flits van pasando de una posicin a la siguiente, pero si hay posiciones vacas en la cola se puede adelantar el flit hasta justo antes de la siguiente posicin ocupada, o directamente a la salida de la cola si sta est vaca. Este adelanto es la opcin por defecto, ya que es como funcionan normalmente las redes y se obtiene un mayor rendimiento. (FORWARDING). Canales fsicos. Si se selecciona esta opcin entonces los canales virtuales son realmente fsicos, es decir, cada canal virtual tiene su propio cable y por lo tanto la transmisin se realiza en paralelo junto con el resto de canales virtuales. (PHYSICAL).
2.2 Retrasos
Se han implementado 4 retrasos en la red. Estos retrasos se dan siempre en ciclos de reloj. Buffer. Es el tiempo necesario para pasar de una posicin de las colas fifo a la siguiente. Normalmente este tiempo es muy pequeo comparado con el resto, por lo que no se suele incluir en muchos simuladores; no porque sea despreciable, sino porque el tiempo de transmisin del paquete, al realizarse de forma segmentada, depende del mximo de este tiempo y del tiempo de atravesar el crossbar, y siempre suele ser el tiempo del crossbar mayor que este. (DELFIFO). Crossbar. Una vez establecido el camino interno en el encaminador, este tiempo es el que tarda un flit en atravesar el conmutador (crossbar). (DELCROSS).
Conmutacin. Es el tiempo que se tarda en establecer el camino dentro del encaminador, es decir, el tiempo que se tarda en decidir qu camino tomar y configurar el conmutador para ello. (DELSWITCH). Canal. Es el tiempo que necesita un flit para atravesar el canal fsico. (DELCHANNEL).
2.4 Encaminamiento
Realizar nuevos algoritmos de encaminamiento es muy sencillo a partir de las fuentes del simulador (red.cpp y red.h). Se han implementado 4 como ejemplo: Orden de dimensin para mallas. Este es el famoso algoritmo determinista llamado XY para el caso de mallas bidimensionales. Est libre de bloqueos mortales (deadlocks). Funciona tambin con varios canales virtuales, en cuyo caso elige uno al azar siempre que est libre. (ROUTING=0). Orden de dimensin para toros. Igual que el anterior pero para redes n-cubo karias. Este algoritmo presenta bloqueos mortales, por lo que se ha incluido como ejemplo para ver cmo el simulador detecta estos bloqueos y los muestra. (ROUTING=1). Duato para mallas. Se ha aplicado el protocolo de Duato utilizando un conjunto de canales vrtuales completamente adaptativo junto a otro conjunto libre de bloqueos mortales basado en XY. Se necesitan al menos dos canales virtuales (si slo se pone un canal virtual entonces este algoritmo es exactamente igual que el primero). (ROUTING=2). Completamente adaptativo para mallas. Este algoritmo elige cualquier canal libre que lleve al destino por un camino mnimo y sin preocuparse si se producirn bloqueos o no. Naturalmente puede presentar bloqueos mortales. (ROUTING=3).
3 Paquetes
En este apartado se muestran todas las opciones referidas a los paquetes y su generacin automtica, lectura de un fichero de trazas, etc. Se ha dividido en tres apartados, el de paquete, el de generacin a partir de trazas y el de generacin automtica.
3.1 Paquete
Longitud del paquete. Se refiere a la longitud de los datos del paquete. Se mide siempre en flits. (PACKLEN). Cabecera. Es la longitud de la cabecera. Por defecto est a cero. La longitud real del paquete ser la longitud anterior ms esta. Para lo nico que se utiliza esta longitud es para las estadsticas, pues en ellas se distingue entre datos y cabeza. Por defecto es cero. (PACKHEADLEN).
4 Simulacin
Este panel tiene numerosas opciones y posibilidades dadas las mltiples alternativas que existen para simular la red. Las opciones por defecto vienen preparadas para realizar lo que se llama una simulacin mltiple, es decir, una simulacin en la que se van cambiando diferentes parmetros para poder hacer grficas comparativas. Existe otro tipo de simulacin muy interesante, la interactiva, que nos permite ver el estado de la red y los paquetes en cada instante.
Una vez en el modo mostrar evolucin veremos que al simular aparecen los paquetes movindose por la red. Por defecto cada flit tiene un nmero segn su posicin y cada paquete se muestra en un color diferente. Se puede desactivar el que aparezca el nmero de flit clicando sobre la casilla Mostrar nmero de Flit. Mientras se muestra la evolucin de los paquetes, el intervalo de tiempo entre ciclo y ciclo se puede cambiar en la casilla retraso entre ciclos. Por defecto hay un intervalo de 100 milisegundos, pero se puede disminuir o aumentar para que vaya ms deprisa o para que se vea mejor la evolucin de los paquetes por la red. La simulacin mientras se muestran los paquetes se puede detener del todo pulsando el botn Interrumpir, pero se puede tambin detener un instante pulsando sobre Pausa o Paso a Paso. Si la simulacin est detenida se puede continuar con el botn Continuar o con el de Paso a Paso, si reanudamos la simulacin con este ltimo botn, entonces slo se ejecutar un ciclo y volver a detenerse. Buffer interno entrada
Crossbar/Switch
Buffer entrada
Buffer salida
Canal
Fig. 1: Detalle de una porcin de la red mostrando dos encaminadores y varios paquetes En la simulacin realizada desde la lnea de comandos no se muestra nada, por lo que la nica diferencia de esta simulacin respecto de la mltiple es que slo se realiza una vez tomando los valores originales de la simulacin y no los de las variables de la simulacin mltiple.
5 Grfico
En la versin visual se tiene la posibilidad de leer el fichero de resultados CSV mostrando las grficas en una ventana adicional. Una vez cargado el fichero de resultados se pueden elegir los parmetros tanto del eje X como del Y. Se han puesto unos valores por defecto para poder ver la latencia media en funcin de la productividad. Cada grfica se muestra con un color y en la parte inferior izquierda se muestra la variable que cambia de grfica a grfica con el color correspondiente.
6 Misc.
En este ltimo panel se encuentra la opcin para cambiar el idioma. Tambin aparece la versin del programa, el autor y la web donde obtener las ltimas actualizaciones, documentacin, etc.
7 Lnea de comandos
La versin para ser ejecutada por el intrprete de comandos (Unix shell o DOS) se llama simured_cmd. Los parmetros de la simulacin se toman de la entrada estndar y existen valores por defecto para todos ellos. Lo normal es redireccionar la entrada estndar para que tome los valores de un fichero de configuracin. Si no se redirecciona la entrada estndar habr que introducir los valores a mano y pulsar fin de fichero al terminar (Ctrl-D). Algunos valores estadsticos y los mensajes de simulacin se muestran por la salida estndar de error. Los resultados siguiendo el formato CSV (campos separados por comas) se sacan por la salida estndar, por lo que resulta interesante redireccionar la salida estndar a algn fichero para luego importalo a cualquier herramienta grfica. Un ejemplo de llamada al programa desde el intrprete de comandos sera: simured_cmd < simured.conf > resultados.csv
8 Referencias
1. Jos Duato, Sudhakar Yalamanchili y Lionel Ni. Interconnection Networks, an Engineering Approach. IEEE Computer Society Press. 1997. 2. Pgina web del simulador. http://simured.uv.es/