def myNetwork():

    net = Mininet_wifi(link=wmediumd,
                       wmediumd_mode=interference,
                       ipBase='10.0.0.0/8')

    info('*** Adding controller\n')
    info('*** Add switches/APs\n')

    info('*** Add hosts/stations\n')
    sta1 = net.addStation('sta1', ip='10.0.0.1', position='50,10,0')
    sta2 = net.addStation('sta2',
                          ip='10.0.0.2',
                          position='100,10,0',
                          color='blue')
    sta3 = net.addStation('sta3',
                          ip='10.0.0.3',
                          position='170,10,0',
                          color='brown')
    sta4 = net.addStation('sta4',
                          ip='10.0.0.4',
                          position='50,80,0',
                          color='purple')
    sta5 = net.addStation('sta5',
                          ip='10.0.0.5',
                          position='110,80,0',
                          color='y')
    sta6 = net.addStation('sta6',
                          ip='10.0.0.6',
                          position='230,40,0',
                          color='r')

    info("*** Configuring Propagation Model\n")
    net.setPropagationModel(model="logDistance", exp=4)

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

    info('*** Add links\n')
    net.addLink(sta2,
                cls=adhoc,
                ssid='adhocNet',
                proto='olsr',
                mode='g',
                channel=5,
                intf='sta2-wlan0')
    net.addLink(sta3,
                cls=adhoc,
                ssid='adhocNet',
                proto='olsr',
                mode='g',
                channel=5,
                intf='sta3-wlan0')
    net.addLink(sta1,
                cls=adhoc,
                ssid='adhocNet',
                proto='olsr',
                mode='g',
                channel=5,
                intf='sta1-wlan0')
    net.addLink(sta4,
                cls=adhoc,
                ssid='adhocNet',
                proto='olsr',
                mode='g',
                channel=5,
                intf='sta4-wlan0')
    net.addLink(sta5,
                cls=adhoc,
                ssid='adhocNet',
                proto='olsr',
                mode='g',
                channel=5,
                intf='sta5-wlan0')
    net.addLink(sta6,
                cls=adhoc,
                ssid='adhocNet',
                proto='olsr',
                mode='g',
                channel=5,
                intf='sta6-wlan0')

    net.plotGraph(max_x=300, max_y=100)

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

    info('*** Starting switches/APs\n')

    info('*** Post configure nodes\n')

    CLI(net)
    net.stop()
def myNetwork():

    net = Mininet_wifi(topo=None,
                       build=False,
                       link=wmediumd,
                       wmediumd_mode=interference,
                       ipBase='10.0.0.0/8')

    info('*** Adding controller\n')
    info('*** Add switches/APs\n')

    info('*** Add hosts/stations\n')
    R01 = net.addStation('R01', ip='10.0.0.1', position='2.0,1.0,0')
    R02 = net.addStation('R02', ip='10.0.0.2', position='3.0,1.0,0')
    R03 = net.addStation('R03', ip='10.0.0.3', position='4.0,1.0,0')
    R04 = net.addStation('R04', ip='10.0.0.4', position='5.0,2.0,0')
    R05 = net.addStation('R05', ip='10.0.0.5', position='5.0,3.0,0')
    R06 = net.addStation('R06', ip='10.0.0.6', position='4.0,4.0,0')
    R07 = net.addStation('R07', ip='10.0.0.7', position='3.0,4.0,0')
    R08 = net.addStation('R08', ip='10.0.0.8', position='2.0,4.0,0')
    R09 = net.addStation('R09', ip='10.0.0.9', position='1.0,3.0,0')
    R10 = net.addStation('R10', ip='10.0.0.10', position='1.0,2.0,0')

    info("*** Configuring Propagation Model\n")
    net.setPropagationModel(model="logDistance", exp=3)

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

    info('*** Add links\n')
    net.addLink(R01,
                cls=adhoc,
                ssid='new-ssid',
                mode='g',
                channel=1,
                intf='R01-wlan0')
    net.addLink(R02,
                cls=adhoc,
                ssid='new-ssid',
                mode='g',
                channel=1,
                intf='R02-wlan0')
    net.addLink(R03,
                cls=adhoc,
                ssid='new-ssid',
                mode='g',
                channel=1,
                intf='R03-wlan0')
    net.addLink(R04,
                cls=adhoc,
                ssid='new-ssid',
                mode='g',
                channel=1,
                intf='R04-wlan0')
    net.addLink(R05,
                cls=adhoc,
                ssid='new-ssid',
                mode='g',
                channel=1,
                intf='R05-wlan0')
    net.addLink(R06,
                cls=adhoc,
                ssid='new-ssid',
                mode='g',
                channel=1,
                intf='R06-wlan0')
    net.addLink(R07,
                cls=adhoc,
                ssid='new-ssid',
                mode='g',
                channel=1,
                intf='R07-wlan0')
    net.addLink(R08,
                cls=adhoc,
                ssid='new-ssid',
                mode='g',
                channel=1,
                intf='R08-wlan0')
    net.addLink(R09,
                cls=adhoc,
                ssid='new-ssid',
                mode='g',
                channel=1,
                intf='R09-wlan0')
    net.addLink(R10,
                cls=adhoc,
                ssid='new-ssid',
                mode='g',
                channel=1,
                intf='R10-wlan0')

    net.plotGraph(min_x=0, min_y=0, max_x=6, max_y=5)

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

    info('*** Starting switches/APs\n')

    info('*** Post configure nodes\n')

    #    CLI(net)
    #    net.stop()

    return net
Esempio n. 3
0
def topology(args):
    "Create a network."
    net = Mininet_wifi(link=wmediumd, wmediumd_mode=interference)

    info("*** Creating nodes\n")
    if '-a' in args:
        sta1 = net.addStation('sta1', position='10,10,0', range=100)
        sta2 = net.addStation('sta2', position='50,10,0', range=100)
        sta3 = net.addStation('sta3', position='90,10,0', range=100)
    else:
        sta1 = net.addStation('sta1', ipv6='fe80::1', position='10,10,0')
        sta2 = net.addStation('sta2', ipv6='fe80::2', position='50,10,0')
        sta3 = net.addStation('sta3', ipv6='fe80::3', position='90,10,0')

    net.setPropagationModel(model="logDistance", exp=4)

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

    info("*** Creating links\n")
    # MANET routing protocols supported by proto: babel, batman and olsr
    if 'babel' in args or 'batman' in args or 'olsr' in args:
        proto = args[1]
        net.addLink(sta1,
                    cls=adhoc,
                    intf='sta1-wlan0',
                    ssid='adhocNet',
                    proto=proto,
                    mode='g',
                    channel=5,
                    ht_cap='HT40+')
        net.addLink(sta2,
                    cls=adhoc,
                    intf='sta2-wlan0',
                    ssid='adhocNet',
                    proto=proto,
                    mode='g',
                    channel=5)
        net.addLink(sta3,
                    cls=adhoc,
                    intf='sta3-wlan0',
                    ssid='adhocNet',
                    proto=proto,
                    mode='g',
                    channel=5,
                    ht_cap='HT40+')
    else:
        net.addLink(sta1,
                    cls=adhoc,
                    intf='sta1-wlan0',
                    ssid='adhocNet',
                    mode='g',
                    channel=5,
                    ht_cap='HT40+')
        net.addLink(sta2,
                    cls=adhoc,
                    intf='sta2-wlan0',
                    ssid='adhocNet',
                    mode='g',
                    channel=5)
        net.addLink(sta3,
                    cls=adhoc,
                    intf='sta3-wlan0',
                    ssid='adhocNet',
                    mode='g',
                    channel=5,
                    ht_cap='HT40+')

    info("*** Starting network\n")
    net.build()

    info("\n*** Addressing...\n")
    #sta1.setIPv6('2001::1/64', intf="sta1-wlan0")
    #sta2.setIPv6('2001::2/64', intf="sta2-wlan0")
    #sta3.setIPv6('2001::3/64', intf="sta3-wlan0")

    info("*** Running CLI\n")
    CLI_wifi(net)

    info("*** Stopping network\n")
    net.stop()
Esempio n. 4
0
def topology():

    "Create a network."
    net = Mininet_wifi(controller=Controller, accessPoint=UserAP,
                       link=wmediumd, wmediumd_mode=interference)

    info("*** Creating nodes\n")
    cars = []
    stas = []
    for x in range(0, 10):
        cars.append(x)
        stas.append(x)
    for x in range(0, 10):
        cars[x] = net.addCar('car%s' % (x),
                             wlans=1, ip='10.0.0.%s/8' % (x + 1))

    e1 = net.addAccessPoint('e1', ssid='vanet-ssid', mac='00:00:00:11:00:01',
                            mode='g', channel='1', passwd='123456789a',
                            encrypt='wpa2', position='3279.02,3736.27,0')
    e2 = net.addAccessPoint('e2', ssid='vanet-ssid', mac='00:00:00:11:00:02',
                            mode='g', channel='6', passwd='123456789a',
                            encrypt='wpa2', position='2320.82,3565.75,0')
    e3 = net.addAccessPoint('e3', ssid='vanet-ssid', mac='00:00:00:11:00:03',
                            mode='g', channel='11', passwd='123456789a',
                            encrypt='wpa2', position='2806.42,3395.22,0')
    e4 = net.addAccessPoint('e4', ssid='vanet-ssid', mac='00:00:00:11:00:04',
                            mode='g', channel='1', passwd='123456789a',
                            encrypt='wpa2', position='3332.62,3253.92,0')
    e5 = net.addAccessPoint('e5', ssid='vanet-ssid', mac='00:00:00:11:00:05',
                            mode='g', channel='6', passwd='123456789a',
                            encrypt='wpa2', position='2887.62,2935.61,0')
    e6 = net.addAccessPoint('e6', ssid='vanet-ssid', mac='00:00:00:11:00:06',
                            mode='g', channel='11', passwd='123456789a',
                            encrypt='wpa2', position='2351.68,3083.40,0')
    c1 = net.addController('c1')

    info("*** Setting bgscan\n")
    net.setBgscan(signal=-45, s_inverval=5, l_interval=10)

    info("*** Configuring Propagation Model\n")
    net.setPropagationModel(model="logDistance", exp=2)

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

    net.addLink(e1, e2)
    net.addLink(e2, e3)
    net.addLink(e3, e4)
    net.addLink(e4, e5)
    net.addLink(e5, e6)

    net.useExternalProgram(program=sumo, port=8813,
                           config_file='map.sumocfg')

    info("*** Starting network\n")
    net.build()
    c1.start()
    e1.start([c1])
    e2.start([c1])
    e3.start([c1])
    e4.start([c1])
    e5.start([c1])
    e6.start([c1])

    i = 201
    for sw in net.carsSW:
        sw.start([c1])
        os.system('ip addr add 10.0.0.%s dev %s' % (i, sw))
        i += 1

    i = 1
    j = 2
    for car in cars:
        car.setIP('192.168.0.%s/24' % i, intf='%s-wlan0' % car)
        car.setIP('192.168.1.%s/24' % i, intf='%s-eth1' % car)
        car.cmd('ip route add 10.0.0.0/8 via 192.168.1.%s' % j)
        i += 2
        j += 2

    i = 1
    j = 2
    for carsta in net.carsSTA:
        carsta.setIP('10.0.0.%s/24' % i, intf='%s-mp0' % carsta)
        carsta.setIP('192.168.1.%s/24' % j, intf='%s-eth2' % carsta)
        # May be confuse, but it allows ping to the name instead of ip addr
        carsta.setIP('10.0.0.%s/24' % i, intf='%s-wlan0' % carsta)
        carsta.cmd('echo 1 > /proc/sys/net/ipv4/ip_forward')
        i += 1
        j += 2

    for carsta1 in net.carsSTA:
        i = 1
        j = 1
        for carsta2 in net.carsSTA:
            if carsta1 != carsta2:
                carsta1.cmd('route add -host 192.168.1.%s '
                            'gw 10.0.0.%s' % (j, i))
            i += 1
            j += 2

    info("*** Running CLI\n")
    CLI_wifi(net)

    info("*** Stopping network\n")
    net.stop()
Esempio n. 5
0
def topology():
    "Create a network."
    net = Mininet_wifi(controller=Controller,
                       link=wmediumd,
                       wmediumd_mode=interference)

    info("*** Creating nodes\n")
    ap1 = net.addAccessPoint('ap1',
                             ssid="ap1-ssid",
                             mode="g",
                             channel="1",
                             position='30,30,0')
    ap2 = net.addAccessPoint('ap2',
                             ssid="ap2-ssid",
                             mode="g",
                             channel="1",
                             position='40,60,0')

    "h6 is askinng for datas while h1,h2,h3 are the UE "

    h1 = net.addHost('h1', ip="10.0.0.1", position='30,10,0')
    h2 = net.addHost('h2', ip="10.0.0.2", position='20,20,0')
    h3 = net.addHost('h3', ip="10.0.0.3", position='30,20,0')
    #h4 = net.addHost('h4', ip="10.0.0.4", position='40,20,0')
    #h5 = net.addHost('h5', ip="10.0.0.5", position='50,20,0')
    h6 = net.addHost('h6', ip="10.0.0.6", position='60,20,0')
    BS = net.addHost('BS', ip="10.0.0.7", position='30,40,0')
    c0 = net.addController('c0')

    info("*** Configuring Propagation Model\n")
    net.setPropagationModel(model="logDistance", exp=4.5)

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

    info("*** Adding Link\n")
    net.addLink(ap1, ap2, cls=_4address)  # ap1=ap, ap2=client
    net.addLink(h1, ap1)
    net.addLink(h2, ap1)
    net.addLink(h3, ap1)
    # net.addLink(h4, ap1)
    # net.addLink(h5, ap1)
    net.addLink(h6, ap1)
    net.addLink(BS, ap1)
    # net.plotGraph(max_x=100, max_y=100)

    info("*** Starting network\n")
    net.build()
    c0.start()
    ap1.start([c0])
    ap2.start([c0])

    # info("*** first cycle BS collect the info of UE\n")
    # try:
    #     thread.start_new_thread(command,(BS,"python RInfo.py 10.0.0.7 BS-eth0"))
    #     thread.start_new_thread(command,(h1,"python SInfo.py 10.0.0.1 h1-eth0 10.0.0.7"))
    #     thread.start_new_thread(command,(h2,"python SInfo.py 10.0.0.2 h2-eth0 10.0.0.7"))
    #     thread.start_new_thread(command,(h3,"python SInfo.py 10.0.0.3 h3-eth0 10.0.0.7"))

    # except:
    #     print("first cycle error")
    # time.sleep(22) #wait for collect UE info
    # print("first cycle finish")

    # # the BS start to create the UE's info
    # BSLog={
    #     "h1":{},
    #     "h2":{},
    #     "h3":{}
    #     # "h4":{},
    #     # "h5":{},
    #     # "h6":{}
    # }
    # BSLog["h1"]["flag"]=False
    # BSLog["h2"]["flag"]=False
    # BSLog["h3"]["flag"]=False
    # filename1 = "/home/shlled/mininet-wifi/Log/BSLog.json"
    # with open(filename1,'r') as f1:
    #     buffer=f1.readlines()
    #     lenth=len(buffer)
    #     print(lenth)
    #     while lenth>0:
    #         temp=buffer[lenth-1]

    #         temp=json.loads(temp)
    #         print(temp,"\n")
    #         if temp[0]["UEIP"] == "10.0.0.1" and BSLog["h1"]["flag"] == False:
    #             BSLog["h1"]["flag"] = True
    #             BSLog["h1"]["IP"] = temp[0]["UEIP"]
    #             BSLog["h1"]["POWER"] = temp[0]["UEPOWER"]
    #             BSLog["h1"]["PRICE"] = temp[0]["UEPRICE"]
    #             BSLog["h1"]["LOSS"] = temp[0]["UELOSS"]
    #             BSLog["h1"]["MAX"] = temp[0]["UEMAX"]
    #         elif temp[0]["UEIP"] == "10.0.0.2" and BSLog["h2"]["flag"] == False:
    #             BSLog["h2"]["flag"] = True
    #             BSLog["h2"]["IP"] = temp[0]["UEIP"]
    #             BSLog["h2"]["POWER"] = temp[0]["UEPOWER"]
    #             BSLog["h2"]["PRICE"] = temp[0]["UEPRICE"]
    #             BSLog["h2"]["LOSS"] = temp[0]["UELOSS"]
    #             BSLog["h2"]["MAX"] = temp[0]["UEMAX"]
    #         elif temp[0]["UEIP"] == "10.0.0.3" and BSLog["h3"]["flag"] == False:
    #             BSLog["h3"]["flag"] = True
    #             BSLog["h3"]["IP"] = temp[0]["UEIP"]
    #             BSLog["h3"]["POWER"] = temp[0]["UEPOWER"]
    #             BSLog["h3"]["PRICE"] = temp[0]["UEPRICE"]
    #             BSLog["h3"]["LOSS"] = temp[0]["UELOSS"]
    #             BSLog["h3"]["MAX"] = temp[0]["UEMAX"]
    #         lenth-=1
    #         if BSLog["h1"]["flag"] == True and BSLog["h2"]["flag"] == True and BSLog["h3"]["flag"]==True:
    #            break

    # "BS use UE info to decide which UE send which packet"

    info("*** Start sending information\n")
    "BS should not control the behavior of UE,what UE has send isn't full"
    thread_list = []
    t1 = MyThread(command, args=(h2, "python receive.py 10.0.0.2 h2-eth0"))
    thread_list.append(t1)
    distance = getDistance(h1, h2)
    t2 = MyThread(
        command,
        args=(h1, "python send.py  10.0.0.1 h1-eth0 10.0.0.2 %s msg.txt" %
              distance))
    thread_list.append(t2)
    t1.start()
    t2.start()
    for t in thread_list:
        t.join()
    #miss_pkt = thread_list[0].get_result()

    info("*** Start sending the miss pkg\n")
    #filename4 = '/home/shlled/mininet-project-fc/Stackelberg/Log/miss.txt'
    filename4 = '/media/psf/Home/Documents/GitHub/mininet-project/Stackelberg/Log/miss.txt'
    while True:
        with open(filename4, 'r+') as f4:
            buffer = f4.readlines()
            lenth = len(buffer)
            miss_pkt = buffer[lenth - 1]
        info('miss:', miss_pkt)
        if miss_pkt == 'None\n':
            print("finish collet")
            break
        t3 = threading.Thread(target=command,
                              args=(h2, "python receive.py 10.0.0.2 h2-eth0"))
        thread_list.append(t3)
        t4 = threading.Thread(
            target=command,
            args=(
                h1,
                "python send.py 10.0.0.1 h1-eth0 10.0.0.2 %s msg.txt False '%s'"
                % (distance, miss_pkt)))
        thread_list.append(t4)
        t3.start()
        t4.start()
        for t in thread_list:
            t.join()

    info("*** Running CLI\n")
    CLI_wifi(net)

    info("*** Stopping network\n")
    net.stop()
Esempio n. 6
0
def topology():
    "Create a network."
    net = Mininet_wifi(controller=Controller)

    info("*** Creating nodes\n")
    net.addStation('sta1', mac='00:00:00:00:00:02', ip='10.0.0.2/8')
    net.addStation('sta2', mac='00:00:00:00:00:03', ip='10.0.0.3/8')
    sta3 = net.addStation('sta3', mac='00:00:00:00:00:04', ip='10.0.0.4/8')
    net.addStation('sta4', mac='00:00:00:00:00:05', ip='10.0.0.5/8')
    net.addStation('sta5', mac='00:00:00:00:00:06', ip='10.0.0.6/8')
    net.addStation('sta6', mac='00:00:00:00:00:07', ip='10.0.0.7/8')
    net.addStation('sta7', mac='00:00:00:00:00:08', ip='10.0.0.8/8')
    net.addStation('sta8', mac='00:00:00:00:00:09', ip='10.0.0.9/8')
    net.addStation('sta9', mac='00:00:00:00:00:10', ip='10.0.0.10/8')
    net.addStation('sta10', mac='00:00:00:00:00:11', ip='10.0.0.11/8')
    ap1 = net.addAccessPoint('ap1',
                             ssid='ssid-ap1',
                             mode='g',
                             channel='1',
                             position='50,50,0')
    ap2 = net.addAccessPoint('ap2',
                             ssid='ssid-ap2',
                             mode='g',
                             channel='6',
                             position='70,50,0',
                             range=30)
    ap3 = net.addAccessPoint('ap3',
                             ssid='ssid-ap3',
                             mode='g',
                             channel='11',
                             position='90,50,0')
    c1 = net.addController('c1')

    net.setPropagationModel(model="logDistance", exp=5)

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

    info("*** Associating and Creating links\n")
    net.addLink(ap1, ap2)
    net.addLink(ap2, ap3)

    net.plotGraph(max_x=120, max_y=120)

    net.setMobilityModel(time=0,
                         model='RandomWayPoint',
                         max_x=120,
                         max_y=120,
                         min_v=0.3,
                         max_v=0.5,
                         seed=1,
                         ac_method='ssf')

    info("*** Starting network\n")
    net.build()
    c1.start()
    ap1.start([c1])
    ap2.start([c1])
    ap3.start([c1])

    while True:
        info('%r\n' % sta3.cmd('iw dev sta3-wlan0 link'))
        sleep(2)

    info("*** Running CLI\n")
    CLI_wifi(net)

    info("*** Stopping network\n")
    net.stop()
