Пример #1
0
    def closeMininetWiFi(self):
        "Close Mininet-WiFi"
        self.plot.closePlot()
        module.stop()  # Stopping WiFi Module

        if self.useWmediumd:
            WmediumdServerConn.disconnect()
            WmediumdStarter.stop()
Пример #2
0
    def configureWmediumd(self, stations, accessPoints):
        """ 
        Updates values for frequency and channel
        
        :param stations: list of stations
        :param accessPoints: list of access points
        """
        intfrefs = []
        links = []
        positions = []
        txpowers = []
        cars = []

        for node in stations:
            if 'carsta' in node.params:
                cars.append(node.params['carsta'])

        nodes = stations + accessPoints + cars

        for node in nodes:
            node.wmediumdIface = DynamicWmediumdIntfRef(node)
            intfrefs.append(node.wmediumdIface)

        if self.enable_interference:
            mode = WmediumdConstants.WMEDIUMD_MODE_INTERFERENCE
            for node in nodes:
                if 'position' not in node.params:
                    posX = 0
                    posY = 0
                    posZ = 0
                else:
                    posX = node.params['position'][0]
                    posY = node.params['position'][1]
                    posZ = node.params['position'][2]
                node.lastpos = [0, 0, 0]
                positions.append(
                    WmediumdPosition(node.wmediumdIface, [posX, posY, posZ]))
                txpowers.append(
                    WmediumdTXPower(node.wmediumdIface,
                                    float(node.params['txpower'][0])))
        else:
            mode = WmediumdConstants.WMEDIUMD_MODE_SNR
            for node in self.wlinks:
                links.append(
                    WmediumdSNRLink(node[0].wmediumdIface,
                                    node[1].wmediumdIface,
                                    node[0].params['snr'][0]))
                links.append(
                    WmediumdSNRLink(node[1].wmediumdIface,
                                    node[0].wmediumdIface,
                                    node[0].params['snr'][0]))

        WmediumdStarter.initialize(intfrefs, links, mode=mode, positions=positions, enable_interference=self.enable_interference, \
                                   auto_add_links=False, txpowers=txpowers, with_server=True)
        WmediumdStarter.start()
Пример #3
0
    def closeMininetWiFi(self):
        "Close Mininet-WiFi"
        mobility.continuePlot = 'exit()'
        mobility.continueParams = 'exit()'
        sleep(2)
        self.plot.closePlot()
        module.stop()  # Stopping WiFi Module

        if self.useWmediumd:
            WmediumdServerConn.disconnect()
            WmediumdStarter.stop()
Пример #4
0
def topology():
    """Create a network. sta1 <--> sta2 <--> sta3"""

    print "*** Network creation"
    net = Mininet()

    print "*** Creating nodes"
    sta1 = net.addStation('sta1')
    sta2 = net.addStation('sta2')
    sta3 = net.addStation('sta3')

    print "*** Configure wmediumd"
    # This should be done right after the station has been initialized
    sta1wlan0 = DynamicWmediumdIntfRef(sta1)
    sta2wlan0 = DynamicWmediumdIntfRef(sta2)
    sta3wlan0 = DynamicWmediumdIntfRef(sta3)

    intfrefs = [sta1wlan0, sta2wlan0, sta3wlan0]
    links = [
        WmediumdERRPROBLink(sta1wlan0, sta2wlan0, 0.2),
        WmediumdERRPROBLink(sta2wlan0, sta1wlan0, 0.2),
        WmediumdERRPROBLink(sta2wlan0, sta3wlan0, 0.1),
        WmediumdERRPROBLink(sta3wlan0, sta2wlan0, 0.1)
    ]
    WmediumdStarter.initialize(intfrefs, links, use_errprob=True)

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

    print "*** Start wmediumd"
    WmediumdStarter.start()

    print "*** Creating links"
    net.addHoc(sta1, ssid='adNet')
    net.addHoc(sta2, ssid='adNet')
    net.addHoc(sta3, ssid='adNet')

    print "*** Starting network"
    net.start()

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

    print "*** Stopping wmediumd"
    WmediumdStarter.stop()

    print "*** Stopping network"
    net.stop()
