在一个host上面用Mininet搭建了一个网络,这个网络有两个主机h1和h2,一个交换机s1,一个控制器c0,将交换机s1和主机host的网口绑定。

#!/usr/bin/env python
import os
from mininet.net import Mininet
from mininet.node import Controller, RemoteController
from mininet.cli import CLI
from mininet.link import Intf
from mininet.log import setLogLevel, info

def ToRealnet():

    net = Mininet( topo=None, build=False)

    info( '*** Adding controller\n' )
    net.addController(name='cotyb')

    info( '*** Add switches\n')
    s1 = net.addSwitch('s1')
    
    info( '*** Add hosts\n')
    h1 = net.addHost('h1', ip='0.0.0.0')
    h2 = net.addHost('h2', ip='0.0.0.0')

    info( '*** Add links\n')
    net.addLink(h1, s1)
    net.addLink(h2, s1)
    
    info( '*** Starting network\n')
    net.start()
    os.popen('ovs-vsctl add-port s1 eth0')       #绑定s1和host的eth0接口
    h1.cmdPrint('dhclient '+h1.defaultIntf().name)      #给h1的网口用DHCP动态分配IP
    h2.cmdPrint('dhclient '+h2.defaultIntf().name)      ##给h2的网口用DHCP动态分配IP
    CLI(net)
    net.stop()

if __name__ == '__main__':
    setLogLevel( 'info' )
    ToRealnet()

通过python运行源代码生成拓扑,然后用xterm h1打开h1的终端,使用ifconfig命令,结果如下图,可以看出红框中的IP地址:192.168.29.179,和host处于同一网段,而且多次运行,发现分配的IP是不一样的,说明是动态分配的。

接下来再在h1的终端下ping和host统一网段的主机。