- 1 Project overview
- 2 Approach
- 3 Standard Deliverables
- 4 Schedule
- 5 Progress Report
- 6 Future Deliverables
- 7 Implementation Notes
- Project name: Improvements to UE Measurements in Active and Idle Mode for the LTE Module
- Student: Budiarto Herman
- Abstract: The LTE module of ns-3 was recently updated (LENA M6) with support for UE measurements and automatic handover. The project aims to improve these models with more advanced features based on 3GPP E-UTRAN specifications and several research publications. The development covers three major features: UE measurements, initial cell selection, and handover algorithms.
- Related links:
- About me (the student). I'm a Master's student in University of Jyväskylä, Finland. Radio technology is my major subject study and I'm working on simulations of LTE using ns-3.
The project is divided into three major blocks:
- UE measurements
- Additional reporting configuration to UE measurement model.
- Initial cell selection
- UE mechanism to automatically determine the best eNodeB to attach to, based on RSRP.
- Handover algorithms
- Two additional handover algorithms for automatic handover execution.
The UE measurements block can be said as the core piece of the project, because the other blocks are dependant on it. For instance, initial cell selection utilizes the measurements of RSRP gathered during UE's idle state. While handover algorithms will request certain measurements and consume them during UE's active state.
The development will be conducted using the latest revision of LENA (Mercurial repository) as the code base. The reason behind this decision is the fact that several important features are not yet available in ns-3-dev repository at the time the project begins. For example, LENA M6 was released with some supports of UE measurements and automatic handover, which are essential for the project.
During the course of the project, updates in LENA repository may be pulled to the project repository on a case-by-case basis.
Despite the dependencies, each of the project blocks are designed to be cohesive by itself. Hence the project will focus on one block at a time, and then move on to the next block. The development of each block includes the actual code, test code, documentation, and code review. Progress will be published in frequent basis to the public repository.
The following pseudocode illustrates the procedure outlined above.
for each project block X write design documentation of X define test vector of X implement X write test code for X write test documentation for X submit X to rietveld for code review end for
Each deliverable is labeled with a letter and an integer. The letter corresponds to the block which the deliverable is associated with.
- Deliverables related to UE measurements:
- D1: Design documentation
- D2: Test vector definition
- D3: Event A1 evaluator (serving > threshold)
- D4: Interface for configuring reporting
- D5: Piecewise testing framework case 1
- Milestone-I: Basic serving cell measurement complete
- D6: Event A3 evaluator (neighbour > serving + offset)
- D7: Event A5 evaluator (serving < threshold1 AND neighbour > threshold2)
- D8: Piecewise testing framework case 2
- D9: Handover testing framework
- Milestone-II: Neighbouring cell measurement complete
- D10: Support for time-to-trigger
- D11: Updated documentation
- Milestone-III: UE measurements complete
- Deliverables related to initial cell selection:
- E1: Design documentation
- E2: Test vector definition
- E3: SIB1 implementation
- E4: Cell search implementation
- E5: Simple initial cell selection
- E6: Initial cell selection with criteria
- Milestone-IV: Initial cell selection is verified
- E7: Test documentation
- Deliverables related to handover algorithms:
- F1: Handover management SAP interface
- F2: Event A2 and RSRQ-based handover algorithm
- F3: Helper function for selecting handover algorithm
- F4: Updated test suite
- F5: Updated example program
- Milestone-V: Basic handover algorithm functionality is ready
- F6: ANR SAP interface
- F7: Simple ANR as UE measurements consumer
- Milestone-VI: Simple ANR is ready
- F8: Strongest cell handover algorithm
- F9: Strongest cell handover algorithm test case
- F10: Handover design documentation
- F11: Handover testing documentation
- Milestone-VII: Strongest cell handover algorithm is ready
After acceptance notice is announced in the beginning of Week 22 (May 27), the project will enter the community bonding period, which consist of the following activities:
- Setting up a Wiki account
- Setting up access to repository
- Initial meeting with mentors
- Answering questions in ns-3-users
Then at Week 25 (June 17) the coding phase will begin. The first half of the project is planned as follow:
- Week 25: D3, D4, D5, Milestone-I
- Week 26: D6, D7, D8, D9, Milestone-II
- Week 27: D10, D11, Milestone-III, E1
- Week 28: E2, E3
- Week 29: E4, E5
- Week 30: E6, Milestone-IV, E7, F1
Week 31 (July 29) will be reserved for mid-term evaluation. After that (August 5), the second half of the project will begin as below:
- Week 32: F1, F2, F3, F4, F5, Milestone-V
- Week 33: F6, F7, Milestone-VI, F8, F9
- Week 34: F10, F11, Milestone-VII
- Week 35: Reserved for future deliverables (TBD)
- Week 36: Reserved for future deliverables (TBD)
- Week 37: Reserved for future deliverables (TBD)
Week 38 (September 16) will be the pencil down week, and Week 39 (September 23) will be allocated for the final evaluation.
Reports on progress are divided into weekly, mid-term, and final reports. The weekly reports will be available in this section after the end of the corresponding week.
Community bonding period
The community bonding period has delivered the preliminary design documentation of UE measurements. This is split into design, user, and testing documentation.
This week is the first week of the first coding phase. It has delivered the following:
- Interface for configuring UE measurements. eNodeB now maintains the list of measurements configuration that will apply to all attached UEs. This list is initially empty (except the definitive measurement object and quantity configuration), and can be populated by calling the new public function
LteEnbRrc::AddUeMeasReportConfig. Consequently, the previously predefined Event A2 and A4 in
UeManager::BuildMeasConfighave been removed. Other related changes are as follow:
LteUeMeasurementsTestCasehas been updated accordingly to explicitly add Event A2 and A4 to the simulation.
- All report intervals are now implemented.
- Layer 3 filtering (i.e. quantity configuration) is now configurable from new attributes of eNodeB RRC.
- The first test framework for UE measurements (piecewise case 1). It is a simulation of 1 eNodeB and 1 UE without EPC in a flat channel and no layer 3 filtering. The test verifies that the timing and the RSRP content of measurement reports received by the eNodeB are the same as the reference test vector. In the simulation, the UE is moving between 4 different predefined location to vary the perceived RSRP strength (see figure on the right), which will trigger several entering and leaving conditions.
- Event A1 has been verified by 3 test cases of this type, using 0, 54, and 97 as the threshold, respectively.
- The figure on the right illustrates the movement of the UE and the resulting RSRP measurements.
- Layer 3 filtering. As shown in the figure on the right, the filtering seems to average the measurements in an expected way. However, it also brings difficulties to the test script because past measurements are disturbing the results. Therefore layer 3 filtering is disabled in the test cases.
This week is the second week of the first coding phase. It has delivered the following:
- Complete event-based triggering criteria. Implemented Event A3 and A5. Event A1 was implemented last week, while Event A2 and A4 were part of LENA already when the project started. Hence, all the triggering criteria aimed by the project have been implemented.
- Completed the first test framework for UE measurements (piecewise case 1). Event A1 has been tested since last week. This week the remaining events (A2, A3, A4, and A5) have been added to the test suite.
- The second test framework for UE measurements (piecewise case 2). Similar to the first framework from last week, but now considering the effect of a neighbouring cell.
- This test case is necessary to verify the event-based triggering criteria which are based on reported measurements of neighbouring cell, such as Event A3, A4, and A5.
- The figure on the right illustrates the movement of the UE and the resulting RSRP measurements.
- Scenarios in this test case uses longer report interval than in piecewise test case 1 (240 ms, compared to 120 ms) and shorter distance between the predefined teleport spots.
- Each of event-based triggering criteria has been verified by 3 test cases of this type, using 0, 58, and 97 as the threshold, respectively.
- Initial work on the third test framework for UE measurements (handover case). Verifying that UE measurements configuration works properly with handover in an EPC-enabled simulation.
- One test scenario using Event A1 has been included in the test suite.
- Updated handover test case and example. As a result of last week's disposal of
UeManager::BuildMeasConfig, some existing examples and test cases are no longer working because they depend on predefined Event A2 and A4. One of these test cases is
LteUeMeasurementsTestCase, which has been fixed last week. The others are fixed this week, which include
LteX2HandoverMeasuresTestCaseand lena-x2-handover-measures example.
- The automatic handover and neighbour relation mechanism, which is located in
UeManager::RecvMeasurementReport, still depend on Event A2 and A4, respectively. These two have not been fixed yet, because of the fact that they are planned to be substituted by handover algorithms, which will be developed at the second phase of this project.
- The automatic handover and neighbour relation mechanism, which is located in
This week is the third week of the first coding phase. It has delivered the following:
- Completed handover test case. The test case verifies that UE correctly updates its measurements configuration when moving from one cell to another cell with a different measurements configuration. This week, more test scenarios are added to the UE measurements test suite, covering cases where changes of measurement configuration to different report interval, different event type, and different threshold/offset.
- Test scenarios for hysteresis. Hysteresis is used to delay the triggering of reporting events by h dB, i.e. the entering and leaving conditions become h dB more difficult to achieve. The UE measurements test suites now include several scenarios with hysteresis enabled to verify its behaviour.
- Code review. The first code review (Rietveld issue 10742043) with Tom and Nicola as the reviewers. The code has been updated according to the received feedback.
- Detailed design of initial cell selection. The first project block is planned to be completed by the end of this week. The second project block, the initial cell selection, will start next week. New sections have been added to the documentation to describe the idea of initial cell selection. Together with my mentors, we discussed several design issues, and finally have a clear implementation idea for the next 3 weeks.
There is an issue with time-to-trigger implementation this week. The previously planned implementation turns out producing behaviour not in accord with 3GPP specification. Time-to-trigger is supposed to delay the reporting trigger by t ms, but the previous design unexpectedly rounded t to the multiplies of 200 (i.e. the trigger point becomes dependent to the rate of measurement reports from PHY layer). Because of this, I rewrote the idea and then attempted to rebuild it, but did not manage to complete in time. Thus time-to-trigger spills off to the next week.
This week is the fourth week of the first coding phase. The second block of project, initial cell selection, is started here. This week has delivered the following:
- Completed time-to-trigger implementation. UE measurements now support time-to-trigger, a parameter to delay measurement reports by certain unit of time. It is a useful parameter to configure in order to reduce occurrences of ping-pong handovers and Radio Link Failures.
- Completed time-to-trigger tests. The UE measurements test suites have been updated to verify time-to-trigger parameter in each of 5 event-based triggering criteria. In each cases, 3 different time-to-trigger values are tested. For example, a longer the time-to-trigger gives the UE more room to cancel a possible trigger, therefore producing more resistance to short-term fluctuation in signal strength.
- Updated documentation. UE measurements model documentation is now up-to-date with the latest implementation. Some works have also been done on improving the initial cell selection, but most part is still waiting for a clear implementation idea.
Hence, the UE measurements block are now ready to be reviewed as a whole.
Regarding initial cell selection, the implementation of System Information Block Type 1 (SIB1) is scheduled this week. The development and discussions with mentors are currently ongoing. While going through the discussions, I have learned that there are several technical assumptions about initial cell selection in LTE and impact to existing code that I was not aware of. Therefore I decided to rearrange the implementation idea before moving further.
This week is the fifth week of the first coding phase. It has delivered the following:
- Implementation of SIB1. A system broadcast message with information related to cell access, transmitted by PHY every 20 ms.
- Implementation of cell search procedure. A procedure by UE PHY, typically performed at the beginning of simulation. It basically detects surrounding cells using Primary Synchronization Signal (PSS), synchronize to the one with strongest RSRP, and listen to the broadcast channel looking for system information messages.
- Implementation of simple initial cell selection procedure. After cell search procedure is done and required system information has been received, the UE will camp to the cell indicated by the cell search procedure. Test scenarios have been included to verify this.
The complete form of initial cell selection procedure will perform additional evaluation before camping to the cell. The criteria evaluated are Public Land Mobile Network (PLMN) identity (e.g. in scenarios with multiple network operator), Closed Subscriber Group (CSG) identity (e.g. in scenarios with small cells), minimum level of signal reception level/quality. This feature will be developed next week.
The introduction of cell search and initial cell selection has impacted the existing code in LTE module. Firstly, there has to be new helper functions to control these features, which also have to be included in user documentation. Secondly, at least there are one test suite (lte-pathloss) and one example (buildings-pathloss-profiler) which fail and have to be fixed. These will be taken care of next week.
This week is the sixth week of the coding phase, and also the last week of the first coding phase. The second block of the project, initial cell selection, ends here. This week has delivered the following:
- Complete initial cell selection. Added CSG identity and minimum level of RSRP as cell selection criteria. For instance, when a cell is designated as a CSG, only UEs which are members of the CSG can gain access to the cell. This feature can be useful to simulate scenarios with femtocells. New test scenarios are added to test this functionality. The design and user documentation have also been updated.
- Mid-term code review. Started at the beginning of this week, using revision 9928 as the base and 9984 as the head. Several comments have been received and more is expected to come next week.
- Fix to test script. The lte-pathloss test suite, which was found to fail last week, has been fixed. While the buildings-pathloss-profiler has not been fixed yet, but can probably be fixed by pulling new updates from LENA development repository.
This week is the mid-term evaluation week. The project progressed as follows:
- Addressing issues identified in mid-term code review. The mid-term code review was started the week before and has received comments from mentors. The comments are mostly aimed at initial cell selection, for example regarding naming of variables/functions, an issue with code duplication in RSRP/RSRQ calculation, and an impact to CQI reporting. Also highlighted here is the importance of layer-by-layer invocation of functions, for example cell search should follow NetDevice → NAS → RRC → PHY call flow. The necessary fixes have been done and committed to the repository. More details can be found in the mid-term's Rietveld issue.
- Mid-term evaluation. The evaluation consists of several multiple-choice and open-ended questions regarding my opinion on the project. The answers were submitted to Google Melange web site. Later I received an email stating that the project successfully passed the mid-term evaluation.
- Finalizing initial cell selection documentation. The initial cell selection block has been a subject of intensive discussion with mentors. The latest discussion has clarified the remaining open issues, such as the removal of PLMN selection criteria, the decision to keep the
AttachToClosestEnbhelper function (for the sake of LTE-only simulation in lena-dual-stripe example), and the behaviour of
Attachhelper functions to consistently switch UE to CONNECTED mode. The documentation has been updated to reflect these clarifications.
- Discussion on handover algorithm. The last conversation with mentors also dealt with the next development block of the project, handover algorithm. We broke the block down to several pieces and set the priority on each piece. The development approach can be summarized as follows:
- The most essential piece to be implemented are the handover management SAP interface (i.e. the communication interface between the eNodeB RRC entity and the handover algorithm entity).
- The next important pieces are the implementation of two handover algorithms, one based on RSRQ and Event A2 (serving is worse than threshold, therefore mimicking the existing algorithm embedded in LENA M6), and the other one is based in RSRP and Event A3 (neighbour is offset better than serving, which is one of the algorithms commonly cited in research papers).
- The next pieces are of lower priority and require considerable effort to implement. These are the UE Transmit Power Reduction (UTPR) handover algorithm, three important cases of handover failures, comparison with a published result, and other statistics such as ping-pong handover. These are only to be implemented when the previous pieces have been completed and there is enough time before the project ends.
This week is the start of the second half of the project. The development of the handover algorithm block is handled during this time. This week in particular has delivered the following:
- Handover management SAP interface. Service Access Point (SAP) is a framework used in the LTE module for handling communication of 2 entities in a modular way. For example, UE RRC and UE PHY exchange messages via UE CPHY SAP. Similarly, handover algorithm and eNodeB RRC exchange message via Handover management SAP. The SAP defines the allowed methods and the expected parameters for both ways of communication. For example:
- The handover algorithm entity may request a UE measurement configuration from the eNodeB RRC entity.
- Then the eNodeB RRC entity fulfil it by providing the handover algorithm entity with measurement reports.
- After reviewing the measurement reports, the handover algorithm may suggest the eNodeB RRC entity that a handover should be performed by a particular UE.
- Event A2, A4, and RSRQ-based handover algorithm. The first working implementation of the handover management SAP interface. The behavior is based on the built-in algorithm from LENA release M5 and M6. The related code embedded in eNodeB RRC is simply moved to a separate handover algorithm class. The attributes for configuring the algorithm are also moved to the handover algorithm class itself. In addition, the related test cases and examples have been updated accordingly.
- Helper function for selecting handover algorithm. Within the module architecture, the handover algorithm is an independent entity attached to the eNodeB RRC entity. The attachment is modeled in a similar way as how FF MAC Scheduler entity is attached to the eNodeB MAC entity (e.g. by using Object Factory). This means that user may select the handover algorithm by changing an attribute of the LTE Helper class.
- No-op handover algorithm. An empty handover algorithm to produce simulation without automatic handover. This is set as the default algorithm for the handover algorithm Object Factory of the LTE Helper, and is useful for the existing test scripts and example programs.
As a result of this week's development, the existing Neighbour Relation Table (NRT) functionality has been impacted. This function had utilized the Event A4-based measurement reports which have been shared together with the built-in handover algorithm. This dependency will be sorted out next week, by converting the NRT to a simplified version of Automatic Neighbour Relation (ANR) function.
This week is the second week of the second coding phase. It has delivered the following:
- Simple ANR. The function communicates with eNodeB RRC via a new SAP interface. The function provides storage of information related to the eNodeB's neighbouring cells, while the interface provide the methods for querying and manipulating the information. New entry is automatically created when X2 connection is constructed and when new neighbour cell is detected (through Event A4 UE measurements). Advanced ANR features such as automatic setup of X2 connection are not supported.
- Strongest cell handover algorithm. A new implementation of the abstract handover algorithm base class, which works based on RSRP and Event A3 (neighbour cell's RSRP becomes offset better than serving cell's RSRP). The lte-x2-handover-measures test suite is updated to test this new algorithm.
This week is the third week of the second coding phase. It has delivered the following:
- Documentation of ANR. Added one section in the design documentation for ANR functionality.
- Documentation of handover algorithm. This covers the design, user, and testing sections of LTE module documentation. The design documentation has some updates regarding handover in general, updated figures, and new sections for the handover algorithms implemented in the project. The user documentation has some updates on the code that users can use to select handover algorithms. And finally testing documentation has been updated with the inclusion of strongest cell handover algorithm in the test suite.
- Merge attempt with lena-dev. In order to prepare a merge with LENA development repository (lena-dev), a new ns-3 repository has been created with the name of ns-3-gsoc-lte-merge. The idea is to keep the standard set of deliverables in this repository, freeze them, and repeatedly review the whole code until it is good enough for merging with lena-dev. The repository is based on the latest revision of lena-dev (revision 10108 as of the time of writing), then changes from the GSoC repository are pulled in and merged. The new repository has successfully passed a full-blown
./test.py. Hence, the merge has also fixed the failure in buildings-pathloss-profiler example that was discovered earlier.
As scheduled, all standard deliverables have been completed by the end of this week. The remaining 3 weeks of development time in the project will be used to develop some selected future deliverables. Development continues as usual in the main GSoC repository.
This week is the fourth week of the second coding phase. It has delivered the following:
- Updated UE RRC state machine. The updated state machine has expanded the IDLE_CELL_SELECTION state to several states: IDLE_CELL_SEARCH, IDLE_WAIT_MIB_SIB1, and IDLE_WAIT_SIB1. This has the benefit of better representation of the actual state of the initial cell selection procedure. In the updated state machine, MIB is now required before SIB1 can be decoded. In addition, the state model is now able to distinguish between manual network attachment and automatic network attachment (via initial cell selection). The idea is based on the feedback from the project mentors. The documentation has been updated accordingly.
- Fixed a UE measurements bug upon handover. As defined by 3GPP, the existing measurement reporting entry must be removed after a handover is completed. This was missing from the model. A test case is added to the lte-ue-measurements-handover test suite as part of the fix.
- Fixed a UE measurements bug when using a long time-to-trigger. Because of improper use of iterator, a measurements configuration with time-to-trigger >= 1024 ms will produce more than one cycles of reports in parallel. As in the previous bug, a the fix is accompanied by a test case.
The design of handover failure scenarios (including Radio Link Failure and RRC Connection Re-establishment) was planned for this week, but then got postponed because of a change of priority.
This week is the fifth week of the second coding phase. It has delivered the following:
- New test suite for handover algorithm. The new test suite (lte-handover-target) is a series of short simulation with handover algorithm. It tests whether the handover algorithm makes the right handover decision, i.e., choosing the right target cell. Handover algorithms tested by the test suite are A2-A4-RSRQ handover algorithm and strongest cell handover algorithm.
- Fixed a UE measurements bug on quantity configuration. The previous code will clear all measurement identities in the UE's measurement configuration upon every update to quantity configuration. The bug does not have visible impact to simulation, because update of quantity configuration is only done once in the beginning before measurement identities are created. But this may become a bug in the future when the UE measurements function is expanded, and also because 3GPP does not specify this behaviour.
- Updated documentation based on mentor's feedback. The project mentors have reviewed the documentation delivered by the project and provided some comments and feedback. The documentation has now updated with their comments.
During this week, the project decided the upcoming tasks for the upcoming 3 weeks of project timeline that remains, which are listed below:
- Future deliverables are to be considered out of the scope of the project, because of the complexity of the development and the very short time left in the project.
- The updated UE RRC state machine is to be included to the set of deliverables for merging.
- Merging with ns-3-dev and lena-dev will be the first priority.
- After merging is completed, the project shall continue with work on validation of the model, such as by running simulation and writing analysis of it in documentation.
This week is the last week of the project's coding phase. The attempt to merge with the ns-3-dev and lena-dev encountered a problem of 2 test suites failing. These test suites are the lte-cell-selection (new in GSoC) and the lte-phy-error-model (not part of GSoC).
- The root cause of the issue is the fact that both of these test suites are working well in certain set of generated random numbers, but not the others. The recent changes in UE RRC state model seems to have altered how this internal randomization works to a direction unfavorable to these 2 particular test suites. For instance, the lte-cell-selection test suite expects a certain UE to successfully establish a connection to a cell after 300 ms of simulation time, but some random seeds/runs may decide that the signalling messages become lost in the channel, therefore failing the establishment procedure.
- The week has been spent on revising and improving the test suites to cope better with different random numbers. For example, the network layout in lte-cell-selection test suite is redone so that each UE has very low error rate. Then some scenarios which are inevitably vulnerable to random situation had to be removed from the test suite.
This week is the pencil-down week. Coding is supposed to stop during this week and work continues on documenting and wrapping up the project.
This week has delivered an addition to the LTE module User Documentation on executing a small simulation campaign using the new handover models developed during the project. It is a step-by-step guide to configure the existing lena-dual-stripe example program, executing it with different configuration parameters, and post-processing the simulation output using GNU Octave. The section concludes by presenting the results (average user throughput, average SINR, and number of handovers).
One bug is also found and fixed during the execution of simulation campaign. The bug occurs when initial cell selection and RSRQ-based measurement configuration are used altogether, which makes the latter reporting incorrect values.
This week is the final evaluation week. Google requires students to stop coding in this week and concentrate on the final evaluation. Similar to the mid-term evaluation, the final evaluation is a set of multiple-choice and open-ended questions. I submitted my answers through the Google Melange website. At the end of the week, Google sent an email stating that the project has passed the evaluation.
This week is also the last week of the project. In other words, the project is officially completed. In spite of this, the project will continue expecting comments and feedback from the code review process which is currently ongoing. This will continue until the code is merged into both lena-dev and ns-3-dev repositories.
Several other development ideas were proposed in the beginning of the project. However, after several discussions with mentors, these ideas are deferred as low priority. They are listed below for future reference.
They are listed below for future reference and for re-prioritization by the time the standard deliverables are completed. Some of these ideas will be developed on the last 3 weeks of the project's coding phase, while the rest will spill outside the scope of the GSoC project.
- Deliverables related to UE measurements:
- Enumerated time-to-trigger values (section 6.3.5 3GPP TS 36.331)
- Deliverables related to initial cell selection:
- Initial cell selection support for LTE-only simulation
- Deprecated attachment based on shortest distance
- Deliverables related to realistic handover functionality:
- RRC connection re-establishment procedure
- Case of Random Access failure
- Radio Link Failure
- Case of handover command failure
- Handover failure test cases
- Deliverables related to handover towards CSG cell:
- UE measurements for CGI reporting purpose
- CSG restriction in handover
- Test case of handover with CSG cell
- Deliverables related to UTPR handover algorithm:
- Interface for gathering eNodeB statistics (e.g. Tx power, RIP)
- Interface for gathering UE statistics (e.g. Tx power, UL channel gain)
- UTPR handover algorithm
- UTPR handover algorithm test case
- UTPR algorithm documentation
- Deliverables related to handover model validation:
- Choice of reference publication
- Reference path loss model
- Topology helper for simulation
- Ping-pong detector
- Ping-pong test case
- Simulation program for model validation
- Analysis of model validation
Delay in UE measurements reporting
This subsection explains the reasoning behind the addition of 1 µs delay before every submission of a measurement report from UE RRC to eNodeB RRC. To be more specific, this delay is the constant
UE_MEASUREMENTS_REPORT_DELAY defined in lte-ue-rrc.h, which is used before calling the
Refer to figure on the right for 3 sample cases of UE measurements. Note each purple line is showing that the measurement report (red triangle) uses the previously stored measurements from the latest layer-3 filtering (blue diamond). Also note the ns-3 execution order for each case.
Case 1 and 2 have one thing in common: there is a time in the end where M2 and R2 are scheduled at exactly the same time. Case 3 is also similar, except that there's a tiny delay for R2.
Now, Case 1 has the correct purple line placement, but Case 2 does not. In Case 2, R2 should have used M2 instead of M1. This is due to the fact that R2 is executed before M2, so M2 does not have the chance to update the stored measurements.
Then why this issue does not happen in Case 1? Because in Case 1, the scheduling of M2 (i.e., M1) occurs before the scheduling of R2 (i.e., R1). Thus when M2 and R2 end up in the same time slot, ns-3 picks the one which is scheduled first, which is M2. But in Case 2, what happens is the other way around: R1 occurs before M1, therefore R2 is executed before M2. And that's why R2 still uses the old M1.
Case 3 is the attempt to solve the issue with Case 2. A tiny delay is added to every red triangles to ensure that red triangles are always executed after blue diamonds finished updating the stored measurements.
This issue is verified in the lte-ue-measurements-piecewise-2 test suite. Case 2 and 3 are represented as the first test case named "Piecewise test case 2 - Event A1 with very low threshold".
The bottom line is, the issue occurs when report interval is greater than layer-1 filtering period, and adding a tiny delay resolves the issue. There is a similar racing condition problem with time-to-trigger, which occurs when time-to-trigger is greater than layer-1 filtering period.