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
- 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
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.
To support the deployment of realistic satellite constellations, we have ported the circular mobility model from an existing LEO module called ns-3-leo. 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.
Along with the mobility, we have also ported an example from ns-3-leo that outputs position traces as ECEF coordinates. These traces can be used to create an animated plot that was used to validate the correctness of the mobility implementation. This plot can be produced using a python script that also was created during the period of the project.
As another addition, we have also created an example that builds upon the tracing example ported from ns-3-leo. In this example an antenna is aggregated to every satellite node, and a function was created that enforces the antenna to be always oriented towards a certain given position. This is was made to ensure that every antenna on the satellite nodes are always nadir-pointing-down - pointing to the Earth's center of mass.
Milestones
- Plotting utility: week 7/8
- 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. It generates an animated plot where it is possible to observe the nodes moving in their orbits.
- Orbital mobility model: week 7/8
- Models simple circular 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).
- 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.
- Orbital mobility helper: week 13
- 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)
- Example with orbital mobility and 3GPP NTN settings: week 16
- The example should reproduce deployments of LEO constellations such as Starlink and OneWeb 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 deliverables for final submission.
- Project Delivery and Final Results discussion
Week 18 (August 31- September 6)
- (Deadline) September 1st: Final submission on the GSoC Platform.