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
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()
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()
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()
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()
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())
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')
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()
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()
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()
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()
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()
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
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()
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()
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
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()
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()
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
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()
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()
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()
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()
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()
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()
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()