An extension of the ns-3 LTE module to simulate fractional frequency reuse algorithms

We developed an extension for the LTE module of the ns-3 simulator in order to allow the simulation of Fractional Frequency Reuse algorithms and the evaluation of their performance in an LTE scenario. In this paper, we describe the technical components of such extension, namely the new API for Fractional Frequency Reuse algorithms, the implementation of several state-of-the-art-algorithms based on such API, and the implementation of the LTE downlink and uplink power control functionality which are required by many of these algorithms. Additionally, we provide an overview of the test suites that are included with our extension in order to validate its correct functionality, and discuss some example scenarios illustrating how our extension can be used in an LTE simulation.


INTRODUCTION
Fractional Frequency Reuse is one of the distinguished Radio Resource Management features of the Long Term Evolution (LTE) technology. Unlike earlier cellular technologies such as 2G and 3G, where each cell used the same carrier frequency and system bandwidth to serve all of its users, FFR exploits LTE's dynamic MAC scheduling and power control functionalities in order to provide each User Equipment (UE) with a different level of protection against intercell interference. In general, FFR works by partitioning the system bandwidth of each base station (eNB) into sets of Resource Blocks (RBs) that have a different frequency reuse and possibly different transmission power setting, and then assigning UEs to one of these sets of RBs depending on how much the user is vulnerable to inter-cell interference, e.g., based on whether the UE is located at the cell edge or at the cell center. FFR algorithms fit in the general category of Self Organized Network algorithms to be deployed in LTE eNBs, either in a distributed fashion or together with a centralized controller. The LTE standard provides means to deploy FFR algorithms; however, the design of FFR algorithms is left open for LTE equipment vendors to design their own solutions as a product differentiation factor. For this reason, the design of well-performing FFR solutions has been receiving a significant attention by researchers, both in the industry and within academia.
Simulation is recognised to be one of the key tools for the design of SON algorithms [1]. As a consequence, the possibility of implementing and evaluating FFR algorithms in a simulator is very important for the research community. In addition, the availability of state-of-the-art FFR algorithm implementations is of primarily importance in order to be able to compare the performance of a newly proposed FFR scheme. On this matter, the ns-3 module of the LTE simulator, commonly referred to as LENA [2], is one of the most widely used simulation tools within the research community; unfortunately, as of the version ns-3.20, the inclusion of FFR algorithms was not explicitly supported, nor were the uplink and downlink power control functionality which are an important aspect of the most advanced FFR schemes.
In this paper, we present the work that we carried out as part of the Google Summer of Code 2014 program in order to bridge this gap. The main contributions of this work are: i) the extension of LENA with a new API to support the inclusion of FFR algorithms in an ns-3 LTE simulation, ii) the implementation of a set of well-known state-of-the-art FFR algorithms for ns-3, and iii) the implementation of the uplink and downlink power control functionality in LENA.

FRACTIONAL FREQUENCY REUSE
As briefly anticipated in the introduction, we introduced FFR support in LENA by providing a new API to support the inclusion of FFR algorithms, and by subsequently im- plementing a set of state-of-the-art FFR algorithms using such API. In the following subsections, we cover each of these aspect in details; additionally, we discuss how the FFR functionality is to be used within simulation programs, and provide an overview of the test coverage of the newly introduced FFR code.

