Last active
December 31, 2015 11:39
-
-
Save dinigo/7980534 to your computer and use it in GitHub Desktop.
Topology for mininet
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
''' | |
La siguiente topologia pretende emular la empleada en la | |
simulacion del evento en el que se debia realizar el | |
despliegue de antenas para la covertura. Relativamente parecida | |
a topologia TreeTopo pero con una implementacion por | |
completo diferente. | |
Se dispondra de una cabecera (header) al que se conectaran | |
un numero (numantenas) de antenas. A cada antena a su vez | |
se conectara un numero de host especificado por parametro. | |
La topologia se puede cargar con el siguiente comando: | |
$ sudo mn --custom /path/to/file/customtopo.py --topo concierto,numantenas,nuhost | |
Por lo que si se quiere crear una topologia de 3 antenas | |
con 10 dispositivos por antena, mientras estamos en la | |
misma carpeta debemos invocarlo como: | |
$ sudo mn --custom customtopo.py --topo concierto,3,10 | |
Si se quiere realizar un test de conectividad se puede | |
anadir al final del comando la orden "--test pingall" | |
''' | |
from mininet.topo import Topo | |
class Concert4G( Topo ): | |
''' Topologia con forma de arbol con 1 cabecera, | |
diverso numero de antenas y un numero fijo de | |
host por cada antena. ''' | |
# Por defecto se instancia la clase con 2 antenas y 10 nodos por cada | |
def __init__( self, numantenas=2, numhost=10): | |
''' | |
@param numantenas numero de antenas | |
@param numhost numero de devices por antena | |
''' | |
# Llama al constructor de la clase que extiende | |
super(Concert4G, self).__init__() | |
# Instancia la cabecera | |
header = self.addHost('header') | |
# Para cada antena, se enchufa con la cabecera | |
for k in range(0, numantenas): | |
antena = self.addSwitch('antena%s' % k) | |
self.addLink(header, antena) | |
# Para cada antena, cada uno de sus nodos se enchufa con la antena | |
for p in range(0, numhost): | |
host = self.addHost('device%s' % (k*numantenas+p)) | |
self.addLink(host, antena) | |
topos = { 'concierto': ( lambda numantenas, numhost: Concert4G(numantenas, numhost) ) } | |
''' | |
Hace la topologia visible a mininet. Los elementos | |
declarados dentro del map son las topologias disponibles. | |
Hay que declarar las variables que se van a pasar al | |
constructor y luego pasarlos. | |
Lambda es una especie de funcion dumy inline que no hace nada. | |
''' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment