0

我有这个 mininet-wifi 拓扑脚本

def topology(args):

    "Create a network."
    net = Mininet_wifi(controller=RemoteController, roads=10,
                       link=wmediumd, wmediumd_mode=interference)

    info("*** Creating nodes\n")
    for id in range(0, 10):
        min_ = randint(1, 4)
        max_ = randint(11, 30)
        net.addCar('car%s' % (id+1), wlans=2, min_speed=min_, max_speed=max_)

    rsu11 = net.addAccessPoint('RSU11', ssid='RSU11', mode='g', channel='1')
    rsu12 = net.addAccessPoint('RSU12', ssid='RSU12', mode='g', channel='6')
    rsu13 = net.addAccessPoint('RSU13', ssid='RSU13', mode='g', channel='1')
    rsu14 = net.addAccessPoint('RSU14', ssid='RSU14', mode='g', channel='6')
    #c1 = net.addController('c1')
    c1 = net.addController('c1', controller=RemoteController, ip='172.17.0.2', port=6633)
    c2 = net.addController('c2', controller=RemoteController, ip='172.17.0.3', port=6633)
    c3 = net.addController('c3', controller=RemoteController, ip='172.17.0.4', port=6633)
    info("*** Configuring Propagation Model\n")
    net.setPropagationModel(model="logDistance", exp=3)

    info("*** Configuring wifi nodes\n")
    net.configureWifiNodes()

    info("*** Associating and Creating links\n")
    net.addLink(rsu11, rsu12)
    net.addLink(rsu11, rsu13)
    net.addLink(rsu11, rsu14)
    for car in net.cars:
        net.addLink(car, intf='%s-wlan1' % car,
                    cls=mesh, ssid='mesh-ssid', channel=5)

    if '-p' not in args:
        net.plotGraph(max_x=1000, max_y=1000)

    net.startMobility(time=0)

    info("*** Starting network\n")
    net.build()
    c1.start()
    c2.start()
    c3.start()
    rsu11.start([c1])
    rsu12.start([c1])
    rsu13.start([c2])
    rsu14.start([c3])

    for id, car in enumerate(net.cars):
        car.setIP('192.168.0.%s/24' % (id+1), intf='%s-wlan0' % car)
        car.setIP('192.168.1.%s/24' % (id+1), intf='%s-mp1' % car)
    

我尝试过这种方式来测试一台服务器和另外两个客户端之间的连接性

    car1,car2,car3= net.get('car1','car2','car3')
    car1.cmd('iperf -s -e -u --histogram=100u,2000 --realtime &')
    car2.cmd('iperf -c 192.168.0.1 --isochronous=60:100m,10m -i1 -u -e --realtime > server.txt')
    car3.cmd('iperf -c 192.168.0.1 --isochronous=60:100m,10m -i1 -u -e --realtime >> server.txt') 
    p=Popen('''cat server.txt | grep % | tr , " " | awk '{print $10" "$11" "$13" "$16" "$17}' >> test.txt''', shell=True,
          stdout=PIPE, stderr=PIPE)

它运行良好,但是,现在我想car1在 for 循环中测试作为服务器和所有其他汽车作为客户端之间的连接性。任何人都可以帮助我吗?

4

0 回答 0