21 #include <ns3/core-module.h> 
   22 #include <ns3/network-module.h> 
   23 #include <ns3/mobility-module.h> 
   24 #include <ns3/internet-module.h> 
   25 #include <ns3/lte-module.h> 
   26 #include <ns3/config-store-module.h> 
   27 #include <ns3/buildings-module.h> 
   28 #include <ns3/point-to-point-helper.h> 
   29 #include <ns3/applications-module.h> 
   58   bool OverlapsWithAnyPrevious (
Box);
 
   72     m_nApartmentsX (nApartmentsX),
 
   74     m_xSize (nApartmentsX*10 + 20),
 
   77   m_xMinVar = CreateObject<UniformRandomVariable> ();
 
   80   m_yMinVar = CreateObject<UniformRandomVariable> ();
 
   88   for (uint32_t i = 0; i < n; ++i)
 
  101       NS_ASSERT_MSG (attempt < 100, 
"Too many failed attemtps to position apartment block. Too many blocks? Too small area?");
 
  110   NS_LOG_LOGIC (
"allocated non overlapping block " << box);
 
  113   gridBuildingAllocator = CreateObject<GridBuildingAllocator> ();
 
  125   gridBuildingAllocator->
Create (2);
 
  144   std::ofstream outFile;
 
  145   outFile.open (filename.c_str (), std::ios_base::out | std::ios_base::trunc);
 
  146   if (!outFile.is_open ())
 
  155       Box box = (*it)->GetBoundaries ();
 
  156       outFile << 
"set object " << index
 
  157               << 
" rect from " << box.
xMin  << 
"," << box.
yMin 
  158               << 
" to "   << box.
xMax  << 
"," << box.
yMax 
  159               << 
" front fs empty " 
  167   std::ofstream outFile;
 
  168   outFile.open (filename.c_str (), std::ios_base::out | std::ios_base::trunc);
 
  169   if (!outFile.is_open ())
 
  178       for (
int j = 0; j < nDevs; j++)
 
  184               outFile << 
"set label \"" << uedev->
GetImsi ()
 
  185                       << 
"\" at "<< pos.x << 
"," << pos.y << 
" left font \"Helvetica,4\" textcolor rgb \"grey\" front point pt 1 ps 0.3 lc rgb \"grey\" offset 0,0" 
  195   std::ofstream outFile;
 
  196   outFile.open (filename.c_str (), std::ios_base::out | std::ios_base::trunc);
 
  197   if (!outFile.is_open ())
 
  206       for (
int j = 0; j < nDevs; j++)
 
  212               outFile << 
"set label \"" << enbdev->
GetCellId ()
 
  213                       << 
"\" at "<< pos.x << 
"," << pos.y
 
  214                       << 
