def main(argv):
  
  
  
  
  cmd = ns.core.CommandLine()
  cmd.Parse(argv)

  
  
  
  
  ns.core.GlobalValue.Bind("SimulatorImplementationType", ns.core.StringValue("ns3::RealtimeSimulatorImpl"))

  
  
  
  print "Create nodes."
  n = ns.network.NodeContainer()
  n.Create(4)

  internet = ns.internet.InternetStackHelper()
  internet.Install(n)

  
  
  
  print ("Create channels.")
  csma = ns.csma.CsmaHelper()
  csma.SetChannelAttribute("DataRate", ns.network.DataRateValue(ns.network.DataRate(5000000)))
  csma.SetChannelAttribute("Delay", ns.core.TimeValue(ns.core.MilliSeconds(2)));
  csma.SetDeviceAttribute("Mtu", ns.core.UintegerValue(1400))
  d = csma.Install(n)

  
  
  
  print ("Assign IP Addresses.")
  ipv4 = ns.internet.Ipv4AddressHelper()
  ipv4.SetBase(ns.network.Ipv4Address("10.1.1.0"), ns.network.Ipv4Mask("255.255.255.0"))
  i = ipv4.Assign(d)

  print ("Create Applications.")

  
  
  
  port = 9  
  server = ns.applications.UdpEchoServerHelper(port)
  apps = server.Install(n.Get(1))
  apps.Start(ns.core.Seconds(1.0))
  apps.Stop(ns.core.Seconds(10.0))

  
  
  
  
  packetSize = 1024
  maxPacketCount = 500
  interPacketInterval = ns.core.Seconds(0.01)
  client = ns.applications.UdpEchoClientHelper(i.GetAddress (1), port)
  client.SetAttribute("MaxPackets", ns.core.UintegerValue(maxPacketCount))
  client.SetAttribute("Interval", ns.core.TimeValue(interPacketInterval))
  client.SetAttribute("PacketSize", ns.core.UintegerValue(packetSize))
  apps = client.Install(n.Get(0))
  apps.Start(ns.core.Seconds(2.0))
  apps.Stop(ns.core.Seconds(10.0))

  ascii = ns.network.AsciiTraceHelper()
  csma.EnableAsciiAll(ascii.CreateFileStream("realtime-udp-echo.tr"))
  csma.EnablePcapAll("realtime-udp-echo", False)

  
  
  
  print ("Run Simulation.")
  ns.core.Simulator.Run()
  ns.core.Simulator.Destroy()
  print ("Done.")
Ejemplo n.º 2
0
def main(argv):
    print("RadvdExample")

    cmd = ns.core.CommandLine()
    cmd.AddValue("verbose", "turn on log components")
    cmd.verbose = False
    cmd.Parse(argv)
    verbose = bool(cmd.verbose)

    if verbose:
        ns.core.LogComponentEnable("Ipv6L3Protocol", ns.core.LOG_LEVEL_ALL)
        ns.core.LogComponentEnable("Ipv6RawSocketImpl", ns.core.LOG_LEVEL_ALL)
        ns.core.LogComponentEnable("Icmpv6L4Protocol", ns.core.LOG_LEVEL_ALL)
        ns.core.LogComponentEnable("Ipv6StaticRouting", ns.core.LOG_LEVEL_ALL)
        ns.core.LogComponentEnable("Ipv6Interface", ns.core.LOG_LEVEL_ALL)
        ns.core.LogComponentEnable("RadvdApplication", ns.core.LOG_LEVEL_ALL)
        ns.core.LogComponentEnable("Ping6Application", ns.core.LOG_LEVEL_ALL)

    print("Create nodes.")
    n0 = ns.network.Node()
    r = ns.network.Node()
    n1 = ns.network.Node()

    net1 = ns.network.NodeContainer()
    net1.Add(n0)
    net1.Add(r)
    net2 = ns.network.NodeContainer()
    net2.Add(r)
    net2.Add(n1)
    all = ns.network.NodeContainer()
    all.Add(n0)
    all.Add(r)
    all.Add(n1)

    print("Create IPv6 Internet Stack")
    internetv6 = ns.internet.InternetStackHelper()
    internetv6.Install(all)

    print("Create channels.")
    csma = ns.csma.CsmaHelper()
    csma.SetChannelAttribute(
        "DataRate", ns.network.DataRateValue(ns.network.DataRate(5000000)))
    csma.SetChannelAttribute("Delay",
                             ns.core.TimeValue(ns.core.MilliSeconds(2)))
    d1 = csma.Install(net1)  # n0 - R
    d2 = csma.Install(net2)  # R - n1

    print("Create networks and assign IPv6 Addresses.")
    ipv6 = ns.internet.Ipv6AddressHelper()

    # first subnet
    ipv6.SetBase(ns.network.Ipv6Address("2001:1::"), ns.network.Ipv6Prefix(64))
    tmp = ns.network.NetDeviceContainer()
    tmp.Add(d1.Get(0))  # n0
    iic1 = ipv6.AssignWithoutAddress(tmp)  # n0 interface

    tmp2 = ns.network.NetDeviceContainer()
    tmp2.Add(d1.Get(1))  # R
    iicr1 = ipv6.Assign(
        tmp2)  # R interface to the first subnet is just statically assigned
    iicr1.SetForwarding(0, True)
    iic1.Add(iicr1)

    # second subnet R - n1
    ipv6.SetBase(ns.network.Ipv6Address("2001:2::"), ns.network.Ipv6Prefix(64))
    tmp3 = ns.network.NetDeviceContainer()
    tmp3.Add(d2.Get(0))  # R
    iicr2 = ipv6.Assign(tmp3)  # R interface
    iicr2.SetForwarding(0, True)

    tmp4 = ns.network.NetDeviceContainer()
    tmp4.Add(d2.Get(1))  # n1
    iic2 = ipv6.AssignWithoutAddress(tmp4)
    iic2.Add(iicr2)

    # radvd configuration
    radvdHelper = ns.internet_apps.RadvdHelper()

    # R interface (n0 - R)
    # n0 will receive unsolicited (periodic) RA
    radvdHelper.AddAnnouncedPrefix(iic1.GetInterfaceIndex(1),
                                   ns.network.Ipv6Address("2001:1::0"), 64)

    # R interface (R - n1)
    # n1 will have to use RS, as RA are not sent automatically
    radvdHelper.AddAnnouncedPrefix(iic2.GetInterfaceIndex(1),
                                   ns.network.Ipv6Address("2001:2::0"), 64)
    radvdHelper.GetRadvdInterface(
        iic2.GetInterfaceIndex(1)).SetSendAdvert(False)

    radvdApps = radvdHelper.Install(r)
    radvdApps.Start(ns.core.Seconds(1.0))
    radvdApps.Stop(ns.core.Seconds(10.0))

    # Create a Ping6 application to send ICMPv6 echo request from n0 to n1 via R
    packetSize = 1024
    maxPacketCount = 5
    interPacketInterval = ns.core.Seconds(1.)
    ping6 = ns.internet_apps.Ping6Helper()

    # ping6.SetLocal (iic1.GetAddress (0, 1));
    ping6.SetRemote(ns.network.Ipv6Address("2001:2::200:ff:fe00:4")
                    )  # should be n1 address after autoconfiguration
    ping6.SetIfIndex(iic1.GetInterfaceIndex(0))

    ping6.SetAttribute("MaxPackets", ns.core.UintegerValue(maxPacketCount))
    ping6.SetAttribute("Interval", ns.core.TimeValue(interPacketInterval))
    ping6.SetAttribute("PacketSize", ns.core.UintegerValue(packetSize))
    apps = ping6.Install(ns.network.NodeContainer(net1.Get(0)))
    apps.Start(ns.core.Seconds(2.0))
    apps.Stop(ns.core.Seconds(7.0))

    ascii = ns.network.AsciiTraceHelper()
    csma.EnableAsciiAll(ascii.CreateFileStream("radvd.tr"))
    csma.EnablePcapAll("radvd", True)

    print("Run Simulation.")
    ns.core.Simulator.Run()
    ns.core.Simulator.Destroy()
    print("Done.")
Ejemplo n.º 3
0
def main(argv):

    cmd = ns.core.CommandLine()
    cmd.Parse(argv)

    terminals = ns.network.NodeContainer()
    terminals.Create(4)

    csmaSwitch = ns.network.NodeContainer()
    csmaSwitch.Create(1)

    csma = ns.csma.CsmaHelper()
    csma.SetChannelAttribute(
        "DataRate", ns.network.DataRateValue(ns.network.DataRate(5000000)))
    csma.SetChannelAttribute("Delay",
                             ns.core.TimeValue(ns.core.MilliSeconds(2)))

    terminalDevices = ns.network.NetDeviceContainer()
    switchDevices = ns.network.NetDeviceContainer()

    for i in range(4):
        link = csma.Install(
            ns.network.NodeContainer(
                ns.network.NodeContainer(terminals.Get(i)), csmaSwitch))
        terminalDevices.Add(link.Get(0))
        switchDevices.Add(link.Get(1))

    switchNode = csmaSwitch.Get(0)
    bridgeDevice = ns.bridge.BridgeNetDevice()
    switchNode.AddDevice(bridgeDevice)

    for portIter in range(switchDevices.GetN()):
        bridgeDevice.AddBridgePort(switchDevices.Get(portIter))

    internet = ns.internet.InternetStackHelper()
    internet.Install(terminals)

    ipv4 = ns.internet.Ipv4AddressHelper()
    ipv4.SetBase(ns.network.Ipv4Address("10.1.1.0"),
                 ns.network.Ipv4Mask("255.255.255.0"))
    ipv4.Assign(terminalDevices)

    port = 9

    onoff = ns.applications.OnOffHelper(
        "ns3::UdpSocketFactory",
        ns.network.Address(
            ns.network.InetSocketAddress(ns.network.Ipv4Address("10.1.1.2"),
                                         port)))
    onoff.SetAttribute(
        "OnTime", ns.core.RandomVariableValue(ns.core.ConstantVariable(1)))
    onoff.SetAttribute(
        "OffTime", ns.core.RandomVariableValue(ns.core.ConstantVariable(0)))

    app = onoff.Install(ns.network.NodeContainer(terminals.Get(0)))

    app.Start(ns.core.Seconds(1.0))
    app.Stop(ns.core.Seconds(10.0))

    sink = ns.applications.PacketSinkHelper(
        "ns3::UdpSocketFactory",
        ns.network.Address(
            ns.network.InetSocketAddress(ns.network.Ipv4Address.GetAny(),
                                         port)))
    app = sink.Install(ns.network.NodeContainer(terminals.Get(1)))
    app.Start(ns.core.Seconds(0.0))

    onoff.SetAttribute(
        "Remote",
        ns.network.AddressValue(
            ns.network.InetSocketAddress(ns.network.Ipv4Address("10.1.1.1"),
                                         port)))
    app = onoff.Install(ns.network.NodeContainer(terminals.Get(3)))
    app.Start(ns.core.Seconds(1.1))
    app.Stop(ns.core.Seconds(10.0))

    app = sink.Install(ns.network.NodeContainer(terminals.Get(0)))
    app.Start(ns.core.Seconds(0.0))

    csma.EnablePcapAll("csma-bridge", False)

    ns.core.Simulator.Run()
    ns.core.Simulator.Destroy()
