下面的Python代碼將創建兩個交換機,每個交換機有兩個主機相連,並且兩個交換機由一個控制器控制的SDN網絡。
可以用如下python代碼創建上述拓撲,並指定ip:
#!/usr/bin/python
from mininet.topo import Topo
from mininet.net import Mininet
from mininet.node import RemoteController, Controller
from mininet.cli import CLI
from mininet.link import TCLink
from mininet.log import setLogLevel
class MyTopo(Topo):
def __init__(self):
Topo.__init__(self)
Host1 = self.addHost('h1', ip='10.0.0.2')
Host2 = self.addHost('h2', ip='10.0.0.3')
Host3 = self.addHost('h3', ip='10.0.1.2')
Host4 = self.addHost('h4', ip='10.0.1.3')
switch1 = self.addSwitch('s1')
switch2 = self.addSwitch('s2')
self.addLink(switch1, switch2)
self.addLink(switch1, Host1)
self.addLink(switch1, Host2)
self.addLink(switch2, Host3)
self.addLink(switch2, Host4)
topos = {'mytopo': (lambda: MyTopo())}
創建Topo:
ammy@ubuntu:~/mininetFile$ sudo mn --custom customtopo-2sw-2h.py --topo mytopo --mac
*** 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
*** Starting 2 switches
s1 s2
*** Starting CLI:
創建topo之後用dump命令驗證,可見它們的ip確實如代碼中指定的一樣:
mininet> dump
<Host h1: h1-eth0:10.0.0.2 pid=12961>
<Host h2: h2-eth0:10.0.0.3 pid=12962>
<Host h3: h3-eth0:10.0.1.2 pid=12963>
<Host h4: h4-eth0:10.0.1.3 pid=12964>
<OVSSwitch s1: lo:127.0.0.1,s1-eth1:None,s1-eth2:None,s1-eth3:None pid=12968>
<OVSSwitch s2: lo:127.0.0.1,s2-eth1:None,s2-eth2:None,s2-eth3:None pid=12973>
<OVSController c0: 127.0.0.1:6633 pid=12953>