Mininet-wifi自定义拓扑

Mininet-wifi custom topology

一开始我想创建一个复杂的拓扑结构(更多的交换机相互连接),但即使是这个简单的拓扑结构也行不通。我无法获得工作连接,例如。 'h1 ping h2'

拓扑结构如下:

他是应该创建等效拓扑的脚本:

!/usr/bin/python

"""
Setting the position of Nodes (only for Stations and Access Points) and providing mobility.

"""

from mininet.net import Mininet
from mininet.node import Controller, RemoteController, OVSKernelAP
from mininet.link import TCLink
from mininet.cli import CLI
from mininet.log import setLogLevel

def topology():

    "Create a network."
    net = Mininet( controller=Controller, link=TCLink, accessPoint=OVSKernelAP )

    print "*** Creating nodes"
    h1 = net.addHost( 'h1', mac='00:00:00:00:00:01', ip='10.0.0.1/8' )
    h2 = net.addHost( 'h2', mac='00:00:00:00:00:11', ip='10.0.1.1/8' )

    sta1 = net.addStation( 'sta1', mac='00:00:00:00:00:02', ip='10.0.0.2/8', position='50,50,0' )
    sta2 = net.addStation( 'sta2', mac='00:00:00:00:00:03', ip='10.0.0.3/8', position='40,50,0')
    sta3 = net.addStation( 'sta3', mac='00:00:00:00:00:04', ip='10.0.0.4/8', position='20,50,0' )

    ap1 = net.addAccessPoint( 'ap1', ssid= 'new-ssid', mode= 'g', channel= '5', position='25,50,0', range='35' )
    ap2 = net.addAccessPoint( 'ap2', ssid= 'new-ssid', mode= 'g', channel= '5', position='75,50,0', range='35' )

    c1 = net.addController( 'c1' )

    s1 = net.addSwitch('s1')

    #net.runAlternativeModule('../module/mac80211_hwsim.ko')

    print "*** Configuring wifi nodes"
    net.configureWifiNodes()

    print "*** Associating and Creating links"

    net.addLink(ap1, s1)
    net.addLink(ap2, s1)
    net.addLink(s1, c1)
    #net.addLink(ap1, ap2)

    net.addLink(s1, h1)
    net.addLink(s1, h2)

    net.addLink(ap1, sta1)
    net.addLink(ap1, sta2)
    net.addLink(ap1, sta3)

    print "*** Starting network"
    net.build()
    c1.start()
    ap1.start( [c1] )
    ap2.start( [c1] )

    """uncomment to plot graph"""
    net.plotGraph(max_x=100, max_y=100)

    net.startMobility(startTime=0)
    net.mobility(sta1, 'start', time=1, position='0.0,50.0,0.0')
    net.mobility(sta1, 'stop', time=30, position='100.0,50.0,0.0')
    net.stopMobility(stopTime=31)

    print "*** Running CLI"
    CLI( net )

    print "*** Stopping network"
    net.stop()

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

如前所述,我什至无法 ping h1 和 h2 :( 我什至尝试使用 RemoteController 但得到了相同的结果。 知道哪里出了问题吗?

请考虑以下更改:

from mininet.node import Controller, RemoteController, OVSKernelAP, OVSSwitch
net = Mininet( controller=Controller, link=TCLink, accessPoint=OVSKernelAP, switch=OVSSwitch )
c1 = net.addController( 'c1', controller=Controller )
s3 = net.addSwitch('s3')

删除:
net.addLink(s1, c1)

添加:
s3.start( [c1] )

请注意,如果您将 ap 和 switch 设置为相同的 ID(例如 s1、ap1),它们将默认具有相同的 DPID。所以,我不得不将 s1 重命名为 s3。另一方面,您可以在添加节点时将DPID定义为参数。