Ejemplo n.º 1
0
def instantiateGraph(mininet):
        MAX_X = mininetWiFi.MAX_X
        MAX_Y = mininetWiFi.MAX_Y
        nodes = mininet.stations + mininet.accessPoints
        for node in nodes:
            replayingMobility.addNode(node)   
        plot2d.instantiateGraph(MAX_X, MAX_Y)
        plot2d.plotGraph(nodes, [], [])
Ejemplo n.º 2
0
    def __init__(self, mininet, stdin=sys.stdin, script=None):
        """Start and run interactive or batch mode CLI
           mininet: Mininet network object
           stdin: standard input for CLI
           script: script to run in batch mode"""

        if mobility.isMobility == False and mobility.DRAW and mininet.alreadyPlotted == False:
            mininet.checkAPAdhoc()

            for sta in mininet.stations:
                if 'position' not in sta.params:
                    sta.params['position'] = 0, 0, 0

            if mobility.accessPoints == []:
                mobility.accessPoints = mininet.accessPoints
            if mobility.stations == []:
                mobility.stations = mininet.stations

            nodes = mininet.stations + mininet.accessPoints + mininet.plotNodes

            try:
                if mininet.is3d:
                    plot3d.instantiateGraph(mininet.MAX_X, mininet.MAX_Y,
                                            mininet.MAX_Z)
                    plot3d.graphInstantiateNodes(nodes)
                else:
                    plot2d.instantiateGraph(mininet.MAX_X, mininet.MAX_Y)
                    plot2d.plotGraph(nodes, mininet.srcConn, mininet.dstConn)
                    plot2d.graphPause()
            except:
                info(
                    'Warning: This OS does not support GUI. Running without GUI.\n'
                )
                mobility.DRAW = False

        self.mn = mininet
        # Local variable bindings for py command
        self.locals = {'net': mininet}
        # Attempt to handle input
        self.stdin = stdin
        self.inPoller = poll()
        self.inPoller.register(stdin)
        self.inputFile = script

        Cmd.__init__(self)
        info('*** Starting CLI:\n')

        if self.inputFile:
            self.do_source(self.inputFile)
            return

        self.initReadline()
        self.run()
Ejemplo n.º 3
0
    def models(self, model=None, staMov=None, min_v=0, max_v=0, seed=None, stations=None, aps=None,
               dstConn=None, srcConn=None, walls=None, plotNodes=None, MAX_X=0, MAX_Y=0):

        np.random.seed(seed)
        
        self.staList = stations
        self.apList = aps
        self.wallList = walls
        nodes = self.staList + self.apList + plotNodes

        # max waiting time
        MAX_WT = 100.

        for sta in self.staList:
            if sta.max_x == 0:
                sta.max_x = MAX_X
            if sta.max_y == 0:
                sta.max_y = MAX_Y
            if sta.max_v == 0:
                sta.max_v = max_v
            if sta.min_v == 0:
                sta.min_v = min_v

        if self.DRAW:
            plot2d.instantiateGraph(MAX_X, MAX_Y)
            plot2d.plotGraph(nodes, srcConn, dstConn, MAX_X, MAX_Y)
            plot2d.graphPause()

        if staMov != None:            
            debug('Configuring the mobility model %s' % model)
    
            if(model == 'RandomWalk'):  # Random Walk model
                mob = random_walk(staMov)
            elif(model == 'TruncatedLevyWalk'):  # Truncated Levy Walk model
                mob = truncated_levy_walk(staMov)
            elif(model == 'RandomDirection'):  # Random Direction model
                mob = random_direction(staMov, dimensions=(MAX_X, MAX_Y))
            elif(model == 'RandomWayPoint'):  # Random Waypoint model
                mob = random_waypoint(staMov, wt_max=MAX_WT)
            elif(model == 'GaussMarkov'):  # Gauss-Markov model
                mob = gauss_markov(staMov, alpha=0.99)
            elif(model == 'ReferencePoint'):  # Reference Point Group model
                mob = reference_point_group(staMov, dimensions=(MAX_X, MAX_Y), aggregation=0.5)
            elif(model == 'TimeVariantCommunity'):  # Time-variant Community Mobility Model
                mob = tvc(staMov, dimensions=(MAX_X, MAX_Y), aggregation=[0.5, 0.], epoch=[100, 100])
            else:
                raise Exception("Model not defined!")
            
            if self.DRAW:
                self.startMobilityModelGraph(mob, staMov)
            else:
                self.startMobilityModelNoGraph(mob, staMov)