" left font \"Helvetica,4\" textcolor rgb \"white\" front  point pt 2 ps 0.3 lc rgb \"white\" offset 0,0" 
  223                                    "Number of femtocell blocks",
 
  225                                    ns3::MakeUintegerChecker<uint32_t> ());
 
  227                                         "Number of apartments along the X axis in a femtocell block",
 
  229                                         ns3::MakeUintegerChecker<uint32_t> ());
 
  233                                    ns3::MakeUintegerChecker<uint32_t> ());
 
  235                                           "How many macro sites there are",
 
  237                                           ns3::MakeUintegerChecker<uint32_t> ());
 
  239                                            "(minimum) number of sites along the X-axis of the hex grid",
 
  241                                            ns3::MakeUintegerChecker<uint32_t> ());
 
  243                                              "min distance between two nearby macro cell sites",
 
  245                                              ns3::MakeDoubleChecker<double> ());
 
  247                                             "how much the UE area extends outside the macrocell grid, " 
  248                                             "expressed as fraction of the interSiteDistance",
 
  250                                             ns3::MakeDoubleChecker<double> ());
 
  252                                           "How many macrocell UEs there are per square meter",
 
  254                                           ns3::MakeDoubleChecker<double> ());
 
  256                                                   "The HeNB deployment ratio as per 3GPP R4-092042",
 
  258                                                   ns3::MakeDoubleChecker<double> ());
 
  260                                                   "The HeNB activation ratio as per 3GPP R4-092042",
 
  262                                                   ns3::MakeDoubleChecker<double> ());
 
  264                                                "How many (on average) home UEs per HeNB there are in the simulation",
 
  266                                                ns3::MakeDoubleChecker<double> ());
 
  268                                               "TX power [dBm] used by macro eNBs",
 
  270                                               ns3::MakeDoubleChecker<double> ());
 
  272                                              "TX power [dBm] used by HeNBs",
 
  274                                              ns3::MakeDoubleChecker<double> ());
 
  276                                             "DL EARFCN used by macro eNBs",
 
  278                                             ns3::MakeUintegerChecker<uint16_t> ());
 
  280                                            "DL EARFCN used by HeNBs",
 
  282                                            ns3::MakeUintegerChecker<uint16_t> ());
 
  284                                              "bandwidth [num RBs] used by macro eNBs",
 
  286                                              ns3::MakeUintegerChecker<uint16_t> ());
 
  288                                             "bandwidth [num RBs] used by HeNBs",
 
  290                                             ns3::MakeUintegerChecker<uint16_t> ());
 
  292                                    "Total duration of the simulation [s]",
 
  294                                    ns3::MakeDoubleChecker<double> ());
 
  296                                        "if true, will generate a REM and then abort the simulation;" 
  297                                        "if false, will run the simulation normally (without generating any REM)",
 
  301                                    "Resource Block Id of Data Channel, for which REM will be generated;" 
  302                                    "default value is -1, what means REM will be averaged from all RBs of " 
  305                                    MakeIntegerChecker<int32_t> ());
 
  307                                "If true, will setup the EPC to simulate an end-to-end topology, " 
  308                                "with real IP applications over PDCP and RLC UM (or RLC AM by changing " 
  309                                "the default value of EpsBearerToRlcMapping e.g. to RLC_AM_ALWAYS). " 
  310                                "If false, only the LTE radio access will be simulated with RLC SM. ",
 
  314                                  "if true, will activate data flows in the downlink when EPC is being used. " 
  315                                  "If false, downlink flows won't be activated. " 
  316                                  "If EPC is not used, this parameter will be ignored.",
 
  320                                  "if true, will activate data flows in the uplink when EPC is being used. " 
  321                                  "If false, uplink flows won't be activated. " 
  322                                  "If EPC is not used, this parameter will be ignored.",
 
  326                                   "if true, the UdpClient application will be used. " 
  327                                   "Otherwise, the BulkSend application will be used over a TCP connection. " 
  328                                   "If EPC is not used, this parameter will be ignored.",
 
  332                                        "The path of the fading trace (by default no fading trace " 
  333                                        "is loaded, i.e., fading is not considered)",
 
  337                                            "How many bearers per UE there are in the simulation",
 
  339                                            ns3::MakeUintegerChecker<uint16_t> ());
 
  341                                           "SRS Periodicity (has to be at least " 
  342                                           "greater than the number of UEs per eNB)",
 
  344                                           ns3::MakeUintegerChecker<uint16_t> ());
 
  346                                              "Minimum speed value of macor UE with random waypoint model [m/s].",
 
  348                                              ns3::MakeDoubleChecker<double> ());
 
  350                                              "Maximum speed value of macor UE with random waypoint model [m/s].",
 
  352                                              ns3::MakeDoubleChecker<double> ());
 
  355 main (
int argc, 
char *argv[])
 
  365   cmd.
Parse (argc, argv);
 
  369   cmd.
Parse (argc, argv); 
 
  377   GlobalValue::GetValueByName (
"nBlocks", uintegerValue);
 
  378   uint32_t nBlocks = uintegerValue.
Get ();
 
  379   GlobalValue::GetValueByName (
"nApartmentsX", uintegerValue);
 
  380   uint32_t nApartmentsX = uintegerValue.
Get ();
 
  381   GlobalValue::GetValueByName (
"nFloors", uintegerValue);
 
  382   uint32_t nFloors = uintegerValue.
Get ();
 
  383   GlobalValue::GetValueByName (
"nMacroEnbSites", uintegerValue);
 
  384   uint32_t nMacroEnbSites = uintegerValue.
Get ();
 
  385   GlobalValue::GetValueByName (
"nMacroEnbSitesX", uintegerValue);
 
  386   uint32_t nMacroEnbSitesX = uintegerValue.