FFR API
The FFR API that we designed consists in a new abstract base class named LteFfrAlgorithm which is designed to be used for the implementation of FFR algorithms. Following the same Service Access Point (SAP) design approach used for other parts of the LENA code [1], two new pairs of SAPs have been defined, respectively one between the FFR algorithm and the RRC layer, and the other between the FFR algorithm and the LTE MAC Scheduler, as depicted in Figure 1.
The FFR-RRC SAP takes care of control plane interactions. Its provider part contains 4 functions: SetCellId and SetBandwidth are used during cell configuration to configure FFR entity; ReportUeMeas is used to pass UE measurement reports to the FFR instance, and RecvLoadInformation is used to provide distributed FFR algorithms with the Load Information [3] received from neighbor eNBs over the X2 interface. The user part is dedicated for sending messages from FFR to RRC: the AddUeMeasReportConfig-ForFfr method allows the FFR algorithms instance to set the UE measurement configuration; SetPdschConfigDedicated is used for downlink power control, which will be described in Section 3; finally, SendLoadInformation is used to send Load Information to neighbor eNBs over the X2 interface.
The FFR-MAC SAP interface is used for data plane interactions between the MAC scheduler and the FFR instance, which are always initiated by the MAC scheduler. The provider part of the FFR-MAC SAP defines the following methods: the ReportDlCqiInfo and ReportUlCqiInfo methods are used to report CQI information to the FFR instance; GetTpc is used to retrieve the uplink power control command from the FFR instance, whose functionality will be described in Section 4.1; finally, GetMinContinuousUl-Bandwidth is used by the scheduler to determine the minimal continuous uplink bandwidth, in order to comply with the characteristic of the SC-FDMA modulation that is adopted by the LTE standard for the uplink. Note that no data plane interaction is initiated by the FFR instance, hence the FFR-MAC SAP provides no method, and is omitted from Figure 1.
In order to support the execution of FFR algorithms, the functioning of the LTE MAC schedulers was modified. The resulting sequence diagram of the MAC scheduling process is shown in Figure 2: at the beginning of the downlink scheduling process, the MAC scheduler calls the GetAvailableDl-Rbg method to ask the FFR entity for the available Resource Block Groups (RBG) for transmission. In the response it gets a bitmap corresponding to the RGBs availability determined by the FFR algorithm being used. Before assigning some RBGs to an UE, the LTE MAC scheduler calls the IsDlRbgAvailableForUe method to asks the FFR entity whether the assignment is allowed for that UE. If the answer is positive, the LTE MAC scheduler performs the assignment; if not, the scheduler will skip this RBG for this UE, and typically check etiher different RBGs for the same UE, or different UEs. The same scheduling procedure is performed for uplink transmissions. This approach has been implemented only on a subset of the LTE MAC schedulers available in ns-3, i.e., the PF, PSS, CQA, TD-TBFQ, and FD-TBFQ schedulers, which are the most commonly used.

Implemented FFR Algorithms
In addition to defining a FFR API, we implemented a set of 7 state-of-the-art FFR algorithms known from the scientific literature. The selected algorithms are described in [4], [5] and [6]. Their ns-3 implementation is discussed in the following.

No-op Frequency Reuse
The No-op Frequency Reuse algorithm is an implementation of the Full Frequency Reuse scheme whose rationale is depicted in Figure 3. In this scheme, no frequency partitioning is performed between cells, so each eNB uses the  entire system bandwidth, i.e., the Frequency Reuse Factor (FRF) [7] equals 1, and transmits with a power that is constant over over all RBs. This is the simplest frequency plan for an LTE network, which allows a high peak data rate, but yields poor performance for cell-edge users due to heavy interference from neighboring cells [4].
The No-op Frequency Reuse algorithm allows the MAC scheduler to use the entire bandwidth and to assign any RB to any UE. In previous versions of ns-3, this was the only possible scheme so, in some sense, our implementation does not add any functionality; however, it had to be created as a separate entity which derives from LteFfrAlgorithm class and fits to new API, in order to allow simulation users to switch between this scheme and other FFR schemes.

Hard Frequency Reuse
The Hard Frequency Reuse scheme consists in dividing the system bandwidth into N disjoint sub-bands, typically with N ∈ {3, 4, 7}, and allocating adjacent eNBs on different sub-bands. Figure 4 shows an example for the case N = 3. For this algorithm, FRF = N . This scheme allows to reduce inter-cell interference and improve the performance of cell-edge users. However, since each sub-band can be used exclusively by one eNB, the total network capacity is lower.

