Skip to content

NETSERV-UAH/BRITE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

==============================================================================
 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.