[ndnSIM] Unexpected output for 3 nodes configuration using wifi

Otávio Augusto otavio.augusto.snc at gmail.com
Fri Jan 17 05:08:01 PST 2025


Hello.

The contents of the ndn_wifi_3_nodes.cc file seem to be unavailable. So,
here is the code:

#include "ns3/core-module.h"
#include "ns3/network-module.h"
#include "ns3/applications-module.h"
#include "ns3/wifi-module.h"
#include "ns3/mobility-module.h"
#include "ns3/internet-module.h"

#include "ns3/ndnSIM-module.h"

using namespace std;
namespace ns3 {

NS_LOG_COMPONENT_DEFINE("ndn.WifiExample1");

int
main(int argc, char* argv[])
{
  // disable fragmentation

Config::SetDefault("ns3::WifiRemoteStationManager::FragmentationThreshold",
StringValue("2200"));
  Config::SetDefault("ns3::WifiRemoteStationManager::RtsCtsThreshold",
StringValue("2200"));
  Config::SetDefault("ns3::WifiRemoteStationManager::NonUnicastMode",
                     StringValue("OfdmRate24Mbps"));

  CommandLine cmd;
  cmd.Parse(argc, argv);

  WifiHelper wifi;
  // wifi.SetRemoteStationManager ("ns3::AarfWifiManager");
  wifi.SetStandard(WIFI_STANDARD_80211a);
  wifi.SetRemoteStationManager("ns3::ConstantRateWifiManager", "DataMode",
                               StringValue("OfdmRate24Mbps"));

  YansWifiChannelHelper wifiChannel;

wifiChannel.SetPropagationDelay("ns3::ConstantSpeedPropagationDelayModel");

wifiChannel.AddPropagationLoss("ns3::ThreeLogDistancePropagationLossModel");
  wifiChannel.AddPropagationLoss("ns3::NakagamiPropagationLossModel");

  YansWifiPhyHelper wifiPhyHelper;
  wifiPhyHelper.SetChannel(wifiChannel.Create());
  wifiPhyHelper.Set("TxPowerStart", DoubleValue(5));
  wifiPhyHelper.Set("TxPowerEnd", DoubleValue(5));

  WifiMacHelper wifiMacHelper;
  wifiMacHelper.SetType("ns3::AdhocWifiMac");

  MobilityHelper mobility;

  NodeContainer nodes;
  nodes.Create(3);

  ////////////////
  // 1. Install Wifi
  NetDeviceContainer wifiNetDevices = wifi.Install(wifiPhyHelper,
wifiMacHelper, nodes);

  // 2. Install Mobility model
  mobility.Install(nodes);

  std::cout << "set position for nodes" << std::endl;

  Ptr<ConstantPositionMobilityModel> s1 =
nodes.Get(0)->GetObject<ConstantPositionMobilityModel> ();
  Ptr<ConstantPositionMobilityModel> s2 =
nodes.Get(1)->GetObject<ConstantPositionMobilityModel> ();
  Ptr<ConstantPositionMobilityModel> s3 =
nodes.Get(2)->GetObject<ConstantPositionMobilityModel> ();

  s1->SetPosition (Vector ( 10.0, 70.0, 0));
  s2->SetPosition (Vector ( 70.0, 70, 0));
  s3->SetPosition (Vector ( 120.0, 70.0, 0));

  // 3. Install NDN stack
  NS_LOG_INFO("Installing NDN stack");
  ndn::StackHelper ndnHelper;
  // ndnHelper.AddNetDeviceFaceCreateCallback (WifiNetDevice::GetTypeId (),
MakeCallback(MyNetDeviceFaceCallback));
  ndnHelper.setPolicy("nfd::cs::lru");
  ndnHelper.setCsSize(0);
  ndnHelper.SetDefaultRoutes(true);
  ndnHelper.Install(nodes);

  // Set strategy
  ndn::StrategyChoiceHelper::Install(nodes, "/",
"/localhost/nfd/strategy/multicast");

  // 4. Set up applications
  NS_LOG_INFO("Installing Applications");

  ndn::AppHelper consumerHelper("ns3::ndn::ConsumerCbr");
  consumerHelper.SetPrefix("/test/prefix");
  consumerHelper.SetAttribute("Frequency", DoubleValue(1.0));
  consumerHelper.Install(nodes.Get(0));

  ndn::AppHelper producerHelper("ns3::ndn::Producer");
  producerHelper.SetPrefix("/");
  producerHelper.SetAttribute("PayloadSize", StringValue("1200"));
  producerHelper.Install(nodes.Get(2));


  Simulator::Stop(Seconds(30.0));

  Simulator::Run();
  Simulator::Destroy();

  return 0;
}

} // namespace ns3

int
main(int argc, char* argv[])
{
  return ns3::main(argc, argv);
}


Att,
Otávio

Em qua., 15 de jan. de 2025 às 10:29, Otávio Augusto <
otavio.augusto.snc at gmail.com> escreveu:

> Hello everyone.
>
> I'm testing a multi-node with wifi connection in ndnSIM, the code is
> attached (ndn_wifi_3_nodes.cc). In addition, I'm using ndnSIM from Windows
> OS with WSL 2, Ubuntu 20.04  (I don't know if this is important).
>
> Using the following command I get some log information about the consumer:
>
>
> *NS_LOG=ndn.Consumer ./waf --run=ndn_wifi_3_nodes*
> The output is in the out.txt attachment.
> I expected the communication to go through the intermediary. However, as
> you can see, many messages timed out and the data packets that reached the
> consumer contain hop count equal to 1, which probably means that the
> consumer and producer are communicating directly, without using the
> intermediary node. Why did this happen?
>
> Note 1: in the 'ndn-simple-wifi' example the best-route strategy is used,
> but for me it resulted in NACK, I don't know why. Because of this, I used
> the multicast strategy.
> Note 2: How can I see the ndn route log (intermediate node, node 1)? I
> know how to check the consumer and producer logs, but I don't know what
> name I use to check the ndn router log with *NS_LOG*.
> --
> Otávio da Cruz
> Doctor student
> Electrical Engineering at the Graduate Program in Electrical Engineering
> of the Federal University of Rio Grande do Sul (UFRGS) - Brazil
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.lists.cs.ucla.edu/pipermail/ndnsim/attachments/20250117/0c24c689/attachment.htm>


More information about the ndnSIM mailing list