17 #include "ns3/core-module.h"
18 #include "ns3/network-module.h"
19 #include "ns3/wifi-module.h"
20 #include "ns3/mobility-module.h"
21 #include "ns3/mpi-interface.h"
22 #include "ns3/ipv4-global-routing-helper.h"
23 #include "ns3/udp-echo-helper.h"
24 #include "ns3/point-to-point-helper.h"
25 #include "ns3/csma-helper.h"
26 #include "ns3/internet-stack-helper.h"
27 #include "ns3/ipv4-address-helper.h"
28 #include "ns3/ipv4-interface-container.h"
55 main (
int argc,
char *argv[])
70 std::cout <<
"This simulation requires 2 and only 2 logical processors." << std::endl;
80 cmd.
AddValue (
"nCsma",
"Number of \"extra\" CSMA nodes/devices", nCsma);
81 cmd.
AddValue (
"nWifi",
"Number of wifi STA devices", nWifi);
82 cmd.
AddValue (
"verbose",
"Tell echo applications to log if true", verbose);
83 cmd.
AddValue (
"tracing",
"Enable pcap tracing", tracing);
84 cmd.
Parse (argc,argv);
89 if (nWifi > 250 || nCsma > 250)
91 std::cout <<
"Too many wifi or csma nodes, max 200 each." << std::endl;
102 Ptr<Node> p2pNode1 = CreateObject<Node> (0);
103 Ptr<Node> p2pNode2 = CreateObject<Node> (1);
104 p2pNodes.
Add (p2pNode1);
105 p2pNodes.
Add (p2pNode2);
112 p2pDevices = pointToPoint.
Install (p2pNodes);
115 csmaNodes.
Add (p2pNodes.
Get (1));
116 csmaNodes.
Create (nCsma, 1);
123 csmaDevices = csma.
Install (csmaNodes);
126 wifiStaNodes.
Create (nWifi, 0);
139 mac.
SetType (
"ns3::StaWifiMac",
144 staDevices = wifi.
Install (phy, mac, wifiStaNodes);
150 apDevices = wifi.
Install (phy, mac, wifiApNode);
164 mobility.
Install (wifiStaNodes);
176 address.
SetBase (
"10.1.1.0",
"255.255.255.0");
178 p2pInterfaces = address.
Assign (p2pDevices);
180 address.
SetBase (
"10.1.2.0",
"255.255.255.0");
182 csmaInterfaces = address.
Assign (csmaDevices);
184 address.
SetBase (
"10.1.3.0",
"255.255.255.0");
185 address.
Assign (staDevices);
186 address.
Assign (apDevices);
207 echoClient.SetAttribute (
"PacketSize",
UintegerValue (1024));
210 echoClient.Install (wifiStaNodes.
Get (nWifi - 1));
229 phy.
EnablePcap (
"third-distributed-rank0", apDevices.
Get (0));
230 csma.
EnablePcap (
"third-distributed-rank0", csmaDevices.
Get (0),
true);
235 phy.
EnablePcap (
"third-distributed-rank1", apDevices.
Get (0));
236 csma.
EnablePcap (
"third-distributed-rank1", csmaDevices.
Get (0),
true);
247 NS_FATAL_ERROR (
"Can't use distributed simulator without MPI compiled in");
Time NanoSeconds(uint64_t ns)
create ns3::Time instances in units of nanoseconds.
holds a vector of ns3::Application pointers.
void SetChannelAttribute(std::string n1, const AttributeValue &v1)
holds a vector of std::pair of Ptr<Ipv4> and interface index.
Ptr< YansWifiChannel > Create(void) const
void SetRemoteStationManager(std::string type, std::string n0="", const AttributeValue &v0=EmptyAttributeValue(), std::string n1="", const AttributeValue &v1=EmptyAttributeValue(), std::string n2="", const AttributeValue &v2=EmptyAttributeValue(), std::string n3="", const AttributeValue &v3=EmptyAttributeValue(), std::string n4="", const AttributeValue &v4=EmptyAttributeValue(), std::string n5="", const AttributeValue &v5=EmptyAttributeValue(), std::string n6="", const AttributeValue &v6=EmptyAttributeValue(), std::string n7="", const AttributeValue &v7=EmptyAttributeValue())
static void PopulateRoutingTables(void)
Build a routing database and initialize the routing tables of the nodes in the simulation. Makes all nodes in the simulation into routers.
hold variables of type string
Ptr< NetDevice > Get(uint32_t i) const
Get the Ptr<NetDevice> stored in this container at a given index.
Make it easy to create and manage PHY objects for the yans model.
static YansWifiChannelHelper Default(void)
NetDeviceContainer Install(NodeContainer c)
void SetType(std::string type, std::string n0="", const AttributeValue &v0=EmptyAttributeValue(), std::string n1="", const AttributeValue &v1=EmptyAttributeValue(), std::string n2="", const AttributeValue &v2=EmptyAttributeValue(), std::string n3="", const AttributeValue &v3=EmptyAttributeValue(), std::string n4="", const AttributeValue &v4=EmptyAttributeValue(), std::string n5="", const AttributeValue &v5=EmptyAttributeValue(), std::string n6="", const AttributeValue &v6=EmptyAttributeValue(), std::string n7="", const AttributeValue &v7=EmptyAttributeValue())
create an application which sends a udp packet and waits for an echo of this packet ...
#define NS_LOG_COMPONENT_DEFINE(name)
aggregate IP/TCP/UDP functionality to existing Nodes.
NetDeviceContainer Install(Ptr< Node > node) const
Build a set of PointToPointNetDevice objects.
static YansWifiPhyHelper Default(void)
void SetDeviceAttribute(std::string name, const AttributeValue &value)
helps to create WifiNetDevice objects
#define NS_FATAL_ERROR(msg)
fatal error handling
NetDeviceContainer Install(const WifiPhyHelper &phy, const WifiMacHelper &mac, NodeContainer c) const
hold objects of type ns3::Rectangle
void SetChannel(Ptr< YansWifiChannel > channel)
Create a server application which waits for input udp packets and sends them back to the original sen...
void Install(Ptr< Node > node) const
"Layout" a single node according to the current position allocator type.
void EnablePcapAll(std::string prefix, bool promiscuous=false)
Enable pcap output on each device (which is of the appropriate type) in the set of all nodes created ...
hold objects of type ns3::Time
static void Enable(int *pargc, char ***pargv)
Hold an unsigned integer type.
holds a vector of ns3::NetDevice pointers
static NqosWifiMacHelper Default(void)
static void Bind(std::string name, const AttributeValue &value)
void Start(Time start)
Arrange for all of the Applications in this container to Start() at the Time given as a parameter...
create non QoS-enabled MAC layers for a ns3::WifiNetDevice.
parse command-line argumentsInstances of this class can be used to parse command-line arguments: user...
static void Destroy(void)
keep track of a set of node pointers.
void SetMobilityModel(std::string type, std::string n1="", const AttributeValue &v1=EmptyAttributeValue(), std::string n2="", const AttributeValue &v2=EmptyAttributeValue(), std::string n3="", const AttributeValue &v3=EmptyAttributeValue(), std::string n4="", const AttributeValue &v4=EmptyAttributeValue(), std::string n5="", const AttributeValue &v5=EmptyAttributeValue(), std::string n6="", const AttributeValue &v6=EmptyAttributeValue(), std::string n7="", const AttributeValue &v7=EmptyAttributeValue(), std::string n8="", const AttributeValue &v8=EmptyAttributeValue(), std::string n9="", const AttributeValue &v9=EmptyAttributeValue())
void Install(std::string nodeName) const
manage and create wifi channel objects for the yans model.
build a set of CsmaNetDevice objects
void SetChannelAttribute(std::string name, const AttributeValue &value)
Helper class used to assign positions and mobility models to nodes.
void Stop(Time stop)
Arrange for all of the Applications in this container to Stop() at the Time given as a parameter...
Ipv4InterfaceContainer Assign(const NetDeviceContainer &c)
Assign IP addresses to the net devices specified in the container based on the current network prefix...
Time Seconds(double seconds)
create ns3::Time instances in units of seconds.
void Add(NodeContainer other)
Append the contents of another NodeContainer to the end of this container.
static uint32_t GetSystemId()
void AddValue(const std::string &name, const std::string &help, T &value)
Ptr< Node > Get(uint32_t i) const
Get the Ptr<Node> stored in this container at a given index.
hold objects of type ns3::Ssid
void Parse(int argc, char *argv[]) const
A helper class to make life easier while doing simple IPv4 address assignment in scripts.
void Create(uint32_t n)
Create n nodes and append pointers to them to the end of this NodeContainer.
void SetAttribute(std::string name, const AttributeValue &value)
void EnablePcap(std::string prefix, Ptr< NetDevice > nd, bool promiscuous=false, bool explicitFilename=false)
Enable pcap output the indicated net device.
void SetPositionAllocator(Ptr< PositionAllocator > allocator)
Hold an floating point type.
static uint32_t GetSize()
void SetBase(Ipv4Address network, Ipv4Mask mask, Ipv4Address base="0.0.0.1")
Set the base network number, network mask and base address.
void LogComponentEnable(char const *name, enum LogLevel level)
Ipv4Address GetAddress(uint32_t i, uint32_t j=0) const
static WifiHelper Default(void)