Ejemplo n.º 4
0
def main(argv):
    #
    #  First, we declare and initialize a few local variables that control some
    #  simulation parameters.
    #
    backboneNodes = 10
    infraNodes = 5
    lanNodes = 5
    stopTime = 10

    #
    #  Simulation defaults are typically set next, before command line
    #  arguments are parsed.
    #
    ns.core.Config.SetDefault("ns3::OnOffApplication::PacketSize",
                              ns.core.StringValue("210"))
    ns.core.Config.SetDefault("ns3::OnOffApplication::DataRate",
                              ns.core.StringValue("448kb/s"))

    #
    #  For convenience, we add the local variables to the command line argument
    #  system so that they can be overridden with flags such as
    #  "--backboneNodes=20"
    #
    cmd = ns.core.CommandLine()
    #cmd.AddValue("backboneNodes", "number of backbone nodes", backboneNodes)
    #cmd.AddValue("infraNodes", "number of leaf nodes", infraNodes)
    #cmd.AddValue("lanNodes", "number of LAN nodes", lanNodes)
    #cmd.AddValue("stopTime", "simulation stop time(seconds)", stopTime)

    #
    #  The system global variables and the local values added to the argument
    #  system can be overridden by command line arguments by using this call.
    #
    cmd.Parse(argv)

    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /
    #                                                                        #
    #  Construct the backbone                                                #
    #                                                                        #
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /

    #
    #  Create a container to manage the nodes of the adhoc(backbone) network.
    #  Later we'll create the rest of the nodes we'll need.
    #
    backbone = ns.network.NodeContainer()
    backbone.Create(backboneNodes)
    #
    #  Create the backbone wifi net devices and install them into the nodes in
    #  our container
    #
    wifi = ns.wifi.WifiHelper()
    mac = ns.wifi.NqosWifiMacHelper.Default()
    mac.SetType("ns3::AdhocWifiMac")
    wifi.SetRemoteStationManager("ns3::ConstantRateWifiManager", "DataMode",
                                 ns.core.StringValue("OfdmRate54Mbps"))
    wifiPhy = ns.wifi.YansWifiPhyHelper.Default()
    wifiChannel = ns.wifi.YansWifiChannelHelper.Default()
    wifiPhy.SetChannel(wifiChannel.Create())
    backboneDevices = wifi.Install(wifiPhy, mac, backbone)
    #
    #  Add the IPv4 protocol stack to the nodes in our container
    #
    print "Enabling OLSR routing on all backbone nodes"
    internet = ns.internet.InternetStackHelper()
    olsr = ns.olsr.OlsrHelper()
    internet.SetRoutingHelper(olsr)
    # has effect on the next Install ()
    internet.Install(backbone)
    # re-initialize for non-olsr routing.
    internet.Reset()
    #
    #  Assign IPv4 addresses to the device drivers(actually to the associated
    #  IPv4 interfaces) we just created.
    #
    ipAddrs = ns.internet.Ipv4AddressHelper()
    ipAddrs.SetBase(ns.network.Ipv4Address("192.168.0.0"),
                    ns.network.Ipv4Mask("255.255.255.0"))
    ipAddrs.Assign(backboneDevices)

    #
    #  The ad-hoc network nodes need a mobility model so we aggregate one to
    #  each of the nodes we just finished building.
    #
    mobility = ns.mobility.MobilityHelper()
    positionAlloc = ns.mobility.ListPositionAllocator()
    x = 0.0
    for i in range(backboneNodes):
        positionAlloc.Add(ns.core.Vector(x, 0.0, 0.0))
        x += 5.0
    mobility.SetPositionAllocator(positionAlloc)
    mobility.SetMobilityModel(
        "ns3::RandomDirection2dMobilityModel", "Bounds",
        ns.mobility.RectangleValue(ns.mobility.Rectangle(0, 1000, 0,
                                                         1000)), "Speed",
        ns.core.RandomVariableValue(ns.core.ConstantVariable(2000)), "Pause",
        ns.core.RandomVariableValue(ns.core.ConstantVariable(0.2)))
    mobility.Install(backbone)

    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /
    #                                                                        #
    #  Construct the LANs                                                    #
    #                                                                        #
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /

    #  Reset the address base-- all of the CSMA networks will be in
    #  the "172.16 address space
    ipAddrs.SetBase(ns.network.Ipv4Address("172.16.0.0"),
                    ns.network.Ipv4Mask("255.255.255.0"))

    for i in range(backboneNodes):
        print "Configuring local area network for backbone node ", i
        #
        #  Create a container to manage the nodes of the LAN.  We need
        #  two containers here; one with all of the new nodes, and one
        #  with all of the nodes including new and existing nodes
        #
        newLanNodes = ns.network.NodeContainer()
        newLanNodes.Create(lanNodes - 1)
        #  Now, create the container with all nodes on this link
        lan = ns.network.NodeContainer(
            ns.network.NodeContainer(backbone.Get(i)), newLanNodes)
        #
        #  Create the CSMA net devices and install them into the nodes in our
        #  collection.
        #
        csma = ns.csma.CsmaHelper()
        csma.SetChannelAttribute(
            "DataRate", ns.network.DataRateValue(ns.network.DataRate(5000000)))
        csma.SetChannelAttribute("Delay",
                                 ns.core.TimeValue(ns.core.MilliSeconds(2)))
        lanDevices = csma.Install(lan)
        #
        #  Add the IPv4 protocol stack to the new LAN nodes
        #
        internet.Install(newLanNodes)
        #
        #  Assign IPv4 addresses to the device drivers(actually to the
        #  associated IPv4 interfaces) we just created.
        #
        ipAddrs.Assign(lanDevices)
        #
        #  Assign a new network prefix for the next LAN, according to the
        #  network mask initialized above
        #
        ipAddrs.NewNetwork()

    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /
    #                                                                        #
    #  Construct the mobile networks                                         #
    #                                                                        #
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /

    #  Reset the address base-- all of the 802.11 networks will be in
    #  the "10.0" address space
    ipAddrs.SetBase(ns.network.Ipv4Address("10.0.0.0"),
                    ns.network.Ipv4Mask("255.255.255.0"))

    for i in range(backboneNodes):
        print "Configuring wireless network for backbone node ", i
        #
        #  Create a container to manage the nodes of the LAN.  We need
        #  two containers here; one with all of the new nodes, and one
        #  with all of the nodes including new and existing nodes
        #
        stas = ns.network.NodeContainer()
        stas.Create(infraNodes - 1)
        #  Now, create the container with all nodes on this link
        infra = ns.network.NodeContainer(
            ns.network.NodeContainer(backbone.Get(i)), stas)
        #
        #  Create another ad hoc network and devices
        #
        ssid = ns.wifi.Ssid('wifi-infra' + str(i))
        wifiInfra = ns.wifi.WifiHelper.Default()
        wifiPhy.SetChannel(wifiChannel.Create())
        wifiInfra.SetRemoteStationManager('ns3::ArfWifiManager')
        macInfra = ns.wifi.NqosWifiMacHelper.Default()
        macInfra.SetType("ns3::StaWifiMac", "Ssid", ns.wifi.SsidValue(ssid),
                         "ActiveProbing", ns.core.BooleanValue(False))

        # setup stas
        staDevices = wifiInfra.Install(wifiPhy, macInfra, stas)
        # setup ap.
        macInfra.SetType("ns3::ApWifiMac", "Ssid",
                         ns.wifi.SsidValue(ssid), "BeaconGeneration",
                         ns.core.BooleanValue(True), "BeaconInterval",
                         ns.core.TimeValue(ns.core.Seconds(2.5)))
        apDevices = wifiInfra.Install(wifiPhy, macInfra, backbone.Get(i))
        # Collect all of these new devices
        infraDevices = ns.network.NetDeviceContainer(apDevices, staDevices)

        #  Add the IPv4 protocol stack to the nodes in our container
        #
        internet.Install(stas)
        #
        #  Assign IPv4 addresses to the device drivers(actually to the associated
        #  IPv4 interfaces) we just created.
        #
        ipAddrs.Assign(infraDevices)
        #
        #  Assign a new network prefix for each mobile network, according to
        #  the network mask initialized above
        #
        ipAddrs.NewNetwork()
        #
        #  The new wireless nodes need a mobility model so we aggregate one
        #  to each of the nodes we just finished building.
        #
        subnetAlloc = ns.mobility.ListPositionAllocator()
        for j in range(infra.GetN()):
            subnetAlloc.Add(ns.core.Vector(0.0, j, 0.0))

        mobility.PushReferenceMobilityModel(backbone.Get(i))
        mobility.SetPositionAllocator(subnetAlloc)
        mobility.SetMobilityModel(
            "ns3::RandomDirection2dMobilityModel", "Bounds",
            ns.mobility.RectangleValue(ns.mobility.Rectangle(-25, 25, -25,
                                                             25)), "Speed",
            ns.core.RandomVariableValue(ns.core.ConstantVariable(30)), "Pause",
            ns.core.RandomVariableValue(ns.core.ConstantVariable(0.4)))
        mobility.Install(infra)

    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /
    #                                                                        #
    #  Application configuration                                             #
    #                                                                        #
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /

    #  Create the OnOff application to send UDP datagrams of size
    #  210 bytes at a rate of 448 Kb/s, between two nodes
    print "Create Applications."
    port = 9  #  Discard port(RFC 863)

    #  Let's make sure that the user does not define too few LAN nodes
    #  to make this example work.  We need lanNodes >= 5
    assert (lanNodes >= 5)
    appSource = ns.network.NodeList.GetNode(11)
    appSink = ns.network.NodeList.GetNode(13)
    remoteAddr = ns.network.Ipv4Address("172.16.0.5")

    onoff = ns.applications.OnOffHelper(
        "ns3::UdpSocketFactory",
        ns.network.Address(ns.network.InetSocketAddress(remoteAddr, port)))
    onoff.SetAttribute(
        "OnTime", ns.core.RandomVariableValue(ns.core.ConstantVariable(1)))
    onoff.SetAttribute(
        "OffTime", ns.core.RandomVariableValue(ns.core.ConstantVariable(0)))
    apps = onoff.Install(ns.network.NodeContainer(appSource))
    apps.Start(ns.core.Seconds(3.0))
    apps.Stop(ns.core.Seconds(20.0))

    #  Create a packet sink to receive these packets
    sink = ns.applications.PacketSinkHelper(
        "ns3::UdpSocketFactory",
        ns.network.InetSocketAddress(ns.network.Ipv4Address.GetAny(), port))
    apps = sink.Install(ns.network.NodeContainer(appSink))
    apps.Start(ns.core.Seconds(3.0))

    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /
    #                                                                        #
    #  Tracing configuration                                                 #
    #                                                                        #
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /

    print "Configure Tracing."
    #
    #  Let's set up some ns-2-like ascii traces, using another helper class
    #
    #std.ofstream ascii
    #ascii = ns.core.AsciiTraceHelper();
    #stream = ascii.CreateFileStream("mixed-wireless.tr");
    #wifiPhy.EnableAsciiAll(stream);
    #csma.EnableAsciiAll(stream);
    print "(tracing not done for Python)"
    #  Look at nodes 11, 13 only
    # WifiHelper.EnableAscii(ascii, 11, 0);
    # WifiHelper.EnableAscii(ascii, 13, 0);

    #  Let's do a pcap trace on the backbone devices
    wifiPhy.EnablePcap("mixed-wireless", backboneDevices)
    #  Let's additionally trace the application Sink, ifIndex 0
    csma = ns.csma.CsmaHelper()
    csma.EnablePcapAll("mixed-wireless", False)

    #   #ifdef ENABLE_FOR_TRACING_EXAMPLE
    #     Config.Connect("/NodeList/*/$MobilityModel/CourseChange",
    #       MakeCallback(&CourseChangeCallback))
    #   #endif

    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
    #                                                                        #
    #  Run simulation                                                        #
    #                                                                        #
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

    print "Run Simulation."
    ns.core.Simulator.Stop(ns.core.Seconds(stopTime))
    ns.core.Simulator.Run()
    ns.core.Simulator.Destroy()
Ejemplo n.º 5
0
def main(argv):

    cmd = ns.core.CommandLine();

    cmd.Parse(argv);

    # Create nodes
    print "Create nodes"
    n0 = ns.network.Node();
    r = ns.network.Node();
    n1 = ns.network.Node();

    net1 = ns.network.NodeContainer();
    net1.Add(n0);
    net1.Add(r);
    net2 = ns.network.NodeContainer();
    net2.Add(r);
    net2.Add(n1);
    all = ns.network.NodeContainer();
    all.Add(n0);
    all.Add(r);
    all.Add(n1);

    # Create IPv6 Internet Stack
    internetv6 = ns.internet.InternetStackHelper();
    internetv6.Install(all);

    # Create channels
    csma = ns.csma.CsmaHelper();
    csma.SetChannelAttribute("DataRate", ns.network.DataRateValue(ns.network.DataRate(5000000)));
    csma.SetChannelAttribute("Delay", ns.core.TimeValue(ns.core.MilliSeconds(2)));
    d1 = csma.Install(net1);
    d2 = csma.Install(net2);

    # Create networks and assign IPv6 Addresses
    print "Addressing"
    ipv6 = ns.internet.Ipv6AddressHelper();
    ipv6.SetBase(ns.network.Ipv6Address("2001:1::"), ns.network.Ipv6Prefix(64));
    i1 = ipv6.Assign(d1);
    i1.SetForwarding(1, True);
    i1.SetDefaultRouteInAllNodes(1);
    ipv6.SetBase(ns.network.Ipv6Address("2001:2::"), ns.network.Ipv6Prefix(64));
    i2 = ipv6.Assign(d2);
    i2.SetForwarding(0, True);
    i2.SetDefaultRouteInAllNodes(0);

    # Create a Ping6 application to send ICMPv6 echo request from n0 to n1 via r 
    print "Application"
    packetSize = 1024;
    maxPacketCount = 5;
    interPacketInterval = ns.core.Seconds(1.);
    ping6 = ns.applications.Ping6Helper();

    ping6.SetLocal(i1.GetAddress(0, 1));
    ping6.SetRemote(i2.GetAddress(1, 1)); 

    ping6.SetAttribute("MaxPackets", ns.core.UintegerValue(maxPacketCount));
    ping6.SetAttribute("Interval", ns.core.TimeValue(interPacketInterval));
    ping6.SetAttribute("PacketSize", ns.core.UintegerValue(packetSize));

    apps = ping6.Install(ns.network.NodeContainer(net1.Get(0)));
    apps.Start(ns.core.Seconds(2.0));
    apps.Stop(ns.core.Seconds(20.0));

    print "Tracing"
    ascii = ns.network.AsciiTraceHelper()
    csma.EnableAsciiAll(ascii.CreateFileStream("simple-routing-ping6.tr"))
    csma.EnablePcapAll("simple-routing-ping6", True)

    # Run Simulation     
    ns.core.Simulator.Run()
    ns.core.Simulator.Destroy()
