【问题标题】:Mininet-wifi custom topologyMininet-wifi 自定义拓扑
【发布时间】:2017-08-21 13:20:27
【问题描述】:

起初我想创建一个复杂的拓扑(更多的交换机相互连接),但即使是这个简单的拓扑也无法正常工作。我无法获得有效的连接,例如。 '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 但得到了相同的结果。 知道可能出了什么问题吗?

【问题讨论】:

    标签: python wifi sdn mininet topology


    【解决方案1】:

    请考虑以下更改:

    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 定义为参数。

    【讨论】:

      猜你喜欢
      • 2015-11-28
      • 2016-09-05
      • 2015-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-13
      • 2015-08-10
      • 1970-01-01
      相关资源
      最近更新 更多