Get ();
 
  387   GlobalValue::GetValueByName (
"interSiteDistance", doubleValue);
 
  388   double interSiteDistance = doubleValue.
Get ();
 
  389   GlobalValue::GetValueByName (
"areaMarginFactor", doubleValue);
 
  390   double areaMarginFactor = doubleValue.
Get ();
 
  391   GlobalValue::GetValueByName (
"macroUeDensity", doubleValue);
 
  392   double macroUeDensity = doubleValue.
Get ();
 
  393   GlobalValue::GetValueByName (
"homeEnbDeploymentRatio", doubleValue);
 
  394   double homeEnbDeploymentRatio = doubleValue.
Get ();
 
  395   GlobalValue::GetValueByName (
"homeEnbActivationRatio", doubleValue);
 
  396   double homeEnbActivationRatio = doubleValue.
Get ();
 
  397   GlobalValue::GetValueByName (
"homeUesHomeEnbRatio", doubleValue);
 
  398   double homeUesHomeEnbRatio = doubleValue.
Get ();
 
  399   GlobalValue::GetValueByName (
"macroEnbTxPowerDbm", doubleValue);
 
  400   double macroEnbTxPowerDbm = doubleValue.
Get ();
 
  401   GlobalValue::GetValueByName (
"homeEnbTxPowerDbm", doubleValue);
 
  402   double homeEnbTxPowerDbm = doubleValue.
Get ();
 
  403   GlobalValue::GetValueByName (
"macroEnbDlEarfcn", uintegerValue);
 
  404   uint16_t macroEnbDlEarfcn = uintegerValue.
Get ();
 
  405   GlobalValue::GetValueByName (
"homeEnbDlEarfcn", uintegerValue);
 
  406   uint16_t homeEnbDlEarfcn = uintegerValue.
Get ();
 
  407   GlobalValue::GetValueByName (
"macroEnbBandwidth", uintegerValue);
 
  408   uint16_t macroEnbBandwidth = uintegerValue.
Get ();
 
  409   GlobalValue::GetValueByName (
"homeEnbBandwidth", uintegerValue);
 
  410   uint16_t homeEnbBandwidth = uintegerValue.
Get ();
 
  411   GlobalValue::GetValueByName (
"simTime", doubleValue);
 
  412   double simTime = doubleValue.
Get ();
 
  413   GlobalValue::GetValueByName (
"epc", booleanValue);
 
  414   bool epc = booleanValue.
Get ();
 
  415   GlobalValue::GetValueByName (
"epcDl", booleanValue);
 
  416   bool epcDl = booleanValue.
Get ();
 
  417   GlobalValue::GetValueByName (
"epcUl", booleanValue);
 
  418   bool epcUl = booleanValue.
Get ();
 
  419   GlobalValue::GetValueByName (
"useUdp", booleanValue);
 
  420   bool useUdp = booleanValue.
Get ();
 
  421   GlobalValue::GetValueByName (
"generateRem", booleanValue);
 
  422   bool generateRem = booleanValue.
Get ();
 
  423   GlobalValue::GetValueByName (
"remRbId", integerValue);
 
  424   int32_t remRbId = integerValue.
Get ();
 
  425   GlobalValue::GetValueByName (
"fadingTrace", stringValue);
 
  426   std::string fadingTrace = stringValue.
Get ();
 
  427   GlobalValue::GetValueByName (
"numBearersPerUe", uintegerValue);
 
  428   uint16_t numBearersPerUe = uintegerValue.
Get ();
 
  429   GlobalValue::GetValueByName (
"srsPeriodicity", uintegerValue);
 
  430   uint16_t srsPeriodicity = uintegerValue.
Get ();
 
  431   GlobalValue::GetValueByName (
"outdoorUeMinSpeed", doubleValue);
 
  432   uint16_t outdoorUeMinSpeed = doubleValue.
Get ();
 
  433   GlobalValue::GetValueByName (
"outdoorUeMaxSpeed", doubleValue);
 
  434   uint16_t outdoorUeMaxSpeed = doubleValue.
