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>
90 m_nApartmentsX(nApartmentsX),
92 m_xSize(nApartmentsX * 10 + 20),
120 "Too many failed attempts to position apartment block. Too many blocks? Too "
129 NS_LOG_LOGIC(
"allocated non overlapping block " << box);
133 gridBuildingAllocator->SetAttribute(
"GridWidth",
UintegerValue(1));
135 gridBuildingAllocator->SetAttribute(
"LengthY",
DoubleValue(10 * 2));
136 gridBuildingAllocator->SetAttribute(
"DeltaX",
DoubleValue(10));
137 gridBuildingAllocator->SetAttribute(
"DeltaY",
DoubleValue(10));
140 gridBuildingAllocator->SetBuildingAttribute(
"NRoomsY",
UintegerValue(2));
142 gridBuildingAllocator->SetAttribute(
"MinX",
DoubleValue(box.
xMin + 10));
143 gridBuildingAllocator->SetAttribute(
"MinY",
DoubleValue(box.
yMin + 10));
144 gridBuildingAllocator->Create(2);
168 std::ofstream outFile;
169 outFile.open(filename, std::ios_base::out | std::ios_base::trunc);
170 if (!outFile.is_open())
179 Box box = (*it)->GetBoundaries();
180 outFile <<
"set object " << index <<
" rect from " << box.
xMin <<
"," << box.
yMin <<
" to "
181 << box.
xMax <<
"," << box.
yMax <<
" front fs empty " << std::endl;
193 std::ofstream outFile;
194 outFile.open(filename, std::ios_base::out | std::ios_base::trunc);
195 if (!outFile.is_open())
203 int nDevs = node->GetNDevices();
204 for (
int j = 0; j < nDevs; j++)
209 Vector pos = node->GetObject<
MobilityModel>()->GetPosition();
210 outFile <<
"set label \"" << uedev->GetImsi() <<
"\" at " << pos.x <<
"," << pos.y
211 <<
" left font \"Helvetica,4\" textcolor rgb \"grey\" front point pt 1 ps "
212 "0.3 lc rgb \"grey\" offset 0,0"
227 std::ofstream outFile;
228 outFile.open(filename, std::ios_base::out | std::ios_base::trunc);
229 if (!outFile.is_open())
237 int nDevs = node->GetNDevices();
238 for (
int j = 0; j < nDevs; j++)
243 Vector pos = node->GetObject<
MobilityModel>()->GetPosition();
244 outFile <<
"set label \"" << enbdev->GetCellId() <<
"\" at " << pos.x <<
","
246 <<
" left font \"Helvetica,4\" textcolor rgb \"white\" front point pt 2 "
247 "ps 0.3 lc rgb \"white\" offset 0,0"
256 "Number of femtocell blocks",
262 "Number of apartments along the X axis in a femtocell block",
274 "How many macro sites there are",
281 "(minimum) number of sites along the X-axis of the hex grid",
287 "min distance between two nearby macro cell sites",
295 "how much the UE area extends outside the macrocell grid, "
296 "expressed as fraction of the interSiteDistance",
302 "How many macrocell UEs there are per square meter",
308 "The HeNB deployment ratio as per 3GPP R4-092042",
314 "The HeNB activation ratio as per 3GPP R4-092042",
320 "homeUesHomeEnbRatio",
321 "How many (on average) home UEs per HeNB there are in the simulation",
327 "TX power [dBm] used by macro eNBs",
333 "TX power [dBm] used by HeNBs",
339 "DL EARFCN used by macro eNBs",
345 "DL EARFCN used by HeNBs",
351 "bandwidth [num RBs] used by macro eNBs",
357 "bandwidth [num RBs] used by HeNBs",
363 "Total duration of the simulation [s]",
370 "if true, will generate a REM and then abort the simulation;"
371 "if false, will run the simulation normally (without generating any REM)",
378 "Resource Block Id of Data Channel, for which REM will be generated;"
379 "default value is -1, what means REM will be averaged from all RBs of "
387 "If true, will setup the EPC to simulate an end-to-end topology, "
388 "with real IP applications over PDCP and RLC UM (or RLC AM by changing "
389 "the default value of EpsBearerToRlcMapping e.g. to RLC_AM_ALWAYS). "
390 "If false, only the LTE radio access will be simulated with RLC SM.",
397 "if true, will activate data flows in the downlink when EPC is being used. "
398 "If false, downlink flows won't be activated. "
399 "If EPC is not used, this parameter will be ignored.",
406 "if true, will activate data flows in the uplink when EPC is being used. "
407 "If false, uplink flows won't be activated. "
408 "If EPC is not used, this parameter will be ignored.",
415 "if true, the UdpClient application will be used. "
416 "Otherwise, the BulkSend application will be used over a TCP connection. "
417 "If EPC is not used, this parameter will be ignored.",
424 "The path of the fading trace (by default no fading trace "
425 "is loaded, i.e., fading is not considered)",
431 "How many bearers per UE there are in the simulation",
437 "SRS Periodicity (has to be at least "
438 "greater than the number of UEs per eNB)",
445 "Minimum speed value of macro UE with random waypoint model [m/s].",
452 "Maximum speed value of macro UE with random waypoint model [m/s].",
457main(
int argc,
char* argv[])
467 cmd.Parse(argc, argv);
471 cmd.Parse(argc, argv);
490 double interSiteDistance = doubleValue.
Get();
492 double areaMarginFactor = doubleValue.
Get();
494 double macroUeDensity = doubleValue.
Get();
496 double homeEnbDeploymentRatio = doubleValue.
Get();
498 double homeEnbActivationRatio = doubleValue.
Get();
500 double homeUesHomeEnbRatio = doubleValue.
Get();
502 double macroEnbTxPowerDbm = doubleValue.
Get();
504 double homeEnbTxPowerDbm = doubleValue.
Get();
510 uint16_t macroEnbBandwidth = uintegerValue.
Get();
512 uint16_t homeEnbBandwidth = uintegerValue.
Get();
514 double simTime = doubleValue.
Get();
516 bool epc = booleanValue.
Get();
518 bool epcDl = booleanValue.
Get();
520 bool epcUl = booleanValue.
Get();
522 bool useUdp = booleanValue.
Get();
524 bool generateRem = booleanValue.
Get();
528 std::string fadingTrace = stringValue.
Get();
530 uint16_t numBearersPerUe = uintegerValue.
Get();
532 uint16_t srsPeriodicity = uintegerValue.
Get();
534 uint16_t outdoorUeMinSpeed = doubleValue.
Get();
536 uint16_t outdoorUeMaxSpeed = doubleValue.
Get();
542 if (nMacroEnbSites > 0)
544 uint32_t currentSite = nMacroEnbSites - 1;
545 uint32_t biRowIndex = (currentSite / (nMacroEnbSitesX + nMacroEnbSitesX + 1));
546 uint32_t biRowRemainder = currentSite % (nMacroEnbSitesX + nMacroEnbSitesX + 1);
547 uint32_t rowIndex = biRowIndex * 2 + 1;
548 if (biRowRemainder >= nMacroEnbSitesX)
552 uint32_t nMacroEnbSitesY = rowIndex;
555 macroUeBox =
Box(-areaMarginFactor * interSiteDistance,
556 (nMacroEnbSitesX + areaMarginFactor) * interSiteDistance,
557 -areaMarginFactor * interSiteDistance,
558 (nMacroEnbSitesY - 1) * interSiteDistance * sqrt(0.75) +
559 areaMarginFactor * interSiteDistance,
566 macroUeBox =
Box(0, 150, 0, 150, ueZ, ueZ);
570 blockAllocator.Create(nBlocks);
572 uint32_t nHomeEnbs = round(4 * nApartmentsX * nBlocks * nFloors * homeEnbDeploymentRatio *
573 homeEnbActivationRatio);
575 uint32_t nHomeUes = round(nHomeEnbs * homeUesHomeEnbRatio);
577 double macroUeAreaSize =
579 uint32_t nMacroUes = round(macroUeAreaSize * macroUeDensity);
580 NS_LOG_LOGIC(
"nMacroUes = " << nMacroUes <<
" (density=" << macroUeDensity <<
")");
583 homeEnbs.
Create(nHomeEnbs);
585 macroEnbs.
Create(3 * nMacroEnbSites);
589 macroUes.
Create(nMacroUes);
592 mobility.SetMobilityModel(
"ns3::ConstantPositionMobilityModel");
595 lteHelper->SetAttribute(
"PathlossModel",
596 StringValue(
"ns3::HybridBuildingsPropagationLossModel"));
597 lteHelper->SetPathlossModelAttribute(
"ShadowSigmaExtWalls",
DoubleValue(0));
598 lteHelper->SetPathlossModelAttribute(
"ShadowSigmaOutdoor",
DoubleValue(1));
599 lteHelper->SetPathlossModelAttribute(
"ShadowSigmaIndoor",
DoubleValue(1.5));
601 lteHelper->SetPathlossModelAttribute(
"Los2NlosThr",
DoubleValue(1e6));
602 lteHelper->SetSpectrumChannelType(
"ns3::MultiModelSpectrumChannel");
607 if (!fadingTrace.empty())
609 lteHelper->SetAttribute(
"FadingModel",
StringValue(
"ns3::TraceFadingLossModel"));
610 lteHelper->SetFadingModelAttribute(
"TraceFilename",
StringValue(fadingTrace));
618 lteHelper->SetEpcHelper(epcHelper);
627 lteHexGridEnbTopologyHelper->SetLteHelper(lteHelper);
628 lteHexGridEnbTopologyHelper->SetAttribute(
"InterSiteDistance",
DoubleValue(interSiteDistance));
629 lteHexGridEnbTopologyHelper->SetAttribute(
"MinX",
DoubleValue(interSiteDistance / 2));
630 lteHexGridEnbTopologyHelper->SetAttribute(
"GridWidth",
UintegerValue(nMacroEnbSitesX));
632 lteHelper->SetEnbAntennaModelType(
"ns3::ParabolicAntennaModel");
633 lteHelper->SetEnbAntennaModelAttribute(
"Beamwidth",
DoubleValue(70));
634 lteHelper->SetEnbAntennaModelAttribute(
"MaxAttenuation",
DoubleValue(20.0));
635 lteHelper->SetEnbDeviceAttribute(
"DlEarfcn",
UintegerValue(macroEnbDlEarfcn));
636 lteHelper->SetEnbDeviceAttribute(
"UlEarfcn",
UintegerValue(macroEnbDlEarfcn + 18000));
637 lteHelper->SetEnbDeviceAttribute(
"DlBandwidth",
UintegerValue(macroEnbBandwidth));
638 lteHelper->SetEnbDeviceAttribute(
"UlBandwidth",
UintegerValue(macroEnbBandwidth));
640 lteHexGridEnbTopologyHelper->SetPositionAndInstallEnbDevice(macroEnbs);
645 lteHelper->AddX2Interface(macroEnbs);
651 mobility.SetPositionAllocator(positionAlloc);
655 lteHelper->SetEnbAntennaModelType(
"ns3::IsotropicAntennaModel");
656 lteHelper->SetEnbDeviceAttribute(
"DlEarfcn",
UintegerValue(homeEnbDlEarfcn));
657 lteHelper->SetEnbDeviceAttribute(
"UlEarfcn",
UintegerValue(homeEnbDlEarfcn + 18000));
658 lteHelper->SetEnbDeviceAttribute(
"DlBandwidth",
UintegerValue(homeEnbBandwidth));
659 lteHelper->SetEnbDeviceAttribute(
"UlBandwidth",
UintegerValue(homeEnbBandwidth));
661 lteHelper->SetEnbDeviceAttribute(
"CsgIndication",
BooleanValue(
true));
666 mobility.SetPositionAllocator(positionAlloc);
674 NS_LOG_LOGIC(
"randomly allocating macro UEs in " << macroUeBox <<
" speedMin "
675 << outdoorUeMinSpeed <<
" speedMax "
676 << outdoorUeMaxSpeed);
677 if (outdoorUeMaxSpeed != 0.0)
679 mobility.SetMobilityModel(
"ns3::SteadyStateRandomWaypointMobilityModel");
700 mobility.SetPositionAllocator(positionAlloc);
706 for (
auto it = macroUes.
Begin(); it != macroUes.
End(); ++it)
726 mobility.SetPositionAllocator(positionAlloc);
746 remoteHostContainer.
Create(1);
747 remoteHost = remoteHostContainer.
Get(0);
749 internet.Install(remoteHostContainer);
759 ipv4h.
SetBase(
"1.0.0.0",
"255.0.0.0");
762 remoteHostAddr = internetIpIfaces.
GetAddress(1);
767 remoteHostStaticRouting->AddNetworkRouteTo(
Ipv4Address(
"7.0.0.0"),
774 ueDevs.
Add(homeUeDevs);
775 ueDevs.
Add(macroUeDevs);
783 lteHelper->Attach(macroUeDevs);
784 lteHelper->Attach(homeUeDevs);
789 lteHelper->AttachToClosestEnb(macroUeDevs, macroEnbDevs);
794 for (ueDevIt = homeUeDevs.
Begin(), enbDevIt = homeEnbDevs.
Begin();
795 ueDevIt != homeUeDevs.
End();
796 ++ueDevIt, ++enbDevIt)
800 if (enbDevIt == homeEnbDevs.
End())
802 enbDevIt = homeEnbDevs.
Begin();
804 lteHelper->Attach(*ueDevIt, *enbDevIt);
813 uint16_t dlPort = 10000;
814 uint16_t ulPort = 20000;
822 startTimeSeconds->SetAttribute(
"Min",
DoubleValue(0));
823 startTimeSeconds->SetAttribute(
"Max",
DoubleValue(0.010));
829 startTimeSeconds->SetAttribute(
"Min",
DoubleValue(0.100));
830 startTimeSeconds->SetAttribute(
"Max",
DoubleValue(0.110));
839 ueStaticRouting->SetDefaultRoute(epcHelper->GetUeDefaultGatewayAddress(), 1);
841 for (
uint32_t b = 0; b < numBearersPerUe; ++b)
855 clientApps.Add(dlClientHelper.Install(remoteHost));
857 "ns3::UdpSocketFactory",
859 serverApps.Add(dlPacketSinkHelper.Install(ue));
867 "ns3::UdpSocketFactory",
869 serverApps.Add(ulPacketSinkHelper.Install(remoteHost));
878 "ns3::TcpSocketFactory",
881 clientApps.Add(dlClientHelper.Install(remoteHost));
883 "ns3::TcpSocketFactory",
885 serverApps.Add(dlPacketSinkHelper.Install(ue));
895 "ns3::TcpSocketFactory",
897 serverApps.Add(ulPacketSinkHelper.Install(remoteHost));
920 lteHelper->ActivateDedicatedEpsBearer(ueDevs.
Get(u), bearer, tft);
922 Time startTime =
Seconds(startTimeSeconds->GetValue());
933 ueDevs.
Add(homeUeDevs);
934 ueDevs.
Add(macroUeDevs);
938 for (
uint32_t b = 0; b < numBearersPerUe; ++b)
942 lteHelper->ActivateDataRadioBearer(ueDev, bearer);
955 remHelper->SetAttribute(
"Channel",
PointerValue(lteHelper->GetDownlinkSpectrumChannel()));
956 remHelper->SetAttribute(
"OutputFile",
StringValue(
"lena-dual-stripe.rem"));
965 remHelper->SetAttribute(
"UseDataChannel",
BooleanValue(
true));
969 remHelper->Install();
977 lteHelper->EnableMacTraces();
978 lteHelper->EnableRlcTraces();
981 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.
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.
void ConfigureDefaults()
Configure the default values.
Class for representing data rates.
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.
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...
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.
static ns3::GlobalValue g_nMacroEnbSites("nMacroEnbSites", "How many macro sites there are", ns3::UintegerValue(3), ns3::MakeUintegerChecker< uint32_t >())
How many macro sites there are.
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.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Ptr< const AttributeChecker > MakeBooleanChecker()
Ptr< const AttributeChecker > MakeIntegerChecker()
Ptr< const AttributeChecker > MakeUintegerChecker()
Ptr< const AttributeChecker > MakeDoubleChecker()
Ptr< const AttributeChecker > MakeStringChecker()
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