Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Simulacin de redes de
conmutacin de paquetes
INTRODUCCIN ...............................................................................................................................3
FICHERO DE TOPOLOGA ..................................................................................................................4
2.1.
Atributos de nodo..................................................................................................................5
2.2.
Atributos de link....................................................................................................................7
3.
PROGRAMACIN CONDUCIDA POR EVENTOS ...................................................................................9
3.1.
Lista de eventos.....................................................................................................................9
3.2.
Funciones para el manejo de eventos...................................................................................9
3.3.
Ejemplo de manejador de eventos ......................................................................................10
4.
TEMPORIZADORES.........................................................................................................................11
5.
FUNCIONES PROPORCIONADAS POR CNET......................................................................................12
5.1.
Capa Aplicacin .................................................................................................................12
5.1.1.
5.1.2.
5.2.
5.2.1.
5.2.2.
5.2.3.
5.3.
5.3.1.
5.3.2.
Descripcin .................................................................................................................................. 12
Funciones ..................................................................................................................................... 14
Capa Fsica.........................................................................................................................15
Descripcin .................................................................................................................................. 15
Transmisin segura a travs de la capa fisica ............................................................................... 16
Funciones ..................................................................................................................................... 16
Temporizadores ..................................................................................................................17
Descripcin .................................................................................................................................. 17
Funciones ..................................................................................................................................... 18
5.4.
Funciones para el manejo de eventos.................................................................................19
5.5.
Funciones para traceado....................................................................................................19
5.6.
Funciones para deteccin de errores .................................................................................19
5.7.
Funciones varias.................................................................................................................20
6.
COMPILACIN ...............................................................................................................................21
7.
TIPOS DE NODO, EVENTOS Y ERRORES .........................................................................................25
7.1.
Tipo CnetNodeType ............................................................................................................25
7.2.
Tipo CnetEvent ...................................................................................................................25
7.3.
Tipo CnetError ...................................................................................................................26
8.
INFORMACIN ADICIONAL.............................................................................................................26
__________________________
Pgina: 2
Introduccin
Cnet soporta tanto los modos de visualizacin grfico, bajo entorno Tcl/Tk y modo de
visualizacin ASCII (texto).
En el modo grfico (Tcl/Tk), Cnet proporciona una representacin global de la red, en formato
grfico, visualizando los nodos (host/routers) o enlaces (links), adems de permitir una
interaccin con la simulacin a travs de la interface grfica, permitiendo la modificacin de
diferentes atributos de los nodos y/o links, en tiempo de ejecucin. Haciendo clic de ratn sobre
los diferentes nodos y enlaces se despliegan otras ventanas, mostrando sus atributos del nodo,
y sus datos estadsticos de simulacin. De la misma forma, los atributos por defecto de la red
pueden ser modificados mediante la seleccin o cambio de atributos globales, e incluso,
provocar una re-inicializacin de un nodo, fallo de hardware, etc.
__________________________
Pgina: 3
2.
Fichero de topologa
Como se ha mencionado anteriormente, los nodos estn provistos de links (enlaces) puntos de
unin del nodo a los diferentes medios de transmisin. Los links se numeran a partir de 0 hasta
el n de links fsicos reales del nodo, no obstante, el primer link 'real' es el 1, ya que el valor 0
se utiliza como LOOPBACK (retorno).
__________________________
Pgina: 4
Cnet slo soporta topologas formadas por nodos con enlaces punto-a-punto, no estando
permitidos enlaces multipunto (difusin).
Tanto los atributos de link como los atributos de nodo pueden ser definidos en el fichero de
topologa de forma global o de forma local. Los atributos globales son definidos en el cuerpo
principal del fichero de topologa y afectan a todos y cada uno de los elementos de la red:
nodos y links. Los atributos locales son declarados individualmente para algn elemento
(nodo o link), utilizando para ello llaves a modo del Lenguaje C, de forma que, un atributo
declarado localmente afecta nica y exclusivamente al elemento donde ha sido definido.
messagerate = 100ms
minmessagesize = 100 b
maxmessagesize = 5 kb
host Dublin {
x=97, y=123
ostype = "linux"
link to Paris {
propagationdelay
}
link to London
}
host Paris {
x=194, y=255
link to Dublin {
propagationdelay
}
link to Amsterdam {
propagationdelay
}
link to Vienna {
propagationdelay
}
link to Madrid {
propagationdelay
}
link to London {
propagationdelay
}
}
host London {
x=189, y=102
link to Dublin
link to Paris
}
host Amsterdam {
x=294, y=176
link to Paris {
propagationdelay
}
link to Vienna {
propagationdelay
}
link to Munich {
propagationdelay
Atributos
Globales
= 50ms
= 150ms
= 100ms
= 200ms
= 80ms
= 80ms
= 125ms
= 100ms
= 100ms
}
}
host Vienna {
x=546, y=334
link to Amsterdam
link to Venice
link to Innsbruck
link to Munich
}
host Rome {
x=442, y=576
link to Venice
link to Corsica
link to Innsbruck
}
host Madrid {
x=74, y=380
link to Paris
link to Corsica
}
host Munich {
x=461, y=145
link to Amsterdam
link to Vienna
link to Berlin
}
host Venice {
x=487, y=416
link to Vienna
link to Rome
}
host Innsbruck {
x=404, y=356
link to Vienna
link to Rome
}
host Corsica {
x=264, y=455
link to Rome
link to Madrid
}
host Berlin {
x=639, y=238
link to Munich
}
Atributos
Locales
Como los atributos hacen referencia, bsicamente, a unidades de tiempo, velocidad, etc., es
necesario definir unos tipos bsicos de uso en Cnet.
__________________________
Pgina: 5
Atributo de
Nodo
Tipo
de
Dato
Significado
Ejemplo
integer La direccin de cada nodo dentro de la red. Este valor esaddress = 238
nico para cada nodo
compile
string Define el nombre del fichero fuente de protocolo paracompile = protocol.c stats.c -lm"
cada nodo.
messagerate
time
La razn a la que la Capa Aplicacin puede generarmessagerate = 100ms
mensajes nuevos para enviar.
messagerate = 2s
minmessagesize bytes Tamao mnimo de mensaje generado por Capaminmessagesize = 100 bytes
Aplicacin
minmessagesize = 4kb
maxmessagesize bytes Tamao mximo de los mensajes generados por Capamaxmessagesize = 200 bytes
Aplicacin
maxmessagesize = 8kb
nodemtbf
time
Tiempo entre fallos de hardware (promediado)
nodemtbf = 600000ms
nodemtbf = 1000s
nodemttr
time
Tiempo de reparacin fallo hardware (promediado)
nodemttr = 5000ms
nodemttr = 100s
ostype
string Nombre del sistema operativo que se ejecuta en el nodo,ostype = "linux"
nicamente utilizado para mostrar el icono. Posibles
valores: bsd, hurd, irix, linux, macintosh, nextstep,os2,
solaris, winnt.
outputfile
string Fichero de salida para cada nodo. Si se utiliza comooutputfile = "prueba"
atributo global, entonces outputfile indica el prefijo del
fichero (igual que la opcin -o). Cuando se utiliza como
atributo local, outputfile indica el nombre de fichero
completo.
rebootnode
string Funcin ANSI-C llamada cuando el nodo realiza unrebootnode = "mi_reboot_funcion"
reboto.
trace
boolean Indicador de seguimiento de traza de la simulacin
trace = true
winopen
boolean Atributo booleano que indica si las ventanas de cadawinopen = false
nodo se abrirn al arrancar.
winx, winy
integer Coordenadas de la ventana del nodo en entorno Tcl/Tk. winx = 100, winy = 200
x,y
integer Coordenadas del icono del nodo en la ventana principal x = 80, y = 120
address
__________________________
Pgina: 6
En tiempo de ejecucin, el cdigo C de protocolo de cada nodo tiene acceso a una estructura
(previamente definida en cnet.h) y que contiene la descripcin de atributos del nodo. Esta
estructura tiene un carcter de 'solo lectura' y su contenido es actualizado por cada nodo a lo
largo de la ejecucin.
typedef struct {
CnetNodetype nodetype;
/* Puede ser NT_HOST o NT_ROUTER */
int
nodenumber;
/* Rango de 0..NNODES-1 */
CnetAddr
address;
/* Posiblemente diferente a nodenumber */
char
nodename
/ * Nombre del nodo
*/
int
nlinks;
/* Rango de 0 (=LOOPBACK) .. nlinks */
int
minmessagesize; /* Tamao minimo (en bytes) de los mensajes generados */
int
maxmessagesize /* Tamao mximo (en bytes) de los mensajes generados */
int
messagerate;
/* tasa de generacin de mensajes (in ms) */
long
time_in_ms
/* Reloj con incremento monotnico */
struct {
long
sec;
long
msec;
}
time_of_day;
/* Copia de la hora del sistema */
} CnetNodeinfo;
CnetNodeinfo nodeinfo
de forma que se pueden acceder de forma 'solo lectura' a los campos de la estructura de tipo
CnetNodeinfo, donde se pueden obtener los diferentes atributos del nodo.
Atributo de
Link
bandwidth
Tipo de
Dato
Significado
Ejemplos
bandwidth = 100000bps
bandwidth = 56Kbps
costperbyte
centimos
Costo por byte a lo largo del link
costperbyte = 1c
costperframe
centimos
Costo por trama a lo largo del link
costperframe = 5c
Linkmtbf
tiempo
Promedio esperado de tiempo entre falloslinkmtbf = 50000ms
hardware del enlace
linkmtbf = 1000s
Linkmttr
tiempo
Promedio esperado de tiempo en repararlinkmttr = 5000 ms
fallos hardware del enlace
linkmttr = 100s
probframecorrupt probabilidad La probabilidad de que se produzca un errorprobframecorrupt = 3
en la trama a lo largo de la lnea
/* 1 / 8 */
probframeloss
probabilidad La probabilidad de que se pierda la trama a loprobframecorrupt = 4
largo del link.
/ 1/16 */
propagationdelay tiempo
Tiempo de propagacin a lo largo del enlace. propagationdelay = 20ms
propagationdelay = 1s
__________________________
Pgina: 7
De la misma forma que con la estructura CnetNodeinfo, cada nodo tiene acceso, a travs del
protocolo en cdigo C, a su propia estructura CnetLinkinfo, que contiene la descripcin de los
atributos de sus links. En este caso, tambin se trata de una estructura de carcter 'solo lectura'
y sus valores son actualizados por cada nodo a lo largo de la ejecucin. Por otro lado, la
variable
linkinfo
es un vector de estructuras CnetLinkinfo, de forma que, a travs de esta variable se puede
acceder a todos los atributos de cada nodo, mediante los ndices en orden creciente. Por
ejemplo:
linkinfo[0] ---> Atributos del enlace denominado LOOPBACK
linkinfo[1] ---> Atributos del primer enlace fsico
link info[2] ---> Atributos del segundo enlace fsico
...
linkinfo[n] ---> Atributos del n enlace fsico
typedef struct {
int
linkup;
int bandwidth;
int propagationdelay
int transmitbufsize
int costperbyte
int costperframe;
} CnetLinkinfo;
Por ejemplo, para obtener el valor del tiempo de propagacin (propagationdelay) del primer
link real de un nodo, se utilizar
linkinfo[1].propagationdelay
__________________________
Pgina: 8
3.
Todos estos eventos son del tipo CnetEvent, y son registrados con la funcin
CNET_set_handler(). Adems se puede realizar un seguimiento de los eventos con la funcin
CNET_set_trace().
Descripcin
Uso exclusivo por Cnet. No se puede ser utilizado por los protocolos de
usuario
EV_REBOOT
Evento generado cuando se reinicializa el sistema
EV_SHUTDOWN
Generado justo antes de terminar (de forma controlada) la ejecucin del
sistema
EV_APPLICATIONREADY
Generado cuando la Capa Aplicacin tiene algn mensaje para enviar.
EV_PHYSICALREADY
Generado cuando llega una trama por algn link del dispositivo.
EV_KEYBOARDREADY
Generado cuando se introduce una lnea desde teclado.
EV_LINKSTATE
Generado cuando un link cambia de estado (off/on, on/off).
EV_DEBUG1...EV_DEBUG5 Generado cuando se presiona un botn debug (entorno X-Windows).
EV_TIMER1...EV_TIMER10 Generado cuando algn temporizador expira su tiempo programado.
donde:
CnetEvent ev se trata de un evento del tipo CnetEvent, es decir, la razn por la que el
manejador de eventos ha sido invocado, y correspondiente a uno de los eventos
relacionados en la Tabla anterior
Void (*func)() es un puntero a la funcin de usuario invocada una vez generado el evento.
CnetData data consiste en cierta informacin especifica de usuario.
__________________________
Pgina: 9
Las funciones manejadas por eventos son invocadas por Cnet, con tres parmetros:
El primero es del tipo evento (razn por la que el manejador ha sido invocado), es un valor
del tipo CnetEvent de los listados en la Tabla de eventos.
El segundo parmetro es un temporizador nico.
Y el tercer parmetro se puede utilizar para suministrar algn dato especfico de usuario.
Una vez tenemos identificado el evento de inters que nos informa de alguna accin sucedida
en la simulacin, y se ha asociado a la ejecucin de algn procedimiento o funcin de usuario,
ya est en condiciones de ser invocada por Cnet, debido a la ocurrencia de algn evento
registrado.
El archivo de cabecera cnet.h contiene todas las tipos de datos, constantes y prototipos de
funciones necesarias para el correcto funcionamiento de los protocolos de usuario.
En el procedimiento reboot_node, es donde se realiza el registro de eventos (si no se
especifica otra opcin con la opcin de compilador) , asociando un determinado evento con una
accin a realizar. As, mediante (1), el protocolo de usuario le est informado a Cnet que
cuando se produzca el evento EV_APPLICATIONREADY (la capa aplicacin tiene un mensaje
para enviar), ejecute el procedimiento NuevoMensaje. De la misma manera, mediante la
instruccin (2), se le est informado a Cnet que cuando llegue alguna trama por algn link del
nodo (EV_PHYSICALREADY), ejecute el procedimiento asociado LlegaTrama, que contendr
el protocolo de usuario necesario para realizar las operaciones correspondientes.
Hasta el momento slo hemos utilizado los dos primeros parmetros del la funcin
CNET_set_handler(), correspondientes al evento generado y el procedimiento de usuario
asociado. sta funcin est provista de un tercer parmetro, del tipo CnetData, por el que se le
pasa al Manejador de Eventos un cierto valor. Este parmetro ser utilizado en el desarrollo de
__________________________
Pgina: 10
4.
Temporizadores
asocia el evento
EV_TIMER1
con el procedimiento MiProcedimientoTemporizador, de forma que una vez agotado el tiempo
prefijado en el temporizador, se genera el evento EV_TIMER1, provocando la ejecucin de la
funcin MiProcedimientoTemporizador.
De momento, hemos visto la forma de asociar un evento generado por temporizador con un
procedimiento de protocolo, pero todava no hemos visto la forma de activar un temporizador
con un determinado valor, as como desactivarlo. Para la activacin y desactivacin de
temporizadores, Cnet proporciona las siguientes funciones:
CnetTimer CNET_start_timer(CnetEvent ev, long msec, CnetDada data)
int CNET_stop_timer(CnetTimer timer)
__________________________
Pgina: 11
...
void CodigoDeTimer( ... )
{
...
Mitimer = CNET_start_timer(EV_TIMER3, 500 , 0);
...
...
CNET_stop_timer(MiTimer);
...
}
...
...
5.
Descripcin
__________________________
Pgina: 12
NOTA: Hay que destacar que el mensaje generado es totalmente 'ilegible', tratndose de un
cadena de caracteres, sin ningn sentido ni significado, de una longitud determinada.
Una secuencia tpica de lectura de mensaje es:
char
buffer[MAX_MESSAGE_SIZE];
CnetAddr
dirdestino;
int
longitud;
longitud = sizeof(buffer);
resultado = CNET_read_application(&dirdestino, buffer, &longitud);
/* ... a continuacin ya se puede preparar el menaje para enviar al destino ....*/
Una vez alcanzado el nodo destino correcto, el mensaje debe ser entregado a la Capa
Aplicacin, utilizado la funcin:
int CNET_write_application ( char *msg , int *len)
Y de la misma forma, presentamos una secuencia tpica de escritura en la Capa Aplicacin del
nodo destino:
/*...... se recibe el mensaje desde otro nodo */
resultado = CNET_write_applicacion (buffer, &longitud);
Por ejemplo, supongamos que el nodo con direccin 'nodo_i' est por algn motivo off-line u
ocupado. El nodo que ha determinado esta situacin, deber desactivar el envo de mensajes
hacia dicho nodo ocupado, con la sentencia:
resultado = CNET_disble_application(nodo_i);
de la misma forma, posteriormente, este nodo puede ser activado, de forma que se habilite el
envo de paquetes hacia l, con la sentencia:
resultado = CNET_enable_application(nodo_i);
Una forma de habilitar el envo de mensajes hacia todos (a excepcin del propio nodo,
evidentemente), es utilizando la sentencia:
resultado = CNET_enable_application(ALLNODES)
__________________________
Pgina: 13
5.1.2.
Funciones
sta funcin se encarga de entregar la informacin a la Capa Aplicacin del nodo al que va
dirigido el mensaje. Realiza la entrega de un numero de bytes (len) a partir del puntero a msg.
Cuando se realiza la llamada de CNET_write_application(), el parmetro len contiene el
nmero de bytes que se tomarn de msg y que se van a entregar a la Capa Aplicacin.
Devuelve en el parmetro len un puntero a entero indicando el numero de bytes aceptados por
la Capa Aplicacin.
Posibles errores: ER_BADARG, ER_BADSENDER, ER_BADSESSION, ER_BADSIZE,
ER_CORRUPTDATA,
ER_NOTFORME,
ER_NOTREADY,
ER_NOTSUPPORTED,
ER_OUTOFSEQ.
Habilita la Capa Aplicacin para generar mensajes destinados al nodo cuya direccin en la red
es destaddr. Es posible utilizar la constante ALLNODES, que indica establecer la generacin de
mensajes para todos los nodos de la red.
Al iniciar la simulacin, la generacin de mensajes por defectos est en modo 'deshabilitado'.
Es necesario establecer la habilitacin para iniciar la generacin de mensajes hacia algn
nodo, algn grupo de nodos o todos los nodos, dependiendo del valor del parmetro destaddr.
Posibles errores: ER_NOTSUPPORTED.
__________________________
Pgina: 14
Descripcin
... a continuacin, la trama viajara a travs del medio fsico de transmisin, hasta que alcanza
el nodo destino. Una vez alcanzado el destino, el evento asociado a EV_PHYSICALREADY
debe de ejecutar el cdigo asociado para leer dicha trama del medio fsico, llamando a la
funcin CNET_read_physical(). A la vuelta de la llamada de la funcin, los parmetros
contienen: n de link por el que ha llegado la trama, longitud de trama leda y la trama
propiamente dicha.
De la misma forma, se presenta un fragmente de cdigo para realizar la lectura de tramas del
medio fsico en una red formada por 2 nodos:
...
char mi_trama [ 8 * K ];
int link, longitud;
__________________________
Pgina: 15
longitud = sizeof(mi_trama);
resultado = CNET_read_physical(&link, mi_trama, &longitud);
...
/* procesar el contenido de la trama recibida */
5.2.2.
Como se ya se ha indicado, el medio fsico no est exento tanto de agentes externos tales
como ruidos, interferencias electromagnticas, ruidos de intermodulacin, etc., que pueden
provocar errores en las tramas transmitidas, e incluso, pueden llegar a producir la prdida total
de la trama, bien porque no llegue al destino, o bien porque aun alcanzado el destino, tiene una
cantidad de errores tan elevada que el receptor es incapaz de detectarla como trama.
Para dotar a Cnet de una opcin de transmisin segura, es decir, eliminar totalmente la
probabilidad de errores de trasmisin y/o prdidas de paquete, se proporciona una funcin
adicional:
El objetivo de esta funcin es hacer un by-pass al Medio Fsico, evitando cualquier error posible
y/o prdida de tramas. Para ello, enva el mensaje directamente al nodo destino, cuya direccin
es especificado en el primer parmetro (destaddr). De esta forma se est consiguiendo
implementar una Capa de Enlace de Datos y Red perfectas??, eliminando a su vez tiempos
y demoras en la transmisin de la trama a travs del link.
5.2.3.
Funciones
Esta funcin toma un nmero de bytes contenido en el puntero a trama, y los pasa a la Capa
Fsica, para que sean enviados hacia el destino a travs de un determinado link. El link
representa el medio fsico de transmisin por el que se van a enviar los datos. Cada nodo tiene
un nmero fijo de links, numerados de 0..n, siendo el 0 utilizado para loopback (retorno hacia el
nodo), por lo que el primer nodo til es el 1, el siguiente el nmero 2, y as sucesivamente.
Al realizar la llamada, el parmetro int *longitud contiene la cantidad de bytes que se van a
pasar al medio fsico, a la vuelta, contiene el nmero de bytes aceptados por la Capa Fsica.
__________________________
Pgina: 16
Posibles
errores:
ER_BADARG,
ER_NOTREADY, ER_TOOBUSY.
ER_BADLINK,
ER_BADSIZE,
ER_LINKDOWN,
ER_BADLINK,
ER_BADSIZE,
ER_LINKDOWN,
ER_BADLINK,
ER_BADSIZE,
ER_LINKDOWN,
Esta funcin acepta un nmero mximo de bytes del Nivel Fsico y los guarda en la variable
apuntada por trama. Se llama a la funcin indicando en el parmetro len la cantidad mxima
de bytes que se pueden copiar en la variable trama. En el retorno, el parmetro len contiene la
cantidad de bytes realmente ledos del Nivel Fsico ( y copiados a trama). El parmetro link
contiene el link (enlace del nodo al medio fsico) por el que ha llegado la trama leda.
Posibles errores: ER_BADARG, ER_BADSIZE, ER_CORRUPTDATA, ER_NOTREADY.
5.3. Temporizadores
5.3.1.
Descripcin
__________________________
Pgina: 17
5.3.2.
Funciones
Con esta funcin se establece un nuevo temporizador, cuyo tiempo de expiracin ser el
indicado por el parmetro msec (indicado en milisegundos). El temporizador vendr referido a
una de las 10 colas de temporizador proporcionadas por Cnet, mediante el uso del parmetro
ev, donde de establece dicha cola de temporizador EV_TIMER1...EV_TIMER10, y el evento
asociado. El parmetro data se utiliza para pasar alguna informacin a la funcin manejada
por el evento asociado al temporizador.
La funcin devuelve la referencia al temporizador creado, que lo distingue del resto de
temporizadores, y que se deber utilizar para posteriores llamadas a este temporizador, como
por ejemplo, para visualizar el valor de temporizacin o para pararlo. Si el sistema no puede
crear el temporizador, devuelve NULLTIMER.
Posibles errores: ER_BADARG.
__________________________
Pgina: 18
Se utiliza esta funcin para parar un temporizador que previamente haya sido activado, y por
supuesto, no haya expirado. Como parmetro se pasa la referencia obtenida con la funcin
CNET_start_timer().
Posibles errores: ER_BADTIMER.
Esta funcin permite recuperar el valor que se le pas al temporizador (timer) a travs del
parmetro Data. El temporizador no es cancelado y continua su ejecucin normal.
Posibles errores: ER_BADTIMER, ER_BADARG.
Registra func como la funcin o procedimiento a ejecutar una vez se ha generado el evento ev.
Posibles errores: ER_BADEVENT, ER_NOTSUPPORTED.
Obtiene la direccin de la funcin que se ha registrado con el evento ev, para que se ejecute
una vez ocurre dicho evento, junto con los datos de usuarios que se pasarn al manejador de
eventos.
Posibles errores: ER_BADEVENT, ER_NOTSUPPORTED.
__________________________
Pgina: 19
Lee a travs de teclado una cadena de longitud len, y guarda el contenido en *line. Devuelve el
n de bytes que han sido guardados en *line, que contendr, al retorno, una cadena, terminada
en NULL, y len contendr strlen(line) + 1.
Posibles errores: ER_BADSIZE, ER_NOTREADY, ER_NOTSUPPORTED.
__________________________
Pgina: 20
6.
Compilacin
en el terminal, dando como resultado, la lista de todas las opciones de la lnea de comandos
disponibles, y su explicacin:
-A <string>
Especifica una cadena de compilacin donde se declara una nueva Capa Aplicacin que ser
utilizada en la simulacin. Por defecto, si no se especifica la opcin A, Cnet utiliza su Capa
Aplicacin interna. La Capa Aplicacin que se utilice, ya sea la definida por defecto o bien una
suministrada por el usuario, es utilizada tanto como fuente de mensajes (nodo origen) como
sumidero o destino de mensajes (nodo destino).
__________________________
Pgina: 21
-c
Al iniciar Cnet, por defecto, cada nodo tiene un valor time_of_day (reloj) diferente al resto de los
nodos. Si se especifica la opcin c, el reloj de todos los nodos se sincroniza en el inicio de la
simulacin.
-C <string>
Cadena que especifica el fichero de protocolo que utilizar cada nodo. Si no se especifica la
opcin C, se supone por defecto la cadena protocol.c.
-d
-e
Las tramas pueden sufrir alteraciones u otras anomalas desde que son emitidas por el nodo
origen y alcanzan el nodo destino. Las tramas errneas no son detectadas por la Capa Fsica, y
deben de ser detectado capas superiores.
Si se especifica la opcin e, la funcin CNET_read_physical() detectar y comunicar la
presencia de tramas errneas, devolviendo el valor 1 , y estableciendo Cnet_errno a
ER_CORRUPTDATA.
-E <nevents>
-f <secs>
-F <file>
Si Cnet ha sido compilado para ejecutarse bajo Tcl/Tk, entonces file ser suministrado por el
intrprete Tcl. Si no se puede encontrar el fichero directamente en el directorio de trabajo,
entonces se utilizar CNETPATH para buscar en otra ruta.
-g
Indica que se inicie la ejecucin de la simulacin tan pronto como la ventana principal
aparezca, evidentemente, bajo entorno X-windows (grfico).
-k
Utiliza el estilo antiguo especificado por Kernighan and Ritchie (K&R) C, para compilar los
ficheros fuentes de usuario para la Capa Aplicacin (-A), los protocolos de capas intermedias (C) y la Capa Fsica (-P). Por defecto, Cnet utiliza el compilador ANSI-C, gcc.
-m <mins>
Por defecto, el lmite de tiempo de simulacin est establecido en 3 minutos, para evitar una
sobrecarga innecesaria de las mquinas de simulacin. Con la opcin m se puede modificar el
tiempo de simulacin preestablecido.
__________________________
Pgina: 22
-M <mins>
-n
Esta opcin indica a Cnet que analice el fichero de topologa, compile y linke el cdigo C
necesario y termine, sin realizar la simulacin.
-N
-o <prefijo>
Todas las salidas de cada por el dispositivo estndar, esto es, printf(), puts() y putchar() las
redirecciona a un fichero ASCII identificado por prefijo. Por ejemplo, si la red est formada por
los nodos con nombres: nodo-1 y nodo-2, y se establece o out, entonces, la salida de dichos
nodos se redireccionar a los ficheros out.nodo-1 y out.nodo-2.
-O
-P
Con esta opcin, se le indica a Cnet que nicamente construya y chequeo la coherencia de la
topologa de la red, imprime el resultado y termina.
-P <string>
Mediante P <string>, se le especifica a Cnet que utiliza una nueva Capa Fsica. Si no se
especifica la opcin P, se utiliza la Capa Fsica por defecto. El uso de alguna Capa Fsica
especfica se suele utilizar para enviar y chequear tramas errneos, e incluso, prdidas de
tramas.
-q
Indica a Cnet que realice la ejecucin en silencio, esto es, eliminando todas las salidas hacia
el dispositivo de salida por defecto, esto es, elimina las instrucciones printf(), puts() y putchar().
nicamente se mantienen las salidas producidas durante un evento EV_DEBUG? (botn) y las
salidas hacia ficheros.
-r <nnodes>
Indica que se genere una red aleatoria, formada por nnodos. La generacin aleatoria garantiza
que la red es totalmente conectada. Tambin se puede establecer la opcin r para
proporcionar un fichero de topologa.
-R <funcin>
__________________________
Pgina: 23
Especifica que se utiliza la funcin() como la primera funcin que se ejecuta cuando se reinicia
cada nodo. Por defecto, se utiliza la funcin reboot_node().
-s
Imprime un resumen de la actividad de la red justo antes de terminar Cnet.
-S <seed>
Proporciona la semilla para la generacin de nmeros aleatorios (utilizada para la generacin
de mensajes y tramas errneas). La semilla debe ser un nmero entero.
-t
Representa todos los eventos generados por cada nodo de la red. Se enva al dispositivo
estndar error, una descripcin de las llamadas a las funciones, argumentos, retorno de las
funciones, as como el valor cnet_errno.
-T
Por defecto, Cnet se ejecuta en tiempo real, esto es, el tiempo de simulacin en la red es
igual al tiempo real, una unidad de tiempo en la simulacin es igual a una unidad de tiempo en
la realidad. Esta especificacin funciona bien para topologas en torno a los 20 nodos.
Utilizando T se obliga a Cnet a ignorar el Tiempo Real y se ejecuta como un simulador de
Eventos Discretos Real, esto es, utilizando sus propias unidades de tiempo.
-v
Indica que utiliza un reporte de informacin ampliado de las acciones de Cnet.
-X
Deshabilita el soporte para X-windows (por defecto, se utilizan terminales ASCII).
-z
Visualiza estadsticas y resmenes de eventos, incluso si los valores son 0.
__________________________
Pgina: 24
7.
CnetNodeType
Descripcin
NT_HOST
El nodo es un Host, CON Capa Aplicacin y Keyboard
NT_ROUTER
El nodo es un Router SIN Capa Aplicacin ni Keyboard.
IMPORTANTE: Las siguientes funciones slo sern vlidas para nodos del tipo NT_HOST:
CNET_write_application(),
CNET_read_application(),CNET_enable_application(),
CNET_disable_application(),
CNET_set_handler(EV_APPLICATIONLAYER,)
y
CNET_set_hander(EV_KEYBOARDREADY,).
__________________________
Pgina: 25
8.
Informacin adicional
Se puede obtener informacin adicional, as como descargar los fuentes del simulador y
material auxiliar, en la pgina del profesor Dr. Chris Mcdonald.
www.cs.uwa.edu.au/cnet/
__________________________
Pgina: 26