Strict Frequency Reuse
In the Strict Frequency Reuse scheme, the system bandwidth is divided into two subsets, namely, the common subband and the private sub-band. The operation of the scheme is depicted in Figure 5. The common sub-band has FRF of 1 as in Full FR scheme, while the private sub-band has FRF of N as in the Hard FR scheme. Strict FR can be seen as combination of these two frequency plans aimed at avoiding their shortcomings. As can be noted, Strict FR requires a total of 4 sub-bands and allows to achieve an effective FRF between 1 and 3. The common sub-band is allocated to cellcenter UEs, while the private sub-band is used to serve the cell-edge UEs. In this way, cell-edge UEs do not share any  resources with any other UEs, thus reducing the interference. On the other side, a good spectral efficiency is achieved by fully reusing the common RBs in the inner part of the cell. In order to decide in which sub-band an UE should be served, the Strict FR algorithm uses UE measurements collected by the RRC, and compares them with reference threshold values that can be tuned using the ns-3 attribute system. If the RSRQ reported by a UE is greater than threshold, that UE is considered to be located in cell-center area and it is served in common sub-band. Otherwise, it is treated as a cell-edge UE and its transmissions are scheduled in the private sub-band. Additionally, a different power level can be used between common and private sub-bands; this allows to reduce even further the interference.

Soft Frequency Reuse
According to the Soft Frequency Reuse (SFR) scheme, all eNBs are allowed to utilize the entire system bandwidth. However, two sub-bands are identified where the UEs are served with different power levels: the cell-edge sub-band uses 1/3 of the available spectrum and is orthogonal among neighboring cells, whereas the cell-center sub-band in cell c consists of the resources which are not used as cell-edge subband in cell c. Since the cell-center UEs share the frequencies with neighboring cells, they are usually served with lower power level than the cell-edge UEs. SFR is more bandwidth efficient than Strict FR, because it uses the entire system bandwidth, but it also increases the level of interferences experienced by both cell center and edge users.
There are two possible versions of SFR scheme. In the first version, the sub-band dedicated for the cell-edge UEs may also be used by the cell-center UEs, but with reduced power level and only if it is not occupied by the cell-edge UEs.  same cell, but they can still be served in the cell-edge subbands used by the neighboring cells, provided that they use reduced power level. This second version of SFR, whose frequency and power allocation strategy is depicted in Figure 7, allows to reduce the inter-cell interference at the cell-edge, though at the expense of a lower spectrum efficiency. In order to determine the power level and frequency resources for UE, the Soft FR algorithm (in both versions) utilizes UE measurements and compares them to a given threshold value. The signal strength threshold and the power level for the inner and outer cell areas can be configured by using the ns-3 attribute system.

Soft Fractional Frequency Reuse
The frequency and power plan of Soft Fractional Frequency Reuse (SFFR) algorithm are represented in Figure 8. As can be seen, cells are divided into three concentric areas, namely, center area, middle area and edge area, within which the UEs are served with different power levels. Usually, the power level is the lowest in the center area, and increases towards cell edge. SFFR is a combination of Strict and Soft Frequency Reuse schemes. While Strict FR does not use the sub-bands allocated for the outer region in the adjacent cells, SFFR uses these sub-bands for the center UEs with a low transmit power. As a result, like SFR, SFFR allows each eNB to use the whole system bandwidth, with a non-uniform power profile. Unlike SFR and like Strict FR, SFFR uses a common sub-band, which allows to enhance the throughput of the inner users.
The SFFR algorithm requires three different power levels to be configured, one for each area. Moreover, two RSRQ threshold values are needed in order to determine in which of the three sub-bands each UE should be allocated.

