9#include "ns3/applications-module.h"
10#include "ns3/buildings-module.h"
11#include "ns3/config-store-module.h"
12#include "ns3/core-module.h"
13#include "ns3/internet-module.h"
15#include "ns3/lte-module.h"
16#include "ns3/mobility-module.h"
17#include "ns3/network-module.h"
18#include "ns3/point-to-point-helper.h"
96 m_xSize(nApartmentsX * 10 + 20),
124 "Too many failed attempts to position apartment block. Too many blocks? Too "
133 NS_LOG_LOGIC(
"allocated non overlapping block " << box);
137 gridBuildingAllocator->SetAttribute(
"GridWidth",
UintegerValue(1));
139 gridBuildingAllocator->SetAttribute(
"LengthY",
DoubleValue(10 * 2));
140 gridBuildingAllocator->SetAttribute(
"DeltaX",
DoubleValue(10));
141 gridBuildingAllocator->SetAttribute(
"DeltaY",
DoubleValue(10));
144 gridBuildingAllocator->SetBuildingAttribute(
"NRoomsY",
UintegerValue(2));
146 gridBuildingAllocator->SetAttribute(
"MinX",
DoubleValue(box.
xMin + 10));
147 gridBuildingAllocator->SetAttribute(
"MinY",
DoubleValue(box.
yMin + 10));
148 gridBuildingAllocator->Create(2);
172 std::ofstream outFile;
173 outFile.open(filename, std::ios_base::out | std::ios_base::trunc);
174 if (!outFile.is_open())
183 Box box = (*it)->GetBoundaries();
184 outFile <<
"set object " << index <<
" rect from " << box.
xMin <<
"," << box.
yMin <<
" to "
185 << box.
xMax <<
"," << box.
yMax <<
" front fs empty " << std::endl;
197 std::ofstream outFile;
198 outFile.open(filename, std::ios_base::out | std::ios_base::trunc);
199 if (!outFile.is_open())
207 int nDevs = node->GetNDevices();
208 for (
int j = 0; j < nDevs; j++)
213 Vector pos = node->GetObject<
MobilityModel>()->GetPosition();
214 outFile <<
"set label \"" << uedev->GetImsi() <<
"\" at " << pos.x <<
"," << pos.y
215 <<
" left font \"Helvetica,4\" textcolor rgb \"grey\" front point pt 1 ps "
216 "0.3 lc rgb \"grey\" offset 0,0"
231 std::ofstream outFile;
232 outFile.open(filename, std::ios_base::out | std::ios_base::trunc);
233 if (!outFile.is_open())
241 int nDevs = node->GetNDevices();
242 for (
int j = 0; j < nDevs; j++)
247 Vector pos = node->GetObject<
MobilityModel>()->GetPosition();
248 outFile <<
"set label \"" << enbdev->GetCellId() <<
"\" at " << pos.x <<
","
250 <<
" left font \"Helvetica,4\" textcolor rgb \"white\" front point pt 2 "
251 "ps 0.3 lc rgb \"white\" offset 0,0"
260 "Number of femtocell blocks",
266 "Number of apartments along the X axis in a femtocell block",
278 "How many macro sites there are",
285 "(minimum) number of sites along the X-axis of the hex grid",
291 "min distance between two nearby macro cell sites",
299 "how much the UE area extends outside the macrocell grid, "
300 "expressed as fraction of the interSiteDistance",
306 "How many macrocell UEs there are per square meter",
312 "The HeNB deployment ratio as per 3GPP R4-092042",
318 "The HeNB activation ratio as per 3GPP R4-092042",
324 "homeUesHomeEnbRatio",
325 "How many (on average) home UEs per HeNB there are in the simulation",
331 "TX power [dBm] used by macro eNBs",
337 "TX power [dBm] used by HeNBs",
343 "DL EARFCN used by macro eNBs",
349 "DL EARFCN used by HeNBs",
355 "bandwidth [num RBs] used by macro eNBs",
361 "bandwidth [num RBs] used by HeNBs",
367 "Total duration of the simulation [s]",
374 "if true, will generate a REM and then abort the simulation;"
375 "if false, will run the simulation normally (without generating any REM)",
382 "Resource Block Id of Data Channel, for which REM will be generated;"
383 "default value is -1, what means REM will be averaged from all RBs of "
391 "If true, will setup the EPC to simulate an end-to-end topology, "
392 "with real IP applications over PDCP and RLC UM (or RLC AM by changing "
393 "the default value of EpsBearerToRlcMapping e.g. to RLC_AM_ALWAYS). "
394 "If false, only the LTE radio access will be simulated with RLC SM.",
401 "if true, will activate data flows in the downlink when EPC is being used. "
402 "If false, downlink flows won't be activated. "
403 "If EPC is not used, this parameter will be ignored.",
410 "if true, will activate data flows in the uplink when EPC is being used. "
411 "If false, uplink flows won't be activated. "
412 "If EPC is not used, this parameter will be ignored.",
419 "if true, the UdpClient application will be used. "
420 "Otherwise, the BulkSend application will be used over a TCP connection. "
421 "If EPC is not used, this parameter will be ignored.",
428 "The path of the fading trace (by default no fading trace "
429 "is loaded, i.e., fading is not considered)",
435 "How many bearers per UE there are in the simulation",
441 "SRS Periodicity (has to be at least "
442 "greater than the number of UEs per eNB)",
449 "Minimum speed value of macro UE with random waypoint model [m/s].",
456 "Maximum speed value of macro UE with random waypoint model [m/s].",
461main(
int argc,
char* argv[])
471 cmd.Parse(argc, argv);
475 cmd.Parse(argc, argv);
494 double interSiteDistance = doubleValue.
Get();
496 double areaMarginFactor = doubleValue.
Get();
498 double macroUeDensity = doubleValue.
Get();
500 double homeEnbDeploymentRatio = doubleValue.
Get();
502 double homeEnbActivationRatio = doubleValue.
Get();
504 double homeUesHomeEnbRatio = doubleValue.
Get();
506 double macroEnbTxPowerDbm = doubleValue.
Get();
508 double homeEnbTxPowerDbm = doubleValue.
Get();
514 uint16_t macroEnbBandwidth = uintegerValue.
Get();
516 uint16_t homeEnbBandwidth = uintegerValue.
Get();
518 double simTime = doubleValue.
Get();
520 bool epc = booleanValue.
Get();
522 bool epcDl = booleanValue.
Get();
524 bool epcUl = booleanValue.
Get();
526 bool useUdp = booleanValue.
Get();
528 bool generateRem = booleanValue.
Get();
532 std::string fadingTrace = stringValue.
Get();
534 uint16_t numBearersPerUe = uintegerValue.
Get();
536 uint16_t srsPeriodicity = uintegerValue.
Get();
538 uint16_t outdoorUeMinSpeed = doubleValue.
Get();
540 uint16_t outdoorUeMaxSpeed = doubleValue.
Get();
546 if (nMacroEnbSites > 0)
548 uint32_t currentSite = nMacroEnbSites - 1;
549 uint32_t biRowIndex = (currentSite / (nMacroEnbSitesX + nMacroEnbSitesX + 1));
550 uint32_t biRowRemainder = currentSite % (nMacroEnbSitesX + nMacroEnbSitesX + 1);
551 uint32_t rowIndex = biRowIndex * 2 + 1;
552 if (biRowRemainder >= nMacroEnbSitesX)
556 uint32_t nMacroEnbSitesY = rowIndex;
559 macroUeBox =
Box(-areaMarginFactor * interSiteDistance,
560 (nMacroEnbSitesX + areaMarginFactor) * interSiteDistance,
561 -areaMarginFactor * interSiteDistance,
562 (nMacroEnbSitesY - 1) * interSiteDistance * sqrt(0.75) +
563 areaMarginFactor * interSiteDistance,
570 macroUeBox =
Box(0, 150, 0, 150, ueZ, ueZ);
574 blockAllocator.Create(nBlocks);
576 uint32_t nHomeEnbs = round(4 * nApartmentsX * nBlocks * nFloors * homeEnbDeploymentRatio *
577 homeEnbActivationRatio);
579 uint32_t nHomeUes = round(nHomeEnbs * homeUesHomeEnbRatio);
581 double macroUeAreaSize =
583 uint32_t nMacroUes = round(macroUeAreaSize * macroUeDensity);
584 NS_LOG_LOGIC(
"nMacroUes = " << nMacroUes <<
" (density=" << macroUeDensity <<
")");
587 homeEnbs.
Create(nHomeEnbs);
589 macroEnbs.
Create(3 * nMacroEnbSites);
593 macroUes.
Create(nMacroUes);
596 mobility.SetMobilityModel(
"ns3::ConstantPositionMobilityModel");
599 lteHelper->SetAttribute(
"PathlossModel",
600 StringValue(
"ns3::HybridBuildingsPropagationLossModel"));
601 lteHelper->SetPathlossModelAttribute(
"ShadowSigmaExtWalls",
DoubleValue(0));
602 lteHelper->SetPathlossModelAttribute(
"ShadowSigmaOutdoor",
DoubleValue(1));
603 lteHelper->SetPathlossModelAttribute(
"ShadowSigmaIndoor",
DoubleValue(1.5));
605 lteHelper->SetPathlossModelAttribute(
"Los2NlosThr",
DoubleValue(1e6));
606 lteHelper->SetSpectrumChannelType(
"ns3::MultiModelSpectrumChannel");
611 if (!fadingTrace.empty())
613 lteHelper->SetAttribute(
"FadingModel",
StringValue(
"ns3::TraceFadingLossModel"));
614 lteHelper->SetFadingModelAttribute(
"TraceFilename",
StringValue(fadingTrace));
622 lteHelper->SetEpcHelper(epcHelper);
631 lteHexGridEnbTopologyHelper->SetLteHelper(lteHelper);
632 lteHexGridEnbTopologyHelper->SetAttribute(
"InterSiteDistance",
DoubleValue(interSiteDistance));
633 lteHexGridEnbTopologyHelper->SetAttribute(
"MinX",
DoubleValue(interSiteDistance / 2));
634 lteHexGridEnbTopologyHelper->SetAttribute(
"GridWidth",
UintegerValue(nMacroEnbSitesX));
636 lteHelper->SetEnbAntennaModelType(
"ns3::ParabolicAntennaModel");
637 lteHelper->SetEnbAntennaModelAttribute(
"Beamwidth",
DoubleValue(70));
638 lteHelper->SetEnbAntennaModelAttribute(
"MaxAttenuation",
DoubleValue(20.0));
639 lteHelper->SetEnbDeviceAttribute(
"DlEarfcn",
UintegerValue(macroEnbDlEarfcn));
640 lteHelper->SetEnbDeviceAttribute(
"UlEarfcn",
UintegerValue(macroEnbDlEarfcn + 18000));
641 lteHelper->SetEnbDeviceAttribute(
"DlBandwidth",
UintegerValue(macroEnbBandwidth));
642 lteHelper->SetEnbDeviceAttribute(
"UlBandwidth",
UintegerValue(macroEnbBandwidth));
644 lteHexGridEnbTopologyHelper->SetPositionAndInstallEnbDevice(macroEnbs);
648 lteHelper->GetDownlinkSpectrumChannel()->UnidirectionalAggregateObject(wraparoundModel);
649 lteHelper->GetUplinkSpectrumChannel()->UnidirectionalAggregateObject(wraparoundModel);
654 lteHelper->AddX2Interface(macroEnbs);
660 mobility.SetPositionAllocator(positionAlloc);
664 lteHelper->SetEnbAntennaModelType(
"ns3::IsotropicAntennaModel");
665 lteHelper->SetEnbDeviceAttribute(
"DlEarfcn",
UintegerValue(homeEnbDlEarfcn));
666 lteHelper->SetEnbDeviceAttribute(
"UlEarfcn",
UintegerValue(homeEnbDlEarfcn + 18000));
667 lteHelper->SetEnbDeviceAttribute(
"DlBandwidth",
UintegerValue(homeEnbBandwidth));
668 lteHelper->SetEnbDeviceAttribute(
"UlBandwidth",
UintegerValue(homeEnbBandwidth));
670 lteHelper->SetEnbDeviceAttribute(
"CsgIndication",
BooleanValue(
true));
675 mobility.SetPositionAllocator(positionAlloc);
683 NS_LOG_LOGIC(
"randomly allocating macro UEs in " << macroUeBox <<
" speedMin "
684 << outdoorUeMinSpeed <<
" speedMax "
685 << outdoorUeMaxSpeed);
686 if (outdoorUeMaxSpeed != 0.0)
688 mobility.SetMobilityModel(
"ns3::SteadyStateRandomWaypointMobilityModel");
709 mobility.SetPositionAllocator(positionAlloc);
715 for (
auto it = macroUes.
Begin(); it != macroUes.
End(); ++it)
735 mobility.SetPositionAllocator(positionAlloc);
755 remoteHostContainer.
Create(1);
756 remoteHost = remoteHostContainer.
Get(0);
758 internet.Install(remoteHostContainer);
768 ipv4h.
SetBase(
"1.0.0.0",
"255.0.0.0");
771 remoteHostAddr = internetIpIfaces.
GetAddress(1);
776 remoteHostStaticRouting->AddNetworkRouteTo(
Ipv4Address(
"7.0.0.0"),
783 ueDevs.
Add(homeUeDevs);
784 ueDevs.
Add(macroUeDevs);
792 lteHelper->Attach(macroUeDevs);
793 lteHelper->Attach(homeUeDevs);
798 lteHelper->AttachToClosestEnb(macroUeDevs, macroEnbDevs);
803 for (ueDevIt = homeUeDevs.
Begin(), enbDevIt = homeEnbDevs.
Begin();
804 ueDevIt != homeUeDevs.
End();
805 ++ueDevIt, ++enbDevIt)
809 if (enbDevIt == homeEnbDevs.
End())
811 enbDevIt = homeEnbDevs.
Begin();
813 lteHelper->Attach(*ueDevIt, *enbDevIt);
822 uint16_t dlPort = 10000;
823 uint16_t ulPort = 20000;
831 startTimeSeconds->SetAttribute(
"Min",
DoubleValue(0));
832 startTimeSeconds->SetAttribute(
"Max",
DoubleValue(0.010));
838 startTimeSeconds->SetAttribute(
"Min",
DoubleValue(0.100));
839 startTimeSeconds->SetAttribute(
"Max",
DoubleValue(0.110));
848 ueStaticRouting->SetDefaultRoute(epcHelper->GetUeDefaultGatewayAddress(), 1);
850 for (
uint32_t b = 0; b < numBearersPerUe; ++b)
864 clientApps.Add(dlClientHelper.Install(remoteHost));
866 "ns3::UdpSocketFactory",
868 serverApps.Add(dlPacketSinkHelper.Install(ue));
876 "ns3::UdpSocketFactory",
878 serverApps.Add(ulPacketSinkHelper.Install(remoteHost));
887 "ns3::TcpSocketFactory",
890 clientApps.Add(dlClientHelper.Install(remoteHost));
892 "ns3::TcpSocketFactory",
894 serverApps.Add(dlPacketSinkHelper.Install(ue));
904 "ns3::TcpSocketFactory",
906 serverApps.Add(ulPacketSinkHelper.Install(remoteHost));
929 lteHelper->ActivateDedicatedEpsBearer(ueDevs.
Get(u), bearer, tft);
931 Time startTime =
Seconds(startTimeSeconds->GetValue());
941 ueDevs.
Add(homeUeDevs);
942 ueDevs.
Add(macroUeDevs);
946 for (
uint32_t b = 0; b < numBearersPerUe; ++b)
950 lteHelper->ActivateDataRadioBearer(ueDev, bearer);
963 remHelper->SetAttribute(
"Channel",
PointerValue(lteHelper->GetDownlinkSpectrumChannel()));
964 remHelper->SetAttribute(
"OutputFile",
StringValue(
"lena-dual-stripe.rem"));
973 remHelper->SetAttribute(
"UseDataChannel",
BooleanValue(
true));
977 remHelper->Install();
985 lteHelper->EnableMacTraces();
986 lteHelper->EnableRlcTraces();
989 lteHelper->EnablePdcpTraces();
Class that takes care of installing blocks of the buildings in a given area.
std::list< Box > m_previousBlocks
previous bocks
Ptr< UniformRandomVariable > m_xMinVar
X minimum variance.
Ptr< UniformRandomVariable > m_yMinVar
Y minimum variance.
uint32_t m_nApartmentsX
X apartments.
FemtocellBlockAllocator(Box area, uint32_t nApartmentsX, uint32_t nFloors)
Constructor.
uint32_t m_nFloors
number of floors
bool OverlapsWithAnyPrevious(Box box)
Function that checks if the box area is overlapping with some of previously created building blocks.
void Create()
Create function.
holds a vector of ns3::Application pointers.
AttributeValue implementation for Boolean.
double yMax
The y coordinate of the top bound of the box.
double xMin
The x coordinate of the left bound of the box.
double yMin
The y coordinate of the bottom bound of the box.
double xMax
The x coordinate of the right bound of the box.
double zMin
The z coordinate of the down bound of the box.
double zMax
The z coordinate of the up bound of the box.
static void Install(Ptr< Node > node)
Install the MobilityBuildingInfo to a node.
A helper to make it easier to instantiate an ns3::BulkSendApplication on a set of nodes.
Parse command-line arguments.
Introspection did not find any typical Config paths
void ConfigureDefaults()
Configure the default values.
Class for representing data rates.
AttributeValue implementation for DataRate.
This class can be used to hold variables of floating point type such as 'double' or 'float'.
This class contains the specification of EPS Bearers.
@ NGBR_VIDEO_TCP_DEFAULT
Non-GBR TCP-based Video (Buffered Streaming, e.g., www, e-mail...)
Hold a so-called 'global value'.
static void GetValueByName(std::string name, AttributeValue &value)
Finds the GlobalValue with the given name and returns its value.
Hold a signed integer type.
aggregate IP/TCP/UDP functionality to existing Nodes.
A helper class to make life easier while doing simple IPv4 address assignment in scripts.
void SetBase(Ipv4Address network, Ipv4Mask mask, Ipv4Address base="0.0.0.1")
Set the base network number, network mask and base address.
Ipv4InterfaceContainer Assign(const NetDeviceContainer &c)
Assign IP addresses to the net devices specified in the container based on the current network prefix...
Ipv4 addresses are stored in host order in this class.
static Ipv4Address GetAny()
Access to the IPv4 forwarding table, interfaces, and configuration.
holds a vector of std::pair of Ptr<Ipv4> and interface index.
Ipv4Address GetAddress(uint32_t i, uint32_t j=0) const
a class to represent an Ipv4 address mask
Helper class that adds ns3::Ipv4StaticRouting objects.
Ptr< Ipv4StaticRouting > GetStaticRouting(Ptr< Ipv4 > ipv4) const
Try and find the static routing protocol as either the main routing protocol or in the list of routin...
The eNodeB device implementation.
The LteUeNetDevice class implements the UE net device.
Helper class used to assign positions and mobility models to nodes.
Keep track of the current position and velocity of an object.
holds a vector of ns3::NetDevice pointers
uint32_t GetN() const
Get the number of Ptr<NetDevice> stored in this container.
std::vector< Ptr< NetDevice > >::const_iterator Iterator
NetDevice container iterator.
Iterator Begin() const
Get an iterator which refers to the first NetDevice in the container.
void Add(NetDeviceContainer other)
Append the contents of another NetDeviceContainer to the end of this container.
Iterator End() const
Get an iterator which indicates past-the-last NetDevice in the container.
Ptr< NetDevice > Get(uint32_t i) const
Get the Ptr<NetDevice> stored in this container at a given index.
keep track of a set of node pointers.
Iterator End() const
Get an iterator which indicates past-the-last Node in the container.
uint32_t GetN() const
Get the number of Ptr<Node> stored in this container.
void Create(uint32_t n)
Create n nodes and append pointers to them to the end of this NodeContainer.
void Add(const NodeContainer &nc)
Append the contents of another NodeContainer to the end of this container.
Iterator Begin() const
Get an iterator which refers to the first Node in the container.
Ptr< Node > Get(uint32_t i) const
Get the Ptr<Node> stored in this container at a given index.
A helper to make it easier to instantiate an ns3::PacketSinkApplication on a set of nodes.
Build a set of PointToPointNetDevice objects.
void SetDeviceAttribute(std::string name, const AttributeValue &value)
Set an attribute value to be propagated to each NetDevice created by the helper.
void SetChannelAttribute(std::string name, const AttributeValue &value)
Set an attribute value to be propagated to each Channel created by the helper.
NetDeviceContainer Install(NodeContainer c)
AttributeValue implementation for Pointer.
Smart pointer class similar to boost::intrusive_ptr.
static void Destroy()
Execute the events scheduled with ScheduleDestroy().
static void Run()
Run the simulation.
static void Stop()
Tell the Simulator the calling event should be the last one executed.
Hold variables of type string.
Simulation virtual time values and global simulation resolution.
AttributeValue implementation for Time.
Create a client application which sends UDP packets carrying a 32bit sequence number and a 64 bit tim...
Hold an unsigned integer type.
#define NS_ASSERT_MSG(condition, message)
At runtime, in debugging builds, if this condition is not true, the program prints the message to out...
Ptr< const AttributeChecker > MakeBooleanChecker()
Ptr< const AttributeChecker > MakeDoubleChecker()
Ptr< const AttributeChecker > MakeIntegerChecker()
Ptr< const AttributeChecker > MakeStringChecker()
Ptr< const AttributeChecker > MakeUintegerChecker()
void SetDefault(std::string name, const AttributeValue &value)
#define NS_LOG_ERROR(msg)
Use NS_LOG to output a message of level LOG_ERROR.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
#define NS_LOG_LOGIC(msg)
Use NS_LOG to output a message of level LOG_LOGIC.
Ptr< T > CreateObject(Args &&... args)
Create an object by type, with varying number of constructor parameters.
Ptr< T > Create(Ts &&... args)
Create class instances by constructors with varying numbers of arguments and return them by Ptr.
Time Seconds(double value)
Construct a Time in the indicated unit.
Time MilliSeconds(uint64_t value)
Construct a Time in the indicated unit.
static ns3::GlobalValue g_macroEnbTxPowerDbm("macroEnbTxPowerDbm", "TX power [dBm] used by macro eNBs", ns3::DoubleValue(46.0), ns3::MakeDoubleChecker< double >())
TX power [dBm] used by macro eNBs.
bool AreOverlapping(Box a, Box b)
Check if two boxes are overlapping.
static ns3::GlobalValue g_generateRem("generateRem", "if true, will generate a REM and then abort the simulation;" "if false, will run the simulation normally (without generating any REM)", ns3::BooleanValue(false), ns3::MakeBooleanChecker())
If true, will generate a REM and then abort the simulation.
static ns3::GlobalValue g_homeEnbDeploymentRatio("homeEnbDeploymentRatio", "The HeNB deployment ratio as per 3GPP R4-092042", ns3::DoubleValue(0.2), ns3::MakeDoubleChecker< double >())
The HeNB deployment ratio as per 3GPP R4-092042.
static ns3::GlobalValue g_srsPeriodicity("srsPeriodicity", "SRS Periodicity (has to be at least " "greater than the number of UEs per eNB)", ns3::UintegerValue(80), ns3::MakeUintegerChecker< uint16_t >())
SRS Periodicity (has to be at least greater than the number of UEs per eNB)
static ns3::GlobalValue g_fadingTrace("fadingTrace", "The path of the fading trace (by default no fading trace " "is loaded, i.e., fading is not considered)", ns3::StringValue(""), ns3::MakeStringChecker())
The path of the fading trace (by default no fading trace is loaded, i.e., fading is not considered)
static ns3::GlobalValue g_outdoorUeMaxSpeed("outdoorUeMaxSpeed", "Maximum speed value of macro UE with random waypoint model [m/s].", ns3::DoubleValue(0.0), ns3::MakeDoubleChecker< double >())
Maximum speed value of macro UE with random waypoint model [m/s].
static ns3::GlobalValue g_macroUeDensity("macroUeDensity", "How many macrocell UEs there are per square meter", ns3::DoubleValue(0.00002), ns3::MakeDoubleChecker< double >())
How many macrocell UEs there are per square meter.
static ns3::GlobalValue g_homeEnbTxPowerDbm("homeEnbTxPowerDbm", "TX power [dBm] used by HeNBs", ns3::DoubleValue(20.0), ns3::MakeDoubleChecker< double >())
TX power [dBm] used by HeNBs.
static ns3::GlobalValue g_homeEnbBandwidth("homeEnbBandwidth", "bandwidth [num RBs] used by HeNBs", ns3::UintegerValue(25), ns3::MakeUintegerChecker< uint16_t >())
Bandwidth [num RBs] used by HeNBs.
static ns3::GlobalValue g_simTime("simTime", "Total duration of the simulation [s]", ns3::DoubleValue(0.25), ns3::MakeDoubleChecker< double >())
Total duration of the simulation [s].
static ns3::GlobalValue g_outdoorUeMinSpeed("outdoorUeMinSpeed", "Minimum speed value of macro UE with random waypoint model [m/s].", ns3::DoubleValue(0.0), ns3::MakeDoubleChecker< double >())
Minimum speed value of macro UE with random waypoint model [m/s].
static ns3::GlobalValue g_homeEnbDlEarfcn("homeEnbDlEarfcn", "DL EARFCN used by HeNBs", ns3::UintegerValue(100), ns3::MakeUintegerChecker< uint16_t >())
DL EARFCN used by HeNBs.
static ns3::GlobalValue g_nApartmentsX("nApartmentsX", "Number of apartments along the X axis in a femtocell block", ns3::UintegerValue(10), ns3::MakeUintegerChecker< uint32_t >())
Number of apartments along the X axis in a femtocell block.
void PrintGnuplottableEnbListToFile(std::string filename)
Print a list of ENBs that can be plotted using Gnuplot.
static ns3::GlobalValue g_homeEnbActivationRatio("homeEnbActivationRatio", "The HeNB activation ratio as per 3GPP R4-092042", ns3::DoubleValue(0.5), ns3::MakeDoubleChecker< double >())
The HeNB activation ratio as per 3GPP R4-092042.
static ns3::GlobalValue g_nMacroEnbSitesX("nMacroEnbSitesX", "(minimum) number of sites along the X-axis of the hex grid", ns3::UintegerValue(1), ns3::MakeUintegerChecker< uint32_t >())
(minimum) number of sites along the X-axis of the hex grid
static ns3::GlobalValue g_nFloors("nFloors", "Number of floors", ns3::UintegerValue(1), ns3::MakeUintegerChecker< uint32_t >())
Number of floors.
void PrintGnuplottableBuildingListToFile(std::string filename)
Print a list of buildings that can be plotted using Gnuplot.
static ns3::GlobalValue g_macroEnbBandwidth("macroEnbBandwidth", "bandwidth [num RBs] used by macro eNBs", ns3::UintegerValue(25), ns3::MakeUintegerChecker< uint16_t >())
Bandwidth [num RBs] used by macro eNBs.
static ns3::GlobalValue g_remRbId("remRbId", "Resource Block Id of Data Channel, for which REM will be generated;" "default value is -1, what means REM will be averaged from all RBs of " "Control Channel", ns3::IntegerValue(-1), MakeIntegerChecker< int32_t >())
Resource Block Id of Data Channel, for which REM will be generated.
static ns3::GlobalValue g_epcDl("epcDl", "if true, will activate data flows in the downlink when EPC is being used. " "If false, downlink flows won't be activated. " "If EPC is not used, this parameter will be ignored.", ns3::BooleanValue(true), ns3::MakeBooleanChecker())
if true, will activate data flows in the downlink when EPC is being used.
static ns3::GlobalValue g_homeUesHomeEnbRatio("homeUesHomeEnbRatio", "How many (on average) home UEs per HeNB there are in the simulation", ns3::DoubleValue(1.0), ns3::MakeDoubleChecker< double >())
How many (on average) home UEs per HeNB there are in the simulation.
static ns3::GlobalValue g_nBlocks("nBlocks", "Number of femtocell blocks", ns3::UintegerValue(1), ns3::MakeUintegerChecker< uint32_t >())
Number of femtocell blocks.
static ns3::GlobalValue g_useUdp("useUdp", "if true, the UdpClient application will be used. " "Otherwise, the BulkSend application will be used over a TCP connection. " "If EPC is not used, this parameter will be ignored.", ns3::BooleanValue(true), ns3::MakeBooleanChecker())
if true, the UdpClient application will be used.
static ns3::GlobalValue g_numBearersPerUe("numBearersPerUe", "How many bearers per UE there are in the simulation", ns3::UintegerValue(1), ns3::MakeUintegerChecker< uint16_t >())
How many bearers per UE there are in the simulation.
static ns3::GlobalValue g_epc("epc", "If true, will setup the EPC to simulate an end-to-end topology, " "with real IP applications over PDCP and RLC UM (or RLC AM by changing " "the default value of EpsBearerToRlcMapping e.g. to RLC_AM_ALWAYS). " "If false, only the LTE radio access will be simulated with RLC SM.", ns3::BooleanValue(false), ns3::MakeBooleanChecker())
If true, will setup the EPC to simulate an end-to-end topology.
static ns3::GlobalValue g_areaMarginFactor("areaMarginFactor", "how much the UE area extends outside the macrocell grid, " "expressed as fraction of the interSiteDistance", ns3::DoubleValue(0.5), ns3::MakeDoubleChecker< double >())
how much the UE area extends outside the macrocell grid, expressed as fraction of the interSiteDistan...
void PrintGnuplottableUeListToFile(std::string filename)
Print a list of UEs that can be plotted using Gnuplot.
static ns3::GlobalValue g_interSiteDistance("interSiteDistance", "min distance between two nearby macro cell sites", ns3::DoubleValue(500), ns3::MakeDoubleChecker< double >())
min distance between two nearby macro cell sites
static ns3::GlobalValue g_epcUl("epcUl", "if true, will activate data flows in the uplink when EPC is being used. " "If false, uplink flows won't be activated. " "If EPC is not used, this parameter will be ignored.", ns3::BooleanValue(true), ns3::MakeBooleanChecker())
if true, will activate data flows in the uplink when EPC is being used.
static ns3::GlobalValue g_macroEnbDlEarfcn("macroEnbDlEarfcn", "DL EARFCN used by macro eNBs", ns3::UintegerValue(100), ns3::MakeUintegerChecker< uint16_t >())
DL EARFCN used by macro eNBs.
static ns3::GlobalValue g_nMacroEnbSites("nMacroEnbSites", "How many macro sites there are", ns3::UintegerValue(7), ns3::MakeUintegerChecker< uint32_t >())
How many macro sites there are.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Implement the data structure representing a TrafficFlowTemplate Packet Filter.
uint16_t localPortEnd
end of the port number range of the UE
uint16_t remotePortEnd
end of the port number range of the remote host
uint16_t remotePortStart
start of the port number range of the remote host
uint16_t localPortStart
start of the port number range of the UE