Exemple #1
0
    def __init__(self, config=None):
        """
        Create a CoreEmu object.

        :param dict config: configuration options
        """
        # set umask 0
        os.umask(0)

        # configuration
        if not config:
            config = {}
        self.config = config

        # session management
        self.session_id_gen = IdGen(_id=59999)
        self.sessions = {}

        # set default nodes
        node_map = nodemaps.NODES
        nodeutils.set_node_map(node_map)

        # load services
        self.service_errors = []
        self.load_services()

        # catch exit event
        atexit.register(self.shutdown)
Exemple #2
0
def wifisession(opt):
    """
    Run a test wifi session.
    """
    nodeutils.set_node_map(nodemaps.NODES)
    session = Ns3Session(1, persistent=True, duration=opt.duration)
    session.name = "ns3wifi"
    session.filename = session.name + ".py"
    session.node_count = str(opt.numnodes + 1)
    add_to_server(session)

    wifi = session.add_object(cls=Ns3WifiNet, name="wlan1")
    wifi.setposition(30, 30, 0)
    wifi.phy.Set("RxGain", ns.core.DoubleValue(18.0))

    prefix = ipaddress.Ipv4Prefix("10.0.0.0/16")
    nodes = []
    for i in xrange(1, opt.numnodes + 1):
        node = session.addnode(name="n%d" % i)
        node.newnetif(wifi, ["%s/%s" % (prefix.addr(i), prefix.prefixlen)])
        nodes.append(node)
    session.setupconstantmobility()
    wifi.usecorepositions()
    # PHY tracing
    # wifi.phy.EnableAsciiAll("ns3wifi")
    session.thread = session.run(vis=False)
    return session
Exemple #3
0
def session():
    # configure default nodes
    node_map = nodemaps.NODES
    nodeutils.set_node_map(node_map)

    # create and return session
    session_fixture = Session(1, persistent=True)
    session_fixture.master = True
    assert os.path.exists(session_fixture.session_dir)

    # load emane services
    quagga.load_services()
    utility.load_services()

    # set location
    # session_fixture.master = True
    session_fixture.location.setrefgeo(47.57917, -122.13232, 2.00000)
    session_fixture.location.refscale = 150.0

    # load emane models
    session_fixture.emane.loadmodels()

    # return session fixture
    yield session_fixture

    # cleanup
    print "shutting down session"
    session_fixture.shutdown()
    assert not os.path.exists(session_fixture.session_dir)
Exemple #4
0
def wimaxsession(opt):
    """
    Run a test wimax session.
    """
    nodeutils.set_node_map(nodemaps.NODES)
    session = Ns3Session(1, persistent=True, duration=opt.duration)
    wimax = session.add_object(cls=Ns3WimaxNet, name="wlan1")
    # wimax.wimax.EnableLogComponents()

    prefix = ipaddress.Ipv4Prefix("10.0.0.0/16")
    # create one classifier for ICMP (protocol 1) traffic
    # src port low/high, dst port low/high, protocol, priority
    # classifier = (0, 65000, 0, 65000, 1, 1)
    classifier = (0, 65000, 0, 65000, 17, 1)
    nodes = []
    for i in xrange(1, opt.numnodes + 1):
        node = session.addnode(name="n%d" % i)
        if i == 1:
            wimax.setbasestation(node)
        node.newnetif(wimax, ["%s/%s" % (prefix.addr(i), prefix.prefixlen)])
        if i > 2:
            wimax.addflow(nodes[-1], node, classifier, classifier)
        nodes.append(node)
    session.setupconstantmobility()
    session.thread = session.run(vis=False)
    return session