Get ();
 
  440   if (nMacroEnbSites > 0)
 
  442       uint32_t currentSite = nMacroEnbSites -1;
 
  443       uint32_t biRowIndex = (currentSite / (nMacroEnbSitesX + nMacroEnbSitesX + 1));
 
  444       uint32_t biRowRemainder = currentSite % (nMacroEnbSitesX + nMacroEnbSitesX + 1);
 
  445       uint32_t rowIndex = biRowIndex*2 + 1;
 
  446       if (biRowRemainder >= nMacroEnbSitesX)
 
  450       uint32_t nMacroEnbSitesY = rowIndex;
 
  453       macroUeBox = 
Box (-areaMarginFactor*interSiteDistance, 
 
  454                         (nMacroEnbSitesX + areaMarginFactor)*interSiteDistance, 
 
  455                         -areaMarginFactor*interSiteDistance, 
 
  456                         (nMacroEnbSitesY -1)*interSiteDistance*sqrt (0.75) + areaMarginFactor*interSiteDistance,
 
  462       macroUeBox = 
Box (0, 150, 0, 150, ueZ, ueZ);
 
  466   blockAllocator.Create (nBlocks);
 
  469   uint32_t nHomeEnbs = round (4 * nApartmentsX * nBlocks * nFloors * homeEnbDeploymentRatio * homeEnbActivationRatio);
 
  471   uint32_t nHomeUes = round (nHomeEnbs * homeUesHomeEnbRatio);
 
  473   double macroUeAreaSize = (macroUeBox.
xMax - macroUeBox.
xMin) * (macroUeBox.
yMax - macroUeBox.
yMin);
 
  474   uint32_t nMacroUes = round (macroUeAreaSize * macroUeDensity);
 
  475   NS_LOG_LOGIC (
"nMacroUes = " << nMacroUes << 
" (density=" << macroUeDensity << 
")");
 
  478   homeEnbs.
Create (nHomeEnbs);
 
  480   macroEnbs.
Create (3 * nMacroEnbSites);
 
  482   homeUes.
Create (nHomeUes);
 
  484   macroUes.
Create (nMacroUes);
 
  502   if (!fadingTrace.empty ())
 
  512       epcHelper = CreateObject<PointToPointEpcHelper> ();
 
  519   BuildingsHelper::Install (macroEnbs);
 
  546   BuildingsHelper::Install (homeEnbs);
 
  558   positionAlloc = CreateObject<SameRoomPositionAllocator> (homeEnbs);
 
  561   BuildingsHelper::Install (homeUes);
 
  567   NS_LOG_LOGIC (
"randomly allocating macro UEs in " << macroUeBox << 
" speedMin " << outdoorUeMinSpeed << 
" speedMax " << outdoorUeMaxSpeed);
 
  568   if (outdoorUeMaxSpeed!=0.0)
 
  584       positionAlloc = CreateObject<RandomBoxPositionAllocator> ();
 
  592            it != macroUes.
End ();
 
  595           (*it)->Initialize ();
 
  600       positionAlloc = CreateObject<RandomBoxPositionAllocator> ();
 
  616   BuildingsHelper::Install (macroUes);
 
  633       remoteHostContainer.
Create (1);
 
  634       remoteHost = remoteHostContainer.
Get (0);
 
  636       internet.
Install (remoteHostContainer);
 
  646       ipv4h.
SetBase (
"1.0.0.0", 
"255.0.0.0");
 
  649       remoteHostAddr = internetIpIfaces.
GetAddress (1);
 
  658       ueDevs.
Add (homeUeDevs);
 
  659       ueDevs.
Add (macroUeDevs);
 
  667       lteHelper->
Attach (macroUeDevs);
 
  668       lteHelper->
Attach (homeUeDevs);
 
  678       for (ueDevIt = homeUeDevs.
Begin (), enbDevIt = homeEnbDevs.
Begin ();
 
  679            ueDevIt != homeUeDevs.
End (); ++ueDevIt, ++enbDevIt)
 
  683           if (enbDevIt == homeEnbDevs.
End ())
 
  685               enbDevIt = homeEnbDevs.
Begin ();
 
  687           lteHelper->
Attach (*ueDevIt, *enbDevIt);
 
  696       uint16_t dlPort = 10000;
 
  697       uint16_t ulPort = 20000;
 
  716       for (uint32_t u = 0; u < ues.
GetN (); ++u)
 
  723           for (uint32_t b = 0; b < numBearersPerUe; ++b)
 
  737                       clientApps.
Add (dlClientHelper.Install (remoteHost));
 
  740                       serverApps.
Add (dlPacketSinkHelper.Install (ue));
 
  746                       clientApps.
Add (ulClientHelper.Install (ue));
 
  749                       serverApps.
Add (ulPacketSinkHelper.Install (remoteHost));
 
  760                       clientApps.
Add (dlClientHelper.Install (remoteHost));
 
  763                       serverApps.
Add (dlPacketSinkHelper.Install (ue));
 
  771                       clientApps.
Add (ulClientHelper.Install (ue));
 
  774                       serverApps.
Add (ulPacketSinkHelper.Install (remoteHost));
 
  796                   EpsBearer bearer (EpsBearer::NGBR_VIDEO_TCP_DEFAULT);
 
  800               serverApps.
Start (startTime);
 
  801               clientApps.
Start (startTime);
 
  811       ueDevs.
Add (homeUeDevs);
 
  812       ueDevs.
Add (macroUeDevs);
 
  813       for (uint32_t u = 0; u < ueDevs.
GetN (); ++u)
 
  816           for (uint32_t b = 0; b < numBearersPerUe; ++b)
 
  825   BuildingsHelper::MakeMobilityModelConsistent ();
 
  834       remHelper = CreateObject<RadioEnvironmentMapHelper> ();
 
  854       Simulator::Stop (
Seconds (simTime));
 
  870   Simulator::Destroy ();
 
Ptr< const AttributeChecker > MakeStringChecker(void)
 
holds a vector of ns3::Application pointers. 
 
Introspection did not find any typical Config paths. 
 
Iterator Begin(void) const 
Get an iterator which refers to the first NetDevice in the container. 
 
uint8_t Add(PacketFilter f)
add a PacketFilter to the Traffic Flow Template 
 
Simulation virtual time values and global simulation resolution. 
 
void SetPathlossModelAttribute(std::string n, const AttributeValue &v)
Set an attribute for the path loss models to be created. 
 
double zMin
The z coordinate of the down bound of the box. 
 
bool AreOverlapping(Box a, Box b)
 
std::string Get(void) const 
 
void PrintGnuplottableEnbListToFile(std::string filename)
 
AttributeValue implementation for Boolean. 
 
NetDeviceContainer InstallEnbDevice(NodeContainer c)
Create a set of eNodeB devices. 
 
A helper to make it easier to instantiate an ns3::BulkSendApplication on a set of nodes...
 
holds a vector of std::pair of Ptr and interface index. 
 
uint16_t GetCellId() const 
 
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())
 
