GSOC2025Ntn: Difference between revisions

From Nsnam
Jump to navigation Jump to search
 
(38 intermediate revisions by 2 users not shown)
Line 2: Line 2:


Back to [[Summer_Projects#Google_Summer_of_Code_2025 | GSoC 2025 projects]]
Back to [[Summer_Projects#Google_Summer_of_Code_2025 | GSoC 2025 projects]]
Please refer to this wiki as a central repository of information regarding the project and as a '''Final Report for GSoC '25'''.


= Project Overview =
= Project Overview =


* '''Project Name:''' NTN Helper and a LEO example for 5G NR
* '''Project Name:''' NTN Helper and a LEO example for 5G NR
* '''Student:''' Thiago Miyazaki
* '''Organization:''' ns-3, Network Simulator / Centre Tecnològic de Telecomunicacions de Catalunya (CTTC)
* '''Mentors:''' Gabriel Ferreira, Biljana Bojovic, Amir Ashtari Gargari and Katerina Koutlia
* '''Contributor:''' Thiago Miyazaki
* '''Google page:''' https://summerofcode.withgoogle.com/myprojects/details/Z1PZUHaC
* '''Mentors:''' Gabriel Ferreira, Biljana Bojovic, Amir Ashtari Gargari, and Katerina Koutlia.
* '''Project Goals:''' Create a simplified means for users to instantiate and set up GEO and LEO satellites through Helper models, providing a high-level interface for users interested in simulations using LEO and GEO satellites. Write a LEO example using implementations from the 5G NR Module for ground nodes and channel models.
* '''Project Goals and Summary:''' To write an ns-3 example using Low Earth Orbit satellites communicating with a ground node, using beamforming, channel and propagation models from the NR Module and ns-3. Additionally, create a simplified means for users to instantiate and set up LEO satellites through Helper models, providing a high-level interface to be used in the example.
* '''Repository:''' https://gitlab.com/thiagomiyazaki/nr-ntn-dev
* '''Project page at GSoC Platform:''' https://summerofcode.withgoogle.com/myprojects/details/Z1PZUHaC
* '''About Me:''' I am a Computer Science graduate student at UNESP/IGCE (Universidade Estadual Paulista - Instituto de Geociências e Ciências Exatas) and since September/2024 I have been part of a research group on Networks and Distributed Systems at IC/UNICAMP, where we have been working on a LEO simulator integrating OpenRAN on ns-3.
* '''Link to commits in development fork:''' https://gitlab.com/thiagomiyazaki/nr-ntn-dev/-/compare/master...nr_mobility_porting?from_project_id=9684684
* '''Link to Merge Request in NR:''' https://gitlab.com/cttc-lena/nr/-/merge_requests/298/diffs
* '''Link to the project's design document:''' https://docs.google.com/document/d/1LpZ83rH4adx3xcJoWsKJ30zSKwbJ2m6n-mE855yXeCQ/edit?usp=sharing
** Report design decisions made during project development, providing background and rationale, code changes during porting, description of challenges faced, future work, and examples overview.
* '''Link to module documentation:''' https://gist.github.com/thiagomiyazaki/bad06a3aac4954fdfde131281db42dd0
** A more hands-on description of the module, including an introduction, features and characteristics, usage, descriptions of the examples and how to execute them.
 
= About the project =
 
As part of the project, we have achieved our primary objective of creating an ns-3 example for the 5G NR Module where LEO (Low Earth Orbit) satellites can communicate with UEs or stations on the ground under user-defined parameters such as frequency, bandwidth, antenna gain, TxPower, 3GPP Scenario, and other parameters related to the instantiation of a LEO constellation. Beamforming, propagation, channel, and applications were configured using native modules from ns-3 and from the NR Module, especially the NrHelper. Default values for these parameters were taken from 3GPP TR 38.821. The example uses the position of the first satellite node and places a ground node beneath it. BulkSendApplication is used to generate traffic between the nodes.


== Design Document ==
To support the simulation of satellite constellations, we have ported the circular mobility implementation from an existing LEO module called [https://github.com/dadada/ns-3-leo ns-3-leo]. It models simple circular orbits with constant escape/orbital velocity. While the base model was mostly preserved, some modifications were introduced to precompute node offsets within their orbits, in an effort to reduce computations and improve runtime efficiency when simulating large constellations. This module also includes a helper, used in the example, that provides a friendly interface to instantiate LEO constellations.


You can find the Design Document for this project at this link: https://docs.google.com/document/d/1LpZ83rH4adx3xcJoWsKJ30zSKwbJ2m6n-mE855yXeCQ/edit?usp=sharing
Beyond the mobility model, we have also ported an example from ns-3-leo that outputs position traces as ECEF coordinates. Using a Python script developed during the project, we generated animated plots that helped validate the nodes' initial positions and their movement over time, using different configurations of numbers of nodes, inclination, and altitude. This script was also added to the project as a utility.


= Milestones (not final) =
Additionally, we have also created an example that builds upon the orbit tracing example ported from ns-3-leo. In this example, an antenna is aggregated to every satellite node, and a function forces the antenna to be always oriented towards a given position. This was made to ensure that every antenna on each satellite node is always nadir-pointing-down - pointing to the Earth's center of mass. However, it can also be used to make the antenna points towards an arbitrary position while the satellite node moves. This function was also used in the main example to ensure correct antenna orientation, but future iterations may also contemplate satellite nodes with steerable antennas following a similar implementation.


* Orbital mobility model: week 9
= Milestones =
** Models simple circular orbits, could be later extended to model elliptical orbits. This implies constant escape/orbital velocity. Model should support both fake velocity (with no position changes) and real velocity (with position changes, for when handover is fully supported).


* Orbital mobility helper: week 13
* '''Plotting Utility''': week 7
** Helper should set up the orbital planes with a given inclination and altitude (radius), for a given number of equally spaced satellites. Orbits in same orbital plane should be equally separated. Orbital plane assignment should start at ascending node (where orbital plane simultaneously intersects the equator plane and the prime meridian plane, e.g. greenwich)
** Creation of a plotting utility (plot_traces.py) used to validate the initial position of the nodes placed by the PositionAllocator and the movement of the satellites themselves as time progresses. The script creates an animated plot that shows the movement of the nodes in their orbits and how the movement progresses as Earth rotates.


* Example with orbital mobility and 3GPP NTN settings: week 16
* '''Initial Mobility Porting Commit''': week 8
** Example should reproduce deployments of LEO constellations such as Starlink and OneWeb.
** First commit of the porting of the mobility module from ns-3-leo. It also included modifications to improve performance by precomputing node offsets within their orbits and a position tracing example.
 
* '''Increment on plotting utility''': week 11
** Added a feature so that the animated plot may display a vector indicating the antenna orientation for each satellite node.
 
* '''Antenna Orientation Example''': week 12
** An example building upon the tracing example, adding a function that forces the antenna on the satellite nodes to point towards a given coordinate.
 
* '''Example with orbital mobility and 3GPP NTN settings''': week 13
** Initial commit of the main example, reproducing the deployment of LEO satellites communicating with a ground station, including beamforming, channel, and propagation configuration via NR Helper.


= Weekly Reports =
= Weekly Reports =
Line 74: Line 93:
=== Week 9 (June 29-July 5) ===
=== Week 9 (June 29-July 5) ===
* A commit that aims to improve time and spatial complexity by using a progress vector to calculate each node offset within its orbit.
* A commit that aims to improve time and spatial complexity by using a progress vector to calculate each node offset within its orbit.
* Orbital plot validating the results produced by the commit.
* Overview of papers regarding delay models (doppler shift and propagation) and possible simulation implementations that already implement these delays.
* Overview of papers regarding delay models (doppler shift and propagation) and possible simulation implementations that already implement these delays.
* Presentation Link: https://docs.google.com/presentation/d/1JMrv2pCPvCljDxsHRJIS2D9WUEZXjQRanfaEA2GAYHU/edit?usp=sharing
* Presentation Link: https://docs.google.com/presentation/d/1JMrv2pCPvCljDxsHRJIS2D9WUEZXjQRanfaEA2GAYHU/edit?usp=sharing


=== Week 10 (July 6-12) ===
=== Week 10 (July 6-12) ===
* Expected: tests and validation for the Mobility Model & Position Allocator
* Profiling development branch implementations with Heaptrack
* Continue researching papers on delay models
* Slides: https://docs.google.com/presentation/d/123lwegaOMN5B1hGzSSAwEKZRxDp2U_fmmNaafy_kayE/edit?usp=sharing


=== Week 11 (July 13-19) ===
=== Week 11 (July 13-19) ===
* Expected: commit for the NTN Helper
* Presentation on reference scenarios for NTN Networks from TR 38.821
* Research on topics regarding antenna orientation
* Code implementation for a ns-3 and Python script to plot the satellite nodes and the antenna orientation.
* Discussion on delay models for the 3GPP NTN Channel.
* Presentation Link: https://docs.google.com/presentation/d/1lAk2F7AQ22G9PN6In5HQ2ytcFoE7MzFQxfnPsVu19RQ/edit?usp=sharing


=== Week 12 (July 20-26) ===
=== Week 12 (July 20-26) ===
* Expected: tests and validation for the NTN Helper
* Code for the Leo Antenna Orientation Example and Plot correction
* Initial code (draft) for the example
* Brief discussion on Coordinate Systems: ECEF, Geodetic/Geographic, Topocentric (ENU, AER).
* Presentation Link: https://docs.google.com/presentation/d/1rk-AQT76sv6T6AG5pgRjiSKLbLTO4-JUCVH1jVWR7Pk/edit?slide=id.p#slide=id.p


=== Week 13 (July 27-August 2) ===
=== Week 13 (July 27-August 2) ===
* Expected: code commit for the NTN example
* Initial commit for the example.
* Discussion on reference parameter values for the example taken from TR 38.821 (Scenario 11 - Study Case)
* Discussion on issues regarding the example: packet loss.
* Slides: https://docs.google.com/presentation/d/1B3la_o00EvvZHM5CrdwalEDPO6FkiR5cspLYTTfYipQ/edit?slide=id.g3639d1b4df6_0_24#slide=id.g3639d1b4df6_0_24


=== Week 14 (August 3-9) ===
=== Week 14 (August 3-9) ===
* Expected: tests and validation for the NTN example
* Discussion on issues with the application: packet loss
* Correcting TxPower values: use EIRP Density to calculate TxPower for satellite nodes using reference values from TR 38.821
* Fixing command line arguments for the example.
* Slides: https://docs.google.com/presentation/d/1mnmo-k099cqWyR-_syBs8Hi5tc-FNSskM3Mu0WNdWrQ/edit?usp=sharing


=== Week 15 (August 10-16) ===
=== Week 15 (August 10-16) ===
* Project Delivery and Final Results discussion
* Discussion on system-level simulation results taken from item 4.2 of R1-1913244.
* Slides: https://docs.google.com/presentation/d/1maSimAzyn2toZLoXaGFIcfQlUgaYmDrQH7sYbWkzjjg/edit?usp=sharing


=== Week 16 (August 17-23) ===
=== Week 16 (August 17-23) ===
* Writing reports, documentation, and design document.


=== Week 17 (August 24-30) ===
=== Week 17 (August 24-30) ===
* Preparing final submission.
* Project Delivery and Final Results discussion.


=== Week 18 (August 31- September 6) ===
=== Week 18 (August 31- September 6) ===
* (Deadline) September 1st: Final submission on the GSoC Platform.
= Future Work =
* Handle propagation delay.
* Upstream orbital helper to ns-3.
* Study ways to improve efficiency in channel model calculations.

Latest revision as of 14:00, 30 August 2025

Main Page - Roadmap - Summer Projects - Project Ideas - Developer FAQ - Tools - Related Projects

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

Back to GSoC 2025 projects

Please refer to this wiki as a central repository of information regarding the project and as a Final Report for GSoC '25.

Project Overview

About the project

As part of the project, we have achieved our primary objective of creating an ns-3 example for the 5G NR Module where LEO (Low Earth Orbit) satellites can communicate with UEs or stations on the ground under user-defined parameters such as frequency, bandwidth, antenna gain, TxPower, 3GPP Scenario, and other parameters related to the instantiation of a LEO constellation. Beamforming, propagation, channel, and applications were configured using native modules from ns-3 and from the NR Module, especially the NrHelper. Default values for these parameters were taken from 3GPP TR 38.821. The example uses the position of the first satellite node and places a ground node beneath it. BulkSendApplication is used to generate traffic between the nodes.

To support the simulation of satellite constellations, we have ported the circular mobility implementation from an existing LEO module called ns-3-leo. It models simple circular orbits with constant escape/orbital velocity. While the base model was mostly preserved, some modifications were introduced to precompute node offsets within their orbits, in an effort to reduce computations and improve runtime efficiency when simulating large constellations. This module also includes a helper, used in the example, that provides a friendly interface to instantiate LEO constellations.

Beyond the mobility model, we have also ported an example from ns-3-leo that outputs position traces as ECEF coordinates. Using a Python script developed during the project, we generated animated plots that helped validate the nodes' initial positions and their movement over time, using different configurations of numbers of nodes, inclination, and altitude. This script was also added to the project as a utility.

Additionally, we have also created an example that builds upon the orbit tracing example ported from ns-3-leo. In this example, an antenna is aggregated to every satellite node, and a function forces the antenna to be always oriented towards a given position. This was made to ensure that every antenna on each satellite node is always nadir-pointing-down - pointing to the Earth's center of mass. However, it can also be used to make the antenna points towards an arbitrary position while the satellite node moves. This function was also used in the main example to ensure correct antenna orientation, but future iterations may also contemplate satellite nodes with steerable antennas following a similar implementation.

Milestones

  • Plotting Utility: week 7
    • Creation of a plotting utility (plot_traces.py) used to validate the initial position of the nodes placed by the PositionAllocator and the movement of the satellites themselves as time progresses. The script creates an animated plot that shows the movement of the nodes in their orbits and how the movement progresses as Earth rotates.
  • Initial Mobility Porting Commit: week 8
    • First commit of the porting of the mobility module from ns-3-leo. It also included modifications to improve performance by precomputing node offsets within their orbits and a position tracing example.
  • Increment on plotting utility: week 11
    • Added a feature so that the animated plot may display a vector indicating the antenna orientation for each satellite node.
  • Antenna Orientation Example: week 12
    • An example building upon the tracing example, adding a function that forces the antenna on the satellite nodes to point towards a given coordinate.
  • Example with orbital mobility and 3GPP NTN settings: week 13
    • Initial commit of the main example, reproducing the deployment of LEO satellites communicating with a ground station, including beamforming, channel, and propagation configuration via NR Helper.

Weekly Reports

Community Bonding

Week 1 (May 4-10)

  • Review on topics about 4G & 5G:
    • 4G Architecture, components and Protocol Stack.
    • 5G modes (NSA & SA), functions and Protocol Stack.

Week 2 (May 11-17)

  • Requirement gathering with mentors and project discussion

Week 3 (May 18-24)

  • Studied cttc-nr-demo example
  • Studied NR Module documentation:
    • Getting Started
    • Manual: Introduction, Architecture, PHY Layer & Beamforming

Week 4 (May 25-31)

  • Requirement gathering with mentors and project discussion

GSoC officially starts

Week 5 (June 1-7)

Week 6 (June 8-14)

  • Initial draft and commit for a LEO Position Allocator and Mobility Model
    • Sets up resolution and define a discrete position for satellites within an orbit, setting their initial positions as evenly as possible, given a certain resolution.

Week 7 (June 15-21)

Week 8 (June 22-28)

Week 9 (June 29-July 5)

Week 10 (July 6-12)

Week 11 (July 13-19)

Week 12 (July 20-26)

Week 13 (July 27-August 2)

Week 14 (August 3-9)

Week 15 (August 10-16)

Week 16 (August 17-23)

  • Writing reports, documentation, and design document.

Week 17 (August 24-30)

  • Preparing final submission.
  • Project Delivery and Final Results discussion.

Week 18 (August 31- September 6)

  • (Deadline) September 1st: Final submission on the GSoC Platform.

Future Work

  • Handle propagation delay.
  • Upstream orbital helper to ns-3.
  • Study ways to improve efficiency in channel model calculations.