Enhanced Fractional Frequency Reuse
The Enhanced Fractional Frequency Reuse (EFFR) algorithm [6] defines 3 cell types for directly neighboring cells, and assigns a part of the whole bandwidth to each cell type. This sub-band is named Primary Segment: it is orthogonal among cells of different cell type, and it is further divided into a reuse-1 part and reuse-3 part. The former part can be reused in each cell regardless its cell-type, while latter part can only be exclusively reused in cells of the same cell-type, i.e. the reuse-3 RBs cannot be reused by directly neighboring cells. The reuse-1 RBs which are not used by a cell in Primary Segment, constitute its Secondary Segment. As a consequence, the reuse-1 RBs of the Primary Segment of a cell-type at the same time are a part of the Secondary Segments belonging to the other two cell-types. Figure 9 presents the frequency and power plan for EFFR.
A cell can occupy all the RBs of its Primary Segment without any restriction, while the RBs in the Secondary Segment can be used by this cell in an interference-aware manner. On the Secondary Segment the cell acts as a guest, therefore, before occupation of the Secondary Segment the cell should monitor it all the time, evaluating the SINR based on the Channel Quality Information (CQI) reported by the UEs, and choosing the RBs with the best estimation values for reuse. In practice, the way this is achieved is that if the CQI value for an RB is above a configured threshold for some user, then the transmission for this user can be performed using this particular RB.
The scheduling process for EFFR ideally consisting of three steps and two scheduling polices [6]. Since none of the LTE MAC schedulers currently implemented in ns-3 allows for this behavior, some simplification were applied. In our implementation, the reuse-1 RBs can be used only by cell center users. Reuse-3 RBs can be used by edge users; however, if there is no edge user, the transmission for cell center users can also be served with these RBs.

Distributed Fractional Frequency Reuse
The Distributed Fractional Frequency Reuse Algorithm (DFFR) [5] automatically optimizes cell-edge sub-bands by focusing on the user distribution and, in particular, on the distribution of the RSRP measurements. This algorithm adaptively selects RBs for cell-edge sub-band on the basis of the coordination information received from adjacent cells, and notifies to the neighboring eNB which RBs have been selected. According to the DFFR algorithm, each eNB uses the information received from neighboring eNBs in order to determine the metric A k for each RB k according to the following equation: where J is the set of neighbor cells, and X j,k = {0, 1} is the Relative Narrowband Transmit Power (RNTP) received from the j-th neighbor cell, which takes a value of 1 when the k-th RB in the j-th neighbor cell is used in a cell-edge subband and 0 otherwise. The symbol wj denotes the weight with respect to the adjacent cell j, i.e., the number of users for which the difference between the RSRP from the serving cell i and the RSRP from the adjacent cell j is less than a threshold value. The RB for which the metric A k is smallest is considered to be the least affected by interference from another cell. Thus, the serving cell selects a configured number of RBs as cell-edge sub-band in ascending order of A k . As a result, the RBs in which a small number of cell-edge users receive high interference from adjacent base stations are selected.
The updated RNTP is then sent to all the neighboring eNBs using the X2 interface. In order to avoid the meaningless oscillation of cell-edge sub-band selection, each eNB will ignore an RNTP originated from any eNB that have a larger cell ID. In Figure 10 we show a sequence diagram of the operation of the DFFR algorithm.
The continuous repetition of this process in all eNBs allows the assignment of RBs to the cell-edge sub-bands to be optimized over the whole network and to be adjusted to the changes in the spatial distribution of users.

Usage
By default, the no-op Frequency Reuse algorithm is installed in each eNB. In order to install a different FR algorithm, the user has to define its type and all the required parameters in the simulation script. Currently, seven algorithms are implemented, and each one provide several configurable attributes. When using one of them, the user needs to configure all its parameters for each cell separately. Note that a default configuration exists, which is applied when no parameters are set; however, if this default settings are used, the same configuration will be applied to each eNB, which is typically undesirable, as in most cases it will lead to a degradation in network performance.
Each FFR algorithm can be setup through the use of ns-3 attribute system. In order to find out available parameters of implemented algorithms, users should consult the LTE module documentation, the doxygen documentation, or the source code.
Novice users may find the manual configuration of the FFR algorithm for each eNB quite complex. To address this issue, an automatic configuration solution was also implemented. Using this approach only the FrCellTypeId has to be set, which can take a value of 1, 2 or 3. Those three values correspond to three configurations, which allow to configure each neighboring cell differently in an hexagonal eNB layout. During the initialization of an FR instance, the configuration for the set bandwidth and particular the FrCellTypeId will be taken from an pre-determined configuration table. However, it has to be noted that only sub-bands will be automatically configured; thresholds and power levels will be set to default values. In most cases, this is enough to perform a meaningful simulation with the FR algorithm; however, if desired, the rest of the parameters can be customized using the manual approach, i.e., by configuring the parameters with the ns-3 attribute system.