Пример #5
0
def topology():
    """Create a network. sta1 <--> sta2 <--> sta3"""

    print "*** Network creation"
    net = Mininet()

    print "*** Configure wmediumd"
    sta1wlan0 = WmediumdIntfRef('sta1', 'sta1-wlan0', '02:00:00:00:00:00')
    sta2wlan0 = WmediumdIntfRef('sta2', 'sta2-wlan0', '02:00:00:00:01:00')
    sta3wlan0 = WmediumdIntfRef('sta3', 'sta3-wlan0', '02:00:00:00:02:00')

    intfrefs = [sta1wlan0, sta2wlan0, sta3wlan0]
    links = [
        WmediumdSNRLink(sta1wlan0, sta2wlan0, 15),
        WmediumdSNRLink(sta2wlan0, sta1wlan0, 15),
        WmediumdSNRLink(sta2wlan0, sta3wlan0, 15),
        WmediumdSNRLink(sta3wlan0, sta2wlan0, 15)
    ]
    WmediumdStarter.initialize(intfrefs, links)

    print "*** Creating nodes"
    sta1 = net.addStation('sta1')
    sta2 = net.addStation('sta2')
    sta3 = net.addStation('sta3')

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

    print "*** Start wmediumd"
    WmediumdStarter.start()

    print "*** Creating links"
    net.addHoc(sta1, ssid='adNet')
    net.addHoc(sta2, ssid='adNet')
    net.addHoc(sta3, ssid='adNet')

    print "*** Starting network"
    net.start()

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

    print "*** Stopping wmediumd"
    WmediumdStarter.stop()

    print "*** Stopping network"
    net.stop()
Пример #6
0
def topology():
    """Create a network. sta1 <--> sta2 <--> sta3"""

    print "*** Network creation"
    net = Mininet()

    print "*** Creating nodes"
    sta1 = net.addStation('sta1', range=50, position='10,10,0')
    sta2 = net.addStation('sta2', range=50, position='20,10,0')
    sta3 = net.addStation('sta3', range=50, position='30,10,0')

    print "*** Configure wmediumd"
    # This should be done right after the station has been initialized
    sta1.wmediumdIface = DynamicWmediumdIntfRef(sta1)
    sta2.wmediumdIface = DynamicWmediumdIntfRef(sta2)
    sta3.wmediumdIface = DynamicWmediumdIntfRef(sta3)

    intfrefs = [sta1.wmediumdIface, sta2.wmediumdIface, sta3.wmediumdIface]
    links = [
        WmediumdSNRLink(sta1.wmediumdIface, sta2.wmediumdIface, 15),
        WmediumdSNRLink(sta2.wmediumdIface, sta1.wmediumdIface, 15),
        WmediumdSNRLink(sta2.wmediumdIface, sta3.wmediumdIface, 15),
        WmediumdSNRLink(sta3.wmediumdIface, sta2.wmediumdIface, 15)
    ]
    WmediumdStarter.initialize(intfrefs, links, with_server=True)

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

    print "*** Start wmediumd"
    WmediumdStarter.start()

    print "*** Plotting graph ***"
    net.plotGraph(max_x=200, max_y=200)

    print "*** Enabling Mesh Routing ***"
    net.meshRouting('custom')

    print "*** Creating links"
    net.addMesh(sta1, ssid='adNet')
    net.addMesh(sta2, ssid='adNet')
    net.addMesh(sta3, ssid='adNet')

    print "*** Starting network"
    net.start()
    print "\n\n\n"
    print "*** Pinging sta2"
    sta1.cmdPrint('ping -c 1 10.0.0.2')

    print "*** Update wmediumd"
    WmediumdServerConn.connect()

    # Required when the position of the nodes are previously defined. Useful to set channel params.
    net.autoAssociation()

    CLI(net)

    print "*** Stopping network"
    net.stop()

    print "*** Stopping wmediumd"
    WmediumdServerConn.disconnect()
    WmediumdStarter.stop()