Ejemplo n.º 4
0
 def checkDimension(self, nodes):
     try:
         if self.is3d:
             plot3d.instantiateGraph(self.MAX_X, self.MAX_Y, self.MAX_Z)
             plot3d.graphInstantiateNodes(nodes)
         else:
             plot2d.instantiateGraph(self.MAX_X, self.MAX_Y)
             plot2d.plotGraph(nodes, self.srcConn, self.dstConn)
             plot2d.graphPause()
     except:
         info(
             'Warning: This OS does not support GUI. Running without GUI.\n'
         )
         self.DRAW = False
Ejemplo n.º 5
0
    def __init__(self, mininet, stdin=sys.stdin, script=None):
        """Start and run interactive or batch mode CLI
           mininet: Mininet network object
           stdin: standard input for CLI
           script: script to run in batch mode"""

        if mobility.isMobility == False and mobility.DRAW:

            for sta in mininet.stations:
                if 'position' not in sta.params:
                    sta.params['position'] = 0, 0, 0

            if mobility.apList == []:
                mobility.apList = mininet.accessPoints
            if mobility.staList == []:
                mobility.staList = mininet.stations
            nodes = mininet.stations + mininet.accessPoints

            if mininet.is3d:
                plot3d.instantiateGraph(mininet.MAX_X, mininet.MAX_Y,
                                        mininet.MAX_Z)
                plot3d.graphInstantiateNodes(nodes)
            else:
                plot2d.instantiateGraph(mininet.MAX_X, mininet.MAX_Y)
                plot2d.plotGraph(nodes, [], [], mininet.MAX_X, mininet.MAX_Y)
                plot2d.graphPause()

        self.mn = mininet
        # Local variable bindings for py command
        self.locals = {'net': mininet}
        # Attempt to handle input
        self.stdin = stdin
        self.inPoller = poll()
        self.inPoller.register(stdin)
        self.inputFile = script

        Cmd.__init__(self)
        info('*** Starting CLI:\n')

        if self.inputFile:
            self.do_source(self.inputFile)
            return

        self.initReadline()
        self.run()
Ejemplo n.º 6
0
def instantiateGraph(mininet):
    MIN_X = mininetWiFi.MIN_X
    MIN_Y = mininetWiFi.MIN_Y
    MIN_Z = mininetWiFi.MIN_Z
    MAX_X = mininetWiFi.MAX_X
    MAX_Y = mininetWiFi.MAX_Y
    MAX_Z = mininetWiFi.MAX_Z
    nodes = mininet.stations + mininet.accessPoints
    for node in nodes:
        replayingMobility.addNode(node)

    if MIN_Z != 0 or MAX_Z != 0:
        plot3d.instantiateGraph(MIN_X, MIN_Y, MIN_Z, MAX_X, MAX_Y, MAX_Z)
        plot3d.graphInstantiateNodes(nodes)
        mininetWiFi.is3d = True
    else:
        plot2d.instantiateGraph(MIN_X, MIN_Y, MAX_X, MAX_Y)
        plot2d.plotGraph(nodes)
Ejemplo n.º 7
0
    def start(self, stations, aps, nroads, srcConn, dstConn, MAX_X, MAX_Y, **params):
        'start topology'
        cars = stations
        mobility.addNodes(cars, aps)
        [self.road.append(x) for x in range(0, nroads)]
        [self.points.append(x) for x in range(0, nroads)]
        [self.totalRoads.append(x) for x in range(0, nroads)]
        plot2d.instantiateGraph(MAX_X, MAX_Y)

        try:
            self.display_grid(aps, srcConn, dstConn, nroads)
            self.display_cars(cars)
            plot2d.plotGraph(cars, [], [])
            self.setWifiParameters()
            while True:
                [self.scatter, self.com_lines] = self.simulate_car_movement(cars, aps, self.scatter, self.com_lines)
                mobility.continueParams
        except:
            pass
Ejemplo n.º 8
0
    def __init__(self, cars, baseStations, nroads, srcConn, dstConn, MAX_X, MAX_Y):

        mobility.staList = cars
        mobility.apList = baseStations
        mobility.MAX_X = MAX_X
        mobility.MAX_Y = MAX_Y
        [self.road.append(x) for x in range(0, nroads)]
        [self.points.append(x) for x in range(0, nroads)]
        [self.totalRoads.append(x) for x in range(0, nroads)]
        plot2d.instantiateGraph(MAX_X, MAX_Y)

        try:
            self.display_grid(baseStations, srcConn, dstConn, nroads)
            self.display_cars(cars)
            plot2d.plotGraph(cars, [], [], MAX_X, MAX_Y)
            self.setWifiParameters()
            while mobility.continue_:
                [self.scatter, self.com_lines] = self.simulate_car_movement(cars, baseStations, self.scatter, self.com_lines)
        except:
            pass