void SetDefaultRoute(Ipv4Address nextHop, uint32_t interface, uint32_t metric=0)
Add a default route to the static routing table. 
 
std::vector< Ptr< Node > >::const_iterator Iterator
Node container iterator. 
 
static ns3::GlobalValue g_macroEnbTxPowerDbm("macroEnbTxPowerDbm","TX power [dBm] used by macro eNBs", ns3::DoubleValue(46.0), ns3::MakeDoubleChecker< double >())
 
Ptr< T > GetObject(void) const 
Get a pointer to the requested aggregated Object. 
 
static ns3::GlobalValue g_homeEnbBandwidth("homeEnbBandwidth","bandwidth [num RBs] used by HeNBs", ns3::UintegerValue(25), ns3::MakeUintegerChecker< uint16_t >())
 
Hold variables of type string. 
 
Ptr< UniformRandomVariable > m_xMinVar
 
Ptr< NetDevice > Get(uint32_t i) const 
Get the Ptr stored in this container at a given index. 
 
static ns3::GlobalValue g_outdoorUeMaxSpeed("outdoorUeMaxSpeed","Maximum speed value of macor UE with random waypoint model [m/s].", ns3::DoubleValue(0.0), ns3::MakeDoubleChecker< double >())
 
static ns3::GlobalValue g_interSiteDistance("interSiteDistance","min distance between two nearby macro cell sites", ns3::DoubleValue(500), ns3::MakeDoubleChecker< double >())
 
NetDeviceContainer Install(NodeContainer c)
 
a class to represent an Ipv4 address mask 
 