Пример #7
0
 def kill_wmediumd(cls):
     "Kill wmediumd"
     info("\n*** Killing wmediumd")
     WmediumdServerConn.disconnect()
     WmediumdStarter.stop()
     sleep(0.1)
Пример #8
0
    def configureWmediumd(cls, mininet):
        """ 
        Updates values for frequency and channel
        """
        from mininet.node import Car

        intfrefs = []
        links = []
        positions = []
        txpowers = []
        cars = []

        cls.configureWiFiDirect = mininet.configureWiFiDirect
        cls.configure4addr = mininet.configure4addr
        cls.enable_error_prob = mininet.enable_error_prob
        cls.enable_interference = mininet.enable_interference
        cls.enable_spec_prob_link = mininet.enable_spec_prob_link

        for node in mininet.stations:
            if 'carsta' in node.params:
                cars.append(node.params['carsta'])

        nodes = mininet.stations + mininet.aps + cars
        for node in nodes:
            node.wmIface = []
            if isinstance(node, Car):
                wlans = 1
            elif '_4addr' in node.params and node.params['_4addr'] == 'ap':
                wlans = 1
            else:
                wlans = len(node.params['wlan'])
            for wlan in range(0, wlans):
                node.wmIface.append(wlan)
                node.wmIface[wlan] = DynamicWmediumdIntfRef(node, intf=wlan)
                intfrefs.append(node.wmIface[wlan])

        if cls.enable_interference:
            mode = WmediumdConstants.WMEDIUMD_MODE_INTERFERENCE
            for node in nodes:
                if 'position' not in node.params:
                    posX = 0
                    posY = 0
                    posZ = 0
                else:
                    posX = node.params['position'][0]
                    posY = node.params['position'][1]
                    posZ = node.params['position'][2]
                node.lastpos = [posX, posY, posZ]

                if isinstance(node, Car):
                    wlans = 1
                elif '_4addr' in node.params and node.params['_4addr'] == 'ap':
                    wlans = 1
                else:
                    wlans = len(node.params['wlan'])
                for wlan in range(0, wlans):
                    positions.append(
                        WmediumdPosition(node.wmIface[wlan],
                                         [posX, posY, posZ]))
                    txpowers.append(
                        WmediumdTXPower(node.wmIface[wlan],
                                        float(node.params['txpower'][wlan])))
        elif cls.enable_spec_prob_link:
            mode = WmediumdConstants.WMEDIUMD_MODE_SPECPROB
        elif cls.enable_error_prob:
            mode = WmediumdConstants.WMEDIUMD_MODE_ERRPROB
            for node in cls.wlinks:
                links.append(
                    WmediumdERRPROBLink(node[0].wmIface[0], node[1].wmIface[0],
                                        node[2]))
                links.append(
                    WmediumdERRPROBLink(node[1].wmIface[0], node[0].wmIface[0],
                                        node[2]))
        else:
            mode = WmediumdConstants.WMEDIUMD_MODE_SNR
            for node in cls.wlinks:
                links.append(
                    WmediumdSNRLink(node[0].wmIface[0], node[1].wmIface[0],
                                    node[0].params['rssi'][0] - (-91)))
                links.append(
                    WmediumdSNRLink(node[1].wmIface[0], node[0].wmIface[0],
                                    node[0].params['rssi'][0] - (-91)))

        WmediumdStarter.initialize(intfrefs,
                                   links,
                                   mode=mode,
                                   positions=positions,
                                   enable_interference=cls.enable_interference,
                                   auto_add_links=False,
                                   txpowers=txpowers,
                                   with_server=True)
        WmediumdStarter.start(mininet, propagationModel)