def main(argv):
    print("FragmentationIpv6Example")

    cmd = ns.core.CommandLine()
    cmd.AddValue("verbose", "turn on log components")
    cmd.verbose = False
    cmd.Parse(argv)
    verbose = bool(cmd.verbose)

    if verbose:
        ns.core.LogComponentEnable("Ipv6L3Protocol", ns.core.LOG_LEVEL_ALL)
        ns.core.LogComponentEnable("Icmpv6L4Protocol", ns.core.LOG_LEVEL_ALL)
        ns.core.LogComponentEnable("Ipv6StaticRouting", ns.core.LOG_LEVEL_ALL)
        ns.core.LogComponentEnable("Ipv6Interface", ns.core.LOG_LEVEL_ALL)
        ns.core.LogComponentEnable("Ping6Application", ns.core.LOG_LEVEL_ALL)

    print("Create nodes.")
    n0 = ns.network.Node()
    r = ns.network.Node()
    n1 = ns.network.Node()

    net1 = ns.network.NodeContainer()
    net1.Add(n0)
    net1.Add(r)
    net2 = ns.network.NodeContainer()
    net2.Add(r)
    net2.Add(n1)
    all = ns.network.NodeContainer()
    all.Add(n0)
    all.Add(r)
    all.Add(n1)

    print("Create IPv6 Internet Stack")
    internetv6 = ns.internet.InternetStackHelper()
    internetv6.Install(all)

    print("Create channels.")
    csma = ns.csma.CsmaHelper()
    csma.SetChannelAttribute(
        "DataRate", ns.network.DataRateValue(ns.network.DataRate(5000000)))
    csma.SetChannelAttribute("Delay",
                             ns.core.TimeValue(ns.core.MilliSeconds(2)))
    d1 = csma.Install(net1)
    d2 = csma.Install(net2)

    print("Create networks and assign IPv6 Addresses.")
    ipv6 = ns.internet.Ipv6AddressHelper()
    ipv6.SetBase(ns.network.Ipv6Address("2001:1::"), ns.network.Ipv6Prefix(64))
    i1 = ipv6.Assign(d1)
    i1.SetForwarding(1, True)
    i1.SetDefaultRouteInAllNodes(1)
    ipv6.SetBase(ns.network.Ipv6Address("2001:2::"), ns.network.Ipv6Prefix(64))
    i2 = ipv6.Assign(d2)
    i2.SetForwarding(0, True)
    i2.SetDefaultRouteInAllNodes(0)

    routingHelper = ns.internet.Ipv6StaticRoutingHelper()
    routingStream = ns.network.OutputStreamWrapper("fragmentation-ipv6.routes",
                                                   ns.network.STD_IOS_OUT)
    routingHelper.PrintRoutingTableAt(ns.core.Seconds(0), n0, routingStream)

    #  Create a Ping6 application to send ICMPv6 echo request from n0 to n1 via r
    packetSize = 4096
    maxPacketCount = 5
    interPacketInterval = ns.core.Seconds(1.0)
    ping6 = ns.internet_apps.Ping6Helper()

    ping6.SetLocal(i1.GetAddress(0, 1))
    ping6.SetRemote(i2.GetAddress(1, 1))

    ping6.SetAttribute("MaxPackets", ns.core.UintegerValue(maxPacketCount))
    ping6.SetAttribute("Interval", ns.core.TimeValue(interPacketInterval))
    ping6.SetAttribute("PacketSize", ns.core.UintegerValue(packetSize))
    apps = ping6.Install(ns.network.NodeContainer(net1.Get(0)))
    apps.Start(ns.core.Seconds(2.0))
    apps.Stop(ns.core.Seconds(20.0))

    ascii = ns.network.AsciiTraceHelper()
    csma.EnableAsciiAll(ascii.CreateFileStream("fragmentation-ipv6.tr"))
    csma.EnablePcapAll("fragmentation-ipv6", True)

    print("Run Simulation.")
    ns.core.Simulator.Run()
    ns.core.Simulator.Destroy()
    print("Done.")
Ejemplo n.º 7
0
def main(argv):
		cmd = ns.core.CommandLine()
		cmd.AddValue ("verbose", "turn on log components")
		cmd.verbose = False
		cmd.Parse(argv)
		verbose = bool(cmd.verbose)

		if verbose :
			ns.core.LogComponentEnable("Icmpv6RedirectExample", ns.core.LOG_LEVEL_INFO)
			ns.core.LogComponentEnable("Icmpv6L4Protocol", ns.core.LOG_LEVEL_INFO)
			ns.core.LogComponentEnable("Ipv6L3Protocol", ns.core.LOG_LEVEL_ALL)
			ns.core.LogComponentEnable("Ipv6StaticRouting", ns.core.LOG_LEVEL_ALL)
			ns.core.LogComponentEnable("Ipv6Interface", ns.core.LOG_LEVEL_ALL)
			ns.core.LogComponentEnable("Icmpv6L4Protocol", ns.core.LOG_LEVEL_ALL)
			ns.core.LogComponentEnable("NdiscCache", ns.core.LOG_LEVEL_ALL)

		print ("Creat nodes.")
		sta1 = ns.network.Node()
		r1 = ns.network.Node()
		r2 = ns.network.Node()
		sta2 = ns.network.Node()

		net1 = ns.network.NodeContainer()
		net1.Add(sta1)
		net1.Add(r1)
		net1.Add(r2)
		net2 = ns.network.NodeContainer()
		net2.Add(r2)
		net2.Add(sta2)
		all = ns.network.NodeContainer()  
		all.Add(sta1)
		all.Add(r1)
		all.Add(r2)
		all.Add(sta2)

		internetv6 = ns.internet.InternetStackHelper()
		internetv6.Install(all)

		print ("Create channels.")
		csma = ns.csma.CsmaHelper()
		csma.SetChannelAttribute("DataRate", ns.network.DataRateValue(ns.network.DataRate(5000000)))
		csma.SetChannelAttribute("Delay", ns.core.TimeValue(ns.core.MilliSeconds(2)))
		ndc1 = csma.Install(net1)
		ndc2 = csma.Install(net2)

		print ("Assign IPv6 Addresses.")
		ipv6 = ns.internet.Ipv6AddressHelper()
		ipv6.SetBase (ns.network.Ipv6Address ("2001:1::"), ns.network.Ipv6Prefix (64))
		iic1 = ipv6.Assign (ndc1)
		iic1.SetForwarding (2, True)
		iic1.SetForwarding (1, True)
		iic1.SetDefaultRouteInAllNodes (1)

		ipv6.SetBase (ns.network.Ipv6Address ("2001:2::"), ns.network.Ipv6Prefix (64))
		iic2 = ipv6.Assign (ndc2)
		iic2.SetForwarding (0, True)
		iic2.SetDefaultRouteInAllNodes (0)

		routingHelper = ns.internet.Ipv6StaticRoutingHelper()

		# manually inject a static route to the second router.
		routing = routingHelper.GetStaticRouting (r1.GetObject(ns.internet.Ipv6.GetTypeId()))
		routing.AddHostRouteTo (iic2.GetAddress (1, 1), iic1.GetAddress (2, 0), iic1.GetInterfaceIndex (1))

		routingStream = ns.network.OutputStreamWrapper ("icmpv6-redirect.routes", ns.network.STD_IOS_OUT)
		routingHelper.PrintRoutingTableAt (ns.core.Seconds (0.0), r1, routingStream)
		routingHelper.PrintRoutingTableAt (ns.core.Seconds (3.0), sta1, routingStream)

		print ("Create Applications.")
		packetSize = 1024
		maxPacketCount = 5
		interPacketInterval = ns.core.Seconds (1.)
		ping6 = ns.internet_apps.Ping6Helper()

		ping6.SetLocal (iic1.GetAddress (0, 1))
		ping6.SetRemote (iic2.GetAddress (1, 1))
		ping6.SetAttribute ("MaxPackets", ns.core.UintegerValue (maxPacketCount))
		ping6.SetAttribute ("Interval", ns.core.TimeValue (interPacketInterval))
		ping6.SetAttribute ("PacketSize", ns.core.UintegerValue (packetSize))
		apps = ping6.Install(ns.network.NodeContainer(sta1))
		apps.Start (ns.core.Seconds (2.0))
		apps.Stop (ns.core.Seconds (10.0))

		ascii = ns.network.AsciiTraceHelper()
		csma.EnableAsciiAll (ascii.CreateFileStream ("icmpv6-redirect.tr"))
		csma.EnablePcapAll ("icmpv6-redirect", True)

		# Now, do the actual simulation.
		print ("Run Simulation.")
		ns.core.Simulator.Run ()
		ns.core.Simulator.Destroy ()
		print ("Done.")
Ejemplo n.º 8
0
def main(argv):

    cmd = ns.core.CommandLine()

    cmd.Parse(argv)

    print "Create nodes"
    n0 = ns.network.Node()
    r = ns.network.Node()
    n1 = ns.network.Node()

    net1 = ns.network.NodeContainer()
    net1.Add(n0)
    net1.Add(r)
    net2 = ns.network.NodeContainer()
    net2.Add(r)
    net2.Add(n1)
    all = ns.network.NodeContainer()
    all.Add(n0)
    all.Add(r)
    all.Add(n1)

    internetv6 = ns.internet.InternetStackHelper()
    internetv6.Install(all)

    csma = ns.csma.CsmaHelper()
    csma.SetChannelAttribute(
        "DataRate", ns.network.DataRateValue(ns.network.DataRate(5000000)))
    csma.SetChannelAttribute("Delay",
                             ns.core.TimeValue(ns.core.MilliSeconds(2)))
    d1 = csma.Install(net1)
    d2 = csma.Install(net2)

    print "Addressing"
    ipv6 = ns.internet.Ipv6AddressHelper()
    ipv6.NewNetwork(ns.network.Ipv6Address("2001:1::"),
                    ns.network.Ipv6Prefix(64))
    i1 = ipv6.Assign(d1)
    i1.SetRouter(1, True)
    ipv6.NewNetwork(ns.network.Ipv6Address("2001:2::"),
                    ns.network.Ipv6Prefix(64))
    i2 = ipv6.Assign(d2)
    i2.SetRouter(0, True)

    print "Application"
    packetSize = 1024
    maxPacketCount = 5
    interPacketInterval = ns.core.Seconds(1.)
    ping6 = ns.applications.Ping6Helper()

    ping6.SetLocal(i1.GetAddress(0, 1))
    ping6.SetRemote(i2.GetAddress(1, 1))

    ping6.SetAttribute("MaxPackets", ns.core.UintegerValue(maxPacketCount))
    ping6.SetAttribute("Interval", ns.core.TimeValue(interPacketInterval))
    ping6.SetAttribute("PacketSize", ns.core.UintegerValue(packetSize))

    apps = ping6.Install(ns.network.NodeContainer(net1.Get(0)))
    apps.Start(ns.core.Seconds(2.0))
    apps.Stop(ns.core.Seconds(20.0))

    print "Tracing"
    ascii = ns.network.AsciiTraceHelper()
    csma.EnableAsciiAll(ascii.CreateFileStream("simple-routing-ping6.tr"))
    csma.EnablePcapAll("simple-routing-ping6", True)

    ns.core.Simulator.Run()
    ns.core.Simulator.Destroy()
Ejemplo n.º 9
0
def main(argv):

    #
    # Allow the user to override any of the defaults and the above Bind() at
    # run-time, via command-line arguments
    #
    cmd = ns.core.CommandLine()

    cmd.packetSize = 1024
    cmd.packetCount = 10
    cmd.packetInterval = 1.0

    # Socket options for IPv4, currently TOS, TTL, RECVTOS, and RECVTTL
    cmd.ipTos = 0
    cmd.ipRecvTos = True
    cmd.ipTtl = 0
    cmd.ipRecvTtl = True

    cmd.AddValue("PacketSize", "Packet size in bytes")
    cmd.AddValue("PacketCount", "Number of packets to send")
    cmd.AddValue("Interval", "Interval between packets")
    cmd.AddValue("IP_TOS", "IP_TOS")
    cmd.AddValue("IP_RECVTOS", "IP_RECVTOS")
    cmd.AddValue("IP_TTL", "IP_TTL")
    cmd.AddValue("IP_RECVTTL", "IP_RECVTTL")
    cmd.Parse(argv)

    packetSize = int(cmd.packetSize)
    packetCount = int(cmd.packetCount)
    packetInterval = float(cmd.packetInterval)
    ipTos = int(cmd.ipTos)
    ipRecvTos = bool(cmd.ipRecvTos)
    ipTtl = int(cmd.ipTtl)
    ipRecvTtl = bool(cmd.ipRecvTtl)

    print("Create nodes.")
    n = ns.network.NodeContainer()
    n.Create(2)

    internet = ns.internet.InternetStackHelper()
    internet.Install(n)

    print("Create channels.")
    csma = ns.csma.CsmaHelper()
    csma.SetChannelAttribute(
        "DataRate", ns.network.DataRateValue(ns.network.DataRate(5000000)))
    csma.SetChannelAttribute("Delay",
                             ns.core.TimeValue(ns.core.MilliSeconds(2)))
    csma.SetDeviceAttribute("Mtu", ns.core.UintegerValue(1400))
    d = csma.Install(n)

    print("Assign IP addresses.")
    ipv4 = ns.internet.Ipv4AddressHelper()
    ipv4.SetBase(ns.network.Ipv4Address("10.1.1.0"),
                 ns.network.Ipv4Mask("255.255.255.0"))
    i = ipv4.Assign(d)
    serverAddress = ns.network.Address(i.GetAddress(1))

    print("Create sockets.")
    # Receiver socket on n1
    tid = ns3.TypeId.LookupByName("ns3::UdpSocketFactory")
    recvSink = ns3.Socket.CreateSocket(n.Get(1), tid)
    local = ns3.InetSocketAddress(ns3.Ipv4Address.GetAny(), 4477)
    recvSink.SetIpRecvTos(ipRecvTos)
    recvSink.SetIpRecvTtl(ipRecvTtl)
    recvSink.Bind(local)
    recvSink.SetRecvCallback(ReceivePacket)

    # Sender socket on n0
    source = ns3.Socket.CreateSocket(n.Get(0), tid)
    remote = ns.network.InetSocketAddress(i.GetAddress(1), 4477)

    # Set socket options, it is also possible to set the options after the socket has been created/connected.
    if ipTos > 0:
        source.SetIpTos(ipTos)

    if ipTtl > 0:
        source.SetIpTtl(ipTtl)
    source.Connect(remote)

    ascii = ns.network.AsciiTraceHelper()
    csma.EnableAsciiAll(ascii.CreateFileStream("socket-options-ipv4.tr"))
    csma.EnablePcapAll("socket-options-ipv4", False)

    # Schedule SendPacket
    interPacketInterval = ns.core.Seconds(packetInterval)
    ns.core.Simulator.ScheduleWithContext(source.GetNode().GetId(),
                                          ns.core.Seconds(1.0), SendPacket,
                                          source, packetSize, packetCount,
                                          interPacketInterval)

    print("Run Simulation.")
    ns.core.Simulator.Run()
    ns.core.Simulator.Destroy()
    print("Done.")