void Add(ApplicationContainer other)
Append the contents of another ApplicationContainer to the end of this container. ...
 
static Vector GetPosition(Ptr< Node > node)
 
virtual Ptr< Node > GetPgwNode()
 
Hold a signed integer type. 
 
void Attach(NetDeviceContainer ueDevices)
Enables automatic attachment of a set of UE devices to a suitable cell using Idle mode initial cell s...
 
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name. 
 
Time MilliSeconds(uint64_t value)
Construct a Time in the indicated unit. 
 
void EnableRlcTraces(void)
Enable trace sinks for RLC layer. 
 
aggregate IP/TCP/UDP functionality to existing Nodes. 
 
uint16_t localPortEnd
end of the port number range of the UE 
 
Iterator End(void) const 
Get an iterator which indicates past-the-last Node in the container. 
 
void SetUeDeviceAttribute(std::string n, const AttributeValue &v)
Set an attribute for the UE devices (LteUeNetDevice) to be created. 
 
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 >())
 
A helper to make it easier to instantiate an ns3::PacketSinkApplication on a set of nodes...
 
void SetLteHelper(Ptr< LteHelper > h)
Set the LteHelper to be used to actually create the EnbNetDevices. 
 
Build a set of PointToPointNetDevice objects. 
 
FemtocellBlockAllocator(Box area, uint32_t nApartmentsX, uint32_t nFloors)
 
hold a so-called 'global value'. 
 
double xMax
The x coordinate of the right bound of the box. 
 
void ActivateDataRadioBearer(NetDeviceContainer ueDevices, EpsBearer bearer)
Activate a Data Radio Bearer on a given UE devices (for LTE-only simulation). 
 
void SetDeviceAttribute(std::string name, const AttributeValue &value)
Set an attribute value to be propagated to each NetDevice created by the helper. 
 
uint8_t ActivateDedicatedEpsBearer(NetDeviceContainer ueDevices, EpsBearer bearer, Ptr< EpcTft > tft)
Activate a dedicated EPS bearer on a given set of UE devices. 
 
NetDeviceContainer SetPositionAndInstallEnbDevice(NodeContainer c)
Position the nodes on a hex grid and install the corresponding EnbNetDevices with antenna boresight c...
 
static ns3::GlobalValue g_macroUeDensity("macroUeDensity","How many macrocell UEs there are per square meter", ns3::DoubleValue(0.00002), ns3::MakeDoubleChecker< double >())
 
Ptr< UniformRandomVariable > m_yMinVar
 
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())
 
double yMax
The y coordinate of the top bound of the box. 
 
uint32_t GetN(void) const 
Get the number of Ptr stored in this container. 
 
uint32_t GetN(void) const 
Get the number of Ptr stored in this container. 
 
Class for representing data rates. 
 
void EnablePdcpTraces(void)
Enable trace sinks for PDCP layer. 
 
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 >())
 
void AttachToClosestEnb(NetDeviceContainer ueDevices, NetDeviceContainer enbDevices)
Manual attachment of a set of UE devices to the network via the closest eNodeB (with respect to dista...
 
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())
 
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())
 
Keep track of the current position and velocity of an object. 
 
This class contains the specification of EPS Bearers. 
 
static ns3::GlobalValue g_homeEnbActivationRatio("homeEnbActivationRatio","The HeNB activation ratio as per 3GPP R4-092042", ns3::DoubleValue(0.5), ns3::MakeDoubleChecker< double >())
 
void Install(Ptr< Node > node) const 
"Layout" a single node according to the current position allocator type. 
 
Create a client application which sends UDP packets carrying a 32bit sequence number and a 64 bit tim...
 
AttributeValue implementation for Time. 
 
static ns3::GlobalValue g_simTime("simTime","Total duration of the simulation [s]", ns3::DoubleValue(0.25), ns3::MakeDoubleChecker< double >())
 
static ns3::GlobalValue g_nMacroEnbSites("nMacroEnbSites","How many macro sites there are", ns3::UintegerValue(3), ns3::MakeUintegerChecker< uint32_t >())
 
static ns3::GlobalValue g_homeEnbDeploymentRatio("homeEnbDeploymentRatio","The HeNB deployment ratio as per 3GPP R4-092042", ns3::DoubleValue(0.2), ns3::MakeDoubleChecker< double >())
 