Пример #9
0
    def configureWmediumd(self, stations, accessPoints):
        """ 
        Updates values for frequency and channel
        
        :param stations: list of stations
        :param accessPoints: list of access points
        """
        intfrefs = []
        links = []
        positions = []
        txpowers = []
        cars = []

        for node in stations:
            if 'carsta' in node.params:
                cars.append(node.params['carsta'])

        nodes = stations + accessPoints + cars

        for node in nodes:
            node.wmIface = []
            if node.type == 'vehicle':
                wlans = 1
            else:
                wlans = len(node.params['wlan'])
            for wlan in range(0, wlans):
                node.wmIface.append(wlan)
                node.wmIface[wlan] = DynamicWmediumdIntfRef(node, intf=wlan)
                intfrefs.append(node.wmIface[wlan])

        if self.enable_interference:
            mode = WmediumdConstants.WMEDIUMD_MODE_INTERFERENCE
            for node in nodes:
                if 'position' not in node.params:
                    posX = 0
                    posY = 0
                    posZ = 0
                else:
                    posX = node.params['position'][0]
                    posY = node.params['position'][1]
                    posZ = node.params['position'][2]
                node.lastpos = [0, 0, 0]

                if hasattr(node, 'type') and node.type == 'vehicle':
                    wlans = 1
                else:
                    wlans = len(node.params['wlan'])
                for wlan in range(0, wlans):
                    positions.append(
                        WmediumdPosition(node.wmIface[wlan],
                                         [posX, posY, posZ]))
                    txpowers.append(
                        WmediumdTXPower(node.wmIface[wlan],
                                        float(node.params['txpower'][wlan])))
        elif self.enable_spec_prob_link:
            mode = WmediumdConstants.WMEDIUMD_MODE_SPECPROB
        elif self.enable_error_prob:
            mode = WmediumdConstants.WMEDIUMD_MODE_ERRPROB
        else:
            mode = WmediumdConstants.WMEDIUMD_MODE_SNR

        WmediumdStarter.initialize(intfrefs, links, mode=mode, positions=positions, enable_interference=self.enable_interference, \
                                   auto_add_links=False, txpowers=txpowers, with_server=True)
        WmediumdStarter.start()
Пример #10
0
def topology():
    """Create a network. sta1 <--> sta2 <--> sta3"""

    print "*** Network creation"
    net = Mininet()

    print "*** Creating nodes"
    sta1 = net.addStation('sta1', range=200)
    sta2 = net.addStation('sta2', range=200)
    sta3 = net.addStation('sta3', range=200)

    print "*** Configure wmediumd"
    # This should be done right after the station has been initialized
    sta1.wmediumdIface = DynamicWmediumdIntfRef(sta1)
    sta2.wmediumdIface = DynamicWmediumdIntfRef(sta2)
    sta3.wmediumdIface = DynamicWmediumdIntfRef(sta3)

    intfrefs = [sta1.wmediumdIface, sta2.wmediumdIface, sta3.wmediumdIface]
    links = [
        WmediumdSNRLink(sta1.wmediumdIface, sta2.wmediumdIface, 15),
        WmediumdSNRLink(sta2.wmediumdIface, sta1.wmediumdIface, 15),
        WmediumdSNRLink(sta2.wmediumdIface, sta3.wmediumdIface, 15),
        WmediumdSNRLink(sta3.wmediumdIface, sta2.wmediumdIface, 15)]
    WmediumdStarter.initialize(intfrefs, links, with_server=True)

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

    print "*** Start wmediumd"
    WmediumdStarter.start()

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

    net.meshRouting('custom')

    net.seed(20)

    print "*** Creating links"
    net.addMesh(sta1, ssid='adNet')
    net.addMesh(sta2, ssid='adNet')
    net.addMesh(sta3, ssid='adNet')

    print "*** Starting network"
    net.start()
    print "\n\n\n"
    print "*** Pinging sta2"
    sta1.cmdPrint('ping -c 1 10.0.0.2')

    print "*** Setting up the mobility model"
    net.startMobility(startTime=0, model='RandomDirection', max_x=220, max_y=220, min_v=0.1, max_v=0.2)

    print "*** Update wmediumd"
    WmediumdServerConn.connect()

    CLI(net)

    print "*** Stopping network"
    net.stop()

    print "*** Stopping wmediumd"
    WmediumdServerConn.disconnect()
    WmediumdStarter.stop()