Skip to content

Instantly share code, notes, and snippets.

@dinigo
Last active December 31, 2015 11:39
Show Gist options
  • Save dinigo/7980534 to your computer and use it in GitHub Desktop.
Save dinigo/7980534 to your computer and use it in GitHub Desktop.
Topology for mininet
'''
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