void Add(NetDeviceContainer other)
Append the contents of another NetDeviceContainer to the end of this container. 
 
BuildingContainer Create(uint32_t n) const 
Create a set of buildings allocated on a grid. 
 
Hold an unsigned integer type. 
 
static ns3::GlobalValue g_numBearersPerUe("numBearersPerUe","How many bearers per UE there are in the simulation", ns3::UintegerValue(1), ns3::MakeUintegerChecker< uint16_t >())
 
static ns3::GlobalValue g_outdoorUeMinSpeed("outdoorUeMinSpeed","Minimum speed value of macor UE with random waypoint model [m/s].", ns3::DoubleValue(0.0), ns3::MakeDoubleChecker< double >())
 
holds a vector of ns3::NetDevice pointers 
 
Ptr< NetDevice > GetDevice(uint32_t index) const 
Retrieve the index-th NetDevice associated to this node. 
 
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 >())
 
std::vector< Ptr< Building > >::const_iterator Iterator
 
static ns3::GlobalValue g_homeEnbDlEarfcn("homeEnbDlEarfcn","DL EARFCN used by HeNBs", ns3::UintegerValue(100), ns3::MakeUintegerChecker< uint16_t >())
 
void Start(Time start)
Arrange for all of the Applications in this container to Start() at the Time given as a parameter...
 
double yMin
The y coordinate of the bottom bound of the box. 
 
Parse command-line arguments. 
 
#define NS_LOG_LOGIC(msg)
Use NS_LOG to output a message of level LOG_LOGIC. 
 
void SetEnbAntennaModelType(std::string type)
Set the type of antenna model to be used by eNodeB devices. 
 
void SetSpectrumChannelType(std::string type)
Set the type of spectrum channel to be used in both DL and UL. 
 
void ConfigureDefaults(void)
 
Access to the Ipv4 forwarding table, interfaces, and configuration. 
 
uint32_t GetNDevices(void) const 
 
void SetFadingModelAttribute(std::string n, const AttributeValue &v)
Set an attribute for the fading model to be created (both DL and UL). 
 
void PrintGnuplottableUeListToFile(std::string filename)
 
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 >())
 
uint16_t remotePortEnd
end of the port number range of the remote host 
 
static ns3::GlobalValue g_nApartmentsX("nApartmentsX","Number of apartments along the X axis in a femtocell block", ns3::UintegerValue(10), ns3::MakeUintegerChecker< uint32_t >())
 
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())
 
virtual Ipv4Address GetUeDefaultGatewayAddress()
 
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())
 
static ns3::GlobalValue g_nBlocks("nBlocks","Number of femtocell blocks", ns3::UintegerValue(1), ns3::MakeUintegerChecker< uint32_t >())
 
Every class exported by the ns3 library is enclosed in the ns3 namespace. 
 
keep track of a set of node pointers. 
 
Hold objects of type Ptr. 
 
static ns3::GlobalValue g_nFloors("nFloors","Number of floors", ns3::UintegerValue(1), ns3::MakeUintegerChecker< uint32_t >())
 
std::vector< Ptr< Node > >::const_iterator Iterator
Node container iterator. 
 
static ns3::GlobalValue g_homeEnbTxPowerDbm("homeEnbTxPowerDbm","TX power [dBm] used by HeNBs", ns3::DoubleValue(20.0), ns3::MakeDoubleChecker< double >())
 
Ptr< const AttributeChecker > MakeBooleanChecker(void)
 
Iterator Begin(void) const 
Get an iterator which refers to the first Node in the container. 
 
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()
Deploy the RemSpectrumPhy objects that generate the map according to the specified settings...
 
void Install(std::string nodeName) const 
Aggregate implementations of the ns3::Ipv4, ns3::Ipv6, ns3::Udp, and ns3::Tcp classes onto the provid...
 
void AddX2Interface(NodeContainer enbNodes)
Create an X2 interface between all the eNBs in a given set. 
 
Ptr< T > Create(void)
Create class instances by constructors with varying numbers of arguments and return them by Ptr...
 
double zMax
The z coordinate of the up bound of the box. 
 
std::list< Box > m_previousBlocks
 