Tests
Test coverage for the implemented FR algorithms is provided within a newly developed test suite named lte-frequency-reuse. Different test case types were defined in this test suite.
The first type of test case verifies whether the LTE MAC scheduler use only the RBs allowed by the frequency reuse algorithm policy. In this test scenario, there is a single eNB, which serves a single UE. In order to check which RBs are used for transmission, a newly developed simple PHY model called LteSimpleSpectrumPhy is attached to the downlink channel. This PHY model notifies whenever a data downlink channel transmission has occurred and passes the signal TxPsd spectrum value to the test case class in order to check which RBs were used for transmission. The test vector comprises a set of configuration for Hard and Strict FR algorithms. The other FR algorithms have not been tested in this way, because they use the entire cell bandwidth. Each test passes if none of the not allowed RBs are used.
The second type of test cases verifies whether UE is served within the proper sub-band and using the proper transmission power. In this test scenario, there are two eNBs, each having a single UE attached to it. The first eNB uses the Frequency Reuse algorithm being tested, whereas the second eNB uses the no-op frequency reuse scheme, in order to generate interference towards the first eNB over the whole system bandwidth. The UE served by the first eNB is changing position every few seconds; the choice of such a slow speed is motivated by the time needed to report new UE measurements. Two instances of LteSimpleSpectrumPhy are attached respectively to the downlink and uplink channel, in order to notify when data transmissions in cell 1 have oc- surements, so there is no point in performing this type of test for it. The third type of test is for the Distributed FFR algorithm; it is quite similar to the second one, except that, since the eNBs need to exchange some information, we use a scenario with the EPC enabled and the X2 interface configured between the two eNBs. Moreover, both eNB are using the Distributed FFR algorithm. There are two UEs in the first cell, and one in second cell. The position of each UE is changed over time (slowly, in order to guarantee the time needed to report UE measurements) so as to obtain different result from the calculations performed by the Distributed FFR algorithm entities. LteSimpleSpectrumPhy instances are attached and used in the same way as for the second type of test case. Each test passes if the UE served by the second eNB is served in DL and UL with the expected RBs and power level. The test vector comprises a configuration for Distributed FFR. The test are performed for the same schedulers used for the second type of test case.

DOWNLINK POWER CONTROL
FFR algorithms typically divide available resources into at least two sub-bands and serve UEs with different transmission power levels on the Physical Downlink Shared Channel (PDSCH). Unfortunately, in the previous versions of ns-3, the transmission of the PDSCH by eNBs was modeled with a uniform power level in a sub-frame, with no possibility of changing the power levels on a per UE basis. To overcome this issue, Downlink Power Control (DPC) mechanism has been implemented to allow FFR algorithms to use different power levels for the RBs assigned to different UEs.

Design
The DPC requirements are described in [8]. However, the design of power allocation algorithms are left to the eNB vendors. In LTE, Reference Signals (RS) are the highest powered signals in the downlink channel. The power level of RS is advertised in SIB2 message and is cell-specific. eNB transmits RS with a constant power over the entire bandwidth. The power level of all other signals in all channels is computed as function of the to RS power. The relative PDSCH power level is defined by two parameters: P A and P B [9]. P A is a UE-specific power offset relative to the RS power that identifies the power of the Resource Elements (RE) addressed to the UE within the OFDM symbols that don't contain RS; this parameter may be changed by RRC Connection Reconfiguration. P B identifies the power offset relative to RS of RE in the same OFDM symbol of a RS; this parameter is cell-specific, i.e., it is the same for all UEs within the cell. Since the PHY model has a RB granularity [1] and does not model RS separately, we decided to implement only support for the P A parameter. By means of this parameter, the eNB can change the power level of the PDSCH for each UE.
In LTE, only eNBs have the information on which UEs are cell-edge or cell-center thanks to the measurements received from the UEs, the channel quality indicators (CQIs). Thus, once the eNB notices the UE moved from its original area, it reconfigures the power offset P A for this UE via RRC Connection Reconfiguration message. Figure 11 shows the sequence diagram of the setting of the P A value for an UE, highlighting the interactions between the RRC and the other entities. The FFR algorithm instructs the RRC to change the P A values for UE. Then, the RRC entity starts an RRC Connection Reconfiguration procedure to inform the UE of the new configuration. After successful reconfiguration, the eNB RRC informs the PHY layer about the power offset that has to be applied when transmitting the PDSCH to that particular UE.