Ejemplo n.º 10
0
def main(argv): 
    
    
    
    
    backboneNodes = 10
    infraNodes = 5
    lanNodes = 5
    stopTime = 10

    
    
    
    
    ns.core.Config.SetDefault("ns3::OnOffApplication::PacketSize", ns.core.StringValue("210"))
    ns.core.Config.SetDefault("ns3::OnOffApplication::DataRate", ns.core.StringValue("448kb/s"))

    
    
    
    
    
    cmd = ns.core.CommandLine()
    
    
    
    

    
    
    
    
    cmd.Parse(argv)

    
    
    
    
    

    
    
    
    
    backbone = ns.network.NodeContainer()
    backbone.Create(backboneNodes)
    
    
    
    
    wifi = ns.wifi.WifiHelper()
    mac = ns.wifi.NqosWifiMacHelper.Default()
    mac.SetType("ns3::AdhocWifiMac")
    wifi.SetRemoteStationManager("ns3::ConstantRateWifiManager",
                                  "DataMode", ns.core.StringValue("OfdmRate54Mbps"))
    wifiPhy = ns.wifi.YansWifiPhyHelper.Default()
    wifiChannel = ns.wifi.YansWifiChannelHelper.Default()
    wifiPhy.SetChannel(wifiChannel.Create())
    backboneDevices = wifi.Install(wifiPhy, mac, backbone)
    
    
    
    print "Enabling OLSR routing on all backbone nodes"
    internet = ns.internet.InternetStackHelper()
    olsr = ns.olsr.OlsrHelper()
    internet.SetRoutingHelper(olsr); 
    internet.Install(backbone);
    
    internet.Reset()
    
    
    
    
    ipAddrs = ns.internet.Ipv4AddressHelper()
    ipAddrs.SetBase(ns.network.Ipv4Address("192.168.0.0"), ns.network.Ipv4Mask("255.255.255.0"))
    ipAddrs.Assign(backboneDevices)

    
    
    
    
    mobility = ns.mobility.MobilityHelper()
    positionAlloc = ns.mobility.ListPositionAllocator()
    x = 0.0
    for i in range(backboneNodes):
        positionAlloc.Add(ns.core.Vector(x, 0.0, 0.0))
        x += 5.0
    mobility.SetPositionAllocator(positionAlloc)
    mobility.SetMobilityModel("ns3::RandomDirection2dMobilityModel",
                               "Bounds", ns.mobility.RectangleValue(ns.mobility.Rectangle(0, 1000, 0, 1000)),
                               "Speed", ns.core.RandomVariableValue(ns.core.ConstantVariable(2000)),
                               "Pause", ns.core.RandomVariableValue(ns.core.ConstantVariable(0.2)))
    mobility.Install(backbone)

    
    
    
    
    

    
    
    ipAddrs.SetBase(ns.network.Ipv4Address("172.16.0.0"), ns.network.Ipv4Mask("255.255.255.0"))

    for i in range(backboneNodes):
        print "Configuring local area network for backbone node ", i
        
        
        
        
        
        newLanNodes = ns.network.NodeContainer()
        newLanNodes.Create(lanNodes - 1)
        
        lan = ns.network.NodeContainer(ns.network.NodeContainer(backbone.Get(i)), newLanNodes)
        
        
        
        
        csma = ns.csma.CsmaHelper()
        csma.SetChannelAttribute("DataRate", ns.network.DataRateValue(ns.network.DataRate(5000000)))
        csma.SetChannelAttribute("Delay", ns.core.TimeValue(ns.core.MilliSeconds(2)))
        lanDevices = csma.Install(lan)
        
        
        
        internet.Install(newLanNodes)
        
        
        
        
        ipAddrs.Assign(lanDevices)
        
        
        
        
        ipAddrs.NewNetwork()

    
    
    
    
    

    
    
    ipAddrs.SetBase(ns.network.Ipv4Address("10.0.0.0"), ns.network.Ipv4Mask("255.255.255.0"))

    for i in range(backboneNodes):
        print "Configuring wireless network for backbone node ", i
        
        
        
        
        
        stas = ns.network.NodeContainer()
        stas.Create(infraNodes - 1)
        
        infra = ns.network.NodeContainer(ns.network.NodeContainer(backbone.Get(i)), stas)
        
        
        
        ssid = ns.wifi.Ssid('wifi-infra' + str(i))
        wifiInfra = ns.wifi.WifiHelper.Default()
        wifiPhy.SetChannel(wifiChannel.Create())
        wifiInfra.SetRemoteStationManager('ns3::ArfWifiManager')
        macInfra = ns.wifi.NqosWifiMacHelper.Default();
        macInfra.SetType("ns3::StaWifiMac",
                         "Ssid", ns.wifi.SsidValue(ssid),
                         "ActiveProbing", ns.core.BooleanValue(False))

        
        staDevices = wifiInfra.Install(wifiPhy, macInfra, stas)
        
        macInfra.SetType("ns3::ApWifiMac",
                         "Ssid", ns.wifi.SsidValue(ssid),
                         "BeaconGeneration", ns.core.BooleanValue(True),
                         "BeaconInterval", ns.core.TimeValue(ns.core.Seconds(2.5)))
        apDevices = wifiInfra.Install(wifiPhy, macInfra, backbone.Get(i))
        
        infraDevices = ns.network.NetDeviceContainer(apDevices, staDevices)

        
        
        internet.Install(stas)
        
        
        
        
        ipAddrs.Assign(infraDevices)
        
        
        
        
        ipAddrs.NewNetwork()
        
        
        
        
        subnetAlloc = ns.mobility.ListPositionAllocator()
        for j in range(infra.GetN()):
            subnetAlloc.Add(ns.core.Vector(0.0, j, 0.0))

        mobility.PushReferenceMobilityModel(backbone.Get(i))
        mobility.SetPositionAllocator(subnetAlloc)
        mobility.SetMobilityModel("ns3::RandomDirection2dMobilityModel",
                                  "Bounds", ns.mobility.RectangleValue(ns.mobility.Rectangle(-25, 25, -25, 25)),
                                  "Speed", ns.core.RandomVariableValue(ns.core.ConstantVariable(30)),
                                  "Pause", ns.core.RandomVariableValue(ns.core.ConstantVariable(0.4)))
        mobility.Install(infra)

    
    
    
    
    

    
    
    print "Create Applications."
    port = 9   

    
    
    assert(lanNodes >= 5)
    appSource = ns.network.NodeList.GetNode(11)
    appSink = ns.network.NodeList.GetNode(13)
    remoteAddr = ns.network.Ipv4Address("172.16.0.5")

    onoff = ns.applications.OnOffHelper("ns3::UdpSocketFactory", 
                            ns.network.Address(ns.network.InetSocketAddress(remoteAddr, port)))
    onoff.SetAttribute("OnTime", ns.core.RandomVariableValue(ns.core.ConstantVariable(1)))
    onoff.SetAttribute("OffTime", ns.core.RandomVariableValue(ns.core.ConstantVariable(0)))
    apps = onoff.Install(ns.network.NodeContainer(appSource))
    apps.Start(ns.core.Seconds(3.0))
    apps.Stop(ns.core.Seconds(20.0))

    
    sink = ns.applications.PacketSinkHelper("ns3::UdpSocketFactory", 
                                ns.network.InetSocketAddress(ns.network.Ipv4Address.GetAny(), port))
    apps = sink.Install(ns.network.NodeContainer(appSink))
    apps.Start(ns.core.Seconds(3.0))

    
    
    
    
    

    print "Configure Tracing."
    
    
    
    
    
    
    
    
    print "(tracing not done for Python)"
    
    
    

    
    wifiPhy.EnablePcap("mixed-wireless", backboneDevices)
    
    csma = ns.csma.CsmaHelper()
    csma.EnablePcapAll("mixed-wireless", False)







    
    
    
    
    

    print "Run Simulation."
    ns.core.Simulator.Stop(ns.core.Seconds(stopTime))
    ns.core.Simulator.Run()
    ns.core.Simulator.Destroy()
Ejemplo n.º 11
0
def main(argv):
	ns.core.LogComponentEnable("UdpClient", ns.core.LOG_LEVEL_INFO)
	ns.core.LogComponentEnable("UdpServer", ns.core.LOG_LEVEL_INFO)
	cmd = ns.core.CommandLine ()
	cmd.useIpv6 = "False"
	cmd.AddValue ("useIpv6", "Use Ipv6")
	cmd.Parse (argv)

	print "Create nodes."
	n = ns.network.NodeContainer ()
	n.Create (2)

	internet = ns.internet.InternetStackHelper ()
	internet.Install (n)

	print "Create channels."
	csma = ns.csma.CsmaHelper ()
	csma.SetChannelAttribute ("DataRate", ns.core.StringValue ("5000000"))
	csma.SetChannelAttribute ("Delay", ns.core.TimeValue (ns.core.MilliSeconds (2)))
	csma.SetDeviceAttribute ("Mtu", ns.core.UintegerValue (1400))
	d = csma.Install (n)

	print "Assign IP Addresses."
	if (cmd.useIpv6 == "False"):
		ipv4 = ns.internet.Ipv4AddressHelper ()
		ipv4.SetBase (ns.network.Ipv4Address ("10.1.1.0"), ns.network.Ipv4Mask ("255.255.255.0"))
		i = ipv4.Assign (d)
		serverAddress = ns.network.Address (i.GetAddress (1))

	else:
		ipv6 = ns.internet.Ipv6AddressHelper ()
		ipv6.SetBase (ns.network.Ipv6Address ("2001:0000:f00d:cafe::"), ns.network.Ipv6Prefix (64))
		i6 = ipv6.Assign (d)
		serverAddress = ns.network.Address (i6.GetAddress (1, 1))


	print "Create Applications."


	port = 4000
	server = ns.applications.UdpEchoServerHelper (port)
	serverapps = server.Install (n.Get (1))
	serverapps.Start (ns.core.Seconds (1.0))
	serverapps.Stop (ns.core.Seconds (10.0))

	MaxPacketSize = 1024;
	interPacketInterval = ns.core.Seconds (0.05)
	maxPacketCount = 320;

	client = ns.applications.UdpEchoClientHelper ( serverAddress, port)


	client.SetAttribute ("MaxPackets", ns.core.UintegerValue (maxPacketCount))
  	client.SetAttribute ("Interval", ns.core.TimeValue (interPacketInterval))
 	client.SetAttribute ("PacketSize", ns.core.UintegerValue (MaxPacketSize))

	clientapps = client.Install (n.Get (0))
	serverapps.Start (ns.core.Seconds (2.0))
	serverapps.Stop (ns.core.Seconds (10.0))



	ascii = ns.network.AsciiTraceHelper ()
	csma.EnableAsciiAll (ascii.CreateFileStream ("udp-client-serv.tr"))
	csma.EnablePcapAll ("udp-client-serv", False)
	print "Run Simulation."
	ns.core.Simulator.Run ()
	ns.core.Simulator.Destroy ()
	print "Done."
Ejemplo n.º 12
0
print "Create Applications."
#packetSize = ns.core.uint32_t()
packetSize = 1024
interPacketInterval = ns.core.Time()
interPacketInterval = ns.core.Seconds(1.0)
ping = ns.internet_apps.V4PingHelper(ns.network.Ipv4Address("10.0.6.2"))

ping.SetAttribute("Interval", ns.core.TimeValue(interPacketInterval))
ping.SetAttribute("Size", ns.core.UintegerValue(packetSize))
if showPings == "True":
    ping.SetAttribute("Verbose", ns.core.BooleanValue(true))
apps = ns.network.ApplicationContainer()
apps = ping.Install(src)
apps.Start(ns.core.Seconds(1.0))
apps.Stop(ns.core.Seconds(110.0))

ascii = ns.network.AsciiTraceHelper()
csma.EnableAsciiAll(ascii.CreateFileStream("rip-simple-routing.tr"))
csma.EnablePcapAll("rip-simple-routing", True)

ns.core.Simulator.Schedule(ns.core.Seconds(40), TearDownLink(b, d, 3, 4))

#Now, do the actual simulation.