Exemple #5
0
def ltesession(opt):
    """
    Run a test LTE session.
    """
    nodeutils.set_node_map(nodemaps.NODES)
    session = Ns3Session(1, persistent=True, duration=opt.duration)
    lte = session.add_object(cls=Ns3LteNet, name="wlan1")
    lte.setsubchannels(range(25), range(50, 100))
    if opt.verbose:
        ascii_helper = ns.network.AsciiTraceHelper()
        stream = ascii_helper.CreateFileStream('/tmp/ns3lte.tr')
        lte.lte.EnableAsciiAll(stream)

    prefix = ipaddress.Ipv4Prefix("10.0.0.0/16")
    mobb = None
    nodes = []
    for i in xrange(1, opt.numnodes + 1):
        node = session.addnode(name="n%d" % i)
        mob = ns.mobility.ConstantPositionMobilityModel()
        mob.SetPosition(ns.core.Vector3D(10.0 * i, 0.0, 0.0))
        if i == 1:
            # first node is nodeb
            lte.setnodeb(node)
            mobb = mob
        node.newnetif(lte, ["%s/%s" % (prefix.addr(i), prefix.prefixlen)])
        nodes.append(node)
        if i == 1:
            _tmp, ns3dev = lte.findns3dev(node)
            lte.lte.AddMobility(ns3dev.GetPhy(), mob)
        if i > 1:
            lte.linknodeb(node, nodes[0], mob, mobb)

    session.thread = session.run(vis=opt.visualize)
    return session
Exemple #6
0
    def __init__(self):
        # setup nodes
        node_map = nodemaps.NODES
        nodeutils.set_node_map(node_map)

        # load emane services
        quagga.load_services()
        utility.load_services()

        address = ("localhost", CORE_API_PORT)
        self.server = CoreServer(address, CoreRequestHandler, {
            "numthreads": 1,
            "daemonize": False,
        })

        self.distributed_server = "core2"
        self.prefix = ipaddress.Ipv4Prefix("10.83.0.0/16")
        self.session = None
        self.request_handler = None
Exemple #7
0
def wifisession(opt):
    """
    Run a random walk wifi session.
    """
    nodeutils.set_node_map(nodemaps.NODES)
    session = Ns3Session(1, persistent=True, duration=opt.duration)
    session.name = "ns3wifirandomwalk"
    session.filename = session.name + ".py"
    session.node_count = str(opt.numnodes + 1)
    add_to_server(session)
    wifi = session.add_object(cls=Ns3WifiNet,
                              name="wlan1",
                              rate="OfdmRate12Mbps")
    wifi.setposition(30, 30, 0)
    # for improved connectivity
    wifi.phy.Set("RxGain", ns.core.DoubleValue(18.0))

    prefix = ipaddress.Ipv4Prefix("10.0.0.0/16")
    services_str = "zebra|OSPFv3MDR|IPForward"
    nodes = []
    for i in xrange(1, opt.numnodes + 1):
        node = session.addnode(name="n%d" % i)
        node.newnetif(wifi, ["%s/%s" % (prefix.addr(i), prefix.prefixlen)])
        nodes.append(node)
        session.services.addservicestonode(node, "router", services_str)
        session.services.bootnodeservices(node)
    session.setuprandomwalkmobility(bounds=(1000.0, 750.0, 0))

    # PHY tracing
    # wifi.phy.EnableAsciiAll("ns3wifirandomwalk")

    # mobility tracing
    # session.setupmobilitytracing(wifi, "ns3wifirandomwalk.mob.tr",
    #                             nodes, verbose=True)
    session.startns3mobility(refresh_ms=150)

    # start simulation
    # session.instantiate() ?
    session.thread = session.run(vis=opt.viz)
    return session
Exemple #8
0
    def __init__(self, config=None):
        """
        Create a CoreEmu object.

        :param dict config: configuration options
        """
        # configuration
        self.config = config

        # session management
        self.session_id_gen = IdGen(_id=59999)
        self.sessions = {}

        # set default nodes
        node_map = nodemaps.NODES
        nodeutils.set_node_map(node_map)

        # load default services
        core.services.load()

        # catch exit event
        atexit.register(self.shutdown)