void SetChannelAttribute(std::string name, const AttributeValue &value)
Set an attribute value to be propagated to each Channel created by the helper. 
 
#define NS_ASSERT_MSG(condition, message)
At runtime, in debugging builds, if this condition is not true, the program prints the message to out...
 
NetDeviceContainer InstallUeDevice(NodeContainer c)
Create a set of UE devices. 
 
virtual Ipv4InterfaceContainer AssignUeIpv4Address(NetDeviceContainer ueDevices)
Assign IPv4 addresses to UE devices. 
 
void SetBuildingAttribute(std::string n, const AttributeValue &v)
Set an attribute to be used for each new building to be created. 
 
Helper class used to assign positions and mobility models to nodes. 
 
void AddNetworkRouteTo(Ipv4Address network, Ipv4Mask networkMask, Ipv4Address nextHop, uint32_t interface, uint32_t metric=0)
Add a network route to the static routing table. 
 
Ipv4 addresses are stored in host order in this class. 
 
Ipv4InterfaceContainer Assign(const NetDeviceContainer &c)
Assign IP addresses to the net devices specified in the container based on the current network prefix...
 
void Add(NodeContainer other)
Append the contents of another NodeContainer to the end of this container. 
 
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...
 
void SetEpcHelper(Ptr< EpcHelper > h)
Set the EpcHelper to be used to setup the EPC network in conjunction with the setup of the LTE radio ...
 
static ns3::GlobalValue g_macroEnbBandwidth("macroEnbBandwidth","bandwidth [num RBs] used by macro eNBs", ns3::UintegerValue(25), ns3::MakeUintegerChecker< uint16_t >())
 
Helper class that adds ns3::Ipv4StaticRouting objects. 
 
AttributeValue implementation for DataRate. 
 
Ptr< Node > Get(uint32_t i) const 
Get the Ptr stored in this container at a given index. 
 
std::vector< Ptr< NetDevice > >::const_iterator Iterator
NetDevice container iterator. 
 
Time Seconds(double value)
Construct a Time in the indicated unit. 
 
void SetDefault(std::string name, const AttributeValue &value)
 
void PrintGnuplottableBuildingListToFile(std::string filename)
 
void SetEnbAntennaModelAttribute(std::string n, const AttributeValue &v)
Set an attribute for the eNodeB antenna model to be created. 
 
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 >())
 
void Parse(int argc, char *argv[])
Parse the program arguments. 
 
A helper class to make life easier while doing simple IPv4 address assignment in scripts. 
 
#define NS_LOG_ERROR(msg)
Use NS_LOG to output a message of level LOG_ERROR. 
 
void Create(uint32_t n)
Create n nodes and append pointers to them to the end of this NodeContainer. 
 
void EnableMacTraces(void)
Enable trace sinks for MAC layer. 
 
bool OverlapsWithAnyPrevious(Box)
 
void SetPositionAllocator(Ptr< PositionAllocator > allocator)
Set the position allocator which will be used to allocate the initial position of every node initiali...
 
Iterator End(void) const 
Get an iterator which indicates past-the-last NetDevice in the container. 
 
This class can be used to hold variables of floating point type such as 'double' or 'float'...
 
void SetAttribute(std::string name, const AttributeValue &value)
Set a single attribute, raising fatal errors if unsuccessful. 
 
The eNodeB device implementation. 
 
static ns3::GlobalValue g_macroEnbDlEarfcn("macroEnbDlEarfcn","DL EARFCN used by macro eNBs", ns3::UintegerValue(100), ns3::MakeUintegerChecker< uint16_t >())
 
uint16_t remotePortStart
start of the port number range of the remote host 
 
double xMin
The x coordinate of the left bound of the box. 
 
void SetBase(Ipv4Address network, Ipv4Mask mask, Ipv4Address base="0.0.0.1")
Set the base network number, network mask and base address. 
 
Implement the data structure representing a TrafficFlowTemplate Packet Filter. 
 
void SetEnbDeviceAttribute(std::string n, const AttributeValue &v)
Set an attribute for the eNodeB devices (LteEnbNetDevice) to be created. 
 
Ipv4Address GetAddress(uint32_t i, uint32_t j=0) const 
 
uint16_t localPortStart
start of the port number range of the UE 
 
The LteUeNetDevice class implements the UE net device.