Esempio n. 1
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()
Esempio n. 2
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)
Esempio n. 3
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
Esempio n. 4
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()
Esempio n. 5
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)