Exemple #9
0
def wifisession(opt):
    """
    Run a random walk wifi session.
    """
    nodeutils.set_node_map(nodemaps.NODES)
    session = Ns3Session(1, persistent=True, duration=opt.duration)
    session.name = "ns3wifirandomwalk"
    session.filename = session.name + ".py"
    session.node_count = str(opt.numnodes + 1)
    add_to_server(session)
    wifi = session.add_object(cls=Ns3WifiNet, name="wlan1", rate="OfdmRate12Mbps")
    wifi.setposition(30, 30, 0)
    # for improved connectivity
    wifi.phy.Set("RxGain", ns.core.DoubleValue(18.0))

    prefix = ipaddress.Ipv4Prefix("10.0.0.0/16")
    services_str = "zebra|OSPFv3MDR|IPForward"
    nodes = []
    for i in xrange(1, opt.numnodes + 1):
        node = session.addnode(name="n%d" % i)
        node.newnetif(wifi, ["%s/%s" % (prefix.addr(i), prefix.prefixlen)])
        nodes.append(node)
        session.services.add_services(node, "router", services_str.split("|"))
        session.services.boot_services(node)
    session.setuprandomwalkmobility(bounds=(1000.0, 750.0, 0))

    # PHY tracing
    # wifi.phy.EnableAsciiAll("ns3wifirandomwalk")

    # mobility tracing
    # session.setupmobilitytracing(wifi, "ns3wifirandomwalk.mob.tr",
    #                             nodes, verbose=True)
    session.startns3mobility(refresh_ms=150)

    # start simulation
    # session.instantiate() ?
    session.thread = session.run(vis=opt.viz)
    return session
Exemple #10
0
def ltesession(opt):
    """
    Run a test LTE session.
    """
    nodeutils.set_node_map(nodemaps.NODES)
    session = Ns3Session(1, persistent=True, duration=opt.duration)
    lte = session.add_object(cls=Ns3LteNet, name="wlan1")
    lte.setsubchannels(range(25), range(50, 100))
    if opt.verbose:
        ascii = ns.network.AsciiTraceHelper()
        stream = ascii.CreateFileStream('/tmp/ns3lte.tr')
        lte.lte.EnableAsciiAll(stream)
        # ns.core.LogComponentEnable("EnbNetDevice", ns.core.LOG_LEVEL_INFO)
        # ns.core.LogComponentEnable("UeNetDevice", ns.core.LOG_LEVEL_INFO)
        # lte.lte.EnableLogComponents()

    prefix = ipaddress.Ipv4Prefix("10.0.0.0/16")
    mobb = None
    nodes = []
    for i in xrange(1, opt.numnodes + 1):
        node = session.addnode(name="n%d" % i)
        mob = ns.mobility.ConstantPositionMobilityModel()
        mob.SetPosition(ns.core.Vector3D(10.0 * i, 0.0, 0.0))
        if i == 1:
            # first node is nodeb
            lte.setnodeb(node)
            mobb = mob
        node.newnetif(lte, ["%s/%s" % (prefix.addr(i), prefix.prefixlen)])
        nodes.append(node)
        if i == 1:
            (tmp, ns3dev) = lte.findns3dev(node)
            lte.lte.AddMobility(ns3dev.GetPhy(), mob)
        if i > 1:
            lte.linknodeb(node, nodes[0], mob, mobb)

    session.thread = session.run(vis=opt.visualize)
    return session
Exemple #11
0
    (options, args) = parser.parse_args()

    if options.minnodes < 2:
        usage("invalid min number of nodes: %s" % options.minnodes)
    if options.maxnodes < options.minnodes:
        usage("invalid max number of nodes: %s" % options.maxnodes)
    if options.testsec < 1:
        usage("invalid test time: %s" % options.testsec)
    if options.nodestep < 1:
        usage("invalid node step: %s" % options.nodestep)

    for a in args:
        sys.stderr.write("ignoring command line argument: '%s'\n" % a)

    start = datetime.datetime.now()

    for i in xrange(options.minnodes, options.maxnodes + 1, options.nodestep):
        print >> sys.stderr, "%s node test:" % i
        test(i, options.testsec)
        print >> sys.stderr, ""

    print >> sys.stderr, "elapsed time: %s" % (datetime.datetime.now() - start)


if __name__ == "__main__":
    # configure nodes to use
    node_map = nodemaps.NODES
    nodeutils.set_node_map(node_map)

    main()