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