Usage
The Downlink Power Control mechanism is partially embedded in FFR algorithms implementation (i.e. part responsible for P A value determination) and there is no API available to use it directly from a simulation script. In order to implement a new DPC scheme, we suggest to consult the source code of existing FFR algorithms (especially the parts responsible for DPC) and create a new or update existing FFR algorithm with desired power control functionality.

Testing
In order to verify the correctness of our DPC implementation, a new test suite called lte-downlink-power-control has been created. This suite consists of three different test case types. First, the LteDownlinkPowerControlSpectrum-Value test case checks whether eNB physical layer allocates transmission power levels correctly for all RBs in its bandwidth. The test vector comprises a set of different configuration for EARFCN, system bandwidth and power levels for each active RBs. Test passes if created SpectralValue of power spectral density is equal to the expected one computed manually.
The second test case type, LteDownlinkPowerControlTest-Case, verifies whether transmission power difference between control and data channel is equal to configured PdschCon-

UPLINK POWER CONTROL
In LTE, Uplink Power Control (UPC) allows an eNB to adjust the transmission power of an UE; this functionality plays a crucial role in reducing Inter-Cell Interference in the Physical Uplink Shared Channel (PUSCH), and as such it is used by many advanced FFR algorithms.
In LTE, the standardized UPC procedure includes both an open loop component and a closed loop one. The former is aimed to compensate the slow variations of the received signal (i.e., path loss and shadowing). The latter is used to further adjust the UEs' transmission power so as to optimize the system performance.

Design
The UPC is described in Section 5 of [8]. In order to include this functionality in ns-3, the new class LteUePow-erControl was implemented. This class is responsible for computing and updating the power levels of the uplink RBs. We have implemented UPC both for PUSCH and Sounding Reference Signals (SRS). Since in ns-3 LTE model all uplink control messages are implemented as ideal messages and do not consume any radio resources, the modeling of UPC for PUCCH is not necessary. The formulas for transmission power levels for each channel were implemented according to [8]. Since path loss is a key component of UPC, we designed a model to make UEs able to evaluate it as a difference between the filtered RSRP and RS power parameters.
Two UPC mechanisms were implemented: Open Loop UPC, according to which the UE transmission power depends on the estimation of the downlink path loss and channel configuration, and Closed Loop UPC, which additionally allows the eNB to control the UE transmission power by means of explicit Transmit Power Control (TPC) included in the Downlink Control Information (DCI). In Closed Loop UPC, two modes are available: the Absolute Mode, according to which the TxPower is computed with absolute TPC values, and the Accumulation Mode, which instead computes the TxPower using accumulated TPC values.
When the MAC scheduler creates DCI messages, it calls the GetTpc function to ask FFR entity for TPC values that should be sent to each UE. FFR algorithm is responsible for determining the proper values of TPC commands. Similar to DPC, this functionality is embedded in FFR implementation. In order to implement new UPC scheme, user should implement new FFR algorithm or update part of existing one responsible for uplink power control.

Usage
The UPC functionality is enabled by default and can be configured via the attribute system; in particular, it can be disabled by setting the boolean attribute LteUePhy::EnableUplinkPowerControl to false. Users can switch between the Open Loop and Closed Loop UPC mechanisms by setting the boolean attribute LteUePowerControl::ClosedLoop. To change the operational mode of Closed Loop, the UPC mechanism refers to the attribute LteUePowerControl::AccumulationEnabled. By default, Closed Loop Uplink Power Control with Accumulation Mode is enabled.
Several attributes are available to configure relevant UPC parameters, such as the path loss compensation factor, the minimum and maximum UE TxPower, as well as other parameters specified by the standard such as P_O_UE_PUSCH, P_O_NOMINAL_PUSCH and P_SRS_OFFSET. Additionally, three new trace sources are provided to allow the collection of the actual transmission power for the PUSCH, the PUCCH and the SRSs. For further details, the interested reader is referred to the corresponding documentation available via the ns-3 attribute system.

