Configurar Mininet 2021-2
Configurar Mininet 2021-2
Configurar Mininet 2021-2
TEMA: SDN
DIRECTAMENTE PROGRAMABLE
ÁGIL
CENTRALMENTE ADMINISTRADO
CONFIGURADO PROGRAMÁTICAMENTE
Fuente (https://www.sdxcentral.com/sdn/definitions/what-is-openflow/)
Beneficios de OpenFlow:
Programabilidad
Inteligencia Centralizada
• Simplificar el aprovisionamiento
• Optimizar el rendimiento
• Gestión de políticas granulares
Abstracción
Historial de protocolo
Fuente (https://www.sdxcentral.com/sdn/definitions/opendaylight-project/)
http://mininet.org/download/
Virtualbox
https://www.virtualbox.org/wiki/Downloads
Xming
https://sourceforge.net/projects/xming/
TIPS
Leyenda
Hx → Host
Sx → Switch
Cx → Controller
$ → comando en shell
# → comandos como root
Syntaxys:
mininet>[nodo] comando
- Colocando el nodo frente a un comando, indicamos que el
comando está siendo ejecutado en aquel nodo
- Es posible utilizar el nombre del nodo para sustituir la IP.
mininet>h2 ping -c5 h3
mininet>exit
Salir de mininet
mininet>xterm [nodo]
Abre un terminal para el nodo.
mininet>pingall
Prueba conectividad entre dos nodos
mininet>help
Ayuda, muestra lista de comandos de mininet
#mn -c
Limpia la topología
Topología
A continuación se explicarán 4 tipos de topologías
que pueden ser utilizadas en Mininet:
• single
• linear
• tree
• custom.
Configuración PuTTY
Ponemos nuestra IP
Nano sshd_config
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
XAuthLocation /usr/bin/X11/xauth
Guarde los cambios y cierre el archivo.
Usar PuTTY
Y luego siguiente hasta llegar a finalizar
TOPOLOGIAS EN MININET
SINGLE: Un switch conectado a N hosts.
Y probamos la conexión
Tree: Crea una topologia de arbol con profundidad N y anchura M.
$sudo mn --topo=tree,depth=n,fanout=m
tcpdump -i h1-eth0
tcpdump -i h2-eth0
Llamada test_network
#!/usr/bin/python
class SingleSwitchTopo(Topo):
"Single switch connected to n hosts."
def build(self, n=2):
switch = self.addSwitch('s1')
# Python's range(N) generates 0..N-1
for h in range(n):
host = self.addHost('h%s' % (h + 1))
self.addLink(host, switch)
def simpleTest():
"Create and test a simple network"
topo = SingleSwitchTopo(n=4)
net = Mininet(topo)
net.start()
print "Dumping host connections"
dumpNodeConnections(net.hosts)
print "Testing network connectivity"
net.pingAll()
net.stop()
if __name__ == '__main__':
# Tell mininet to print useful information
setLogLevel('info')
simpleTest()
Important classes, methods, functions and variables in the above code include:
La salida es esta
#!/usr/bin/python
REMOTE_CONTROLLER_IP = "127.0.0.1"
def simpleTest():
# Create and test a simple network
topo = SingleLoopTopo()
net = Mininet(topo=topo,
controller=None,
autoStaticArp=True)
net.addController("c0",
controller=RemoteController,
ip=REMOTE_CONTROLLER_IP,
port=6633)
net.start()
print "Dumping host connections"
dumpNodeConnections(net.hosts)
print "Testing network connectivity"
net.pingAll()
net.stop()
class SingleLoopTopo(Topo):
# Single switch connected to n hosts
def __init__(self, **opts):
# Initialize topology and default optioe
Topo.__init__(self, **opts)
switches = []
hosts = []
# create switches
for s in range(3):
switches.append(self.addSwitch('s%s' % (s + 1), protocols='OpenFlow13'))
# create hosts
for h in range(4):
hosts.append(self.addHost('h%s' % (h + 1)))
self.addLink(hosts[0], switches[1])
self.addLink(hosts[1], switches[1])
self.addLink(hosts[2], switches[2])
self.addLink(hosts[3], switches[2])
self.addLink(switches[0], switches[1])
self.addLink(switches[0], switches[2])
self.addLink(switches[1], switches[2])
if __name__ == '__main__':
# Tell mininet to print useful information
setLogLevel('info')
simpleTest()
topo = SingleLoopTopo()
net = Mininet(topo=topo,
controller=None,
autoStaticArp=True)
net.addController("c0",
controller=RemoteController,
ip=REMOTE_CONTROLLER_IP,
port=6633)
net.start()
CLI(net)
net.stop()
Figure 1
# Initialize topology
Topo.__init__( self )
Switch0 = self.addSwitch('s0')
Switch1 = self.addSwitch('s1')
Switch2 = self.addSwitch('s2')
# Add links
***Creating network
***Adding controller
***Adding hosts:
h1 h2 h3 h4
***Adding switches:
s1 s2
***Adding links:
(h1, s1) (h2, s1) (h3, s2) (h4, s2) (s1, s2) ***Configuring hosts
h1 h2 h3 h4
***Starting controller
c0
***Starting 2 switches
s1 s2
***Starting CLI:
mininet>
Display nodes
mininet> nodes
c0 h1 h2 h3 h4 s1 s2
Display links
mininet> links
Display net
mininet> net
h1 h1-eth0:s1-eth1
h2 h2-eth0:s1-eth2
h3 h3-eth0:s2-eth1
h4 h4-eth0:s2-eth2
c0
mininet> h1 ifconfig
collisions:0 txqueuelen:1000
collisions:0 txqueuelen:0