print "Run Simulation."
ns.core.Simulator.Stop(ns.core.Seconds(131.0))
ns.core.Simulator.Run()
ns.core.Simulator.Destroy()
print "Done."
Ejemplo n.º 13
0
    def run_tapcsma(self):
        mode = "ConfigureLocal"
        tapName = "thetap"

        cmd = ns.core.CommandLine()
        cmd.AddValue("mode", "Mode setting of TapBridge", mode)
        cmd.AddValue("tapName", "Name of the OS tap device", tapName)
        cmd.Parse(sys.argv)
        # CommandLine cmd;
        # cmd.AddValue ("mode", "Mode setting of TapBridge", mode);
        # cmd.AddValue ("tapName", "Name of the OS tap device", tapName);
        # cmd.Parse (argc, argv);

        # GlobalValue::Bind ("SimulatorImplementationType", StringValue ("ns3::RealtimeSimulatorImpl"));
        # GlobalValue::Bind ("ChecksumEnabled", BooleanValue (true));

        # NodeContainer nodes;
        # nodes.Create (4);
        nodes = ns.network.NodeContainer()
        nodes.Create(2)

        # CsmaHelper csma;
        # csma.SetChannelAttribute ("DataRate", DataRateValue (5000000));
        # csma.SetChannelAttribute ("Delay", TimeValue (MilliSeconds (2)));
        csma = ns.csma.CsmaHelper()
        csma.SetChannelAttribute("DataRate", ns.core.StringValue("5Mbps"))
        csma.SetChannelAttribute("Delay", ns.core.TimeValue(ns.core.MilliSeconds (2)))

        # NetDeviceContainer devices = csma.Install (nodes);
        devices = csma.Install(nodes)

        # InternetStackHelper stack;
        # stack.Install (nodes);
        stack = ns.internet.InternetStackHelper()
        stack.Install(nodes)

        # Ipv4AddressHelper addresses;
        # addresses.SetBase ("10.1.1.0", "255.255.255.0");
        # Ipv4InterfaceContainer interfaces = addresses.Assign (devices);
        address = ns.internet.Ipv4AddressHelper()
        address.SetBase(ns.network.Ipv4Address("10.1.1.0"), ns.network.Ipv4Mask("255.255.255.0"))
        p2pInterfaces = address.Assign(devices)

        # TapBridgeHelper tapBridge;
        # tapBridge.SetAttribute ("Mode", StringValue (mode));
        # tapBridge.SetAttribute ("DeviceName", StringValue (tapName));
        # tapBridge.Install (nodes.Get (0), devices.Get (0));
        tapBridge = ns.bridge.BridgeHelper()
        tapBridge.SetAttribute("Mode", ns.core.StringValue (mode))
        tapBridge.SetAttribute("DeviceName", ns.core.StringValue (tapName))
        tapBridge.Install(nodes.Get (0), devices.Get (0))

        # csma.EnablePcapAll ("tap-csma", false);
        csma.EnablePcapAll("tap-csma", false)
        # Ipv4GlobalRoutingHelper::PopulateRoutingTables ();

        # Simulator::Stop (Seconds (60.));
        # Simulator::Run ();
        # Simulator::Destroy ();
        ns.core.Simulator.Stop(ns.core.Seconds(60.0))
        ns.core.Simulator.Run()
        ns.core.Simulator.Destroy()
        pass
Ejemplo n.º 14
0
packetSize = 1024
maxPacketCount = 5
interPacketInterval = ns.core.Time()
interPacketInterval = ns.core.Seconds (1.)
ping6 = ns.internet_apps.Ping6Helper()

#/* ping6.SetLocal (iic1.GetAddress (0, 1)); */
ping6.SetRemote (ns.network.Ipv6Address ("2001:2::200:ff:fe00:4")) #/* should be n1 address after autoconfiguration */
ping6.SetIfIndex (iic1.GetInterfaceIndex (0))


ping6.SetAttribute ("MaxPackets", ns.core.UintegerValue (maxPacketCount))
ping6.SetAttribute ("Interval", ns.core.TimeValue (interPacketInterval))
ping6.SetAttribute ("PacketSize", ns.core.UintegerValue (packetSize))
apps = ns.network.ApplicationContainer()

temp = ns.network.NodeContainer(net1.Get(0))      # Added this line

apps = ping6.Install (temp)
apps.Start (ns.core.Seconds (2.0))
apps.Stop (ns.core.Seconds (7.0))

Ascii = ns.network.AsciiTraceHelper ()
csma.EnableAsciiAll (Ascii.CreateFileStream ("radvd.tr"))
csma.EnablePcapAll ("radvd", True)

print ("Run Simulation.")
ns.core.Simulator.Run ()
ns.core.Simulator.Destroy ()
print ("Done.")
Ejemplo n.º 15
0
                       iic1.GetInterfaceIndex(1))

routingStream = ns.internet.OutputStreamWrapper()
routingHelper.PrintRoutingTableAt(ns.core.Seconds(0.0), r1, routingStream)
routingHelper.PrintRoutingTableAt(ns.core.Seconds(3.0), sta1, routingStream)

print "Create Applications."
cmd.packetSize = 1024
cmd.maxPacketCount = 5
interPacketInterval = ns.core.Seconds(1.)
ping6 = ns.applications.Ping6Helper()

ping6.SetLocal(iic1.GetAddress(0, 1))
ping6.SetRemote(iic2.GetAddress(1, 1))
ping6.SetAttribute("MaxPackets", ns.core.UintegerValue(maxPacketCount))
ping6.SetAttribute("Interval", ns.core.TimeValue(interPacketInterval))
ping6.SetAttribute("PacketSize", ns.core.UintegerValue(packetSize))
apps = ns.network.ApplicationContainer()
apps = ping6.Install(stal)
apps.Start(ns.core.Seconds(2.0))
apps.Stop(ns.core.Seconds(10.0))

Ascii = ns.internet.AsciiTraceHelper()
csma.EnableAsciiAll(Ascii.CreateFileStream("icmpv6-redirect.tr"))
csma.EnablePcapAll("icmpv6-redirect", True)

print "Run Simulation."
ns.core.Simulator.Run()
ns.core.Simulator.Destroy()
print "Done."
Ejemplo n.º 16
0
dst = ns.network.InetSocketAddress (addresses.GetAddress (3))
onoff =ns.applications.OnOffHelper ("ns3::Ipv4RawSocketFactory", dst);
onoff.SetAttribute ("DataRate", ns.core.StringValue("15000"));
onoff.SetAttribute ("PacketSize", ns.core.UintegerValue (1200));

apps=ns.network.ApplicationContainer ()
apps = onoff.Install (c.Get (0));
apps.Start (ns.core.Seconds (1.0));
apps.Stop (ns.core.Seconds (10.0));

sink = ns.applications.PacketSinkHelper ("ns3::Ipv4RawSocketFactory", dst)
apps = sink.Install (c.Get (3));
apps.Start (ns.core.Seconds (0.0));
apps.Stop (ns.core.Seconds (11.0));

ping =ns.internet_apps.V4PingHelper(addresses.GetAddress(2));
pingers = ns.network.NodeContainer()
pingers.Add (c.Get (0));
pingers.Add (c.Get (1));
pingers.Add (c.Get (3));
apps = ping.Install (pingers);
apps.Start (ns.core.Seconds (2.0));
apps.Stop (ns.core.Seconds (5.0));


csma.EnablePcapAll("csma-ping", False)

ns.core.Simulator.Run()
ns.core.Simulator.Destroy()
Ejemplo n.º 17
0
def main(argv):
    #
    # Allow the user to override any of the defaults and the above Bind() at
    # run-time, via command-line arguments
    #
    cmd = ns.core.CommandLine()
    cmd.Parse(argv)

    #
    # But since this is a realtime script, don't allow the user to mess with
    # that.
    #
    ns.core.GlobalValue.Bind("SimulatorImplementationType",
                             ns.core.StringValue("ns3::RealtimeSimulatorImpl"))

    #
    # Explicitly create the nodes required by the topology (shown above).
    #
    print "Create nodes."
    n = ns.network.NodeContainer()
    n.Create(4)

    internet = ns.internet.InternetStackHelper()
    internet.Install(n)

    #
    # Explicitly create the channels required by the topology (shown above).
    #
    print("Create channels.")
    csma = ns.csma.CsmaHelper()
    csma.SetChannelAttribute(
        "DataRate", ns.network.DataRateValue(ns.network.DataRate(5000000)))
    csma.SetChannelAttribute("Delay",
                             ns.core.TimeValue(ns.core.MilliSeconds(2)))
    csma.SetDeviceAttribute("Mtu", ns.core.UintegerValue(1400))
    d = csma.Install(n)

    #
    # We've got the "hardware" in place.  Now we need to add IP addresses.
    #
    print("Assign IP Addresses.")
    ipv4 = ns.internet.Ipv4AddressHelper()
    ipv4.SetBase(ns.network.Ipv4Address("10.1.1.0"),
                 ns.network.Ipv4Mask("255.255.255.0"))
    i = ipv4.Assign(d)

    print("Create Applications.")

    #
    # Create a UdpEchoServer application on node one.
    #
    port = 9  # well-known echo port number
    server = ns.applications.UdpEchoServerHelper(port)
    apps = server.Install(n.Get(1))
    apps.Start(ns.core.Seconds(1.0))
    apps.Stop(ns.core.Seconds(10.0))

    #
    # Create a UdpEchoClient application to send UDP datagrams from node zero to
    # node one.
    #
    packetSize = 1024
    maxPacketCount = 500
    interPacketInterval = ns.core.Seconds(0.01)
    client = ns.applications.UdpEchoClientHelper(i.GetAddress(1), port)
    client.SetAttribute("MaxPackets", ns.core.UintegerValue(maxPacketCount))
    client.SetAttribute("Interval", ns.core.TimeValue(interPacketInterval))
    client.SetAttribute("PacketSize", ns.core.UintegerValue(packetSize))
    apps = client.Install(n.Get(0))
    apps.Start(ns.core.Seconds(2.0))
    apps.Stop(ns.core.Seconds(10.0))

    ascii = ns.network.AsciiTraceHelper()
    csma.EnableAsciiAll(ascii.CreateFileStream("realtime-udp-echo.tr"))
    csma.EnablePcapAll("realtime-udp-echo", False)

    #
    # Now, do the actual simulation.
    #
    print("Run Simulation.")
    ns.core.Simulator.Run()
    ns.core.Simulator.Destroy()
    print("Done.")
