Back to Google Summer of Code 2019.
- Project Name: Integration of the 3GPP TR 38.901 channel model in the ns-3 spectrum module
- Student: Tommaso Zugno
- Mentor: Natale Patriciello
- Proposal: link to the document
- Abstract: In recent years, ns-3 has been widely used for the simulation of wireless networks, because it features several built-in and external modules implementing different wireless technologies. The overall performance of this kind of networks are strongly influenced by the characteristics of the signal propagation through the wireless link, thereby, a proper modeling of the channel behavior is of primary importance to obtain reliable results from the simulations. This project aims to tackle this issue by proposing an extension of the spectrum module to model both frequency and spatial-dependent phenomena, and to account for the directional behavior of the signal propagation. This will be achieved by implementing the modeling framework described in 3GPP TR 38.901, which includes the statistical characterization of different propagation environments, supports the modeling of multi-antenna systems, and, thanks to its modularity, can be easily extended with new environments or other additional features. Even if it has been specifically designed for the simulation of cellular networks, it supports frequency bands between 0.5 and 100 GHz, thus can be used even for other wireless technologies.
- Code: GitLab repo
- About Me: I am a first-year PhD student at the University of Padova, Italy, working under the supervision of prof. Michele Zorzi. My research focus on protocols and architectures for 5G cellular systems operating at mmWaves.
Week 0 (Community Bonding Period)
- discussion with my mentor about project plan, test cases, examples, model validation
- creation of a wiki page for the project
- project introduction in ns-developers
- discussion with ns-developers about the extension of the "SpectrumSignalParameters" structure
- creation of a git repository for the project
Week 1 (May 27 - June 2)
- discussion with my mentor about the following issues:
- how to apply the pathloss models without the knowledge of the type of the devices
- computation of the pathloss between UE-UE and BS-BS
- how to consider the mobility of both the devices for the computation of the Doppler frequency component and the spatial consistent procedure
- design of the ChannelConditionModel abstract class and of the ThreeGppYYYChannelConditionModel subclasses
- design of the ThreeGppYYYPropagationLossModel classes
Week 2 (June 3 - June 9)
- implementation of the abstract class ChannelConditionModel, which provides the base for the implementation of specific channel condition models. The main method is GetChannelCondition (mm a, mm b), which determines the channel condition based on the tx and rx mobility models and returns it as a pointer to an object of type ChannelCondition. At this stage, the ChannelCondition class only contains information about the LOS/NLOS state of the channel, but it will be extended to include other information, e.g., whether the transmission is outdoor to indoor. The reason why we decided ChannelCondition to be a regular class (and not a struct for instance) is to be able to exploit the object aggregation system in case a derived class wants to add some additional information, without having to deal with subclassing. For instance, if we add a channel condition model which determines the condition based on the buildings deployed in the scenario, we can use the aggregation system to provide also the information about the type of the building obstructing the line of sight.
- implementation of the subclasses ThreeGppRMaChannelConditionModel, ThreeGppUMaChannelConditionModel, ThreeGppUMiStreetCanyonChannelConditionModel, ThreeGppIndoorMixedOfficeChannelConditionModel, ThreeGppIndoorOpenOfficeChannelConditionModel, which inherits from ChannelConditionModel and statistically determines the LOS/NLOS state based on the specification in 3GPP TR 38.901.
- addition of the subclass BuildingsChannelConditionModel, which inherits from ChannelConditionModel and determines the LOS/NLOS state based on the buildings deployed in the scenario. It has been adapted from the mmwave module.
- design and implementation of test cases for all the new classes
- the test cases for the ThreeGppYYYChannelConditionModel classes call the method GetChannelCondition () multiple times, estimate the LOS probability and compare it with the value computed using the baseline formula
- the test case for the BuildingsChannelConditionModel determines the channel condition between two nodes in multiple cases: (i) there is a building in between the two nodes, (ii) no building in between, (iii) the first node is inside the building and the second is outside, (iv) the two nodes are inside the same building.
- weekly discussion with my mentor about:
- how to pass the information about the channel condition to the PropagationLossModel and SpectrumPropagationLoss model: we will not modify the existing APIs, the ChannelConditionModel will be used only within the propagation and spectrum implementations that wants to use it
- where to put the ChannelConditionModel: we decided to put it the propagation module
- how to implement the spatial consistency procedure described in TR 38.901: we decided to include procedure A, which supports mobility only at the user terminal, while the base station is considered always fixed. We will provide the possibility to enable/disable the spatial consistency procedure and to specify the channel update time through attributes.
MR for the channel condition model: https://gitlab.com/tommasozugno/ns-3-dev/merge_requests/1