Testing
Test coverage for the UPC functionality is provided by the test suite lte-uplink-power-control. It comprises three different test cases, responsible for checking the correctness of uplink power level calculation results for each implemented UPC mode. First, the LteUplinkOpenLoopPow-erControl test case verifies UPC with Open Loop mechanism. In this scenario, the UE changes position each 100 ms. In each position new transmission power level for all uplink channels is calculated. These values are traced and test passes if they are equal to expected values.
The verification of UPC with Closed Loop mechanism and Absolute Mode enabled is done in the LteUplinkClosed-LoopPowerControlAbsoluteMode test case. The UE in this scenario is placed 100 m far from the eNB and does not move. The LteFfrSimple algorithm is used in eNB to set TPC values in each DCI messages. The TPC configuration is changing every 100 ms, thus UPC entity in UE calculates and updates transmission power levels for all uplink channels.
Finally, the test case of UPC with Closed Loop mechanism and Accumulated Mode, LteUplinkClosedLoopPow-erControlAccumulatedMode, is similar to the above one. As before, the LteFfrSimple algorithm is installed in eNB, but in this case there are few transition periods when it sets TPC value in specified number of DCI messages. During these periods UE has to accumulate all TPC commands and compute uplink power level.

EXAMPLES
Examples plays an important role when learning new simulation tool and are usually used as reference for users when generating new scripts. On this matter, we implemented a set of examples to show the newly created functionalities.
lena-frequency-reuse recreates a scenario with three eNBs in a triangle layout. Three cell-edge UEs are located in the center of this triangle, while three cell-center UE are placed near each eNB. FFR algorithms are installed in eNBs using automatic configuration, with each eNB having a different FrCellTypeId, i.e., a different frequency assignment. The example supports six FFR algorithms: NoOp, Hard FR, Strict FR, Soft FR, Soft FFR and Enhanced FFR. lenadistributed-ffr implements scenarios with Distributed FFR algorithms. These two examples are very similar, but they have been split because Distributed FFR requires EPC to be used, while the others algorithms do not.
In order to have a graphical interpretation on how fractional frequency reuse algorithms work, we have extended RadioEnvironmentMapHelper to be able to generate radio environment map (REM) on a per RB basis. An example of a REM for RB 1 for Soft FR is presented in Figure 12  and serve it with higher power, while two other eNB use these RBs as center sub-band with lower power level. Moreover, we implemented another interesting graphical tool for analyzing FFR solution: the spectrum analyzer. Sample trace obtained from this example with Soft FFR algorithm enabled is presented in Figure 13. As can be seen, there are four different data channel sub-bands that are allocated with three different power level, while control channel is transmitted with uniform power along the entire system bandwidth.
Finally, the existing lena-dual-stripe example has been extended to support FFR algorithms, allowing the user to specify via the attribute system the FFR algorithm to be used. Thanks to the automatic configuration and extension applied to LteHexGridEnbTopologyHelper a default configuration is loaded, thereby avoiding the need for a manual configuration. A REM for RB 1 obtained from this example scenario with the Hard Frequency Reuse algorithm is presented in Figure 14. In this scenario, in each location there are three eNBs, each equipped with cosine antenna with beamwidth of 120 degrees and oriented in orthogonal direction. RBs 1-8 are used by eNBs with FfrId 1. Coverage is not symmetric, because of boundary effects (i.e. there are no eNBs interfering to three first eNBs on the left).

CONCLUSIONS
In this paper, we described the extension that we developed for the LTE module of ns-3 to simulate Fractional Frequency Reuse algorithms. The work presented in this paper has been merged with the official ns-3 distribution and was included in the ns-3.21 release of December 2014.

ACKNOWLEDGMENTS
The work presented in this paper was generously funded by the Google Summer of Code 2014 program.