GSOC2025Ntn
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
- Project Name: NTN Helper and a LEO example for 5G NR
- Organization: ns-3, Network Simulator / Centre Tecnològic de Telecomunicacions de Catalunya (CTTC)
- Contributor: Thiago Miyazaki
- Mentors: Gabriel Ferreira, Biljana Bojovic, Amir Ashtari Gargari, and Katerina Koutlia.
- 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.
- Project page at GSoC Platform: https://summerofcode.withgoogle.com/myprojects/details/Z1PZUHaC
- 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.
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)
- Study of important concepts for LEO Satellites, such as orbital planes and coordinate systems.
- Study case of existing LEO module: ns-3-leo
- Brief presentation on how the module sets up the initial position for satellite nodes.
- Presentation Link: https://docs.google.com/presentation/d/1EFlk-BCmONiPj0NMILidULXBKr6AY-3hsKmKUbVGHMI/edit?usp=sharing
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)
- Finished porting Mobility from ns-3-leo, including a trace example and utility to plot data for validation.
- The porting also included a new feature to precompute each node position.
- Presentation Link: https://docs.google.com/presentation/d/12uZ00mu8gW1Q0abqZW-l7rihcXTcDhp7l8E1cCy18Ks/edit?usp=sharing
Week 8 (June 22-28)
- Rebased fork to nr-4.0
- Created initial design document for the project.
- Precomputation feature: replace position queue with a deque to save computational resources.
- WIP: Envision how to share a single orbit deque with positions to multiple satellites in the orbit.
- Presentation Link: https://docs.google.com/presentation/d/19VjevJO2O1_R2cD9pE2XqFrgzoklJuk3GF4Cytt7C_E/edit?usp=sharing
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.
- 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.
- Presentation Link: https://docs.google.com/presentation/d/1JMrv2pCPvCljDxsHRJIS2D9WUEZXjQRanfaEA2GAYHU/edit?usp=sharing
Week 10 (July 6-12)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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.