-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
executable file
·196 lines (160 loc) · 10 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
==============================================================================
BRITE: Boston University Representative Internet Topology Generator
Alberto Medina, Anukool Lakhina, Ibrahim Matta, John Byers
Department of Computer Science, Boston University
Copyright (c) 2002 QoS Networking Laboratory (QNL), Boston University. All
rights reserved. Permission to use, copy, modify, and distribute this
software and its documentation for any purpose and without fee is hereby
granted, provided that the above copyright notice appear in all copies and
that both the copyright notice and this permission notice appear in
supporting documentation. The QoS Networking Laboratory (QNL) of the
Computer Science Department at Boston University makes no representations
about the suitability of this software for any purpose. It is provided "as
is" without express or implied warranty.
==============================================================================
1. Instalación
--------------
Descomprime la carpeta zip o como lo hayas descargado y entras en la carpeta
$ make
Ya está todo instalado
SI da error al hacer el make porque falta el paquete javac poner: $ sudo apt install openjdk-11-jdk
2. Contenido:
-------------------------
This version of BRITE has:
+ ~/BRITE/
- GUI/ #The GUI source files
- C++/ #The C++ source files (also brite executable)
- Java/ #The Java source (and class) files
- Makefile #The main Makefile
- brite #A helper shell script to launch BRITE (gui)
- bin/
- scan2brite #Converts SCAN format files to BRITE
- skitter2brite #Converts SKITTER (artsdump) files to BRITE
- cppgen #Command-Line access to C++ Generation Engine
- javagen #Command-Line access to Java Generation Engine
- brite2otter #Export BRITE topology for visualization in Otter
- brite2ssf #Export BRITE topology for simulation in SSFNet
- brite2jsim #Export BRITE topology for simulation in Javasim
- brite2ns #Export BRITE topology for simulation in NS
- brite2ns.tcl #Tcl script to convert BRITE to NS (Thanks to Stan Rost)
- brite2ns.py #Python script to convert BRITE to NS (Thanks to Andre Detsch)
+ Este repositorio además incluye los siguientes archivos:
+ Archivos_brite #Carpeta con las topologías generadas, clasificadas según un sistema de archivos explicado en InformeBRITE.pdf
+ Archivos_conf_Barabasi #Carpeta con los archivos de configuración de las topologías Barabasi
+ Archivos_conf_Waxman #Carpeta con los archivos de configuración de las topologías Waxman
+ autogenerador.sh #Script que automatiza la generación de las topologías
+ Carpeta_seeds #Carpeta con las semillas utilizadas en la ejecución de BRITE
+ Carpeta_seeds_backup #Carpeta con una copia de las semillas utilizadas en la ejecución de BRITE. Leer el informe de BRITE para más información
+ generador_brite.py #Programa en python que genera los archivos de configuración de las topologías BRITE
+ parser.py #Programa que pasa la salida .brite a dos archivos Nodos.txt y Enlaces.txt. Leer el informe de BRITE para más información
+ InformeBRITE.pdf #Informe detallado de BRITE en formato pdf
+ graficar_topos #Carpeta con el script de matlab para graficar una topología
3. Ejecución:
-------------
Puedes ejecutar la interfaz gráfica de BRITE con: $./britegui &
Otra opción es hacerlo por línea de comandos:
Podemos hacer: $bin/brite <archivo de configuración de entrada> <archivo brite de salida> <seed_file>
$C++/cppgen <archivo de configuración de entrada> <archivo brite de salida> <seed_file>
Es lo mismo
---------IMPORTANTE--------
La salida de la interfaz gráfica de BRITE y la salida ejecutando BRITE desde linea de comandos no es la misma
Difieren en una línea, que produce un error en la ejecucion de parser.py
Por eso para este uso se recomienda hacerlo por linea de comando para una ejecución libre de errores
---------------------------
4. Archivo de configuración de entrada:
----------------------------------------
BriteConfig
BeginModel
Name = 3 #Modelo de la topología(Explicado debajo)
N = 10 #Numero de nodos de la topología
HS = 1000 #
LS = 100 #Estos dos determinan el tamaño del plano, yo no lo he cambiado
NodePlacement = 1 #Como se ponen los nodos: Random (De forma totalmente aleatoria) = 1, Heavy Teiled(Se agrupan en distintos grupos con mayor densidad) = 2
GrowthType = 1 #Como crece la topología: Incremental = 1, All = 2. No he encontrado una bibliografía que lo explique bien, yo siempre lo he dejado en 1
m = 2 #Número de enlaces por cada nuevo nodo. Si m = 2 y tenemos 10 nodos pues tendremos 20 enlaces y cada nodo estará conectado a 2 enlaces mínimo.
alpha = 0.2 #Parámetros especificos del uso de modelos Waxman
beta = 0.15 #Parámetros especificos del uso de modelos Waxman
BWDist = 1 #Configuración del ancho de banda, no lo he usado para nada. Constant = 1, Uniform =2, HeavyTailed = 3, Exponential =4
BWMin = 10.0
BWMax = 1024.0
EndModel
BeginOutput #Formato de la salida. Al menos una debe tener un 1
BRITE = 1 #Formato .brite, el que he usado. 0 = No guardar como BRITE, 1 = Guardar como BRITE
OTTER = 0 #Igual que brite el resto, si es 0 no se guarda en ese formato
DML = 0 #si es 1 se guarda en ese formato
NS = 0
Javasim = 0
EndOutput
-----------------------------------------
5. Explicación de los parámetros de entrada:
---------------------------------------------
+ Modelo de la topología (Name):
Puede ser:
-Router Waxman = 1
-AS Waxman = 3
-Router Barbasi = 2
-AS Barbasi = 4
-Top Down = 5
-Bottom Up = 6
-Router FIle = 7
-AS File = 8
Indican el modelo de como se genera la topología (Más información en la bibliografía)
+Número de nodos de la topología (N):
Su valor debe ser un entero entre: 1<= N <= HS * HS
+HS y LS (Dimensiones del plano):
HS: Longitud del plano cuadrado donde se encuentra la topología
LS: Tamaño de los cuadros interiores
+Node Placement:
Como se posicionan los nodos en el plano. Dos opciones:
-Random (1): Se colocan en el plano de forma totalmente aleatoria
-Heavy Tailed (2): Se colocan por zonas con mayor concentración de nodos
+Growth Type:
Como los nodos se introducen en la topología.
-Incremental (1): Posiciona los nodos uno a uno a medida que se unen a la topología.
En este punto solo se seleccionan como nodos de elección aquellos que ya se han incluido en la topología
-Random (2): posiciona todos los nodos a la vez antes de añadir los enlaces.
En este punto, un nodo es aleatoriamente seleccionado y m enlaces son usados para conectarlo con m vecinos candidatos del total de nodos
+ Número de enlaces por nuevo nodo (m):
Numero de nodos vecinos a los que un nuevo nodo se conecta cuando se une a la red.
En otras palabras, el numero de nuevos enlaces que se añaden a la topología.
Cuanto mayor es el valor de m. más densa es la topología generada.
+Alpha y Beta: Parámetros específicos del modelo Waxman. Por ahora los dejo fijos a:
Alpha = 0.2, Beta = 0.15
+BWDist, BWMin, BWMax: Parámetros relacionados con el ancho de banda de los enlaces.
Para la generación de las topologías no se han tenido en cuenta.
6. Generador_brite.py:
-----------------------
Como se necesita crear un archivo inicial con la configuración de la topología he creado un programa que los crea automaticamente
Este recibe por linea de comandos los siguientes parámetros:
+Nombre del archivo de configuración que vamos a generar
+Modelo de la topología (Solo da soporte a los modelos RTWaxman = 1, ASWaxman = 3, RTBarbasi = 2 y ASBarbasi)
+Numero de nodos
+NodePlacement
+GrowthTYpe (solo para Waxman)
+Numero de enlaces por nodo (m)
+Alpha (para Waxman)
+Beta (para Waxman)
7. Autogenerador.sh
--------------------
Para automatizar la generación de los archivos de configuración y los archivos brite propiamente dichos, se ha creado un script "autogenerador.sh"
En este script podemos ver que los parametros de entrada que hemos explicado en este documento están declarados al principio con los valores que pueden tomar para crear la topología que deseamos.
Después ejecutamos el generador_brite.py con los parámetros de entrada correspondientes.
Y por último, para cada archivo de configuración creado (determina una configuración de topologias brite), creamos 10 escenarios brite que siendo iguales en parámetros brite(numero de nodos, m, nodePlcement...) son escenarios distintos por el donde están posicionados cada nodo, o las conexiones entre nodos.
8.Carpetas de las semillas
---------------------------
Las carpetas con las semillas utilizadas para la ejecución de BRITE son:
+ Carpeta_seeds/ Esta carpeta tiene las semillas que introducimos a BRITE.
Como BRITE modifica la semilla trás la ejecución, tras la ejecución de BRITE estas semillas no son válidas.
+Carpeta_seeds_backup/ Esta carpeta tiene una copia de las semillas introducidas en BRITE.
IMPORTANTE: No borrar nunca esta carpeta, ni usar estas semillas directamente en la ejecuión de BRITE, pues se perderian las semillas válidas.
Lo qe hacemos para usar las semillas válidas en BRITE, antes de cada ejecución de BRITE, copiamos las semillas de esta carpeta en la carpeta Carpeta_seeds/
9. Graficar topologias
-----------------------
Se ha introducido una carpeta graficar_topos, donde se incluye un script graficar.m que permite graficar las topologías en Matlab para poder visualizarlas.
Para poder graficar una topología se deben copiar los archivos Nodos.csv y Enlaces.csv de la topología que quieres visualizar y ejecutarlo en Matlab
10. Bibliografía
-----------------
-Repositorio donde encontrarlo: https://github.com/NETSERV-UAH/BRITE
-A. Medina, I. Matta, and J. Byers. On the Origin of Power-laws in Internet Topologies. ACM Computer Communication Review, pages 160–163, April 2000.
-Medina, Alberto & Lakhina, Anukool & Matta, Ibrahim & Byers, John. (2001). BRITE: Universal Topology Generation from a User's Perspective.
-Zegura, Ellen & Calvert, Kenneth & Bhattacharjee, Sharmila. (2002). How to Model an Internetwork. Proceedings - IEEE INFOCOM. 2.