Difference between revisions of "GSOC2019ThreeGPPChannel"

From Nsnam
Jump to: navigation, search
(Project Timeline)
(Project Timeline)
Line 54: Line 54:
 
** how to avoid code duplication for the implementation of the pathloss models: we discussed about the possibility to define a common base class for all the ThreeGppYYYPropagationLossModel classes, since the methods DoCalcRxPower () are similar. However, this yields to multiple inheritance, which may worsen the code clarity.
 
** how to avoid code duplication for the implementation of the pathloss models: we discussed about the possibility to define a common base class for all the ThreeGppYYYPropagationLossModel classes, since the methods DoCalcRxPower () are similar. However, this yields to multiple inheritance, which may worsen the code clarity.
 
** deliverable for phase 1: it will include the new channel condition model and the 3GPP pathloss models
 
** deliverable for phase 1: it will include the new channel condition model and the 3GPP pathloss models
 +
 +
== Week 4 (June 17 - June 23) ==
 +
* implementation of the test cases for the ThreeGppYYYPropagationLossModel classes. Each test case computes the propagation loss between two mobility models for different values of the distance and for both LOS and NLOS channel states. The resulting value is compared with the corresponding reference value obtained from the formulas specified in TR 38.901.
 +
* discussion with my mentor about the implementation of the propagation models

Revision as of 12:36, 24 June 2019

Main Page - Current Development - Developer FAQ - Tools - Related Projects - Project Ideas - Summer Projects

Installation - Troubleshooting - User FAQ - HOWTOs - Samples - Models - Education - Contributed Code - Papers

Back to Google Summer of Code 2019.

Project Overview

  • 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.

Project Timeline

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

Week 3 (June 10 - June 16)

  • review of the channel condition model
  • development of new classes which extends the PropagationLossModel interface and implements the pathloss models defined in 3GPP TR 38.901 (ThreeGppRmaPropagationLossModel, ThreeGppUmaPropagationLossModel, ThreeGppUmiStreeCanyonPropagationLossModel, ThreeGppIndoorOfficePropagationLossModel). The main method is DoCalcRxPower (txPow, mm a, mm b), which applies the pathloss model taking into account the LOS/NLOS channel state and then returns the received power. To retrieve the channel state, they interface with the class ChannelConditionModel through the method GetChannelCondition (mm a, mm b). Some of the models requires the knowledge of UT and BS heights, which are obtained by comparing the heights of the two nodes with the validity ranges specified by the standard, i.e., if height (a) falls inside the validity range for hUT, then hUT = height (a); else if height (a) falls inside the validity range for hBS, then hBS = height (a); and the same for node b. If hUT or hBS cannot be defined because none of the two nodes has a valid height, the default value is used.
  • discussion with my mentor about:
    • review of the channel condition model
    • how to avoid code duplication for the implementation of the pathloss models: we discussed about the possibility to define a common base class for all the ThreeGppYYYPropagationLossModel classes, since the methods DoCalcRxPower () are similar. However, this yields to multiple inheritance, which may worsen the code clarity.
    • deliverable for phase 1: it will include the new channel condition model and the 3GPP pathloss models

Week 4 (June 17 - June 23)

  • implementation of the test cases for the ThreeGppYYYPropagationLossModel classes. Each test case computes the propagation loss between two mobility models for different values of the distance and for both LOS and NLOS channel states. The resulting value is compared with the corresponding reference value obtained from the formulas specified in TR 38.901.
  • discussion with my mentor about the implementation of the propagation models