Esempio n. 7
0
class IGRID(object):
    net = Mininet_wifi(controller=Controller, link=wmediumd,
                       accessPoint=OVSKernelAP, noise_th=-91,  ac_method='sf')

    def __init__(self, sensors=0, smart_meters=0, actuators=0, max_x=200, max_y=200):
        self.sensors = sensors
        self.smart_meters = smart_meters
        self.actuators = actuators
        self.max_x = max_x
        self.max_y = max_y

        self.sensors_nodes = []
        self.smart_meters_nodes = []
        self.actuators_nodes = []
        self.access_points_nodes = []

        self.__addAccessPoints__()

        self.__addNodes__()

        server = self.net.addHost(
            'fog-server', mac='00:00:00:00:08:00', ip='10.10.10.254/8')

        self.switch = self.net.addSwitch('sw',  dpid=self.__int2dpid__(1))

        self.controller = self.net.addController('cl', controller=Controller)

        self.net.setPropagationModel(model="logDistance", exp=4)

        info("*** Configuring wifi nodes\n")
        self.net.configureWifiNodes()
        self.net.plotGraph(max_x=self.max_x, max_y=self.max_y)

        info("*** Enabling Association control (AP)\n")
        self.net.auto_association()

        info("*** Creating links and associations\n")
        self.net.addLink(self.switch, server)
        for ap in self.access_points_nodes:
            self.net.addLink(ap, self.switch)

    def start(self):
        self.net.build()
        self.controller.start()
        self.switch.start([self.controller])

        for ap in self.access_points_nodes:
            ap.start([self.controller])

        self.__start_actuator_server__()
        self.__start_fog_server__()
        
        mininet_cli(self.net)

    def stop(self):
        self.net.stop()

    def __int2dpid__(self, dpid):
        try:
            dpid = hex(dpid)[2:]
            dpid = '0' * (16 - len(dpid)) + dpid
            return dpid
        except IndexError:
            raise Exception('Unable to derive default datapath ID - '
                            'please either specify a dpid or use a '
                            'canonical switch name such as s23.')

    def __addNodes__(self, network='10.0.0.0/8'):
        """
            creates nodes and add it to mininet.net object which contain all spawned network devices.
        """
        control = 0
        total = self.sensors + self.smart_meters + self.actuators

        coordinates = self.__generateNodesCoordinates__(
            radius=100, reference=(100, 100))

        mac_addresses = self.__generateNodesMacAddress__()

        network = IPNetwork(network)

        add_hosts = ((total//255) * 2) + 255 // (total % 255)
        ip_addresses = [str(network[i]) for i in range(total + add_hosts) if not str(
            network[i]).endswith('.0') and not str(network[i]).endswith('.255')]

        # create sensor nodes
        for i in range(self.sensors):
            control += 1
            device_name = 'sensor%d' % (i+1)
            pos = '%s,%s,0' % (coordinates[i][0], coordinates[i][1])
            mac_addr = mac_addresses[i]
            ip_addr = ip_addresses[i]

            print("Device: ", device_name, "ip_addr:",
                  ip_addr, "position:", pos)

            node = self.net.addStation(
                device_name, mac=mac_addr, ip=ip_addr, antennaHeight='1', antennaGain='5',  position=pos)

            self.sensors_nodes.append(node)

        # create smart meter nodes
        for i in range(self.smart_meters):
            device_name = 'meters%d' % (i+1)
            pos = '%s,%s,0' % (
                coordinates[control][0], coordinates[control][1])
            mac_addr = mac_addresses[control]
            ip_addr = ip_addresses[control]

            print("Device: ", device_name, "ip_addr:",
                  ip_addr, "position:", pos)

            node = self.net.addStation(
                device_name, mac=mac_addr, ip=ip_addr, antennaHeight='1', antennaGain='5',  position=pos)

            self.smart_meters_nodes.append(node)
            control += 1

        # create actuators nodes
        for i in range(self.actuators):
            device_name = 'actuator%d' % (i+1)
            pos = '%s,%s,0' % (
                coordinates[control][0], coordinates[control][1])
            mac_addr = mac_addresses[control]
            ip_addr = ip_addresses[control]

            print("Device: ", device_name, "ip_addr:",
                  ip_addr, "position:", pos)

            node = self.net.addStation(
                device_name, mac=mac_addr, ip=ip_addr, antennaHeight='1', antennaGain='5',  position=pos)

            self.actuators_nodes.append(node)
            control += 1

    def __addAccessPoints__(self):
        ap1 = self.net.addAccessPoint(
            'ap1', ssid='iGrid-ap1', mode='g', channel='6', model='DI524', position='50,125,0', range='100')
        self.access_points_nodes.append(ap1)

        ap2 = self.net.addAccessPoint(
            'ap2', ssid='iGrid-ap2', mode='g', channel='1', model='DI524', position='100,75,0', range='100')
        self.access_points_nodes.append(ap2)

        ap3 = self.net.addAccessPoint('ap3', ssid='iGrid-ap3', mode='g',
                                      channel='3', model='DI524', position='125,125,0', range='100')
        self.access_points_nodes.append(ap3)

    def __generateNodesCoordinates__(self, radius, reference=(0, 0)):
        """
            generates a random station x, y coordinate which lies within the AP coverage radius
            and returns its X and Y coordinates as a tuple.
        """
        coordinates = []

        total_nodes = self.sensors + self.smart_meters + self.actuators
        for _ in range(0, total_nodes):
            r = radius * math.sqrt(random())
            theta = 2 * math.pi * random()
            coordinates.append((round(
                reference[0] + r * math.cos(theta)), round(reference[1] + r * math.sin(theta))))
        return coordinates

    def __generateNodesMacAddress__(self):
        """
            Returns a completely random Mac Addresses
        """
        mac_addr = []
        total = self.sensors + self.smart_meters + self.actuators
        for _ in range(total):
            mac = [0x00, 0x16, 0x3e, randint(0x00, 0x7f), randint(
                0x00, 0xff), randint(0x00, 0xff)]
            mac_addr.append(':'.join(map(lambda x: "%02x" % x, mac)))
        return mac_addr

    def __start_fog_server__(self):
        server = self.net.get('fog-server')
        server.cmd('nohup python sockets/server.py %s &' % server.IP())

    def __start_actuator_server__(self):
        for node in self.actuators_nodes:
            node.cmd('nohup python sockets/server.py %s &' % node.IP())
Esempio n. 8
0
def topology():

    "Create a network."
    net = Mininet_wifi(controller=None,
                       switch=OVSKernelSwitch,
                       link=wmediumd,
                       wmediumd_mode=interference)

    c1 = net.addController('c1',
                           controller=RemoteController,
                           ip='127.0.0.1',
                           port=6633)

    info("*** Creating nodes\n")
    cars = []
    for x in range(0, 15):
        cars.append(x)

    cars[0] = net.addCar('car0',
                         wlans=1,
                         range='50',
                         ip='200.0.10.110/8',
                         mac='00:00:00:00:00:01',
                         position='2107,250,0')
    cars[1] = net.addCar('car1',
                         wlans=1,
                         range='50',
                         ip='200.0.10.111/8',
                         mac='00:00:00:00:00:02',
                         position='2107,247,0')
    cars[2] = net.addCar('car2',
                         wlans=1,
                         range='50',
                         ip='200.0.10.112/8',
                         mac='00:00:00:00:00:03',
                         position='2104,250,0')

    cars[3] = net.addCar('car3',
                         wlans=1,
                         range='50',
                         ip='200.0.10.113/8',
                         mac='00:00:00:00:00:04',
                         position='1607,247,0')
    cars[4] = net.addCar('car4',
                         wlans=1,
                         range='50',
                         ip='200.0.10.114/8',
                         mac='00:00:00:00:00:05',
                         position='1604,250,0')

    cars[5] = net.addCar('car5',
                         wlans=1,
                         range='50',
                         ip='200.0.10.115/8',
                         mac='00:00:00:00:00:06',
                         position='1107,250,0')
    cars[6] = net.addCar('car6',
                         wlans=1,
                         range='50',
                         ip='200.0.10.116/8',
                         mac='00:00:00:00:00:07',
                         position='1104,247,0')

    cars[7] = net.addCar('car7',
                         wlans=1,
                         range='50',
                         ip='200.0.10.117/8',
                         mac='00:00:00:00:00:08',
                         position='150,250,0')
    cars[8] = net.addCar('car8',
                         wlans=1,
                         range='50',
                         ip='200.0.10.118/8',
                         mac='00:00:00:00:00:09',
                         position='200,250,0')
    cars[9] = net.addCar('car9',
                         wlans=1,
                         range='50',
                         ip='200.0.10.119/8',
                         mac='00:00:00:00:00:10',
                         position='250,250,0')
    cars[10] = net.addCar('car10',
                          wlans=1,
                          range='50',
                          ip='200.0.10.120/8',
                          mac='00:00:00:00:00:11',
                          position='300,250,0')
    cars[11] = net.addCar('car11',
                          wlans=1,
                          range='50',
                          ip='200.0.10.121/8',
                          mac='00:00:00:00:00:12',
                          position='350,250,0')
    cars[12] = net.addCar('car12',
                          wlans=1,
                          range='50',
                          ip='200.0.10.122/8',
                          mac='00:00:00:00:00:13',
                          position='400,243,0')
    cars[13] = net.addCar('car13',
                          wlans=1,
                          range='50',
                          ip='200.0.10.123/8',
                          mac='00:00:00:00:00:14',
                          position='450,243,0')
    cars[14] = net.addCar('car14',
                          wlans=1,
                          range='50',
                          ip='200.0.10.124/8',
                          mac='00:00:00:00:00:15',
                          position='500,243,0')

    rsu1 = net.addAccessPoint('rsu1',
                              ssid='rsu1',
                              mode='g',
                              channel='1',
                              range='250',
                              position='1100,250,0',
                              protocols='OpenFlow13')
    rsu2 = net.addAccessPoint('rsu2',
                              ssid='rsu2',
                              mode='g',
                              channel='6',
                              range='250',
                              position='1600,250,0',
                              protocols='OpenFlow13')
    rsu3 = net.addAccessPoint('rsu3',
                              ssid='rsu3',
                              mode='g',
                              channel='11',
                              range='250',
                              position='2100,250,0',
                              protocols='OpenFlow13')

    sw1 = net.addSwitch('sw1', dpid='9', protocols='OpenFlow13')
    sw2 = net.addSwitch('sw2', dpid='10', protocols='OpenFlow13')
    sw3 = net.addSwitch('sw3', dpid='11', protocols='OpenFlow13')
    sw4 = net.addSwitch('sw4', dpid='12', protocols='OpenFlow13')
    sw5 = net.addSwitch('sw5', dpid='13', protocols='OpenFlow13')

    server_s1 = net.addHost('server_s1', ip='200.0.10.2/8')
    server_s2 = net.addHost('server_s2', ip='200.0.10.2/8')
    server_s3 = net.addHost('server_s3', ip='200.0.10.2/8')
    server_e = net.addHost('server_e', ip='200.0.10.3/8')
    server_e2 = net.addHost('server_e2', ip='200.0.10.4/8')
    server_g = net.addHost('server_g', ip='200.0.10.5/8')

    info("*** Configuring Propagation Model\n")
    net.propagationModel(model="logDistance", exp=4.5)

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

    print("*** Creating links")
    net.addLink(rsu1, rsu2, 2, 2)
    net.addLink(rsu2, rsu3, 3, 2)
    net.addLink(server_s1, rsu1, 0, 5)
    net.addLink(server_s2, rsu2, 0, 5)
    net.addLink(server_s3, rsu3, 0, 5)
    net.addLink(server_e, sw2, 0, 1)
    net.addLink(server_e2, sw2, 0, 2)
    net.addLink(server_g, sw2, 0, 3)
    net.addLink(sw3, rsu1, 1, 3)
    net.addLink(sw4, rsu2, 2, 4)
    net.addLink(sw5, rsu3, 3, 3)
    link1 = net.addLink(sw1, sw2, 1, 4, cls=TCLink)
    link2 = net.addLink(sw3, sw1, 3, 2, cls=TCLink)
    link3 = net.addLink(sw4, sw1, 4, 3, cls=TCLink)
    link4 = net.addLink(sw5, sw1, 5, 4, cls=TCLink)

    print("*** Configuring links bandwidth")
    link1.intf1.config(bw=17)
    link2.intf1.config(bw=5)
    link3.intf1.config(bw=5)
    link4.intf1.config(bw=5)

    net.plotGraph(max_x=2400, max_y=500)

    print("*** Starting network")
    net.build()
    c1.start()
    rsu1.start([c1])
    rsu2.start([c1])
    rsu3.start([c1])
    sw1.start([c1])
    sw2.start([c1])
    sw3.start([c1])
    sw4.start([c1])
    sw5.start([c1])

    server_s1.cmd(
        'iptables -I OUTPUT -p icmp --icmp-type destination-unreachable -j DROP'
    )
    server_s2.cmd(
        'iptables -I OUTPUT -p icmp --icmp-type destination-unreachable -j DROP'
    )
    server_s3.cmd(
        'iptables -I OUTPUT -p icmp --icmp-type destination-unreachable -j DROP'
    )
    server_e.cmd(
        'iptables -I OUTPUT -p icmp --icmp-type destination-unreachable -j DROP'
    )
    server_e2.cmd(
        'iptables -I OUTPUT -p icmp --icmp-type destination-unreachable -j DROP'
    )
    server_g.cmd(
        'iptables -I OUTPUT -p icmp --icmp-type destination-unreachable -j DROP'
    )

    time.sleep(1)

    os.system(
        'ovs-vsctl set bridge rsu1 other-config:datapath-id=0000000000000006')
    os.system(
        'ovs-vsctl set bridge rsu2 other-config:datapath-id=0000000000000007')
    os.system(
        'ovs-vsctl set bridge rsu3 other-config:datapath-id=0000000000000008')

    os.system('ovs-vsctl --all destroy QoS; ovs-vsctl --all destroy Queue')

    os.system('ovs-vsctl set-manager ptcp:6632')

    time.sleep(1)

    os.system(
        'curl -X PUT -d \'"tcp:127.0.0.1:6632"\' http://localhost:8080/v1.0/conf/switches/0000000000000006/ovsdb_addr'
    )
    os.system(
        'curl -X PUT -d \'"tcp:127.0.0.1:6632"\' http://localhost:8080/v1.0/conf/switches/0000000000000007/ovsdb_addr'
    )
    os.system(
        'curl -X PUT -d \'"tcp:127.0.0.1:6632"\' http://localhost:8080/v1.0/conf/switches/0000000000000008/ovsdb_addr'
    )
    os.system(
        'curl -X PUT -d \'"tcp:127.0.0.1:6632"\' http://localhost:8080/v1.0/conf/switches/0000000000000009/ovsdb_addr'
    )
    os.system(
        'curl -X PUT -d \'"tcp:127.0.0.1:6632"\' http://localhost:8080/v1.0/conf/switches/0000000000000010/ovsdb_addr'
    )

    # print( "*** Shutting ports" )
    time.sleep(1)

    #Filtra trafego nas portas entre switches (evitar L2 loop)
    # os.system('curl -X POST -d \'{ "dpid": 6, "cookie": 0, "cookie_mask": 1, "table_id": 1, "priority": 0, "flags": 2, "match":{ "in_port":2}, "actions":[{ "type":"CLEAR_ACTIONS"}]}\' http://localhost:8080/stats/flowentry/add')
    # os.system('curl -X POST -d \'{ "dpid": 7, "cookie": 0, "cookie_mask": 1, "table_id": 1, "priority": 0, "flags": 2, "match":{ "in_port":2}, "actions":[{ "type":"CLEAR_ACTIONS"}]}\' http://localhost:8080/stats/flowentry/add')
    # os.system('curl -X POST -d \'{ "dpid": 7, "cookie": 0, "cookie_mask": 1, "table_id": 1, "priority": 0, "flags": 2, "match":{ "in_port":3}, "actions":[{ "type":"CLEAR_ACTIONS"}]}\' http://localhost:8080/stats/flowentry/add')
    # os.system('curl -X POST -d \'{ "dpid": 8, "cookie": 0, "cookie_mask": 1, "table_id": 1, "priority": 0, "flags": 2, "match":{ "in_port":2}, "actions":[{ "type":"CLEAR_ACTIONS"}]}\' http://localhost:8080/stats/flowentry/add')

    # time.sleep(1)

    os.system(
        'ovs-ofctl del-flows sw1 -O Openflow13; ovs-ofctl add-flow sw1 "table=0, priority=0, actions=goto_table:1" -O Openflow13; ovs-ofctl del-flows sw2 -O Openflow13; ovs-ofctl add-flow sw2 "table=0, priority=0, actions=goto_table:1" -O Openflow13; ovs-ofctl add-flow sw2 "table=1, priority=0, actions=CONTROLLER:65535" -O Openflow13; ovs-ofctl add-flow sw2 "table=1, priority=0, in_port=1 actions=4" -O Openflow13; ovs-ofctl add-flow sw2 "table=1, priority=0, in_port=2 actions=4" -O Openflow13; ovs-ofctl add-flow sw2 "table=1, priority=0, in_port=3 actions=4" -O Openflow13; ovs-ofctl del-flows rsu1 -O Openflow13; ovs-ofctl del-flows rsu2 -O Openflow13; ovs-ofctl del-flows rsu3 -O Openflow13; ovs-ofctl add-flow rsu1 "table=0, priority=0, actions=goto_table:1" -O Openflow13; ovs-ofctl add-flow rsu2 "table=0, priority=0, actions=goto_table:1" -O Openflow13; ovs-ofctl add-flow rsu3 "table=0, priority=0, actions=goto_table:1" -O Openflow13; ovs-ofctl add-flow rsu1 "table=1, priority=0, in_port=1, actions=3" -O Openflow13; ovs-ofctl add-flow rsu1 "table=1, priority=0, in_port=3, actions=1" -O Openflow13; ovs-ofctl add-flow rsu2 "table=1, priority=0, in_port=1, actions=4" -O Openflow13; ovs-ofctl add-flow rsu2 "table=1, priority=0, in_port=4, actions=1" -O Openflow13; ovs-ofctl add-flow rsu3 "table=1, priority=0, in_port=1, actions=3" -O Openflow13; ovs-ofctl add-flow rsu3 "table=1, priority=0, in_port=3, actions=1" -O Openflow13; ovs-ofctl add-flow rsu3 "table=1, priority=1, cookie=0x28, in_port=1, nw_dst=200.0.10.2,icmp actions=5" -O Openflow13; ovs-ofctl add-flow rsu3 "table=1, priority=1, cookie=0x28,in_port=5, actions=1" -O Openflow13; ovs-ofctl add-flow rsu3 "table=1, priority=1, cookie=0x28, in_port=1, arp actions=3,5" -O Openflow13; ovs-ofctl add-flow rsu2 "table=1, priority=1, cookie=0x28, in_port=1, nw_dst=200.0.10.2,icmp actions=5" -O Openflow13; ovs-ofctl add-flow rsu2 "table=1, priority=1, cookie=0x28,in_port=5, actions=1" -O Openflow13; ovs-ofctl add-flow rsu2 "table=1, priority=1, cookie=0x28, in_port=1, arp actions=4,5" -O Openflow13; ovs-ofctl add-flow rsu1 "table=1, priority=1, cookie=0x28, in_port=1, nw_dst=200.0.10.2,icmp actions=5" -O Openflow13; ovs-ofctl add-flow rsu1 "table=1, priority=1, cookie=0x28,in_port=5, actions=1" -O Openflow13; ovs-ofctl add-flow rsu1 "table=1, priority=1, cookie=0x28, in_port=1, arp actions=3,5" -O Openflow13; ovs-ofctl add-flow rsu1 "table=1, priority=1, cookie=0x28, in_port=1, nw_dst=200.0.10.2,udp,tp_dst=5002 actions=5" -O Openflow13; ovs-ofctl add-flow rsu2 "table=1, priority=1, cookie=0x28, in_port=1, nw_dst=200.0.10.2,udp,tp_dst=5002 actions=5" -O Openflow13; ovs-ofctl add-flow rsu3 "table=1, priority=1, cookie=0x28, in_port=1, nw_dst=200.0.10.2,udp,tp_dst=5002 actions=5" -O Openflow13; mysql -u root -pwifi -e "delete from redirect;" framework 2> /dev/null'
    )

    os.system(
        'ovs-ofctl del-flows sw3 -O Openflow13; ovs-ofctl add-flow sw3 "table=0, priority=0, actions=goto_table:1" -O Openflow13; ovs-ofctl add-flow sw3 "table=1, priority=0, in_port=3 actions=1" -O Openflow13; ovs-ofctl add-flow sw3 "table=1, priority=0, in_port=1 actions=3" -O Openflow13; ovs-ofctl del-flows sw4 -O Openflow13; ovs-ofctl add-flow sw4 "table=0, priority=0, actions=goto_table:1" -O Openflow13; ovs-ofctl add-flow sw4 "table=1, priority=0, in_port=2 actions=4" -O Openflow13; ovs-ofctl add-flow sw4 "table=1, priority=0, in_port=4 actions=2" -O Openflow13; ovs-ofctl del-flows sw5 -O Openflow13; ovs-ofctl add-flow sw5 "table=0, priority=0, actions=goto_table:1" -O Openflow13; ovs-ofctl add-flow sw5 "table=1, priority=0, in_port=3 actions=5" -O Openflow13; ovs-ofctl add-flow sw5 "table=1, priority=0, in_port=5 actions=3" -O Openflow13;'
    )

    time.sleep(2)

    os.system('mysql -u root -pwifi < ./framework_its_sdn/initialdb.sql -f &')
    os.system('./framework_its_sdn/lc_mob.sh > j2.txt &')
    time.sleep(3)
    os.system('./framework_its_sdn/central_controller2.sh > j1.txt &')
    os.system('./framework_its_sdn/local_controllers.sh > j3.txt &')

    server_s1.cmd(
        'tcpdump udp port 5002 -i server_s1-eth0 --direction=in -tttttnnvS --immediate-mode -l > server_s1.txt &'
    )
    server_s2.cmd(
        'tcpdump udp port 5002 -i server_s2-eth0 --direction=in -tttttnnvS --immediate-mode -l > server_s2.txt &'
    )
    server_s3.cmd(
        'tcpdump udp port 5002 -i server_s3-eth0 --direction=in -tttttnnvS --immediate-mode -l > server_s3.txt &'
    )
    server_e.cmd(
        'tcpdump udp port 5003 -i server_e-eth0 --direction=in -tttttnnvS --immediate-mode -l > server_e.txt &'
    )
    server_e2.cmd(
        'tcpdump udp port 5004 -i server_e2-eth0 --direction=in -tttttnnvS --immediate-mode -l > server_e2.txt &'
    )
    server_g.cmd(
        'tcpdump udp port 5005 -i server_g-eth0 --direction=in -tttttnnvS --immediate-mode -l > server_g.txt &'
    )

    time.sleep(2)

    ####################################################Scenario F

    # cars[0].setPosition('2107,250,0')
    # cars[1].setPosition('2107,247,0')
    # cars[2].setPosition('2104,250,0')

    # cars[3].setPosition('1607,247,0')
    # cars[4].setPosition('1604,250,0')

    # cars[5].setPosition('1107,250,0')
    # cars[6].setPosition('1104,247,0')

    # cars[7].setPosition('150,250,0')
    # cars[8].setPosition('200,250,0')
    # cars[9].setPosition('250,250,0')
    # cars[10].setPosition('300,250,0')
    # cars[11].setPosition('350,250,0')
    # cars[12].setPosition('400,243,0')
    # cars[13].setPosition('450,243,0')
    # cars[14].setPosition('500,243,0')

    for x in xrange(0, 7):

        cars[x].cmd(
            'tcpdump -i car%d-wlan0 --direction=out -tttttnnvS --immediate-mode -l > car%d.txt &'
            % (x, x))

        print("*** Car[%d] connect to server_s at 500kbps" % x)
        cars[x].cmdPrint(
            "timeout 330 hping3 --udp -p 5002 -i u24000 -d 1470 200.0.10.2 -q &"
        )
        # cars[x].cmdPrint("ping 200.0.10.2 -i 1 -c 330  > ping%d_s.txt &" %x)
        cars[x].cmdPrint("rm -f ping%d_s.txt" % x)
        cars[x].cmdPrint(
            "ping 200.0.10.2 -i 1 -c 330 | while read line; do echo $(date +%%s) - $line >> ping%d_s.txt; done &"
            % x)

        print("*** Car[%d] connect to server_e at 500kbps" % x)
        cars[x].cmdPrint(
            "timeout 330 hping3 --udp -p 5003 -i u24000 -d 1470 200.0.10.3 -q &"
        )
        # cars[x].cmdPrint("ping 200.0.10.3 -i 1 -c 330  > ping%d_e.txt &" %x)
        cars[x].cmdPrint("rm -f ping%d_e.txt" % x)
        cars[x].cmdPrint(
            "ping 200.0.10.3 -i 1 -c 330 | while read line; do echo $(date +%%s) - $line >> ping%d_e.txt; done &"
            % x)

        print("*** Car[%d] connect to server_e2 at 1Mbps" % x)
        cars[x].cmdPrint(
            "timeout 330 hping3 --udp -p 5004 -i u12000 -d 1470 200.0.10.4 -q &"
        )
        # cars[x].cmdPrint("ping 200.0.10.4 -i 1 -c 330  > ping%d_e2.txt &" %x)
        cars[x].cmdPrint("rm -f ping%d_e2.txt" % x)
        cars[x].cmdPrint(
            "ping 200.0.10.4 -i 1 -c 330 | while read line; do echo $(date +%%s) - $line >> ping%d_e2.txt; done &"
            % x)

        print("*** Car[%d] connect to server_g at 500kbps" % x)
        cars[x].cmdPrint(
            "timeout 330 hping3 --udp -p 5005 -i u24000 -d 1470 200.0.10.5 -q &"
        )
        # cars[x].cmdPrint("ping 200.0.10.5 -i 1 -c 330  > ping%d_g.txt &" %x)
        cars[x].cmdPrint("rm -f ping%d_g.txt" % x)
        cars[x].cmdPrint(
            "ping 200.0.10.5 -i 1 -c 330 | while read line; do echo $(date +%%s) - $line >> ping%d_g.txt; done &"
            % x)

    time.sleep(330)

    #########################################################################Scenario C1 (t2)

    # cars[0].setPosition('2107,250,0')
    # cars[1].setPosition('2107,247,0')
    # cars[2].setPosition('2104,250,0')
    cars[3].setPosition('2104,247,0')
    cars[4].setPosition('2101,250,0')

    cars[5].setPosition('1607,247,0')

    # cars[6].setPosition('1104,247,0')

    # cars[7].setPosition('150,250,0')
    # cars[8].setPosition('200,250,0')
    # cars[9].setPosition('250,250,0')
    # cars[10].setPosition('300,250,0')
    # cars[11].setPosition('350,250,0')
    # cars[12].setPosition('400,243,0')
    # cars[13].setPosition('450,243,0')
    # cars[14].setPosition('500,243,0')

    for x in xrange(0, 7):

        cars[x].cmd(
            'tcpdump -i car%d-wlan0 --direction=out -tttttnnvS --immediate-mode -l > car%d.txt &'
            % (x, x))

        print("*** Car[%d] connect to server_s at 500kbps" % x)
        cars[x].cmdPrint(
            "timeout 330 hping3 --udp -p 5002 -i u24000 -d 1470 200.0.10.2 -q &"
        )
        # cars[x].cmdPrint("ping 200.0.10.2 -i 1 -c 330  > ping%d_s.txt &" %x)
        cars[x].cmdPrint("rm -f ping%d_s.txt" % x)
        cars[x].cmdPrint(
            "ping 200.0.10.2 -i 1 -c 330 | while read line; do echo $(date +%%s) - $line >> ping%d_s.txt; done &"
            % x)

        print("*** Car[%d] connect to server_e at 500kbps" % x)
        cars[x].cmdPrint(
            "timeout 330 hping3 --udp -p 5003 -i u24000 -d 1470 200.0.10.3 -q &"
        )
        # cars[x].cmdPrint("ping 200.0.10.3 -i 1 -c 330  > ping%d_e.txt &" %x)
        cars[x].cmdPrint("rm -f ping%d_e.txt" % x)
        cars[x].cmdPrint(
            "ping 200.0.10.3 -i 1 -c 330 | while read line; do echo $(date +%%s) - $line >> ping%d_e.txt; done &"
            % x)

        print("*** Car[%d] connect to server_e2 at 1Mbps" % x)
        cars[x].cmdPrint(
            "timeout 330 hping3 --udp -p 5004 -i u12000 -d 1470 200.0.10.4 -q &"
        )
        # cars[x].cmdPrint("ping 200.0.10.4 -i 1 -c 330  > ping%d_e2.txt &" %x)
        cars[x].cmdPrint("rm -f ping%d_e2.txt" % x)
        cars[x].cmdPrint(
            "ping 200.0.10.4 -i 1 -c 330 | while read line; do echo $(date +%%s) - $line >> ping%d_e2.txt; done &"
            % x)

        print("*** Car[%d] connect to server_g at 500kbps" % x)
        cars[x].cmdPrint(
            "timeout 330 hping3 --udp -p 5005 -i u24000 -d 1470 200.0.10.5 -q &"
        )
        # cars[x].cmdPrint("ping 200.0.10.5 -i 1 -c 330  > ping%d_g.txt &" %x)
        cars[x].cmdPrint("rm -f ping%d_g.txt" % x)
        cars[x].cmdPrint(
            "ping 200.0.10.5 -i 1 -c 330 | while read line; do echo $(date +%%s) - $line >> ping%d_g.txt; done &"
            % x)

    time.sleep(330)

    #########################################################################Scenario C2 (t3)

    # cars[0].setPosition('2107,250,0')
    # cars[1].setPosition('2107,247,0')
    # cars[2].setPosition('2104,250,0')
    # cars[3].setPosition('2104,247,0')
    # cars[4].setPosition('2101,250,0')

    # cars[5].setPosition('1607,247,0')
    cars[6].setPosition('1604,247,0')
    cars[7].setPosition('1607,250,0')
    cars[8].setPosition('1601,247,0')

    cars[9].setPosition('1107,250,0')
    cars[10].setPosition('1104,247,0')

    # cars[11].setPosition('350,250,0')
    # cars[12].setPosition('400,243,0')
    # cars[13].setPosition('450,243,0')
    # cars[14].setPosition('500,243,0')

    for x in xrange(0, 11):

        cars[x].cmd(
            'tcpdump -i car%d-wlan0 --direction=out -tttttnnvS --immediate-mode -l > car%d.txt &'
            % (x, x))

        print("*** Car[%d] connect to server_s at 500kbps" % x)
        cars[x].cmdPrint(
            "timeout 330 hping3 --udp -p 5002 -i u24000 -d 1470 200.0.10.2 -q &"
        )
        # cars[x].cmdPrint("ping 200.0.10.2 -i 1 -c 330  > ping%d_s.txt &" %x)
        cars[x].cmdPrint("rm -f ping%d_s.txt" % x)
        cars[x].cmdPrint(
            "ping 200.0.10.2 -i 1 -c 330 | while read line; do echo $(date +%%s) - $line >> ping%d_s.txt; done &"
            % x)

        print("*** Car[%d] connect to server_e at 500kbps" % x)
        cars[x].cmdPrint(
            "timeout 330 hping3 --udp -p 5003 -i u24000 -d 1470 200.0.10.3 -q &"
        )
        # cars[x].cmdPrint("ping 200.0.10.3 -i 1 -c 330  > ping%d_e.txt &" %x)
        cars[x].cmdPrint("rm -f ping%d_e.txt" % x)
        cars[x].cmdPrint(
            "ping 200.0.10.3 -i 1 -c 330 | while read line; do echo $(date +%%s) - $line >> ping%d_e.txt; done &"
            % x)

        print("*** Car[%d] connect to server_e2 at 1Mbps" % x)
        cars[x].cmdPrint(
            "timeout 330 hping3 --udp -p 5004 -i u12000 -d 1470 200.0.10.4 -q &"
        )
        # cars[x].cmdPrint("ping 200.0.10.4 -i 1 -c 330  > ping%d_e2.txt &" %x)
        cars[x].cmdPrint("rm -f ping%d_e2.txt" % x)
        cars[x].cmdPrint(
            "ping 200.0.10.4 -i 1 -c 330 | while read line; do echo $(date +%%s) - $line >> ping%d_e2.txt; done &"
            % x)

        print("*** Car[%d] connect to server_g at 500kbps" % x)
        cars[x].cmdPrint(
            "timeout 330 hping3 --udp -p 5005 -i u24000 -d 1470 200.0.10.5 -q &"
        )
        # cars[x].cmdPrint("ping 200.0.10.5 -i 1 -c 330  > ping%d_g.txt &" %x)
        cars[x].cmdPrint("rm -f ping%d_g.txt" % x)
        cars[x].cmdPrint(
            "ping 200.0.10.5 -i 1 -c 330 | while read line; do echo $(date +%%s) - $line >> ping%d_g.txt; done &"
            % x)

    time.sleep(330)

    #########################################################################Scenario C3 (t4)

    # cars[0].setPosition('2107,250,0')
    # cars[1].setPosition('2107,247,0')
    # cars[2].setPosition('2104,250,0')
    # cars[3].setPosition('2104,247,0')
    # cars[4].setPosition('2101,250,0')

    # cars[5].setPosition('1607,247,0')
    # cars[6].setPosition('1604,247,0')
    # cars[7].setPosition('1607,250,0')
    # cars[8].setPosition('1601,247,0')
    cars[9].setPosition('1604,250,0')
    cars[10].setPosition('1601,250,0')

    cars[11].setPosition('1107,250,0')
    cars[12].setPosition('1107,247,0')
    cars[13].setPosition('1104,250,0')
    cars[14].setPosition('1104,247,0')

    for x in xrange(0, 15):

        cars[x].cmd(
            'tcpdump -i car%d-wlan0 --direction=out -tttttnnvS --immediate-mode -l > car%d.txt &'
            % (x, x))

        print("*** Car[%d] connect to server_s at 500kbps" % x)
        cars[x].cmdPrint(
            "timeout 330 hping3 --udp -p 5002 -i u24000 -d 1470 200.0.10.2 -q &"
        )
        # cars[x].cmdPrint("ping 200.0.10.2 -i 1 -c 330  > ping%d_s.txt &" %x)
        cars[x].cmdPrint("rm -f ping%d_s.txt" % x)
        cars[x].cmdPrint(
            "ping 200.0.10.2 -i 1 -c 330 | while read line; do echo $(date +%%s) - $line >> ping%d_s.txt; done &"
            % x)

        print("*** Car[%d] connect to server_e at 500kbps" % x)
        cars[x].cmdPrint(
            "timeout 330 hping3 --udp -p 5003 -i u24000 -d 1470 200.0.10.3 -q &"
        )
        # cars[x].cmdPrint("ping 200.0.10.3 -i 1 -c 330  > ping%d_e.txt &" %x)
        cars[x].cmdPrint("rm -f ping%d_e.txt" % x)
        cars[x].cmdPrint(
            "ping 200.0.10.3 -i 1 -c 330 | while read line; do echo $(date +%%s) - $line >> ping%d_e.txt; done &"
            % x)

        print("*** Car[%d] connect to server_e2 at 1Mbps" % x)
        cars[x].cmdPrint(
            "timeout 330 hping3 --udp -p 5004 -i u12000 -d 1470 200.0.10.4 -q &"
        )
        # cars[x].cmdPrint("ping 200.0.10.4 -i 1 -c 330  > ping%d_e2.txt &" %x)
        cars[x].cmdPrint("rm -f ping%d_e2.txt" % x)
        cars[x].cmdPrint(
            "ping 200.0.10.4 -i 1 -c 330 | while read line; do echo $(date +%%s) - $line >> ping%d_e2.txt; done &"
            % x)

        print("*** Car[%d] connect to server_g at 500kbps" % x)
        cars[x].cmdPrint(
            "timeout 330 hping3 --udp -p 5005 -i u24000 -d 1470 200.0.10.5 -q &"
        )
        # cars[x].cmdPrint("ping 200.0.10.5 -i 1 -c 330  > ping%d_g.txt &" %x)
        cars[x].cmdPrint("rm -f ping%d_g.txt" % x)
        cars[x].cmdPrint(
            "ping 200.0.10.5 -i 1 -c 330 | while read line; do echo $(date +%%s) - $line >> ping%d_g.txt; done &"
            % x)

    time.sleep(330)

    #     time.sleep(2)
    #     os.system('echo T1 > rsuocp.txt; echo RSU3 >> rsuocp.txt; hostapd_cli -i rsu3-wlan1 all_sta | grep : >> rsuocp.txt; echo RSU2 >> rsuocp.txt; hostapd_cli -i rsu2-wlan1 all_sta | grep : >> rsuocp.txt;  echo RSU1 >> rsuocp.txt; hostapd_cli -i rsu1-wlan1 all_sta | grep : >> rsuocp.txt; ')

    os.system('pkill tcpdump')
    os.system('pkill hping3')
    os.system('pkill ping')
    time.sleep(2)

    info("*** Running CLI\n")
    CLI_wifi(net)

    info("*** Stopping network\n")
    net.stop()

    os.system('fuser -k ./framework_its_sdn/lc_mob.sh')
    os.system('fuser -k ./framework_its_sdn/central_controller2.sh')
    os.system('fuser -k ./framework_its_sdn/local_controllers.sh')
    server_s1.cmd('iptables -D OUTPUT 1')
    server_s2.cmd('iptables -D OUTPUT 1')
    server_s3.cmd('iptables -D OUTPUT 1')
    server_e.cmd('iptables -D OUTPUT 1')
    server_e2.cmd('iptables -D OUTPUT 1')
    server_g.cmd('iptables -D OUTPUT 1')
Esempio n. 9
0
def topology():

    "Create a network."
    net = Mininet_wifi(link=wmediumd, wmediumd_mode=interference)

    info("*** Creating nodes\n")
    sta1 = net.addStation('sta1',
                          ip='10.0.0.1/8',
                          position='50,0,0',
                          encrypt='wpa2')
    ap1 = net.addStation('ap1',
                         mac='02:00:00:00:01:00',
                         ip='10.0.0.101/8',
                         position='10,30,0')
    ap2 = net.addStation('ap2',
                         mac='02:00:00:00:02:00',
                         ip='10.0.0.102/8',
                         position='100,30,0')

    info("*** Configuring Propagation Model\n")
    net.setPropagationModel(model="logDistance", exp=3.5)

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

    ap1.setMasterMode(intf='ap1-wlan0',
                      ssid='handover',
                      channel='1',
                      ieee80211r=True,
                      mobility_domain='a1b2',
                      passwd='123456789a',
                      encrypt='wpa2')
    ap2.setMasterMode(intf='ap2-wlan0',
                      ssid='handover',
                      channel='6',
                      ieee80211r=True,
                      mobility_domain='a1b2',
                      passwd='123456789a',
                      encrypt='wpa2')

    info("*** Plotting Graph\n")
    net.plotGraph(min_x=-100, min_y=-100, max_x=200, max_y=200)

    info("*** Starting network\n")
    net.build()

    sta1.cmd("iw dev sta1-wlan0 interface add mon0 type monitor")
    sta1.cmd("ifconfig mon0 up")

    sleep(10)
    # We need AP scanning. Otherwise, roam won't wok
    # This terminal automatically closes after 10 seg.
    makeTerm(sta1,
             title='Scanning',
             cmd="bash -c 'echo \"AP Scanning\" && iw dev sta1-wlan0 scan;'")
    # Run the FT test
    makeTerm(sta1,
             title='KrackAttack',
             cmd="bash -c 'cd krackattack && python krack-ft-test.py;'")

    info("*** Running CLI\n")
    CLI(net)

    info("*** Stopping network\n")
    net.stop()
def topology():
    "Create a network."
    net = Mininet_wifi(controller=RemoteController,
                       accessPoint=UserAP,
                       link=wmediumd,
                       wmediumd_mode=interference)

    info("*** Creating nodes\n")
    sta1 = net.addStation('sta1', position='15,20,0')
    sta2 = net.addStation('sta2', position='35,20,0')
    ap1 = net.addAccessPoint('ap1',
                             mac='00:00:00:00:00:01',
                             ssid="handover",
                             mode="g",
                             channel="1",
                             passwd='123456789a',
                             encrypt='wpa2',
                             position='10,30,0')
    ap2 = net.addAccessPoint('ap2',
                             mac='00:00:00:00:00:02',
                             ssid="handover",
                             mode="g",
                             channel="6",
                             passwd='123456789a',
                             encrypt='wpa2',
                             position='60,30,0')
    ap3 = net.addAccessPoint('ap3',
                             mac='00:00:00:00:00:03',
                             ssid="handover",
                             mode="g",
                             channel="1",
                             passwd='123456789a',
                             encrypt='wpa2',
                             position='120,100,0')
    h1 = net.addHost('h1')
    h2 = net.addHost('h2')
    h3 = net.addHost('h3')
    c1 = net.addController('c1', controller=RemoteController)

    info("*** Configuring Propagation Model\n")
    net.setPropagationModel(model="logDistance", exp=3.5)

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

    info("*** Creating links\n")
    net.addLink(ap1, ap2)
    net.addLink(ap2, ap3)
    net.addLink(h1, ap1)
    net.addLink(h2, ap2)
    net.addLink(h3, ap3)

    net.plotGraph(min_x=-100, min_y=-100, max_x=200, max_y=200)

    info("*** Starting network\n")
    net.build()
    c1.start()
    ap1.start([c1])
    ap2.start([c1])
    ap3.start([c1])

    sta1.cmd('wpa_cli -i sta1-wlan0 roam 00:00:00:00:00:01')
    sta2.cmd('wpa_cli -i sta2-wlan0 roam 00:00:00:00:00:01')
    sta1.cmd('./sta1_2.py &')
    sta2.cmd('./sta2_2.py &')

    info("*** Running CLI\n")
    CLI(net)

    info("*** Stopping network\n")
    net.stop()
Esempio n. 11
0
def topology():

    privateDirs = [('/var/log', '/tmp/%(name)s/var/log'),
                   ('/var/run', '/tmp/%(name)s/var/run'),
                   ('/run', '/tmp/%(name)s/run'), '/var/mn']
    station = partial(Station, privateDirs=privateDirs)
    "Create a network."
    net = Mininet_wifi(station=station)
    hshNodeTypes = {'sta1': 'human', 'sta2': 'drone', 'sta3': 'vehicle'}

    info("*** Creating nodes\n")
    sta_arg = dict()
    ap_arg = dict()
    if '-v' in sys.argv:
        sta_arg = {'nvif': 2}
    else:
        # isolate_clientes: Client isolation can be used to prevent low-level
        # bridging of frames between associated stations in the BSS.
        # By default, this bridging is allowed.
        # OpenFlow rules are required to allow communication among nodes
        ap_arg = {'client_isolation': True}

    ap1 = net.addAccessPoint('ap1',
                             protocols='OpenFlow13',
                             ssid="simpletopo",
                             mode="g",
                             channel="5",
                             **ap_arg)

    ap2 = net.addAccessPoint('ap2',
                             protocols='OpenFlow13',
                             ssid="simpletopo2",
                             mode="g",
                             channel="11",
                             **ap_arg)

    ap3 = net.addAccessPoint('ap3',
                             protocols='OpenFlow13',
                             ssid="simpletopo3",
                             mode="g",
                             channel="11",
                             **ap_arg)

    sta1 = net.addStation('sta1', **sta_arg)
    sta2 = net.addStation('sta2')
    sta3 = net.addStation('sta3')
    c0 = net.addController('c0',
                           controller=RemoteController,
                           ip='127.0.0.1',
                           port=6653)

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

    info("*** Associating Stations\n")
    net.addLink(ap1, ap2)
    net.addLink(ap2, ap3)
    net.addLink(sta1, ap1)
    net.addLink(sta2, ap2)
    net.addLink(sta3, ap3)

    info("*** Starting network\n")
    net.build()
    c0.start()
    ap1.start([c0])
    ap2.start([c0])
    ap3.start([c0])

    info("*** Setting priorities\n")
    setNodePriorities(net.aps, hshNodeTypes)

    if '-v' not in sys.argv:
        ap1.cmd('ovs-ofctl add-flow ap1 "priority=0,arp,in_port=1,'
                'actions=output:in_port,normal"')
        ap1.cmd('ovs-ofctl add-flow ap1 "priority=0,icmp,in_port=1,'
                'actions=output:in_port,normal"')
        ap1.cmd('ovs-ofctl add-flow ap1 "priority=0,udp,in_port=1,'
                'actions=output:in_port,normal"')
        ap1.cmd('ovs-ofctl add-flow ap1 "priority=0,tcp,in_port=1,'
                'actions=output:in_port,normal"')

    info("*** Starting NFD processes\n")

    lstNfdProcs = list()
    lstLogFiles = list()
    nCacheSize = 6000
    strNFDLogLevel = 'DEBUG'
    for pStation in net.stations:
        strHomeDir = '/tmp/%s/' % pStation.name
        strConfFile = strHomeDir + 'nfd.conf'
        strLogFile = strHomeDir + 'nfd.log'
        pStation.cmd('cp /usr/local/etc/ndn/nfd.conf.sample %s' % strConfFile)
        pStation.cmd('infoedit -f {} -s log.default_level -v {}'.format(
            strConfFile, strNFDLogLevel))
        pStation.cmd('infoedit -f {} -s tables.cs_max_packets -v {}'.format(
            strConfFile, nCacheSize))
        logfile = open(strLogFile, 'w')
        proc = pStation.popen("nfd --config %s" % (strConfFile),
                              shell=True,
                              stdout=logfile,
                              stderr=logfile)
        lstLogFiles.append(logfile)
        lstNfdProcs.append(proc)

    # nfd2 = sta2.popen("nfd --config /tmp/sta2/nfd.conf")
    # nfd3 = sta3.popen("nfd --config /tmp/sta3/nfd.conf")

    info("*** Creating faces and routes in sta1\n")
    sta1.cmd("nfdc face create udp://10.0.0.2")
    sta1.cmd("nfdc route add /sta2 udp://10.0.0.2")
    sta1.cmd("nfdc route add /sta3 udp://10.0.0.2")

    info("*** Creating faces and routes in sta2\n")
    sta2.cmd("nfdc face create udp://10.0.0.3")
    sta2.cmd("nfdc face create udp://10.0.0.1")
    sta2.cmd("nfdc route add /sta3 udp://10.0.0.3")

    info("*** Running CLI\n")
    CLI(net)

    info("*** Stopping NFD\n")
    for proc in lstNfdProcs:
        proc.kill()

    for pFile in lstLogFiles:
        pFile.close()

    info("*** Stopping network\n")
    net.stop()
Esempio n. 12
0
def topology():

    "Create a network."
    net = Mininet_wifi(controller=Controller, accessPoint=UserAP,
                       link=wmediumd, wmediumd_mode=interference)

    info("*** Creating nodes\n")
    for id in range(0, 10):
        net.addCar('car%s' % (id+1), wlans=2, encrypt=['wpa2,'])

    e1 = net.addAccessPoint('e1', ssid='vanet-ssid', mac='00:00:00:11:00:01',
                            mode='g', channel='1', passwd='123456789a',
                            encrypt='wpa2', position='2600,3500,0')
    e2 = net.addAccessPoint('e2', ssid='vanet-ssid', mac='00:00:00:11:00:02',
                            mode='g', channel='6', passwd='123456789a',
                            encrypt='wpa2', position='2800,3500,0')
    e3 = net.addAccessPoint('e3', ssid='vanet-ssid', mac='00:00:00:11:00:03',
                            mode='g', channel='11', passwd='123456789a',
                            encrypt='wpa2', position='3000,3500,0')
    e4 = net.addAccessPoint('e4', ssid='vanet-ssid', mac='00:00:00:11:00:04',
                            mode='g', channel='1', passwd='123456789a',
                            encrypt='wpa2', position='2600,3300,0')
    e5 = net.addAccessPoint('e5', ssid='vanet-ssid', mac='00:00:00:11:00:05',
                            mode='g', channel='6', passwd='123456789a',
                            encrypt='wpa2', position='2800,3300,0')
    e6 = net.addAccessPoint('e6', ssid='vanet-ssid', mac='00:00:00:11:00:06',
                            mode='g', channel='11', passwd='123456789a',
                            encrypt='wpa2', position='3000,3300,0')
    c1 = net.addController('c1')

    info("*** Configuring Propagation Model\n")
    net.setPropagationModel(model="logDistance", exp=2.8)

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

    net.addLink(e1, e2)
    net.addLink(e2, e3)
    net.addLink(e3, e4)
    net.addLink(e4, e5)
    net.addLink(e5, e6)
    for car in net.cars:
        net.addLink(car, intf=car.wintfs[1].name,
                    cls=mesh, ssid='mesh-ssid', channel=5)

    net.useExternalProgram(program=sumo, port=8813,
                           config_file='map.sumocfg')

    info("*** Starting network\n")
    net.build()
    c1.start()
    e1.start([c1])
    e2.start([c1])
    e3.start([c1])
    e4.start([c1])
    e5.start([c1])
    e6.start([c1])

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

    # Track the position of the nodes
    #nodes = net.cars + net.aps
    #net.telemetry(nodes=nodes, data_type='position',
    #              min_x=2200, min_y=2800,
    #              max_x=3200, max_y=3900)

    info("*** Running CLI\n")
    CLI(net)

    info("*** Stopping network\n")
    net.stop()
Esempio n. 13
0
def topology():

    "Create a network."
    net = Mininet_wifi(controller=Controller, accessPoint=UserAP,
                       link=wmediumd, wmediumd_mode=interference)

    info("*** Creating nodes\n")
    cars = []
    for id in range(0, 10):
        cars.append(net.addCar('car%s' % (id+1), wlans=2,
                               bgscan_threshold=-60,
                               s_inverval=5,
                               l_interval=10
                               ))

    e1 = net.addAccessPoint('e1', ssid='vanet-ssid', mac='00:00:00:11:00:01',
                            mode='g', channel='1', passwd='123456789a',
                            encrypt='wpa2', position='3279.02,3736.27,0')
    e2 = net.addAccessPoint('e2', ssid='vanet-ssid', mac='00:00:00:11:00:02',
                            mode='g', channel='6', passwd='123456789a',
                            encrypt='wpa2', position='2320.82,3565.75,0')
    e3 = net.addAccessPoint('e3', ssid='vanet-ssid', mac='00:00:00:11:00:03',
                            mode='g', channel='11', passwd='123456789a',
                            encrypt='wpa2', position='2806.42,3395.22,0')
    e4 = net.addAccessPoint('e4', ssid='vanet-ssid', mac='00:00:00:11:00:04',
                            mode='g', channel='1', passwd='123456789a',
                            encrypt='wpa2', position='3332.62,3253.92,0')
    e5 = net.addAccessPoint('e5', ssid='vanet-ssid', mac='00:00:00:11:00:05',
                            mode='g', channel='6', passwd='123456789a',
                            encrypt='wpa2', position='2887.62,2935.61,0')
    e6 = net.addAccessPoint('e6', ssid='vanet-ssid', mac='00:00:00:11:00:06',
                            mode='g', channel='11', passwd='123456789a',
                            encrypt='wpa2', position='2351.68,3083.40,0')
    c1 = net.addController('c1')

    info("*** Configuring Propagation Model\n")
    net.setPropagationModel(model="logDistance", exp=3.5)

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

    net.addLink(e1, e2)
    net.addLink(e2, e3)
    net.addLink(e3, e4)
    net.addLink(e4, e5)
    net.addLink(e5, e6)
    for car in cars:
        net.addLink(car, intf=car.params['wlan'][1],
                    cls=mesh, ssid='mesh-ssid', channel=5)

    net.useExternalProgram(program=sumo, port=8813,
                           config_file='map.sumocfg')

    info("*** Starting network\n")
    net.build()
    c1.start()
    e1.start([c1])
    e2.start([c1])
    e3.start([c1])
    e4.start([c1])
    e5.start([c1])
    e6.start([c1])

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

    # Track the position of the nodes
    #nodes = net.cars + net.aps
    #telemetry(nodes, data_type='position',
    #          min_x=2500, min_y=2500,
    #          max_x=4000, max_y=4000)

    info("*** Running CLI\n")
    CLI_wifi(net)

    info("*** Stopping network\n")
    net.stop()
Esempio n. 14
0
def topology():
    "Create a network."
    net = Mininet_wifi(controller=Controller,
                       link=wmediumd,
                       wmediumd_mode=interference,
                       noise_threshold=-91,
                       fading_coefficient=3)

    info("*** Creating nodes\n")

    sta1 = net.addStation('sta1',
                          position='2000,750,0',
                          antennaHeight='1',
                          antennaGain='10',
                          range='800')
    sta2 = net.addStation('sta2',
                          position='1500,500,0',
                          antennaHeight='1',
                          antennaGain='10',
                          range='800')
    sta3 = net.addStation('sta3',
                          position='1500,1500,0',
                          antennaHeight='1',
                          antennaGain='10',
                          range='800')
    sta4 = net.addStation('sta4',
                          position='2000,1250,0',
                          antennaHeight='1',
                          antennaGain='10',
                          range='800')
    sta5 = net.addStation('sta5',
                          position='2500,1500,0',
                          antennaHeight='1',
                          antennaGain='10',
                          range='800')
    sta6 = net.addStation('sta6',
                          position='2500,500,0',
                          antennaHeight='1',
                          antennaGain='10',
                          range='800')

    # ~ ap1 = net.addAccessPoint('ap1', ssid='ap1', mode='a', channel='36', position='2000,1000,0',range=800)

    # ~ c1 = net.addController('c1')

    net.setPropagationModel(model="logDistance", exp=4)

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

    info("*** Creating links\n")
    #MANET routing protocols supported by proto: olsr and batman
    net.addLink(sta1,
                cls=adhoc,
                ssid='sta1',
                proto='olsr',
                mode='g',
                channel=5,
                ht_cap='HT40+')
    net.addLink(sta2,
                cls=adhoc,
                ssid='sta2',
                proto='olsr',
                mode='g',
                channel=5,
                ht_cap='HT40+')
    net.addLink(sta3,
                cls=adhoc,
                ssid='sta3',
                proto='olsr',
                mode='g',
                channel=5,
                ht_cap='HT40+')
    net.addLink(sta4,
                cls=adhoc,
                ssid='sta4',
                proto='olsr',
                mode='g',
                channel=5,
                ht_cap='HT40+')
    net.addLink(sta5,
                cls=adhoc,
                ssid='sta5',
                proto='olsr',
                mode='g',
                channel=5,
                ht_cap='HT40+')
    net.addLink(sta6,
                cls=adhoc,
                ssid='sta6',
                proto='olsr',
                mode='g',
                channel=5,
                ht_cap='HT40+')

    net.plotGraph(max_x=4000, max_y=2000)

    #net.setMobilityModel(time=0, model='RandomWayPoint', max_x=4000, max_y=2000,min_v=5, max_v=20, seed=5)

    info("*** Starting network\n")
    net.build()
    # ~ c1.start()
    # ~ ap1.start([c1])

    info("*** Addressing...\n")

    #STA1
    #sta1.setIP('10.0.1.0/8', intf="sta1-wlan0")
    sta1.setIP('10.0.0.1/8', intf="sta1-wlan0")

    #STA2
    #sta2.setIP('10.0.2.0/16', intf="sta2-wlan0")
    sta2.setIP('10.0.0.2/8', intf="sta2-wlan0")

    #STA3
    #sta3.setIP('10.0.3.0/20', intf="sta3-wlan0")
    sta3.setIP('10.0.0.3/8', intf="sta3-wlan0")

    #STA4
    #sta4.setIP('10.0.4.0/22', intf="sta4-wlan0")
    sta4.setIP('10.0.0.4/8', intf="sta4-wlan0")

    #STA5
    #sta5.setIP('10.0.5.0/24', intf="sta5-wlan0")
    sta5.setIP('10.0.0.5/8', intf="sta5-wlan0")

    #STA6
    #sta6.setIP('10.0.6.0/26', intf="sta6-wlan0")
    sta6.setIP('10.0.0.6/8', intf="sta6-wlan0")

    #nodes = net.stations

    #positions(nodes,single=True)

    info("*** Running CLI\n")
    CLI_wifi(net)

    info("*** Stopping network\n")
    net.stop()
Esempio n. 15
0
def topology():

    h = int(sys.argv[1])

    b = float(sys.argv[2])

    d = int(sys.argv[3])

    p = float(sys.argv[4])

    "Create a network."
    #net = Mininet_wifi( controller=RemoteController, link=TCLink )

    net = Mininet_wifi(controller=Controller, link=TCLink)

    info("*** Creating nodes\n")

    for i in range(h):
        m = 'sta%s' % (i + 1)
        j = i + 1
        station.insert(i, net.addHost(m, ip='192.168.0.%s/24' % (j)))

    s3 = net.addSwitch('s3')
    server = net.addHost('server', ip='192.168.0.150/24')
    c0 = net.addController('c0')
    queue_size = (b * d * 1000) / (1500 * 8)
    queue_size = roundup(queue_size)
    info("*** Adding Link\n")
    for i in range(h):
        net.addLink(s3, station[i])
    net.addLink(server,
                s3,
                1,
                100,
                link='weird',
                bw=b,
                delay=str(d) + 'ms',
                loss=p,
                max_queue_size=queue_size)
    info("*** Starting network\n")
    net.build()
    c0.start()
    s3.start([c0])
    #info("*** Running CLI\n")
    time.sleep(05)
    subfolder = '_host_' + str(h) + '_band_' + str(b) + '_delay_' + str(
        d) + '_ploss_' + str(p)
    os.system('mkdir -p ' + subfolder)
    for i in range(h):
        stt = 'sta%s' % (i + 1)
        stta = net.get(stt)
        print stta.cmd('cd /home/raza/goDash/DashApp/src/goDASH/_host_' +
                       str(h) + '_band_' + str(b) + '_delay_' + str(d) +
                       '_ploss_' + str(p) + ' && sudo tcpdump -i ' +
                       str(stta) + '-eth0  -w ' + str(stta) + '.pcap &')

    st = []

    for i in range(h):
        m1 = 'sta%s' % (i + 1)
        m2 = net.get(m1)
        st.insert(i, m2)

    switch = net.get('s3')
    server = net.get('server')
    return st, switch, server, h, b, d, p
Esempio n. 16
0
def topology():

    os.system('service network-manager stop')

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

    ip_c0 = '10.0.0.101'
    ip_c1 = '10.0.0.102'
    ip_c2 = '10.0.0.103'
    ip_c3 = '10.0.0.104'

    info("*** Creating nodes\n")
    cars = []
    car1 = net.addStation('car1', mac='02:00:00:00:00:01',
                          position='130,180,0') #, active_scan=1)

    car2 = net.addStation('car2', mac='02:00:00:00:00:02',
                          position='230,220,0') #, active_scan=1)

    car3 = net.addStation('car3', mac='02:00:00:00:00:03',
                          position='420,200,0') #, active_scan=1)

    car4 = net.addStation('car4', mac='02:00:00:00:00:04',
                          position='420,150,0') #, active_scan=1)

    car5 = net.addStation('car5', mac='02:00:00:00:00:05',
                          position='408,150,0') #, active_scan=1)

    car6 = net.addStation('car6', mac='02:00:00:00:00:05',
                          position='410,250,0') #, active_scan=1)
    cars.append(car1)
    cars.append(car2)
    cars.append(car3)
    cars.append(car4)
    cars.append(car5)
    cars.append(car6)


    enb1 = net.addAccessPoint('enb1', mac='00:00:00:00:00:01', ssid="handover",
                             mode="g", channel="1", datapath='user',
                             passwd='123456789a', encrypt='wpa2', ieee80211r='yes',
                             mobility_domain='a1b2', dpid='1',
                             position='150,200,0', inband=True)

    enb2 = net.addAccessPoint('enb2', mac='00:00:00:00:00:02', ssid="handover",
                             mode="g", channel="1", datapath='user',
                             passwd='123456789a', encrypt='wpa2', ieee80211r='yes',
                             mobility_domain='a1b2', dpid='2',
                             position='250,200,0', color='r', inband=True)

    enb3 = net.addAccessPoint('enb3', mac='00:00:00:00:00:03', ssid="handover",
                             mode="g", channel="1", datapath='user',
                             passwd='123456789a', encrypt='wpa2', ieee80211r='yes',
                             mobility_domain='a1b2', dpid='3',
                             position='320,200,0', inband=True)

    backbone1 = net.addSwitch('backbone1', mac='00:00:00:00:00:04', dpid='4',
                              datapath='user', inband=True)
    server = net.addHost('server', ip='10.0.0.100/8')

    h1 = net.addHost('h1', ip=ip_c0)
    h2 = net.addHost('h2', ip=ip_c1)
    h3 = net.addHost('h3', ip=ip_c2)
    h4 = net.addHost('h4', ip=ip_c3)

    c0 = net.addController('c0', controller=InbandController,
                           port=6690, ip=ip_c0)
    c1 = net.addController('c1', controller=InbandController,
                           port=6691, ip=ip_c1)
    c2 = net.addController('c2', controller=InbandController,
                           port=6692, ip=ip_c2)
    c3 = net.addController('c3', controller=InbandController,
                           port=6693, ip=ip_c3)
    net.setPropagationModel(model="logDistance", exp=3.4)

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

    #c0.plot(position='50,80,0')
    #c1.plot(position='110,80,0')
    #c2.plot(position='130,80,0')
    #backbone1.plot(position='110,30,0')
    #server1.plot(position='110,10,0')

    info("*** Associating Stations\n")
    net.addLink(backbone1, enb1)
    net.addLink(backbone1, enb2)
    net.addLink(backbone1, enb3,bw=20, delay='5ms')
    net.addLink(backbone1, server)
    net.addLink(h1, enb1)
    net.addLink(h2, enb2)
    net.addLink(h3, enb3)
    net.addLink(h4, backbone1)

    net.plotGraph(max_x=500, max_y=500)

    info("*** Starting network\n")
    net.build()
    enb1.start([c0])
    enb2.start([c1])
    enb3.start([c2])
    backbone1.start([c3])

    makeTerm(h1, cmd="bash -c 'cd ryu && ./run.sh h1;'")
    makeTerm(h2, cmd="bash -c 'cd ryu && ./run.sh h2;'")
    makeTerm(h3, cmd="bash -c 'cd ryu && ./run.sh h3;'")
    makeTerm(h4, cmd="bash -c 'cd ryu && ./run.sh h4;'")

    time.sleep(3)

    enb1.cmd('sysctl net.ipv4.ip_forward=1')
    enb2.cmd('sysctl net.ipv4.ip_forward=1')
    enb3.cmd('sysctl net.ipv4.ip_forward=1')
    backbone1.cmd('sysctl net.ipv4.ip_forward=1')

    enb1.cmd('ifconfig enb1-eth3 10.0.0.201')
    enb2.cmd('ifconfig enb2-eth3 10.0.0.202')
    enb3.cmd('ifconfig enb3-eth3 10.0.0.203')
    backbone1.cmd('ifconfig backbone1-eth5 10.0.0.204')

    enb1.cmd('route add 10.0.0.101 dev enb1-eth3')
    enb2.cmd('route add 10.0.0.102 dev enb2-eth3')
    enb3.cmd('route add 10.0.0.103 dev enb3-eth3')
    backbone1.cmd('route add 10.0.0.104 dev backbone1-eth5')

    cars[0].cmd('iw dev %s-wlan0 interface '
                'add %s-mon0 type monitor'
                % (cars[0].name, cars[0].name))
    cars[0].cmd('ifconfig %s-mon0 up' % cars[0].name)

    enb1.cmd('ovs-ofctl add-flow "enb1" in_port=1,udp,tp_src=8000,actions=controller')
    enb2.cmd('ovs-ofctl add-flow "enb2" in_port=1,udp,tp_src=8000,actions=controller')
    enb3.cmd('ovs-ofctl add-flow "enb3" in_port=1,udp,tp_src=8000,actions=controller')
    backbone1.cmd('ovs-ofctl add-flow "backbone1" in_port=1,actions=output:4')
    backbone1.cmd('ovs-ofctl add-flow "backbone1" in_port=2,actions=output:4')
    backbone1.cmd('ovs-ofctl add-flow "backbone1" in_port=3,actions=output:4')
    makeTerm( server, cmd="bash -c 'iperf -s -i 1 -u > bandwidth_slicing.txt ;'" )
    makeTerm(cars[0], cmd="bash -c 'iperf -c 10.0.0.100 -u -b 50M -t 200 ;'")

    cars[0].cmd('./%s.py &' % cars[0].name)

    currentTime = time.time()
    i = 60
    j = 0
    while j<3:
        if (time.time() - currentTime) >= i:
            currentTime = time.time()
            if j == 0:
                cars[0].setPosition('240,180,0')
            else:
                cars[0].setPosition('315,180,0')
            j+=1
        #if j == 2 and (time.time() - currentTime) == 1:
        #    cars[0].cmd('wpa_cli -i car1-wlan0 scan')
        # force association due to better rssi
        #if j == 2 and (time.time() - currentTime) == 5:
        #    cars[0].cmd('wpa_cli -i car1-wlan0 scan_results')
        #    cars[0].cmd('wpa_cli -i car1-wlan0 roam 00:00:00:00:00:03')

    info("*** Running CLI\n")
    CLI_wifi(net)

    os.system('pkill -f \"xterm -title\"')
    os.system('pkill ryu-manager')
    os.system('service network-manager start')

    info("*** Stopping network\n")
    net.stop()
Esempio n. 17
0
def topology(args):
    "Create a network."
    net = Mininet_wifi(controller=Controller,
                       accessPoint=UserAP,
                       link=wmediumd,
                       wmediumd_mode=interference)

    info("*** Creating nodes\n")
    net.addStation('sta1',
                   position='15,20,0',
                   bgscan_threshold=-60,
                   s_inverval=5,
                   l_interval=10,
                   bgscan_module="simple")
    ap1 = net.addAccessPoint('ap1',
                             mac='00:00:00:00:00:01',
                             ssid="handover",
                             mode="g",
                             channel="1",
                             passwd='123456789a',
                             encrypt='wpa2',
                             position='10,30,0')
    ap2 = net.addAccessPoint('ap2',
                             mac='00:00:00:00:00:02',
                             ssid="handover",
                             mode="g",
                             channel="6",
                             passwd='123456789a',
                             encrypt='wpa2',
                             position='60,30,0')
    ap3 = net.addAccessPoint('ap3',
                             mac='00:00:00:00:00:03',
                             ssid="handover",
                             mode="g",
                             channel="1",
                             passwd='123456789a',
                             encrypt='wpa2',
                             position='120,100,0')
    c1 = net.addController('c1')

    info("*** Configuring Propagation Model\n")
    net.setPropagationModel(model="logDistance", exp=3.5)

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

    info("*** Creating links\n")
    net.addLink(ap1, ap2)
    net.addLink(ap2, ap3)

    if '-p' not in args:
        net.plotGraph(min_x=-100, min_y=-100, max_x=200, max_y=200)

    info("*** Starting network\n")
    net.build()
    c1.start()
    ap1.start([c1])
    ap2.start([c1])
    ap3.start([c1])

    info("*** Running CLI\n")
    CLI(net)

    info("*** Stopping network\n")
    net.stop()
def topology():
    "Create a network."
    net = Mininet_wifi(controller=Controller,
                       accessPoint=UserAP,
                       autoAssociation=False)

    info("*** Creating nodes\n")
    sta1 = net.addStation('sta1', position='10,60,0')
    sta2 = net.addStation('sta2', position='20,15,0')
    sta3 = net.addStation('sta3', position='10,25,0')
    sta4 = net.addStation('sta4', position='50,30,0')
    sta5 = net.addStation('sta5', position='45,65,0')
    ap1 = net.addAccessPoint('ap1',
                             vssids=4,
                             ssid='ssid,ssid1,ssid2,ssid3,ssid4',
                             mode="g",
                             channel="1",
                             position='30,40,0')
    c0 = net.addController('c0')

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

    net.plotGraph(max_x=100, max_y=100)

    sta1.setRange(15, intf=sta1.params['wlan'][0])  #sta1-wlan0
    sta2.setRange(15, intf=sta2.params['wlan'][0])
    sta3.setRange(15, intf=sta3.params['wlan'][0])
    sta4.setRange(15, intf=sta4.params['wlan'][0])
    sta5.setRange(15, intf=sta5.params['wlan'][0])

    info("*** Starting network\n")
    net.build()
    c0.start()
    ap1.start([c0])

    sleep(2)
    sta1.cmd(
        'iw dev %s connect %s %s' %
        (sta1.params['wlan'][0], ap1.params['ssid'][1], ap1.params['mac'][1]))
    sta2.cmd(
        'iw dev %s connect %s %s' %
        (sta2.params['wlan'][0], ap1.params['ssid'][2], ap1.params['mac'][2]))
    sta3.cmd(
        'iw dev %s connect %s %s' %
        (sta3.params['wlan'][0], ap1.params['ssid'][2], ap1.params['mac'][2]))
    sta4.cmd(
        'iw dev %s connect %s %s' %
        (sta4.params['wlan'][0], ap1.params['ssid'][3], ap1.params['mac'][3]))
    sta5.cmd(
        'iw dev %s connect %s %s' %
        (sta5.params['wlan'][0], ap1.params['ssid'][4], ap1.params['mac'][4]))

    ap1.cmd('dpctl unix:/tmp/ap1 meter-mod cmd=add,flags=1,meter=1 '
            'drop:rate=100')
    ap1.cmd('dpctl unix:/tmp/ap1 meter-mod cmd=add,flags=1,meter=2 '
            'drop:rate=200')
    ap1.cmd('dpctl unix:/tmp/ap1 meter-mod cmd=add,flags=1,meter=3 '
            'drop:rate=300')
    ap1.cmd('dpctl unix:/tmp/ap1 meter-mod cmd=add,flags=1,meter=4 '
            'drop:rate=400')
    ap1.cmd('dpctl unix:/tmp/ap1 flow-mod table=0,cmd=add in_port=2 '
            'meter:1 apply:output=flood')
    ap1.cmd('dpctl unix:/tmp/ap1 flow-mod table=0,cmd=add in_port=3 '
            'meter:2 apply:output=flood')
    ap1.cmd('dpctl unix:/tmp/ap1 flow-mod table=0,cmd=add in_port=4 '
            'meter:3 apply:output=flood')
    ap1.cmd('dpctl unix:/tmp/ap1 flow-mod table=0,cmd=add in_port=5 '
            'meter:4 apply:output=flood')

    info("*** Running CLI\n")
    CLI_wifi(net)

    info("*** Stopping network\n")
    net.stop()
Esempio n. 19
0
from mn_wifi.net import Mininet_wifi
from mn_wifi.cli import CLI
from mininet.node import RemoteController
from mn_wifi.link import wmediumd
from sys import argv
import os
from sflow import wrapper
'''
Use --remote option to specify remote controller
Use --sflow option to connect to sFlow service (For visualisation tool)
'''

if '--sflow' in sys.argv:
    setattr(Mininet_wifi, 'start', wrapper(Mininet_wifi.__dict__['start']))

net = Mininet_wifi(link=wmediumd)

########
# Nodes
#

# Switches
s1 = net.addSwitch('s1')  # core switch
s2 = net.addSwitch('s2')  # reception
s3 = net.addSwitch('s3')  # ground floor offices
s4 = net.addSwitch('s4')  # software lab
s5 = net.addSwitch('s5')  # seminar rooms
s6 = net.addSwitch('s6')  # proto lab
s7 = net.addSwitch('s7')  # 2nd floor offices
s8 = net.addSwitch('s8')  # building 2 office
Esempio n. 20
0
def topology():
    "Create a network."
    net = Mininet_wifi(controller=Controller, link=wmediumd,
                       wmediumd_mode=interference,
                       noise_threshold=-91, fading_coefficient=3)

    info("*** Creating nodes\n")
    ap1 = net.addAccessPoint('ap1', ssid='new-ssid', mode='a', channel='36',
                             position='15,30,0')
    
    ap2 = net.addAccessPoint('ap2', ssid='new-ssid', mode='a', channel='36',
                             position='15,110,0')
    ap3 = net.addAccessPoint('ap3', ssid='new-ssid', mode='a', channel='36',
                             position='115,30,0')
    ap4 = net.addAccessPoint('ap4', ssid='new-ssid', mode='a', channel='36',
                             position='110,110,0')
    
    ap5 = net.addAccessPoint('ap5', ssid='new-ssid', mode='a', channel='36',
                             position='75,75,0')
    
    
    net.addStation('sta1', mac='00:00:00:00:00:02', ip='10.0.0.1/8',
                   position=str(random.randint(15,40))+','+str(random.randint(0,30))+',10')
    net.addStation('sta2', mac='00:00:00:00:00:03', ip='10.0.0.2/8',
                    position=str(random.randint(10,30))+','+str(random.randint(20,50))+',10')
    net.addStation('sta3', ip='10.0.0.3/8',
                   position=str(random.randint(20,40))+','+str(random.randint(10,20))+',10')
    net.addStation('sta4', ip='10.0.0.4/8',                   
                   position=str(random.randint(30,50))+','+str(random.randint(30,45))+',10')
    net.addStation('sta5', ip='10.0.0.5/8',
                   position=str(random.randint(10,20))+','+str(random.randint(20,35))+',10')
    
    net.addStation('sta6', ip='10.0.0.6/8',
                   position=str(random.randint(50,75))+','+str(random.randint(10,50))+',10')
    net.addStation('sta7', ip='10.0.0.7/8',
                   position=str(random.randint(65,85))+','+str(random.randint(30,45))+',10')
    net.addStation('sta8', ip='10.0.0.8/8',
                   position=str(random.randint(85,100))+','+str(random.randint(15,40))+',10')
    net.addStation('sta9', ip='10.0.0.9/8',
                   position=str(random.randint(70,85))+','+str(random.randint(20,45))+',10')
    net.addStation('sta10', ip='10.0.0.10/8',
                   position=str(random.randint(55,65))+','+str(random.randint(40,50))+',10')
    
    
    net.addStation('sta11', ip='10.0.0.11/8',
                   position=str(random.randint(100,120))+','+str(random.randint(5,20))+',10')    
    net.addStation('sta12', ip='10.0.0.12/8',
                   position=str(random.randint(120,145))+','+str(random.randint(15,30))+',10')
    net.addStation('sta13', ip='10.0.0.13/8',
                   position=str(random.randint(115,125))+','+str(random.randint(25,40))+',10')
    net.addStation('sta14', ip='10.0.0.14/8',
                   position=str(random.randint(135,150))+','+str(random.randint(35,45))+',10')
    net.addStation('sta15', ip='10.0.0.15/8',
                   position=str(random.randint(130,145))+','+str(random.randint(40,50))+',10')
    
    
    net.addStation('sta16', ip='10.0.0.16/8',
                   position=str(random.randint(0,20))+','+str(random.randint(50,90))+',10')
    net.addStation('sta17', ip='10.0.0.17/8',
                   position=str(random.randint(5,15))+','+str(random.randint(70,80))+',10')
    net.addStation('sta18', ip='10.0.0.18/8',
                   position=str(random.randint(15,35))+','+str(random.randint(60,80))+',10')
    net.addStation('sta19', ip='10.0.0.19/8',
                   position=str(random.randint(25,40))+','+str(random.randint(75,90))+',10')
    net.addStation('sta20', ip='10.0.0.20/8',
                   position=str(random.randint(35,45))+','+str(random.randint(80,95))+',10')
    
    
    net.addStation('sta21', ip='10.0.0.21/8',
                   position=str(random.randint(55,70))+','+str(random.randint(55,75))+',10')
    net.addStation('sta22', ip='10.0.0.22/8',
                   position=str(random.randint(70,90))+','+str(random.randint(60,80))+',10')
    net.addStation('sta23', ip='10.0.0.23/8',
                   position=str(random.randint(85,99))+','+str(random.randint(70,85))+',10')
    net.addStation('sta24', ip='10.0.0.24/8',
                   position=str(random.randint(50,80))+','+str(random.randint(85,100))+',10')
    net.addStation('sta25', ip='10.0.0.25/8',
                   position=str(random.randint(60,75))+','+str(random.randint(65,85))+',10')
    
    net.addStation('sta26', ip='10.0.0.26/8',
                   position=str(random.randint(110,125))+','+str(random.randint(80,100))+',10')
    net.addStation('sta27', ip='10.0.0.27/8',
                   position=str(random.randint(100,130))+','+str(random.randint(65,85))+',10')
    net.addStation('sta28', ip='10.0.0.28/8',
                   position=str(random.randint(130, 145))+','+str(random.randint(70,95))+',10')
    net.addStation('sta29', ip='10.0.0.29/8',
                   position=str(random.randint(100,120))+','+str(random.randint(55,75))+',10')
    net.addStation('sta30', ip='10.0.0.30/8',
                   position=str(random.randint(130,145))+','+str(random.randint(68,90))+',10')
    
    
    
    info('****Creating gateway nodes***')
    net.addStation('g1', ip='10.0.1.1/8',position='40,40,10', range=300)    
    net.addStation('g2', ip='10.0.1.2/8', position='80,40,0', range=300)    
    net.addStation('g3', ip='10.0.1.3/8',position='120,40,0', range=300)
    
    net.addStation('g4', ip='10.0.1.4/8',position='40,70,0', range=300)    
    net.addStation('g5', ip='10.0.1.5/8',position='80,70,0', range=300)    
    net.addStation('g6', ip='10.0.1.6/8',position='120,70,10', range=300) 
    
    net.addStation('g7', ip='10.0.1.7/8', position='40,120,0', range=300)    
    net.addStation('g8', ip='10.0.1.8/8',position='80,120,0', range=300)    
    net.addStation('g9', ip='10.0.1.9/8',position='120,120,0', range=300) 
    
    net.addStation('g10', ip='10.0.1.10/8',position='75,75,0', range=300)
        
    c1 = net.addController('c1')
       

    info("*** Configuring Propagation Model\n")
    net.setPropagationModel(model="logDistance", exp=3.5)

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

    net.plotGraph(max_x=150, max_y=150)

    info("*** Starting network\n")
    net.build()
    c1.start()
    ap1.start([c1])
    ap2.start([c1])
    ap3.start([c1])
    ap4.start([c1])
    ap5.start([c1])


    info("*** Running CLI\n")
    CLI_wifi(net)

    info("*** Stopping network\n")
    net.stop()
Esempio n. 21
0
def topology():
    "Create a network."
    #net = Mininet_wifi(controller=Controller)
    net = Mininet_wifi(controller=RemoteController)
    info("*** Creating nodes\n")
    sta1 = net.addStation('sta1', position='20,40,0')
    sta2 = net.addStation('sta2', position='40,40,0')
    sta3 = net.addStation('sta3', position='60,40,0')
    sta4 = net.addStation('sta4', position='80,40,0')
    ap1 = net.addAccessPoint('ap1',
                             ssid="ssid-ap1",
                             mode="g",
                             channel="5",
                             failMode="standalone",
                             position='30,70,0')
    ap2 = net.addAccessPoint('ap2',
                             ssid="ssid-ap2",
                             mode="g",
                             channel="11",
                             failMode="standalone",
                             position='70,70,0')
    c1 = net.addController('c1', ip='192.168.1.101', port=6633)
    c2 = net.addController('c2', ip='192.168.1.102', port=6633)

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

    info("*** Associating Stations\n")
    net.addLink(ap1, ap2)
    net.addLink(sta1, ap1)
    net.addLink(sta2, ap1)
    net.addLink(sta3, ap2)
    net.addLink(sta4, ap2)

    net.plotGraph(max_x=100, max_y=100)
    info("*** Starting network\n")
    net.build()
    c1.start()
    c2.start()
    ap1.start([c1, c2])
    ap2.start([c1, c2])

    sta1.cmd("ip link add link sta1-wlan0 name sta1-wlan0.10 type vlan id 10")
    sta2.cmd("ip link add link sta2-wlan0 name sta2-wlan0.10 type vlan id 10")
    sta3.cmd("ip link add link sta3-wlan0 name sta3-wlan0.20 type vlan id 20")
    sta4.cmd("ip link add link sta4-wlan0 name sta4-wlan0.20 type vlan id 20")

    sta1.cmd("route del -net 10.0.0.0 netmask 255.0.0.0")
    sta2.cmd("route del -net 10.0.0.0 netmask 255.0.0.0")
    sta3.cmd("route del -net 10.0.0.0 netmask 255.0.0.0")
    sta4.cmd("route del -net 10.0.0.0 netmask 255.0.0.0")

    sta1.cmd("ifconfig sta1-wlan0.10 10.0.0.1")
    sta2.cmd("ifconfig sta2-wlan0.10 10.0.0.2")
    sta3.cmd("ifconfig sta3-wlan0.20 10.0.0.3")
    sta4.cmd("ifconfig sta4-wlan0.20 10.0.0.4")

    ap1.cmd(
        'ovs-ofctl add-flow ap1 "priority=100,arp,in_port=1,dl_vlan=10,actions=mod_vlan_vid:20,output:2,normal"'
    )
    ap1.cmd(
        'ovs-ofctl add-flow ap1 "priority=100,icmp,in_port=1,dl_vlan=10,actions=mod_vlan_vid:20,output:2,normal"'
    )
    ap1.cmd(
        'ovs-ofctl add-flow ap1 "priority=100,udp,in_port=1,dl_vlan=10,actions=mod_vlan_vid:20,output:2,normal"'
    )
    ap1.cmd(
        'ovs-ofctl add-flow ap1 "priority=100,tcp,in_port=1,dl_vlan=10,actions=mod_vlan_vid:20,output:2,normal"'
    )

    ap1.cmd(
        'ovs-ofctl add-flow ap1 "priority=100,arp,in_port=2,dl_vlan=20,actions=mod_vlan_vid:10,output:1,normal"'
    )
    ap1.cmd(
        'ovs-ofctl add-flow ap1 "priority=100,icmp,in_port=2,dl_vlan=20,actions=mod_vlan_vid:10,output:1,normal"'
    )
    ap1.cmd(
        'ovs-ofctl add-flow ap1 "priority=100,udp,in_port=2,dl_vlan=20,actions=mod_vlan_vid:10,output:1,normal"'
    )
    ap1.cmd(
        'ovs-ofctl add-flow ap1 "priority=100,tcp,in_port=2,dl_vlan=20,actions=mod_vlan_vid:10,output:1,normal"'
    )

    ap2.cmd(
        'ovs-ofctl add-flow ap2 "priority=100,arp,in_port=1,dl_vlan=20,actions=mod_vlan_vid:10,output:2,normal"'
    )
    ap2.cmd(
        'ovs-ofctl add-flow ap2 "priority=100,icmp,in_port=1,dl_vlan=20,actions=mod_vlan_vid:10,output:2,normal"'
    )
    ap2.cmd(
        'ovs-ofctl add-flow ap2 "priority=100,udp,in_port=1,dl_vlan=20,actions=mod_vlan_vid:10,output:2,normal"'
    )
    ap2.cmd(
        'ovs-ofctl add-flow ap2 "priority=100,tcp,in_port=1,dl_vlan=20,actions=mod_vlan_vid:10,output:2,normal"'
    )

    ap2.cmd(
        'ovs-ofctl add-flow ap2 "priority=100,arp,in_port=2,dl_vlan=10,actions=mod_vlan_vid:20,output:1,normal"'
    )
    ap2.cmd(
        'ovs-ofctl add-flow ap2 "priority=100,icmp,in_port=2,dl_vlan=10,actions=mod_vlan_vid:20,output:1,normal"'
    )
    ap2.cmd(
        'ovs-ofctl add-flow ap2 "priority=100,udp,in_port=2,dl_vlan=10,actions=mod_vlan_vid:20,output:1,normal"'
    )
    ap2.cmd(
        'ovs-ofctl add-flow ap2 "priority=100,tcp,in_port=2,dl_vlan=10,actions=mod_vlan_vid:20,output:1,normal"'
    )

    info("*** Running CLI\n")
    CLI(net)

    info("*** Stopping network\n")
    net.stop()
Esempio n. 22
0
def topology():

    mod = str(sys.argv[1])  # network type
    print("-------------------------------")
    print("Network Trace Type : " + str(mod) + '\n')

    nett = str(sys.argv[2])  # mobility
    print("-------------------------------")
    print("Network Trace Mobility : " + str(nett) + '\n')

    host = int(sys.argv[3])  # num of host
    print("-------------------------------")
    print("Number of Total Host : " + str(host) + '\n')

    algo = str(sys.argv[4])  # name of adaptation algorithm
    print("-------------------------------")
    print("ABS Algorithm : " + str(algo) + '\n')

    prot = str(sys.argv[5])  # name of protocol
    print("-------------------------------")
    print("Protocol : " + str(prot) + '\n')

    sertype = str(sys.argv[6])  # name of server
    print("-------------------------------")
    print("Server : " + str(sertype) + '\n')

    fol = int(sys.argv[7])  # Iteration of experiment
    print("-------------------------------")
    print("Total iteration : " + str(fol) + '\n')

    v_id = str(sys.argv[8])  # Video content type
    print("-------------------------------")
    print("Video name : " + str(v_id) + '\n')

    ###################################
    "Create a network."
    net = Mininet_wifi()
    #net = Mininet()

    info("*** Creating client-nodes\n")
    for i in range(host):
        m = 'sta%s' % (i + 1)
        j = i + 1
        station.insert(i, net.addStation(m, ip='10.0.0.2%s/24' % (j)))
        #station.insert(i, net.addHost(m, ip='10.0.0.2%s/24'%(j)))

    info("*** Creating AP-node\n")
    ap1 = net.addAccessPoint('ap1', ssid="simpletopo", mode="g", channel="5")

    info("*** Creating server-node\n")
    server = net.addHost('server', ip='10.0.0.1/24')

    info("*** Creating cross_traffic-nodes\n")
    dc = net.addHost('dc', ip='10.0.0.80/24')
    ds = net.addHost('ds', ip='10.0.0.81/24')

    info("*** Creating Switch-node\n")
    s2 = net.addSwitch('s2')
    #s1 = net.addSwitch('s1')

    info("*** Creating controller-node\n")
    c0 = net.addController('c0')

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

    info("*** Associating clients and AP\n")
    for i in range(host):
        m = 'sta%s' % (i + 1)
        net.addLink(m, ap1)

    info("*** Associating AP and switch\n")
    net.addLink(s2, ap1, 1,
                10)  # initial link parameter default according to mininet

    info("*** Associating switch and server\n")
    net.addLink(server, s2, bw=1000)
    print("\n ")

    info("*** Associating cross_traffic sender and receiver\n")
    net.addLink(dc, ap1)
    net.addLink(ds, s2)

    info("*** Starting network\n")
    net.build()
    c0.start()
    ap1.start([c0])
    s2.start([c0])

    ##############################

    time.sleep(5)
    print("\n ")

    #info("*** Running CLI\n")
    #CLI(net)
    #print net.get('ap1')
    #print net['s3']

    os.system('cd /home/dash/testbed/goDASH/godash/files && sudo rm -R *')

    fol1 = str(v_id)
    fol2 = str(fol + 1)
    folder = 'iteration_' + str(fol2) + '_video_' + str(v_id) + '_mode_' + (
        mod) + '_net_' + str(nett) + '_host_' + str(host) + '_algo_' + str(
            algo) + '_protocol_' + str(prot) + '_server_' + str(sertype)

    #os.system('mkdir -p /home/dash/testbed/Data/Raw/'+fol+'/'+ folder)
    os.system('mkdir -p /media/sf_vm/' + fol1 + '/' + fol2 + '/' + folder)

    os.system('cd /home/dash/testbed/goDASH/godash/config && sudo rm -R *')

    with open(
            '/home/dash/testbed/goDASHbed/config/configure.json') as json_file:
        test_dict = json.load(json_file, object_pairs_hook=OrderedDict)

    test_dict['adapt'] = algo

    if prot == 'tcp':
        test_dict['quic'] = 'off'
        test_dict[
            'url'] = 'https://www.godashbed.org/x264/full/tearsofsteel_enc_x264_dash.mpd'
    else:
        test_dict['quic'] = 'on'
        test_dict[
            'url'] = 'https://www.godashbed.org:4444/x264/full/tearsofsteel_enc_x264_dash.mpd'

    test_dict['serveraddr'] = 'off'

    json.dump(
        test_dict,
        open('/home/dash/testbed/goDASH/godash/config/configure.json', "w"))

    st = []
    for i in range(host):
        m1 = 'sta%s' % (i + 1)
        m2 = net[m1]
        st.insert(i, m2)

    switch2 = net['s2']
    server = net['server']
    ap = net['ap1']
    #switch1= net['s1']
    dc = net['dc']
    ds = net['ds']

    if mod == '3g':
        bt = 3
    elif mod == '4g':
        bt = 4
    else:
        bt = 5

    return st, switch2, server, ap, host, algo, nett, mod, prot, dc, ds, sertype, fol1, bt, fol2
Esempio n. 23
0
def topology(stp):

    net = Mininet_wifi(accessPoint=OVSBridgeAP)

    info("*** Creating nodes\n")
    sta1 = net.addStation('sta1',
                          mac='00:00:00:00:00:02',
                          ip='10.0.0.1/8',
                          position='100,101,0')
    sta2 = net.addStation('sta2',
                          mac='00:00:00:00:00:03',
                          ip='10.0.0.2/8',
                          position='50,51,0')
    sta3 = net.addStation('sta3',
                          mac='00:00:00:00:00:04',
                          ip='10.0.0.3/8',
                          position='150,51,0')
    if stp:
        ap1 = net.addAccessPoint('ap1',
                                 ssid='new-ssid1',
                                 mode='g',
                                 channel='1',
                                 failMode="standalone",
                                 position='100,100,0',
                                 stp=True)
        ap2 = net.addAccessPoint('ap2',
                                 ssid='new-ssid2',
                                 mode='g',
                                 channel='1',
                                 failMode="standalone",
                                 position='50,50,0',
                                 stp=True)
        ap3 = net.addAccessPoint('ap3',
                                 ssid='new-ssid3',
                                 mode='g',
                                 channel='1',
                                 failMode="standalone",
                                 position='150,50,0',
                                 stp=True)
    else:
        ap1 = net.addAccessPoint('ap1',
                                 ssid='new-ssid1',
                                 mode='g',
                                 channel='1',
                                 failMode="standalone",
                                 position='100,100,0')
        ap2 = net.addAccessPoint('ap2',
                                 ssid='new-ssid2',
                                 mode='g',
                                 channel='1',
                                 failMode="standalone",
                                 position='50,50,0')
        ap3 = net.addAccessPoint('ap3',
                                 ssid='new-ssid3',
                                 mode='g',
                                 channel='1',
                                 failMode="standalone",
                                 position='150,50,0')

    net.setPropagationModel(model="logDistance", exp=4.5)

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

    info("*** Creating links\n")
    net.addLink(ap1, sta1)
    net.addLink(ap2, sta2)
    net.addLink(ap3, sta3)
    net.addLink(ap1, ap2)
    net.addLink(ap1, ap3)
    net.addLink(ap2, ap3)

    net.plotGraph(max_x=300, max_y=300)

    info("*** Starting network\n")
    net.build()
    ap1.start([])
    ap2.start([])
    ap3.start([])

    info("*** Running CLI\n")
    CLI_wifi(net)

    info("*** Stopping network\n")
    net.stop()
Esempio n. 24
0
def topology():

    "Create a network."
    net = Mininet_wifi(link=wmediumd, wmediumd_mode=interference)

    info("*** Creating nodes\n")
    for id in range(0, 10):
        net.addCar('car%s' % (id + 1), wlans=2, encrypt=['wpa2', ''])

    kwargs = {
        'ssid': 'vanet-ssid',
        'mode': 'g',
        'passwd': '123456789a',
        'encrypt': 'wpa2',
        'failMode': 'standalone',
        'datapath': 'user'
    }
    e1 = net.addAccessPoint('e1',
                            mac='00:00:00:11:00:01',
                            channel='1',
                            position='2600,3500,0',
                            **kwargs)
    e2 = net.addAccessPoint('e2',
                            mac='00:00:00:11:00:02',
                            channel='6',
                            position='2800,3500,0',
                            **kwargs)
    e3 = net.addAccessPoint('e3',
                            mac='00:00:00:11:00:03',
                            channel='11',
                            position='3000,3500,0',
                            **kwargs)
    e4 = net.addAccessPoint('e4',
                            mac='00:00:00:11:00:04',
                            channel='1',
                            position='2600,3300,0',
                            **kwargs)
    e5 = net.addAccessPoint('e5',
                            mac='00:00:00:11:00:05',
                            channel='6',
                            position='2800,3300,0',
                            **kwargs)
    e6 = net.addAccessPoint('e6',
                            mac='00:00:00:11:00:06',
                            channel='11',
                            position='3000,3300,0',
                            **kwargs)

    info("*** Configuring Propagation Model\n")
    net.setPropagationModel(model="logDistance", exp=2.8)

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

    net.addLink(e1, e2)
    net.addLink(e2, e3)
    net.addLink(e3, e4)
    net.addLink(e4, e5)
    net.addLink(e5, e6)
    for car in net.cars:
        net.addLink(car,
                    intf=car.wintfs[1].name,
                    cls=ITSLink,
                    band=20,
                    channel=181)

    net.useExternalProgram(program=sumo,
                           port=8813,
                           config_file='map.sumocfg',
                           extra_params=["--start"])

    info("*** Starting network\n")
    net.build()

    for enb in net.aps:
        enb.start([])

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

    # Track the position of the nodes
    """nodes = net.cars + net.aps
    net.telemetry(nodes=nodes, data_type='position',
                  min_x=2200, min_y=2800,
                  max_x=3200, max_y=3900)"""

    info("*** Running CLI\n")
    CLI(net)

    info("*** Stopping network\n")
    net.stop()
Esempio n. 25
0
def topology(coord):

    "Create a network."
    net = Mininet_wifi(topo=None,
                       build=False,
                       link=wmediumd,
                       accessPoint=OVSKernelAP,
                       wmediumd_mode=interference,
                       ipBase='10.0.0.0/8')

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

    ap3 = net.addAccessPoint('ap3',
                             cls=OVSKernelAP,
                             ssid='ap3-ssid',
                             channel='8',
                             mode='n',
                             ip='',
                             position='790.0,330.0,0',
                             range=150)
    s2 = net.addSwitch('s2', cls=OVSKernelSwitch)
    ap2 = net.addAccessPoint('ap2',
                             cls=OVSKernelAP,
                             ssid='ap2-ssid',
                             channel='7',
                             mode='n',
                             ip='',
                             position='450.0,332.0,0',
                             range=150)
    s3 = net.addSwitch('s3', cls=OVSKernelSwitch)
    s4 = net.addSwitch('s4', cls=OVSKernelSwitch)
    ap1 = net.addAccessPoint('ap1',
                             cls=OVSKernelAP,
                             ssid='ap1-ssid',
                             channel='6',
                             mode='n',
                             ip='',
                             position='60.0,209.0,0',
                             range=150)
    s1 = net.addSwitch('s1', cls=OVSKernelSwitch)

    print "*** Add hosts/stations"

    sta1 = net.addStation('sta1', ip='10.0.0.26/8')
    sta2 = net.addStation('sta2', ip='10.0.0.2/8')
    sta3 = net.addStation('sta3', ip='10.0.0.3/8')
    sta4 = net.addStation('sta4', ip='10.0.0.4/8')
    sta5 = net.addStation('sta5', ip='10.0.0.5/8')
    sta6 = net.addStation('sta6', ip='10.0.0.6/8')
    sta7 = net.addStation('sta7', ip='10.0.0.7/8')
    sta8 = net.addStation('sta8', ip='10.0.0.8/8')
    sta9 = net.addStation('sta9', ip='10.0.0.9/8')
    sta10 = net.addStation('sta10', ip='10.0.0.10/8')
    sta11 = net.addStation('sta11', ip='10.0.0.11/8')
    sta12 = net.addStation('sta12', ip='10.0.0.12/8')
    sta13 = net.addStation('sta13', ip='10.0.0.13/8')
    sta14 = net.addStation('sta14', ip='10.0.0.14/8')
    sta15 = net.addStation('sta15', ip='10.0.0.15/8')
    sta16 = net.addStation('sta16', ip='10.0.0.16/8')
    sta17 = net.addStation('sta17', ip='10.0.0.17/8')
    sta18 = net.addStation('sta18', ip='10.0.0.18/8')
    sta19 = net.addStation('sta19', ip='10.0.0.19/8')
    sta20 = net.addStation('sta20', ip='10.0.0.20/8')

    h5 = net.addHost('h5', cls=Host, ip='10.0.0.21/8')
    h2 = net.addHost('h2', cls=Host, ip='10.0.0.22/8')
    h3 = net.addHost('h3', cls=Host, ip='10.0.0.23/8')
    h1 = net.addHost('h1', cls=Host, ip='10.0.0.24/8')
    h4 = net.addHost('h4', cls=Host, ip='10.0.0.25/8')

    print "*** Configuring Propagation Model"
    net.setPropagationModel(model="logDistance", exp=3)

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

    net.plotGraph(max_x=1000, max_y=750)
    if coord:
        sta5.coord = ['40.0,30.0,0.0', '31.0,10.0,0.0', '31.0,30.0,0.0']
        sta6.coord = ['40.0,40.0,0.0', '55.0,31.0,0.0', '55.0,81.0,0.0']
        sta1.coord = ['40.0,30.0,0.0', '31.0,10.0,0.0', '31.0,30.0,0.0']
        sta2.coord = ['40.0,40.0,0.0', '55.0,31.0,0.0', '55.0,81.0,0.0']
        sta3.coord = ['40.0,30.0,0.0', '31.0,10.0,0.0', '31.0,30.0,0.0']
        sta4.coord = ['40.0,40.0,0.0', '55.0,31.0,0.0', '55.0,81.0,0.0']
        sta7.coord = ['40.0,30.0,0.0', '31.0,10.0,0.0', '31.0,30.0,0.0']
        sta8.coord = ['40.0,40.0,0.0', '55.0,31.0,0.0', '55.0,81.0,0.0']
        sta9.coord = ['40.0,40.0,0.0', '55.0,31.0,0.0', '55.0,81.0,0.0']
        sta10.coord = ['40.0,30.0,0.0', '31.0,10.0,0.0', '31.0,30.0,0.0']
        sta11.coord = ['40.0,40.0,0.0', '55.0,31.0,0.0', '55.0,81.0,0.0']
        sta12.coord = ['40.0,30.0,0.0', '31.0,10.0,0.0', '31.0,30.0,0.0']
        sta13.coord = ['40.0,40.0,0.0', '55.0,31.0,0.0', '55.0,81.0,0.0']
        sta14.coord = ['40.0,40.0,0.0', '55.0,31.0,0.0', '55.0,81.0,0.0']
        sta15.coord = ['40.0,30.0,0.0', '31.0,10.0,0.0', '31.0,30.0,0.0']
        sta16.coord = ['40.0,40.0,0.0', '55.0,31.0,0.0', '55.0,81.0,0.0']
        sta17.coord = ['40.0,30.0,0.0', '31.0,10.0,0.0', '31.0,30.0,0.0']
        sta18.coord = ['40.0,40.0,0.0', '55.0,31.0,0.0', '55.0,81.0,0.0']

    else:
        net.startMobility(time=0, repetitions=1)
        net.addLink(sta1, cls=adhoc, ssid='adhocNet', mode='g', range=100)
        net.addLink(sta2, cls=adhoc, ssid='adhocNet', mode='g', range=100)
        net.addLink(sta3, cls=adhoc, ssid='adhocNet', mode='g', range=100)
        net.addLink(sta4, cls=adhoc, ssid='adhocNet', mode='g', range=100)
        net.addLink(sta5, cls=adhoc, ssid='adhocNet', mode='g', range=100)
        net.addLink(sta6, cls=adhoc, ssid='adhocNet', mode='g', range=100)
        net.addLink(sta7, cls=adhoc, ssid='adhocNet', mode='g', range=100)
        net.addLink(sta8, cls=adhoc, ssid='adhocNet', mode='g', range=100)
        net.addLink(sta9, cls=adhoc, ssid='adhocNet', mode='g', range=100)
        net.addLink(sta10, cls=adhoc, ssid='adhocNet', mode='g', range=100)
        net.addLink(sta11, cls=adhoc, ssid='adhocNet', mode='g', range=100)
        net.addLink(sta12, cls=adhoc, ssid='adhocNet', mode='g', range=100)
        net.addLink(sta13, cls=adhoc, ssid='adhocNet', mode='g', range=100)
        net.addLink(sta14, cls=adhoc, ssid='adhocNet', mode='g', range=100)
        net.addLink(sta15, cls=adhoc, ssid='adhocNet', mode='g', range=100)
        net.addLink(sta16, cls=adhoc, ssid='adhocNet', mode='g', range=100)
        net.addLink(sta17, cls=adhoc, ssid='adhocNet', mode='g', range=100)
        net.addLink(sta18, cls=adhoc, ssid='adhocNet', mode='g', range=100)

    net.mobility(sta1, 'start', time=2, position='50.0,400.0,0.0')
    net.mobility(sta1, 'stop', time=25, position='250.0,50.0,0.0')

    net.mobility(sta2, 'start', time=2, position='10.0,400.0,0.0')
    net.mobility(sta2, 'stop', time=26, position='100.0,35.0,0.0')

    net.mobility(sta3, 'start', time=2, position='300.0,480.0,0.0')
    net.mobility(sta3, 'stop', time=28, position='390.0,60.0,0.0')

    net.mobility(sta4, 'start', time=2, position='240.0,600.0,0.0')
    net.mobility(sta4, 'stop', time=28, position='610.0,60.0,0.0')

    net.mobility(sta5, 'start', time=2, position='590.0,600.0,0.0')
    net.mobility(sta5, 'stop', time=26, position='120.0,150.0,0.0')

    net.mobility(sta6, 'start', time=2, position='500.0,580.0,0.0')
    net.mobility(sta6, 'stop', time=26, position='500.0,30.0,0.0')

    net.mobility(sta7, 'start', time=2, position='750.0,590.0,0.0')
    net.mobility(sta7, 'stop', time=29, position='790.0,70.0,0.0')

    net.mobility(sta8, 'start', time=2, position='890.0,600.0,0.0')
    net.mobility(sta8, 'stop', time=23, position='900.0,70.0,0.0')

    net.mobility(sta9, 'start', time=2, position='900.0,150.0,0.0')
    net.mobility(sta9, 'stop', time=27, position='500.0,480.0,0.0')

    net.mobility(sta10, 'start', time=2, position='800.0,90.0,0.0')
    net.mobility(sta10, 'stop', time=23, position='600.0,500.0,0.0')

    net.mobility(sta11, 'start', time=2, position='500.0,20.0,0.0')
    net.mobility(sta11, 'stop', time=28, position='900.0,450.0,0.0')

    net.mobility(sta12, 'start', time=2, position='400.0,150.0,0.0')
    net.mobility(sta12, 'stop', time=26, position='900.0,390.0,0.0')

    net.mobility(sta13, 'start', time=2, position='700.0,110.0,0.0')
    net.mobility(sta13, 'stop', time=26, position='280.0,350.0,0.0')

    net.mobility(sta14, 'start', time=2, position='900.0,50.0,0.0')
    net.mobility(sta14, 'stop', time=27, position='400.0,310.0,0.0')

    net.mobility(sta15, 'start', time=2, position='300.0,20.0,0.0')
    net.mobility(sta15, 'stop', time=23, position='480.0,320.0,0.0')

    net.mobility(sta16, 'start', time=2, position='240.0,20.0,0.0')
    net.mobility(sta16, 'stop', time=26, position='10.0,380.0,0.0')

    net.mobility(sta17, 'start', time=2, position='650.0,200.0,0.0')
    net.mobility(sta17, 'stop', time=28, position='80.0,400.0,0.0')

    net.mobility(sta18, 'start', time=2, position='300.0,20.0,0.0')
    net.mobility(sta18, 'stop', time=23, position='500.0,200.0,0.0')

    net.mobility(sta19, 'start', time=2, position='900.0,20.0,0.0')
    net.mobility(sta19, 'stop', time=28, position='480.0,230.0,0.0')

    net.mobility(sta20, 'start', time=2, position='400.0,50.0,0.0')
    net.mobility(sta20, 'stop', time=28, position='200.0,150.0,0.0')

    net.stopMobility(time=30)

    print "*** Associating and Creating links"
    net.addLink(ap1, s4)
    net.addLink(s4, s3)
    net.addLink(s4, ap2)
    net.addLink(s3, ap3)
    net.addLink(s3, s2)
    net.addLink(s2, s1)
    net.addLink(s1, h1)
    net.addLink(s1, h2)
    net.addLink(s1, h3)
    net.addLink(s1, h4)
    net.addLink(s1, h5)

    print "*** Starting switches/APs"
    net.get('ap3').start([c1])
    net.get('s2').start([c1])
    net.get('ap2').start([c1])
    net.get('s3').start([c1])
    net.get('s4').start([c1])
    net.get('ap1').start([c1])
    net.get('s1').start([c1])

    print "*** Starting network"
    net.build()
    c1.start()
    for controller in net.controllers:
        controller.start()
    """plotting graph"""

    "*** Available models: RandomWalk, TruncatedLevyWalk, RandomDirection, RandomWayPoint, GaussMarkov, ReferencePoint, TimeVariantCommunity ***"
    net.startMobility(time=0,
                      model='RandomWayPoint',
                      max_x=100,
                      max_y=100,
                      min_v=0.5,
                      max_v=0.8)

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

    print "*** Stopping network"
    net.stop()
Esempio n. 26
0
def topology():

    "Create a network."
    # net = Mininet_wifi(controller=None, switch=OVSKernelSwitch, link=wmediumd, wmediumd_mode=interference)
    net = Mininet_wifi(controller=None,
                       autoStaticArp=True,
                       switch=OVSKernelSwitch,
                       accessPoint=OVSKernelAP)

    c1 = net.addController('c1',
                           controller=RemoteController,
                           ip='127.0.0.1',
                           port=6633)

    info("*** Creating nodes\n")
    cars = []
    for x in range(0, 30):
        cars.append(x)

    cars[0] = net.addCar('car0',
                         wlans=1,
                         range='50',
                         ip='200.0.10.110/8',
                         mac='00:00:00:00:00:01',
                         position='1105,975,0')
    cars[1] = net.addCar('car1',
                         wlans=1,
                         range='50',
                         ip='200.0.10.111/8',
                         mac='00:00:00:00:00:02',
                         position='1110,975,0')
    cars[2] = net.addCar('car2',
                         wlans=1,
                         range='50',
                         ip='200.0.10.112/8',
                         mac='00:00:00:00:00:03',
                         position='1605,975,0')
    cars[3] = net.addCar('car3',
                         wlans=1,
                         range='50',
                         ip='200.0.10.113/8',
                         mac='00:00:00:00:00:04',
                         position='2105,975,0')
    cars[4] = net.addCar('car4',
                         wlans=1,
                         range='50',
                         ip='200.0.10.114/8',
                         mac='00:00:00:00:00:05',
                         position='2100,975,0')
    cars[5] = net.addCar('car5',
                         wlans=1,
                         range='50',
                         ip='200.0.10.115/8',
                         mac='00:00:00:00:00:06',
                         position='2110,975,0')
    cars[6] = net.addCar('car6',
                         wlans=1,
                         range='50',
                         ip='200.0.10.116/8',
                         mac='00:00:00:00:00:07',
                         position='2095,975,0')

    cars[7] = net.addCar('car7',
                         wlans=1,
                         range='50',
                         ip='200.0.10.117/8',
                         mac='00:00:00:00:00:08',
                         position='1560,975,0')
    cars[8] = net.addCar('car8',
                         wlans=1,
                         range='50',
                         ip='200.0.10.118/8',
                         mac='00:00:00:00:00:09',
                         position='1570,975,0')
    cars[9] = net.addCar('car9',
                         wlans=1,
                         range='50',
                         ip='200.0.10.119/8',
                         mac='00:00:00:00:00:10',
                         position='1580,975,0')
    cars[10] = net.addCar('car10',
                          wlans=1,
                          range='50',
                          ip='200.0.10.120/8',
                          mac='00:00:00:00:00:11',
                          position='1590,975,0')
    cars[11] = net.addCar('car11',
                          wlans=1,
                          range='50',
                          ip='200.0.10.121/8',
                          mac='00:00:00:00:00:12',
                          position='1600,975,0')
    cars[12] = net.addCar('car12',
                          wlans=1,
                          range='50',
                          ip='200.0.10.122/8',
                          mac='00:00:00:00:00:13',
                          position='1585,975,0')

    cars[13] = net.addCar('car13',
                          wlans=1,
                          range='50',
                          ip='200.0.10.123/8',
                          mac='00:00:00:00:00:14',
                          position='1060,975,0')
    cars[14] = net.addCar('car14',
                          wlans=1,
                          range='50',
                          ip='200.0.10.124/8',
                          mac='00:00:00:00:00:15',
                          position='1070,975,0')
    cars[15] = net.addCar('car15',
                          wlans=1,
                          range='50',
                          ip='200.0.10.125/8',
                          mac='00:00:00:00:00:16',
                          position='1080,975,0')
    cars[16] = net.addCar('car16',
                          wlans=1,
                          range='50',
                          ip='200.0.10.126/8',
                          mac='00:00:00:00:00:17',
                          position='1090,975,0')
    cars[17] = net.addCar('car17',
                          wlans=1,
                          range='50',
                          ip='200.0.10.127/8',
                          mac='00:00:00:00:00:18',
                          position='1100,975,0')
    cars[18] = net.addCar('car18',
                          wlans=1,
                          range='50',
                          ip='200.0.10.128/8',
                          mac='00:00:00:00:00:19',
                          position='1110,975,0')
    cars[19] = net.addCar('car19',
                          wlans=1,
                          range='50',
                          ip='200.0.10.129/8',
                          mac='00:00:00:00:00:20',
                          position='1120,975,0')

    cars[20] = net.addCar('car20',
                          wlans=1,
                          range='50',
                          ip='200.0.10.130/8',
                          mac='00:00:00:00:00:21',
                          position='20,1025,0')
    cars[21] = net.addCar('car21',
                          wlans=1,
                          range='50',
                          ip='200.0.10.131/8',
                          mac='00:00:00:00:00:22',
                          position='40,1025,0')
    cars[22] = net.addCar('car22',
                          wlans=1,
                          range='50',
                          ip='200.0.10.132/8',
                          mac='00:00:00:00:00:23',
                          position='60,1025,0')
    cars[23] = net.addCar('car23',
                          wlans=1,
                          range='50',
                          ip='200.0.10.133/8',
                          mac='00:00:00:00:00:24',
                          position='80,1025,0')
    cars[24] = net.addCar('car24',
                          wlans=1,
                          range='50',
                          ip='200.0.10.134/8',
                          mac='00:00:00:00:00:25',
                          position='100,1025,0')
    cars[25] = net.addCar('car25',
                          wlans=1,
                          range='50',
                          ip='200.0.10.135/8',
                          mac='00:00:00:00:00:26',
                          position='120,1025,0')
    cars[26] = net.addCar('car26',
                          wlans=1,
                          range='50',
                          ip='200.0.10.136/8',
                          mac='00:00:00:00:00:27',
                          position='140,1025,0')
    cars[27] = net.addCar('car27',
                          wlans=1,
                          range='50',
                          ip='200.0.10.137/8',
                          mac='00:00:00:00:00:28',
                          position='160,1025,0')
    cars[28] = net.addCar('car28',
                          wlans=1,
                          range='50',
                          ip='200.0.10.138/8',
                          mac='00:00:00:00:00:29',
                          position='180,1025,0')
    cars[29] = net.addCar('car29',
                          wlans=1,
                          range='50',
                          ip='200.0.10.139/8',
                          mac='00:00:00:00:00:30',
                          position='200,1025,0')

    # cars[30] = net.addCar('car30',  wlans=1, range='50', ip='200.0.10.140/8', mac='00:00:00:00:00:31', position='210,1025,0')
    # cars[31] = net.addCar('car31',  wlans=1, range='50', ip='200.0.10.141/8', mac='00:00:00:00:00:32', position='220,1025,0')
    # cars[32] = net.addCar('car32',  wlans=1, range='50', ip='200.0.10.142/8', mac='00:00:00:00:00:33', position='240,1025,0')
    # cars[33] = net.addCar('car33',  wlans=1, range='50', ip='200.0.10.143/8', mac='00:00:00:00:00:34', position='260,1025,0')
    # cars[34] = net.addCar('car34',  wlans=1, range='50', ip='200.0.10.144/8', mac='00:00:00:00:00:35', position='280,1025,0')
    # cars[35] = net.addCar('car35',  wlans=1, range='50', ip='200.0.10.145/8', mac='00:00:00:00:00:36', position='300,1025,0')
    # cars[36] = net.addCar('car36',  wlans=1, range='50', ip='200.0.10.146/8', mac='00:00:00:00:00:37', position='320,1025,0')
    # cars[37] = net.addCar('car37',  wlans=1, range='50', ip='200.0.10.147/8', mac='00:00:00:00:00:38', position='340,1025,0')
    # cars[38] = net.addCar('car38',  wlans=1, range='50', ip='200.0.10.148/8', mac='00:00:00:00:00:39', position='360,1025,0')
    # cars[39] = net.addCar('car39',  wlans=1, range='50', ip='200.0.10.149/8', mac='00:00:00:00:00:40', position='380,1025,0')

    # rsu1 = net.addAccessPoint('rsu1', ssid='rsu1', dpid='6', channel='11',range=250, position='1100,1000,0', protocols='OpenFlow13')
    # rsu2 = net.addAccessPoint('rsu2', ssid='rsu2', dpid='7', channel='11', range=250, position='1600,1000,0', protocols='OpenFlow13')
    # rsu3 = net.addAccessPoint('rsu3', ssid='rsu3', dpid='8', channel='11', range=250, position='2100,1000,0', protocols='OpenFlow13')

    rsu1 = net.addAccessPoint('rsu1',
                              ssid='rsu1',
                              channel='11',
                              range=250,
                              position='1100,1000,0',
                              protocols='OpenFlow13')
    rsu2 = net.addAccessPoint('rsu2',
                              ssid='rsu2',
                              channel='11',
                              range=250,
                              position='1600,1000,0',
                              protocols='OpenFlow13')
    rsu3 = net.addAccessPoint('rsu3',
                              ssid='rsu3',
                              channel='11',
                              range=250,
                              position='2100,1000,0',
                              protocols='OpenFlow13')

    sw1 = net.addSwitch('sw1',
                        dpid='9',
                        protocols='OpenFlow13',
                        position='1600,1750,0')
    sw2 = net.addSwitch('sw2',
                        dpid='10',
                        protocols='OpenFlow13',
                        position='1800,1750,0')

    server_s1 = net.addHost('server_s1',
                            ip='200.0.10.2/8',
                            position='1000,1150,0')
    server_s2 = net.addHost('server_s2',
                            ip='200.0.10.2/8',
                            position='1500,1150,0')
    server_s3 = net.addHost('server_s3',
                            ip='200.0.10.2/8',
                            position='2150,1150,0')
    server_e = net.addHost('server_e',
                           ip='200.0.10.3/8',
                           position='2000,1700,0')
    server_e2 = net.addHost('server_e2',
                            ip='200.0.10.4/8',
                            position='2000,1900,0')
    server_g = net.addHost('server_g',
                           ip='200.0.10.5/8',
                           position='2000,2100,0')

    info("*** Configuring Propagation Model\n")
    net.propagationModel(model="logDistance", exp=4.5)

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

    info("*** Associating and Creating links\n")
    net.addLink(rsu1, rsu2, 2, 2)
    net.addLink(rsu2, rsu3, 3, 2)
    net.addLink(server_s1, rsu1, 0, 5)
    net.addLink(server_s2, rsu2, 0, 5)
    net.addLink(server_s3, rsu3, 0, 5)
    net.addLink(server_e, sw2, 0, 1)
    net.addLink(server_e2, sw2, 0, 2)
    net.addLink(server_g, sw2, 0, 3)
    link1 = net.addLink(sw1, sw2, 1, 4, cls=TCLink)
    link2 = net.addLink(rsu1, sw1, 3, 2, cls=TCLink)
    link3 = net.addLink(rsu2, sw1, 4, 3, cls=TCLink)
    link4 = net.addLink(rsu3, sw1, 3, 4, cls=TCLink)

    print("*** Configuring links bandwidth")
    link1.intf1.config(bw=18)
    link2.intf1.config(bw=6)
    link3.intf1.config(bw=6)
    link4.intf1.config(bw=6)

    print("*** Ploting Graph")
    net.plotGraph(max_x=2500, max_y=2500)

    print("*** Starting network")
    net.build()
    c1.start()
    rsu1.start([c1])
    rsu2.start([c1])
    rsu3.start([c1])
    sw1.start([c1])
    sw2.start([c1])

    server_s1.cmd(
        'iptables -I OUTPUT -p icmp --icmp-type destination-unreachable -j DROP'
    )
    server_s2.cmd(
        'iptables -I OUTPUT -p icmp --icmp-type destination-unreachable -j DROP'
    )
    server_s3.cmd(
        'iptables -I OUTPUT -p icmp --icmp-type destination-unreachable -j DROP'
    )
    server_e.cmd(
        'iptables -I OUTPUT -p icmp --icmp-type destination-unreachable -j DROP'
    )
    server_e2.cmd(
        'iptables -I OUTPUT -p icmp --icmp-type destination-unreachable -j DROP'
    )
    server_g.cmd(
        'iptables -I OUTPUT -p icmp --icmp-type destination-unreachable -j DROP'
    )

    os.system(
        'ovs-vsctl set bridge rsu1 other-config:datapath-id=0000000000000006')
    os.system(
        'ovs-vsctl set bridge rsu2 other-config:datapath-id=0000000000000007')
    os.system(
        'ovs-vsctl set bridge rsu3 other-config:datapath-id=0000000000000008')

    time.sleep(1)

    os.system('ovs-vsctl --all destroy QoS; ovs-vsctl --all destroy Queue')

    os.system('ovs-vsctl set-manager ptcp:6632')

    os.system(
        'curl -X PUT -d \'"tcp:127.0.0.1:6632"\' http://localhost:8080/v1.0/conf/switches/0000000000000006/ovsdb_addr'
    )
    os.system(
        'curl -X PUT -d \'"tcp:127.0.0.1:6632"\' http://localhost:8080/v1.0/conf/switches/0000000000000007/ovsdb_addr'
    )
    os.system(
        'curl -X PUT -d \'"tcp:127.0.0.1:6632"\' http://localhost:8080/v1.0/conf/switches/0000000000000008/ovsdb_addr'
    )
    os.system(
        'curl -X PUT -d \'"tcp:127.0.0.1:6632"\' http://localhost:8080/v1.0/conf/switches/0000000000000009/ovsdb_addr'
    )
    os.system(
        'curl -X PUT -d \'"tcp:127.0.0.1:6632"\' http://localhost:8080/v1.0/conf/switches/0000000000000010/ovsdb_addr'
    )

    print("*** Shutting ports")
    #time.sleep(3)

    #Filtra trafego nas portas entre switches (evitar L2 loop)
    os.system(
        'curl -X POST -d \'{ "dpid": 6, "cookie": 0, "cookie_mask": 1, "table_id": 1, "priority": 1, "flags": 2, "match":{ "in_port":2}, "actions":[{ "type":"CLEAR_ACTIONS"}]}\' http://localhost:8080/stats/flowentry/add'
    )
    os.system(
        'curl -X POST -d \'{ "dpid": 7, "cookie": 0, "cookie_mask": 1, "table_id": 1, "priority": 1, "flags": 2, "match":{ "in_port":2}, "actions":[{ "type":"CLEAR_ACTIONS"}]}\' http://localhost:8080/stats/flowentry/add'
    )
    os.system(
        'curl -X POST -d \'{ "dpid": 7, "cookie": 0, "cookie_mask": 1, "table_id": 1, "priority": 1, "flags": 2, "match":{ "in_port":3}, "actions":[{ "type":"CLEAR_ACTIONS"}]}\' http://localhost:8080/stats/flowentry/add'
    )
    os.system(
        'curl -X POST -d \'{ "dpid": 8, "cookie": 0, "cookie_mask": 1, "table_id": 1, "priority": 1, "flags": 2, "match":{ "in_port":2}, "actions":[{ "type":"CLEAR_ACTIONS"}]}\' http://localhost:8080/stats/flowentry/add'
    )

    time.sleep(1)

    os.system(
        'ovs-ofctl del-flows sw1 -O Openflow13; ovs-ofctl add-flow sw1 "table=0, priority=0, actions=goto_table:1" -O Openflow13; ovs-ofctl del-flows sw2 -O Openflow13; ovs-ofctl add-flow sw2 "table=0, priority=0, actions=goto_table:1" -O Openflow13; ovs-ofctl add-flow sw2 "table=1, priority=0, actions=CONTROLLER:65535" -O Openflow13; ovs-ofctl add-flow sw2 "table=1, priority=0, in_port=1 actions=4" -O Openflow13; ovs-ofctl add-flow sw2 "table=1, priority=0, in_port=2 actions=4" -O Openflow13; ovs-ofctl add-flow sw2 "table=1, priority=0, in_port=3 actions=4" -O Openflow13; ovs-ofctl del-flows rsu1 -O Openflow13; ovs-ofctl del-flows rsu2 -O Openflow13; ovs-ofctl del-flows rsu3 -O Openflow13; ovs-ofctl add-flow rsu1 "table=0, priority=0, actions=goto_table:1" -O Openflow13; ovs-ofctl add-flow rsu2 "table=0, priority=0, actions=goto_table:1" -O Openflow13; ovs-ofctl add-flow rsu3 "table=0, priority=0, actions=goto_table:1" -O Openflow13; ovs-ofctl add-flow rsu1 "table=1, priority=0, in_port=1, actions=3" -O Openflow13; ovs-ofctl add-flow rsu1 "table=1, priority=0, in_port=3, actions=1" -O Openflow13; ovs-ofctl add-flow rsu2 "table=1, priority=0, in_port=1, actions=4" -O Openflow13; ovs-ofctl add-flow rsu2 "table=1, priority=0, in_port=4, actions=1" -O Openflow13; ovs-ofctl add-flow rsu3 "table=1, priority=0, in_port=1, actions=3" -O Openflow13; ovs-ofctl add-flow rsu3 "table=1, priority=0, in_port=3, actions=1" -O Openflow13; ovs-ofctl add-flow rsu3 "table=1, priority=1, cookie=0x28, in_port=1, nw_dst=200.0.10.2,icmp actions=5" -O Openflow13; ovs-ofctl add-flow rsu3 "table=1, priority=1, cookie=0x28,in_port=5, actions=1" -O Openflow13; ovs-ofctl add-flow rsu3 "table=1, priority=1, cookie=0x28, in_port=1, arp actions=3,5" -O Openflow13; ovs-ofctl add-flow rsu2 "table=1, priority=1, cookie=0x28, in_port=1, nw_dst=200.0.10.2,icmp actions=5" -O Openflow13; ovs-ofctl add-flow rsu2 "table=1, priority=1, cookie=0x28,in_port=5, actions=1" -O Openflow13; ovs-ofctl add-flow rsu2 "table=1, priority=1, cookie=0x28, in_port=1, arp actions=4,5" -O Openflow13; ovs-ofctl add-flow rsu1 "table=1, priority=1, cookie=0x28, in_port=1, nw_dst=200.0.10.2,icmp actions=5" -O Openflow13; ovs-ofctl add-flow rsu1 "table=1, priority=1, cookie=0x28,in_port=5, actions=1" -O Openflow13; ovs-ofctl add-flow rsu1 "table=1, priority=1, cookie=0x28, in_port=1, arp actions=3,5" -O Openflow13; ovs-ofctl add-flow rsu1 "table=1, priority=1, cookie=0x28, in_port=1, nw_dst=200.0.10.2,udp,tp_dst=5002 actions=5" -O Openflow13; ovs-ofctl add-flow rsu2 "table=1, priority=1, cookie=0x28, in_port=1, nw_dst=200.0.10.2,udp,tp_dst=5002 actions=5" -O Openflow13; ovs-ofctl add-flow rsu3 "table=1, priority=1, cookie=0x28, in_port=1, nw_dst=200.0.10.2,udp,tp_dst=5002 actions=5" -O Openflow13; mysql -u root -pwifi -e "delete from redirect;" framework 2> /dev/null'
    )

    time.sleep(2)

    # os.system('mysql -u root -pwifi < ./framework_its_sdn/initialdb.sql -fv &')
    # os.system('./framework_its_sdn/lc_mob.sh > j2.txt &')
    # time.sleep(1)
    # os.system('./framework_its_sdn/central_controller2.sh > j1.txt &')
    # os.system('./framework_its_sdn/local_controllers.sh > j3.txt &')

    # # time.sleep(1)

    # server_s1.cmd('tcpdump udp port 5002 -i server_s1-eth0 --direction=in -tttttnnvS --immediate-mode -l > server_s1.txt &')
    # server_s2.cmd('tcpdump udp port 5002 -i server_s2-eth0 --direction=in -tttttnnvS --immediate-mode -l > server_s2.txt &')
    # server_s3.cmd('tcpdump udp port 5002 -i server_s3-eth0 --direction=in -tttttnnvS --immediate-mode -l > server_s3.txt &')
    # server_e.cmd('tcpdump udp port 5003 -i server_e-eth0 --direction=in -tttttnnvS --immediate-mode -l > server_e.txt &')
    # server_e2.cmd('tcpdump udp port 5004 -i server_e2-eth0 --direction=in -tttttnnvS --immediate-mode -l > server_e2.txt &')
    # server_g.cmd('tcpdump udp port 5005 -i server_g-eth0 --direction=in -tttttnnvS --immediate-mode -l > server_g.txt &')

    # print( "*** Iniciando geracao de trafego" )

    # time.sleep(2)

    # for x in xrange(0,40):

    #     cars[x].cmd('tcpdump -i car%d-wlan0 --direction=out -tttttnnvS --immediate-mode -l > car%d.txt &' % (x, x))

    #     print("*** Car[%d] connect to server_s at 1Mbps" %x)
    #     cars[x].cmdPrint("timeout 205 hping3 --udp -p 5002 -i u10200 -d 1470 200.0.10.2 -q &")
    #     cars[x].cmdPrint("ping 200.0.10.2 -i 1 -c 205  > ping%d_ss.txt &" %x)

    #     print("*** Car[%d] connect to server_e at 1Mbps" %x)
    #     cars[x].cmdPrint("timeout 205 hping3 --udp -p 5003 -i u10200 -d 1470 200.0.10.3 -q &")
    #     cars[x].cmdPrint("ping 200.0.10.3 -i 1 -c 205  > ping%d_se.txt &" %x)

    #     print("*** Car[%d] connect to server_e2 at 2Mbps" %x)
    #     cars[x].cmdPrint("timeout 205 hping3 --udp -p 5004 -i u6800 -d 1470 200.0.10.4 -q &")
    #     cars[x].cmdPrint("ping 200.0.10.4 -i 1 -c 205  > ping%d_se2.txt &" %x)

    #     print("*** Car[%d] connect to server_g at 1Mbps" %x)
    #     cars[x].cmdPrint("timeout 205 hping3 --udp -p 5005 -i u10200 -d 1470 200.0.10.5 -q &")
    #     cars[x].cmdPrint("ping 200.0.10.4 -i 1 -c 205  > ping%d_sg.txt &" %x)

    # time.sleep(33)

    # print("Moving Car0 to RSU2")
    # cars[0].setPosition('1605,975,0')

    # time.sleep(33)

    # print("Moving Car0 to RSU3")
    # cars[0].setPosition('2105,975,0')

    # time.sleep(33)

    # print("Moving Car1 to RSU2")
    # cars[1].setPosition('1605,975,0')

    # time.sleep(33)

    # print("Moving Car2 to RSU3")
    # cars[2].setPosition('2105,975,0')

    # time.sleep(33)

    # print("Moving Car1 to RSU3")
    # cars[1].setPosition('2105,975,0')

    # time.sleep(33)

    # os.system('fuser -k ./framework_its_sdn/central_controller2.sh')
    # os.system('fuser -k ./framework_its_sdn/lc_mob.sh')
    # os.system('fuser -k ./framework_its_sdn/local_controllers.sh')

    # os.system('pkill tcpdump')
    # os.system('pkill hping3')
    # os.system('pkill ping')

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

    #os.system('rm *.vanetdata')

    server_s1.cmd('iptables -D OUTPUT 1')
    server_s2.cmd('iptables -D OUTPUT 1')
    server_s3.cmd('iptables -D OUTPUT 1')
    server_e.cmd('iptables -D OUTPUT 1')
    server_e2.cmd('iptables -D OUTPUT 1')
    server_g.cmd('iptables -D OUTPUT 1')

    print("*** Stopping network")
    net.stop()
Esempio n. 27
0
def topology():
    "Create a network."
    net = Mininet_wifi(controller=RemoteController, link=TCLink)

    info("*** Creating nodes\n")
    sta1 = net.addStation('sta1',
                          wlans=1,
                          mac='00:00:00:00:00:00',
                          ip="192.168.0.100/24")
    sta2 = net.addStation('sta2',
                          wlans=1,
                          mac='00:00:00:00:00:01',
                          ip="192.168.0.101/24")
    sta3 = net.addStation('sta3',
                          wlans=1,
                          mac='00:00:00:00:00:02',
                          ip="192.168.0.102/24")
    sta4 = net.addStation('sta4',
                          wlans=1,
                          mac='00:00:00:00:00:03',
                          ip="192.168.0.103/24")
    ap1 = net.addAccessPoint('ap1',
                             vssids=4,
                             ssid='ssid,ssid1,ssid2,ssid3,ssid4',
                             mode="g")
    s1 = net.addSwitch('s1')
    h1 = net.addHost('h1', ip="192.168.0.200/24", mac="00:00:00:00:01:00")
    h2 = net.addHost('h2', ip="192.168.0.201/24", mac="00:00:00:00:01:01")
    r1 = net.addHost('r1')
    h3 = net.addHost('h3', ip="100.100.100.100/24", mac="00:00:00:00:01:02")
    c1 = net.addController('c1',
                           controller=RemoteController,
                           ip='127.0.0.1',
                           port=6653)

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

    info("*** Adding Link\n")
    net.addLink(ap1, s1, bw=1000000000)
    net.addLink(s1, h1, bw=1000000000)
    net.addLink(s1, h2, bw=1000000000)
    net.addLink(s1, r1, bw=1000000000)
    net.addLink(r1, h3, bw=1000000000)

    info("*** Starting network\n")
    net.build()
    c1.start()
    ap1.start([c1])
    s1.start([c1])

    sleep(5)

    sta1.cmd(
        'iw dev %s connect %s %s' %
        (sta1.params['wlan'][0], ap1.params['ssid'][1], ap1.params['mac'][1]))
    sta2.cmd(
        'iw dev %s connect %s %s' %
        (sta2.params['wlan'][0], ap1.params['ssid'][2], ap1.params['mac'][2]))
    sta3.cmd(
        'iw dev %s connect %s %s' %
        (sta3.params['wlan'][0], ap1.params['ssid'][3], ap1.params['mac'][3]))
    sta4.cmd(
        'iw dev %s connect %s %s' %
        (sta4.params['wlan'][0], ap1.params['ssid'][4], ap1.params['mac'][4]))

    r1.cmd("ifconfig r1-eth0 0")
    r1.cmd("ifconfig r1-eth1 0")
    r1.cmd("ifconfig r1-eth0 hw ether 00:00:00:00:02:00")
    r1.cmd("ifconfig r1-eth1 hw ether 00:00:00:00:02:01")
    r1.cmd("ip addr add 192.168.0.1/24 brd + dev r1-eth0")
    r1.cmd("ip addr add 100.100.100.1/24 brd + dev r1-eth1")
    r1.cmd("echo 1 > /proc/sys/net/ipv4/ip_forward")
    sta1.cmd("ip route add default via 192.168.0.1")
    sta2.cmd("ip route add default via 192.168.0.1")
    sta3.cmd("ip route add default via 192.168.0.1")
    sta4.cmd("ip route add default via 192.168.0.1")
    h3.cmd("ip route add default via 100.100.100.1")
    s1.cmd("ovs-ofctl add-flow s1 priority=1,arp,actions=flood")
    """VLAN TAGGING"""
    """ap1.cmd("ovs-ofctl -O OpenFlow11 add-flow ap1 priority=65535,ip,dl_type=0x0800,in_port=2,actions=push_vlan:0x8100,set_field:4-\>vlan_vid,output:6")
    ap1.cmd("ovs-ofctl -O OpenFlow11 add-flow ap1 priority=65535,ip,dl_type=0x0800,in_port=3,actions=push_vlan:0x8100,set_field:2-\>vlan_vid,output:6")
    ap1.cmd("ovs-ofctl -O OpenFlow11 add-flow ap1 priority=65535,ip,dl_type=0x0800,in_port=4,actions=push_vlan:0x8100,set_field:3-\>vlan_vid,output:6")
    ap1.cmd("ovs-ofctl -O OpenFlow11 add-flow ap1 priority=65535,ip,dl_type=0x0800,in_port=5,actions=push_vlan:0x8100,set_field:4-\>vlan_vid,output:6")
    """
    """VLAN BASED ROUTING"""
    s1.cmd(
        "ovs-ofctl add-flow s1 priority=65535,ip,dl_vlan=2,nw_dst=192.168.0.200,actions=pop_vlan,output:2"
    )
    s1.cmd(
        "ovs-ofctl add-flow s1 priority=65535,ip,dl_vlan=3,nw_dst=192.168.0.201,actions=pop_vlan,output:3"
    )
    s1.cmd(
        "ovs-ofctl add-flow s1 priority=65535,ip,dl_vlan=2,dl_dst=00:00:00:00:02:00,actions=pop_vlan,goto_table:1"
    )
    s1.cmd(
        "ovs-ofctl add-flow s1 priority=65535,ip,dl_vlan=3,dl_dst=00:00:00:00:02:00,actions=pop_vlan,goto_table:2"
    )
    s1.cmd(
        "ovs-ofctl add-flow s1 priority=65535,ip,dl_vlan=4,dl_dst=00:00:00:00:02:00,actions=pop_vlan,goto_table:3"
    )
    """ACCESS CONTROL"""
    """drop traffic to h1 and h2"""
    s1.cmd(
        "ovs-ofctl add-flow s1 priority=10000,ip,dl_type=0x0800,nw_dst=192.168.0.200,actions=drop"
    )
    s1.cmd(
        "ovs-ofctl add-flow s1 priority=10000,ip,dl_type=0x0800,nw_dst=192.168.0.201,actions=drop"
    )
    """OVS S1 QUEUES"""
    s1.cmd(
        "ovs-vsctl -- set port s1-eth4 qos=@newqos -- --id=@newqos create qos type=linux-htb other-config:max-rate=1000000000 queues:1=@q1 queues:2=@q2 queues:3=@q3 queues:4=@q4 queues:5=@q5 queues:6=@q6 queues:7=@q7 queues:8=@q8 queues:9=@q9 -- --id=@q1 create queue other-config:min-rate=1000000 other-config:max-rate=1000000 -- --id=@q2 create queue other-config:min-rate=2000000 other-config:max-rate=2000000 -- --id=@q3 create queue other-config:min-rate=4000000 other-config:max-rate=4000000 -- --id=@q4 create queue other-config:min-rate=10000000 other-config:max-rate=10000000 -- --id=@q5 create queue other-config:min-rate=20000000 other-config:max-rate=20000000 -- --id=@q6 create queue other-config:min-rate=40000000 other-config:max-rate=40000000 -- --id=@q7 create queue other-config:min-rate=100000000 other-config:max-rate=100000000 -- --id=@q8 create queue other-config:min-rate=200000000 other-config:max-rate=200000000 -- --id=@q9 create queue other-config:min-rate=400000000 other-config:max-rate=400000000"
    )
    """QOS SELECTION VLAN2"""
    s1.cmd(
        "ovs-ofctl add-flow s1 table=1,priority=65535,ip,dl_type=0x0800,nw_proto=6,tp_dst=80,nw_dst=100.100.100.100,actions=set_queue:7,normal"
    )
    s1.cmd(
        "ovs-ofctl add-flow s1 table=1,priority=65535,ip,dl_type=0x0800,nw_proto=17,tp_dst=3001,nw_dst=100.100.100.100,actions=set_queue:8,normal"
    )
    s1.cmd(
        "ovs-ofctl add-flow s1 table=1,priority=65535,ip,dl_type=0x0800,nw_proto=6,tp_dst=5001,nw_dst=100.100.100.100,actions=set_queue:9,normal"
    )
    s1.cmd(
        "ovs-ofctl add-flow s1 table=1,priority=1,ip,dl_dst=00:00:00:00:02:00,actions=normal"
    )
    """QOS SELECTION VLAN3"""
    s1.cmd(
        "ovs-ofctl add-flow s1 table=2,priority=65535,ip,dl_type=0x0800,nw_proto=6,tp_dst=80,nw_dst=100.100.100.100,actions=set_queue:4,normal"
    )
    s1.cmd(
        "ovs-ofctl add-flow s1 table=2,priority=65535,ip,dl_type=0x0800,nw_proto=17,tp_dst=3001,nw_dst=100.100.100.100,actions=set_queue:5,normal"
    )
    s1.cmd(
        "ovs-ofctl add-flow s1 table=2,priority=65535,ip,dl_type=0x0800,nw_proto=6,tp_dst=5001,nw_dst=100.100.100.100,actions=set_queue:6,normal"
    )
    s1.cmd(
        "ovs-ofctl add-flow s1 table=2,priority=1,ip,dl_dst=00:00:00:00:02:00,actions=normal"
    )
    """QOS SELECTION VLAN4"""
    s1.cmd(
        "ovs-ofctl add-flow s1 table=3,priority=65535,ip,dl_type=0x0800,nw_proto=6,tp_dst=80,nw_dst=100.100.100.100,actions=set_queue:1,normal"
    )
    s1.cmd(
        "ovs-ofctl add-flow s1 table=3,priority=65535,ip,dl_type=0x0800,nw_proto=17,tp_dst=3001,nw_dst=100.100.100.100,actions=set_queue:2,normal"
    )
    s1.cmd(
        "ovs-ofctl add-flow s1 table=3,priority=65535,ip,dl_type=0x0800,nw_proto=6,tp_dst=5001,nw_dst=100.100.100.100,actions=set_queue:3,normal"
    )
    s1.cmd(
        "ovs-ofctl add-flow s1 table=3,priority=1,ip,dl_dst=00:00:00:00:02:00,actions=normal"
    )

    info("*** Running CLI\n")
    CLI_wifi(net)

    info("*** Stopping network\n")
    net.stop()
def topology():
    "Create a network."
    net = Mininet_wifi(controller=Controller,
                       accessPoint=OVSAP,
                       link=wmediumd,
                       wmediumd_mode=interference)

    info("*** Creating nodes\n")
    sta1 = net.addStation('sta1',
                          mac='00:00:00:00:00:02',
                          ip='10.0.0.1/8',
                          speed=4)
    sta2 = net.addStation('sta2',
                          mac='00:00:00:00:00:03',
                          ip='10.0.0.2/8',
                          speed=6)
    sta3 = net.addStation('sta3',
                          mac='00:00:00:00:00:04',
                          ip='10.0.0.3/8',
                          speed=3)
    sta4 = net.addStation('sta4',
                          mac='00:00:00:00:00:05',
                          ip='10.0.0.4/8',
                          speed=3)
    ap1 = net.addAccessPoint('ap1',
                             ssid='new-ssid',
                             mode='g',
                             channel='1',
                             position='45,45,0')
    c1 = net.addController('c1', controller=Controller)

    info("*** Configuring Propagation Model\n")
    net.propagationModel(model="logDistance", exp=4.5)

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

    info("*** Creating links\n")
    net.addLink(sta3, cls=adhoc, ssid='adhocNet')
    net.addLink(sta4, cls=adhoc, ssid='adhocNet')

    'ploting graph'
    #net.plotGraph(max_x=200, max_y=200)

    info("*** Starting network\n")
    net.build()
    c1.start()
    ap1.start([c1])

    getTrace(sta1, 'examples/replaying/replayingMobility/node1.dat')
    getTrace(sta2, 'examples/replaying/replayingMobility/node2.dat')
    getTrace(sta3, 'examples/replaying/replayingMobility/node3.dat')
    getTrace(sta4, 'examples/replaying/replayingMobility/node4.dat')

    replayingMobility(net)

    info("*** Running CLI\n")
    CLI_wifi(net)

    info("*** Stopping network\n")
    net.stop()
Esempio n. 29
0
def topology():

    "Create a network."
    net = Mininet_wifi(controller=Controller,
                       switch=OVSKernelSwitch,
                       link=wmediumd,
                       wmediumd_mode=interference)

    info("*** Creating nodes\n")
    cars = []
    for x in range(0, 10):
        cars.append(x)
    for x in range(0, 10):
        min_ = random.randint(1, 4)
        max_ = random.randint(11, 30)
        cars[x] = net.addCar('car%s' % (x + 1),
                             wlans=1,
                             ip='10.0.0.%s/8' % (x + 1),
                             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='11')
    rsu14 = net.addAccessPoint('RSU14', ssid='RSU14', mode='g', channel='11')
    c1 = net.addController('c1', controller=Controller)

    info("*** Configuring Propagation Model\n")
    net.propagationModel(model="logDistance", exp=4.5)

    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)

    net.plotGraph(max_x=500, max_y=500)

    net.roads(10)

    net.startMobility(time=0)

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

    i = 201
    for sw in net.carsSW:
        sw.start([c1])
        os.system('ip addr add 10.0.0.%s dev %s' % (i, sw))
        i += 1

    i = 1
    j = 2
    k = 1
    for car in cars:
        car.setIP('192.168.0.%s/24' % k, intf='%s-wlan0' % car)
        car.setIP('192.168.1.%s/24' % i, intf='%s-eth1' % car)
        car.cmd('ip route add 10.0.0.0/8 via 192.168.1.%s' % j)
        i += 2
        j += 2
        k += 1

    i = 1
    j = 2
    for carsta in net.carsSTA:
        carsta.setIP('10.0.0.%s/24' % i, intf='%s-mp0' % carsta)
        carsta.setIP('192.168.1.%s/24' % j, intf='%s-eth2' % carsta)
        # May be confuse, but it allows ping to the name instead of ip addr
        carsta.setIP('10.0.0.%s/24' % i, intf='%s-wlan0' % carsta)
        carsta.cmd('echo 1 > /proc/sys/net/ipv4/ip_forward')
        i += 1
        j += 2

    for carsta1 in net.carsSTA:
        i = 1
        j = 1
        for carsta2 in net.carsSTA:
            if carsta1 != carsta2:
                carsta1.cmd('route add -host 192.168.1.%s gw 10.0.0.%s' %
                            (j, i))
            i += 1
            j += 2

    info("*** Running CLI\n")
    CLI_wifi(net)

    info("*** Stopping network\n")
    net.stop()
Esempio n. 30
0
def topology(is_mptcp):
    "Create a network."
    net = Mininet_wifi(controller=Controller)

    info("*** Creating nodes\n")
    sta1 = net.addStation('sta1', wlans=2, position='51,10,0')
    ap1 = net.addAccessPoint('ap1',
                             mac='00:00:00:00:00:02',
                             ssid='ssid_ap1',
                             mode='g',
                             channel='6',
                             position='55,17,0')
    ap2 = net.addAccessPoint('ap2',
                             mac='00:00:00:00:00:03',
                             ssid='ssid_ap2',
                             mode='n',
                             channel='1',
                             position='50,11,0')
    r1 = net.addHost('r1', mac='00:00:00:00:00:04')
    h1 = net.addHost('h1', mac='00:00:00:00:00:10')
    c1 = net.addController('c1')

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

    info("*** Associating and Creating links\n")
    net.addLink(ap1, sta1)
    net.addLink(ap2, sta1)
    net.addLink(ap1, r1, bw=1000)
    net.addLink(ap2, r1, bw=1000)
    net.addLink(r1, h1, bw=100)
    net.addLink(r1, h1, bw=100)

    info("*** Starting network\n")
    net.build()
    c1.start()
    ap1.start([c1])
    ap2.start([c1])

    r1.cmd('ifconfig r1-eth0 10.0.0.1/24')
    r1.cmd('ifconfig r1-eth1 10.0.1.1/24')
    r1.cmd('ifconfig r1-eth2 10.0.2.1/24')
    r1.cmd('ifconfig r1-eth3 10.0.3.1/24')

    h1.cmd('ifconfig h1-eth0 10.0.2.2/24')
    h1.cmd('ifconfig h1-eth1 10.0.3.2/24')

    sta1.cmd('ifconfig sta1-wlan0 10.0.0.2/24')
    sta1.cmd('ifconfig sta1-wlan1 10.0.1.2/24')

    sta1.cmd("ip rule add from 10.0.0.2 table 1")
    sta1.cmd("ip rule add from 10.0.1.2 table 2")
    sta1.cmd("ip route add 10.0.0.0/24 dev sta1-wlan0 scope link table 1")
    sta1.cmd("ip route add default via 10.0.0.1 dev sta1-wlan0 table 1")
    sta1.cmd("ip route add 10.0.1.0/24 dev sta1-wlan1 scope link table 2")
    sta1.cmd("ip route add default via 10.0.1.1 dev sta1-wlan1 table 2")
    sta1.cmd(
        "ip route add default scope global nexthop via 10.0.0.1 dev sta1-wlan0"
    )

    h1.cmd("ip rule add from 10.0.2.2 table 1")
    h1.cmd("ip rule add from 10.0.3.2 table 2")
    h1.cmd("ip route add 10.0.2.0/24 dev h1-eth0 scope link table 1")
    h1.cmd("ip route add default via 10.0.2.1 dev h1-eth0 table 1")
    h1.cmd("ip route add 10.0.3.0/24 dev h1-eth1 scope link table 2")
    h1.cmd("ip route add default via 10.0.3.1 dev h1-eth1 table 2")
    h1.cmd(
        "ip route add default scope global nexthop via 10.0.2.1 dev h1-eth0")

    r1.cmd('sysctl -w net.ipv4.ip_forward=1')

    if not is_mptcp:
        sta1.cmd('iw dev sta1-wlan1 disconnect')

    info("*** Running CLI\n")
    CLI_wifi(net)

    info("*** Stopping network\n")
    net.stop()