mininet + opendaylight环境配置

环境配置

ubuntu18.04 镜像

mininet2.2.2

apt-get install mininet

但这种安装只是TLS版本的mininet,与最新版本在功能上有所差距。

控制器(opendaylight0.12.2)

在opendaylight官网上下载Magnesium-SR2版本并解压缩

wget https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/integration/opendaylight/0.12.2/opendaylight-0.12.2.tar.gz
tar -zxvf opendaylight-0.12.2.tar.gz
./bin/karaf

Karaf发行版默认没有启用任何功能,要其做为mininet的控制器需要启用openflow,故需要安装以下插件

feature:install odl-restconf-nb-bierman02 odl-openflowplugin-flow-services odl-openflowplugin-flow-services-rest odl-netconf-connector-all features-openflowplugin

到这里OpenDayLight算配置好了

Topo测试

topo图如下:

#!/usr/bin/python

from mininet.net import Mininet
from mininet.node import Controller, RemoteController, OVSController
from mininet.node import CPULimitedHost, Host, Node
from mininet.node import OVSKernelSwitch, UserSwitch
from mininet.node import IVSSwitch
from mininet.cli import CLI
from mininet.log import setLogLevel, info
from mininet.link import TCLink, Intf
from subprocess import call

def myNetwork():

    net = Mininet( topo=None,
                   build=False,
                   ipBase='10.0.0.0/8')

    info( '*** Adding controller\n' )
    c0=net.addController(name='c0',
                      controller=RemoteController,
                      ip='127.0.0.1',
                      protocol='tcp',
                      port=6633)

    info( '*** Add switches\n')
    s2 = net.addSwitch('s2', cls=OVSKernelSwitch)
    s1 = net.addSwitch('s1', cls=OVSKernelSwitch)

    info( '*** Add hosts\n')
    h1 = net.addHost('h1', cls=Host, ip='10.0.0.1', defaultRoute=None)
    h4 = net.addHost('h4', cls=Host, ip='10.0.0.4', defaultRoute=None)
    h2 = net.addHost('h2', cls=Host, ip='10.0.0.2', defaultRoute=None)
    h3 = net.addHost('h3', cls=Host, ip='10.0.0.3', defaultRoute=None)

    info( '*** Add links\n')
    net.addLink(h1, s1)
    net.addLink(h2, s1)
    net.addLink(h3, s2)
    net.addLink(s2, h4)

    info( '*** Starting network\n')
    net.build()
    info( '*** Starting controllers\n')
    for controller in net.controllers:
        controller.start()

    info( '*** Starting switches\n')
    net.get('s2').start([c0])
    net.get('s1').start([c0])

    info( '*** Post configure switches and hosts\n')

    CLI(net)
    net.stop()

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

配置完成后,进行测试,

先运行./bin/karaf,然后再运行mininet

mn --custom myTopo.py --topo mytopo --controller=remote,ip=127.0.0.1,port=6633 --switch=ovsk,protocols=Openflow13
上一篇:NSURLProtocol对WKWebView的处理


下一篇:java通过反射获取Object的属性