<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">Hi Hwang,</div><div class=""><br class=""></div>If you don't need any specific mobility model and only need proper positioning of the nodes, I would use the AnnotatedTopologyReader with the topology defined in the text file, as in the example <a href="http://ndnsim.net/2.1/examples.html#node-grid-example-using-topology-plugin" class="">http://ndnsim.net/2.1/examples.html#node-grid-example-using-topology-plugin</a><div class=""><br class=""></div><div class="">This topology file allows you to specify positions of nodes. These numbers, I believe, are expressed in meters or whatever units the WiFi module assumes the position is measured in.</div><div class=""><br class=""></div><div class="">--</div><div class="">Alex<br class=""><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Sep 14, 2016, at 6:43 AM, Hwang In Chan <<a href="mailto:neogeoss1@gmail.com" class="">neogeoss1@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class=""><div class=""><div class=""><div class=""><div class=""><div class=""><div class=""><div class="">Dear All,<br class=""><br class=""></div>I am making a topology of a certain format in a wifi adhoc mode.<br class=""><span id="cid:ii_15728eb136df0fca"><image.png></span><br class=""></div>I am aiming to have a topology like this with NDN SIM.<br class=""></div>I was trying to make it visible like the picture above. <br class=""></div>In the beginning, I was making use of Grid Position allocator with mobility class.<br class=""></div>However, I soon realized that it is not going to help me. <br class=""></div>So I used the manuel allocator mentioned in<br class=""><a href="https://www.nsnam.org/wiki/MobilityHelper#Manual_Allocation" class="">https://www.nsnam.org/wiki/MobilityHelper#Manual_Allocation</a><br class=""><br class=""></div>But there is not much explanation. I am confused whether my approach works.<br class=""></div>Do you know anything about position allocation in Wifi Adhoc mode?<br class=""><div class=""><div class=""><div class=""><div class=""><div class=""><div class=""><br class=""><br class=""><br class=""><br class="">#include "ns3/core-module.h"<br class="">#include "ns3/network-module.h"<br class="">#include "ns3/applications-module.h"<br class="">#include "ns3/wifi-module.h"<br class="">#include "ns3/mobility-module.h"<br class="">#include "ns3/internet-module.h"<br class=""><br class="">#include "ns3/ndnSIM-module.h"<br class=""><br class="">using namespace std;<br class="">namespace ns3 {<br class=""><br class="">NS_LOG_COMPONENT_DEFINE("ndn.WifiExample");<br class=""><br class="">//<br class="">// DISCLAIMER: Note that this is an extremely simple example, containing just 2 wifi nodes<br class="">// communicating directly over AdHoc channel.<br class="">//<br class=""><br class="">// Ptr<ndn::NetDeviceFace><br class="">// MyNetDeviceFaceCallback (Ptr<Node> node, Ptr<ndn::L3Protocol> ndn, Ptr<NetDevice> device)<br class="">// {<br class="">// // NS_LOG_DEBUG ("Create custom network device " << node->GetId ());<br class="">// Ptr<ndn::NetDeviceFace> face = CreateObject<ndn::MyNetDeviceFace> (node, device);<br class="">// ndn->AddFace (face);<br class="">// return face;<br class="">// }<br class="">void ReceivePacket (Ptr<Socket> socket)<br class="">{<br class=""> while (socket->Recv ())<br class=""> {<br class=""> NS_LOG_UNCOND ("Received one packet!");<br class=""> }<br class="">}<br class=""><br class="">static void GenerateTraffic (Ptr<Socket> socket, uint32_t pktSize, <br class=""> uint32_t pktCount, Time pktInterval )<br class="">{<br class=""> if (pktCount > 0)<br class=""> {<br class=""> socket->Send (Create<Packet> (pktSize));<br class=""> Simulator::Schedule (pktInterval, &GenerateTraffic, <br class=""> socket, pktSize,pktCount-1, pktInterval);<br class=""> }<br class=""> else<br class=""> {<br class=""> socket->Close ();<br class=""> }<br class="">}<br class=""><br class=""><br class=""><br class=""><br class="">int<br class="">main(int argc, char* argv[])<br class="">{<br class=""><br class=""> std::string phyMode ("DsssRate1Mbps");<br class=""> double distance = 500; // m<br class=""> uint32_t packetSize = 1000; // bytes<br class=""> uint32_t numPackets = 1;<br class=""> uint32_t numNodes = 25; // by default, 5x5<br class=""> uint32_t sinkNode = 0;<br class=""> uint32_t sourceNode = 24;<br class=""> double interval = 1.0; // seconds<br class=""> bool verbose = false;<br class=""> bool tracing = false;<br class=""><br class=""> CommandLine cmd;<br class=""><br class=""> cmd.AddValue ("phyMode", "Wifi Phy mode", phyMode);<br class=""> cmd.AddValue ("distance", "distance (m)", distance);<br class=""> cmd.AddValue ("packetSize", "size of application packet sent", packetSize);<br class=""> cmd.AddValue ("numPackets", "number of packets generated", numPackets);<br class=""> cmd.AddValue ("interval", "interval (seconds) between packets", interval);<br class=""> cmd.AddValue ("verbose", "turn on all WifiNetDevice log components", verbose);<br class=""> cmd.AddValue ("tracing", "turn on ascii and pcap tracing", tracing);<br class=""> cmd.AddValue ("numNodes", "number of nodes", numNodes);<br class=""> cmd.AddValue ("sinkNode", "Receiver node number", sinkNode);<br class=""> cmd.AddValue ("sourceNode", "Sender node number", sourceNode);<br class=""><br class=""> cmd.Parse (argc, argv);<br class=""> // Convert to time object<br class=""> Time interPacketInterval = Seconds (interval);<br class=""> <br class=""> // disable fragmentation<br class=""> Config::SetDefault("ns3::WifiRemoteStationManager::FragmentationThreshold", StringValue("2200"));<br class=""> Config::SetDefault("ns3::WifiRemoteStationManager::RtsCtsThreshold", StringValue("2200"));<br class=""> Config::SetDefault("ns3::WifiRemoteStationManager::NonUnicastMode",<br class=""> StringValue("DsssRate1Mbps"));<br class=""><br class=""> <br class=""><br class=""> //////////////////////<br class=""> //////////////////////<br class=""> //////////////////////<br class=""> WifiHelper wifi = WifiHelper::Default();<br class=""> // wifi.SetRemoteStationManager ("ns3::AarfWifiManager");<br class=""> wifi.SetStandard(WIFI_PHY_STANDARD_80211a);<br class=""> wifi.SetRemoteStationManager("ns3::ConstantRateWifiManager", "DataMode",<br class=""> StringValue("DsssRate1Mbps"));<br class=""><br class=""> YansWifiChannelHelper wifiChannel; // = YansWifiChannelHelper::Default ();<br class=""> wifiChannel.SetPropagationDelay("ns3::ConstantSpeedPropagationDelayModel");<br class=""> wifiChannel.AddPropagationLoss("ns3::FriisPropagationLossModel");<br class=""> //wifiChannel.AddPropagationLoss("ns3::NakagamiPropagationLossModel");<br class=""><br class=""> // YansWifiPhy wifiPhy = YansWifiPhy::Default();<br class=""> YansWifiPhyHelper wifiPhyHelper = YansWifiPhyHelper::Default();<br class=""> wifiPhyHelper.Set ("RxGain", DoubleValue (-10) ); <br class=""> // ns-3 supports RadioTap and Prism tracing extensions for 802.11b<br class=""> wifiPhyHelper.SetPcapDataLinkType (YansWifiPhyHelper::DLT_IEEE802_11_RADIO); <br class=""> wifiPhyHelper.SetChannel(wifiChannel.Create());<br class=""> /*wifiPhyHelper.Set("TxPowerStart", DoubleValue(5));<br class=""> wifiPhyHelper.Set("TxPowerEnd", DoubleValue(5));*/<br class=""><br class=""> NqosWifiMacHelper wifiMacHelper = NqosWifiMacHelper::Default();<br class=""> wifi.SetStandard (WIFI_PHY_STANDARD_80211b);<br class=""> wifi.SetRemoteStationManager ("ns3::ConstantRateWifiManager",<br class=""> "DataMode",StringValue (phyMode),<br class=""> "ControlMode",StringValue (phyMode));<br class=""> wifiMacHelper.SetType("ns3::AdhocWifiMac");<br class=""><br class="">/* Ptr<UniformRandomVariable> randomizer = CreateObject<UniformRandomVariable>();<br class=""> randomizer->SetAttribute("Min", DoubleValue(10));<br class=""> randomizer->SetAttribute("Max", DoubleValue(100));*/<br class=""><br class=""> MobilityHelper mobility;<br class=""> Ptr<ListPositionAllocator> initialAlloc = CreateObject<ListPositionAllocator> ();<br class=""> initialAlloc->Add(Vector(1, 1., 0.));<br class=""> initialAlloc->Add(Vector(1, 3., 0.));<br class=""> initialAlloc->Add(Vector(2, 2., 0.));<br class=""> initialAlloc->Add(Vector(3, 2., 0.));<br class=""> initialAlloc->Add(Vector(4, 2., 0.));<br class=""> initialAlloc->Add(Vector(5, 1., 0.));<br class=""> initialAlloc->Add(Vector(5, 2., 0.));<br class=""> initialAlloc->Add(Vector(5, 3., 0.));<br class=""><br class=""> mobility.SetMobilityModel("ns3::ConstantPositionMobilityModel");<br class=""> mobility.SetPositionAllocator(initialAlloc);<br class=""><br class=""> NodeContainer nodes;<br class=""> nodes.Create(8);<br class=""><br class=""> ////////////////<br class=""> // 1. Install Wifi<br class=""> NetDeviceContainer wifiNetDevices = wifi.Install(wifiPhyHelper, wifiMacHelper, nodes);<br class=""><br class=""> // 2. Install Mobility model<br class=""> mobility.Install(nodes);<br class=""><br class=""> // 3. Install NDN stack<br class=""> NS_LOG_INFO("Installing NDN stack");<br class=""> ndn::StackHelper ndnHelper;<br class=""> // ndnHelper.AddNetDeviceFaceCreateCallback (WifiNetDevice::GetTypeId (), MakeCallback<br class=""> // (MyNetDeviceFaceCallback));<br class=""> ndnHelper.SetOldContentStore("ns3::ndn::cs::Lru", "MaxSize", "1000");<br class=""> ndnHelper.SetDefaultRoutes(true);<br class=""> ndnHelper.Install(nodes);<br class=""><br class=""> // Set BestRoute strategy<br class=""> ndn::StrategyChoiceHelper::Install(nodes, "/", "/localhost/nfd/strategy/best-route");<br class=""> <br class=""> ndn::GlobalRoutingHelper ndnGlobalRoutingHelper;<br class=""> ndnGlobalRoutingHelper.InstallAll();<br class=""><br class=""> // 4. Set up applications<br class=""> NS_LOG_INFO("Installing Applications");<br class=""><br class=""> std::string prefix = "/prefix";<br class=""><br class=""> ndn::AppHelper consumerHelper("ns3::ndn::ConsumerCbr");<br class=""> consumerHelper.SetPrefix(prefix);<br class=""> consumerHelper.SetAttribute("Frequency", DoubleValue(100.0));<br class=""> consumerHelper.Install(nodes.Get(0));<br class=""> consumerHelper.Install(nodes.Get(1));<br class=""> //consumerHelper.Install(nodes.Get());<br class=""><br class=""> <br class="">/* consumerHelper.SetPrefix("/test/prefix1");<br class=""> consumerHelper.SetAttribute("Frequency", DoubleValue(10.0));<br class=""> consumerHelper.Install(nodes.Get(1));*/<br class=""> <br class=""><br class=""> ndn::AppHelper producerHelper("ns3::ndn::Producer");<br class=""> producerHelper.SetPrefix(prefix);<br class=""> producerHelper.SetAttribute("PayloadSize", StringValue("1200"));<br class=""> producerHelper.Install(nodes.Get(5));<br class=""> producerHelper.Install(nodes.Get(6));<br class=""> producerHelper.Install(nodes.Get(7));<br class=""><br class="">/*<br class=""> producerHelper.SetPrefix("/");<br class=""> producerHelper.SetAttribute("PayloadSize", StringValue("1200"));<br class=""> producerHelper.Install(nodes.Get(2));*/<br class=""> ////////////////<br class=""><br class=""> ndnGlobalRoutingHelper.AddOrigins(prefix, nodes.Get(7));<br class=""> ndnGlobalRoutingHelper.AddOrigins(prefix, nodes.Get(6));<br class=""> ndnGlobalRoutingHelper.AddOrigins(prefix, nodes.Get(5));<br class=""><br class=""> // Calculate and install FIBs<br class=""> ndn::GlobalRoutingHelper::CalculateRoutes();<br class=""><br class=""> wifiPhyHelper.EnablePcap ("ndn-simple-adhoc", wifiNetDevices);<br class=""><br class=""> Simulator::Stop(Seconds(30.0));<br class=""><br class=""> Simulator::Run();<br class=""> Simulator::Destroy();<br class=""><br class=""> return 0;<br class="">}<br class=""><br class="">} // namespace ns3<br class=""><br class="">int<br class="">main(int argc, char* argv[])<br class="">{<br class=""> return ns3::main(argc, argv);<br class="">}<br class=""></div></div></div></div></div></div></div>
_______________________________________________<br class="">ndnSIM mailing list<br class=""><a href="mailto:ndnSIM@lists.cs.ucla.edu" class="">ndnSIM@lists.cs.ucla.edu</a><br class="">http://www.lists.cs.ucla.edu/mailman/listinfo/ndnsim<br class=""></div></blockquote></div><br class=""></div></div></body></html>