Ejemplo n.º 18
0
def main():
    framework.start()

    # First, we initialize a few local variables that control some
    #  simulation parameters.
    cmd = ns.core.CommandLine()
    cmd.backboneNodes = {{backbone_nodes}}
    cmd.infraNodes = {{infra_nodes}}
    cmd.lanNodes = {{lan_nodes}}
    cmd.stopTime = {{exec_time}}

    #  Simulation defaults are typically set next, before command line
    #  arguments are parsed.
    ns.core.Config.SetDefault("ns3::OnOffApplication::PacketSize",
                              ns.core.StringValue("1472"))
    ns.core.Config.SetDefault("ns3::OnOffApplication::DataRate",
                              ns.core.StringValue("100kb/s"))

    backboneNodes = int(cmd.backboneNodes)
    infraNodes = int(cmd.infraNodes)
    lanNodes = int(cmd.lanNodes)
    stopTime = int(cmd.stopTime)

    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /
    #                                                                        #
    #  Construct the backbone                                                #
    #                                                                        #
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /
    #  Create a container to manage the nodes of the adhoc(backbone) network.
    #  Later we'll create the rest of the nodes we'll need.
    backbone = ns.network.NodeContainer()
    backbone.Create(backboneNodes)

    #  Create the backbone wifi net devices and install them into the nodes in
    #  our container
    wifi = ns.wifi.WifiHelper()
    mac = ns.wifi.WifiMacHelper()
    mac.SetType("ns3::AdhocWifiMac")
    wifi.SetRemoteStationManager(
        "ns3::ConstantRateWifiManager", "DataMode",
        ns.core.StringValue("OfdmRate{}Mbps".format({{ofdm_rate}})))
    wifiPhy = ns.wifi.YansWifiPhyHelper.Default()
    wifiChannel = ns.wifi.YansWifiChannelHelper.Default()
    wifiPhy.SetChannel(wifiChannel.Create())
    backboneDevices = wifi.Install(wifiPhy, mac, backbone)

    #  Add the IPv4 protocol stack to the nodes in our container
    print("Enabling OLSR routing on all backbone nodes")
    internet = ns.internet.InternetStackHelper()
    olsr = ns.olsr.OlsrHelper()
    internet.SetRoutingHelper(olsr)
    # has effect on the next Install ()
    internet.Install(backbone)

    #  Assign IPv4 addresses to the device drivers(actually to the associated
    #  IPv4 interfaces) we just created.
    ipAddrs = ns.internet.Ipv4AddressHelper()
    ipAddrs.SetBase(ns.network.Ipv4Address("192.168.0.0"),
                    ns.network.Ipv4Mask("255.255.255.0"))
    ipAddrs.Assign(backboneDevices)

    #  The ad-hoc network nodes need a mobility model so we aggregate one to
    #  each of the nodes we just finished building.
    mobility = ns.mobility.MobilityHelper()
    mobility.SetPositionAllocator("ns3::GridPositionAllocator", "MinX",
                                  ns.core.DoubleValue(20.0), "MinY",
                                  ns.core.DoubleValue(20.0), "DeltaX",
                                  ns.core.DoubleValue(20.0), "DeltaY",
                                  ns.core.DoubleValue(20.0), "GridWidth",
                                  ns.core.UintegerValue(5), "LayoutType",
                                  ns.core.StringValue("RowFirst"))
    mobility.SetMobilityModel(
        "ns3::RandomDirection2dMobilityModel", "Bounds",
        ns.mobility.RectangleValue(ns.mobility.Rectangle(-500, 500, -500,
                                                         500)), "Speed",
        ns.core.StringValue("ns3::ConstantRandomVariable[Constant=2]"),
        "Pause",
        ns.core.StringValue("ns3::ConstantRandomVariable[Constant=0.2]"))
    mobility.Install(backbone)

    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /
    #                                                                        #
    #  Construct the LANs                                                    #
    #                                                                        #
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /
    #  Reset the address base-- all of the CSMA networks will be in
    #  the "172.16 address space
    ipAddrs.SetBase(ns.network.Ipv4Address("172.16.0.0"),
                    ns.network.Ipv4Mask("255.255.255.0"))

    for i in range(backboneNodes):
        #  Create a container to manage the nodes of the LAN.  We need
        #  two containers here; one with all of the new nodes, and one
        #  with all of the nodes including new and existing nodes
        newLanNodes = ns.network.NodeContainer()
        newLanNodes.Create(lanNodes - 1)
        lan = ns.network.NodeContainer(
            ns.network.NodeContainer(backbone.Get(i)), newLanNodes)

        #  Create the CSMA net devices and install them into the nodes in our
        #  collection.
        csma = ns.csma.CsmaHelper()
        csma.SetChannelAttribute(
            "DataRate",
            ns.network.DataRateValue(ns.network.DataRate({{datarate}})))
        csma.SetChannelAttribute(
            "Delay", ns.core.TimeValue(ns.core.MilliSeconds({{delay}})))
        lanDevices = csma.Install(lan)

        #  Add the IPv4 protocol stack to the new LAN nodes
        internet.Install(newLanNodes)

        #  Assign IPv4 addresses to the device drivers(actually to the
        #  associated IPv4 interfaces) we just created.
        ipAddrs.Assign(lanDevices)

        #  Assign a new network prefix for the next LAN, according to the
        #  network mask initialized above
        ipAddrs.NewNetwork()

        # The new LAN nodes need a mobility model so we aggregate one
        # to each of the nodes we just finished building.
        mobilityLan = ns.mobility.MobilityHelper()
        positionAlloc = ns.mobility.ListPositionAllocator()
        for j in range(newLanNodes.GetN()):
            positionAlloc.Add(ns.core.Vector(0.0, (j * 10 + 10), 0.0))

        mobilityLan.SetPositionAllocator(positionAlloc)
        mobilityLan.PushReferenceMobilityModel(backbone.Get(i))
        mobilityLan.SetMobilityModel("ns3::ConstantPositionMobilityModel")
        mobilityLan.Install(newLanNodes)

    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /
    #                                                                        #
    #  Construct the mobile networks                                         #
    #                                                                        #
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /
    #  Reset the address base-- all of the 802.11 networks will be in
    #  the "10.0" address space
    ipAddrs.SetBase(ns.network.Ipv4Address("10.0.0.0"),
                    ns.network.Ipv4Mask("255.255.255.0"))

    for i in range(backboneNodes):
        #  Create a container to manage the nodes of the LAN.  We need
        #  two containers here; one with all of the new nodes, and one
        #  with all of the nodes including new and existing nodes
        stas = ns.network.NodeContainer()
        stas.Create(infraNodes - 1)
        infra = ns.network.NodeContainer(
            ns.network.NodeContainer(backbone.Get(i)), stas)

        #  Create another ad hoc network and devices
        ssid = ns.wifi.Ssid('wifi-infra' + str(i))
        wifiInfra = ns.wifi.WifiHelper()
        wifiPhy.SetChannel(wifiChannel.Create())
        wifiInfra.SetRemoteStationManager('ns3::ArfWifiManager')
        macInfra = ns.wifi.WifiMacHelper()
        macInfra.SetType("ns3::StaWifiMac", "Ssid", ns.wifi.SsidValue(ssid))

        # setup stas
        staDevices = wifiInfra.Install(wifiPhy, macInfra, stas)
        # setup ap.
        macInfra.SetType("ns3::ApWifiMac", "Ssid", ns.wifi.SsidValue(ssid),
                         "BeaconInterval",
                         ns.core.TimeValue(ns.core.Seconds(2.5)))
        apDevices = wifiInfra.Install(wifiPhy, macInfra, backbone.Get(i))
        # Collect all of these new devices
        infraDevices = ns.network.NetDeviceContainer(apDevices, staDevices)

        #  Add the IPv4 protocol stack to the nodes in our container
        internet.Install(stas)

        #  Assign IPv4 addresses to the device drivers(actually to the associated
        #  IPv4 interfaces) we just created.
        ipAddrs.Assign(infraDevices)

        #  Assign a new network prefix for each mobile network, according to
        #  the network mask initialized above
        ipAddrs.NewNetwork()

        #  The new wireless nodes need a mobility model so we aggregate one
        #  to each of the nodes we just finished building.
        subnetAlloc = ns.mobility.ListPositionAllocator()
        for j in range(infra.GetN()):
            subnetAlloc.Add(ns.core.Vector(0.0, j, 0.0))

        mobility.PushReferenceMobilityModel(backbone.Get(i))
        mobility.SetPositionAllocator(subnetAlloc)
        mobility.SetMobilityModel(
            "ns3::RandomDirection2dMobilityModel", "Bounds",
            ns.mobility.RectangleValue(ns.mobility.Rectangle(-10, 10, -10,
                                                             10)), "Speed",
            ns.core.StringValue("ns3::ConstantRandomVariable[Constant=3]"),
            "Pause",
            ns.core.StringValue("ns3::ConstantRandomVariable[Constant=0.4]"))
        mobility.Install(stas)

    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /
    #                                                                        #
    #  Application configuration                                             #
    #                                                                        #
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /
    #  Create the OnOff application to send UDP datagrams of size
    #  210 bytes at a rate of 448 Kb/s, between two nodes
    port = 9  #  Discard port(RFC 863)

    appSource = ns.network.NodeList.GetNode(backboneNodes)
    lastNodeIndex = backboneNodes + backboneNodes * (
        lanNodes - 1) + backboneNodes * (infraNodes - 1) - 1
    appSink = ns.network.NodeList.GetNode(lastNodeIndex)
    # Let's fetch the IP address of the last node, which is on Ipv4Interface 1
    remoteAddr = appSink.GetObject(ns.internet.Ipv4.GetTypeId()).GetAddress(
        1, 0).GetLocal()

    onoff = ns.applications.OnOffHelper(
        "ns3::UdpSocketFactory",
        ns.network.Address(ns.network.InetSocketAddress(remoteAddr, port)))
    apps = onoff.Install(ns.network.NodeContainer(appSource))
    apps.Start(ns.core.Seconds(3))
    apps.Stop(ns.core.Seconds(stopTime - 1))

    #  Create a packet sink to receive these packets
    sink = ns.applications.PacketSinkHelper(
        "ns3::UdpSocketFactory",
        ns.network.InetSocketAddress(ns.network.Ipv4Address.GetAny(), port))
    apps = sink.Install(ns.network.NodeContainer(appSink))
    apps.Start(ns.core.Seconds(3))

    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /
    #                                                                        #
    #  Tracing configuration                                                 #
    #                                                                        #
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /
    csma = ns.csma.CsmaHelper()

    #  Let's set up some ns-2-like ascii traces, using another helper class
    #
    ascii = ns.network.AsciiTraceHelper()
    stream = ascii.CreateFileStream("mixed-wireless.tr")
    wifiPhy.EnableAsciiAll(stream)
    csma.EnableAsciiAll(stream)
    internet.EnableAsciiIpv4All(stream)

    mob = ascii.CreateFileStream("mixed-wireless.mob")
    mobility.EnableAsciiAll(mob)

    #  Csma captures in non-promiscuous mode
    csma.EnablePcapAll("mixed-wireless", False)
    #  Let's do a pcap trace on the backbone devices
    wifiPhy.EnablePcap("mixed-wireless", backboneDevices)
    wifiPhy.EnablePcap("mixed-wireless", appSink.GetId(), 0)

    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
    #                                                                        #
    #  Run simulation                                                        #
    #                                                                        #
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
    ns.core.Simulator.Stop(ns.core.Seconds(stopTime))
    ns.core.Simulator.Run()
    ns.core.Simulator.Destroy()

    framework.addBinaryFile("mixed-wireless.tr")
    framework.addBinaryFile("mixed-wireless.mob")

    path = "*.pcap"
    for filename in glob.glob(path):
        framework.addBinaryFile(filename)

    framework.stop()
Ejemplo n.º 19
0
sink2 = ns.applications.PacketSinkHelper(
    "ns3::UdpSocketFactory",
    ns.network.Address(
        ns.network.InetSocketAddress(ns.network.Ipv4Address.GetAny(), port)))
apps2 = sink2.Install(c.Get(6))
apps2.Start(ns.core.Seconds(11.0))
apps2.Stop(ns.core.Seconds(16.0))

ascii = ns.network.AsciiTraceHelper()
stream = ascii.CreateFileStream("dynamic-global-routing.tr")
p2p.EnableAsciiAll(stream)
csma.EnableAsciiAll(stream)
internet.EnableAsciiIpv4All(stream)

p2p.EnablePcapAll("dynamic-global-routing")
csma.EnablePcapAll("dynamic-global-routing", False)

n1 = c.Get(1)
ipv41 = n1.GetObject(ns.internet.Ipv4.GetTypeId())

#The first ifIndex is 0 for loopback, then the first p2p is numbered 1,
#then the next p2p is numbered 2
ipv4ifIndex1 = 2

ns.core.Simulator.Schedule(ns.core.Seconds(6), ns.internet.Ipv4.SetDown, ipv41,
                           ipv4ifIndex1)
ns.core.Simulator.Schedule(ns.core.Seconds(4), ns.internet.Ipv4.SetUp, ipv41,
                           ipv4ifIndex1)

n6 = c.Get(6)
ipv46 = n6.GetObject(ns.internet.Ipv4.GetTypeId())
Ejemplo n.º 20
0
def main(argv):
    #
    # Allow the user to override any of the defaults and the above Bind() at
    # run-time, via command-line arguments
    #
    cmd = ns.core.CommandLine()

    cmd.packetSize = 1024
    cmd.packetCount = 10
    cmd.packetInterval = 1.0

    #Socket options for IPv6, currently TCLASS, HOPLIMIT, RECVTCLASS, and RECVHOPLIMIT
    cmd.ipv6Tclass = 0
    cmd.ipv6RecvTclass = True
    cmd.ipv6Hoplimit = 0
    cmd.ipv6RecvHoplimit = True

    cmd.AddValue("PacketSize", "Packet size in bytes")
    cmd.AddValue("PacketCount", "Number of packets to send")
    cmd.AddValue("Interval", "Interval between packets")
    cmd.AddValue("IPV6_TCLASS", "IPV6_TCLASS")
    cmd.AddValue("IPV6_RECVTCLASS", "IPV6_RECVTCLASS")
    cmd.AddValue("IPV6_HOPLIMIT", "IPV6_HOPLIMIT")
    cmd.AddValue("IPV6_RECVHOPLIMIT", "IPV6_RECVHOPLIMIT")
    cmd.Parse(argv)

    packetSize = int(cmd.packetSize)
    packetCount = int(cmd.packetCount)
    packetInterval = float(cmd.packetInterval)
    ipv6Tclass = int(cmd.ipv6Tclass)
    ipv6RecvTclass = bool(cmd.ipv6RecvTclass)
    ipv6Hoplimit = int(cmd.ipv6Hoplimit)
    ipv6RecvHoplimit = bool(cmd.ipv6RecvHoplimit)

    print("Create nodes.")
    n = ns.network.NodeContainer()
    n.Create(2)

    internet = ns.internet.InternetStackHelper()
    internet.Install(n)

    print("Create channels.")
    csma = ns.csma.CsmaHelper()
    csma.SetChannelAttribute("DataRate", ns.core.StringValue("5000000"))
    csma.SetChannelAttribute("Delay",
                             ns.core.TimeValue(ns.core.MilliSeconds(2)))
    csma.SetDeviceAttribute("Mtu", ns.core.UintegerValue(1400))
    d = csma.Install(n)

    print("Assign IP Addresses.")
    ipv6 = ns.internet.Ipv6AddressHelper()
    ipv6.SetBase(ns.network.Ipv6Address("2001:0000:f00d:cafe::"),
                 ns.network.Ipv6Prefix(64))
    i6 = ipv6.Assign(d)
    serverAddress = ns.network.Address(i6.GetAddress(1, 1))

    print("Create sockets.")
    #Receiver socket on n1
    tid = ns3.TypeId.LookupByName("ns3::UdpSocketFactory")
    recvSink = ns3.Socket.CreateSocket(n.Get(1), tid)
    local = ns3.Inet6SocketAddress(ns3.Ipv6Address.GetAny(), 4477)
    recvSink.SetIpv6RecvTclass(ipv6RecvTclass)
    recvSink.SetIpv6RecvHopLimit(ipv6RecvHoplimit)
    recvSink.Bind(local)
    recvSink.SetRecvCallback(ReceivePacket)

    #Sender socket on n0
    source = ns3.Socket.CreateSocket(n.Get(0), tid)
    remote = ns3.Inet6SocketAddress(i6.GetAddress(1, 1), 4477)

    #Set socket options, it is also possible to set the options after the socket has been created/connected.
    if ipv6Tclass != 0:
        source.SetIpv6Tclass(ipv6Tclass)

    if ipv6Hoplimit > 0:
        source.SetIpv6HopLimit(ipv6Hoplimit)

    source.Connect(remote)

    ascii = ns.network.AsciiTraceHelper()
    csma.EnableAsciiAll(ascii.CreateFileStream("socket-options-ipv6-py.tr"))
    csma.EnablePcapAll("socket-options-ipv6", False)

    #Schedule SendPacket
    interPacketInterval = ns.core.Seconds(packetInterval)
    ns.core.Simulator.ScheduleWithContext(source.GetNode().GetId(),
                                          ns.core.Seconds(1.0), SendPacket,
                                          source, packetSize, packetCount,
                                          interPacketInterval)

    print("Run Simulation.")
    ns.core.Simulator.Run()
    ns.core.Simulator.Destroy()
    print("Done.")
Ejemplo n.º 21
0
'''
This tells every node on the network to start a flow to all other nodes on the network ...
'''

