|
A Discrete-Event Network Simulator
|
API
|
Go to the documentation of this file.
104 #include "ns3/core-module.h"
105 #include "ns3/network-module.h"
106 #include "ns3/internet-module.h"
107 #include "ns3/mobility-module.h"
108 #include "ns3/aodv-module.h"
109 #include "ns3/olsr-module.h"
110 #include "ns3/dsdv-module.h"
111 #include "ns3/dsr-module.h"
112 #include "ns3/applications-module.h"
113 #include "ns3/itu-r-1411-los-propagation-loss-model.h"
114 #include "ns3/ocb-wifi-mac.h"
115 #include "ns3/wifi-80211p-helper.h"
116 #include "ns3/wave-mac-helper.h"
117 #include "ns3/flow-monitor-module.h"
118 #include "ns3/config-store-module.h"
119 #include "ns3/integer.h"
120 #include "ns3/wave-bsm-helper.h"
121 #include "ns3/wave-helper.h"
122 #include "ns3/yans-wifi-helper.h"
147 uint32_t GetRxBytes ();
153 uint32_t GetCumulativeRxBytes ();
159 uint32_t GetRxPkts ();
165 uint32_t GetCumulativeRxPkts ();
172 void IncRxBytes (uint32_t rxBytes);
183 void SetRxBytes (uint32_t rxBytes);
189 void SetRxPkts (uint32_t rxPkts);
195 uint32_t GetTxBytes ();
201 uint32_t GetCumulativeTxBytes ();
207 uint32_t GetTxPkts ();
213 uint32_t GetCumulativeTxPkts ();
219 void IncTxBytes (uint32_t txBytes);
230 void SetTxBytes (uint32_t txBytes);
236 void SetTxPkts (uint32_t txPkts);
251 m_cumulativeRxBytes (0),
253 m_cumulativeRxPkts (0),
255 m_cumulativeTxBytes (0),
257 m_cumulativeTxPkts (0)
483 .AddConstructor<RoutingHelper> ();
488 : m_TotalSimTime (300.01),
523 TypeId tid = TypeId::LookupByName (
"ns3::UdpSocketFactory");
555 olsr.PrintRoutingTableAllAt (rtt, rtw);
565 list.Add (aodv, 100);
573 list.Add (dsdv, 100);
610 addressAdhoc.
SetBase (
"10.1.0.0",
"255.255.0.0");
611 adhocTxInterfaces = addressAdhoc.
Assign (d);
626 for (uint32_t i = 0; i <
m_nSinks; i++)
651 static inline std::string
654 std::ostringstream oss;
658 if (InetSocketAddress::IsMatchingType (srcAddress))
661 oss <<
" received one packet from " << addr.
GetIpv4 ();
665 oss <<
" received one packet!";
675 while ((packet = socket->
RecvFrom (srcAddress)))
678 uint32_t RxRoutingBytes = packet->
GetSize ();
691 uint32_t pktBytes = packet->
GetSize ();
774 .AddConstructor<WifiPhyStats> ();
839 void Simulate (
int argc,
char **argv);
1002 void LoadConfig (std::string configFilename);
1008 void SaveConfig (std::string configFilename);
1031 if (configFilename.compare (
"") != 0)
1261 m_CSVfileName (
"vanet-routing.output.csv"),
1262 m_CSVfileName2 (
"vanet-routing.output2.csv"),
1264 m_protocolName (
"protocol"),
1266 m_traceMobility (false),
1272 m_lossModelName (
""),
1273 m_phyMode (
"OfdmRate6MbpsBW10MHz"),
1277 m_logFile (
"low99-ct-unterstrass-1day.filt.7.adj.log"),
1280 m_TotalSimTime (300.01),
1282 m_phyModeB (
"DsssRate11Mbps"),
1283 m_trName (
"vanet-routing-compare"),
1286 m_wavePacketSize (200),
1287 m_waveInterval (0.1),
1290 m_gpsAccuracyNs (40),
1291 m_txMaxDelayMs (10),
1292 m_routingTables (0),
1295 m_loadConfigFilename (
"load-config.txt"),
1296 m_saveConfigFilename (
""),
1300 m_txSafetyRange1 (50.0),
1301 m_txSafetyRange2 (100.0),
1302 m_txSafetyRange3 (150.0),
1303 m_txSafetyRange4 (200.0),
1304 m_txSafetyRange5 (250.0),
1305 m_txSafetyRange6 (300.0),
1306 m_txSafetyRange7 (350.0),
1307 m_txSafetyRange8 (400.0),
1308 m_txSafetyRange9 (450.0),
1309 m_txSafetyRange10 (500.0),
1310 m_txSafetyRanges (),
1312 m_cumulativeBsmCaptureStart (0)
1334 ns3::MakeUintegerChecker<uint32_t> ());
1338 "Number of sink nodes for routing non-BSM traffic",
1340 ns3::MakeUintegerChecker<uint32_t> ());
1344 "Trace mobility 1=yes;0=no",
1346 ns3::MakeUintegerChecker<uint32_t> ());
1352 ns3::MakeUintegerChecker<uint32_t> ());
1356 "Propagation Loss Model",
1358 ns3::MakeUintegerChecker<uint32_t> ());
1362 "Fast Fading Model",
1364 ns3::MakeUintegerChecker<uint32_t> ());
1368 "802.11 mode (0=802.11a;1=802.11p)",
1370 ns3::MakeUintegerChecker<uint32_t> ());
1374 "Mobility mode 0=random waypoint;1=mobility trace file",
1376 ns3::MakeUintegerChecker<uint32_t> ());
1380 "Number of nodes (vehicles)",
1382 ns3::MakeUintegerChecker<uint32_t> ());
1386 "Node speed (m/s) for RWP model",
1388 ns3::MakeUintegerChecker<uint32_t> ());
1392 "Node pause time (s) for RWP model",
1394 ns3::MakeUintegerChecker<uint32_t> ());
1398 "Size in bytes of WAVE BSM",
1400 ns3::MakeUintegerChecker<uint32_t> ());
1404 "Verbose 0=no;1=yes",
1406 ns3::MakeUintegerChecker<uint32_t> ());
1412 ns3::MakeUintegerChecker<uint32_t> ());
1416 "Dump routing tables at t=5 seconds 0=no;1=yes",
1418 ns3::MakeUintegerChecker<uint32_t> ());
1422 "Dump ASCII trace 0=no;1=yes",
1424 ns3::MakeUintegerChecker<uint32_t> ());
1428 "Generate PCAP files 0=no;1=yes",
1430 ns3::MakeUintegerChecker<uint32_t> ());
1434 "Simulation start time for capturing cumulative BSM",
1440 "BSM range for PDR inclusion",
1442 ns3::MakeDoubleChecker<double> ());
1446 "BSM range for PDR inclusion",
1448 ns3::MakeDoubleChecker<double> ());
1452 "BSM range for PDR inclusion",
1454 ns3::MakeDoubleChecker<double> ());
1458 "BSM range for PDR inclusion",
1460 ns3::MakeDoubleChecker<double> ());
1464 "BSM range for PDR inclusion",
1466 ns3::MakeDoubleChecker<double> ());
1470 "BSM range for PDR inclusion",
1472 ns3::MakeDoubleChecker<double> ());
1476 "BSM range for PDR inclusion",
1478 ns3::MakeDoubleChecker<double> ());
1482 "BSM range for PDR inclusion",
1484 ns3::MakeDoubleChecker<double> ());
1488 "BSM range for PDR inclusion",
1490 ns3::MakeDoubleChecker<double> ());
1494 "BSM range for PDR inclusion",
1496 ns3::MakeDoubleChecker<double> ());
1500 "Transmission power dBm",
1502 ns3::MakeDoubleChecker<double> ());
1506 "Total simulation time (s)",
1508 ns3::MakeDoubleChecker<double> ());
1512 "Interval (s) between WAVE BSMs",
1514 ns3::MakeDoubleChecker<double> ());
1518 "GPS sync accuracy (ns)",
1520 ns3::MakeDoubleChecker<double> ());
1524 "Tx May Delay (ms)",
1526 ns3::MakeDoubleChecker<double> ());
1530 "CSV filename (for time series data)",
1536 "CSV filename 2 (for overall simulation scenario results)",
1542 "PHY mode (802.11p)",
1548 "Mobility trace filename",
1549 ns3::StringValue (
"./src/wave/examples/low99-ct-unterstrass-1day.filt.7.adj.mob"),
1566 "PHY mode (802.11a)",
1666 std::ostringstream oss;
1668 oss <<
"/NodeList/*/ApplicationList/*/$ns3::OnOffApplication/Tx";
1704 double averageRoutingGoodputKbps = 0.0;
1706 averageRoutingGoodputKbps = (((double) totalBytesTotal * 8.0) /
m_TotalSimTime) / 1000.0;
1712 uint32_t totalAppBytes = cumulativeWaveBsmBytes + cumulativeRoutingBytes;
1715 double mac_phy_oh = 0.0;
1716 if (totalPhyBytes > 0)
1718 mac_phy_oh = (double) (totalPhyBytes - totalAppBytes) / (double) totalPhyBytes;
1723 NS_LOG_UNCOND (
"BSM_PDR1=" << bsm_pdr1 <<
" BSM_PDR2=" << bsm_pdr2 <<
" BSM_PDR3=" << bsm_pdr3 <<
" BSM_PDR4=" << bsm_pdr4 <<
" BSM_PDR5=" << bsm_pdr5 <<
" BSM_PDR6=" << bsm_pdr6 <<
" BSM_PDR7=" << bsm_pdr7 <<
" BSM_PDR8=" << bsm_pdr8 <<
" BSM_PDR9=" << bsm_pdr9 <<
" BSM_PDR10=" << bsm_pdr10 <<
" Goodput=" << averageRoutingGoodputKbps <<
"Kbps MAC/PHY-oh=" << mac_phy_oh);
1729 out << bsm_pdr1 <<
","
1739 << averageRoutingGoodputKbps <<
","
1757 Simulator::Destroy ();
1765 Vector pos =
mobility->GetPosition ();
1766 Vector vel =
mobility->GetVelocity ();
1774 WaveBsmHelper::GetNodesMoving ()[nodeId] = 1;
1780 *os <<
Simulator::Now () <<
" POS: x=" << pos.x <<
", y=" << pos.y
1781 <<
", z=" << pos.z <<
"; VEL:" << vel.x <<
", y=" << vel.y
1782 <<
", z=" << vel.z << std::endl;
1790 double kbps = (bytesTotal * 8.0) / 1000;
1791 double wavePDR = 0.0;
1794 if (wavePktsSent > 0)
1797 wavePDR = (double) wavePktsReceived / (
double) wavePktsSent;
1817 uint32_t totalAppBytes = cumulativeWaveBsmBytes + cumulativeRoutingBytes;
1820 double mac_phy_oh = 0.0;
1821 if (totalPhyBytes > 0)
1823 mac_phy_oh = (double) (totalPhyBytes - totalAppBytes) / (double) totalPhyBytes;
1830 NS_LOG_UNCOND (
"At t=" << (
Simulator::Now ()).As (Time::S) <<
" BSM_PDR1=" << wavePDR1_2 <<
" BSM_PDR1=" << wavePDR2_2 <<
" BSM_PDR3=" << wavePDR3_2 <<
" BSM_PDR4=" << wavePDR4_2 <<
" BSM_PDR5=" << wavePDR5_2 <<
" BSM_PDR6=" << wavePDR6_2 <<
" BSM_PDR7=" << wavePDR7_2 <<
" BSM_PDR8=" << wavePDR8_2 <<
" BSM_PDR9=" << wavePDR9_2 <<
" BSM_PDR10=" << wavePDR10_2 <<
" Goodput=" << kbps <<
"Kbps" );
1839 << wavePktsSent <<
","
1840 << wavePktsReceived <<
","
1842 << waveExpectedRxPktCount <<
","
1843 << waveRxPktInRangeCount <<
","
1844 << wavePDR1_2 <<
","
1845 << wavePDR2_2 <<
","
1846 << wavePDR3_2 <<
","
1847 << wavePDR4_2 <<
","
1848 << wavePDR5_2 <<
","
1849 << wavePDR6_2 <<
","
1850 << wavePDR7_2 <<
","
1851 << wavePDR8_2 <<
","
1852 << wavePDR9_2 <<
","
1853 << wavePDR10_2 <<
","
1863 for (
int index = 1; index <= 10; index++)
1872 for (
int index = 1; index <= 10; index++)
1895 GlobalValue::GetValueByName (
"VRCport", uintegerValue);
1897 GlobalValue::GetValueByName (
"VRCnSinks", uintegerValue);
1899 GlobalValue::GetValueByName (
"VRCtraceMobility", uintegerValue);
1901 GlobalValue::GetValueByName (
"VRCprotocol", uintegerValue);
1903 GlobalValue::GetValueByName (
"VRClossModel", uintegerValue);
1905 GlobalValue::GetValueByName (
"VRCfading", uintegerValue);
1907 GlobalValue::GetValueByName (
"VRC80211mode", uintegerValue);
1909 GlobalValue::GetValueByName (
"VRCmobility", uintegerValue);
1911 GlobalValue::GetValueByName (
"VRCnNodes", uintegerValue);
1913 GlobalValue::GetValueByName (
"VRCnodeSpeed", uintegerValue);
1915 GlobalValue::GetValueByName (
"VRCnodePause", uintegerValue);
1917 GlobalValue::GetValueByName (
"VRCwavePacketSize", uintegerValue);
1919 GlobalValue::GetValueByName (
"VRCverbose", uintegerValue);
1921 GlobalValue::GetValueByName (
"VRCscenario", uintegerValue);
1923 GlobalValue::GetValueByName (
"VRCroutingTables", uintegerValue);
1925 GlobalValue::GetValueByName (
"VRCasciiTrace", uintegerValue);
1927 GlobalValue::GetValueByName (
"VRCpcap", uintegerValue);
1929 GlobalValue::GetValueByName (
"VRCcumulativeBsmCaptureStart", timeValue);
1933 GlobalValue::GetValueByName (
"VRCtxSafetyRange1", doubleValue);
1935 GlobalValue::GetValueByName (
"VRCtxSafetyRange2", doubleValue);
1937 GlobalValue::GetValueByName (
"VRCtxSafetyRange3", doubleValue);
1939 GlobalValue::GetValueByName (
"VRCtxSafetyRange4", doubleValue);
1941 GlobalValue::GetValueByName (
"VRCtxSafetyRange5", doubleValue);
1943 GlobalValue::GetValueByName (
"VRCtxSafetyRange6", doubleValue);
1945 GlobalValue::GetValueByName (
"VRCtxSafetyRange7", doubleValue);
1947 GlobalValue::GetValueByName (
"VRCtxSafetyRange8", doubleValue);
1949 GlobalValue::GetValueByName (
"VRCtxSafetyRange9", doubleValue);
1951 GlobalValue::GetValueByName (
"VRCtxSafetyRange10", doubleValue);
1953 GlobalValue::GetValueByName (
"VRCtxp", doubleValue);
1955 GlobalValue::GetValueByName (
"VRCtotalTime", doubleValue);
1957 GlobalValue::GetValueByName (
"VRCwaveInterval", doubleValue);
1959 GlobalValue::GetValueByName (
"VRCgpsAccuracyNs", doubleValue);
1961 GlobalValue::GetValueByName (
"VRCtxMaxDelayMs", doubleValue);
1964 GlobalValue::GetValueByName (
"VRCCSVfileName", stringValue);
1966 GlobalValue::GetValueByName (
"VRCCSVfileName2", stringValue);
1968 GlobalValue::GetValueByName (
"VRCphyMode", stringValue);
1970 GlobalValue::GetValueByName (
"VRCtraceFile", stringValue);
1972 GlobalValue::GetValueByName (
"VRClogFile", stringValue);
1974 GlobalValue::GetValueByName (
"VRCrate", stringValue);
1976 GlobalValue::GetValueByName (
"VRCphyModeB", stringValue);
1978 GlobalValue::GetValueByName (
"VRCtrName", stringValue);
2033 GlobalValue::GetValueByName (
"VRCtrName", stringValue);
2041 double txDist1 = 50.0;
2042 double txDist2 = 100.0;
2043 double txDist3 = 150.0;
2044 double txDist4 = 200.0;
2045 double txDist5 = 250.0;
2046 double txDist6 = 300.0;
2047 double txDist7 = 350.0;
2048 double txDist8 = 350.0;
2049 double txDist9 = 350.0;
2050 double txDist10 = 350.0;
2053 cmd.AddValue (
"CSVfileName",
"The name of the CSV output file name",
m_CSVfileName);
2054 cmd.AddValue (
"CSVfileName2",
"The name of the CSV output file name2",
m_CSVfileName2);
2056 cmd.AddValue (
"nodes",
"Number of nodes (i.e. vehicles)",
m_nNodes);
2057 cmd.AddValue (
"sinks",
"Number of routing sinks",
m_nSinks);
2058 cmd.AddValue (
"txp",
"Transmit power (dB), e.g. txp=7.5",
m_txp);
2060 cmd.AddValue (
"protocol",
"1=OLSR;2=AODV;3=DSDV;4=DSR",
m_protocol);
2061 cmd.AddValue (
"lossModel",
"1=Friis;2=ItuR1411Los;3=TwoRayGround;4=LogDistance",
m_lossModel);
2062 cmd.AddValue (
"fading",
"0=None;1=Nakagami;(buildings=1 overrides)",
m_fading);
2064 cmd.AddValue (
"80211Mode",
"1=802.11p; 2=802.11b; 3=WAVE-PHY",
m_80211mode);
2065 cmd.AddValue (
"traceFile",
"Ns2 movement trace file",
m_traceFile);
2072 cmd.AddValue (
"verbose",
"0=quiet;1=verbose",
m_verbose);
2075 cmd.AddValue (
"scenario",
"1=synthetic, 2=playback-trace",
m_scenario);
2079 cmd.AddValue (
"txdist1",
"Expected BSM tx range, m", txDist1);
2080 cmd.AddValue (
"txdist2",
"Expected BSM tx range, m", txDist2);
2081 cmd.AddValue (
"txdist3",
"Expected BSM tx range, m", txDist3);
2082 cmd.AddValue (
"txdist4",
"Expected BSM tx range, m", txDist4);
2083 cmd.AddValue (
"txdist5",
"Expected BSM tx range, m", txDist5);
2084 cmd.AddValue (
"txdist6",
"Expected BSM tx range, m", txDist6);
2085 cmd.AddValue (
"txdist7",
"Expected BSM tx range, m", txDist7);
2086 cmd.AddValue (
"txdist8",
"Expected BSM tx range, m", txDist8);
2087 cmd.AddValue (
"txdist9",
"Expected BSM tx range, m", txDist9);
2088 cmd.AddValue (
"txdist10",
"Expected BSM tx range, m", txDist10);
2091 cmd.AddValue (
"routingTables",
"Dump routing tables at t=5 seconds",
m_routingTables);
2093 cmd.AddValue (
"pcap",
"Create PCAP files for all nodes",
m_pcap);
2096 cmd.AddValue (
"exp",
"Experiment",
m_exp);
2098 cmd.Parse (argc, argv);
2117 cmd.Parse (argc, argv);
2144 Packet::EnablePrinting ();
2173 WaveBsmHelper::GetNodesMoving ().resize (
m_nNodes, 0);
2180 pos.
SetTypeId (
"ns3::RandomBoxPositionAllocator");
2181 pos.
Set (
"X",
StringValue (
"ns3::UniformRandomVariable[Min=0.0|Max=1500.0]"));
2182 pos.
Set (
"Y",
StringValue (
"ns3::UniformRandomVariable[Min=0.0|Max=300.0]"));
2184 pos.
Set (
"Z",
StringValue (
"ns3::UniformRandomVariable[Min=1.0|Max=2.0]"));
2189 std::stringstream ssSpeed;
2190 ssSpeed <<
"ns3::UniformRandomVariable[Min=0.0|Max=" <<
m_nodeSpeed <<
"]";
2191 std::stringstream ssPause;
2192 ssPause <<
"ns3::ConstantRandomVariable[Constant=" <<
m_nodePause <<
"]";
2202 WaveBsmHelper::GetNodesMoving ().resize (
m_nNodes, 1);
2233 NS_LOG_ERROR (
"Invalid propagation loss model specified. Values must be [1-4], where 1=Friis;2=ItuR1411Los;3=TwoRayGround;4=LogDistance");
2285 WaveHelper waveHelper = WaveHelper::Default ();
2299 wifi.SetRemoteStationManager (
"ns3::ConstantRateWifiManager",
2321 wifiMac.
SetType (
"ns3::AdhocWifiMac");
2358 int chAccessMode = 0;
2423 m_traceFile =
"src/wave/examples/low99-ct-unterstrass-1day.filt.7.adj.mob";
2424 m_logFile =
"low99-ct-unterstrass-1day.filt.7.adj.log";
2440 out <<
"SimulationSecond," <<
2442 "PacketsReceived," <<
2444 "RoutingProtocol," <<
2445 "TransmissionPower," <<
2447 "WavePtksReceived," <<
2449 "ExpectedWavePktsReceived," <<
2450 "ExpectedWavePktsInCoverageReceived," <<
2476 <<
"AverageRoutingGoodputKbps,"
2483 main (
int argc,
char *argv[])
holds a vector of ns3::NetDevice pointers
helps to create wifi 802.11p objects of WifiNetDevice class
static ns3::GlobalValue g_wavePacketSize("VRCwavePacketSize", "Size in bytes of WAVE BSM", ns3::UintegerValue(200), ns3::MakeUintegerChecker< uint32_t >())
Size in bytes of WAVE BSM.
a unique identifier for an interface.
static TypeId GetTypeId(void)
Get class TypeId.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
uint32_t m_nSinks
number of sinks
std::string m_phyModeB
phy mode
RoutingStats routingStats
routing statistics
static void PrintRoutingTableAllAt(Time printTime, Ptr< OutputStreamWrapper > stream, Time::Unit unit=Time::S)
prints the routing tables of all nodes at a particular time.
void SetupLogFile()
Set up log file.
Make it easy to create and manage PHY objects for the YANS model.
Hold a so-called 'global value'.
Parse command-line arguments.
void SaveConfig(std::string configFilename)
Saves a configuration to a given named config-store raw text configuration file.
uint32_t GetRxBytes()
Returns the number of bytes received.
void EnableAsciiAll(std::string prefix)
Enable ascii trace output on each device (which is of the appropriate type) in the set of all nodes c...
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
RoutingHelper()
Constructor.
void SetGlobalsFromConfig()
Set up the global variables from the configuration parameters.
void SetPropagationDelay(std::string name, 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())
Ptr< const AttributeChecker > MakeTimeChecker(const Time min, const Time max)
Helper to make a Time checker with bounded range.
uint32_t m_TxBytes
transmit bytes
uint32_t m_cumulativeTxBytes
cumulative transmit bytes
int m_asciiTrace
ascii trace
std::vector< double > m_txSafetyRanges
list of ranges
Ptr< RoutingHelper > m_routingHelper
routing helper
static ns3::GlobalValue g_80211mode("VRC80211mode", "802.11 mode (0=802.11a;1=802.11p)", ns3::UintegerValue(1), ns3::MakeUintegerChecker< uint32_t >())
802.11 mode (0=802.11a;1=802.11p)
uint32_t GetSize(void) const
Returns the the size in bytes of the packet (including the zero-filled initial payload).
void IncRxBytes(uint32_t rxBytes)
Increments the number of (application-data) bytes received, not including MAC/PHY overhead.
uint32_t GetId(void) const
void SetupRoutingMessages(NodeContainer &c, Ipv4InterfaceContainer &adhocTxInterfaces)
Sets up routing messages on the nodes and their interfaces.
uint32_t m_mobility
mobility
void CommandSetup(int argc, char **argv)
Run the simulation.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
void Stop(Time stop)
Arrange for all of the Applications in this container to Stop() at the Time given as a parameter.
Helper class that adds AODV routing to nodes.
void SetLogging(int log)
Enable/disable logging.
Helper class that adds ns3::Ipv4ListRouting objects.
static ns3::GlobalValue g_protocol("VRCprotocol", "Routing protocol", ns3::UintegerValue(2), ns3::MakeUintegerChecker< uint32_t >())
Routing protocol.
void SetupWaveMessages()
Set up generation of IEEE 1609 WAVE messages, as a Basic Safety Message (BSM).
helps to create WifiNetDevice objects
A helper class to make life easier while doing simple IPv4 address assignment in scripts.
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(Ptr< Node > node) const
"Layout" a single node according to the current position allocator type.
uint32_t GetTxPkts()
Returns the number of packets transmitted.
static ns3::GlobalValue g_phyModeB("VRCphyModeB", "PHY mode (802.11a)", ns3::StringValue("DsssRate11Mbps"), ns3::MakeStringChecker())
PHY mode (802.11a)
virtual void ProcessOutputs()
Process outputs.
virtual void ConfigureNodes()
Configure nodes.
std::string m_loadConfigFilename
load config file name
static void EnableLogComponents(void)
Helper to enable all WifiNetDevice log components with one statement.
static ns3::GlobalValue g_txSafetyRange9("VRCtxSafetyRange9", "BSM range for PDR inclusion", ns3::DoubleValue(450.0), ns3::MakeDoubleChecker< double >())
BSM range for PDR inclusion.
virtual void ConfigureNodes()
Configure nodes.
virtual Ptr< Node > GetNode(void) const =0
Return the node this socket is associated with.
static void EnableLogComponents(void)
Helper to enable all WaveNetDevice log components with one statement.
Helper class that adds DSDV routing to nodes.
std::ofstream m_os
output stream
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 ...
Ptr< T > GetObject(void) const
Get a pointer to the requested aggregated Object.
static ns3::GlobalValue g_waveInterval("VRCwaveInterval", "Interval (s) between WAVE BSMs", ns3::DoubleValue(0.1), ns3::MakeDoubleChecker< double >())
Interval (s) between WAVE BSMs.
Nqos Wave Mac Helper class.
AttributeValue implementation for Address.
RoutingStats()
Constructor.
static ns3::GlobalValue g_nNodes("VRCnNodes", "Number of nodes (vehicles)", ns3::UintegerValue(156), ns3::MakeUintegerChecker< uint32_t >())
Number of nodes (vehicles)
WaveBsmHelper m_waveBsmHelper
helper
void SetupAdhocDevices()
Set up the adhoc devices.
Time m_cumulativeBsmCaptureStart
capture start
virtual void ConfigureTracing()
Configure tracing.
static ns3::GlobalValue g_CSVfileName2("VRCCSVfileName2", "CSV filename 2 (for overall simulation scenario results)", ns3::StringValue("vanet-routing.output2.csv"), ns3::MakeStringChecker())
CSV filename 2 (for overall simulation scenario results)
NodeContainer m_adhocTxNodes
adhoc transmit nodes
void ConfigureDefaults()
Configure default attributes.
void LogComponentEnable(char const *name, enum LogLevel level)
Enable the logging output associated with that log component.
double m_TotalSimTime
seconds
virtual void SetDefaultAttributeValues()
Sets default attribute values.
void AddPropagationLoss(std::string name, 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())
Ipv4 addresses are stored in host order in this class.
static ns3::GlobalValue g_mobility("VRCmobility", "Mobility mode 0=random waypoint;1=mobility trace file", ns3::UintegerValue(1), ns3::MakeUintegerChecker< uint32_t >())
Mobility mode 0=random waypoint;1=mobility trace file.
static ns3::GlobalValue g_scenario("VRCscenario", "Scenario", ns3::UintegerValue(1), ns3::MakeUintegerChecker< uint32_t >())
Scenario.
void SetTxBytes(uint32_t txBytes)
Sets the number of bytes transmitted.
Hold objects of type Ptr<T>.
WifiPhyStats()
Constructor.
void SetConfigFromGlobals()
Set up configuration parameter from the global variables.
uint32_t m_RxBytes
reeive bytes
static ns3::GlobalValue g_nodeSpeed("VRCnodeSpeed", "Node speed (m/s) for RWP model", ns3::UintegerValue(20), ns3::MakeUintegerChecker< uint32_t >())
Node speed (m/s) for RWP model.
static ns3::GlobalValue g_cumulativeBsmCaptureStart("VRCcumulativeBsmCaptureStart", "Simulation start time for capturing cumulative BSM", ns3::TimeValue(Seconds(0)), ns3::MakeTimeChecker())
Simulation start time for capturing cumulative BSM.
TimeWithUnit As(const enum Unit unit=Time::AUTO) const
Attach a unit to a Time, to facilitate output in a specific unit.
uint32_t m_cumulativeRxPkts
cumulative receive packets
static ns3::GlobalValue g_trName("VRCtrName", "Trace name", ns3::StringValue("vanet-routing-compare"), ns3::MakeStringChecker())
Trace name)
void OnOffTrace(std::string context, Ptr< const Packet > packet)
Trace the receipt of an on-off-application generated packet.
void Install(DsrHelper &dsrHelper, NodeContainer nodes)
Install routing to the nodes.
virtual void RunSimulation()
Run the simulation.
helps to create WaveNetDevice objects
void SetChannel(Ptr< YansWifiChannel > channel)
virtual void SetDefaultAttributeValues()
Sets default attribute values.
uint32_t GetCumulativeTxPkts()
Returns the cumulative number of packets transmitted.
uint32_t m_phyTxBytes
phy transmit bytes
TypeId SetParent(TypeId tid)
Set the parent TypeId.
The ConfigStoreHelper class simplifies config-store raw text load and save.
double m_txSafetyRange6
range 6
This class can be used to hold variables of floating point type such as 'double' or 'float'.
void Create(uint32_t n)
Create n nodes and append pointers to them to the end of this NodeContainer.
void Install(NodeContainer &c, NetDeviceContainer &d, Ipv4InterfaceContainer &i, double totalTime, int protocol, uint32_t nSinks, int routingTables)
Installs routing functionality on nodes and their devices and interfaces.
virtual ~WifiPhyStats()
Destructor.
uint32_t m_80211mode
80211 mode
uint32_t m_wavePacketSize
bytes
uint32_t m_cumulativeRxBytes
cumulative receive bytes
static ns3::GlobalValue g_traceMobility("VRCtraceMobility", "Trace mobility 1=yes;0=no", ns3::UintegerValue(0), ns3::MakeUintegerChecker< uint32_t >())
Trace mobility 1=yes;0=no.
double m_txSafetyRange3
range 3
virtual NetDeviceContainer Install(const WifiPhyHelper &phy, const WifiMacHelper &macHelper, NodeContainer c) const
void SetBase(Ipv4Address network, Ipv4Mask mask, Ipv4Address base="0.0.0.1")
Set the base network number, network mask and base address.
double m_txSafetyRange8
range 8
static ns3::GlobalValue g_txSafetyRange7("VRCtxSafetyRange7", "BSM range for PDR inclusion", ns3::DoubleValue(350.0), ns3::MakeDoubleChecker< double >())
BSM range for PDR inclusion.
#define NS_FATAL_ERROR(msg)
Report a fatal error with a message and terminate.
double m_txSafetyRange2
range 2
void SetRxBytes(uint32_t rxBytes)
Sets the number of bytes received.
void IncRxPkts()
Increments the count of packets received.
std::string m_saveConfigFilename
save configi file name
uint32_t GetRxPkts()
Returns the count of packets received.
WifiPhyRxfailureReason
Enumeration of the possible reception failure reasons.
virtual void ParseCommandLineArguments(int argc, char **argv)
Process command line arguments.
uint32_t m_scenario
scenario
NetDeviceContainer m_adhocTxDevices
adhoc transmit devices
Ptr< YansWifiChannel > Create(void) const
Qos Wave Mac Helper class.
void experiment(std::string queue_disc_type)
double m_TotalSimTime
total sim time
Helper class that adds OLSR routing to nodes.
bool m_traceMobility
trace mobility
represent a single transmission mode
Time Now(void)
create an ns3::Time instance which contains the current simulation time.
void SetPositionAllocator(Ptr< PositionAllocator > allocator)
Set the position allocator which will be used to allocate the initial position of every node initiali...
double m_txSafetyRange5
range 5
virtual void ConfigureDevices()
Configure devices.
a polymophic address class
virtual void ConfigureApplications()
Configure applications.
std::string m_CSVfileName2
CSV file name.
uint32_t m_cumulativeTxPkts
cumulative transmit packets
A base class which provides memory management and object aggregation.
static ns3::GlobalValue g_rate("VRCrate", "Data rate", ns3::StringValue("2048bps"), ns3::MakeStringChecker())
Data rate.
static ns3::GlobalValue g_port("VRCport", "Port", ns3::UintegerValue(9), ns3::MakeUintegerChecker< uint32_t >())
Port.
virtual void ConfigureDevices()
Configure devices.
double m_waveInterval
seconds
void Install(std::string nodeName) const
Aggregate implementations of the ns3::Ipv4, ns3::Ipv6, ns3::Udp, and ns3::Tcp classes onto the provid...
A helper to make it easier to instantiate an ns3::OnOffApplication on a set of nodes.
std::string m_protocolName
protocol name
#define NS_LOG_INFO(msg)
Use NS_LOG to output a message of level LOG_INFO.
Ptr< OutputStreamWrapper > CreateFileStream(std::string filename, std::ios::openmode filemode=std::ios::out)
Create and initialize an output stream object we'll use to write the traced bits.
The RoutingStats class manages collects statistics on routing data (application-data packet and byte ...
virtual Ptr< Packet > RecvFrom(uint32_t maxSize, uint32_t flags, Address &fromAddress)=0
Read a single packet from the socket and retrieve the sender address.
Ipv4Address GetIpv4(void) const
void ReceiveRoutingPacket(Ptr< Socket > socket)
Process a received routing packet.
std::map< Mac48Address, uint64_t > packetsReceived
Map that stores the total packets received per STA (and addressed to that STA)
Time MilliSeconds(uint64_t value)
Construct a Time in the indicated unit.
Ptr< WifiPhyStats > m_wifiPhyStats
wifi phy statistics
uint32_t m_nSinks
number of sink nodes (< all nodes)
Instantiate subclasses of ns3::Object.
uint32_t GetTxBytes()
Returns the number of bytes transmitted.
Introspection did not find any typical Config paths.
double m_txMaxDelayMs
transmit maximum delay
static ns3::GlobalValue g_txSafetyRange4("VRCtxSafetyRange4", "BSM range for PDR inclusion", ns3::DoubleValue(200.0), ns3::MakeDoubleChecker< double >())
BSM range for PDR inclusion.
void PhyRxDrop(std::string context, Ptr< const Packet > packet, WifiPhyRxfailureReason reason)
Callback signiture for Phy/RxDrop.
holds a vector of std::pair of Ptr<Ipv4> and interface index.
void SetupLogging()
Set up logging.
Ptr< Node > Get(uint32_t i) const
Get the Ptr<Node> stored in this container at a given index.
void SetupScenario()
Set up a prescribed scenario.
static ns3::GlobalValue g_logFile("VRClogFile", "Log filename", ns3::StringValue("low99-ct-unterstrass-1day.filt.7.adj.log"), ns3::MakeStringChecker())
Log filename.
void IncTxBytes(uint32_t txBytes)
Increment the number of bytes transmitted.
Simulation virtual time values and global simulation resolution.
void Simulate(int argc, char **argv)
Enacts simulation of an ns-3 wifi application.
std::string Get(void) const
void SetAttribute(std::string name, const AttributeValue &value)
Helper function used to set the underlying application attributes.
uint32_t GetCumulativeTxBytes()
Returns the cumulative number of bytes transmitted.
To trace WaveNetDevice, we have to overwrite the trace functions of class YansWifiPhyHelper.
static ns3::GlobalValue g_gpsAccuracyNs("VRCgpsAccuracyNs", "GPS sync accuracy (ns)", ns3::DoubleValue(40), ns3::MakeDoubleChecker< double >())
GPS sync accuracy (ns)
void PhyTxTrace(std::string context, Ptr< const Packet > packet, WifiMode mode, WifiPreamble preamble, uint8_t txPower)
Callback signiture for Phy/Tx trace.
#define NS_LOG_UNCOND(msg)
Output the requested message unconditionally.
void ConfigureDefaults(void)
Configure the default values.
uint32_t m_protocol
protocol
static ns3::GlobalValue g_asciiTrace("VRCasciiTrace", "Dump ASCII trace 0=no;1=yes", ns3::UintegerValue(0), ns3::MakeUintegerChecker< uint32_t >())
Dump ASCII trace 0=no;1=yes.
static ns3::GlobalValue g_txSafetyRange6("VRCtxSafetyRange6", "BSM range for PDR inclusion", ns3::DoubleValue(300.0), ns3::MakeDoubleChecker< double >())
BSM range for PDR inclusion.
uint32_t m_phyTxPkts
phy transmit packets
The WaveBsmHelper class manages IEEE 1609 WAVE (Wireless Access in Vehicular Environments) Basic Safe...
static ns3::GlobalValue g_pcap("VRCpcap", "Generate PCAP files 0=no;1=yes", ns3::UintegerValue(0), ns3::MakeUintegerChecker< uint32_t >())
Generate PCAP files 0=no;1=yes.
@ LOG_LEVEL_DEBUG
LOG_DEBUG and above.
void Install(void) const
Read the ns2 trace file and configure the movement patterns of all nodes contained in the global ns3:...
virtual void RunSimulation()
Run the simulation.
Callback< R, Ts... > MakeCallback(R(T::*memPtr)(Ts...), OBJ objPtr)
Build Callbacks for class method members which take varying numbers of arguments and potentially retu...
static ns3::GlobalValue g_txSafetyRange2("VRCtxSafetyRange2", "BSM range for PDR inclusion", ns3::DoubleValue(100.0), ns3::MakeDoubleChecker< double >())
BSM range for PDR inclusion.
int m_routingTables
routing tables
static ns3::GlobalValue g_txSafetyRange3("VRCtxSafetyRange3", "BSM range for PDR inclusion", ns3::DoubleValue(150.0), ns3::MakeDoubleChecker< double >())
BSM range for PDR inclusion.
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())
Hold variables of type string.
void SetRxPkts(uint32_t rxPkts)
Sets the number of packets received.
WifiPreamble
The type of preamble to be used by an IEEE 802.11 transmission.
#define NS_LOG_ERROR(msg)
Use NS_LOG to output a message of level LOG_ERROR.
Manage ASCII trace files for device models.
int64_t AssignStreams(NodeContainer c, int64_t stream)
Assign a fixed random variable stream number to the random variables used by the mobility models on t...
double m_txSafetyRange9
range 9
static TypeId GetTypeId(void)
Gets the class TypeId.
static ns3::GlobalValue g_txSafetyRange8("VRCtxSafetyRange8", "BSM range for PDR inclusion", ns3::DoubleValue(400.0), ns3::MakeDoubleChecker< double >())
BSM range for PDR inclusion.
static ns3::GlobalValue g_nSinks("VRCnSinks", "Number of sink nodes for routing non-BSM traffic", ns3::UintegerValue(10), ns3::MakeUintegerChecker< uint32_t >())
Number of sink nodes for routing non-BSM traffic.
ApplicationContainer Install(NodeContainer c) const
Install an ns3::OnOffApplication on each node of the input container configured with all the attribut...
void SetPcapDataLinkType(SupportedPcapDataLinkTypes dlt)
Set the data link type of PCAP traces to be used.
void SetTxPkts(uint32_t txPkts)
Sets the number of packets transmitted.
static ns3::GlobalValue g_txMaxDelayMs("VRCtxMaxDelayMs", "Tx May Delay (ms)", ns3::DoubleValue(10), ns3::MakeDoubleChecker< double >())
Tx May Delay (ms)
void Connect(std::string path, const CallbackBase &cb)
void AssignIpAddresses(NetDeviceContainer &d, Ipv4InterfaceContainer &adhocTxInterfaces)
Assigns IPv4 addresses to net devices and their interfaces.
Helper class that adds DSR routing to nodes.
ConfigStoreHelper()
Constructor.
int64_t m_streamIndex
used to get consistent random numbers across scenarios
uint32_t m_protocol
routing protocol; 0=NONE, 1=OLSR, 2=AODV, 3=DSDV, 4=DSR
void Run()
Run the simulation.
virtual void ParseCommandLineArguments(int argc, char **argv)
Process command line arguments.
static ns3::GlobalValue g_routingTables("VRCroutingTables", "Dump routing tables at t=5 seconds 0=no;1=yes", ns3::UintegerValue(0), ns3::MakeUintegerChecker< uint32_t >())
Dump routing tables at t=5 seconds 0=no;1=yes.
static ns3::GlobalValue g_traceFile("VRCtraceFile", "Mobility trace filename", ns3::StringValue("./src/wave/examples/low99-ct-unterstrass-1day.filt.7.adj.mob"), ns3::MakeStringChecker())
Mobility trace filename.
uint32_t m_nNodes
number of nodes
virtual void ProcessOutputs()
Process outputs.
VanetRoutingExperiment()
Constructor.
virtual ~WifiApp()
Destructor.
The VanetRoutingExperiment class implements a wifi app that allows VANET routing experiments to be si...
Ptr< WaveBsmStats > GetWaveBsmStats()
Returns the WaveBsmStats instance.
void Start(Time start)
Arrange for all of the Applications in this container to Start() at the Time given as a parameter.
Time Seconds(double value)
Construct a Time in the indicated unit.
Callback< R > MakeBoundCallback(R(*fnPtr)(TX), ARG a1)
Make Callbacks with one bound argument.
double m_txSafetyRange7
range 7
static ns3::GlobalValue g_txp("VRCtxp", "Transmission power dBm", ns3::DoubleValue(7.5), ns3::MakeDoubleChecker< double >())
Transmission power dBm.
void SetRoutingHelper(const Ipv4RoutingHelper &routing)
Ipv4InterfaceContainer Assign(const NetDeviceContainer &c)
Assign IP addresses to the net devices specified in the container based on the current network prefix...
uint32_t GetCumulativeRxBytes()
Returns the cumulative number of bytes received.
The WifiApp class enforces program flow for ns-3 wifi applications.
holds a vector of ns3::Application pointers.
static ns3::GlobalValue g_txSafetyRange10("VRCtxSafetyRange10", "BSM range for PDR inclusion", ns3::DoubleValue(500.0), ns3::MakeDoubleChecker< double >())
BSM range for PDR inclusion.
std::string m_CSVfileName
CSV file name.
void Set(const std::string &name, const AttributeValue &value, Args &&... args)
Set an attribute to be set during construction.
int64_t AssignStreams(NodeContainer c, int64_t stream)
Assign a fixed random variable stream number to the random variables used by this model.
uint32_t pktSize
packet size used for the simulation (in bytes)
static ns3::GlobalValue g_phyMode("VRCphyMode", "PHY mode (802.11p)", ns3::StringValue("OfdmRate6MbpsBW10MHz"), ns3::MakeStringChecker())
PHY mode (802.11p)
Allocate a set of positions.
The RoutingHelper class generates routing data between nodes (vehicles) and uses the RoutingStats cla...
AttributeValue implementation for Time.
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())
Ipv4InterfaceContainer m_adhocTxInterfaces
adhoc transmit interfaces
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
ApplicationContainer Install(Ipv4InterfaceContainer i) const
Install an ns3::BsmApplication on each node of the input container configured with all the attributes...
virtual ~RoutingHelper()
Destructor.
void SetupAdhocMobilityNodes()
Set up the adhoc mobility nodes.
virtual int64_t AssignStreams(int64_t stream)=0
Assign a fixed random variable stream number to the random variables used by this model.
static ns3::GlobalValue g_totalTime("VRCtotalTime", "Total simulation time (s)", ns3::DoubleValue(300.01), ns3::MakeDoubleChecker< double >())
Total simulation time (s)
keep track of a set of node pointers.
uint32_t GetCumulativeRxPkts()
Returns the cumulative count of packets received.
uint32_t m_lossModel
loss model
std::string m_logFile
log file
void SetType(std::string type, Args &&... args)
static ns3::GlobalValue g_CSVfileName("VRCCSVfileName", "CSV filename (for time series data)", ns3::StringValue("vanet-routing.output.csv"), ns3::MakeStringChecker())
CSV filename (for time series data)
Helper class which can read ns-2 movement files and configure nodes mobility.
void CheckThroughput()
Checks the throughput and outputs summary to CSV file1.
bool SetValue(const AttributeValue &value)
Set the value of this GlobalValue.
RoutingStats & GetRoutingStats()
Returns the RoutingStats instance.
Ptr< const AttributeChecker > MakeStringChecker(void)
virtual void ConfigureChannels()
Configure channels.
Ipv4Address GetAddress(uint32_t i, uint32_t j=0) const
void SetStream(int64_t stream)
Specifies the stream number for the RngStream.
void SetTypeId(TypeId tid)
Set the TypeId of the Objects to be created by this factory.
Hold an unsigned integer type.
void WriteCsvHeader()
Write the header line to the CSV file1.
void(* Time)(Time oldValue, Time newValue)
TracedValue callback signature for Time.
manage and create wifi channel objects for the YANS model.
double m_txSafetyRange4
range 4
static ns3::GlobalValue g_verbose("VRCverbose", "Verbose 0=no;1=yes", ns3::UintegerValue(0), ns3::MakeUintegerChecker< uint32_t >())
Verbose 0=no;1=yes.
Ptr< Object > Create(void) const
Create an Object instance of the configured TypeId.
std::string m_trName
trace file name
create MAC layers for a ns3::WifiNetDevice.
void SetupRoutingMessages()
Set up generation of packets to be routed through the vehicular network.
void SetDefault(std::string name, const AttributeValue &value)
uint32_t m_TxPkts
transmit packets
virtual void ConfigureTracing()
Configure tracing.
double m_txSafetyRange10
range 10
virtual void ConfigureChannels()
Configure channels.
double m_gpsAccuracyNs
GPS accuracy.
void IncTxPkts()
Increment the count of packets transmitted.
int m_routingTables
dump routing table (at t=5 sec). 0=No, 1=Yes
void LoadConfig(std::string configFilename)
Loads a saved config-store raw text configuration from a given named file.
virtual void ConfigureMobility()
Configure mobility.
uint32_t m_RxPkts
receive packets
static void CourseChange(std::ostream *os, std::string context, Ptr< const MobilityModel > mobility)
Course change function.
static std::string PrintReceivedRoutingPacket(Ptr< Socket > socket, Ptr< Packet > packet, Address srcAddress)
Print a received routing packet on a string.
static ns3::GlobalValue g_txSafetyRange5("VRCtxSafetyRange5", "BSM range for PDR inclusion", ns3::DoubleValue(250.0), ns3::MakeDoubleChecker< double >())
BSM range for PDR inclusion.
double m_txSafetyRange1
range 1
std::string m_phyMode
phy mode
aggregate IP/TCP/UDP functionality to existing Nodes.
static ns3::GlobalValue g_lossModel("VRClossModel", "Propagation Loss Model", ns3::UintegerValue(3), ns3::MakeUintegerChecker< uint32_t >())
Propagation Loss Model.
std::string m_protocolName
protocol name
void Set(std::string name, const AttributeValue &v)
static ns3::GlobalValue g_txSafetyRange1("VRCtxSafetyRange1", "BSM range for PDR inclusion", ns3::DoubleValue(50.0), ns3::MakeDoubleChecker< double >())
BSM range for PDR inclusion.
DSR helper class to manage creation of DSR routing instance and to insert it on a node as a sublayer ...
std::string m_traceFile
trace file
void SetupRoutingProtocol(NodeContainer &c)
Sets up the protocol protocol on the nodes.
std::string m_lossModelName
loss model name
uint32_t GetTxBytes()
Returns the number of bytes that have been transmitted (this includes MAC/PHY overhead)
virtual void ConfigureApplications()
Configure applications.
Helper class used to assign positions and mobility models to nodes.
The WifiPhyStats class collects Wifi MAC/PHY statistics.
static ns3::GlobalValue g_nodePause("VRCnodePause", "Node pause time (s) for RWP model", ns3::UintegerValue(0), ns3::MakeUintegerChecker< uint32_t >())
Node pause time (s) for RWP model.
virtual NetDeviceContainer Install(const WifiPhyHelper &phy, const WifiMacHelper &mac, NodeContainer c) const
virtual void ConfigureMobility()
Configure mobility.
void PhyTxDrop(std::string context, Ptr< const Packet > packet)
Callback signiture for Phy/TxDrop.
Ptr< Socket > SetupRoutingPacketReceive(Ipv4Address addr, Ptr< Node > node)
Sets up a routing packet for tranmission.
static ns3::GlobalValue g_fading("VRCfading", "Fast Fading Model", ns3::UintegerValue(0), ns3::MakeUintegerChecker< uint32_t >())
Fast Fading Model.