Aplicación para comparar topologías de red - e

Anuncio
Universidad Carlos III
E SCUELA P OLIT ÉCNICA
Ingenierı́a Técnica de Telecomunicación, Telemática
Diseño y Desarrollo de una Aplicación Para el
Estudio Comparativo de Topologı́as de Red
Autor: José Miguel Vázquez Viejo
Tutor: Isaac Seoane Pujol
Co-Tutor: Isaı́as Martı́nez Yelmo
Este trabajo se encuentra bajo la licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.
This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Spain License.
http://creativecommons.org/licenses/by-nc-nd/3.0/deed.es
IV
Resumen
Este proyecto consiste en el diseño e implementación de una aplicación para, a partir
de una topologı́a de red descrita en un fichero XML, generar topologı́as básicas equivalentes, para su simulación y estudio. La aplicación, además, integra los módulos de
simulación necesarios y ofrece al usuario un entorno para realizar un estudio comparativo
de las gráficas obtenidas con los resultados de las simulaciones.
En una primera parte se estudian las diferentes tecnologı́as de conmutación óptica y
las funcionalidades del simulador NS-2 con los diferentes tipos de tráfico utilizado. En la
segunda parte, se detalla el diseño y la implementación de una aplicación para facilitar el
estudio comparativo de diferentes topologı́as de red. Para terminar, se estudian diferentes
pruebas para comprobar el funcionamiento de la aplicación y se realiza una explicación
de las gráficas con los resultados obtenidos.
Palabras Clave Simulación, Redes ópticas
VI
Abstract
This project consists on the design and implementation of an application to study and
compare the performance of different network topologies. Based on a initial network topology describe in a XML file, the application creates the description of equivalent basic
topologies for their simulation and study. The simulation modules required are also integrated into the chosen NS-2 simulator and managed from the developed application. It also
provides the user with a graphical environment to compare the output data using a set of
charts.
First, optical switching technologies are briefly studied as also the NS-2 simulator and
the modules required to generate different traffic pattern distributions. Next, the design
and development of the application which allows to compare the network topologies are
detailed. And finally, in order to guarantee the correct performance of the complete system,
some validation tests have been made: the explanation of the results and the obtained
charts are deeply described.
Keywords Simulation, Optical networks
Agradecimientos
En primer lugar me gustarı́a agradecer a mi familia por todos los valores
que me han inculcado para ser mejor persona, por todo su apoyo y dedicación
durante tantos años, incluso en los momentos tan difı́ciles que nos ha tocado
vivir, confiando ciegamente en mı́ y por permitirme tomar las decisiones que yo
consideraba más acertadas para mi futuro.
También quiero agradecer a mi tutor Isaac todo el apoyo que me ha
ofrecido, que no es poco; por no darme nunca por perdido y por ofrecerme
la oportunidad de realizar este proyecto bajo su tutela y guı́a. También agradecer a Isaı́as su preocupación por el estado del proyecto a pesar de la distancia.
A mis amigos de Pinto, Tote por esas batallas en el 41º milenio, Diana por
esos dı́as largos de estudio en tan inmejorable compañı́a y Bea por tantos
buenos momentos que me hace pasar con sus locuras. Y aunque no lo lean,
a mis amigos del barrio Adri, Javi, Keko y Vı́ctor, porque trece años no se olvidan.
Y cómo olvidar a mi otra familia, la integrada por toda esa gentucilla que me
hace sentir tan bien y por tan diversos motivos. Adal, Aı́da, Carlitos, Deivid,
Dieguete, Elenita, Gsus, Lisar, Rober, Samu y Virgi. Y por supuesto a los que
considero como mis hermanos, Miguel y Pablete.
Y por último, pero no por ello menos importante a Ruth, por todo su incondicional apoyo y confianza, por tantos y tan buenos momentos que hemos compartido
y porque sin ella todo esto no tendrı́a ningún sentido.
Índice general
Glosario
XXIII
1. Introducción
1
1.1. Contexto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.3. Contenido
3
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2. Estado del arte
5
2.1. Redes ópticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.1.1. OCS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.1.2. OPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.1.3. OBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
. . . . . . . . . . . . . . . . .
15
2.2. Simuladores de Red . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
2.1.4. Resumen de planificación de WDM
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
2.2.3. OMNeT++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
2.2.4. OPNET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
2.2.1. NS
2.2.2. NS-3
XI
Í NDICE GENERAL
2.2.5. KivaNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
2.2.6. CNET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
2.2.7. Resumen del estudio de los simuladores . . . . . . . . . . . . . . .
25
2.3. Teorı́a de colas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
2.3.1. M/M/1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
2.3.2. M/M/c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
2.3.3. G/G/c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
2.3.4. Teorema de Jackson . . . . . . . . . . . . . . . . . . . . . . . . .
31
2.4. Generadores de tráfico . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
3. Herramientas
37
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
3.1.1. Caracterı́sticas . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
3.1.2. Funcionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
3.1. Simulador NS-2
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2.1. JDOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2.2. JFreeChart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
3.2.3. Commons-Math . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
3.2.4. Entorno de desarrollo . . . . . . . . . . . . . . . . . . . . . . . . .
43
3.3. SNDlib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
3.2. Java
4. Descripción de la aplicación
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
4.2.1. Integración . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
4.1. Funcionalidad
4.2. Simulador NS-2
XII
45
Í NDICE GENERAL
4.2.2. Generadores de tráfico utilizados . . . . . . . . . . . . . . . . . . .
46
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
4.3.1. Parser de XML . . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
4.3.2. Generador de ficheros de ns . . . . . . . . . . . . . . . . . . . . .
57
4.3.3. Analizador de resultados . . . . . . . . . . . . . . . . . . . . . . .
58
4.4. GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
61
4.4.1. Interfaz de usuario . . . . . . . . . . . . . . . . . . . . . . . . . .
63
4.4.2. Gráficas de resultados . . . . . . . . . . . . . . . . . . . . . . . .
64
4.4.3. Ampliar funcionalidad . . . . . . . . . . . . . . . . . . . . . . . . .
67
4.4.4. Diagrama de clases simplificado . . . . . . . . . . . . . . . . . . .
68
4.3. Parser
5. Validación
71
5.1. Pruebas a realizar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
71
5.2. Pruebas de carga
73
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . .
73
. . . . . . . . . . . . . .
76
5.2.3. Pruebas con carga alta en los enlaces . . . . . . . . . . . . . . . .
79
5.3. Pruebas de retardo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
81
5.2.1. Pruebas con carga baja en los enlaces
5.2.2. Pruebas con carga media en los enlaces
. . . . . . . .
81
. . . . . . .
85
5.3.3. Pruebas con tiempos de retardo altos en los enlaces . . . . . . . .
90
5.4. Estudio del estado de las colas de espera en los nodos . . . . . . . . . . .
90
5.4.1. Pruebas con demandas bajas . . . . . . . . . . . . . . . . . . . .
90
5.4.2. Pruebas con picos de demanda . . . . . . . . . . . . . . . . . . .
92
5.5. Simulación de otros escenarios . . . . . . . . . . . . . . . . . . . . . . .
92
5.3.1. Pruebas con tiempos de retardo bajo en los enlaces
5.3.2. Pruebas con tiempos de retardo medio en los enlaces
XIII
Í NDICE GENERAL
6. Conclusiones y trabajo futuro
6.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
99
99
6.2. Trabajo futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
A. Presupuestos
107
A.1. Tareas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
A.2. Costes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
A.2.1. Personal
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
A.2.2. Material . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
A.2.3. Costes indirectos . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
A.3. Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
A.3.1. Totales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
B. Manual de usuario
113
B.1. Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
B.1.1. Pantalla Configuración . . . . . . . . . . . . . . . . . . . . . . . . 114
B.1.2. Pantalla Opciones de Simulación . . . . . . . . . . . . . . . . . . . 119
B.1.3. Pantalla Esquema de la Red . . . . . . . . . . . . . . . . . . . . . 123
B.1.4. Pantalla Demandas de Tráfico . . . . . . . . . . . . . . . . . . . . 123
B.1.5. Pantalla de Enlaces entre nodos . . . . . . . . . . . . . . . . . . . 125
B.1.6. Pantalla de Gráficas de resultados . . . . . . . . . . . . . . . . . . 128
C. Manual de instalación
135
C.1. Instalación NS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
C.2. Instalación NAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
XIV
Í NDICE GENERAL
D. Cambios en ficheros para la compilación de NS
139
E. Clases
145
E.1. Clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
E.2. Diagrama de clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
F. Ejemplos de ficheros
151
F.1. Fichero XML de SNDlib
. . . . . . . . . . . . . . . . . . . . . . . . . . . 151
F.2. Fichero de trazas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
F.3. Fichero esqueleto
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
F.4. Fichero para simular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
XV
Í NDICE GENERAL
XVI
Índice de Figuras
2.1. Esquema de WDM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.2. Esquema de nodo intermedio OPS
. . . . . . . . . . . . . . . . . . . . .
8
2.3. Esquema de envı́o de tramas OBS
. . . . . . . . . . . . . . . . . . . . .
9
2.4. Esquema de nodo intermedio OBS
. . . . . . . . . . . . . . . . . . . . .
10
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
2.6. Algoritmos de planificación OBS . . . . . . . . . . . . . . . . . . . . . . .
14
2.7. NAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
2.8. OMNeT++ IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
2.9. Red OBS en OMNeT++ . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
2.10.Dominios de OPNET . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
2.11.Arquitectura de KivaNS . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
2.12.Bloques del API de KivaNS
. . . . . . . . . . . . . . . . . . . . . . . . .
23
2.13.Interfaz gráfico de KivaNS . . . . . . . . . . . . . . . . . . . . . . . . . .
24
2.14.Interfaz gráfico de CNET . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
2.15.Esquema de sistema M/M/1 . . . . . . . . . . . . . . . . . . . . . . . . .
27
2.16.Función de densidad exponencial . . . . . . . . . . . . . . . . . . . . . .
29
2.17.Función de distribución exponencial . . . . . . . . . . . . . . . . . . . . .
29
2.5. Protocolo JET
XVII
Í NDICE DE F IGURAS
2.18.Esquema de sistema M/M/c . . . . . . . . . . . . . . . . . . . . . . . . .
30
2.19.Esquema de sistema G/G/c . . . . . . . . . . . . . . . . . . . . . . . . .
31
2.20.Esquema tráfico CBR
32
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . .
33
2.22.Curva de Koch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
2.23.Tráfico observado en una red Ethernet . . . . . . . . . . . . . . . . . . . .
34
2.24.Esquema tráfico Autosimilar . . . . . . . . . . . . . . . . . . . . . . . . .
35
3.1. Gráfica de barras y series con JFreeChart . . . . . . . . . . . . . . . . . .
42
3.2. Histograma con JFreeChart . . . . . . . . . . . . . . . . . . . . . . . . .
42
3.3. NetBeans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
4.1. Ejemplo de topologı́a parseada . . . . . . . . . . . . . . . . . . . . . . .
52
4.2. Ejemplo de topologı́a parseada en anillo . . . . . . . . . . . . . . . . . . .
53
4.3. Ejemplo de topologı́a parseada en malla
. . . . . . . . . . . . . . . . . .
54
. . . . . . . . . . . . . . . . .
55
4.5. Diagrama parseo de XML . . . . . . . . . . . . . . . . . . . . . . . . . .
56
4.6. Diagrama para generar fichero NS . . . . . . . . . . . . . . . . . . . . . .
59
4.7. Diagrama de simulación . . . . . . . . . . . . . . . . . . . . . . . . . . .
60
4.8. Diagrama de análisis de trazas . . . . . . . . . . . . . . . . . . . . . . . .
62
4.9. Diagrama de clases simplificado . . . . . . . . . . . . . . . . . . . . . . .
69
5.1. Red NFSNET, Europa y Polonia . . . . . . . . . . . . . . . . . . . . . . .
72
5.2. Prueba con baja carga para NFSNET . . . . . . . . . . . . . . . . . . . .
74
5.3. Prueba con baja carga para Europa . . . . . . . . . . . . . . . . . . . . .
75
5.4. Prueba con baja carga para Polonia . . . . . . . . . . . . . . . . . . . . .
76
2.21.Esquema tráfico Exponencial
4.4. Ejemplo de topologı́a parseada en estrella
XVIII
Í NDICE DE F IGURAS
5.5. Prueba con carga media para NFSNET . . . . . . . . . . . . . . . . . . .
77
5.6. Prueba con carga media para Europa . . . . . . . . . . . . . . . . . . . .
78
5.7. Prueba con carga media para Polonia . . . . . . . . . . . . . . . . . . . .
78
5.8. Prueba con carga alta para NFSNET . . . . . . . . . . . . . . . . . . . .
80
5.9. Prueba con carga alta para Europa . . . . . . . . . . . . . . . . . . . . .
80
5.10.Prueba con carga alta para Polonia . . . . . . . . . . . . . . . . . . . . .
81
5.11.Prueba retardo bajo en enlaces para NFSNET . . . . . . . . . . . . . . .
83
5.12.Prueba retardo bajo en enlaces para Polonia . . . . . . . . . . . . . . . .
84
5.13.Prueba retardo medio en enlaces para NFSNET . . . . . . . . . . . . . .
86
5.14.Prueba retardo medio en enlaces para Polonia . . . . . . . . . . . . . . .
87
5.15.Prueba retardo alto en enlaces para NFSNET . . . . . . . . . . . . . . . .
88
5.16.Prueba retardo alto en enlaces para Polonia . . . . . . . . . . . . . . . . .
89
5.17.Prueba sin carga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
91
5.18.Prueba con picos de carga . . . . . . . . . . . . . . . . . . . . . . . . . .
93
5.19.Esquema de la M-40 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
94
5.20.Colas en los nodos con apoyo de anillo interior. Congestión 50 %. . . . . .
96
5.21.Colas en los nodos sin apoyo de anillo interior. Congestión 50 %. . . . . . .
96
5.22.Colas en los nodos con apoyo de anillo interior. Congestión 90 %. . . . . .
97
5.23.Colas en los nodos sin apoyo de anillo interior. Congestión 90 %. . . . . . .
97
B.1. Pantalla de Configuración . . . . . . . . . . . . . . . . . . . . . . . . . . 114
B.2. Simulación en curso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
B.3. Analizando y generando gráficas
. . . . . . . . . . . . . . . . . . . . . . 118
B.4. Topologı́a en anillo recién abierta . . . . . . . . . . . . . . . . . . . . . . 119
B.5. Topologı́a en anillo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
XIX
Í NDICE DE F IGURAS
B.6. Topologı́a en estructurada . . . . . . . . . . . . . . . . . . . . . . . . . . 120
B.7. Pantalla Opciones Simulación . . . . . . . . . . . . . . . . . . . . . . . . 121
B.8. Pantalla Esquema de la Red . . . . . . . . . . . . . . . . . . . . . . . . . 124
B.9. Pantalla Demandas de Tráfico . . . . . . . . . . . . . . . . . . . . . . . . 124
B.10.Modificación de la primera demanda de tráfico . . . . . . . . . . . . . . . 125
B.11.Pantalla de Enlaces entre nodos . . . . . . . . . . . . . . . . . . . . . . . 126
B.12.Diálogo para añadir capacidad . . . . . . . . . . . . . . . . . . . . . . . . 127
B.13.Gráficas de Tráfico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
B.14.Gráficas de Colas
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
B.15.Gráficas de Retardo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
C.1. NAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
E.1. Diagrama de clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
XX
Índice de Tablas
. . . . . . . . . . . . . . .
14
2.2. Tabla comparación tecnologı́as conmutación óptica . . . . . . . . . . . . .
15
2.3. Tabla comparación simuladores de red
26
2.1. Tabla comparación algoritmos de planificación
. . . . . . . . . . . . . . . . . . .
A.1. Duración estimada de las tareas . . . . . . . . . . . . . . . . . . . . . . . 108
A.2. Salarios de especialistas . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
A.3. Coste del personal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
A.4. Coste de licencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
A.5. Costes indirectos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
A.6. Costes indirectos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
A.7. Presupuesto total . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
XXI
Í NDICE DE TABLAS
XXII
Glosario
A
ACK (Acknowledgment) acuse de recibo, p. 11.
AON (All Optical Networks) redes completamente ópticas, p. 7.
ARP (Address Resolution Protocol) protocolo de resolución de direcciones, p. 22.
C
CBR (Constant Bit Rate) tasa de envı́o constante, p. 32.
F
FDL (Fiber Delay Lines) lı́neas ópticas de retardo; memoria óptica, p. 6.
G
Geometrı́a Computacional se basa en aplicar algoritmos de geometrı́a clásica en el
ámbito de algoritmos de programación, p. 13.
GUI (Graphical User Interface) interfaz gráfica de usuario, p. XIII.
XXIII
G LOSARIO
I
ICMP (Internet Control Message Protocol) protocolo de mensajes de control de internet, p. 22.
IP (Internet Protocol) protocolo de internet, p. 22.
J
JVM (Java Virtual Machine) máquina virtual de java, p. 61.
N
NACK (Negative Acknowledgment) acuse de recibo negativo, p. 11.
NAM (Network Animator) animador de red, p. 17.
O
OBS (Optical Burst Switching) conmutación óptica de ráfagas, p. 9.
OCS (Optical Circuit Switching) conmutación óptica de cirtuitos, p. 7.
O/E/O
conversión óptica-eléctrica-óptica, p. 7.
OPS (Optical Packet Switching) conmutación óptica de paquetes, p. 8.
T
Tcl (Tool Comand Language) lenguaje de herramientas de comando, p. 16.
TCP (Transmission Control Protocol) protocolo de control de transmisión, p. 37.
XXIV
G LOSARIO
W
WDM (Wavelenght Division Multiplexing) multiplexación por división de longitudes de
onda, p. 5.
X
XML (Extensible Markup Language) lenguaje de marcas extensible, p. 151.
XXV
Capı́tulo 1
Introducción
1.1.
Contexto
Dado el gran aumento que han sufrido tanto las necesidades de ancho de banda en
las redes, como la cantidad de usuarios conectados a las mismas, las velocidades experimentadas con los tradicionales bucles de abonado de par de cobre se quedan desfasadas
en comparación con la cantidad de tráfico que deben gestionar.
Con la aparición de las redes de fibra óptica, esas velocidades fueron aumentando en
gran medida, llegando a alcanzar un orden de magnitud mayor que las redes eléctricas
tradicionales. Aún ası́, la polı́tica de gestión de los recursos no permitı́a aprovechar todo
el potencial que estas nuevas redes ofrecı́an. Por eso la investigación de nuevas polı́ticas
de gestión de los recursos consiguió aumentar de nuevo las velocidades.
Pero surge el inconveniente de que los dispositivos de conmutación actuales sólo procesan señales eléctricas, teniendo que transformar la señal óptica a eléctrica para su
procesado, lo que de nuevo limita los recursos que se ofrecen. Por esta razón, los diseños
futuros para las redes ópticas están enfocados a que la red sea por completo óptica, sin
necesidad de procesar la señal en un formato eléctrico.
Por otro lado, desde la aparición de las redes informáticas se han querido estudiar
las prestaciones, las caracterı́sticas y el comportamiento que adoptaban ante diferentes
estructuras de tráfico. Por estas razones surgieron los simuladores de red, para poder
estudiar redes que de otro modo habrı́a que estar recreando y construyendo fı́sicamente,
lo que puede ser una tarea muy costosa, tanto en tiempo como económicamente.
1
C AP ÍTULO 1. I NTRODUCCI ÓN
La idea inicial del proyecto era la simulación y estudio de anillos de OBS, pero durante
la realización del proyecto se fue pensando en posibles ampliaciones. Se decidió no limitar
la topologı́a de red a anillos, si no a cualquier topologı́a y realizar un estudio comparativo entre dicha red y otras topologı́as básicas, no sólo el anillo equivalente. También se
tomó la decisión de poder modificar ciertos parámetros de la simulación, ası́ como poder
modificar ciertas caracterı́sticas de las redes bajo estudio. Por último, se diseñó una vista
con diferentes tipos de gráficas para poder analizar y comparar los resultados obtenidos
de la realización de las diferentes simulaciones.
1.2.
Objetivos
El objetivo principal del proyecto consiste en el estudio comparativo de los resultados
que se obtienen de la simulación de diferentes topologı́as de red, pero con unas prestaciones similares. Para conseguirlo, a partir de una topologı́a de red dada, se generan
topologı́as básicas (anillo, malla y estrella) equivalentes y se simulan. A continuación se
procesan los resultados obtenidos para facilitar el estudio de la principal y tomar las decisiones pertinentes de diseño y planificación. Para facilitar esta tarea, se desarrolla un
interfaz gráfico desde el que se pueden configurar y modificar parámetros de la simulación de forma sencilla e intuitiva, ası́ como ofrecer al usuario una vista con los resultados
obtenidos en forma de gráficas.
Los objetivos especı́ficos serı́an:
Desarrollar un parser que, a partir de un fichero XML, con la descripción de la topologı́a y sus demandas de tráfico habituales, genere las topologı́as básicas equivalentes.
Diseño de un fichero esqueleto con los parámetros de configuración de las simulaciones a realizar, en el cual, se dejan sin configurar las opciones que se ofrecen al
usuario para su modificación.
Agregar los módulos para OBS al simulador e integrar dicho conjunto con la aplicación.
Desarrollar un parser mediante el cual se procesen los ficheros de trazas obtenidos
de las diferentes simulaciones.
2
1.3. C ONTENIDO
Diseñar una vista con diferentes gráficas de resumen de resultados, para facilitar el
estudio comparativo de diferentes topologı́as de red.
1.3.
Contenido
En la primera parte de la memoria, compuesta por los Capı́tulos 2 y 3, se estudia
el estado actual de las redes ópticas, ası́ como los simuladores de red disonibles y los
tráficos utilizados en la simulación. En el Capı́tulo 3 se detallan las herramientas utilizadas
para la realización del proyecto.
En la segunda parte, en el Capı́tulo 4 se detallan las decisiones de diseño tomadas para la realización del proyecto y la manera de implementarlas. Y en el Capı́tulo 5 se explican
las pruebas realizadas para la validación del correcto funcionamiento de la aplicación.
Para terminar, en el Capı́tulo 6 se enumeran las conclusiones obtenidas durante la
realización de este proyecto y una serie de lı́neas de trabajos futuros para la ampliación
de la funcionalidad.
Además, se ofrecen Apéndices que contienen información útil pero no tenı́an cabida
en la parte principal de esta memoria. En ellos, se puede encontrar el Presupuesto del
proyecto, el Manual de la aplicación, el Manual de instalación, los ficheros que se deben modificar para la integración de OBS, las clases que intervienen en la aplicación, y
ejemplos con los ficheros que maneja la aplicación.
3
C AP ÍTULO 1. I NTRODUCCI ÓN
4
Capı́tulo 2
Estado del arte
En este capı́tulo se hará un estudio de las tecnologı́as relacionadas con el proyecto:
las diferentes tecnologı́as de conmutación para redes ópticas, los simuladores de red
existentes, la teorı́a de colas y los diferentes generadores de tráfico utilizados.
2.1.
Redes ópticas
Con el aumento del tráfico en Internet y la cada vez mayor afluencia de usuarios en
la red, las velocidades alcanzadas por los bucles de abonado de par de cobre se quedan
cada vez más cortas, ya que son del orden de los 100Mbps. Con los enlaces ópticos,
se consigue aumentar en gran medida la capacidad de los enlaces, llegando al orden de
Gbps en caso de no haber interferencias; además de tener una atenuación muy baja, lo
que conlleva una longitud de enlace mayor. Existen varias maneras de gestionar el enlace,
pero la que ha resultado más eficaz y la que se usa en la actualidad para solventar el
problema del incremento de tráfico y usuarios, ha sido la multiplexación óptica por longitud
de onda o WDM [1].
WDM (Wavelenght Division Multiplexing) se sirve de diferentes longitudes de onda
para realizar la transmisión de información a través de un medio óptico. La figura 2.1
representa el esquema de funcionamiento de WDM.
El esquema de este tipo de redes se compone de enlaces y conmutadores. Los enlaces son fibras ópticas, donde los transmisores son láseres que generan las señales
ópticas a partir de señales eléctricas transformadas, y los receptores realizan el proceso
inverso; y los conmutadores son componentes de red encargados de dirigir el tráfico hacia
5
C AP ÍTULO 2. E STADO DEL ARTE
Figura 2.1: Esquema de WDM
su destino, previa conversión al dominio eléctrico para el procesado de las cabeceras o
paquetes de control.
También existen lı́neas ópticas de retardo, o FDL(Fiber Delay Lines), que son latiguillos
de fibra que introducen un retardo entre la entrada y la salida. Estos FDL se utilizan para
solventar los problemas que aparecen cuando dos paquetes intentan usar la misma lı́nea
de salida a la vez. Como sólo uno de ellos puede ser enviado, se almacena el otro en un
buffer, que en el caso de las redes ópticas se trata de los citados FDL.
En una topologı́a tı́pica existen dos tipos de nodos. Los nodos externos de la red,
encargados de inyectar el tráfico en la red, son conocidos como nodos edge. Y los nodos
intermedios, encargados de la conmutación y encaminamiento de los paquetes se llaman
nodos core.
Como ya se ha dicho, se necesitan conversiones entre los dominios óptico y eléctrico
en cada nodo, lo cual, impide aprovechar de manera eficiente el ancho de banda: la señal
es convertida al dominio eléctrico, se procesa, y se vuelve a transformar a su forma óptica
antes de pasar a la fibra de salida. Por tanto, la eficiencia de la comunicación está limitada
por la capacidad de los dispositivos electrónicos del sistema, y aunque en los últimos
6
2.1. R EDES ÓPTICAS
años se ha conseguido un gran avance en cuanto a sus prestaciones, no es suficiente
para alcanzar las velocidad de la tecnologı́a óptica.
Por estas razones, los diseños futuros de redes WDM se enfocan a la eliminación
de las conversiones O/E/O, convirtiéndose en redes AON(All Optical Networks), lo que
permitirı́a alcanzar tasas de transmisión del orden de Tbps.
A continuación se explican las diferentes configuraciones en una red WDM para la
gestión de las longitudes de onda λ’s.
2.1.1.
OCS
En OCS [2](Optical Circuit Switching), se crea un circuito, o camino, entre los nodos de
la red usando el encaminamiento por longitud de onda que ofrece la capa fı́sica, esto es,
se reserva una longitud de onda λ para cada par de nodos, y una vez el camino está configurado, los datos permanecen en el dominio óptico hasta su destino, sin necesidad de
realizar conversiones O/E/O intermedias.
Pero el problema de OCS es que sólo es eficiente cuando existe un gran volumen
de tráfico entre los nodos que establecen la conexión, ya que de otro modo, no se harı́a
un uso eficiente de los recursos del enlace, porque la longitud de onda está reservada
para ese enlace únicamente. Si la duración del tiempo de transmisión de datos es corta
en relación con el tiempo del establecimiento de la conexión, estamos desaprovechando
mucho ancho de banda.
Otro inconveniente es que el número de longitudes de onda disponibles en cada fibra
es limitado, lo que deriva en un problema de flexibilidad y escalabilidad. En una red grande, este limitado número de λ’s hace imposible crear una malla de caminos ópticos entre
todos los nodos. Además, para cada topologı́a se debe resolver el problema del encaminamiento y alojamiento de las λ’s por separado, no existiendo algoritmos que lo resuelvan
en un tiempo aceptable. Si además tenemos en cuenta que son redes estáticas, conlleva
una baja adaptabilidad a un tráfico cambiante.
7
C AP ÍTULO 2. E STADO DEL ARTE
Figura 2.2: Esquema de nodo intermedio OPS
2.1.2.
OPS
Para solventar el problema de la limitación en cuanto al número de λ’s surge OPS [2](Optical
Packet Switching), que es otra posible configuración de WDM. Aprovecha de manera más
eficiente el ancho de banda comparado con OCS, ya que en este caso, el tráfico de usuario se transporta junto con la información de control, lo que proporciona un uso más flexible
y eficiente del ancho de banda disponible en la capa óptica. Los paquetes pueden transmitirse a través de cualquiera de las longitudes de onda disponibles en cada nodo, y al
igual que en las redes eléctricas convencionales, los nodos intermedios se encargan del
encaminamiento hacia su destino.
El problema de esta tecnologı́a es que los conmutadores, o nodos intermedios, deben
procesar los paquetes en el dominio eléctrico, pero viajan de manera óptica, por lo que se
necesita realizar una conversión O/E/O, la cual, como ya dijimos, genera un cierto retardo
nada despreciable.
La manera de encaminar un paquete es leyendo su cabecera, lo que conlleva la conversión entre dominio eléctrico y óptico de la misma. Los datos del paquete se retienen en
memoria óptica hasta que se decide por dónde debe ser enviado, y llegado ese momento,
se debe configurar la matriz de conmutación en ese nodo. Por lo tanto, el retardo total
será la suma de la conversión optico-eléctrica de la cabecera, más el tiempo de configuracón de la matriz de conmutación, más el tiempo de reconstrucción del paquete en el
dominio óptico. Podemos ver un esquema del funcionamiento de un nodo intermedio de
OPS en la figura 2.2.
8
2.1. R EDES ÓPTICAS
Figura 2.3: Esquema de envı́o de tramas OBS [5]
Aunque la conmutación de paquetes ofrece un mejor uso del ancho de banda disponible que OCS, al tener un retardo tan grande, estamos limitando ese ancho de banda y
se termina por realizar un mal uso del mismo.
2.1.3.
OBS
Se debe buscar un término medio entre OCS y OPS ya que ninguna aprovecha al
máximo el ancho de banda disponible en los enlaces, por eso surge OBS [2] [3] [4](Optical
Burst Switching), como otra configuración de WDM, que se parece a las dos anteriores.
Esto se debe a que el intercambio de información se realiza mediante ráfagas, no con
paquetes. Si el tamaño de las ráfagas es muy grande, el esquema se parece a OCS,
ya que se estarı́a bloqueando una longitud de onda durante mucho tiempo. En el otro
extremo, si se trata de ráfagas pequeñas, se asemeja a OPS. Además de tener canales
exclusivos para la transmisión de los datos, se dispone de canales de control, por donde
viajan las cabeceras, o paquetes de control.
9
C AP ÍTULO 2. E STADO DEL ARTE
Figura 2.4: Esquema de nodo intermedio OBS [5]
Creación de ráfagas
Cada ráfaga que se envı́a es ensamblada en el nodo origen, en ella se almacenan
en un buffer todos los paquetes con el mismo destino y se asigna una cabecera. De esta
manera, se pueden tratar las ráfagas como si fuesen paquetes. Los buffer tienen una
capacidad máxima, lo que determina el tamaño máximo de la ráfaga.
Antes de enviar la ráfaga se envı́a un paquete de control, que contiene la información
necesaria para el encaminamiento de dicha ráfaga a través de la red. Tras enviar ese paquete por un canal dedicado, el nodo envı́a la ráfaga de datos. Hay que señalar que el
envı́o del paquete de control y el de la ráfaga de datos se realizan por canales completamente diferentes. Se puede ver un pequeño esquema de este proceso en la figura 2.3.
Encaminamiento de ráfagas
Los nodos intermedios procesan el paquete de control de manera eléctrica, mediante
la conversión pertinente, y planifican los puertos de salida y los instantes de ocupación
10
2.1. R EDES ÓPTICAS
a través de una multiplexación estadı́stica de los canales ópticos, lo que permite que
dichos canales puedan ser compartidos por ráfagas de flujos diferentes, lo que mejora
la utilización. Se puede ver el esquema del funcionamiento de un nodo intermedio, que
dispone de dos canales de datos y uno de control, en la figura 2.4.
Mecanismos de reserva de recursos
Antes de enviar una ráfaga, los nodos deben reservar los recursos necesarios para
que lleguen a su destino sin retardos. La decisión de cómo reservar dichos recursos se
toma mediante ciertos mecanismos [3], algunos de los cuales, se explican a continuación:
Tell-and-Wait: cuando una fuente desea enviar una ráfaga, primero intenta reservar
el ancho de banda/longitud de onda desde la fuente hasta el destino enviando un
mensaje de petición. Cada nodo intermedio reserva esa salida especı́fica. Si el
ancho de banda es reservado con éxito se envı́a un ACK para informar a la fuente de
que debe enviar la ráfaga inmediatamente. En caso negativo se enviará un NACK,
indicando a la fuente que deberá liberar el recurso reservado y esperar un tiempo
para volver a intentarlo.
Tell-and-Go: cuando una fuente desea transmitir una ráfaga, lo hace sin ningún tipo
de reserva previa de recursos. Se envı́an al mismo tiempo tanto la ráfaga de datos
como la cabecera, por lo que, en los nodos intermedios, los datos se deben retrasar
antes de que la unidad de control reserve el canal para la salida de los mismos. En
caso de fallar la reserva en cualquiera de los nodos intermedios, se envı́a un NACK
a la fuente y pasado un tiempo se inicia la retransmisión de la ráfaga.
Just In Time(JIT): está considerado una variante de Tell-and-Wait, ya que cada
petición de transmisión se envı́a a un planificador central. El planificador informa
a cada nodo del intervalo de tiempo exacto en el que llegará la ráfaga antes de
que se transmita. El término Just-in-Time (justo a tiempo), se refiere a que en el
momento en que una ráfaga llega a un nodo intermedio, la matriz de conmutación
ya está configurada. Debido a que es un protocolo centralizado, que no es escalable
ni robusto, se proponen otras soluciones.
Just Enough Time(JET): este es el mecanismo que presenta un mejor uso del
ancho de banda. El tiempo que permanecen reservados los recursos en un nodo,
11
C AP ÍTULO 2. E STADO DEL ARTE
Figura 2.5: Protocolo JET
es el tiempo que tarda en configurarse el nodo, más el tiempo que tarda en llegar y
transmitirse la ráfaga, más el tiempo que tarda en desconfigurarse. En la figura 2.5
se puede ver que primero se envı́a la cabecera para después mandar la ráfaga sin
procesamientos intermedios, por lo que no sufre retardo alguno.
También minimiza el tiempo necesario antes de enviar los datos, ya que sólo notifica
que va a llegar una ráfaga y no espera a que se configuren los conmutadores de
longitud de onda.
En realidad, JET no reserva recursos desde que el paquete de control llega a un
nodo hasta que pasa la ráfaga. En su lugar, reserva los recursos de una forma
óptima desde que llega la ráfaga hasta que es conmutada. De esta manera, el
tiempo que el recurso permanece reservado para la transmisión es óptimo.
Algoritmos de planificación
En los conmutadores electrónicos convencionales, la contención de los paquetes se
resuelve mediante buffers. Pero en redes OBS el almacenamiento es muy limitado o casi
12
2.1. R EDES ÓPTICAS
nulo, por lo que se debe planificar de una manera diferente.
Cuando se recibe una ráfaga en un nodo intermedio, su envı́o se puede planificar
sobre múltiples longitudes de onda. Para realizar este cometido se recurre al planificador
de ráfagas, que elegirá una longitud de onda adecuada para la ráfaga recibida, siguiendo
un algoritmo en concreto.
Se define el horizonte de planificación como el último momento en el cual la longitud
de onda está planificada para ser usada.
Algunos algoritmos de planificación [3] son los siguientes:
LAUC(Latest Available Unscheduled Channel)/Horizon: para cada longitud de
onda se mantiene un sólo horizonte de planificación. Sólo se eligen los canales
cuyos horizontes preceden al tiempo de llegada de la nueva ráfaga, y de entre todos
ellos, se elige el que tiene el horizonte menor. El horizonte se actualiza después de
hacer la reserva para la siguiente ráfaga. La idea básica de este algoritmo es reducir
al mı́nimo los huecos en el ancho de banda creados al hacer una reserva.
LAUC-VF(Void Filling): la simplicidad en operación e implementación es la principal ventaja de los algoritmos basados en Horizon, pero se malgastan huecos entre
dos reservas existentes. Por lo tanto, los algoritmos capaces de rellenar los vacı́os
(con nuevas reservas en los huecos existentes) son más adecuados.
Se han definido algunas variantes de este algoritmo:
• Min-SV(Starting Void): funciona igual que LAUC-VF pero se alcanza un punto
óptimo más rápido, usando técnicas de Geometrı́a Computacional.
• Min-EV(Ending Void): intenta minimizar el nuevo hueco entre el final de una
nueva reserva y una ya existente.
• Best Fit: intenta minimizar la longitud total del principio y del final de los vacı́os
generados después de la reserva.
En la figura 2.6 se puede ver un esquema de los algoritmos descritos y en la tabla 2.1
se muestra una comparación entre los mismos, siguiendo la siguiente notación:
W : Número de longitudes de onda en cada puerto de salida.
13
C AP ÍTULO 2. E STADO DEL ARTE
Figura 2.6: Algoritmos de planificación OBS
Algoritmo
LAUC
LAUC-VF
Min-SV/EV
Best Fit
Complejidad temporal
O(W)
O(WlogM)
O(logM)
O(log2 M)
Información de estado
Horizoni
Si, j , Ei, j
Si, j , Ei, j
Si, j , Ei, j
Uso del ancho de banda
Bajo
Alta
Alta
Alta
Tabla 2.1: Tabla comparación algoritmos de planificación
M: Máximo número de ráfagas (o reservas) en todos los canales.
Horizon: Horizonte del canal i.
Si, j y Ei, j : Tiempo inicial (S) y final (E) de la reserva j del canal i.
14
2.1. R EDES ÓPTICAS
OCS
OPS
OBS
Uso BW
Bajo
Alto
Moderado
Latencia
Alta
Baja
Baja
Tolerancia fallos
Baja
Alta
Media
Granularidad
Baja
Alta
Moderada
Dificultad impl.
Bajo
Alto
Moderado
Tabla 2.2: Tabla comparación tecnologı́as conmutación óptica
Viendo la tabla, el algoritmo Min-SV/EV es el mejor entre los de Void Filling. De hecho,
se puede reducir al mı́nimo el nuevo vacı́o generado, buscando primeramente un vacı́o
apropiado usando Min-EV, y después si no se encuentra un vacı́o apropiado, buscar el
horizonte usando Min-SV.
2.1.4.
Resumen de planificación de WDM
Tras analizar las diferentes tecnologı́as de conmutación óptica se puede hacer un
resumen de las mismas, expuesto en la tabla 2.2:
Además, la tecnologı́a OBS ofrece la siguiente serie de ventajas respecto a OCS y
OPS:
usa caminos ópticos entre nodos, igual que OCS, pero sólo se asigna una λ a cada
ráfaga, en vez de a todo el enlace.
por cada ráfaga se toma la decisión de encaminamiento, como en OPS, pero sin
almacenar los datos en memoria óptica.
la conversión O/E/O se realiza sólo a los paquetes de control, que se reciben antes
que los datos.
los paquetes que van hacia un mismo nodo se tratan como uno solo, lo que disminuye la congestión, la complejidad y el tiempo de procesamiento.
15
C AP ÍTULO 2. E STADO DEL ARTE
2.2.
Simuladores de Red
Desde la aparición de las redes de ordenadores se han intentado estudiar sus caracterı́sticas, sus prestaciones y su comportamiento ante tipos y estructuras diferentes de
tráfico. Los simuladores de red ofrecen dicha posibilidad de una manera sencilla y rápida
sin necesidad de tener que construir y recrear la red bajo estudio. En esta sección se
analizan los principales simuladores de red existentes.
2.2.1.
NS
Inicialmente conocido como LNBL Network Simulator [6], es una herramienta de simulación desarrollada por el Network Research Group 1 en el Lawrence Berkeley National
Laboratory 2 . NS es un motor de simulación de eventos de red, extensible y fácil de configurar y programar.
Para la configuración de la topologı́a a simular se utiliza el lenguaje Tcl(Tool Comand
Language), y los pasos que sigue la simulación al ser ejecutada son:
1. Se define la topologı́a.
2. Las fuentes de tráfico se configuran.
3. Se recolectan las estadı́sticas.
4. Se invoca la simulación.
Su desarrollo, gracias a la universidad UC Berkeley 3 desembocó en la segunda versión [7], la cual, utiliza una nueva arquitectura, que utiliza Object Tcl, una extensión de Tcl,
para la descripción de la topologı́a a simular.
Casi toda la funcionalidad de la primera versión de NS se encuentra integrada en la
segunda versión, por lo que mantiene plena compatibilidad con versiones anteriores de
todas las funciones, excepto con el manejador de flujo, por lo que scripts desarrollados
para la primera versión funcionarán de manera automática para la segunda.
1 http://www-nrg.ee.lbl.gov/
2 http://www.lbl.gov/
3 http://www.berkeley.edu/
16
2.2. S IMULADORES DE R ED
Figura 2.7: NAM
Actualmente, el desarrollo se encuentra en la versión 2.34 desde el 17 de Junio de
2009, algún tiempo después de que la versión 3 de NS se empezase a desarrollar. Esto
da una idea de lo importante que ha sido este simulador a lo largo del tiempo.
Existe un visor de los eventos simulados, el NAM(Network Animator), que muestra de
manera gráfica dichos eventos, el cual se encuentra actualmente en la versión 1.15. En la
figura 2.7 se ve un ejemplo de una simulación de red.
Para el caso de la simulación de una red óptica de OBS, existe el módulo obs-0.9a,
desarrollado por la universidad de Maryland 4 . Además, en [8], podemos encontrar dicho
módulo, modificado por Isaı́as Martı́nez Yelmo de la UC3M, ya incorporado en NS-2, en
4 http://www.umd.edu/
17
C AP ÍTULO 2. E STADO DEL ARTE
su versión 2.28.
2.2.2.
NS-3
Se llega a la tercera versión del Network Simulator [9], esta vez bajo licencia GNU
GPLv2, y queda libre para su investigación, desarrollo y uso. Sigue siendo un simulador
de eventos de red, aunque ya no existe compatibilidad con versiones anteriores, debido a
que el lenguaje de configuración ya no es OTcl, sino Python.
Esta versión intenta solucionar algunos problemas que tenı́a la segunda versión como
la interoperabilidad y acoplamiento entre modelos; y la falta de gestión de memoria.
Debido a que su concepción está orientada a la educación, los ficheros de trazas son
configurables por el usuario, al contrario que NS-2. También trata de acercarse lo más
posible a la realidad, haciendo que los nodos sean como ordenadores a los que se les
puede añadir módulos/tarjetas de red.
Actualmente se encuentra en la versión 3.11, desde el 25 de Mayo de 2011, y ya
está en desarrollo la siguiente, debido a que la polı́tica de actualizaciones es lanzar una
nueva versión cada 4 meses.
Al igual que con la segunda versión, está disponible el visor NAM para ver los resultados de una simulación de manera gráfica.
En cuanto al estudio que interesa, es decir las redes ópticas de OBS, desafortunadamente no se ha encontrado ningún módulo en desarrollo para esta versión del simulador.
2.2.3.
OMNeT++
OMNeT++ [10], es un marco modular orientado a objetos para simular eventos discretos de red. Posee una arquitectura genérica, por lo que se puede usar, y se usa, para
problemas del tipo:
modelado de comunicaciones por cable e inalámbricas
modelado de protocolos
modelado de redes de colas
18
2.2. S IMULADORES DE R ED
Figura 2.8: OMNeT++ IDE
modelado de multiprocesadores y otras distribuciones de hardware
validación de arquitecturas de hardware
evaluación de los aspectos del rendimiento de sistemas de software complejos
en general, modelado y simulación de cualquier sistema en el que la aproximación
a eventos discretos sea aceptable, y sea conveniente asignar a las entidades la
comunicación mediante el intercambio de mensajes
OMNet++ en sı́ mismo no es un simulador de algo concreto, sino que proporciona la
infraestructura y herramientas para la escritura de simulaciones. Uno de los ingredientes fundamentales de esta infraestructura es una arquitectura de componentes para los
modelos de simulación. Los modelos se crean a partir de componentes reutilizables, llamados módulos y aquellos que estén bien escritos, se podrán reutilizar mejor, por lo que
podrán combinarse de varias formas.
Los módulos, escritos en C++, se pueden conectar entre sı́ a través de puertas, y se
combinan para formar módulos complejos. Se comunican mediante el paso de mensajes,
que pueden llevar estructuras de datos arbitrarios. Se pueden pasar mensajes a través de
19
C AP ÍTULO 2. E STADO DEL ARTE
Figura 2.9: Red OBS en OMNeT++
las rutas predefinidas, o directamente a su destino, como puede ser en las simulaciones
inalámbricas.
El usuario describe la estructura del modelo a simular en lenguaje NED, que permite
declarar módulos simples, y conectarlos y ensamblarlos en módulos complejos.
Existe una herramienta gráfica para ayudar a la configuración de las simulaciones,
OMNeT++ IDE. Es una herramienta basada en la plataforma Eclipse y la extiende con
nuevos editores y vistas. También añade funcionalidad para crear y configurar los modelos, realizar ejecuciones por lotes y analizar los resultados de la simulación; mientras,
Eclipse ofrece la edición de C++, integración y otras caracterı́sticas a través de plug-ins
de código abierto. En la figura 2.8 se puede ver una captura de dicho interfaz.
En cuanto al estudio de OBS, existe un módulo, desarrollado por el GRSST 5 , que
implementa dicha tecnologı́a, permite el estudio de los nodos core y los edge, y enlaza la
red OBS con otras redes soportadas por OMNeT++. Un ejemplo de una red OBS simulada
con OMNeT++ es la mostrada en la figura 2.9.
5 https://www.tlm.unavarra.es/investigacion/
20
2.2. S IMULADORES DE R ED
Figura 2.10: Dominios de OPNET
2.2.4.
OPNET
OPNET [11] es una herramienta de simulación de alto nivel basada en eventos que
opera a nivel de paquete. Originalmente se ideó para la simulación de redes fijas, aunque actualmente existen gran cantidad de posibilidades para las simulaciones de redes
inalámbricas. Se puede usar como una herramienta de investigación o como una herramienta de análisis y desarrollo de redes.
Consiste en una interfaz de alto nivel, generada con C y C++, con una inmensa li-
21
C AP ÍTULO 2. E STADO DEL ARTE
brerı́a de funciones especı́ficas de OPNET. Posee una estructura jerárquica, por lo que el
modelado se divide en tres dominios principales:
Dominio de red: Incluye todas las redes y subredes, topologı́as de red, coordenadas geográficas o movilidad.
Dominio de nodo: Los nodos de una red, tales como routers, estaciones de trabajo
o dispositivos móviles.
Dominio de procesado: El comportamiento dentro de los nodos de la red.
Para cada uno de esos dominios, posee un interfaz gráfico para poder editar el comportamiento de la red a simular. En la figura 2.10, se muestra un esquema de los tres
dominios y su relación con los demás.
El principal problema de este simulador es que se requiere comprar la licencia para su
uso, por lo que, existiendo otras posibilidades gratuitas, es poco recomendable.
2.2.5.
KivaNS
KivaNS [12] es una aplicación gratuita y de código abierto basada en Java para generar esquemas de redes y simular el encaminamiento de paquetes a través de dichas redes.
Al contrario que la mayorı́a de simuladores, que están pensados para evaluar parámetros
de carga y rendimiento, KivaNS está orientado a simular el comportamiento del protocolo
IP, y más especı́ficamente el tratamiento de los datagramas y su encaminamiento. Para
ello, se apoya en protocolos como ARP e ICMP, y emula el funcionamiento básico de
tecnologı́as de enlace como Ethernet.
Se compone de dos partes implementadas en Java. La primera es un API que ofrece
un motor de simulación de redes a otras aplicaciones, y la segunda es una interfaz gráfica
que hace uso del API de simulación. En la figura 2.11 se puede ver un esquema de la
arquitectura de KivaNS.
La figura 2.12 ilustra el esquema de bloques del API, compuesto por un gestor de
eventos discretos, objetos representativos de las redes, objetos representando a los equipos de la red, y una pila de comunicaciones. De esta forma, se posee un API modular y
extensible, al que se le pueden incorporar nuevos tipos de redes y equipos.
22
2.2. S IMULADORES DE R ED
Figura 2.11: Arquitectura de KivaNS
Figura 2.12: Bloques del API de KivaNS
La interfaz de usuario (figura 2.13) permite especificar las topologı́as de redes de datos
mediante un editor gráfico, configurar mediante diálogos el direccionamiento y encaminamiento de los equipos de la red, y acceder a las caracterı́sticas del API de simulación sin
necesidad de programar.
Dado que es un simulador orientado al estudio del protocolo TCP/IP, no existen módulos que implementen OBS. Pero al ser un simulador modular, se pueden implementar los
módulos que se deseen para su simulación.
23
C AP ÍTULO 2. E STADO DEL ARTE
Figura 2.13: Interfaz gráfico de KivaNS
2.2.6.
CNET
CNET [13] es un simulador de red que permite la experimentación con diferentes capas de enlace, capas de red y protocolos de enrutamiento y transporte en redes formadas
por la combinación de WAN’s LAN’s o WLAN’s. Acorde con el modelo de referencia OSI,
CNET provee las capas Fı́sica y de Aplicación.
Con Tcl/Tk, CNET provee una representación gráfica de la red que se va a ejecutar, a
través de un terminal ASCII, y permite modificar algunos atributos de la misma mientras
se está simulando. Se pueden seleccionar los nodos que intervienen para acceder a una
pequeña ventana con las estadı́sticas de dicho nodo. Los atributos de los nodos son modificados mediante sencillos checkboxes, y si es un atributo común a todos los nodos, se
modificará en todos en ellos.
Se muestra un ejemplo de dicho interfaz gráfico con los atributos y estadı́sticas de los
nodos en la figura 2.14.
24
2.2. S IMULADORES DE R ED
Figura 2.14: Interfaz gráfico de CNET
2.2.7.
Resumen del estudio de los simuladores
En la tabla 2.3 se detalla una comparación de diferentes propiedades entre los simuladores analizados.
En cuanto al simulador de red para complementar la aplicación, se ha elegido NS-2. Es
un simulador muy extendido por todo el mundo, con gran cantidad de módulos disponibles,
y además, el que necesitamos para simular redes OBS está ya integrado con la versión
2.28 de ns en [8].
En las prácticas realizadas durante la titulación en los laboratorios de Ingenierı́a Telemática 6 de la Universidad Carlos III de Madrid(UC3M) 7 se utiliza precisamente esa
versión del simulador, por lo que su uso es familiar. Además, como esta aplicación pretende ser una ayuda a la hora de simular, analizar y comparar las prestaciones de diferentes
topologı́as, es posible, que en años venideros, sirva de ayuda al alumnado para el estudio
6 http://www.it.uc3m.es/
7 http://www.uc3m.es
25
C AP ÍTULO 2. E STADO DEL ARTE
Interfaz gráfico
Módulo OBS
X
X
X
X
X
X
NS-2
NS-3
OMNeT++
OPNET
KivaNS
CNET
Bajo nivel
X
X
X
Eventos
X
X
X
X
Tabla 2.3: Tabla comparación simuladores de red
de redes que utilicen tecnologı́a OBS.
2.3.
Teorı́a de colas
La teorı́a de colas [14] es el estudio matemático de las lı́neas de espera, o colas, dentro
de una red de comunicaciones. Su objetivo principal es el análisis de varios procesos,
tales como la llegada de los datos al final de la cola o el tiempo de espera en la cola.
Generalmente es considerada una rama de investigación operativa porque sus resultados
a menudo son aplicables en una amplia variedad de situaciones como negocios, comercio,
industria, ingenierı́as, transporte y telecomunicaciones.
Los elementos más importantes de un sistema de colas son: las llegadas de los usuarios al sistema, la cola de espera, el servicio que ofertan los servidores y la salida de los
usuarios del sistema.
En general, un sistema de colas consiste en uno o varios servidores que prestan un
servicio a uno o varios usuarios que acceden al sistema. El proceso de llegadas lo regula
una fuente generadora de usuarios y, en general, estas llegadas serán de forma aleatoria.
Si, cuando un usuario llega al sistema, el servidor está libre, se le da servicio. Si el
tiempo de servicio es mayor que el intervalo entre llegadas, el siguiente usuario, cuando
accede al sistema, encuentra que el servidor está ocupado, por lo que debe quedar en
espera, formando la cola.
Existen varios tipos de configuración para una red de colas, y sus caracterı́sticas vie-
26
2.3. T EOR ÍA DE COLAS
Figura 2.15: Esquema de sistema M/M/1
nen dadas por el tipo de distribución que siguen los procesos de llegadas, la distribución
de la tasa de servicio, el número de servidores, el tamaño de la cola, la polı́tica de gestión de cola y otras. Para identificar cada una de ellas se sigue una notación especı́fica,
conocida como notación Kendall.
A continuación se pasa a explicar la configuración básica, con un servidor y procesos
de llegadas de Poisson; y las configuraciones que se han utilizado para el desarrollo de
este proyecto.
2.3.1.
M/M/1
En el caso de un sistema de este tipo se establece que: la tasa de llegadas (λ) es un
procesos de Poisson, que la tasa de servicio (µ) sigue una distribución exponencial y que
en el sistema se dispone de un servidor. Además, otras caracterı́sticas de este sistema
es que la cola es infinita, que su polı́tica es FIFO (First In First Out) y que el número de
usuarios que entran al sistema es inifinito.
A partir de las tasas mencionadas anteriormente se puede definir el factor de utilización ρ como:
ρ=
λ
µ
En el caso de que ρ sea menor que 1 se llega al estado estacionario del sistema,
esto es, que la cola, en caso de ser infinita, no está saturada; y en caso de no serlo, no
se pierden usuarios que llegan al sistema cuando la cola está llena, y por lo tanto, se da
servicio a todos ellos.
Se muestra un esquema de este tipo de sistemas en la figura 2.15.
27
C AP ÍTULO 2. E STADO DEL ARTE
Fórmula de Little
Explicado de forma muy breve, el teorema de Little dice que si un sistema es estacionario, el número de usuarios en el sistema L es igual a la tasa media de llegadas λ por el
tiempo medio de estancia en cola W :
L = λW
El número medio de usuarios en el sistema L viene dado por:
L=
ρ
1−ρ
con una varianza:
σ2 =
ρ
(1−ρ)2
El tiempo medio de espera en el sistema T es:
T=
1
µ−λ
Aplicando las fórmulas anteriores se obtiene que el tiempo total de espera en cola W
es:
W=
L
λ
=
ρ
λ(1−ρ)
=
ρ
µ−λ
Distribución exponencial
Se ha hablado de que la tasa de servicio siguen una distribución exponencial. Para
ilustrar la distribución exponencial se puede ver la figura 2.16, que muestra su función de
densidad.
Y posee una función de distribución como la mostrada en la figura 2.17
28
2.3. T EOR ÍA DE COLAS
Figura 2.16: Función de densidad exponencial
Figura 2.17: Función de distribución exponencial
29
C AP ÍTULO 2. E STADO DEL ARTE
Figura 2.18: Esquema de sistema M/M/c
2.3.2.
M/M/c
En este otro modelo, la tasaa de llegadas se rige por un proceso de Poisson, la tasa de
servicio sigue una distribución exponencial, pero, en este caso, en el sistema se dispone
de c servidores. Al igual que el M/M/1, la cola de espera es infinita y tiene polı́tica FIFO.
Para este modelo, cabe destacar que todos los servidores comparten la misma cola, por
lo que si hay un usuario en cola y un servidor queda libre, pasará a ese servidor. El factor
de utilización es diferente, y se define como:
ρ=
λ
cµ
Y de nuevo, para que el sistema alcance la estacionariedad ρ debe ser menor que 1.
Se puede ver un esquema de este tipo de sistema en la figura 2.18.
Para el caso concreto de este proyecto, se ha utilizado para el cálculo de las tasas de
llegadas para el tráfico exponencial.
2.3.3.
G/G/c
En este último modelo que se verá, las tasas de llegadas y de servicio siguen una
distribución generalista, que puede ser cualquier función de distribución que no sea ni de
30
2.3. T EOR ÍA DE COLAS
Figura 2.19: Esquema de sistema G/G/c
Poisson ni determinista. Como las funciones son desconocidas, el factor de utilización no
se calcula de manera trivial, si no que dependerá de la función en cuestión.
El esquema general para este tipo de sistemas se puede ver en la figura 2.19.
Como en el sistema se puede introducir cualquier distribución generalista, en el caso
de este proyecto se ha utilizado el tráfico Autosimilar, explicado en el siguiente apartado.
2.3.4.
Teorema de Jackson
Para terminar con esta sección, se explicará brevemente el Teorema de Jackson [15].
Partiendo de las premisas de que un sistema está compuesto por m servidores, con una
tasa de servicio exponencial; los usuarios llegan al sistema con una tasa que sigue una
distribución de Poisson; y una vez servido, un usuario se dirige hacia otro de los servidores
con una probabilidad fija, o abandona el sistema. El Teorema de Jackson afirma que, en
una red como la descrita, cada servidor es un sistema de colas independiente, con una
entrada de Poisson.
Ası́ pues, cada servidor se puede estudiar de manera independiente como un M/M/1
ó un M/M/c de tal manera que, los resultados pueden combinarse mediante métodos estadı́ticos y los retardos medios pueden sumarse para obtener el retardo total del sistema.
Esto es especialmente útil para el estudio de redes de colas, cuyo escenario cumple con
las premisas para aplicar el Teorema de Jackson.
31
C AP ÍTULO 2. E STADO DEL ARTE
Figura 2.20: Esquema tráfico CBR
2.4.
Generadores de tráfico
Existen muchas maneras teóricas de representar el tráfico que cursa una red. Como
hablar de todas ellas abarcarı́a gran parte del capı́tulo tan sólo se van a explicar los tres
utilizados en este proyecto, que son: CBR, Exponencial y Autosimilar.
CBR (Constant Bit Rate)
El tráfico CBR se caracteriza por el envı́o constante de tráfico a una misma tasa.
Por lo que origen y destino deben tener una sincronización temporal. CBR se adapta
para cualquier tipo de datos para los que los sistemas finales requieren un tiempo de
respuesta predecible y una cantidad fija de ancho de banda continuamente disponible
para el tiempo de la conexión. Los servicios más comunes son los de videoconferencia,
telefonı́a o cualquier tipo de servicio bajo demanda, tales como audio y voz interactivos.
En la figura 2.20 se muestra un esquema tipo del tráfico CBR, donde el tamaño de los
paquetes es constante y el tiempo entre llegadas es constante, por lo que la tasa también
lo es.
32
2.4. G ENERADORES DE TR ÁFICO
Figura 2.21: Esquema tráfico Exponencial
Exponencial
En el caso del generador de tráfico exponencial para NS, se trata de un tráfico On/Off,
esto es, durante los periodos de “encendido”, los paquetes se generan con una tasa constante y durante los perı́odos de “apagado” no se genera tráfico. Los tiempos de “on” y “off”
se generan mediante una distribución exponencial, explicada en el apartado anterior.
En la figura 2.21 se puede ver un esquema de tráfico Exponencial, donde el tamaño
de los paquetes es constante y la media del tiempo entre llegadas es λ1 .
Tráfico Autosimilar
La autosimilaridad o autosimilitud, es la propiedad de un objeto en el que el todo es
exacta o aproximadamente igual a una parte de sı́ mismo. Un ejemplo de autosimilitud es
la curva de Koch, ilustrada en la figura 2.22.
En el caso de las redes y el intercambio de paquetes se suele dar en el tráfico de Internet. Si se observa el tráfico a lo largo de un periodo de tiempo, tendrá una determinada
forma; si atendemos al tráfico en un periodo de tiempo más pequeño, tendrá aproximadamente la misma forma. Un buen ejemplo es la gráfica 2.23.
A diferencia de otros tipos de tráfico, éste no viene implementado con NS. En cambio,
hay que descargarlo y compilarlo desde el módulo para OBS desarrollado por la Universi-
33
C AP ÍTULO 2. E STADO DEL ARTE
Figura 2.22: Curva de Koch
Figura 2.23: Tráfico observado en una red Ethernet [16]
dad de Maryland. Para poder entender los parámetros a configurar debemos saber cómo
se genera éste tipo de tráfico.
El tiempo de llegada de los paquetes es autosimilar con un exponente de Hurst
H [17] y una tasa media especı́fica.
Los tiempos entre paquetes siguen una distribución Gamma [18] (están correlados
con H).
El tamaño de los paquetes es un proceso autosimilar, con exponente Hurst (no
necesariamente el mismo que para el tiempo de llegadas). Además, el tamaño sigue
una distribución binomial negativa [19].
34
2.4. G ENERADORES DE TR ÁFICO
Figura 2.24: Esquema tráfico Autosimilar
En la figura 2.24 se muestra un esquema del tráfico Autosimilar, donde el tamaño
de los paquetes no es constante, si no que sigue una distribución binomial negativa y el
tiempo entre llegadas sigue una distribución Gamma, como se ha visto antes.
35
C AP ÍTULO 2. E STADO DEL ARTE
36
Capı́tulo 3
Herramientas
Este capı́tulo describe de manera breve las herramientas utilizadas durante el proyecto: el simulador NS-2, las API’s necesarias del lenguaje de programación JAVA y la librerı́a
de topologı́as de red SNDlib.
3.1.
Simulador NS-2
Como ya se dijo en el Capı́tulo 2.2.1, NS es un simulador de eventos discretos enfocado a la creación e investigación de redes. Proporciona un gran apoyo para la simulación
del protocolo TCP, enrutamiento y protocolos multicast a través de redes cableadas e
inalámbricas(locales y satélite).
3.1.1.
Caracterı́sticas
NS está basado en dos lenguajes: un simulador orientado a objetos, escrito en C++ y
un intérprete OTcl(una extensión orientada a objetos de Tcl), usado para ejecutar scripts
de comandos del usuario.
Posee una abundante librerı́a de objetos de red y protocolos y hay dos jerárquicas. La
jerarquı́a compilada de C++ y la interpretada de OTcl, las cuales tienen una correspondencia uno-uno entre ellas, es decir, por cada objeto de la jerarquı́a compilada de C++ existe
un objeto de la jerarquı́a interpretada de Tcl. Cuando en Tcl se configura algún objeto para
la simulación, se acude a la jerarquı́a de C++ para utilizar ese objeto compilado. Esto se
debe a que la simulación de redes abarca tareas de diferente ámbito, y debe cumplir dos
37
C AP ÍTULO 3. H ERRAMIENTAS
requisitos principales:
Se requiere la simulación detallada de los protocolos de comunicación, con un lenguaje de programación capaz de manejar datos de manera eficiente y con buenas
prestaciones de velocidad.
Se debe permitir una fácil reconfiguración de los escenarios a simular.
La jerarquı́a compilada de C++ permite conseguir eficiencia en la simulación y rapidez
en los tiempos de ejecución. Esto es especialmente útil para el funcionamiento de los
protocolos, ya que reduce el tiempo de procesamiento de los paquetes y eventos, lo que
satisface el primer requisito.
En el script OTcl del usuario, se define una topologı́a de red, los protocolos y aplicaciones que se quiere simular (siempre que se hayan definido en la jerarquı́a compilada)
y el formato de salida que se desea obtener del simulador, lo que consigue satisfacer el
segundo requisito para simulación de redes.
NS provee un mecanismo de enlace entre los dos lenguajes (usando tclCL), mediante
el cual OTcl hace uso de los objetos compilados por C++ creando una asociación del
objeto OTcl por cada objeto C++.
Al ser un simulador de eventos, el avance del tiempo depende de la programación
de dichos eventos que son gestionados por un planificador. Un evento es un objeto de la
jerarquı́a de C++ con un ID único, un tiempo programado y un puntero a otro objeto que
lo maneja. El programador guarda una estructura de datos ordenada con los eventos a
ejecutar y los va liberando uno a uno, invocando al manejador del evento correspondiente.
3.1.2.
Funcionamiento
A continuación se explicará el funcionamiento interno de NS. Para ello se comentará la
creación de los diferentes componentes que posee una red, la formación de los paquetes
para el intercambio de información y la forma que NS gestiona los eventos ocurridos en la
red.
38
3.1. S IMULADOR NS-2
Componentes de red
La ruta que seguirán los datos se construye mediante la interconexión de componentes de red, indicando en cada objeto cuál es el objeto siguiente. De esta manera cuando
un usuario quiere crear un nuevo componente, puede escribir el código en OTcl ó C++,
o bien interconectar pequeños componentes, por ejemplo, se puede conseguir crear un
enlace mediante la interconexión de una serie de paquetes y un retardo. Este mecanismo
otorga un gran potencial a NS, ya que se pueden construir objetos complejos a partir de
objetos simples.
Los objetos importantes dentro de la ruta de datos son:
Conectores: elementos con una sola salida, se colocan en serie para formar objetos
más complejos. Algunos ejemplos son las colas o los retardos.
Clasificadores: poseen varias salidas, por lo que los datos de entrada pueden optar
por cualquiera de ellas, o por varias, en base a un criterio concreto. Unos ejemplos
son los clasificadores de direcciones, de puertos. . .
Agentes: representan puntos finales en la red, donde los paquetes se crean o se
destruyen. Son utilizados para implementar protocolos, como TCP ó UDP.
Aplicaciones: son los objetos que generan la información, y van montados sobre los
agentes.
La creación de un nodo se realiza mediante la interconexión de clasificadores, luego
se le añaden agentes y sobre ellos, las aplicaciones. La topologı́a se forma creando varios
nodos e interconectándolos entre sı́ a través de enlaces.
Paquetes de datos
Para el intercambio de información en NS, se utilizan los llamados paquetes, que están
compuestos por una pila de cabeceras y una zona de datos. Cuando se crea un protocolo nuevo, se registra su cabecera, y cuando se crea un objeto simulador se inicializa el
formato de cabecera de todos los tipos registrados, indicando, para cada uno de ellos, en
qué posición del paquete se encuentra el acceso a sus datos. Cada vez que se crea un
paquete, se crea a la vez una cabacera con todos los tipos registrados, y cada objeto de
39
C AP ÍTULO 3. H ERRAMIENTAS
la red puede acceder a la cabecera deseada utilizando la posición de acceso correspondiente.
Normalmente, un paquete sólo se compone de las cabeceras, sin datos, ya que el
transporte de datos reales no es de mucho interés en simulaciones que no sean de tiempo
real. Aún ası́, algunas aplicaciones y agentes soportan el intercambio de información real.
Programador de eventos
El intercambio de información se consigue pasando mensajes de datos de unos objetos a otros a través de los caminos establecidos. Esto no consume tiempo simulado, a
menos que los componentes retarden los paquetes. En esos casos los instantes de envı́o
y recepción los controla un programador de eventos central.
Como ya se apuntó, los eventos tienen un tiempo programado y un puntero a su manejador. El programador mantiene un tiempo de simulación y una cola con los eventos
simulados y según avanza ese tiempo, va ejecutando los eventos mediante una llamada
a sus manejadores.
3.2.
Java
Java es un lenguaje de programación orientado a objetos, desarrollado por Sun Microsystems. El lenguaje en sı́ es muy parecido a C y C++, pero el modelo de objetos es
más simple y no posee herramientas de bajo nivel, que suelen inducir a muchos errores,
como es la manipulación de punteros y memoria.
Se van a describir las librerı́as java utilizadas en la aplicación:
3.2.1.
JDOM
Provee una potente API para acceder, manipular y extraer datos de un fichero XML a
partir de código Java. Interactúa bien con los estándares existentes como SAX y DOM,
pero no es una capa de abstracción o mejora de dichos API’s. Por el contrario, proporciona
un robusto y ligero medio de lectura y escritura de datos XML.
40
3.2. JAVA
3.2.2.
JFreeChart
JFreeChart es una librerı́a libre que permite que sea fácil para los desarrolladores
mostrar gráficas en sus aplicaciones. El proyecto fue creado en el año 2000 por David
Gilbert. Actualmente lo utilizan unos 50.000 desarroladores en el mundo y sigue siendo
gestionado por Gilbert. Tiene un amplio conjunto de funciones, incluyendo:
Una consistente y bien documentada API, implementando un gran número de tipos
de gráficas
Un diseño flexible y fácil de extender
Ofrece soporte para diferentes tipos de formato de salida, inluyendo componentes
Swing, archivos de imagen (PNG y JPEG) y gráficos vectoriales (PDF, EPS y SVG)
Es software libre y se distribuye bajo los términos de GNU LGPL 1 , que permite su
uso en aplicaciones propietarias.
Hay que añadir que la librerı́a JFreeChart utiliza otra más a su vez, aunque el usuario
no sea consciente de ello. Se trata de la librerı́a JCommon, una librerı́a de clases de
utilidad para entornos gráficos. Entre sus usos está el centrado automático de ventanas
en pantalla, por ejemplo.
Algunos ejemplos de gráficas que se pueden realizar son las figuras 3.1 y 3.2.
3.2.3.
Commons-Math
Java provee una extensión matemática implementada sólo para los algoritmos matemáticos más básicos. Con esta librerı́a se consigue la implementación de muchos otros
de más complejidad, tales como:
Representación de números básicos complejos mediante operaciones algebraicas
Método de Newton para aproximar raı́ces
Coeficientes binomiales
1 http://www.gnu.org/licenses/lgpl.html
41
C AP ÍTULO 3. H ERRAMIENTAS
Figura 3.1: Gráfica de barras y series con JFreeChart
Figura 3.2: Histograma con JFreeChart
Crecimiento y decrecimiento exponencial
Interpolación polinómica
Representación de matrices básicas con operaciones algebraicas
Además, implementa algoritmos básicos de estadı́stica:
Estadı́sticas de una variable simple
42
3.3. SND LIB
Distribuciones de frecuencia
Generación de números aleatorios siguiendo distribuciones Gauissiana, Exponencial y Poisson
Regresión y correlación de dos variables
3.2.4.
Entorno de desarrollo
Para el desarrollo de la aplicación se ha elegido NetBeans 2 como entorno de trabajo.
Es un entorno de desarrollo de código abierto y libre, en el que los desarrolladores pueden
programar en diferentes lenguajes, tales como C/C++, PHP, Groovy o Java.
Para el desarrollo del proyecto, su generador de interfaces gráficos de Java Swing
ha sido de gran ayuda a la hora de crear la aplicación, ya que basta con seleccionar el
componente que se quiere introducir en la interfaz y colocarlo en la posición deseada
para que automáticamente se cree. Además, con un sencillo menú desplegable, se puede
acceder a las propiedades de dicho elemento y modificarlas según las necesidades.
También genera el paquete jar para su posterior ejecución de una manera sencilla
para el usuario. Basta con acceder al menú Ejecutar y seleccionar la opción Generar
Main Project.
En la figura 3.3 se muestra una captura de pantalla del entorno de trabajo utilizado.
3.3.
SNDlib
Para poder simular redes se necesita tener un fichero describiendo la topologı́a de
dicha red. En [20] hay disponible una librerı́a de diferentes redes reales, con datos ficticios,
cuya descripción se encuentra en formato XML, lo que facilita la creación de los ficheros
de simulación en gran medida, ahorrando al usuario el trabajo de tener que generar él
mismo dicho fichero elemento a elemento.
Dicha librerı́a tiene varios propósitos:
2 http://netbeans.org/index.html
43
C AP ÍTULO 3. H ERRAMIENTAS
Figura 3.3: NetBeans
hacer diseños de pruebas de red reales para facilitar el trabajo de la comunidad de
investigación
servir como punto de referencia estándar para probar, evaluar y comparar los modelos de diseño de redes y algoritmos
ser una fuente de información y recursos relacionados con el diseño de la red fija, y
proporcionar una plataforma de contacto para los investigadores y los profesionales
que trabajan en este campo
44
Capı́tulo 4
Descripción de la aplicación
En este capı́tulo se realizará un análisis de las decisiones tomadas para la creación
de la aplicación, ası́ como de las funciones que debe cumplir.
4.1.
Funcionalidad
En resumen, la funcionalidad principal que debe cumplir la aplicación es:
Se dispone de un fichero XML [20] en el que se define una topologı́a de red, tanto
sus nodos, como sus enlaces y demandas entre nodos.
A partir de ese fichero, leer los nodos, los enlaces y las demandas para poder
transformar dicha topologı́a a un fichero de simulación de NS.
Tomando como referencia un fichero esqueleto, generar el fichero de NS y simularlo.
Una vez terminada la simulación, leer los ficheros de resultados generados por el
simulador y construir gráficas representativas de dichos resultados para su estudio.
Además se pueden añadir funciones que no son primordiales, pero complementan la
aplicación y la hacen más útil de cara al usuario:
Posibilitar la modificación de cualquier aspecto del escenario, ya sean los enlaces o
las demandas de tráfico.
Cambiar el tipo de tráfico que se va a intercambiar entre nodos.
45
C AP ÍTULO 4. D ESCRIPCI ÓN DE LA APLICACI ÓN
Ofrecer la posibilidad al usuario de cambiar los parámetros de la simulación.
Ofrecer una vista en la aplicación del esquema de la red.
Creación y exportación de gráficas para el posterior estudio de la simulación realizada.
Generación y simulación de diferentes topologı́as con las mismas prestaciones que
el escenario inicial.
4.2.
Simulador NS-2
En este apartado se explicará la configuración y ejecución del simulador NS-2 con el
módulo para OBS y algunos ejemplos de cómo configurar los parámetros de los tipos de
tráfico utilizados.
4.2.1.
Integración
Como se dijo en el Capı́tulo 2, se utilizará como simulador NS-2 en su versión 2.28, con
el módulo para OBS integrado. Ambos componentes se encuentran en [8] para descargar
y descomprimir en el entorno de trabajo.
Una vez descomprimidos los ficheros, se debe compilar el entorno para poder ejecutarlo en el sistema. Pero antes se deben realizar modificaciones en los ficheros del módulo
de OBS para que su integración sea correcta [21] [22], y se detallan en el Apéndice D.
Todo ello se realiza siguiendo una serie de pasos, descritos en el Manual de instalación
en el Apéndice C.
4.2.2.
Generadores de tráfico utilizados
En el Capı́tulo 2 se estudiaron de manera teórica los diferentes tipos de tráfico utilizados, ası́ que ahora tan solo se explicará la forma de configurarlos y algún ejemplo de
ello.
46
4.2. S IMULADOR NS-2
Módulo CBR
Los parámetros configurables en NS para este tipo de tráfico son:
rate : la tasa de tráfico enviada, medida en bits/s
interval : el tiempo entre paquetes, medido en segundos
packetSize : el tamaño constante de los paquetes, medido en bits
random : es un flag que indica si se debe introducir ruido aleatorio en las salidas,
por defecto está desactivado
maxpkts : el número máximo de paquetes enviados, por defecto 228
Las variables rate y interval son mútuamente exclusivas. En una simulación con
este tipo de tráfico se debe especificar una u otra, pero no ambas. En la aplicación se
utilizan rate , packetSize y random . Un ejemplo para configurar tráfico CBR es:
Se desea mandar tráfico de un nodo A a un nodo B durante un segundo
En concreto, se desea que en total se transmitan 100Mb
Teniendo las premisas anteriores, es fácil averiguar los parámetros que se deben configurar. Como rate se mide en bits/s, tan sólo se debe establecer el parámetro rate
a 100mb, sin importar el tamaño de los paquetes, ya que el propio generador de tráfico
calcula cuántos paquetes se deben mandar para poder alcanzar la tasa establecida.
Otro ejemplo para este tráfico es:
Se desea enviar tráfico entre dos nodos, C y D, durante dos segundos
En concreto se desean enviar 10000 paquetes de 2000 bits cada uno
Ahora se debe tener en cuenta que no se dice la cantidad de tráfico que se desea
mandar, tan solo el número de paquetes y el tamaño de los mismos. Tras hacer un cálculo
sencillo, se ve que en total se deben enviar 20Mb en toda la simulación, por lo tanto, si el
rate se mide en Mb/s, se debe dividir el tráfico total entre los segundos de simulación,
quedando una configuración de rate =10mb y packetSize =2000.
47
C AP ÍTULO 4. D ESCRIPCI ÓN DE LA APLICACI ÓN
Módulo Exponential
Los parámetros que se pueden configurar en NS son:
packetSize : el tamaño constante de los paquetes generados, medido en bits
busrt time : el tiempo medio en el que el generador está “encendido”, medido en
segundos
idle time : el tiempo medio en el que el generador está “apagado”, medido en
segundos
rate : la tasa de tráfico enviada durante los tiempos de “encendido”, medido en
bits/s
La consecuencia más inmediata deducida, es que al ser un tráfico “on/off”, tal y como
se explicó en el Capı́tulo 2, la tasa media de tráfico dependerá de la duración de las
ráfagas, quedando una relación de la siguiente manera:
rate∗burst time
tasa media = burst
time+idle time
Para poder obtener una relación entre tasa media y rate sin conocer los valores
de burst time y idle time, se ha diseñado un experimento. Se fija el valor rate a
100Mb/s, y con las estadı́sticas que ofrece la simulación al terminar, se calcula el número
de bits enviados en un segundo, obteniendo que la tasa media es de 70,92Mb/s. Por lo
tanto, se puede obtener la relación fácilmente con un sencillo cálculo:
tasa media =
rate
1,41594925
Hay que apuntar que esta relación sólo es válida para los valores de burst time y
idle time configurados por defecto para este tipo de tráfico, en cuanto el usuario modifique alguno de estos valores la relación ya no será correcta.
Como curiosidad, se puede configurar el tráfico Exponential On/Off como un proceso
de Poisson. Se puede conseguir estableciendo la variable burst time a 0s y la variable
rate a un valor muy alto. Se garantiza que si el tiempo de ráfaga es 0s, al menos se
enviará un paquete.
48
4.2. S IMULADOR NS-2
En el caso del proyecto, los parámetros configurados han sido rate y packetSize .
Utilizando los mismos ejemplos que para el caso del tráfico CBR, en esta ocasión los
parámetros a configurar son:
Para el caso entre los nodos A y B, se debe configurar tan solo el rate ya que
directamente se ofrece el dato. Pero en esta ocasión debemos tener en cuenta
la relación entre la tasa media y el rate , por lo tanto, se debe configurar de la
siguiente manera rate =141mb.
En el caso entre los nodos C y D, sucede exactamente igual que para CBR, se
indica la cantidad de paquetes a enviar y el tamaño de los mismos, por lo que se
debe calcular la tasa. En este caso, y teniendo en cuenta la relación mencionada
antes, se deberá configurar el tráfico como rate =14.1mb y packetSize =2000.
Módulo SelfSimilar
Tras la explicación del tráfico en el Capı́tulo 2, se verán los parámetros que se pueden
configurar:
rate: la tasa media de llegada de paquetes, medida en paquetes/s
Ht: exponente Hurst para el proceso de llegadas
std dev inter batch time: desviación estándar del tiempo entre paquetes, dependiendo de la tasa establecida deberá tener un determinado orden de magnitud
batchsize: el tamaño medio de los paquetes, medido en bytes
Hb: exponente Hurst para el tamaño de los paquetes
sb: parámetro de varianza de la distribución binomial negativa (número de distribuciones geométricas convolucionadas)
En el proyecto se han configurado todos los parámetros, pero sólo son modificables
rate, std dev inter batch time y batchsize, los demás están configurados en el
fichero esqueleto, pero sin ser modificables por la aplicación. Se ha tomado esta decisión
arbitrariamente, apoyándonos en la premisa de que el resto de parámetros podrı́an ser de
49
C AP ÍTULO 4. D ESCRIPCI ÓN DE LA APLICACI ÓN
una complejidad mayor para un usuario inexperto. En cualquier caso, se pueden modificar
mediante la edición del citado fichero esqueleto.
Siguiendo los ejemplos de configuración anteriores, para el tráfico SelfSimilar se hará de
la siguiente forma:
Para el tráfico de 100Mbps entre los nodos A y B, se debe tener en cuenta que,
en este caso, la tasa no se mide en bits/s, si no en paquetes/s. Por lo tanto se
debe hacer un cálculo previo. Necesitamos conocer el tamaño de los paquetes,
que lo estableceremos a 2000bits. Haciendo un cálculo sencillo, se obtiene que se
deben mandar 50000 paquetes/s. También se deben configurar el resto de parámetros, como el std dev inter batch time y los parámetros de las distribuciones.
Hay que tener en cuenta que el tamaño de los paquetes se mide en bytes. Los
parámetros que se deben configurar para realizar la simulación son: rate=50000,
batchsize=250, std dev inter batch time=1e-5, Ht=0,5, Hb=-0,5, sb=0.
Para el tráfico entre C y D no se necesitan cálculos previos, ya que nos indican
la cantidad de paquetes que se desean enviar en dos segundos, por lo tanto en
un segundo, se deberán enviar la mitad para conseguir el tráfico deseado. Como std dev inter batch time depende de la magnitud de rate, también se
modifica, pero el resto de parámetros sigue igual: rate=5000, batchsize=250,
std dev inter batch time=1e-4, Ht=0,5, Hb=-0,5,sb=0.
4.3.
Parser
Se ha diseñado e implementado un parser de ficheros XML para la lectura de ficheros
que contienen la topologı́a de la red a simular, ası́ como para leer los ficheros de trazas
generados por el simulador. Además, se implementa un generador de ficheros con la
topologı́a leı́da en formato NS listo para simular.
4.3.1. Parser de XML
Para poder traducir la topologı́a XML a ficheros NS, primero se necesita leer esa topologı́a, por lo que es necesario implementar un parser que realice ese trabajo. En el caso
50
4.3. PARSER
de Java, está disponible la librerı́a JDOM, que facilita la lectura de ficheros XML, después,
sólo se debe decidir lo que se hace con los datos leı́dos.
Para guardar los datos de una forma sencilla e intuitiva, la aplicación dispone de clases
Java con atributos correspondientes a los datos leı́dos del fichero. Ası́ por cada nodo que
haya en el fichero, se tendrá un objeto Node con los atributos leı́dos, en este caso, la Id
y las coordenadas. Hay que señalar, que, como se explicó en el Capı́tulo 2.1, la red se
compone de nodos edge y nodos core, en este caso, se ha decidido que por cada nodo
leı́do del fichero XML se generen un edge y un core asociados.
Al igual que con los nodos del fichero, para los enlaces se tendrán objetos Link con
los siguientes atributos: los nodos extremos, la capacidad del enlace, el coste inicial de
esa capacidad y una lista con posibles módulos de ampliación de capacidad y su coste
asociado; y para las demandas, objetos Demand, que tendrán como atributos la cantidad
de demanda y el origen y destino de la misma.
Cuando se termine de leer el fichero XML, la aplicación dispondrá de tres Vectores
con los nodos, los enlaces y las demandas almacenados. Un ejemplo de un fichero XML
con una topologı́a de 14 nodos, demandas entre cada uno de ellos y enlaces correpondientes a la red NFSNET, encontrado en [20], se encuentra disponible en el Apéndice F.1.
El proceso de lectura de los enlaces es algo particular, ya que se van a estudiar y
comparar cuatro topologı́as de las mismas prestaciones, las cuales se van a simular: la
original leı́da, un anillo, una malla y una estrella. Tanto los nodos como las demandas de
tráfico no se ven afectadas por la topologı́a a simular, pero los enlaces evidentemente sı́.
Al consistir en un estudio comparativo entre la topologı́a leı́da y otras topologı́as básicas
de las mismas caracterı́sticas que la primera, habrá ocasiones en el que la creación de
las otras topologı́as no se realice de manera directa o trivial. Para ello se ha tomado como
decisión de diseño adaptar los enlaces originales a las nuevas topologı́as para poder
conservar las prestaciones de la red en la medida de lo posible.
A continuación se explica la toma de decisiones que se han llevado a cabo para poder
crear las topologı́as básicas a partir de la topologı́a original leı́da. Como ayuda visual, se
dispone de un ejemplo de red leı́da en la figura 4.1, a partir de la cual, se generarán las
topologı́as con las mismas prestaciones.
51
C AP ÍTULO 4. D ESCRIPCI ÓN DE LA APLICACI ÓN
Figura 4.1: Ejemplo de topologı́a parseada
Anillo
Un anillo es una distribución de red en la cual un nodo está conectado a otros dos
mediante sendos enlaces. La interconexión se realiza de tal manera que el primero se
conecta con el último y el segundo; el segundo con el primero y el tercero; y ası́ sucesivamente. Los enlaces pueden ser unidirecionales o bidireccionales, por lo que los anillos
pueden ser direccionales o adireccionales. En este caso, se trata de enlaces bidireccionales, por lo tanto la red es adireccional, es decir, se puede enviar tráfico en un sentido o
en el contrario.
Dadas las caraterı́sticas de la red original y del anillo, se ha tomado la decisión de que
la capacidad del nuevo enlace entre dos nodos se calcule de la siguiente manera:
Se suman las capacidades de cada nodo extremo del nuevo enlace.
Se elige la menor de las sumas realizadas en el paso anterior.
nuevo enlacei, j = min(∑ linksi ; ∑ links j )
En el ejemplo, la capacidad del nuevo enlace entre los nodos 1 y 2, se tendrá:
min(3Gbps; 3Gbps + 3Gbps + 5Gbps) = 3Gbps
52
4.3. PARSER
Figura 4.2: Ejemplo de topologı́a parseada en anillo
quedando la nueva topologı́a como se muestra en la figura 4.2.
De esta manera, se agrega toda la capacidad de salida del nodo, pero limitando el
enlace al valor más restrictivo.
Malla
Una malla es una distribución de red en la que todos los nodos están conectados entre
sı́ unos con otros, esto es, cada nodo está conectado directamente a los demás.
Para generar una malla con las mismas prestaciones que la topologı́a original, se ha
decidido que la capacidad de los nuevos enlaces se calcule de la siguiente forma:
Se suman las capacidades de cada nodo extremo del nuevo enlace.
Se divide dicha suma entre el número de enlaces que tenı́a ese nodo en la topologı́a
original para obtener el valor medio de la capacidad.
Se escoge el menor de los valores medios calculados para cada par de nodos.
links
linksi ∑
nuevo enlacei, j = min( ∑#links
; #links jj )
i
Ası́, la capacidad del nuevo enlace entre los nodos 1 y 2, será:
53
C AP ÍTULO 4. D ESCRIPCI ÓN DE LA APLICACI ÓN
Figura 4.3: Ejemplo de topologı́a parseada en malla
3Gps 3Gbps+3Gbps+5Gbps
;
) = 3Gbps
min( 1enlace
3enlaces
y la malla quedará como la figura 4.3.
Lo que se pretende, es seguir manteniendo la capacidad de cada nodo, pero como
ahora tienen muchos más enlaces que originalmente, se divide toda la capacidad total
inicial entre los enlaces actuales, de esta manera, en media, sigue siendo la misma.
Estrella
Una distribución en estrella se caracteriza por que todos los nodos están conectados
a uno solo, que hace de concentrador, por el cual debe pasar todo el tráfico que se inyecte
en la red antes de encaminarse a su destino.
Para conseguir generar una topologı́a en estrella de prestaciones similares a la topologı́a leı́da, se ha tomado como decisión que cada nodo se conecte al central con una
capacidad calculada ası́:
Se suman todas las capacidades del nodo en cuestión. El resultado será la nueva
capacidad de enlace
54
4.3. PARSER
Figura 4.4: Ejemplo de topologı́a parseada en estrella
nuevo enlacei,central = ∑ linksi
Es importante señalar que se tomó la decisión de insertar un nuevo nodo para que
haga las funciones de concentrador. Esto se debe a que si se hubiese elegido uno al
azar de los disponibles, el riesgo de seleccionar uno poco apto para realizar dicha tarea
es muy alto. De esta manera, el nodo central posee una capacidad de enlace infinita,
tan solo se ve limitado por los demás nodos, de forma que seguimos manteniendo las
mismas prestaciones en la red. Por lo tanto, en la nueva topologı́a, entre el nodo 2 y el
central habrá una capacidad de:
3Gbps + 3Gbps + 5Gbps = 11Gbps
quedando la nueva configuración de red como se aprecia en la figura 4.4.
Para ayudar a la comprensión de los pasos que sigue la aplicación para realizar el
parseo de un fichero XML, en la figura 4.5 se puede ver un diagrama de flujo con los
mismos.
Todas estas acciones las realiza la clase Parser.java, como se explica en el Apéndice E.
55
C AP ÍTULO 4. D ESCRIPCI ÓN DE LA APLICACI ÓN
Figura 4.5: Diagrama parseo de XML
56
4.3. PARSER
4.3.2.
Generador de ficheros de ns
Como ya se dijo, para poder simular topologı́as en NS se necesita escribir esa topologı́a, con todos los nodos, los enlaces y el tráfico, en un fichero Tcl. Se ha decidido que
en la aplicación se puedan configurar ciertos parámetros de la simulación, tales como el
retardo de los enlaces, el número de canales de OBS y el tamaño de los paquetes, pero
hay muchos otros que no son configurables desde la misma. Aún ası́, esos parámetros no
se dejan sin configurar, están preconfigurados, pero sin ser modificables desde la aplicación gráfica, en el fichero que posee el esqueleto con las declaraciones de los parámetros
de las simulaciones a realizar.
El fichero esqueleto no posee la declaración de los nodos, los enlaces, ni del tráfico
de nuestra simulación, tan sólo es un fichero base, del que se cogerán los parámetros no
modificables por el entorno gráfico y se rellenará con la topologı́a leı́da del fichero XML,
creando el fichero final de la topologı́a, que será el que se vaya a simular.
Para poder realizar esta tarea, se han tomado varias decisiones de diseño que se
enumeran a continuación:
Se han insertado marcas en el fichero esqueleto, a partir de las cuales se introduce la configuración modificable por la aplicación, como pueden ser los nodos, los
enlaces, las demandas, los canales de OBS o el tamaño de los paquetes.
Las marcas deben ser lo suficientemente intuitivas para que un desarrollador, que
desee modificar la funcionalidad de la aplicación, sea capaz de hacerlo sin apenas
esfuerzo, ya sea eliminando marcas para que esos parámetros no sean configurables o añadiendo marcas para poder modificar parámetros que actualmente no lo
son.
El fichero debe ser lo más genérico posible, ya que se van a simular diferentes
topologı́as para su posterior comparación, por lo tanto no se puede utilizar un fichero
especı́fico para cada una de ellas, debe ser una estructura común.
La ejecución de la simulación puede ser desde cualquier lugar, por lo tanto, se
deben establecer rutas completas tanto a los ficheros con el módulo de OBS como
a la carpeta donde el usuario quiere almacenar los ficheros de trazas.
57
C AP ÍTULO 4. D ESCRIPCI ÓN DE LA APLICACI ÓN
Por poner algunos ejemplos de marcas, a partir de la marca ##NODOS## la aplicación
introduce la declaración de los nodos y a partir de la marca ##ENLACES## la aplicación
introduce la declaración de los enlaces, tanto los edge-core como core-core. En el
Manual de Usuario, en el Apéndice B, se enumeran todas las marcas que se han insertado
en el fichero esqueleto para que los parámetros que indican, sean modificables mediante
la aplicación gráfica. Y en el Apéndice F podemos ver un ejemplo del fichero esqueleto
para la simulación y el fichero final que se va a simular, una vez que la aplicación ha
insertado todos los parámetros.
Para ayudar a comprender cómo la aplicación genera el fichero a partir del esqueleto,
y simula todas las topologı́as generadas, se pueden ver los diagramas de flujo en las
figuras 4.6 y 4.7.
La clase encargada de realizar estas funciones es NS.java, cuya funcionalidad se
detalla en el Apéndice E.
4.3.3.
Analizador de resultados
Para generar las gráficas con los resultados, se necesitan analizar dichos resultados.
Para ello, se dispone de unos ficheros de trazas para cada una de las simulaciones llevadas a cabo. Dichos ficheros son generados por el simulador NS, y la aplicación los lee,
analiza las trazas y genera las gráficas con los resultados obtenidos.
Un ejemplo de este fichero se encuentra en el Apéndice F.2. Cada una de las lı́neas
corresponde a la traza de un paquete, por lo que debemos leer lı́nea a lı́nea este fichero
y almacenar los datos necesarios. Las lı́neas tienen el formato siguiente:
+ 0.017818 2 17 IPKT 64 ------- 1 2.0.0.0 13.0.0.-1 0 73 0
A continuación se procede a desglosar la lı́nea de ejemplo, explicando la utilidad de
cada uno de los campos disponibles.
+ indica el evento que ha ocurrido. Puede que se encole un paquete para enviarlo (+),
que se envı́e (-), que se reciba (r) o que se descarte (d).
0.017818 indica el instante de tiempo, en segundos, en el que ocurre el evento.
58
4.3. PARSER
Figura 4.6: Diagrama para generar fichero NS
2 indica el nodo que envı́a el paquete a nivel fı́sico.
17 es el nodo destino a nivel fı́sico.
IPKT indica el tipo de paquete.
64 indica el tamaño, en bits, del paquete.
1 es el flow id
59
C AP ÍTULO 4. D ESCRIPCI ÓN DE LA APLICACI ÓN
Figura 4.7: Diagrama de simulación
------- indican los flags del paquete, en caso de tener alguno activo.
2.0.0.0 el primer número es el nodo que envı́a el paquete a nivel de red, el último es el
puerto del nodo origen.
13.0.0.-1 el primer número es el nodo destino del paquete a nivel de red, el último es
el puerto del nodo destino.
0 es el número de secuencia
73 es el id del paquete, único en toda la simulación.
El inconveniente de analizar este tipo de ficheros es que puede haber ocasiones en el
60
4.4. GUI
que la cantidad de trazas sea muy grande, por ejemplo, algunas pruebas han generado
ocho millones de trazas, y almacenarlas todas en un Vector se antoja una tarea casi
imposible debido al “escaso” espacio de memoria del que dispone la JVM, aunque siempre
se puede ampliar a la hora de ejecutar cualquier aplicación. En su lugar, lo que se ha
hecho, es ir sacando datos a la vez que se va leyendo el fichero. Para poder sacar dichos
datos, la aplicación se apoya en objetos Trace, que disponen de atributos útiles para
analizar las trazas, y que se corresponde con cada uno de los campos de las lı́neas del
fichero de trazas explicadas más arriba. Una vez se tienen los datos almacenados, se
pasa a la creación de gráficas.
En la figura 4.8 se puede ver el diagrama de flujo para el análsis y la posterior representación de los resultados en forma de gráficas, para entender mejor su funcionamiento.
Como se detalla en el Apéndice E, la clase encargada de leer los ficheros de trazas y
generar las gráficas es PanelGraficas.java.
4.4.
GUI
Se trata de un interfaz gráfico que proporciona ayuda a la hora de simular redes con
diferentes topologı́as. A través de dicho interfaz se configuran los parámetros de la simulación, tales como el tipo de tráfico entre los nodos, la cantidad de tráfico, la capacidad de
los enlaces, el factor de ocupación ρ de los enlaces y el tiempo de simulación, además
del número de simulaciones que se desean realizar para obtener datos estadı́sticos aceptables.
Además, la aplicación analiza los resultados obtenidos en cada una de esas simulaciones y genera gráficas para mostrar dichos resultados, de esta manera, se puede analizar
las redes más sencillamente.
Para saber cómo funciona la aplicación, en el Apéndice B se dispone del Manual de
usuario de la aplicación, donde se explican las pantallas de las que disponemos para
configurar las simulaciones a realizar.
61
C AP ÍTULO 4. D ESCRIPCI ÓN DE LA APLICACI ÓN
Figura 4.8: Diagrama de análisis de trazas
62
4.4. GUI
4.4.1.
Interfaz de usuario
Como ya se apuntó en el Capı́tulo 3.2.4, el interfaz de usuario se ha generado utilizando NetBeans, ya que proporciona las herramientas necesarias para generar GUI’s de
una manera rápida y sencilla.
Se tomó como decisión de diseño dividir la interfaz en varias pestañas para separar
las diferentes funcionalidades de la aplicación:
Configuración: en esta pantalla se utilizan varios JTextField para solicitar al usuario
los ficheros necesarios para la simulación, tales como el fichero a parsear, el fichero
esqueleto de NS, la carpeta de trabajo y la carpeta donde se encuentra instalado NS
con el módulo de OBS. Además se ofrece la posibilidad de ejecutar NAM, aunque
el usuario será el encargado de decidir qué simulación quiere ver en el animador.
Opciones de Simulación: en la segunda pestaña disponible, el usuario podrá seleccionar el tipo de tráfico que desea utilizar, ya sea CBR, Exponencial o Autosimilar,
ası́ como varias opciones de la simulación, tales como el retardo de los enlaces o
los canales disponibles para los nodos OBS. También se decisdió ofrecer la posibilidad de establecer los enlaces o las demandas con el mismo valor, o cambiar
la probabilidad de bloqueo en los enlaces para que la tasa de los tráficos fuese
diferente con cada ρ.
Esquema de Red: se mostrará al usuario un esquema dibujado de la red. Al tener
cuatro topologı́as, la original, en anillo, en malla y en estrella; la mostrada será la que
se seleccione en la pestaña de los enlaces. La posición de los nodos la podemos
obtener del fichero XML, por lo que estaremos mostrando la distribución real de la
red.
Demandas: en esta pestaña se muestra una tabla con las demandas de tráfico entre los nodos. Además se ofrece la posibilidad de modificar una demanda, simplemente seleccionándola y utilizando el JTextField disponible en esta misma pestaña.
Enlaces: aquı́ se puede ver una tabla con los enlaces de las topologı́as. Para seleccionar cuál se desea visualizar, está disponible un JComboBox con las topologı́as
generadas, y basta con seleccionar la elegida para que la tabla cambie automáticamente. También existe la posibilidad de modificar los enlaces, ya sea uno seleccionado, todos, o tan sólo los que estén a 0Mb/s. Esta última funcionalidad se ha
63
C AP ÍTULO 4. D ESCRIPCI ÓN DE LA APLICACI ÓN
añadido porque algunas topologı́as encontradas en SNDlib tienen todos los enlaces
a 0 y serı́a bastante tedioso ir agregando capacidad uno a uno. Como nota, decir
que los enlaces que estén a 0 no se pasarán al fichero NS ya que no distingue
si el enlace tiene o no capacidad, e intenta mandar datos a través de un enlace
con capacidad 0. También advertir que la aplicación, antes de pasar la topologı́a a
NS, comprueba si algún nodo se ha quedado aislado, es decir si todos sus enlaces
tienen capacidad 0.
Gráficas: en la última pestaña es donde se muestran las gráficas para el estudio
de la simulación. Señalar que las gráficas se generan de manera estadı́stica, es
decir, cuantas más simulaciones se realicen, se obtendrán más datos, y los valores
medios mostrados serán más precisos. Los datos leı́dos del fichero de trazas se
van almacenando en archivos localizados en la carpeta datos dentro del entorno
de trabajo seleccionado, de esta manera, si al visualizar las gráficas se observa
que la desviación tı́pica es muy grande, se pueden consultar estos ficheros para ver
qué simulación es la que ha ocasionado este desvı́o. También se ofrece la posibilidad de exportar las gráficas a un fichero de texto para su posterior estudio en otras
plataformas.
Para una información más detallada de las diferentes pantallas de la aplicación se
dispone del Manual de usuario en el Apéndice B.
4.4.2.
Gráficas de resultados
Para analizar los datos de una forma más sencilla, se decidió ofrecer al usuario un
conjunto de gráficas para consultar, las cuales, ilustran algunos datos importantes de la
simulación. La clase encargada de crear y mostrar las gráficas es PanelGraficas.java
y en ella se hace uso del paquete JFreeChart, descrito en el Capı́tulo 3.2.2.
Gracias a dicho paquete podemos crear gráficas de varios tipos, tales como barras,
histogramas, lineales y otras. El usuario tiene disponibles tres conjuntos de gráficas:
Gráficas de tráfico: en las que se da la posibilidad de analizar la cantidad de tráfico
que procesan los nodos, ya sea por paquetes o por tráfico total, además de saber
cuánto tráfico inserta cada nodo en el sistema. Para la generación de estas gráficas
se ha decidido seguir los siguientes pasos:
64
4.4. GUI
• A medida que se lee el fichero de trazas, se almacena el tamaño del paquete
leı́do o se aumenta el número de paquetes leı́dos
• Si es una recepción o un encolamiento para envı́o se mira el nodo que lo
está procesando y el dato leı́do en el punto anterior se almacena para ese
nodo en los paquetes procesados
• Si es un descarte se mira el nodo que lo está descartando y el dato leı́do en
el primer punto se almacena para ese nodo en los paquetes descartados
• Una vez se ha leı́do todo el fichero, se generan porcentajes de los paquetes
cursados y descartados por cada nodo
El objetivo de estas gráficas es ofrecer una vista sencilla e intuitiva de la cantidad
de tráfico que debe procesar cada nodo. De esta manera, se puede modificar la
capacidad de los nodos en función del porcentaje de tráfico que deban procesar, a
mayor tráfico, mayor capacidad.
Gráficas del estado de las colas en los nodos: en este grupo se muestran dos
gráficas sencillas, la primera muestra el tiempo medio que espera un paquete en la
cola de los nodos. Para este cálculo, NS impone una limitación, ya que en el fichero
de trazas, la precisión del tiempo no va más allá de los µs. La manera de generar la
gráfica es:
• Se van leyendo las lı́neas del fichero de trazas
• Cada vez que se recibe un paquete, se almacena el instante de tiempo en una
variable para cada nodo
• Cuando ese mismo paquete se encola para su envı́o se mira el instante de
tiempo y se le resta el anterior
• El dato anterior se almacena para su posterior representación
La segunda gráfica muestra una serie por cada nodo del sistema, esta serie muestra
la cantidad de paquetes en la cola de un nodo en cada 10ms de la simulación. Para
poder realizar esta gráfica se siguen los siguientes pasos:
• Se va leyendo el fichero de trazas
• Cuando se recibe un paquete o se descarta, se mira el instante de tiempo y
se divide entre 0,01 para obtener el slot de 10ms en el que ocurre
65
C AP ÍTULO 4. D ESCRIPCI ÓN DE LA APLICACI ÓN
• Se aumenta el número de paquetes en cola del nodo en cuestión en el slot de
10ms correspondiente
El motivo de este conjunto de gráficas es ofrecer al usuario una vista del estado de
las colas en cada nodo. Con la primera gráfica podemos ver el tiempo que tarda
un paquete entre que entra en cola y es enviado. Con la segunda, se consigue, de
una manera rápida y visual, saber la cantidad de tráfico que le llega a un nodo cada
10ms, lo que da una idea de lo congestionado que se encuentra.
Gráficas de retardo: en este último conjunto, se muestran los tiempos medios de
retardo entre cada par de nodos, es decir, el tiempo que tarda un paquete desde que
se envı́a hasta que es recibido por el nodo destino. También se ofrece una matriz
con la cantidad de nodos intermedios que un paquete debe atravesar para llegar
a un nodo destino, ya que cuantos más nodos deba atravesar un paquete, mayor
será el tiempo empleado en llegar. Para poder generar estas gráficas se debe:
• Mientras se lee el fichero de trazas, para cada nodo externo se almacenan los
instantes de tiempo en los que se envı́a tráfico
• Si se recibe un paquete y no es el destino, se aumenta en uno el número de
nodos intermedios entre el origen y el destino
• Si se recibe un paquete y es el destino, se mira el instante de tiempo y se le
resta el instante de envı́o
Con este último conjunto de gráficas se pretende controlar a simple vista, posibles
retardos en la recepción de los paquetes, lo que podrı́a venir dado por una alta
congestión en uno de los nodos intermedios.
También hay que señalar que por cada topologı́a simulada se muestran estos tres
conjuntos de gráficas, pudiendo elegir en cada momento a través de un menú desplegable
las gráficas que se quieren mostrar y de qué topologı́a en concreto. En el Manual de
usuario, en el Apéndice B, se puede encontrar una descripción más detallada sobre la
función de cada una de las gráficas.
Al usuario se le ofrece la posibilidad de exportar las gráficas a un fichero de texto para
su posterior procesamiento en otras plataformas capaces de representar gráficas, como
66
4.4. GUI
pueden ser MATLAB 1 o gnuplot 2 , cada gráfica tiene un modelo de fichero de salida,
ya que no todas las gráficas son iguales. Por ejemplo, las gráficas de barras generan un
fichero donde la primera columna es el nombre del nodo, la segunda es el valor medio
calculado y la tercera es la desviación tı́pica. En el Manual de usuario, en el Apéndice B,
se detalla el formato de todos los ficheros para que su procesado sea más cómodo y
ası́ facilitar su representación. Por supuesto, este formato no sigue ningún estándar, se ha
tomado la decisión de exportar las gráficas de esa manera ya que era la más lógica.
4.4.3.
Ampliar funcionalidad
Durante la realización del proyecto surgieron otras posibles ampliaciones para la aplicación, algunas de ellas son: añadir más tipos de tráfico o tener la posibilidad de seleccionar entre más tipos de nodos, como ethernet o wifi; e incluso diferentes tipos de red, ya
que la aplicación no está ligada a la tecnologı́a. Pero debido a que la funcionalidad principal era la simulación de redes ópticas con OBS, se dejaron para posibles lı́neas futuras
de desarrollo, como se verá en el Capı́tulo 6.
Aún ası́, se ha considerado que las descritas aquı́ poseen cierta relevancia e interés,
y por esta razón se detalla su posible implementación.
Añadir nuevo tipo de tráfico
Para añadir un nuevo tipo de tráfico hay que seguir una sencilla serie de pasos:
1. Modificar la pestaña de Opciones de Simulación para que se pueda seleccionar el
nuevo tráfico, además de poder elegir un valor para el tamaño de los paquetes.
2. Modificar el fichero esqueleto de la topologı́a en NS para poder introducir ese nuevo
tipo de tráfico, basta con seguir la estructura de los procedimientos ya generados
para los otros tráficos.
3. Cuando se vaya a escribir la topologı́a final de NS, escribir en el código de la aplicación un nuevo caso, para este nuevo tráfico, siguiendo la estructura de los que ya
están.
1 http://www.mathworks.es/
2 http://www.gnuplot.info/
67
C AP ÍTULO 4. D ESCRIPCI ÓN DE LA APLICACI ÓN
Añadir nuevo tipo de nodo
Añadir un tipo nuevo de nodo no es tan sencillo como añadir tráfico, ya que los nodos
tienen ciertas caracterı́sticas, sobretodo si son nodos wifi, como puede ser la antena, la
potencia de la antena. . . , pero en esencia se siguen los mismos pasos.
1. Ofrecer la posibilidad al usuario de elegir un tipo de nodo u otro, preferiblemente en
la pestaña de las Opciones de Simulación, ya que ahı́ es donde se configuran todos
los parámetros.
2. Modificar el fichero esqueleto para añadir todos los parámetros de los nodos que
no vamos a ofrecer al usuario para modificar.
3. Los parámetros modificables debemos mostrarlos en una pestaña.
4. A la hora de escribir los nodos en el fichero final NS, escribir una declaración u otra,
dependiendo de la elección del usuario.
5. Los enlaces no son los mismos que para OBS, por lo tanto a la hora de escribirlos en
el fichero NS para simular deberemos poner enlaces correspondientes a la elección
del usuario.
4.4.4.
Diagrama de clases simplificado
En la figura 4.9 se muestra un diagrama de clases simplificado, en el que se ilustra la
relación entre las clases, y en el que, a primera vista, se puede ver como la clase central
de la aplicación es Interfaz.java. Para ver una descripción de la funcionalidad de cada
una de las clases y un diagrama más detallado, consultar el Apéndice E.
68
4.4. GUI
Figura 4.9: Diagrama de clases simplificado
69
C AP ÍTULO 4. D ESCRIPCI ÓN DE LA APLICACI ÓN
70
Capı́tulo 5
Validación
En este capı́tulo se validará el funcionamiento de la aplicación y se analizarán las
pruebas realizadas para ello.
5.1.
Pruebas a realizar
Para comprobar el correcto funcionamiento de la aplicación se han elegido una serie
de pruebas:
Prueba 1: Arrancar la aplicación sin fichero .lastConf para que no cargue ninguna
configuración por defecto.
Prueba 2: Una vez realizada una simulación, cerrar la aplicación y volver a abrirla
para comprobar que se cargan los ficheros de la última simulación realizada.
Prueba 3: Tras la lectura y posterior parseo del fichero XML, comprobar que la red
mostrada en el Panel de Red se corresponde con la leı́da.
Prueba 4: Comprobar que las demandas y los enlaces se corresponden con los
leı́dos en el fichero XML.
Prueba 5: Sabiendo que existe algún nodo aislado, es decir, sin ningún enlace
con capcidad diferente de 0Mbps, intentar generar el fichero para la simulación y
comprobar que la ventana de aviso se muestra.
Prueba 6: Simulación de envı́o del tráfico leı́do del fichero XML con una capacidad
de 1Gbps para cada uno de los enlaces con diferentes niveles de carga.
71
C AP ÍTULO 5. VALIDACI ÓN
Figura 5.1: Red NFSNET (arriba), proyecto Nobel para Europa (abajo izquierda) y Polonia (abajo
derecha) [20]
Prueba 7: Simulación de una red cambiando los retardos entre los enlaces.
Prueba 8: Simulación de una red para comprobar el estado de las colas de espera
en los nodos.
Prueba 9: Simulación de un escenario diferente en el que se puede aplicar teorı́a
de colas.
Prueba 10: Una vez realizada una simulación y mostradas sus gráficas, exportarlas
a un fichero de texto.
Las pruebas de robustez de la aplicación se han pasado con éxito, pero las que aportan una mejor visión de la funcionalidad de la aplicación son las de simulación y obtención
72
5.2. P RUEBAS DE CARGA
de gráficas de resultados. Por ello, se va a explicar de manera más detallada los resultados obtenidos en las diferentes pruebas de simulación. Para más información de cómo
configurar los parámetros de la simulación, consultar el Apéndice B.
5.2.
Pruebas de carga
Estas pruebas se han decidido realizar en tres topologı́as diferentes, dos de ellas con
caracterı́sticas similares y otra con el doble de dimensión que las anteriores (figura 5.1).
Esto es debido a que, como premisa, redes de caracterı́sticas similares, deberı́an tener
resultados similares, y para que la validación sea correcta, deberı́an mostrar resultados
acordes. Para realizar las simulaciones se ha elegido el tráfico Exponential ya que es el
modelo de tráfico teórico más conocido y estudiado.
5.2.1.
Pruebas con carga baja en los enlaces
Los parámetros configurados en la simulación para esta baterı́a de pruebas han sido:
La capacidad de los enlaces es de 1Gbps.
1
, lo que en este caso es aproximadamente un
La carga de los enlaces es de N−1
7 %.
4 canales de datos y 1 de control.
Retardo de enlace de 1ms.
Tamaño de paquete de 2000bits.
La primera red, que consiste en 14 nodos, 21 enlaces y 91 demandas de tráfico,
distribuidas como se puede observar en [23], correspondiente a la NFSNET, ha obtenido
los resultados mostrados en la figura 5.2.
Para comprender e interpretar las gráficas de resultados se va a explicar su representación. Las gráficas representan los porcentajes de paquetes cursados o descartados en
cada nodo en función del total cursado por la red, y cada una de ella se corresponde con
73
C AP ÍTULO 5. VALIDACI ÓN
Figura 5.2: Prueba con baja carga para NFSNET [23]. El orden de las topologı́as, de izquierda a
derecha y de arriba a abajo es: original, anillo, malla, estrella
una de las topologı́as generadas a partir de la NFSNET. El orden de izquierda a derecha y
de arriba a abajo es: la topologı́a original de la red NFSNET, el anillo, la malla y la estrella,
todas ellas equivalentes. En el eje de ordenadas se representa el nombre de los nodos
y en el de abscisas el porcentaje de paquetes respecto del total cursado por la red. A
cada nodo le corresponden dos barras, una azul y una roja. Las barras azules indican el
porcentaje de paquetes procesados por el nodo, mientras que la roja señala el porcentaje
de paquetes descartados.
Para entender mejor la representación de dichas gráficas se va a exponer un ejemplo. En el anillo generado (esquina superior derecha), el nodo de Palo-Alto (primer nodo),
procesa de manera correcta el 3 % del tráfico total que circula por la red; y descarta un porcentaje menor a 1 % del total de dicho tráfico. Por otro lado, el nodo de Urbana-Champaign
(sexto nodo), procesa correctamente en torno al 10 % del total cursado por la red y descarta del orden de un 4 %.
Una vez explicada una posible representación de los resultados, se puede realizar
una interpretación de los mismos, aunque hay que recordar que el objetivo no es elegir
la mejor distribución de la red, si no aportar las herramientas de ayuda necesarias para
74
5.2. P RUEBAS DE CARGA
Figura 5.3: Prueba con baja carga para Europa [24]. El orden de las topologı́as, de izquierda a
derecha y de arriba a abajo es: original, anillo, malla, estrella
que el usuario tome esa decisión. En el escenario simulado anteriormente se observa que
la red no presenta apenas congestión en ninguna de sus variantes, como era de esperar
antes de realizar la simulación, dado que la carga de entrada es baja.
Para el segundo escenario, conformado por 28 nodos, 41 enlaces y 378 demandas de
tráfico, descrito en [24], correspondiente a la red de Europa para el proyecto Nobel 1 , se
han obtenido los resultados representados en la figura 5.3.
En comparación con la simulación anterior, se puede ver fácilmente que al ser una
red más grande, el tráfico es mayor, por lo que los nodos deben procesar muchos más
paquetes, formando colas de espera mayores y descartando un porcentaje mayor de los
mismos.
Para la tercera topologı́a, integrada por 12 nodos, 18 enlaces y 66 demandas de tráfico, ubicada en [25], correspondiente a la red de Polonia, se han obtenido los resultados
mostrados en la figura 5.4.
1 http://www.ist-nobel.org/Nobel2/servlet/Nobel2.Main
75
C AP ÍTULO 5. VALIDACI ÓN
Figura 5.4: Prueba con baja carga para Polonia [25]. El orden de las topologı́as, de izquierda a
derecha y de arriba a abajo es: original, anillo, malla, estrella
Al tener las mismas dimensiones que la primera red, es de esperar que los resultados
obtenidos sean similares. Y comparando las figuras 5.2 y 5.4 se puede comprobar que la
premisa es cierta y que para redes similares se obtienen resultados similares. Lo que nos
permite validar la aplicación.
5.2.2.
Pruebas con carga media en los enlaces
Los parámetros configurados para estas pruebas han sido:
La capacidad de los enlaces es de 1Gbps.
La carga de los enlaces es de un 50 %.
4 canales de datos y 1 de control.
Retardo de enlace de 1ms.
Tamaño de paquete de 2000bits.
76
5.2. P RUEBAS DE CARGA
Figura 5.5: Prueba con carga media para NFSNET [23]. El orden de las topologı́as, de izquierda
a derecha y de arriba a abajo es: original, anillo, malla, estrella
Para estas pruebas se han utilizado las mismas tres topologı́as que en la prueba
anterior, usando los mismos parámetros de configuración a excepción de la carga en los
enlaces.
Para la red NFSNET, con 14 nodos, 21 enlaces y 91 demandas de tráfico [23], se
han obtenido los resultados mostrados en la figura 5.5. En ella se puede observar cómo
el porcentaje de tráfico descartado aumenta respecto a la prueba anterior, algo lógico si
tenemos en cuenta que los nodos están al 50 % de su capacidad.
Para el caso de la red de Europa, la conformada por 28 nodos, 41 enlaces y 378
demandas [24], se obtienen los resultados de la figura 5.6. Como era de esperar, el porcentaje de tráfico descartado por los nodos aumenta considerablemente comparado con
la prueba anterior, pero es algo previsible teniendo en cuenta que la carga es del 50 %.
Y para la última de las redes probadas, la formada por 12 nodos, 18 enlaces y 66
demandas [25], y muy similar en caracterı́sticas y prestaciones de la primera red, se vuelve
a tener unos resultados parecidos a los obtenidos por dicha red, como se puede ver en la
figura 5.7.
77
C AP ÍTULO 5. VALIDACI ÓN
Figura 5.6: Prueba con media carga para Europa [24]. El orden de las topologı́as, de izquierda a
derecha y de arriba a abajo es: original, anillo, malla, estrella
Figura 5.7: Prueba con carga media para Polonia [25]. El orden de las topologı́as, de izquierda a
derecha y de arriba a abajo es: original, anillo, malla, estrella
78
5.2. P RUEBAS DE CARGA
5.2.3.
Pruebas con carga alta en los enlaces
Los parámetros configurados en esta ocasión son:
La capacidad de los enlaces es de 1Gbps.
La carga de los enlaces es de un 95 %.
4 canales de datos y 1 de control.
Retardo de enlace de 1ms.
Tamaño de paquete de 2000bits.
De nuevo se han vuelto a utilizar las mismas topologı́as que en las pruebas anteriores, manteniendo de nuevo las mismos parámetros para la simulación, pero cambiando
la carga de los nodos a una mucho mayor, lo que nos lleva a pensar de antemano que la
cantidad de paquetes descartados en estas simulaciones aumentará de manera considerable, en un concreto hasta un 95 %.
Para la red NFSNET, la que compuesta de 14 nodos, 21 enlaces y 91 demandas de
tráfico [23] se obtienen los resultados mostrados en la figura 5.8, y como se ha señalado
antes, la cantidad de paquetes descartados aumenta desmesuradamente hasta casi llegar
a descartar la totalidad de los paquetes que circulan por la red.
Para la red de mayores dimensiones, la correspondiente a Europa, con 28 nodos,
41 enlaces y 378 demandas [24], se tienen los resultados mostrados en la figura 5.9. Si
analizamos brevemente dicha figura, se observa a primera vista como ahora los resultados
ya se parecen más a los de la red de estudio, pero esto es debido a que la primera red
está saturada casi al completo, al igual que esta, por lo que los resultados serán muy
parecidos.
Para la tercera red, la de Polonia, con 12 nodos, 18 enlaces y 66 demandas [25], los
resultados obtenidos son los mostrados en la figura 5.10. De nuevo, podemos observar, si
comparamos los resultados con los de la primera red, que ambas son muy parecidas, lo
que confirma la suposición inicial de que redes de una magnitud similar tienen resultados
similares.
79
C AP ÍTULO 5. VALIDACI ÓN
Figura 5.8: Prueba con carga alta para NFSNET [23]. El orden de las topologı́as, de izquierda a
derecha y de arriba a abajo es: original, anillo, malla, estrella
Figura 5.9: Prueba con carga alta para Europa [24]. El orden de las topologı́as, de izquierda a
derecha y de arriba a abajo es: original, anillo, malla, estrella
80
5.3. P RUEBAS DE RETARDO
Figura 5.10: Prueba con carga alta para Polonia [25]. El orden de las topologı́as, de izquierda a
derecha y de arriba a abajo es: original, anillo, malla, estrella
5.3.
Pruebas de retardo
Lo que se pretende conseguir con estas pruebas es comprobar que, en una red simulada, si se introduce un retardo de enlace mayor al que inicialmente tenı́a, las gráficas
de retardo mostrarán un aumento significativo del retardo entre dos nodos extremos. Para
realizar estas pruebas se ha decidido utilizar la red NFSNET [23] y para comprobar que
la aplicación funciona correctamente utilizaremos la red de Polonia [25] para contrastar
los resultados entre dos redes similares. Para estas pruebas, de nuevo se elige el tráfico
Exponential, por las razones antes citadas.
5.3.1.
Pruebas con tiempos de retardo bajo en los enlaces
Los parámetros configurados para la simulación son los descritos a continuación:
La capacidad de los enlaces es de 1Gbps.
81
C AP ÍTULO 5. VALIDACI ÓN
La carga de los enlaces es de un 50 %.
4 canales de datos y 1 de control.
Tamaño de paquete de 2000bits.
Las primeras pruebas se harán con un retardo de enlace de 1ms. Cabe destacar que
este retardo será el mismo para los enlaces edge-core y para los core-core.
En la figura 5.11 se muestra el resultado de la simulación antes descrita.
Para una mejor comprensión de las gráficas se van a describir brevemente. Cada fila
corresponde a una topologı́a, de arriba a abajo son: la topologı́a original, el anillo, la malla
y la estrella, todas ellas equivalentes. Por cada fila hay dos gráficas, la media del retardo
entre dos nodos extremos, medida en ms, y los nodos intermedios entre nodos extremos.
Cada gráfica se compone de una matriz de colores y una escala de grises a su derecha.
Los ejes de la matriz se corresponden con los nodos, es decir, que la posición 2:3, es el
retardo o los nodos intermedios (según la gráfica que se esté estudiando) que hay entre
el nodo 2 y el 3, por lo tanto, si se quiere conocer el valor obtenido, se debe mirar el color
de la posición deseada y comprobarlo con la escala adjunta.
Una vez explicado el formato de las gráficas y su manera de interpretación, vamos
a poner un ejemplo. Si quisiéramos saber el retardo que existe entre los nodos 4 y 5 en
la topologı́a original, se debe mirar la matriz y consultar el color en la escala adjunta, en
este caso, tendrı́amos un valor aproximado de 4,5ms. La gráfica de los nodos se muestra
para comprobar que los picos en el retardo corresponden a un gran número de nodos
intermedios. Por ejemplo, en la topologı́a en anillo se detecta que entre los nodos 3 y
10 hay un retardo de aproximadamente 9ms, algo bastante grande para ser un retardo
de enlace de 1ms, pero si se comprueba la gráfica de nodos intermedios, se ve que los
paquetes que van desde el nodo 3 al 10 deben pasar por 7 nodos intermedios, lo que
aumenta en gran medida el retardo.
La peculiar configuración de las gráficas, en forma de matriz triangular, se debe a
que las demandas de tráfico sólo están configuradas en un sentido en el fichero XML. La
aplicación no se encarga de duplicar esas demandas, tan sólo se limita a simular lo que
haya en dicho fichero.
Si observamos las gráficas detenidamente, es fácil saber de antemano la forma que
tendrán. Los nodos en el anillo están unidos con el anterior y el siguiente, por lo que es
82
5.3. P RUEBAS DE RETARDO
Figura 5.11: Prueba retardo bajo en enlaces para NFSNET [23]. El orden de las topologı́as,de
arriba a abajo es: original, anillo, malla, estrella
83
C AP ÍTULO 5. VALIDACI ÓN
Figura 5.12: Prueba retardo bajo en enlaces para Polonia [25]. El orden de las topologı́as,de arriba
a abajo es: original, anillo, malla, estrella
84
5.3. P RUEBAS DE RETARDO
fácil pensar que el retardo será pequeño en nodos cercanos y grande en nodos alejados,
y como se muestra en las gráficas de resultados, se obtiene esa figura tan peculiar. Para
el caso de la malla, era sencillo pensar que el retardo serı́a igual para todos los nodos,
a menos que hubiese congestión, ya que en una malla, todos los nodos se interconectan
entre sı́. Y para el caso de la estrella, tenemos la misma filosofı́a que para la malla, solo
que esta vez en vez de ser enlace directo, se pasa por un nodo concentrador.
Los resultados de la topologı́a de Polonia para contrastar se muestran en la figura 5.12.
Como en este caso estamos atendiendo al retardo entre nodos, que la red tenga las
mismas caracterı́sticas es algo que carece de importancia, ya que lo que verdaderamente
importa en este tipo de análisis es la diposición de los enlaces, y como se puede apreciar,
entre las dos redes no hay demasiado parecido. Lo que sı́ se puede comparar es el retardo
máximo, que está en torno a los 6,5ms. Si se comparase con una red de mayor magnitud,
el retardo en dicha red superarı́a con creces al de estas dos más pequeñas, aunque como
se ha señalado, depende de la disposición de los enlaces y de su retardo o longitud.
5.3.2.
Pruebas con tiempos de retardo medio en los enlaces
Los parámetros de estas simulaciones son los siguientes:
La capacidad de los enlaces es de 1Gbps.
La carga de los enlaces es de un 50 %.
4 canales de datos y 1 de control.
Tamaño de paquete de 2000bits.
Para este segundo bloque de pruebas de retardo, se va a aumentar el retardo de los
enlaces a 10ms.
Como se puede comprobar en las figuras 5.13 y 5.14, el retardo entre los nodos ha
aumentado un orden de magnitud, como era de esperar al aumentar el retardo de los
enlaces del mismo modo. Se puede apreciar, cómo el retardo en este caso mantiene las
mismas proporciones que en las primeras pruebas, es decir, se tienen los mismos retardos
entre nodos, pero un orden de magnitud mayor, por lo que de cara a la tercera baterı́a de
pruebas de retardo, cabe esperar un resultado similar.
85
C AP ÍTULO 5. VALIDACI ÓN
Figura 5.13: Prueba retardo medio en enlaces para NFSNET [23]. El orden de las topologı́as,de
arriba a abajo es: original, anillo, malla, estrella
86
5.3. P RUEBAS DE RETARDO
Figura 5.14: Prueba retardo medio en enlaces para Polonia [25]. El orden de las topologı́as,de
arriba a abajo es: original, anillo, malla, estrella
87
C AP ÍTULO 5. VALIDACI ÓN
Figura 5.15: Prueba retardo alto en enlaces para NFSNET [23]. El orden de las topologı́as,de
arriba a abajo es: original, anillo, malla, estrella
88
5.3. P RUEBAS DE RETARDO
Figura 5.16: Prueba retardo alto en enlaces para Polonia [25]. El orden de las topologı́as,de arriba
a abajo es: original, anillo, malla, estrella
89
C AP ÍTULO 5. VALIDACI ÓN
5.3.3.
Pruebas con tiempos de retardo altos en los enlaces
Los parámetros con los que se ha configurado la simulación son:
La capacidad de los enlaces es de 1Gbps.
La carga de los enlaces es de un 50 %.
4 canales de datos y 1 de control.
Tamaño de paquete de 2000bits.
Para este tercer y último bloque de pruebas de retardo, se va a fijar el retardo de los
enlaces a 100ms, que para redes de fibra óptica es mucho, pero el objetivo de la prueba
era validar la aplicación para diferentes magnitudes del retardo entre dos nodos extremos.
Como se comprueba en las figuras 5.15 y 5.16, el retardo sigue el mismo patrón que
las pruebas anteriores, pero en un orden de magnitud mucho mayor. Como ya se habı́a
apuntado, este resultado era el esperado según el estudio de las anteriores pruebas.
5.4.
Estudio del estado de las colas de espera en los nodos
Lo que se pretende conseguir con estas pruebas es comprobar que al introducir picos
de carga en un escenario, los nodos involucrados deben procesar muchos más paquetes,
y por lo tanto, las colas de dichos nodos crecerán visiblemente. Para la realización de
estas pruebas se toma como red de estudio la de Almenia, descrita en [26]. El tamaño de
los enlaces se ha fijado a 50Mb/s, teniendo en cuenta que las demandas de tráfico no
son muy grandes, y 4 canales de datos de OBS y 1 de control. El tráfico enviado a sido
Exponential, con un tamaño de paquete de 2000bits.
5.4.1.
Pruebas con demandas bajas
Como ya se dijo, se van a estudiar las colas de los nodos, por lo que las gráficas
interesantes serán las de número de paquetes en cola cada 10ms. Para esta prueba se
han obtenido las gráficas mostradas en la figura 5.17.
90
5.4. E STUDIO DEL ESTADO DE LAS COLAS DE ESPERA EN LOS NODOS
Figura 5.17: Prueba sin carga. El orden de las topologı́as,de arriba a abajo es: original, anillo,
malla, estrella
91
C AP ÍTULO 5. VALIDACI ÓN
Este tipo de gráficas representan la cantidad de paquetes que tiene un nodo en cola
cada 10ms. Para su mejor comprensión, se va a explicar brevemente su estructura. En
el eje de ordenadas tenemos los instantes de tiempo y en el de abscisas el número de
paquetes en la cola de un nodo. Como se puede apreciar, para cada nodo existe una
serie de puntos por cada instante de tiempo, cada uno pintado de un color y con una
leyenda para identificarlos. La figura en concreto está compuesta por los resultados de
las diferentes topologı́as, que de arriba a abajo son: la original, el anillo, la malla y la
estrella. Ası́ por ejemplo, en el nodo de Frankfurt de la topologı́a original, se tienen más o
menos 2 paquetes en cola habitualmente, pero en los instantes de tiempo 13,0s y 16,0s
se llegan a tener seis paquetes en cola, lo que induce a pensar que hay cierta congestión
en esos instantes de tiempo.
5.4.2.
Pruebas con picos de demanda
Para poder realizar un estudio comparativo, se ha simulado la misma red, con los
mismos parámetros, pero introduciendo picos de tráfico en tres demandas. De esta forma,
se puede pensar a priori, que las colas en los nodos van a aumentar de una manera
significativa. Los resultados de estas pruebas se muestran en la figura 5.18.
Como se habı́a previsto, las colas en los nodos por los cuales se encaminan los picos, crecen lo suficiente como para ser visibles y nada despreciables en su estudio. Tras
analizar la gráfica, se podrı́a tomar la decisión de aumentar la capacidad de los enlaces
involucrados en ese aumento de paquetes en cola, para evitar la saturación de las mismas
en caso de que haya otros picos de demanda inesperados.
5.5.
Simulación de otros escenarios
Como se ha explicado en el Capı́tulo 2.2.1, la aplicación está basada en un simulador
de eventos, que permite simular redes de colas. En general, estableciendo los parámetros
correctos, podemos simular otros tipos de estas redes. Para ilustrarlo, se va a simular
un modelo para redes de vehı́culos, que sigue los mismos principios: análogamente, los
paquetes serı́an coches, la capacidad del enlace serı́a la velocidad de incorporación a
la vı́a, los nodos serı́an las entradas o salidas y la velocidad de propagación serı́a la
velocidad de la vı́a.
92
5.5. S IMULACI ÓN DE OTROS ESCENARIOS
Figura 5.18: Prueba picos de carga. El orden de las topologı́as,de arriba a abajo es: original, anillo,
malla, estrella
93
C AP ÍTULO 5. VALIDACI ÓN
Figura 5.19: Esquema de la M-40
Concretamente se ha elegido un esquema de la M-40, mostrado en la figura 5.19.
Se han utilizado dos topologı́as para este escenario, la propia M-40, formando un anillo
exterior entre las salidas a las otras carreteras, y la M-30, formando un anillo más pequeño
sólo entre ciertas salidas para aligerar el tráfico existente en la primera simulación. Para
la de la topologı́a en anillo, sólo se utilizarán los enlaces de la M-40.
Una vez establecida la topologı́a de la red y procesada por la aplicación, se deben
introducir los parámetros de la simulación. Para ello, se harán las siguientes suposiciones:
El tamaño de los coches: en este caso los coches equivalen a los paquetes, por
lo que se debe introducir el tamaño de la unidad mı́nima en metros. Para este escenario, se ha elegido como tamaño de unidad de computación 6.
La cantidad de coches: podemos relacionarla con las demandas entre nodos. La
demanda entre, por ejemplo, el nodo A1 y el A4 equivaldrı́a a la cantidad de coches
que entrando a la red por el nodo A1, desean salir de ella en el nodo A4. Cabe
destacar que las demandas se miden en un orden de magnitud de 106 , y que las
unidades de computación ocupan un tamaño de 6 unidades de medida, por lo que
si, por ejemplo, se desea simular que del A1 al A4 van 50 unidades de computación, se debe poner una demanda de 300, y como la aplicación pide un orden de
magnitud de 106 el dato correcto debe ser 0,000300.
94
5.5. S IMULACI ÓN DE OTROS ESCENARIOS
El número de carriles: como se vió en el Capı́tulo 2.3, se puede modelar este tipo
de redes como un sistema M/M/c. Para el ejemplo que nos ocupa el número de
carriles equivale al número de canales de datos disponibles para la transmisión de
datos, de esta manera, se han estimado el número de canales en 3, por lo que se
tienen que configurar 3 canales de datos y 1 de control, luego el sistema será un
M/M/3, con entrada tráfico Exponential.
La velocidad de incorporación: equivale a la capacidad del enlace. Para el caso
planteado, se tienen 3 canales, y se asume que la velocidad de incorporación a la
vı́a es de unos 50km/h o 13m/s, por lo tanto la capacidad de los nodos de entrada
se debe establecer a 39m/s.
Haciendo unos cálculos previos a la simulación se puede obtener la tasa de servicio
del sistema, cúantos coches se incorporan a la carretera.
tiempo servicio =
6m/coche
13m/s
= 0,46s/unidades
O lo que es lo mismo, se envı́an (tasa servicio µ) 2,16unidades/s.
La congestión de las incorporaciones: al tratarse de un sistema M/M/c, se puede
representar este dato como el factor de ocupación de los nodos ρ, tal y como se
explicó en el Capı́tulo 2.3, con lo que se puede indicar si es una hora con mucho
tráfico o con tráfico menos congestionado. Se puede calcular la tasa de llegadas de
los paquetes, o lo que es lo mismo cada cuánto tiempo llegan paquetes al sistema,
utilizando la fórmula descrita en el Capı́tulo 2.3 para un sistema M/M/c, como:
λ = ρ ∗ cµ
Si se sustituyen los datos en la fórmula anterior se obtiene la tasa de llegadas para
un determinado ρ.
El tiempo de viaje: este último parámetro tiene relación con el retardo de los enlaces, el cual hay que configurar en el campo correspondiente de la pestaña de
Opciones de Simulación de la aplicación. Se ha decidido que entre los nodos
hay una distancia de 10km y que los paquetes (coches) viajan una velocidad media
de 100km/h, por lo que haciendo unos pequeños cálculos, se obtiene que los tardan 360s desde un nodo al siguiente. De nuevo se debe tener cuidado al introducir
este dato en la aplicación, ya que se deben introducir ms, por lo tanto si queremos
establecer el retardo a 360s se debe poner 360000 en la casilla correspondiente al
retardo de los enlaces.
95
C AP ÍTULO 5. VALIDACI ÓN
Figura 5.20: Colas en los nodos con apoyo de anillo interior. Congestión 50 %.
Figura 5.21: Colas en los nodos sin apoyo de anillo interior. Congestión 50 %.
Una vez que se han establecido los parámetros para la simulación se procede a obtener los resultados gráficos. Se han realizado dos simulaciones para comprobar el funcionamiento. Una con un factor de ocupación del 50 % y otra del 90 %, obteniéndose los
resultados que se muestran en las siguientes figuras.
En la figura 5.20 se muestran las colas con el respaldo de la red interna mientras que
en la figura 5.21 se muestran los resultados para la red externa únicamente. Ambas figuras
se han obtenido mediante una simulación de 7 nodos, interconectados como se muestra
en la figura 5.19, y con los parámetros que se han explicado anteriormente, además de
un factor de ocupación del 50 %.
Se puede apreciar cómo sin el apoyo del anillo interno la red está algo más cargada,
pero dada la poca carga, apenas es relevante.
Pero para la simulación realizada con los mismos parámetros descritos antes, pero con
96
5.5. S IMULACI ÓN DE OTROS ESCENARIOS
Figura 5.22: Colas en los nodos con apoyo de anillo interior. Congestión 90 %.
Figura 5.23: Colas en los nodos sin apoyo de anillo interior. Congestión 90 %.
un factor de ocupación del 90 %, mostrado en las figuras 5.22 y 5.23, se puede apreciar
como la red sin el anillo interior está algo más cargada.
97
C AP ÍTULO 5. VALIDACI ÓN
98
Capı́tulo 6
Conclusiones y trabajo futuro
En la primera parte del capı́tulo se revisará el trabajo que se ha realizado y en la
segunda se expondrán posibles mejoras para ampliar la aplicación.
6.1.
Conclusiones
El proyecto consistı́a en facilitar el estudio comparativo de los resultados obtenidos al
realizar simulaciones de diferentes topologı́as de red. Para ello, se diseñó y desarrolló una
aplicación con la que, a partir de una topologı́a de red, descrita en formato XML, se generasen las diferentes topologı́as básicas equivalentes y se pudiesen configurar de una
manera fácil e intuitiva los diferentes parámetros de simulación.
Una vez realizada la simulación, con un simulador bien conocido como es NS-2, se
construirı́an los diferentes informes gráficos para facilitar el estudio comparativo de las
diferentes topologı́as de red.
Los objetivos a priori se han cumplido, pero en el camino recorrido aparecieron problemas, sobretodo con la compilación del módulo de OBS supuestamente integrado en
NS-2, lo que más tarde se comprobó que no era ası́, por lo que se tuvo que buscar posibles soluciones. Para ello, se intentó compilar el módulo original OWns, del cual procede
la versión del actual módulo de OBS, pero no fue una solución correcta. Al final, se consiguió encontrar las modificaciones pertinentes que habı́a que hacer a los ficheros del
módulo [21] [22] para su posterior compilación e integración. Dichos cambios están descritos en el Apéndice D y los pasos para poder compilar todo el simulador se encuentran
en el Apéndice C.
99
C AP ÍTULO 6. C ONCLUSIONES Y TRABAJO FUTURO
Además, se pueden sacar las siguientes conclusiones del trabajo realizado:
Se ha desarrollado un proyecto de código abierto, por lo cual, cualquier persona
puede modificar o ampliar funcionalidades de la aplicación de forma modular y escalable.
Para poder ejecutar la aplicación sólo se necesita un equipo con Linux y la instalación del simulador NS-2 con el módulo para OBS, lo cual es bastante sencillo si se
siguen las instrucciones descritas en el Manual de instalación en el Apéndice C.
La aplicación permite la simulación de cuatro topologı́as, a saber, una original, una
anillo, una malla y una estrella, todas ellas equivalentes. Posteriormente, facilita
el estudio comparativo de las mismas, a través de los resultados obtenidos de la
simulación, mediante gráficas que ilustran sus prestaciones: bloqueos, retardos, dimensión de colas y tráfico procesado.
Uno de los enfoques para la aplicación, es que sirviese de ayuda para la docencia, por lo que posibilita a usuarios no familiarizados con NS-2 la realización de
simulaciones de redes que de otra manera deberı́an realizar en lı́nea de comandos.
Pero sin duda, la conclusión más importante, es que la piedra angular del proyecto
reside en el fichero esqueleto, donde se encuentran los parámetros que va a utilizar la
simulación y no se pueden modificar desde la aplicación gráfica. Además, servirá para
generar las topologı́as en NS para su simulación, a partir de las cuales, se obtendrán los
ficheros de trazas para poder mostrar de manera gráfica los resultados obtenidos y, como
se dijo, facilitar el estudio comparativo de las topologı́as de red.
6.2.
Trabajo futuro
Gracias a que es una aplicación de código abierto, es posible la ampliación de funcionalidades, ası́ como la modificación de las existentes hasta ahora. Algunas de ellas,
ya se han descrito en el Capı́tulo 4 y ahora detallaremos las que consideramos de una
realización más factible.
Como se dijo en el Capı́tulo 4, se podrı́an ampliar los tipos de nodos que se pueden simular, como por ejemplo nodos ethernet o wifi; o añadir más tipos de tráfico
100
6.2. T RABAJO FUTURO
para enviar entre nodos. Esto darı́a mucha más flexibilidad a la aplicación, ya que
el número de posibilidades de simulación crecerı́a desmesuradamente. Para realizarlo, bastarı́a con modificar el fichero esqueleto, añadiendo los parámetros de los
nodos o del tráfico, y mostrándolos en el interfaz para su posible modificación.
Una buena lı́nea de futuro serı́a añadir más parámetros para configurar desde el
entorno gráfico, ofreciendo la posibilidad a un usuario avanzado, que sea capaz de
modificar el esqueleto, de no tener que molestarse en cambiar los parámetros en
el propio fichero, si no que serı́a la propia aplicación la encargada de hacerlo. Para
realizarlo, tan sólo habrı́a que introducir más marcas en el fichero y posteriormente,
mostrar los campos correspondientes en la aplicación, para permitir la modificación.
Dado que los nodos no se encuentran siempre a la misma distancia, hay enlaces
que poseen un retardo mayor que otros. Partiendo de esa base, se podrı́a modificar
la aplicación para establecer un retardo de enlace en función de la distancia entre
los nodos. Para ello, habrı́a que calcular la distancia entre los extremos y a la hora
de introducir el enlace en el fichero de simulación, calcular el retardo que tendrı́a y
ponerlo en la declaración.
Las redes permiten un estudio muy amplio de sus prestaciones, y los resultados
mostrados por la aplicación pueden no ser suficientes, por lo que en una lı́nea de
trabajo futuro, se podrı́an añadir más gráficas para un estudio más completo de los
eventos en la red. Bastarı́a con saber el tipo de estudio que se desea realizar, a
partir de los resultados que ofrece NS, y crear gráficas acordes.
Como no todo el mundo utiliza sistemas Linux, se podrı́a ampliar su uso a otros sistemas operativos. Tan sólo habrı́a que modificar las rutas de acceso a los ficheros
en función del sistema anfitrión, ya que como la aplicación es Java, que es multiplataforma, la ejecución de la aplicación no tendrı́a problemas.
Como se ha visto durante el estudio del proyecto, existen muchos simuladores de
red aparte de NS, por lo que se podrı́a ofrecer la posibilidad de elegir qué simulador
se desea utilizar, como por ejemplo OMNeT++ o NS-3 ampliando la compatibilidad
del Generador de ficheros de simulación. Para esta lı́nea habrı́a que tener varios
ficheros esqueleto, uno por cada simulador disponible en la aplicación, ya que al
estar escritos en lenguajes diferentes, la compatibilidad entre ellos es nula.
101
C AP ÍTULO 6. C ONCLUSIONES Y TRABAJO FUTURO
Otra posible ampliación es la generación de topologı́as sin necesidad de parsear
ningún fichero, tan sólo introduciendo en la aplicación el número de nodos de la
topologı́a y los enlaces entre ellos, se generarı́a la red deseada por el usuario. Para
realizar este trabajo se podrı́a enfocar de varias maneras: se podrı́a pedir al usuario
el número de nodos y los enlaces entre ellos, u ofrecer la posibilidad de arrastrar
nodos a una pantalla y unirlos mediante flechas.
102
Bibliografı́a
[1] M. Maier, Optical switching networks. Cambridge Univ Pr, 2008. ISBN 978-0-52186800-6.
[2] C. Qiao and M. Yoo, “Optical burst switching (OBS)-a new paradigm for an optical
internet,” Journal of high speed networks, vol. 8, no. 1, p. 69, 1999. ISSN 0926-6801.
[3] Y. Chen, C. Qiao, and X. Yu, “Optical burst switching: A new area in optical networking
research,” Network, IEEE, vol. 18, no. 3, pp. 16–23, 2004. ISSN 0018-9529.
[4] T. Battestilli and H. Perros, “An introduction to optical burst switching,” Communications Magazine, IEEE, vol. 41, no. 8, pp. S10–S15, 2003. ISSN 0163-6804.
[5] D. Larrabeiti and P. Pacyna, “Introduction to optical burst switching (obs).”
[6] S. McCanne, S. Floyd, and K. Fall, “LBNL Network Simulator, ns version 1.” http:
//ee.lbl.gov/ns/, 1997. [En lı́nea; acceso el 25-Mayo-2011].
[7] U. of California-Berkeley, “The Network Simulator - ns-2.” http://www.isi.edu/
nsnam/ns/, 2000. [En lı́nea; acceso el 18-Mayo-2011].
[8] I. Martı́nez-Yelmo, “OBS-WLAN Simulator based on OWNs and NS 2.28.” http://
e-archivo.uc3m.es/handle/10016/7952, 2007. [En lı́nea; acceso el 31-Mayo-2011].
[9] U. of California-Berkeley, “The ns-3 network simulator.” http://www.nsnam.org/,
2006. [En lı́nea; acceso el 18-Mayo-2011].
[10] U. of California-Berkeley, “OMNeT++ Network Simulation Framework.” http://www.
omnetpp.org/, 2003. [En lı́nea; acceso el 27-Mayo-2011].
103
B IBLIOGRAF ÍA
[11] I. O. Technologies, “Network Modeling — Network Simulation.” http://www.opnet.
com/solutions/network_rd/modeler.html, 2007. [En lı́nea; acceso el 27-Mayo2011].
[12] T. L. Faubel, A. F. Zaragoza, J. M. Dı́az, O. Ferrer, and F. A. Candelas, “KivaNS.”
http://www.aurova.ua.es/kiva/, 2009. [En lı́nea; acceso el 18-Mayo-2011].
[13] T. University of Western Australia, “The cnet network simulator.” http://www.csse.
uwa.edu.au/cnet/, 2003. [En lı́nea; acceso el 18-Mayo-2011].
[14] D. Bertsekas, R. Gallager, P. Humblet, and M. I. of Technology. Center for Advanced
Engineering Study, Data networks. Prentice-hall New York, 1987. ISBN 0-1320-09161.
[15] W. Stallings, Data and computer communications. Pearson/Prentice Hall, 2009. ISBN
978-0-135-07139-7.
[16] M. ALZATE and A. Monroy, “Introducción al tráfico autosimilar en redes de comunicaciones,” Revista de Ingenierı́a Universidad Distrital, 2001. ISSN 0123-921X.
[17] P. P. de Pesteny, “The Hurst Exponent and Technical Analysis.” http://www.
optimaltrader.net/hurst_exponent.htm, 2008. [En lı́nea; acceso el 5-Julio-2011].
[18] U.
de
Barcelona,
“La
distribución
Gamma.”
http://www.ub.edu/stat/
GrupsInnovacio/Statmedia/demo/Temas/Capitulo4/B0C4m1t7.htm, 2009.
[En
lı́nea; acceso el 5-Julio-2011].
[19] U. de Valencia, “DISTRIBUCION BINOMIAL NEGATIVA.” http://www.uv.es/
ceaces/base/modelos%20de%20probabilidad/binegativa.htm, 2009. [En lı́nea; acceso el 5-Julio-2011].
[20] Zuse-Institute Berlin, “SNDlib.” http://sndlib.zib.de/home.action, 2006.
[En
lı́nea; acceso el 31-Mayo-2011].
[21] J. Study, “Ubuntu 8.04 Study Notes (4)-NS2 installation.” http://hi.baidu.com/
jerry_916/blog/item/e0e7085516213d51d009065b.html, 2009. [En lı́nea; acceso
el 13-Junio-2011].
[22] F. M. Heart, “NS2 learning (1)-ns2.29 installation.” http://hi.baidu.com/dazzae/
blog/item/ffcfa4fac9ba2c15a9d31153.html, 2010. [En lı́nea; acceso el 13-Junio2011].
104
B IBLIOGRAF ÍA
[23] SNDlib,
“nobel-us.”
http://sndlib.zib.de/coredata.download.action?
objectName=nobel-us&format=xml&objectType=network, 2006.
[En lı́nea; ac-
ceso el 5-Julio-2011].
[24] SNDlib,
“nobel-eu.”
http://sndlib.zib.de/coredata.download.action?
objectName=nobel-eu&format=xml&objectType=network, 2006.
[En lı́nea; ac-
ceso el 5-Julio-2011].
[25] SNDlib, “polska.” http://sndlib.zib.de/coredata.download.action?objectName=
polska&format=xml&objectType=network, 2006. [En lı́nea; acceso el 5-Julio-2011].
[26] SNDlib,
“nobel-germany.”
http://sndlib.zib.de/coredata.download.action?
objectName=nobel-germany&format=xml&objectType=network, 2006.
[En lı́nea;
acceso el 5-Julio-2011].
105
Apéndice A
Presupuestos
En este capı́tulo se analizará el desarrollo de este proyecto en términos económicos.
A.1.
Tareas
En este apartado se muestra una estimación de la duración de las distintas tareas que
se han llevado a cabo para la realización del proyecto. Las tareas no se han realizado de
manera continua, ya que se ha intercalado el desarrollo del proyecto con estudios y becas.
En la tabla A.1 se resumen la tareas llevadas a cabo y la duración en horas estimadas
para su realización.
A.2.
Costes
Como se ha visto, la duración del proyecto ha sido de novecientas noventa horas, que
asumiendo ocho horas de trabajo al dı́a equivalen a unos 124 dı́as laborables, con lo que
podemos asumir que si el proyecto lo realizara una persona a tiempo completo se habrı́a
podido terminar aproximadamente en unos 6 meses.
A.2.1.
Personal
Para la realización del proyecto se ha necesitado cubrir las tareas que realizarı́an los
especialistas que se detallan en la tabla A.2, junto con el precio de la mano de obra por
107
A P ÉNDICE A. P RESUPUESTOS
Descripción
Investigación, documentación y análisis
Despliegue y configuración del entorno de trabajo
Diseño de la aplicación
Integración del módulo de OBS en NS-2
Desarrollo del parser
Desarrollo de la aplicación
Desarrollo de las gráficas con los resultados
Integración del sistema completo
Realización de pruebas
Redacción de la memoria
Número de horas estimado
60 horas
10 horas
30 horas
300 horas
50 horas
200 horas
100 horas
40 horas
50 horas
150 horas
Tabla A.1: Duración estimada de las tareas
hora. El jefe de proyecto será la tutor del mismo.
Cargo
Analista
Diseñador
Gestión de calidad y pruebas
Jefe de proyecto
Programador
Coste (por hora)
35,00C
40,00C
35,00C
45,00C
25,00C
Tabla A.2: Salarios de especialistas
Si se aplican estos costes al número de horas dedicado por cada especialista en
función de las fases de diseño y las tareas encomendadas, el resultado se puede ver en
la tabla A.3.
El coste del personal asciende a 28.850 C.
A.2.2.
Material
En este apartado se detalla el coste de los materiales empleados durante la realización
del proyecto. Estos costes se pueden dividir en equipo y licencias.
108
Actividad
Investigación, documentación y análisis
Despliegue y configuración del entorno de trabajo
Diseño de la aplicación
Integración del módulo de OBS
Desarrollo del parser
Desarrollo de la aplicación
Desarrollo de las gráficas
Integración
Pruebas
Redacción de la memoria
Horas totales
Costes
20
50
1.750 C
10
20
900C
Tabla A.3: Coste del personal
Analista
30
Jefe de proyecto
10
30
160
6.400 C
10
40
30
20
30
Diseñador
50
30
80
2.800C
Pruebas
60
680
17.000 C
300
40
160
70
20
Programador
20
10
Totales
60
10
30
300
50
200
100
40
50
150
990
28.850C
A.2. C OSTES
109
A P ÉNDICE A. P RESUPUESTOS
Equipo
El equipo utilizado consta de un ordenador personal con monitor de 20”, procesador
de dos núcleos y 4GB de memoria RAM. Valorado en 750 C todo el conjunto.
Licencias
En la tabla A.4 se analiza el coste de las licencias que se han necesitado en la elaboración del proyecto.
Concepto
Ubuntu Linux
Java
Netbeans IDE
Latex
Licencias
1
1
1
1
Total
Coste/licencia
0,00C
0,00C
0,00C
0,00C
Coste
0,00C
0,00C
0,00C
0,00C
0,00C
Tabla A.4: Coste de licencias
Es coste total en licencias es de 0,00 C.
A.2.3.
Costes indirectos
En la tabla A.5 se resumen el resto de costes, derivados del uso de instalaciones
durante los seis meses que duró el proyecto.
Concepto
Alquiler del local
Luz y agua
Servicio de limpieza
Teléfono fijo y conexión a internet
Total
Tabla A.5: Costes indirectos
110
Coste
1.800,00 C
420,00C
360,00C
120,00C
2.700,00 C
A.3. R ESUMEN
Los gastos ascienden a 2.700 C en este apartado.
A.3.
Resumen
Teniendo en cuenta todos los costes relatados anteriormente, el coste total necesario
para realizar el proyecto asciende a 32.300,00 C, tal y como se muestra en la tabla A.6.
Concepto
Mano de obra
Equipo
Licencias
Costes indirectos
Total
Cantidad
28.850,00C
750,00C
0,00C
2.700,00 C
32.300,00 C
Tabla A.6: Costes indirectos
Esta cantidad no tiene en cuenta ni el análisis del riesgo ni los impuestos.
111
A P ÉNDICE A. P RESUPUESTOS
A.3.1.
Totales
Finalmente, en la tabla A.7 se desglosa el balance final del coste del proyecto.
Concepto
Coste total
Riesgo (20 %)
Beneficio (20 %)
Total sin I.V.A.
I.V.A. (18 %)
Total
Cantidad
32.300,00C
6.460,00C
6.460,00C
45.220,00C
8.139,60C
53.359,60C
Tabla A.7: Presupuesto total
Teniendo en cuenta los costes desglosados en los apartados anteriores, el presupuesto total de este proyecto asciende a la cantidad de CINCUENTA Y TRES MIL TRESCIENTOS CINCUENTA Y NUEVE CON SESENTA euros.
112
Apéndice B
Manual de usuario
La aplicación pretende servir de ayuda a la hora de simular, comparar y estudiar los
resultados de diferentes topologı́as mediante la simulación en NS-2. Con ella, se puede
tomar como referencia una topologı́a SNDlib [20], y utilizando un simple fichero con el
esqueleto de la configuración de NS, simular tantas veces como se necesite para poder
sacar resultados estadı́sticos. Además, la propia aplicación ofrece al usuario la posibilidad
de analizar topologı́as en anillo, malla o estrella de prestaciones similares, utilizando los
mismos parámetros para cada una de ellas, y una vez terminada la simulación consultar
gráficas para ver el rendimiento de cada una de las mismas.
B.1.
Descripción
La aplicación se divide en varias pestañas:
Configuración: configuración de rutas y ficheros.
Opciones de simulación: opciones ha introducir en la simulación.
Esuqema de la Red: esquema dibujado de la red.
Demandas de tráfico: tabla con las demandas de tráfico.
Enlaces entre nodos: tabla con los enlaces entre nodos.
Gráficas de resultados: gráficas para poder analizar los resultados.
113
A P ÉNDICE B. M ANUAL DE USUARIO
Figura B.1: Pantalla de Configuración
B.1.1.
Pantalla Configuración
En esta pantalla, figura B.1, se configurará las rutas de los ficheros a utilizar y el número de simulaciones a realizar. Para saber el número de simulaciones a realizar hay que
tener en cuenta el funcionamiento interno de la aplicación. Se van a simular 4 topologı́as
diferentes, todas con el mismo tráfico, para poder compararlas eficientemente. Por cada
simulación que queramos hacer para sacar unos buenos datos estadı́sticos, se van a realizar 4 simulaciones, una por cada topologı́a, es decir, si queremos hacer 4 simulaciones,
en realidad, estaremos haciendo 16, 4 simulaciones por 4 topologı́as en cada simulación.
Archivo de topologı́a SNDlib: este fichero debe seguir una estructura en formato
XML determinada. En [20], se pueden encontrar varios ejemplos de redes reales
tales como la red de Atlanta, Francia, Alemania, Europa o EEUU y en el Apéndice F,
se puede ver más en detalle cómo es la estructura del fichero. Si se introduce un
fichero que no sigue este tipo de formato, no se realizará bien el parseo del mismo,
por lo que no se obtendrán los resultados requeridos. La aplicación no se encarga
de comprobar que el formato del fichero es correcto.
114
B.1. D ESCRIPCI ÓN
Archivo esqueleto de NS: en este fichero se configura toda la simulación del NS a
excepción de ciertos parámetros. Para poder realizar la configuración que quiere el
usuario, debe haber ciertos flags dentro del fichero que actuarán como marcadores
para que la aplicación sea capaz de generar el correcto fichero con la topologı́a,
una vez se ha detectado el flag, la lı́nea siguiente en el fichero final corresponderá a
la configuración del parámetro correspondiente. Estos flags son, por orden de aparición en el fichero:
• ##EDGE COUNT##: el número de nodos edge de la red. Su número será igual
al número de nodos parseados del fichero SNDlib.
• ##CORE COUNT##: el número de nodos core de la red. Igual que los nodos
edge, serán el mismo número que los nodos parseados, debido a que se ha
decidido que cada nodo parseado sea una pareja edge-core dentro de la red
OBS.
• ##DELAY##: el delay (retardo) de los enlaces. Este valor será el mismo tanto
entre un edge y su core, como entre cores.
• ##TOTAL CHANNELS##: el número total de canales por cada nodo, contando
con los canales de datos y con los canales de control.
• ##CONTROL CHANNELS##: el número de canales para el intercambio de mensajes de control en cada nodo.
• ##DATA CHANNELS##: el número de canales para el intercambio de datos en
cada nodo.
• ##TOPOLOGIA JERARQUICA##: la configuración para hacer efectivo el direccionamiento jerárquico.
• ##NODOS##: la declaración de los nodos. Primero se declaran los edge y después los core.
• ##ENLACES##: la declaración de los enlaces. Primero se declaran los enlaces
entre edge-core y después entre los core, siguiendo con la configuración de
los enlaces requerida por el usuario, ya sea la misma que está parseada u otra
diferente de las ofertadas.
• ##UDP SIZE##: tamaño del paquete de UDP.
• ##BATCHSIZE##: en caso de que estemos utilizando tráfico SelfSimilar, éste
será el tamaño de los paquetes.
115
A P ÉNDICE B. M ANUAL DE USUARIO
• ##CBR SIZE##: cuando se utilice el tráfico CBR, el tamaño de los paquetes
será el que se configure a continuación de este flag.
• ##EXPO SIZE##: cuando se seleccione el tráfico Exponential, este flag será el
predecesor del tamaño de los paquetes.
• ##DEMANDAS##: la declaración del tráfico a simular.
• ##TIEMPO SIMULACION##: el tiempo que se va a simular.
Carpeta de trabajo: en esta carpeta, elegida por el usuario, es donde se guardarán
todos los ficheros de la simulación (topologı́as, trazas y ficheros de NAM), los datos
analizados para realizar las gráficas y las gráficas exportadas a fichero de texto para
su posterior generación en otras plataformas si se desea.
Instalación de NS: esta carpeta es donde se encuentra la instalación de NS, se
pueden tener varias versiones del simulador instaladas, la versión que se utilizará es
la seleccionada en este campo. Aún ası́, se recomienda tener como instalación
predeterminada la utilizada por la aplicación.
Número de simulaciones: es el número de simulaciones que se van a realizar.
Como ya se ha comentado, el total de simulaciones será el número introducido por
el usuario por 4 topologı́as en cada una de esas simulaciones.
Tiempo de simulación actual: este campo no es editable por el usuario, en su
lugar, se muestra el tiempo que va a simular el NS. Para calcularlo, sı́mplemente
se añade un segundo al tiempo de finalización de la ráfaga de tráfico más tardı́a,
de ésta manera, nos aseguramos que todas los paquetes han llegado a su destino,
suponiendo que no se hayan tirado. Cada vez que se empieza una nueva tanda de
simulaciones el tiempo es diferente, lo que tiene su lógica, ya que las topologı́as de
una misma simulación tienen los mismos tiempos de ráfagas de tráfico.
Hay que señalar, que los campos para introducir los ficheros y carpetas requeridos
para la simulación, siendo la primera vez que se ejecuta la aplicación, aparecerán en
blanco, pero una vez se realice una simulación, las siguientes veces aparecerán los datos
de la última simulación. Esto es gracias a que cuando se pulsa el botón Simulación, se
crea un fichero oculto, llamado .lastConf, que se almacena en la misma ruta donde se
encuentra la aplicación.
Se procede a explicar los botones disponibles en esta pantalla:
116
B.1. D ESCRIPCI ÓN
Botones de Examinar y Guardar: evidentemente, estos botones abrirán un navegador de archivos para poder localizar y seleccionar los ficheros y carpetas que se
requieren para la simulación, explicados más arriba.
Parsear fichero SNDlib: con este botón se parsea el fichero XML con la declaración
de los nodos, los enlaces y las demandas de tráfico. Como ya se dijo, éste fichero
debe tener una estructura determinada para poder realizar bien el parseo. Hasta
que que se ha parseado el fichero, la aplicación no deja hacer nada más, ya que
antes de parsear no se tiene ningún dato de la red a simular. Una vez se tiene todo
el esquema de la red almacenado, se habilitan el resto de pestañas y el botón para
generar los ficheros para simular en el NS.
Generar topologı́a NS: pulsando este botón se generan todos los ficheros para
simular en NS. El lugar donde se crearán será la carpeta elegida como Carpeta
de trabajo. Los ficheros tendrán un formato como topologyX-Y.tcl, donde X
es el número de la simulación (empezando en 0) e Y es el número de la topologı́a
(0 para la original, 1 para el anillo, 2 para la malla y 3 para la estrella). Hay que
hacer una advertencia llegado este punto, se deben configurar todas las opciones
que se quieran aplicar a la simulación antes de generar los ficheros de NS, una
vez generados, si se cambia algún parámetro, se debe volver a generar los ficheros
(pulsar el botón) para que los cambios se apliquen. Es posible editar los ficheros
una vez creados, pero corre a cuenta del usuario, y lo más seguro es que los datos
de las gráficas a analizar no sean los deseados si las opciones en las simulaciones
no son las mismas. Aún ası́, no se puede cambiar el nombre del fichero ya que la
aplicación al ejecutar NS, llama a esos ficheros, con ese nombre. Cualquier otro
nombre hará que la ejecución no sea correcta.
Arrancar simulación: al pulsar este botón se arranca la simulación entera, es decir,
se simulará de manera continuada todos los ficheros, de todas las topologı́as, de
todas las tandas de simulación requeridas por el usuario. Hasta que no se termine
de simular todos esos ficheros, no se empezará a analizar los ficheros de trazas.
Mientras está simulando, podremos ver una ventana similar a la figura B.2.
Una vez terminadas todas las simulaciones, la aplicación comenzará automáticamente a analizar los diferentes ficheros de trazas generados por NS. Mientras
está analizando, se podrá observar una ventana similar a la figura B.3.
La primera barra de progreso hace referencia a todos los ficheros que se van a
117
A P ÉNDICE B. M ANUAL DE USUARIO
Figura B.2: Simulación en curso
Figura B.3: Analizando y generando gráficas
analizar, es decir, que si hemos decidido hacer 4 simulaciones, el 100 % de los
ficheros a analizar será 16, 4 simulaciones por 4 topologı́as. La segunda barra de
progreso se refiere a cada fichero por separado, contando el número de trazas que
se han analizado respecto del total en el fichero que estamos analizando en ese
momento. Mientras se están analizando los ficheros de trazas, se crea una carpeta
en la Carpeta de trabajo llamada ”datos”donde se almacenan los datos analizados
de cada gráfica para cada una de las simulaciones y cada una de las topologı́as.
Hay que apuntar que los datos de las gráficas se crean usando la media de los
resultados de todas las simulaciones, por ejemplo, se hacen 4 simulaciones, y en
la gráfica del Porcentaje de tráfico inyectado en la red tenemos que para el nodo
1, se han obtenido los resultados 20 %, 15 %, 30 %, 17 %; el dato mostrado en la
tabla será 20,5 %, y se tendrá una desviación tı́pica representada al mismo tiempo.
De esta manera, si se observa en una desviación tı́pica muy grande, se puede
consultar los datos sacados para ver qué simulación es la que ha provocado esos
puntos atı́picos que han hecho que la media se desvı́e tanto.
Hasta que el análisis no termine, no se habilitará la pestaña de las gráficas, al igual
que el resto de botones para realizar más simulaciones. Una vez las gráficas se
hayan mostrado, la aplicación cambiará automáticamente de pestaña.
118
B.1. D ESCRIPCI ÓN
Figura B.4: Topologı́a en anillo recién abierta
Además, como ya se señaló, cuando se pulsa este botón, se genera el fichero
.lastConf, que servirá para rellenar los campos donde se introducen los ficheros
y carpetas la próxima vez que se ejecute la aplicación.
Ejecutar NAM: una vez terminado todo el proceso de simulación y análisis de trazas, se habilitará este botón para ejecutar el NAM y poder visualizar la simulación
que se ha realizado. La manera de cargarlo es abriendo el fichero .nam y darle al ‘‘PLAY’’. Podemos reestructurar el dibujo de la red presionando el botón
‘‘RE-LAYOUT’’.
Por ejemplo, para la simulación 0 de la topologı́a en anillo, se abrirá el fichero
topology0-1.nam para obtener una ventana como la figura B.4.
Pulsando el botón ‘‘RE-LAYOUT’’, las veces necesarias, se puede reestructurar
como se muestra en las figuras B.5 y B.6, para una mejor visualización.
B.1.2.
Pantalla Opciones de Simulación
En esta pantalla, figura B.7, se pueden configurar algunos de los parámetros de las
simulaciones.
Hay disponibles varios cuadros para rellenar y configurar. Algunos son bastante intui-
119
A P ÉNDICE B. M ANUAL DE USUARIO
Figura B.5: Topologı́a en anillo
Figura B.6: Topologı́a en anillo estructurada
120
B.1. D ESCRIPCI ÓN
Figura B.7: Pantalla Opciones Simulación
tivos, pero otros no lo son tanto. Se procede a explicarlos un poco más detalladamente.
Tipo de tráfico: define el tipo de tráfico que se va a utilizar, dándo a elegir entre
SelfSimilar, CBR o Exponential. Según el tipo de tráfico elegido, la declaración de
dicho tráfico en el fichero TCL será de una manera o de otra.
Opciones Generales: se pueden configurar varios parámetros de la simulación
que no se ven influidos por el tipo de tráfico que hayamos elegido. Básicamente son
parámetros de configuración de los nodos y enlaces. Por defecto ya tienen unos
valores, ası́ el usuario no tiene que preocuparse de rellenarlos, y en caso que se
desee, basta con modificar éstos datos. Hay que tener en cuenta que los datos
serán iguales para todos los nodos y enlaces.
• Retardo enlaces: es el retardo de los enlaces. Por defecto está configurado
a 1ms.
• Canales datos: son los canales de datos de los que disponen los nodos.
121
A P ÉNDICE B. M ANUAL DE USUARIO
• Canales control: son los canales de control que disponen los nodos. Habitualmente, el número de canales de control es menor que el de datos.
• Tamaño UDP: éste es el único parámetro de tráfico que es común a los tres
tipos. Esto se debe a que todos los tráficos posibles de la simulación funcionan
sobre el protocolo UDP debido a su sencillez.
Opciones SelfSimilar: en este campo se configura el tamaño de los paquetes del
tráfico SelfSimilar. Sólo se toma en cuenta cuando se selecciona el tráfico SelfSimilar.
Opciones CBR: se configura el tamaño de los paquetes del tráfico CBR, siempre y
cuando se haya seleccionado el tráfico CBR.
Opciones Exponential: cuando se selecciona el tráfico Exponential, se utiliza para
configurar el tamaño de los paquetes de dicho tráfico.
Tiempo de Simulación: esta opción se utiliza para hacer simulaciones más cortas
y rápidas. Se puede elegir “truncar” el tiempo de simulación a un tiempo elegido o se
puede dejar que simule en su totalidad. Si se elige un tiempo menor del calculado,
el tráfico que deberı́a enviarse a partir de ese tiempo no será simulado.
Enlaces: se puede decir a la aplicación que ponga todos los enlaces iguales,o que
deje los que haya recolectado del fichero. Como los enlaces originales son válidos
sólo para la topologı́a original, se ha decidido calcular los enlaces equivalentes para
el resto de topologı́as.
• Anillo: para el anillo, se ha sumado todas las capacidades de los nodos implicados en el nuevo enlace y se ha cogido la menor de dichas sumas para
intentar emular las limitaciones de los nodos. Se puede realizar de ésta manera ya que los enlaces son Dúplex, en caso contrario, habrı́a que calcular por
separado los enlaces como origen y como destino para cada nodo y después
escoger el menor.
• Malla: para la malla se ha realizado el mismo proceso, pero en este caso, no
se ha utilizado la suma de las capacidades de cada par de nodos del nuevo
enlace, si no que se ha escogido la menor media de esas capacidades. Es
decir que primero se han sumado todas las capacidades del nodo y se han
dividido por el número de enlaces que tiene el nodo en la topologı́a original.
122
B.1. D ESCRIPCI ÓN
• Estrella: para la estrella, primero de todo se ha añadido un nodo central,
a modo de concentrador de tráfico. Se decidió hacerlo de ésta manera para
evitar que se eligiese un nodo al azar y seleccionar uno malo para realizar
éstas funciones. Los enlaces de ésta topologı́a son la suma de los enlaces de
la topologı́a original. De esta forma, intentamos plasmar en la nueva topologı́a
toda la capacidad del que disponı́an los nodos en la topologı́a original.
Demandas: en este cuadro se puede seleccionar entre utilizar las demandas cogidas del fichero SNDlib o poner la misma cantidad de demanda de tráfico para todas
Si se quiere modificar una sóla, debemos ir a la pestaña correspondiente de las
demandas.
Prob. Bloqueo: se configurar la probabilidad de bloqueo en los enlaces entre un
1
para evitar bloqueo, pero se puede
edge y su core. Inicialmente se selecciona N−1
ajustar al porcentaje deseado.
B.1.3.
Pantalla Esquema de la Red
En esta pantalla se muestra un dibujo esquemático de la red, donde se dibujan los
nodos y los enlaces parseados. Con esta pantalla se pretende ofrecer una ayuda visual
del esquema de la red, pudiendo ver a simple vista como se distribuyen geográficamente
los nodos y los enlaces que hay entre ellos.
Por ejemplo, una vez cogida la red de Atlanta, la pantalla del Esquema de la Red
mostrará la figura B.8.
B.1.4.
Pantalla Demandas de Tráfico
En esta pantalla, figura B.9, se muestra una tabla con todas las demandas de tráfico
entre los nodos.
El formato de la tabla es el siguiente:
ID: es un identificador único para cada demanda.
Source: es el ID del nodo que manda el tráfico.
123
A P ÉNDICE B. M ANUAL DE USUARIO
Figura B.8: Pantalla Esquema de la Red
Figura B.9: Pantalla Demandas de Tráfico
124
B.1. D ESCRIPCI ÓN
Figura B.10: Modificación de la primera demanda de tráfico
Target: es el ID del nodo que recibe el tráfico.
Value(Mb): es la cantidad de tráfico, en media, medido en Mb, que se mandará desde el origen al destino durante la simulación.
Al mismo tiempo, se ofrece al usuario la posibilidad de modificar cada una de estas
demandas de tráfico. Para modificar una, tan solo hay que seleccionarla, introducir en el
campo de texto el nuevo valor de la demanda, medido en Mb, y pulsar el botón Modificar.
Por defecto, aunque no se vé reflejado, está seleccionada la primera demanda de la lista,
ası́ que si nada más abrir la pestaña se modifica una demanda sin haber seleccionado
nada, se modificará la primera. En la figura B.10 se ha modificado la primera demanda
para que ahora sea de 1000Mb.
B.1.5.
Pantalla de Enlaces entre nodos
En esta pantalla, mostrada en la figura B.11, se muestra una tabla con los enlaces
entre los nodos.
125
A P ÉNDICE B. M ANUAL DE USUARIO
Figura B.11: Pantalla de Enlaces entre nodos
La tabla tiene el formato siguiente:
ID: es un identificador del enclace, único para cada uno.
Source: un extemo del enlace.
Target: el otro estremo del enlace.
Capacity(Mb/s): la capacidad del enlace medida en Mb/s
En este caso, los enlaces son Dúplex, por lo que en realidad no hay un nodo origen
y otro destino para el enlace, los dos extremos actúan como origen y destino al mismo
tiempo, depende de la demanda de tráfico.
Gracias al desplegable, se puede seleccionar cada una de las topologı́as para ver sus
enlaces. Además, se ofrece al usuario la posibilidad de modificar los enlaces. Pulsando
cada una de las opciones, se podrá añadir capacidad a un enlace seleccionado, a todos
los enlaces o a los que estén con capacidad 0Mb/s.
126
B.1. D ESCRIPCI ÓN
Figura B.12: Diálogo para añadir capacidad
Seleccionado: marcando esta opción y pulsando el botón Añadir capacidad, se
mostrará un diálogo como el de la figura B.12.
En él se muestran los datos del enlace seleccionado y más abajo se le puede añadir
capacidad. El propio formato SNDlib da la opción de añadirle módulos de capacidad al enlace, por lo que se reaprovecha esa capacidad. Para ello, se muestra un
desplegable con los módulos que se pueden añadir, tan sólo se debe seleccionar
qué tipo queremos añadir, seleccionar cuántos módulos se quieren añadir y pulsar el botón Añadir. Enseguida se modificarán los datos del enlace en ese mismo
diálogo. También se le puede quitar módulos a la capacidad total, tan sólo es necesario decirle que el número de módulos a añadir es negativo, esto es, poniendo
un número negativo en el contador. Ya sólo resta pulsar Aceptar para volver a la
ventana con los enlaces, y el modificado aparecerá reflejado en la tabla.
Todos: si se selecciona esta opción y se pulsa Añadir capacidad, se añadirá un
módulo, del valor más bajo que nos ofrezca SNDlib, a cada uno de los enlaces.
Actuales a 0: si se marca esta opción y se pulsa Añadir capacidad, se añadirá un
módulo, del valor más bajo ofrecido por SNDlib, a cada enlace que actualmente
tenga una capacidad de 0Mb/s.
Como bien se muestra en la pestaña, los enlaces con capacidad 0Mb/s no se introducen en el fichero TCL, esto se debe a que NS no calcula rutas en función de la capacidad
del enlace, tan sólo en función del número de saltos. De esta manera, si en el fichero TCL
se introduce un enlace con capacidad 0Mb/s, NS intentará mandar tráfico por ese enlace,
y no por ningún otro.
127
A P ÉNDICE B. M ANUAL DE USUARIO
Hay que señalar que añadir capacidad a un enlace original, no hace que se modifiquen
los enlaces del resto de topologı́as, como se explicaba en la descripción de la pantalla de
Opciones de la Simulación.
B.1.6.
Pantalla de Gráficas de resultados
En esta pantalla se muestran los resultados, obtenidos al realizar la simulación, en
forma de gráficas. En dicha pantalla, hay disponible dos desplegables, en los cuales se
puede seleccionar, tanto la topologı́a de la que se quiere ver las gráficas, como un grupo
de gráficas para analizar lo ocurrido durante la simulación.
Para un mejor estudio de dichas gráficas, se ofrece la posibilidad de ampliar las mismas. Para ello, basta con situar el cursor dentro de una de ellas, hacer click izquierdo
en el ratón y arrastrar el cursor para seleccionar la zona a ampliar. Miestra se arrastra
el cursor, se sombreará dicha zona. También se pueden guardar las gráficas a un fichero
.png gracias a la librerı́a utilizada. Tan solo es necesario pulsar el botón derecho del ratón
sobre la gráfica para ver diferentes opciones.
Las gráficas están divididas en tres grupos:
Gráficas de tráfico: muestra una pantalla como de la de la figura B.13. En ella,
se encuentran cuatro gráficas analizando el porcentaje de tráfico cursado por los
nodos.
• Porcentaje de paquetes cursados por nodo: muestra el porcentaje de
paquetes que tiene que cursar cada nodo. Se muestran dos barras para cada
conjunto edge-core, una que muestra el porcentaje de los paquetes procesados respecto del total que circula por la red, y la otra el porcentaje de paquetes
tirados respecto del total que circula por la red. Hay que tener en cuenta que
el total de paquetes que circulan por la red es la suma de todos los paquetes
que se reciben en algún nodo, incluso si ya se ha contabilizado en otro nodo
diferente.
• Porcentaje de tráfico cursado por nodo respecto al enviado: se
muestra el porcentaje de tráfico cursado por cada nodo respecto del total enviado. El tráfico total enviado es la suma de tráfico que envı́an los edge, tan
sólo se contabiliza una vez, en el momento en que se inyecta en la red.
128
B.1. D ESCRIPCI ÓN
Figura B.13: Gráficas de Tráfico
• Porcentaje de tráfico cursado por cada nodo: muestra el porcentaje
de tráfico cursado por cada nodo respecto del total. Al igual que con la primera
gráfica, el tráfico total es la suma de todos los paquetes que circulan por la red,
contabilizándolos cada vez que son procesados por un nodo.
• Porcentaje de tráfico enviado por cada nodo: ésta última gráfica muestra el porcentaje de tráfico que inyecta cada nodo en la red, respecto al total
inyectado. Como ya dijimos en la segunda gráfica, el tráfico total se calcula
sumando el tráfico una sóla vez, cuando se inyecta en la red.
Como se puede ver en éstas gráficas, la desviación tı́pica que tienen las medias
puede llegar a ser muy grande, esto es debido a que la cantidad de tráfico que
circula por la red varı́a con cada simulación, ya que las demandas de tráfico son
aleatorias y un nodo no siempre envı́a tráfico la misma cantidad de tiempo. Por
eso se incluye la opción de realizar varias simulaciones, ya que cuantas más simulaciones, la media de tráfico enviado será más parecida a la que se tiene en la
tabla de las demandas de tráfico. Como se explicó, los datos de cada simulación
por separado se almacenan en la carpeta datos, ubicada dentro de la carpeta de
129
A P ÉNDICE B. M ANUAL DE USUARIO
Figura B.14: Gráficas de Colas
trabajo.
Gráficas de Colas: muestra una pantalla como la figura B.14. En se pueden analizar las colas de tráfico de los nodos.
• Tiempo medio de espera en cola: se representa el tiempo medio de espera en cola de un paquete. En este ejemplo, los paquetes, en media, esperan
0.5µs, con una desviación tı́pica de ±0.5µs, lo que nos da a entender que los
valores pueden estar entre 1µs y 0µs, este “error” se debe a que la precisión
del fichero de trazas de NS no va más allá de un 1µs.
• Número de paquetes en cola cada 10ms: muestra un número de series,
correspondientes a cada uno de los nodos, en el que se representa la cantidad
de paquetes en cola de los nodos, por cada 10ms.
Gráficas de Retardo: en esta pantalla, figura B.15, se muestran las estadı́sticas del
retardo extremo a extremo.
En ella se puede analizar el retardo extremo a extremo entre los nodos. Éstas gráficas son algo diferentes, ya que no son gráficas de barras o de series. En cambio,
130
B.1. D ESCRIPCI ÓN
Figura B.15: Gráficas de Retardo
son gráficas con códigos de colores, más concretamente, con escala de grises. Para poder analizarla, se debe mirar las ordenadas y las abscisas de la gráfica y el
color que corresponda a ese punto, consultarlo en la tabla adjunta para saber su
valor. La primera consecuencia de esta tabla es que no podemos encontrar un valor
concreto, si no que estaremos estimando el valor observando la tabla.
• Retardo medio entre nodos[ms](media): muestra la media del retardo
entre nodos medido en ms. La escala de ésta tabla varı́a según la media máxima calculada.
• Retardo medio entre nodos[µs](desviación): muestra la desviación tı́pica de la media calculada. Se mide en µs debido a que su precisión es muy alta
y al medirla en ms se obtenı́an todos los valores negro, es decir muy próximos
a 0. Al igual que la gráfica anterior, la escala de ésta gráfica varı́a según la
desviación tı́pica máxima calculada.
• Retardo medio entre nodos (nodos intermedios): muestra la cantidad
de nodos intermedios que tiene que recorrer un paquete hasta llegar a su destino. Ésta tabla es útil, ya que si encontramos una media muy alta, se puede
131
A P ÉNDICE B. M ANUAL DE USUARIO
mirar y si el número de nodos intermedios es alto, tendrı́a lógica que el retardo
entre extremos sea alto. La escala de ésta gráfica es diferente de las anteriores, ya que el máximo de ésta es el número de nodos. En el peor de los casos,
un paquete tiene que pasar por todos los nodos para llegar a su destino.
Además de mostrar las gráficas, también se dispone del botón Exportar datos de
las gráficas, que como su nombre indica, realiza la función de exportar los datos de
las gráficas a ficheros de texto, almacenados en la carpeta graficas, dentro de nuestra carpeta de tranajo. De ésta manera se pueden exportar a otras plataformas capaces
de representar gráficas, siempre y cuando se procesen los ficheros. El nombre de los ficheros será el de las iniciales de la gráfica, seguido por un número de 0 a 3 que indica
la topologı́a. Por ejemplo, el fichero PPPpN-0, son los datos de la gráfica de Porcentaje
de Paquetes Procesados por Nodo(PPPpN) de la topolog´ia original(0). El formato de los
ficheros varı́a según la gráfica exportada.
Común a todos: todos los ficheros comienza con el nombre de la gráfica, la topologı́a que representan y la fecha en la que se han exportado los datos. La fecha
está en formato AAAAMMDD HHMMSS.
Gráfica porcentaje paquetes procesados 0-20110517 161524
Gráfica de Porcenataje de Paquetes Procesados por Nodo(PPPpN): tiene el
siguiente formato.
N1 12.124559116713902 3.2297212880249955 0.7798467029437938 0.6608122890841635
Cada lı́nea son los datos de un nodo. La primera columna es el nombre del nodo, la
segunda, la media de los paquetes procesados, la tercera, la desviación tı́pica de
los paquetes procesados, la cuarta, la media de los paquetes tirados y la quinta, la
desviación de los paquetes tirados.
Gráfica de Porcentaje de Tráfico Ponderado por Nodo(PTPpN): sigue el formato
siguiente.
N1 64.29999313160198 17.996817689043237
Al igual que la gráfica anterior, cada lı́nea representa los datos de un nodo. La primera columna es el nombre del nodo, la segunda, es la media del tráfico ponderado
y la tercera, la desviación tı́pica.
Gráfica de Porcentaje de Tráfico por Nodo(PTpN): tiene el siguiente formato.
132
B.1. D ESCRIPCI ÓN
N1 12.587021390649825 3.5111132455082426
El formato es igual que la anterior, ya que ambas dos son gráficas de barras. La
primera columna es el nombre del nodo, la segunda, es la media del tráfico y la
tercera, la desviación tı́pica.
Gráfica de Porcentaje de Tráfico Enviado por Nodo(PTEpN):
N1 14.533532525449436 10.56430832790935
Igual que todas las gráficas de barras, cada lı́nea representa los datos de un nodo.
La primera columna es el nombre del nodo, la segunda, la media del tráfico enviado
y la tercera, la desviación tı́pica.
Gráfica de Tiempo de Espera en Cola(TEC):
N1 0.5000000000000977 0.5000000000001109
De nuevo, al tratarse de una gráfica de barras, tiene el mismo formato que las anteriores.
Gráfica de Número de Paquetes en Cola cada 10ms(NPCms):
0.487 1.5 1.6583123951777 ...0.25 0.4330127018922193
Cada lı́nea de este fichero representa un slot de tiempo, en nuestro caso, 10ms. La
primera columna es el slot de tiempo a representar, y las sucesivas son los valores
para cada nodo. Las columnas pares representa la media de paquetes en cola en
ese instante de tiempo para cada nodo, y las columnas impares, exceptuando la
primera, son las deviaciones tı́picas de las medias. Podemos decir que a partir de
la primera, cada par de columnas representa la información de un nodo.
Gráfica de Medias de Retardo entre Nodos(MRN): este fichero representa una
tabla. Un ejemplo de una fila es.
1.0 0.0 4.002069767955361 ...4.002080835368733 4.0020769886363645
En este caso, la primera columna representa el número del nodo, no su nombre, y
las columnas sucesivas son el retardo medio entre ese nodo y los demás. Hay que
recordar que los datos se miden en ms.
Gráfica de Desviación de Retardo entre Nodos(DRN): al igual que el anterior,
este fichero representa una tabla.
1.0 0.0 2.0839079991625784 ...2.097003516166951 2.091093247586895
133
A P ÉNDICE B. M ANUAL DE USUARIO
El formato es igual que el anterior, pero en este caso se tienen las desviaciones
tı́picas, medidas en µs.
Gráfica de Nodos Intermedios de Retardo entre Nodos(NIRN): al ser el mismo
tipo de gráfica que las anteriores, este fichero representa la tabla.
1.0 0.0 3.0 3.0 3.0 4.0 2.0 2.0 2.0 3.0 3.0 4.0 4.0 3.0 3.0 3.0
De nuevo, el formato es igual que los anteriores, la primera columna es el número
de nodo, y las sucesivas son los nodos intermedios entre éste y los demás.
134
Apéndice C
Manual de instalación
Para poder ejecutar la aplicación correctamente, se debe instalar el simulador NS,
más concretamente la versión 2.28 y añadir el módulo de OBS modificado para poder
realizar las simulaciones correctamente. Existe una versión del simulador con el módulo
ya instalado, listo para compilar en nuestro propio sistema [8], previa modificación de los
ficheros a compilar. Además, se recomienda tener instalado NAM (Network Animator) en
su versión 1.15 ya que es una ayuda visual a la simulación.
C.1.
Instalación NS
El sistema en el que se han instalado todos los requisitos para poder usar la aplicación
es una distribución Linux Ubuntu 10.10. Para poder instalar correctamente el simulador
NS en el sistema, se deben seguir una serie de pasos:
1. Instalar las librerı́as de tcl y tk: tcl, tcl-dev, tk, tk-dev. Para ello, basta con
ejecutar:
sudo apt-get install tcl tcl-dev tk tk-dev
2. Instalar gcc y g++. Se recomienda utilizar la versión 4.4 de ambas librerı́as, ya que
es la versión probada.
sudo apt-get install gcc g++
3. Se deben añadir dos repositorios nuevos para instalar otcl y tclcl. Dichos repositorios son:
deb http://bode.cs.uni-magdeburg.de/ aherms/debian sid ns2
135
A P ÉNDICE C. M ANUAL DE INSTALACI ÓN
deb-src http://bode.cs.uni-magdeburg.de/ aherms/debian sid ns2
4. Instalar los paquetes mitotocl, mitotcl-dev, tclcl, tclcl-dev.
sudo apt-get install mitotcl mitotcl-dev tclcl tclcl-dev
5. Debido a que el configure del paquete de NS busca el tcl en un lugar equivocado, se puede solucionar de dos maneras:
a) Cuando se ejecute .configure, decirle al script dónde se encuentra la instalación de tcl con la opción --with-tcl=path.
b) Hacer un enlace simbólico para que el script lo encuentre directamente:
ln -s /usr/share/tcltk/tcl8.4 /usr/lib/tcl8.4
6. Al igual que con la instalación de tcl, pasa lo mismo con la instalación de tk, por lo
que las maneras de solventar el problema son las mismas, tan sólo se deben usar
las rutas de tk o la opción de tk:
a) Opción --with-tk=path a la hora de ejecutar el .configure
b) Enlace simbólico a la ruta de instalación de tk:
ln -s /usr/share/tcltk/tk8.4 /usr/lib/tk8.4
7. Para que la compilación del módulo sea correcta, se deben efectuar ciertos cambios
en los ficheros de NS [21] [22], detallados en el Apéndice D.
8. Ejecutar el configure para que genere el fichero Makefile para el sistema:
./configure
En caso de que no encuentea la instalación de otcl o tclcl, se pueden poner
opciones similares a las anteriores para configurar la ruta de éstos paquetes.
9. Ejecutar el make para compilar NS:
./make
10. Instalar los binarios para que sean ejecutables desde cualquier path:
./sudo make install
Este paso se debe hacer con permisos de root, ya que se escribe en el directorio
/usr/bin, del cual es propietario el usuario root y nadie tiene permisos de escritura
excepto él.
136
C.2. I NSTALACI ÓN NAM
Figura C.1: NAM
C.2.
Instalación NAM
Para instalar NAM, es tan sencillo como ejecutar el siguiente comando:
sudo apt-get install nam
Debido a que se encuentra en los repositorios de ubuntu, no se deberı́a tener ningún
problema para instalarlo en el sistema. No es necesario ningún tipo de configuración previa y para comprobar que funciona correctamente, basta con ejecutar nam en un terminal,
lo que deberı́a arrancar el programa y mostrar una ventana igual que la figura C.1.
137
A P ÉNDICE C. M ANUAL DE INSTALACI ÓN
138
Apéndice D
Cambios en ficheros para la
compilación de NS
En este apéndice se detallan los cambios necesarios que hay que realizar en ciertos
ficheros para la compilación e integración del módulo de OBS con la instalación de NS-2.
A partir de este momento, cada vez que se haga referencia a la ruta de un fichero,
será la ruta relativa dentro de la ruta absoluta donde se encuentra la instalación de NS.
Cuando se señale que hay que añadir una lı́nea a un fichero, la lı́nea en concreto será la
resaltada en negrita, las demás son la referencia para saber dónde se debe añadir.
queue/cbq.cc
Añadir la lı́nea:
#define POWEROFTWO 16
class CBQueue;
class CBQClass : public Connector {
tora/tora neighbor.h
Añadir lı́nea:
#define tora neighbor h
class toraAgent;
139
A P ÉNDICE D. C AMBIOS EN FICHEROS PARA LA COMPILACI ÓN DE NS
enum LinkStatus {
dsr/dsragent.cc
Añadir las lı́neas:
#ifdef NEW SALVAGE LOGIC
void XmitFlowFailureCallback(Packet *pkt, void *data);
void XmitFailureCallback(Packet *pkt, void *data);
diffusion/diffusion.cc
Añadir:
#include ‘‘routing table.h’’
void XmitFailedCallback(Packet *pkt, void *data);
diffusion/omni mcast.cc
Añadir:
#include ‘‘god.h’’
void OmniMcastXmitFailedCallback(Packet *pkt, void *data);
diffusion3/filter core/filter core.hh
Añadir:
class NeighborEntry;
class DiffRoutingAgent;
queue/red.cc
En la lı́nea 872 cambiar:
140
char wrk[500], *p;
por:
char wrk[500];
const char *p;
queue/rio.cc
En la lı́nea 563 cambiar:
char wrk[500], *p;
por:
char wrk[500];
const char *p;
queue/pi.cc
En la lı́nea 314 cambiar:
char wrk[500], *p;
por:
char wrk[500];
const char *p;
queue/vq.cc
En la lı́nea 331 cambiar:
char wrk[500], *p;
por:
char wrk[500];
const char *p;
queue/rem.cc
En la lı́nea 334 cambiar:
141
A P ÉNDICE D. C AMBIOS EN FICHEROS PARA LA COMPILACI ÓN DE NS
char wrk[500], *p;
por:
char wrk[500];
const char *p;
queue/gk.cc
En la lı́nea 205 cambiar:
char wrk[500], *p;
por:
char wrk[500];
const char *p;
obs-0.9a/cpp/integrated agent.h
En la lı́nea 92 cambiar:
virtual void BurstTimer::expire(Event *e);
por:
virtual void expire(Event *e);
sctp/sctp.h
En la lı́nea 630 cambiar:
void SctpAgent::DumpSendBuffer();
por:
void DumpSendBuffer();
mobile/god.h
En las lı́neas 88, 93, 98, 101, eliminar las calificaciones extras. Ejemplo, en la lı́nea 88
cambiar:
142
inline void vector::operator=(const vector a)
por:
inline void operator=(const vector a)
tcp/tcp-sack-rh.cc
En la lı́nea 68 cambiar:
virtual void SackRHTcpAgent::newack(Packet* pkt);
por:
virtual void newack(Packet* pkt);
pgm/pgm-agent.cc
En la lı́nea 278 cambiar:
void PgmAgent::trace event(char *evType, double evTime);
por:
void trace event(char *evType, double evTime);
pgm/pgm-sender.cc
En la lı́nea 160 cambiar:
void PgmSender::trace event(char *evType, double evTime);
por:
void trace event(char *evType, double evTime);
pgm/pgm-receiver.cc
En la lı́nea 157 cambiar:
void PgmReceiver::trace event(char *evType, double evTime);
por:
void trace event(char *evType, double evTime);
143
A P ÉNDICE D. C AMBIOS EN FICHEROS PARA LA COMPILACI ÓN DE NS
144
Apéndice E
Clases
En este Apéndice se describe de manera breve la función de cada una de las clases
que intervienen en la aplicación. También se muestra el diagrama relacional de clases
E.1.
Clases
Se pasa a enumerar, brevemente, las clases utilizadas por la aplicación, ası́ como una
leve descripción de la funcionalidad de cada una:
Demand.java
Es la representación en Java de las demandas de tráfico cogidas del fichero XML.
Tiene atributos para representar cada uno de los campos leı́dos, y poder acceder a
ellos de manera sencilla, algunos de ellos son, la cantidad de tráfico a enviar o el
origen y destino de ese tráfico.
EsperaGrafica.java
Esta clase se encarga de arrancar un hilo, diferente de la ejecución principal, que
es el que va leyendo los ficheros de trazas y sacando datos para posteriormente
acceder a los métodos para crear las gráficas.
EsperaSimulacion.java
Se encarga de la ejecución del hilo que ejecuta las simulaciones en ns. Cada vez
que arranca una simulación, espera a que termine para arrancar la siguiente, de
esta manera, aunque se tarda más tiempo, no saturamos el procesador del sistema.
145
A P ÉNDICE E. C LASES
FiltroTCL.java
Filtro para que el explorador de archivos sólo muestre los ficheros con extensión
.tcl
FiltroXML.java
Filtro para que el explorador de archivos sólo muestre los ficheros con extensión
.xml
Interfaz.java
Esta clase es la encargada de generar todo el interfaz gráfico, ası́ como implementar
la funcionalidad de todos los botones y menús disponibles en la aplicación. También
se encarga de tener instancias del resto de clases importantes para poder acceder
a ellas siguiendo la filosofı́a de orientación a objetos. Otra funcionalidad es la de
gestionar las ventanas adicionales de la aplicación, como los exploradores de archivos o las ventanas de espera mientras se está simulando o analizando los datos.
En resumen, es la clase principal de nuestra aplicación, el centro neurálgico.
Link.java
Representación en Java de los enlaces. Los atributos son los parámetros del enlace,
tales como la capacidad del enlace o los nodos extremos.
MiTableModel.java
Es el modelo en el que se basan las tablas que muestra la aplicación. La diferencia
con las tablas por defecto es que en este modelo se pueden seleccionar filas, cosa
que en el otro no.
NS.java
Es la encargada de generar el fichero de simulación de ns a partir de los datos obtenidos del XML, apoyándose en el fichero esqueleto. Se encarga de leer el fichero
esqueleto y cuando encuentra las marcas correspondientes va introduciendo los
elementos necesarios para la simulación, tales como los nodos, los enlaces y las
demandas de tráfico. También se encarga de la generación de los tiempos en los
que el tráfico se está enviando. Para ello, se apoya en el paquete Commons-Math,
descrito en el Capı́tulo 3, que es capaz de generar números aleatorios siguiendo
una distribución exponencial. Es obvio que los tiempos de envı́o de tráfico serán
iguales entre las topologı́as de la misma simulación, es decir, si vamos a hacer 5
simulaciones para tener unos datos estadı́sticos aceptables, y tenemos cuatro topologı́as a estudiar, los tiempos de tráfico de la topologı́a en anillo de la simulación
146
E.1. C LASES
1 serán los mismos que los de la topologı́a en malla o en estrella, pero diferentes
de las otras simulaciones.
Node.java
La representación en Java de los nodos de la red corre a cargo de esta red. Cada
objeto de esta clase corresponde a un nodo cogido del fichero XML. Sus atributos
son las coordenadas geográficas del nodo y su identificador.
PanelGraficas.java
Se encarga de leer el fichero de trazas generado por la simulación del ns y a la vez
que va leyendo va obteniendo datos, además de llevar un recuento de las lı́neas
leı́das. Una vez ha terminado de leer todos los ficheros de trazas generados comienza con la generación de las gráficas. Para ello, accede a los ficheros donde se
han ido guardando los datos de las simulaciones, calcula los valores medios y las
desviaciones tı́picas de esos valores y los introduce en la gráfica correspondiente.
Por último, se encarga de mostrar esas gráficas en la aplicación.
PanelRed.java
El cometido de esta clase es la representación de forma gráfica de la distribución
geográfica de la red parseada.
Parser.java
Como ya explicamos, esta clase es la encargada de leer el fichero XML y traducir
todos los elementos de la red a objetos java. También se encarga de transformar
la red original en las otras topologı́as siguiendo el proceso explicado anteriormente.
Una vez ha cogido todos los elementos de la red, los almacena en un Vector, uno
por cada elemento, es decir uno para los nodos, otro para las demandas y otro que
contiene un array con los diferentes de las topologı́as.
Progreso.java
Se encarga de la actualización de las barras de progreso que se muestran con la
ventana de espera mientras se están analizando los ficheros de trazas y generando las gráficas de resultados. Para llevar a cabo su cometido, calcula el número
de lı́neas del fichero de trazas que se está leyendo y va calculando el porcentaje
correspondiente, apoyándose en el recuento que lleva la clase encargada de leer
estos ficheros.
147
A P ÉNDICE E. C LASES
Trace.java
Esta clase representa las trazas que se van leyendo de los ficheros con los resultados generados por ns. No se almacenan de ninguna manera, ya que puede haber
ficheros con ocho millones de lı́neas, y es casi imposible almacenar tanta cantidad
de objetos, sin hablar del coste computacional que supondrı́a recorrer un Vector de
tales dimensiones. En lugar de almacenarlas, lo que hace esta clase es guardarlas
temporalmente para su procesado inmediato, lo que consigue que no se sature la
memoria y el coste computacional será el mismo.
Como se ha visto, la clase más importante es Interfaz.java, que es la encargada
de gestionar todo el entorno gráfico. Además, las clases Parser.java y NS.java también
son de vital importancia para el desarrollo del proyecto, ya que ellas son las encargadas
del parseo del fichero XML y de la generación del fichero para simular, respectivamente.
E.2.
Diagrama de clases
En la figura E.1 podemos ver un diagrama con la relación entre las clases.
148
E.2. D IAGRAMA DE CLASES
Figura E.1: Diagrama de clases
149
A P ÉNDICE E. C LASES
150
Apéndice F
Ejemplos de ficheros
En este capı́tulo se verá una serie de ejemplos de los ficheros utilizados por la aplicación, tales como el XML de donde se saca la red, el fichero que va a simular NS y el
fichero de trazas que genera la simulación
F.1.
Fichero XML de SNDlib
Éste es un ejemplo de los ficheros XML que la aplicación es capaz de parsear. Corresponde a la red NFSNET.
<?xml version=‘‘1.0’’ encoding=‘‘ISO-8859-1’’?>
<network xmlns=‘‘http://sndlib.zib.de/network’’ version=‘‘1.0’’>
<networkStructure>
<nodes coordinatesType=‘‘geographical’’>
<node id=‘‘Palo-Alto’’>
<coordinates>
<x>-122.07</x>
<y>37.25</y>
</coordinates>
</node>
<node id=‘‘San-Diego’’>
<coordinates>
<x>-117.08</x>
<y>32.42</y>
151
A P ÉNDICE F. E JEMPLOS DE FICHEROS
</coordinates>
</node>
..
.
</nodes>
<links>
<link id=‘‘L1’’>
<source>Palo-Alto</source>
<target>San-Diego</target>
<additionalModules>
<addModule>
<capacity>20.0</capacity>
<cost>6590.0</cost>
</addModule>
<addModule>
<capacity>40.0</capacity>
<cost>7590.0</cost>
</addModule>
<addModule>
<capacity>60.0</capacity>
<cost>14180.0</cost>
</addModule>
<addModule>
<capacity>80.0</capacity>
<cost>15180.0</cost>
</addModule>
<addModule>
<capacity>100.0</capacity>
<cost>21770.0</cost>
</addModule>
<addModule>
<capacity>120.0</capacity>
<cost>22770.0</cost>
</addModule>
<addModule>
152
F.1. F ICHERO XML DE SND LIB
<capacity>140.0</capacity>
<cost>29360.0</cost>
</addModule>
<addModule>
<capacity>160.0</capacity>
<cost>30360.0</cost>
</addModule>
<addModule>
<capacity>180.0</capacity>
<cost>36950.0</cost>
</addModule>
<addModule>
<capacity>200.0</capacity>
<cost>37950.0</cost>
</addModule>
<addModule>
<capacity>220.0</capacity>
<cost>44540.0</cost>
</addModule>
<addModule>
<capacity>240.0</capacity>
<cost>45540.0</cost>
</addModule>
<addModule>
<capacity>260.0</capacity>
<cost>52130.0</cost>
</addModule>
<addModule>
<capacity>280.0</capacity>
<cost>53130.0</cost>
</addModule>
<addModule>
<capacity>300.0</capacity>
<cost>59720.0</cost>
</addModule>
153
A P ÉNDICE F. E JEMPLOS DE FICHEROS
<addModule>
<capacity>320.0</capacity>
<cost>60720.0</cost>
</addModule>
<addModule>
<capacity>340.0</capacity>
<cost>67310.0</cost>
</addModule>
<addModule>
<capacity>360.0</capacity>
<cost>68310.0</cost>
</addModule>
<addModule>
<capacity>380.0</capacity>
<cost>74900.0</cost>
</addModule>
<addModule>
<capacity>400.0</capacity>
<cost>75900.0</cost>
</addModule>
<addModule>
<capacity>420.0</capacity>
<cost>82490.0</cost>
</addModule>
<addModule>
<capacity>440.0</capacity>
<cost>83490.0</cost>
</addModule>
<addModule>
<capacity>460.0</capacity>
<cost>90080.0</cost>
</addModule>
<addModule>
<capacity>480.0</capacity>
<cost>91080.0</cost>
154
F.1. F ICHERO XML DE SND LIB
</addModule>
<addModule>
<capacity>500.0</capacity>
<cost>97670.0</cost>
</addModule>
<addModule>
<capacity>520.0</capacity>
<cost>98670.0</cost>
</addModule>
<addModule>
<capacity>540.0</capacity>
<cost>105260.0</cost>
</addModule>
<addModule>
<capacity>560.0</capacity>
<cost>106260.0</cost>
</addModule>
<addModule>
<capacity>580.0</capacity>
<cost>112850.0</cost>
</addModule>
<addModule>
<capacity>600.0</capacity>
<cost>113850.0</cost>
</addModule>
<addModule>
<capacity>620.0</capacity>
<cost>120440.0</cost>
</addModule>
<addModule>
<capacity>640.0</capacity>
<cost>121440.0</cost>
</addModule>
<addModule>
<capacity>660.0</capacity>
155
A P ÉNDICE F. E JEMPLOS DE FICHEROS
<cost>128030.0</cost>
</addModule>
<addModule>
<capacity>680.0</capacity>
<cost>129030.0</cost>
</addModule>
<addModule>
<capacity>700.0</capacity>
<cost>135620.0</cost>
</addModule>
<addModule>
<capacity>720.0</capacity>
<cost>136620.0</cost>
</addModule>
<addModule>
<capacity>740.0</capacity>
<cost>143210.0</cost>
</addModule>
<addModule>
<capacity>760.0</capacity>
<cost>144210.0</cost>
</addModule>
<addModule>
<capacity>780.0</capacity>
<cost>150800.0</cost>
</addModule>
<addModule>
<capacity>800.0</capacity>
<cost>151800.0</cost>
</addModule>
</additionalModules>
</link>
..
.
</links>
156
F.2. F ICHERO DE TRAZAS
</networkStructure>
<demands>
<demand id=‘‘PaloAltoSanDiego’’>
<source>Palo-Alto</source>
<target>San-Diego</target>
<demandValue>52.0</demandValue>
</demand>
<demand id=‘‘PaloAltoBoulder’’>
<source>Palo-Alto</source>
<target>Boulder</target>
<demandValue>18.0</demandValue>
</demand>
..
.
</demands>
</network>
F.2.
Fichero de trazas
En este apartado se puede ver una parte de ejemplo de un fichero de trazas generado
por la simulación en ns.
+
+
+
+
r
+
-
0.017818 2
0.017818 2
0.017857 2
0.017857 2
0.018314 2
0.018314 2
0.018353 2
0.018353 2
0.018819 2
0.01882 17
0.01882 17
17
17
17
17
17
17
17
17
17
22
22
IPKT
IPKT
IPKT
IPKT
IPKT
IPKT
IPKT
IPKT
IPKT
IPKT
IPKT
64 ------- 1 2.0.0.0 13.0.0.-1 0 73 0
64 ------- 1 2.0.0.0 13.0.0.-1 0 73 0
40064 ------- 2 2.0.0.0 13.0.0.-1 0 74 0
40064 ------- 2 2.0.0.0 13.0.0.-1 0 74 0
64 ------- 1 2.0.0.0 6.0.0.-1 1 85 0
64 ------- 1 2.0.0.0 6.0.0.-1 1 85 0
40064 ------- 2 2.0.0.0 6.0.0.-1 1 86 0
40064 ------- 2 2.0.0.0 6.0.0.-1 1 86 0
64 ------- 1 2.0.0.0 13.0.0.-1 0 73 0
64 ------- 1 2.0.0.0 13.0.0.-1 0 73 0
64 ------- 1 2.0.0.0 13.0.0.-1 0 73 0
157
A P ÉNDICE F. E JEMPLOS DE FICHEROS
r
+
r
+
r
+
+
r
0.018857 2 17 IPKT 40064 ------- 2 2.0.0.0 13.0.0.-1 0 74 0
0.018857 17 22 IPKT 40064 ------- 2 2.0.0.0 13.0.0.-1 0 74 0
0.018857 17 22 IPKT 40064 ------- 2 2.0.0.0 13.0.0.-1 0 74 0
0.019315 2 17 IPKT 64 ------- 1 2.0.0.0 6.0.0.-1 1 85 0
0.019316 17 22 IPKT 64 ------- 1 2.0.0.0 6.0.0.-1 1 85 0
0.019316 17 22 IPKT 64 ------- 1 2.0.0.0 6.0.0.-1 1 85 0
0.019353 2 17 IPKT 40064 ------- 2 2.0.0.0 6.0.0.-1 1 86 0
0.019353 17 22 IPKT 40064 ------- 2 2.0.0.0 6.0.0.-1 1 86 0
0.019353 17 22 IPKT 40064 ------- 2 2.0.0.0 6.0.0.-1 1 86 0
0.01979 2 17 IPKT 64 ------- 1 2.0.0.0 13.0.0.-1 2 110 0
0.01979 2 17 IPKT 64 ------- 1 2.0.0.0 13.0.0.-1 2 110 0
0.01982 17 22 IPKT 64 ------- 1 2.0.0.0 13.0.0.-1 0 73 0
F.3.
Fichero esqueleto
En esta sección se muestra un ejemplo de un fichero esqueleto para rellenar con
nuestros datos de simulación.
set
set
set
set
home path [lindex $argv 0]
ns path [lindex $argv 1]
simulacion [lindex $argv 2]
topologia [lindex $argv 3]
StatCollector set debug 0
Classifier/BaseClassifier/EdgeClassifier set type 0
Classifier/BaseClassifier/CoreClassifier set type 1
# Per node bhp processing time is 1 micro-second
source $ns path/obs-0.9a/tcl/lib/ns-obs-lib-hierarchical.tcl
source $ns path/obs-0.9a/tcl/lib/ns-obs-defaults.tcl
source $ns path/obs-0.9a/tcl/lib/ns-optic-link.tcl
set ns [new Simulator]
set nf [open $home path/topology$simulacion-$topologia.nam w]
set sc [new StatCollector]
158
F.3. F ICHERO ESQUELETO
set tf [open $home path/topology$simulacion-$topologia.tr w]
set ndf [open $home path/ndtopology$simulacion-$topologia.tr w]
# dump all the traces out to the nam file
$ns namtrace-all $nf
$ns trace-all $tf
$ns nodetrace-all $ndf
#====================================================================#
# constant definitions
#v6 uses 1 - 70 mu s for offset time
BurstManager offsettime 0.00004
#v6 uses 10000 - 70000 bytes
BurstManager maxburstsize 40000
#v6 uses 0.1 s to 1 s
BurstManager bursttimeout 0.5
# set the bhp processing time 1 microsecond (v6 test case not known)
# 1 mu s was in initial example file
Classifier/BaseClassifier/CoreClassifier set bhpProcTime 0.000001
Classifier/BaseClassifier/EdgeClassifier set bhpProcTime 0.000001
#assume 1 FDL per outgoing channel (on all links per node)
Classifier/BaseClassifier set nfdl 16
#v6 fdl prop delay not known; 100 mu s is of order of trans delay
Classifier/BaseClassifier set fdldelay 0.0001
Classifier/BaseClassifier set option 0
#v6 uses up to 10 FDL delays per node
Classifier/BaseClassifier set maxfdls 5
Classifier/BaseClassifier set ebufoption 0
#this is a fixed delay line present at the ingress of every node
OBSFiberDelayLink set FDLdelay 0.0
# total number of edge nodes ##EDGE COUNT##
# total number of core routers ##CORE COUNT##
159
A P ÉNDICE F. E JEMPLOS DE FICHEROS
# total bandwidth/channel (1mb = 1000000)
set bwpc 1000000000
# delay in milliseconds
##DELAY##
# total number of channels per link
##TOTAL CHANNELS##
# number of control channels per link
##CONTROL CHANNELS##
# number of data-channels
##DATA CHANNELS##
#====================================================================#
# support procedures
##TOPOLOGIA JERARQUICA##
# finish procedure
proc finish {} {
global ns nf sc tf ndf
$ns flush-trace
$ns flush-nodetrace
close $nf
close $tf
close $ndf
$sc display-sim-list
puts "Simulation complete";
exit 0
}
#create a edge-core-edge topology
Simulator instproc create topology { } {
$self instvar Node
global E C
global edge count core count
global bwpc maxch ncc ndc delay
160
F.3. F ICHERO ESQUELETO
##NODOS##
##ENLACES##
$self build-routing-table
}
Simulator instproc create expo connection { selfsim udp null src dest
start0 stop0 rate sdibt } {
upvar 1 $udp udpr
upvar 1 $selfsim selfsimr
upvar 1 $null nullr
upvar 1 $src srcr
upvar 1 $dest destr
set udpr [ new Agent/UDP]
$self attach-agent $srcr $udpr
set selfsimr [ new Application/Traffic/SelfSimilar ]
$slefsimr attach-agent $udpr
set nullr [ new Agent/Null ]
$self attach-agent $destr $nullr
$self connect $udpr $nullr
$self at $start0 ‘‘$selfsimr start’’
$self at $stop0 ‘‘$selfsimr stop’’
puts ‘‘traffic stream between $src = $srcr and $dest = $destr
created’’
}
Simulator instproc create cbr connection { cbr udp null src dest
start0 stop0 rate } {
upvar 1 $udp udpr
upvar 1 $cbr cbrr
upvar 1 $null nullr
upvar 1 $src srcr
upvar 1 $dest destr
set udpr [ new Agent/UDP]
161
A P ÉNDICE F. E JEMPLOS DE FICHEROS
$self attach-agent $srcr $udpr
set cbrr [ new Application/Traffic/CBR ]
$cbrr attach-agent $udpr
set nullr [ new Agent/Null ]
$self attach-agent $destr $nullr
$self connect $udpr $nullr
$self at $start0 ‘‘$cbrr start’’
$self at $stop0 ‘‘$cbrr stop’’
puts ‘‘traffic stream between $src = $srcr and $dest = $destr
created’’
}
Simulator instproc create expo connection { expo udp null src dest
start0 stop0 rate } {
upvar 1 $udp udpr
upvar 1 $expo expor
upvar 1 $null nullr
upvar 1 $src srcr
upvar 1 $dest destr
set udpr [ new Agent/UDP]
$self attach-agent $srcr $udpr
set expor [ new Application/Traffic/Exponential ]
$expor attach-agent $udpr
set nullr [ new Agent/Null ]
$self attach-agent $destr $nullr
$self connect $udpr $nullr
$self at $start0 ‘‘$expor start’’
$self at $stop0 ‘‘$expor stop’’
puts ‘‘traffic stream between $src = $srcr and $dest = $destr
created’’
}
$ns create topology
##UDP SIZE##
##BATCHSIZE##
162
F.4. F ICHERO PARA SIMULAR
Application/Traffic/SelfSimilar set sb 0
Application/Traffic/SelfSimilar set Hb -0.5
Application/Traffic/SelfSimilar set Ht 0.5
Application/Traffic/CBR set type CBR
##CBR SIZE##
Application/Traffic/CBR set random true
##EXPO SIZE##
##DEMANDAS##
..
.
##TIEMPO SIMULACION##
$ns run
F.4.
Fichero para simular
Como se observa, el fichero final para la simulación es muy parecido al base, pero
se le han añadido todos los nodos, enlaces y demandas de tráfico a simular, además de
algunos parámetros de la simulación.
set
set
set
set
home path [lindex $argv 0]
ns path [lindex $argv 1]
simulacion [lindex $argv 2]
topologia [lindex $argv 3]
StatCollector set debug 0
Classifier/BaseClassifier/EdgeClassifier set type 0
Classifier/BaseClassifier/CoreClassifier set type 1
# Per node bhp processing time is 1 micro-second
source $ns path/obs-0.9a/tcl/lib/ns-obs-lib-hierarchical.tcl
source $ns path/obs-0.9a/tcl/lib/ns-obs-defaults.tcl
source $ns path/obs-0.9a/tcl/lib/ns-optic-link.tcl
163
A P ÉNDICE F. E JEMPLOS DE FICHEROS
set
set
set
set
set
ns [new Simulator]
nf [open $home path/topology$simulacion-$topologia.nam w]
sc [new StatCollector]
tf [open $home path/topology$simulacion-$topologia.tr w]
ndf [open $home path/ndtopology$simulacion-$topologia.tr w]
# dump all the traces out to the nam file
$ns namtrace-all $nf
$ns trace-all $tf
$ns nodetrace-all $ndf
#====================================================================#
# constant definitions
#v6 uses 1 - 70 mu s for offset time
BurstManager offsettime 0.00004
#v6 uses 10000 - 70000 bytes
BurstManager maxburstsize 40000
#v6 uses 0.1 s to 1 s
BurstManager bursttimeout 0.5
# set the bhp processing time 1 microsecond (v6 test case not known)
# 1 mu s was in initial example file
Classifier/BaseClassifier/CoreClassifier set bhpProcTime 0.000001
Classifier/BaseClassifier/EdgeClassifier set bhpProcTime 0.000001
#assume 1 FDL per outgoing channel (on all links per node)
Classifier/BaseClassifier set nfdl 16
#v6 fdl prop delay not known; 100 mu s is of order of trans delay
Classifier/BaseClassifier set fdldelay 0.0001
Classifier/BaseClassifier set option 0
#v6 uses up to 10 FDL delays per node
Classifier/BaseClassifier set maxfdls 5
Classifier/BaseClassifier set ebufoption 0
#this is a fixed delay line present at the ingress of every node
164
F.4. F ICHERO PARA SIMULAR
OBSFiberDelayLink set FDLdelay 0.0
# total number of edge nodes ##EDGE COUNT##
set edge count 15
# total number of core routers ##CORE COUNT##
set core count 15
# total bandwidth/channel (1mb = 1000000)
set bwpc 1000000000
# delay in milliseconds
##DELAY##
set delay 1ms
# total number of channels per link
##TOTAL CHANNELS##
set maxch 10
# number of control channels per link
##CONTROL CHANNELS##
set ncc 8
# number of data-channels
##DATA CHANNELS##
set ndc 2
#====================================================================#
# support procedures
##TOPOLOGIA JERARQUICA##
$ns node-config -addressType hierarchical
AddrParams set domain num 30 ;# number of domains
lappend cluster num 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1
;# number of clusters in each domain
AddrParams set cluster num $cluster num
lappend eilastlevel 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1
AddrParams set nodes num $eilastlevel ;# number of nodes in each
domain
# finish procedure
165
A P ÉNDICE F. E JEMPLOS DE FICHEROS
proc finish {} {
global ns nf sc tf ndf
$ns flush-trace
$ns flush-nodetrace
close $nf
close $tf
close $ndf
$sc display-sim-list
puts "Simulation complete";
exit 0
}
#create a edge-core-edge topology
Simulator instproc create topology { } {
$self instvar Node
global E C
global edge count core count
global bwpc maxch ncc ndc delay
##NODOS##
set E(0) [$self create-edge-node 0 $edge count]
set nid [$E(0) id]
set string1 ‘‘E(0) node id: $nid’’
puts $string1
..
.
set C(14) [$self create-core-node 29 $core count]
set nid [$C(14) id]
set string1 ‘‘C(14) node id: $nid’’
puts $string1
##ENLACES##
$self createDuplexFiberLink $E(0) $C(0) $bwpc $delay $ncc $ndc
$maxch
$self createDuplexFiberLink $E(1) $C(1) $bwpc $delay $ncc $ndc
$maxch
166
F.4. F ICHERO PARA SIMULAR
$self createDuplexFiberLink
$maxch
$self createDuplexFiberLink
$maxch
$self createDuplexFiberLink
$maxch
$self createDuplexFiberLink
$maxch
$E(2) $C(2) $bwpc $delay $ncc $ndc
$E(3) $C(3) $bwpc $delay $ncc $ndc
$E(4) $C(4) $bwpc $delay $ncc $ndc
$E(5) $C(5) $bwpc $delay $ncc $ndc
..
.
$self createDuplexFiberLink
$maxch
$self createDuplexFiberLink
$maxch
$self createDuplexFiberLink
$maxch
$self createDuplexFiberLink
$maxch
$self createDuplexFiberLink
$maxch
$C(0) $C(5) 5000000000 $delay $ncc $ndc
$C(0) $C(6) 11000000000 $delay $ncc $ndc
$C(0) $C(7) 2000000000 $delay $ncc $ndc
$C(1) $C(2) 1000000000 $delay $ncc $ndc
$C(1) $C(4) 10000000000 $delay $ncc $ndc
$self build-routing-table
}
Simulator instproc create expo connection { selfsim udp null src dest
start0 stop0 rate sdibt } {
upvar 1 $udp udpr
upvar 1 $selfsim selfsimr
upvar 1 $null nullr
upvar 1 $src srcr
upvar 1 $dest destr
set udpr [ new Agent/UDP]
$self attach-agent $srcr $udpr
set selfsimr [ new Application/Traffic/SelfSimilar ]
167
A P ÉNDICE F. E JEMPLOS DE FICHEROS
$slefsimr attach-agent $udpr
set nullr [ new Agent/Null ]
$self attach-agent $destr $nullr
$self connect $udpr $nullr
$self at $start0 ‘‘$selfsimr start’’
$self at $stop0 ‘‘$selfsimr stop’’
puts ‘‘traffic stream between $src = $srcr and $dest = $destr
created’’
}
Simulator instproc create cbr connection { cbr udp null src dest
start0 stop0 rate } {
upvar 1 $udp udpr
upvar 1 $cbr cbrr
upvar 1 $null nullr
upvar 1 $src srcr
upvar 1 $dest destr
set udpr [ new Agent/UDP]
$self attach-agent $srcr $udpr
set cbrr [ new Application/Traffic/CBR ]
$cbrr attach-agent $udpr
set nullr [ new Agent/Null ]
$self attach-agent $destr $nullr
$self connect $udpr $nullr
$self at $start0 ‘‘$cbrr start’’
$self at $stop0 ‘‘$cbrr stop’’
puts ‘‘traffic stream between $src = $srcr and $dest = $destr
created’’
}
Simulator instproc create expo connection { expo udp null src dest
start0 stop0 rate } {
upvar 1 $udp udpr
upvar 1 $expo expor
upvar 1 $null nullr
168
F.4. F ICHERO PARA SIMULAR
upvar 1 $src srcr
upvar 1 $dest destr
set udpr [ new Agent/UDP]
$self attach-agent $srcr $udpr
set expor [ new Application/Traffic/Exponential ]
$expor attach-agent $udpr
set nullr [ new Agent/Null ]
$self attach-agent $destr $nullr
$self connect $udpr $nullr
$self at $start0 ‘‘$expor start’’
$self at $stop0 ‘‘$expor stop’’
puts ‘‘traffic stream between $src = $srcr and $dest = $destr
created’’
}
$ns create topology
##UDP SIZE##
Agent/UDP set packetSize 2000
##BATCHSIZE##
Application/Traffic/SelfSimilar set batchsize 250.0
Application/Traffic/SelfSimilar set sb 0
Application/Traffic/SelfSimilar set Hb -0.5
Application/Traffic/SelfSimilar set Ht 0.5
Application/Traffic/CBR set type CBR
##CBR SIZE##
Application/Traffic/CBR set packetSize 2000
Application/Traffic/CBR set random true
##EXPO SIZE##
Application/Traffic/Exponential set packetSize 2000
##DEMANDAS## $ns create selfsim connection selfsim0(5:4) udp0(5:4)
null(5:4) E(5) E(4) 5.019331700275444 5.186778154935088 2500.0 1.0e-4
$ns create selfsim connection selfsim0(5:13) udp0(5:13) null(5:13)
E(5) E(13) 5.019331700275444 5.186778154935088 2500.0 1.0e-4
$ns create selfsim connection selfsim0(5:14) udp0(5:14) null(5:14)
E(5) E(14) 5.019331700275444 5.186778154935088 2500.0 1.0e-4
169
A P ÉNDICE F. E JEMPLOS DE FICHEROS
$ns create selfsim connection selfsim0(5:12) udp0(5:12) null(5:12)
E(5) E(12) 5.020674161708899 5.036273513427956 2500.0 1.0e-4
..
.
##TIEMPO SIMULACION##
$ns at 65.72 ‘‘finish’’
$ns run
Leganés, a 10 de Julio de 2011
El ingeniero proyectista
Fdo. José Miguel Vázquez Viejo
170
Descargar