for i in range(MaxNodes):
	for j in range(MaxNodes):
		if i == j:
			continue
		remoteAddress = ns.network.Address(ns.network.utils.InetSocketAddress(ns.internet.ipv4Interfaces.GetAddress(j),servPort))
		clientHelper = ns.applications.OnOffApplication("ns3::TcpSocketFactory", remoteAddress)
		clientHelper.SetAttribute("OnTime", ns.Core.StringValue ("ns3::ConstantRandomVariable[Constant=1]"))
		clientHelper.SetAttribute("OFFTime", ns.Core.StringValue ("ns3::ConstantRandomVariable[Constant=0]"))

		clientApp = clientHelper.Install (n.Get (i))
		clientApp.Start(ns.Core.Seconds(float(j))
		clientApp.Stop(ns.Core.Seconds(float(j + runtime)))

csma.EnablePcapAll("tcp-nsc-zoo", False)

ns.core.Simulator.Stop (ns.core.Seconds (100.0))
ns.core.Simulator.Run ()
ns.core.Simulator.Destroy ()
print ("Done.")







Ejemplo n.º 22
0
def main(argv):
	#
	# Users may find it convenient to turn on explicit debugging
	# for selected modules; the below lines suggest how to do this
	#
	# ns.core.LogComponentEnable("UdpEchoClientApplication", ns.core.LOG_LEVEL_ALL)
	# ns.core.LogComponentEnable("UdpEchoServerApplication", ns.core.LOG_LEVEL_ALL)

	#
	# Allow the user to override any of the defaults at
	# run-time, via command-line arguments
	#
	cmd = ns.core.CommandLine ()
	cmd.useIpv6 = "False"
	cmd.AddValue ("useIpv6", "Use Ipv6")
	cmd.Parse (argv)
	
	# 
	# Explicitly create the nodes required by the topology (shown above).
	# 
	print ("Create nodes.")
	n = ns.network.NodeContainer ()
	n.Create (4)
	
	internetstack = ns.internet.InternetStackHelper ()
	internetstack.Install (n)
	
	# 
	# Explicitly create the channels required by the topology (shown above).
	# 
	print ("Create channels.")
	csma = ns.csma.CsmaHelper ()
	csma.SetChannelAttribute ("DataRate", ns.core.StringValue ("5000000"))
	csma.SetChannelAttribute ("Delay", ns.core.TimeValue (ns.core.MilliSeconds (2)))
	csma.SetDeviceAttribute ("Mtu", ns.core.UintegerValue (1400))
	d = csma.Install (n)
	
	# 
	# We've got the "hardware" in place.  Now we need to add IP addresses.
	# 
	print ("Assign IP Addresses.")
	if (cmd.useIpv6 == "False"):
		ipv4 = ns.internet.Ipv4AddressHelper ()
		ipv4.SetBase (ns.network.Ipv4Address ("10.1.1.0"), ns.network.Ipv4Mask ("255.255.255.0"))
		i = ipv4.Assign (d)
		serverAddress = ns.network.Address (i.GetAddress (1))
	    
	else:
		ipv6 = ns.internet.Ipv6AddressHelper ()
		ipv6.SetBase (ns.network.Ipv6Address ("2001:0000:f00d:cafe::"), ns.network.Ipv6Prefix (64))
		i6 = ipv6.Assign (d)
		serverAddress = ns.network.Address (i6.GetAddress (1, 1))

	print ("Create Applications.")
	# 
	# Create a UdpEchoServer application on node one.
	#
	port = 9  # well-known echo port number
	server = ns.applications.UdpEchoServerHelper (port)
	serverapps = server.Install (n.Get (1))
	serverapps.Start (ns.core.Seconds (1.0))
	serverapps.Stop (ns.core.Seconds (10.0))
	
	# 
	# Create a UdpEchoClient application to send UDP datagrams from node zero to
	# node one
	#
	packetSize = 1024
	maxPacketCount = 1
	interPacketInterval = ns.core.Seconds (1.0)
	
	client = ns.applications.UdpEchoClientHelper (serverAddress, port)
	client.SetAttribute ("MaxPackets", ns.core.UintegerValue (maxPacketCount))
	client.SetAttribute ("Interval", ns.core.TimeValue (interPacketInterval))
	client.SetAttribute ("PacketSize", ns.core.UintegerValue (packetSize))
	
	apps = client.Install (n.Get (0))
	apps.Start (ns.core.Seconds (2.0))
	apps.Stop (ns.core.Seconds (10.0))
	
	#
	# Users may find it convenient to initialize echo packets with actual data;
	# the below lines suggest how to do this
	#
 	# client.SetFill (apps.Get (0), "Hello World")
	#
	# client.SetFill (apps.Get (0), 0xa5, 1024)
	#
	# Following does not work as intended.
	# fill = [0, 1, 2, 3, 4, 5, 6]
	# client.SetFill (apps.Get (0), fill[0], 1024)

	asciitracer = ns.network.AsciiTraceHelper ()
	csma.EnableAsciiAll (asciitracer.CreateFileStream ("udp-echo-py.tr"))
	csma.EnablePcapAll ("udp-echo-py", False)
	
	# 
	# Now, do the actual simulation.
	# 
	print ("Run Simulation.")
	ns.core.Simulator.Run ()
	ns.core.Simulator.Destroy ()
	print ("Done.")
Ejemplo n.º 23
0
def main(argv):
    #
    #  First, we initialize a few local variables that control some
    #  simulation parameters.
    #

    cmd = ns.core.CommandLine()
    cmd.backboneNodes = 10
    cmd.infraNodes = 2
    cmd.lanNodes = 2
    cmd.stopTime = 20

    #
    #  Simulation defaults are typically set next, before command line
    #  arguments are parsed.
    #
    ns.core.Config.SetDefault("ns3::OnOffApplication::PacketSize",
                              ns.core.StringValue("1472"))
    ns.core.Config.SetDefault("ns3::OnOffApplication::DataRate",
                              ns.core.StringValue("100kb/s"))

    #
    #  For convenience, we add the local variables to the command line argument
    #  system so that they can be overridden with flags such as
    #  "--backboneNodes=20"
    #

    cmd.AddValue("backboneNodes", "number of backbone nodes")
    cmd.AddValue("infraNodes", "number of leaf nodes")
    cmd.AddValue("lanNodes", "number of LAN nodes")
    cmd.AddValue("stopTime", "simulation stop time(seconds)")

    #
    #  The system global variables and the local values added to the argument
    #  system can be overridden by command line arguments by using this call.
    #
    cmd.Parse(argv)

    backboneNodes = int(cmd.backboneNodes)
    infraNodes = int(cmd.infraNodes)
    lanNodes = int(cmd.lanNodes)
    stopTime = int(cmd.stopTime)

    if (stopTime < 10):
        print("Use a simulation stop time >= 10 seconds")
        exit(1)
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /
    #                                                                        #
    #  Construct the backbone                                                #
    #                                                                        #
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /

    #
    #  Create a container to manage the nodes of the adhoc(backbone) network.
    #  Later we'll create the rest of the nodes we'll need.
    #
    backbone = ns.network.NodeContainer()
    backbone.Create(backboneNodes)
    #
    #  Create the backbone wifi net devices and install them into the nodes in
    #  our container
    #
    wifi = ns.wifi.WifiHelper()
    mac = ns.wifi.WifiMacHelper()
    mac.SetType("ns3::AdhocWifiMac")
    wifi.SetRemoteStationManager("ns3::ConstantRateWifiManager", "DataMode",
                                 ns.core.StringValue("OfdmRate54Mbps"))
    wifiPhy = ns.wifi.YansWifiPhyHelper.Default()
    wifiChannel = ns.wifi.YansWifiChannelHelper.Default()
    wifiPhy.SetChannel(wifiChannel.Create())
    backboneDevices = wifi.Install(wifiPhy, mac, backbone)
    #
    #  Add the IPv4 protocol stack to the nodes in our container
    #
    print("Enabling OLSR routing on all backbone nodes")
    internet = ns.internet.InternetStackHelper()
    olsr = ns.olsr.OlsrHelper()
    internet.SetRoutingHelper(olsr)
    # has effect on the next Install ()
    internet.Install(backbone)
    # re-initialize for non-olsr routing.
    # internet.Reset()
    #
    #  Assign IPv4 addresses to the device drivers(actually to the associated
    #  IPv4 interfaces) we just created.
    #
    ipAddrs = ns.internet.Ipv4AddressHelper()
    ipAddrs.SetBase(ns.network.Ipv4Address("192.168.0.0"),
                    ns.network.Ipv4Mask("255.255.255.0"))
    ipAddrs.Assign(backboneDevices)

    #
    #  The ad-hoc network nodes need a mobility model so we aggregate one to
    #  each of the nodes we just finished building.
    #
    mobility = ns.mobility.MobilityHelper()
    mobility.SetPositionAllocator("ns3::GridPositionAllocator", "MinX",
                                  ns.core.DoubleValue(20.0), "MinY",
                                  ns.core.DoubleValue(20.0), "DeltaX",
                                  ns.core.DoubleValue(20.0), "DeltaY",
                                  ns.core.DoubleValue(20.0), "GridWidth",
                                  ns.core.UintegerValue(5), "LayoutType",
                                  ns.core.StringValue("RowFirst"))
    mobility.SetMobilityModel(
        "ns3::RandomDirection2dMobilityModel", "Bounds",
        ns.mobility.RectangleValue(ns.mobility.Rectangle(-500, 500, -500,
                                                         500)), "Speed",
        ns.core.StringValue("ns3::ConstantRandomVariable[Constant=2]"),
        "Pause",
        ns.core.StringValue("ns3::ConstantRandomVariable[Constant=0.2]"))
    mobility.Install(backbone)

    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /
    #                                                                        #
    #  Construct the LANs                                                    #
    #                                                                        #
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /

    #  Reset the address base-- all of the CSMA networks will be in
    #  the "172.16 address space
    ipAddrs.SetBase(ns.network.Ipv4Address("172.16.0.0"),
                    ns.network.Ipv4Mask("255.255.255.0"))

    for i in range(backboneNodes):
        print("Configuring local area network for backbone node ", i)
        #
        #  Create a container to manage the nodes of the LAN.  We need
        #  two containers here; one with all of the new nodes, and one
        #  with all of the nodes including new and existing nodes
        #
        newLanNodes = ns.network.NodeContainer()
        newLanNodes.Create(lanNodes - 1)
        #  Now, create the container with all nodes on this link
        lan = ns.network.NodeContainer(
            ns.network.NodeContainer(backbone.Get(i)), newLanNodes)
        #
        #  Create the CSMA net devices and install them into the nodes in our
        #  collection.
        #
        csma = ns.csma.CsmaHelper()
        csma.SetChannelAttribute(
            "DataRate", ns.network.DataRateValue(ns.network.DataRate(5000000)))
        csma.SetChannelAttribute("Delay",
                                 ns.core.TimeValue(ns.core.MilliSeconds(2)))
        lanDevices = csma.Install(lan)
        #
        #  Add the IPv4 protocol stack to the new LAN nodes
        #
        internet.Install(newLanNodes)
        #
        #  Assign IPv4 addresses to the device drivers(actually to the
        #  associated IPv4 interfaces) we just created.
        #
        ipAddrs.Assign(lanDevices)
        #
        #  Assign a new network prefix for the next LAN, according to the
        #  network mask initialized above
        #
        ipAddrs.NewNetwork()
        #
        # The new LAN nodes need a mobility model so we aggregate one
        # to each of the nodes we just finished building.
        #
        mobilityLan = ns.mobility.MobilityHelper()
        positionAlloc = ns.mobility.ListPositionAllocator()
        for j in range(newLanNodes.GetN()):
            positionAlloc.Add(ns.core.Vector(0.0, (j * 10 + 10), 0.0))

        mobilityLan.SetPositionAllocator(positionAlloc)
        mobilityLan.PushReferenceMobilityModel(backbone.Get(i))
        mobilityLan.SetMobilityModel("ns3::ConstantPositionMobilityModel")
        mobilityLan.Install(newLanNodes)

    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /
    #                                                                        #
    #  Construct the mobile networks                                         #
    #                                                                        #
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /

    #  Reset the address base-- all of the 802.11 networks will be in
    #  the "10.0" address space
    ipAddrs.SetBase(ns.network.Ipv4Address("10.0.0.0"),
                    ns.network.Ipv4Mask("255.255.255.0"))

    for i in range(backboneNodes):
        print("Configuring wireless network for backbone node ", i)
        #
        #  Create a container to manage the nodes of the LAN.  We need
        #  two containers here; one with all of the new nodes, and one
        #  with all of the nodes including new and existing nodes
        #
        stas = ns.network.NodeContainer()
        stas.Create(infraNodes - 1)
        #  Now, create the container with all nodes on this link
        infra = ns.network.NodeContainer(
            ns.network.NodeContainer(backbone.Get(i)), stas)
        #
        #  Create another ad hoc network and devices
        #
        ssid = ns.wifi.Ssid('wifi-infra' + str(i))
        wifiInfra = ns.wifi.WifiHelper()
        wifiPhy.SetChannel(wifiChannel.Create())
        wifiInfra.SetRemoteStationManager('ns3::ArfWifiManager')
        macInfra = ns.wifi.WifiMacHelper()
        macInfra.SetType("ns3::StaWifiMac", "Ssid", ns.wifi.SsidValue(ssid))

        # setup stas
        staDevices = wifiInfra.Install(wifiPhy, macInfra, stas)
        # setup ap.
        macInfra.SetType("ns3::ApWifiMac", "Ssid", ns.wifi.SsidValue(ssid))
        apDevices = wifiInfra.Install(wifiPhy, macInfra, backbone.Get(i))
        # Collect all of these new devices
        infraDevices = ns.network.NetDeviceContainer(apDevices, staDevices)

        #  Add the IPv4 protocol stack to the nodes in our container
        #
        internet.Install(stas)
        #
        #  Assign IPv4 addresses to the device drivers(actually to the associated
        #  IPv4 interfaces) we just created.
        #
        ipAddrs.Assign(infraDevices)
        #
        #  Assign a new network prefix for each mobile network, according to
        #  the network mask initialized above
        #
        ipAddrs.NewNetwork()
        #
        #  The new wireless nodes need a mobility model so we aggregate one
        #  to each of the nodes we just finished building.
        #
        subnetAlloc = ns.mobility.ListPositionAllocator()
        for j in range(infra.GetN()):
            subnetAlloc.Add(ns.core.Vector(0.0, j, 0.0))

        mobility.PushReferenceMobilityModel(backbone.Get(i))
        mobility.SetPositionAllocator(subnetAlloc)
        mobility.SetMobilityModel(
            "ns3::RandomDirection2dMobilityModel", "Bounds",
            ns.mobility.RectangleValue(ns.mobility.Rectangle(-10, 10, -10,
                                                             10)), "Speed",
            ns.core.StringValue("ns3::ConstantRandomVariable[Constant=3]"),
            "Pause",
            ns.core.StringValue("ns3::ConstantRandomVariable[Constant=0.4]"))
        mobility.Install(stas)

    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /
    #                                                                        #
    #  Application configuration                                             #
    #                                                                        #
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /

    #  Create the OnOff application to send UDP datagrams of size
    #  210 bytes at a rate of 448 Kb/s, between two nodes
    print("Create Applications.")
    port = 9  #  Discard port(RFC 863)

    appSource = ns.network.NodeList.GetNode(backboneNodes)
    lastNodeIndex = backboneNodes + backboneNodes * (
        lanNodes - 1) + backboneNodes * (infraNodes - 1) - 1
    appSink = ns.network.NodeList.GetNode(lastNodeIndex)
    # Let's fetch the IP address of the last node, which is on Ipv4Interface 1
    remoteAddr = appSink.GetObject(ns.internet.Ipv4.GetTypeId()).GetAddress(
        1, 0).GetLocal()

    onoff = ns.applications.OnOffHelper(
        "ns3::UdpSocketFactory",
        ns.network.Address(ns.network.InetSocketAddress(remoteAddr, port)))
    apps = onoff.Install(ns.network.NodeContainer(appSource))
    apps.Start(ns.core.Seconds(3))
    apps.Stop(ns.core.Seconds(stopTime - 1))

    #  Create a packet sink to receive these packets
    sink = ns.applications.PacketSinkHelper(
        "ns3::UdpSocketFactory",
        ns.network.InetSocketAddress(ns.network.Ipv4Address.GetAny(), port))
    apps = sink.Install(ns.network.NodeContainer(appSink))
    apps.Start(ns.core.Seconds(3))

    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /
    #                                                                        #
    #  Tracing configuration                                                 #
    #                                                                        #
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # /

    print("Configure Tracing.")
    csma = ns.csma.CsmaHelper()
    #
    #  Let's set up some ns-2-like ascii traces, using another helper class
    #
    ascii = ns.network.AsciiTraceHelper()
    stream = ascii.CreateFileStream("mixed-wireless.tr")
    wifiPhy.EnableAsciiAll(stream)
    csma.EnableAsciiAll(stream)
    internet.EnableAsciiIpv4All(stream)

    #  Csma captures in non-promiscuous mode
    csma.EnablePcapAll("mixed-wireless", False)
    #  Let's do a pcap trace on the backbone devices
    wifiPhy.EnablePcap("mixed-wireless", backboneDevices)
    wifiPhy.EnablePcap("mixed-wireless", appSink.GetId(), 0)

    #   #ifdef ENABLE_FOR_TRACING_EXAMPLE
    #     Config.Connect("/NodeList/*/$MobilityModel/CourseChange",
    #       MakeCallback(&CourseChangeCallback))
    #   #endif

    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
    #                                                                        #
    #  Run simulation                                                        #
    #                                                                        #
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

    print("Run Simulation.")
    ns.core.Simulator.Stop(ns.core.Seconds(stopTime))
    ns.core.Simulator.Run()
    ns.core.Simulator.Destroy()
Ejemplo n.º 24
0
echoServer = ns.applications.UdpEchoServerHelper(9)

serverApps = echoServer.Install(final.Get(1))
serverApps.Start(ns.core.Seconds(0.0))
serverApps.Stop(ns.core.Seconds(930.0))

echoClient = ns.applications.UdpEchoClientHelper(finalInterfaces.GetAddress(1), 9)
echoClient.SetAttribute("MaxPackets", ns.core.UintegerValue(500))
echoClient.SetAttribute("Interval", ns.core.TimeValue(ns.core.Seconds (float(cmd.intervalodepacotes))))
echoClient.SetAttribute("PacketSize", ns.core.UintegerValue(int(cmd.tamanhodepacotes)))

tempolist=[]
for i in clienteslist:
	tempolist.append(uniform(0,2))

clientappslist = []
cont = 0
for i in clienteslist:
	clientappslist.append(echoClient.Install(clientes.Get(cont)))
	clientappslist[cont].Start(ns.core.Seconds(150.0+tempolist[cont]))
	clientappslist[cont].Stop(ns.core.Seconds(930.0))
	cont+=1

csma.EnablePcapAll("manhattan")


ns.core.Simulator.Stop(ns.core.Seconds(930.0))
ns.core.Simulator.Run()
ns.core.Simulator.Destroy()

Ejemplo n.º 25
0
def main(argv):

    #
    # Allow the user to override any of the defaults and the above Bind() at
    # run-time, via command-line arguments
    #
    cmd = ns.core.CommandLine()
    cmd.Parse(argv)

    #
    # Explicitly create the nodes required by the topology(shown above).
    #
    #print "Create nodes."
    terminals = ns.network.NodeContainer()
    terminals.Create(4)

    csmaSwitch = ns.network.NodeContainer()
    csmaSwitch.Create(1)

    #print "Build Topology"
    csma = ns.csma.CsmaHelper()
    csma.SetChannelAttribute(
        "DataRate", ns.network.DataRateValue(ns.network.DataRate(5000000)))
    csma.SetChannelAttribute("Delay",
                             ns.core.TimeValue(ns.core.MilliSeconds(2)))

    # Create the csma links, from each terminal to the switch

    terminalDevices = ns.network.NetDeviceContainer()
    switchDevices = ns.network.NetDeviceContainer()

    for i in range(4):
        link = csma.Install(
            ns.network.NodeContainer(
                ns.network.NodeContainer(terminals.Get(i)), csmaSwitch))
        terminalDevices.Add(link.Get(0))
        switchDevices.Add(link.Get(1))

    # Create the bridge netdevice, which will do the packet switching
    switchNode = csmaSwitch.Get(0)
    bridgeDevice = ns.bridge.BridgeNetDevice()
    switchNode.AddDevice(bridgeDevice)

    for portIter in range(switchDevices.GetN()):
        bridgeDevice.AddBridgePort(switchDevices.Get(portIter))

    # Add internet stack to the terminals
    internet = ns.internet.InternetStackHelper()
    internet.Install(terminals)

    # We've got the "hardware" in place.  Now we need to add IP addresses.
    #
    #print "Assign IP Addresses."
    ipv4 = ns.internet.Ipv4AddressHelper()
    ipv4.SetBase(ns.network.Ipv4Address("10.1.1.0"),
                 ns.network.Ipv4Mask("255.255.255.0"))
    ipv4.Assign(terminalDevices)

    #
    # Create an OnOff application to send UDP datagrams from node zero to node 1.
    #
    #print "Create Applications."
    port = 9  # Discard port(RFC 863)

    onoff = ns.applications.OnOffHelper(
        "ns3::UdpSocketFactory",
        ns.network.Address(
            ns.network.InetSocketAddress(ns.network.Ipv4Address("10.1.1.2"),
                                         port)))
    onoff.SetConstantRate(ns.network.DataRate("500kb/s"))

    app = onoff.Install(ns.network.NodeContainer(terminals.Get(0)))
    # Start the application
    app.Start(ns.core.Seconds(1.0))
    app.Stop(ns.core.Seconds(10.0))

    # Create an optional packet sink to receive these packets
    sink = ns.applications.PacketSinkHelper(
        "ns3::UdpSocketFactory",
        ns.network.Address(
            ns.network.InetSocketAddress(ns.network.Ipv4Address.GetAny(),
                                         port)))
    app = sink.Install(ns.network.NodeContainer(terminals.Get(1)))
    app.Start(ns.core.Seconds(0.0))

    #
    # Create a similar flow from n3 to n0, starting at time 1.1 seconds
    #
    onoff.SetAttribute(
        "Remote",
        ns.network.AddressValue(
            ns.network.InetSocketAddress(ns.network.Ipv4Address("10.1.1.1"),
                                         port)))
    app = onoff.Install(ns.network.NodeContainer(terminals.Get(3)))
    app.Start(ns.core.Seconds(1.1))
    app.Stop(ns.core.Seconds(10.0))

    app = sink.Install(ns.network.NodeContainer(terminals.Get(0)))
    app.Start(ns.core.Seconds(0.0))

    #
    # Configure tracing of all enqueue, dequeue, and NetDevice receive events.
    # Trace output will be sent to the file "csma-bridge.tr"
    #
    #print "Configure Tracing."
    #ascii = ns.network.AsciiTraceHelper();
    #csma.EnableAsciiAll(ascii.CreateFileStream ("csma-bridge.tr"));

    #
    # Also configure some tcpdump traces; each interface will be traced.
    # The output files will be named:
    #     csma-bridge.pcap-<nodeId>-<interfaceId>
    # and can be read by the "tcpdump -r" command(use "-tt" option to
    # display timestamps correctly)
    #
    csma.EnablePcapAll("csma-bridge", False)

    #
    # Now, do the actual simulation.
    #
    #print "Run Simulation."
    ns.core.Simulator.Run()
    ns.core.Simulator.Destroy()
Ejemplo n.º 26
0
def main(argv):

    print("Ping6Example")

    cmd = ns.core.CommandLine()
    cmd.AddValue("verbose", "turn on log components")
    cmd.verbose = False
    cmd.Parse(argv)
    verbose = bool(cmd.verbose)

    if verbose:
        ns.core.LogComponentEnable("Ping6Example", ns.core.LOG_LEVEL_INFO)
        ns.core.LogComponentEnable("Ipv6EndPointDemux", ns.core.LOG_LEVEL_ALL)
        ns.core.LogComponentEnable("Ipv6L3Protocol", ns.core.LOG_LEVEL_ALL)
        ns.core.LogComponentEnable("Ipv6StaticRouting", ns.core.LOG_LEVEL_ALL)
        ns.core.LogComponentEnable("Ipv6ListRouting", ns.core.LOG_LEVEL_ALL)
        ns.core.LogComponentEnable("Ipv6Interface", ns.core.LOG_LEVEL_ALL)
        ns.core.LogComponentEnable("Icmpv6L4Protocol", ns.core.LOG_LEVEL_ALL)
        ns.core.LogComponentEnable("Ping6Application", ns.core.LOG_LEVEL_ALL)
        ns.core.LogComponentEnable("NdiscCache", ns.core.LOG_LEVEL_ALL)

    print("Create nodes.")
    n = ns.network.NodeContainer()
    n.Create(4)

    #  Install IPv4/IPv6 stack
    internetv6 = ns.internet.InternetStackHelper()
    internetv6.SetIpv4StackInstall(False)
    internetv6.Install(n)

    print("Create channels.")
    csma = ns.csma.CsmaHelper()
    csma.SetChannelAttribute(
        "DataRate", ns.network.DataRateValue(ns.network.DataRate(5000000)))
    csma.SetChannelAttribute("Delay",
                             ns.core.TimeValue(ns.core.MilliSeconds(2)))
    d = csma.Install(n)

    ipv6 = ns.internet.Ipv6AddressHelper()
    print("Assign IPv6 addresses")
    i = ipv6.Assign(d)

    print("Create applications.")

    # Create a Ping6 application to send ICMPv6 echo request from node zero to
    # all-nodes (ff02::1).
    #
    packetSize = 1024
    maxPacketCount = 5
    interPacketInterval = ns.core.Seconds(1.)
    ping6 = ns.internet_apps.Ping6Helper()

    # ping6.SetLocal (i.GetAddress (0, 1))
    # ping6.SetRemote(i.GetAddress(1, 1))
    ping6.SetIfIndex(i.GetInterfaceIndex(0))
    ping6.SetRemote(ns.network.Ipv6Address.GetAllNodesMulticast())

    ping6.SetAttribute("MaxPackets", ns.core.UintegerValue(maxPacketCount))
    ping6.SetAttribute("Interval", ns.core.TimeValue(interPacketInterval))
    ping6.SetAttribute("PacketSize", ns.core.UintegerValue(packetSize))
    apps = ping6.Install(ns.network.NodeContainer(n.Get(0)))
    apps.Start(ns.core.Seconds(2.0))
    apps.Stop(ns.core.Seconds(10.0))

    ascii = ns.network.AsciiTraceHelper()
    csma.EnableAsciiAll(ascii.CreateFileStream("ping6.tr"))
    csma.EnablePcapAll("ping6", True)

    print("Run simulation")
    ns.core.Simulator.Run()
    ns.core.Simulator.Destroy()
    print("Done")