使用Mininet-wifi仿真Software-Defined-Wireless-Network

网络上有很多工具可以模拟SDN网络,但是,很少有工具考虑了软件定义无线网络(SDWN)。Mininet-WIFI就是一个可以模拟SDWN的软件。

安装:
step 1: $ sudo apt-get install git

step 2: $ git clone https://github.com/intrig-unicamp/mininet-wifi

step 3: $ cd mininet-wifi

step 4: $ sudo util/install.sh -Wnfv
(目前只支持Ubuntu, Debian 和 Fedora)

如果熟悉Docker,也可以直接使用 Image: (ramonfontes/mininet-wifi)

开始使用:

sudo mn –wifi –ssid=new_ssid
上面的命令会创建由1个AP和2个STA组成的网络。

在Examples目录下,还有很多其他的用例。
/examples/2AccessPoints.py
/examples/adhoc.py
/examples/handover.py
/examples/multipleWlan.py
/examples/simplewifitopology.py
/examples/wifiAccessControl.py
/examples/wifimesh.py
/examples/wifiMobility.py
/examples/wifiMobilityModel.py
/examples/wifiPropagationModel.py
/examples/wifiPosition.py
/examples/wifiStationsAndHosts.py

代码简析
最基础的代码是wifi.py,位于mininet目录下。WIFI相关的结构,操作都在这里定义了。
了解WIFI的,可以从代码上看出mininet-wifi调用的是Linux的wireless命令。
这里写图片描述

除了mininet-wifi已经提供的,在上面列出来的case,如果想自己定义case,可以参考2AccessPoints.py和handover.py,基本的命令在这两个文件里都有。下面的代码,是一个简单的例子。

def topology():
    "Create a network."
    net = Mininet( controller=Controller, link=TCLink, switch=OVSKernelSwitch )

    print "*** Creating nodes, host, sta, ap, controller"
    sta1 = net.addStation( 'sta1', ip="192.168.0.1" )
    sta2 = net.addStation( 'sta2', ip="192.168.0.2" )
    sta3 = net.addStation( 'sta3', ip="192.168.0.3" )
    sta4 = net.addStation( 'sta4', ip="192.168.0.4" )
    h1 = net.addHost( 'h1', mac='00:00:00:00:00:05', ip='192.168.0.5' )
    ap1 = net.addBaseStation( 'ap1', ssid="ssid_1", mode="g", channel="1" )
    ap2 = net.addBaseStation( 'ap2', ssid="ssid_2", mode="b", channel="6" )
    c0 = net.addController('c0', controller=Controller, ip='127.0.0.1', port=6633 )

    print "*** Adding Link"
    net.addLink(ap1, ap2) #wired connection
    net.addLink(sta1, ap1)
    net.addLink(sta2, ap1)
    net.addLink(sta3, ap2)
    net.addLink(sta4, ap2)
    net.addLink(h1, ap1)  #wired connection

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

    print "***roaming"
    net.startMobility(startTime=0)
    net.mobility('sta1', 'start', time=1, position='10,45,0')
    net.mobility('sta2', 'start', time=2, position='10,40,0')
    net.mobility('sta1', 'stop', time=12, position='15,10,0')
    net.mobility('sta2', 'stop', time=22, position='25,25,0')
    net.stopMobility(stopTime=23)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值