Ejemplo n.º 9
0
    def start(self, **params):
        'start topology'
        from mininet.wifiMobility import mobility
        cars = params['stations']
        aps = params['aps']
        mobility.addNodes(cars, aps)
        [self.road.append(x) for x in range(0, params['nroads'])]
        [self.points.append(x) for x in range(0, params['nroads'])]
        [self.totalRoads.append(x) for x in range(0, params['nroads'])]
        plot2d.instantiateGraph(params['MIN_X'], params['MIN_Y'],
                                params['MAX_X'], params['MAX_Y'])

        self.display_grid(aps, params['connections'], params['nroads'])
        self.display_cars(cars)
        plot2d.plotGraph(cars, [])
        self.setWifiParameters(mobility)
        while True:
            [self.scatter, self.com_lines] = \
                self.simulate_car_movement(cars, aps, self.scatter,
                                           self.com_lines, mobility)
            mobility.continueParams
Ejemplo n.º 10
0
    def __init__(self, cars, accessPoints, nroads, srcConn, dstConn, MAX_X,
                 MAX_Y):

        mobility.addNodes(cars, accessPoints)
        mobility.MAX_X = MAX_X
        mobility.MAX_Y = MAX_Y
        [self.road.append(x) for x in range(0, nroads)]
        [self.points.append(x) for x in range(0, nroads)]
        [self.totalRoads.append(x) for x in range(0, nroads)]
        plot2d.instantiateGraph(MAX_X, MAX_Y)

        try:
            self.display_grid(accessPoints, srcConn, dstConn, nroads)
            self.display_cars(cars)
            plot2d.plotGraph(cars, [], [])
            self.setWifiParameters()
            while True:
                [self.scatter, self.com_lines
                 ] = self.simulate_car_movement(cars, accessPoints,
                                                self.scatter, self.com_lines)
                mobility.continueParams
        except:
            pass
Ejemplo n.º 11
0
    def models(self, stations=None, aps=None, model=None, staMov=None, min_v=0, max_v=0, seed=None,
               dstConn=None, srcConn=None, walls=None, plotNodes=None, MAX_X=0, MAX_Y=0):
        """ 
        Used when a mobility model is applied
        
        :param stations: list of stations
        :param aps: list of access points
        :param model: mobility model
        :param staMov: list of nodes with mobility
        :param min_v: minimum velocity
        :param max_v: maximum velocity
        :param speed: speed
        :param srcConn:  list of connections for source nodes
        :param dstConn:  list of connections for destination nodes
        :param walls: list of walls (not used yet)
        :param plotNodes: list of nodes to be plotted (including hosts and switches)
        :param MAX_X: Maximum value for X
        :param MAX_Y: Maximum value for Y
        """

        np.random.seed(seed)
        
        self.stations = stations
        self.accessPoints = aps
        self.wallList = walls
        nodes = self.stations + self.accessPoints + plotNodes

        # max waiting time
        MAX_WT = 100.

        for sta in self.stations:
            if sta.max_x == 0:
                sta.max_x = MAX_X
            if sta.max_y == 0:
                sta.max_y = MAX_Y
            if sta.max_v == 0:
                sta.max_v = max_v
            if sta.min_v == 0:
                sta.min_v = min_v

        if self.DRAW:
            plot2d.instantiateGraph(MAX_X, MAX_Y)
            plot2d.plotGraph(nodes, srcConn, dstConn, MAX_X, MAX_Y)
            plot2d.graphPause()

        if staMov != None:            
            debug('Configuring the mobility model %s' % model)
    
            if(model == 'RandomWalk'):  # Random Walk model
                mob = random_walk(staMov)
            elif(model == 'TruncatedLevyWalk'):  # Truncated Levy Walk model
                mob = truncated_levy_walk(staMov)
            elif(model == 'RandomDirection'):  # Random Direction model
                mob = random_direction(staMov, dimensions=(MAX_X, MAX_Y))
            elif(model == 'RandomWayPoint'):  # Random Waypoint model
                mob = random_waypoint(staMov, wt_max=MAX_WT)
            elif(model == 'GaussMarkov'):  # Gauss-Markov model
                mob = gauss_markov(staMov, alpha=0.99)
            elif(model == 'ReferencePoint'):  # Reference Point Group model
                mob = reference_point_group(staMov, dimensions=(MAX_X, MAX_Y), aggregation=0.5)
            elif(model == 'TimeVariantCommunity'):  # Time-variant Community Mobility Model
                mob = tvc(staMov, dimensions=(MAX_X, MAX_Y), aggregation=[0.5, 0.], epoch=[100, 100])
            else:
                raise Exception("Mobility Model not defined or doesn't exist!")
            
            if self.DRAW:
                self.startMobilityModelGraph(mob, staMov)
            else:
                self.startMobilityModelNoGraph(mob, staMov)