Routing of non-geostationary orbit (NGSO) satellite systems
Decoupling user and backbone routing tables in NGSO satellites with pre-computed information addresses the scalability and reliability issues of real-time updates, enhancing system performance and resilience.
Patent Information
- Application Number
- CN202011639048.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-01-02
- Filing Date
- 2020-12-31
- Publication Date
- 2024-12-27
- Estimated Expiration
- 2040-12-31
AI Technical Summary
Current routing solutions in Non-Geostationary Orbit (NGSO) satellite systems rely heavily on real-time calculations and updates by onboard IP routers, which do not scale well due to the high frequency of handover events and fail when real-time updates are not possible, leading to computational overhead and potential system failures.
Implementing user routing tables and pre-computed backbone routing tables on NGSO satellites, decoupling them to reduce computational burden and real-time updates, allowing satellites to operate autonomously with pre-calculated routing information.
Reduces computational overhead and real-time data exchange, enabling the management system to handle a larger number of satellites and maintain connectivity during temporary communication losses, improving system scalability and reliability.
Smart Images

Figure HDA0002879441360000011 
Figure HDA0002879441360000021 
Figure HDA0002879441360000022
Abstract
Description
Technical Field
[0001] The present invention relates to the field of routing in satellite systems. In particular, the present invention relates to routing data services in NGSO satellite systems. Background Art
[0002] NGSO systems utilize constellations of satellites in Low Earth Orbit (LEO) and / or Medium Earth Orbit (MEO) that sweep across the Earth's surface as they orbit the Earth. This is in contrast to satellites in Geostationary Earth Orbit (GEO), which are stationary relative to the Earth's surface as they orbit the Earth.
[0003] Due to the relative motion of the NGSO satellite system with respect to the surface of the Earth, the NGSO satellite system generates a greater number of ground antenna handovers than the GEO satellite system. In addition, unlike the handovers that occur in the GEO satellite system due to the mobility of the mobile terminal (e.g., beam handovers), the NGSO satellite system is tasked with supporting multiple types of handovers, including intra-orbit handovers (due to the motion of the satellites relative to each other in the same orbital plane), inter-orbit handovers (due to the motion of the satellites relative to each other in different orbital planes), link handovers (due to link interruptions, which may be due to node and / or link failures), and beam handovers (due to satellite motion, Earth rotation, and / or mobile terminal mobility).
[0004] Current routing solutions in NGSO satellite systems use Internet Protocol (IP) routers on the satellites to implement link state routing. With this approach, the management system continuously calculates and updates routing information for the entire satellite network in real time as handover events occur. This type of solution does not scale well to NGSO satellite systems that use a large number of satellites due to their non-geostationary orbits relative to the Earth's surface and their relative motion relative to each other. Furthermore, this type of solution fails when the management system is no longer able to (even temporarily) perform the real-time calculations that the NGSO satellite system relies on for routing information updates. Summary of the invention
[0005] An NGSO satellite system is described that implements one or more user routing tables and multiple pre-computed backbone routing tables on its satellites. The user routing tables track the connectivity of users to satellites in the NGSO system, and each backbone routing table defines a snapshot of the time-varying backbone topology seen by a particular satellite. During operation, as the topology changes over time, the satellite selects a different backbone routing table and performs updates to the user routing tables as changes occur in user and satellite connectivity. The decoupling of the user routing tables from the backbone routing tables at the satellite reduces the computational burden on the NGSO system because the backbone routing tables are computed in advance and the NGSO system is subsequently given a computationally lower burden to perform real-time updates to the user routing tables. Furthermore, the decoupling of the user routing tables from the backbone routing tables reduces the amount of real-time information exchanged between satellites and ground assets in the NGSO satellite system.
[0006] One embodiment includes a method operable by a satellite of an NGSO system. The method includes receiving a plurality of backbone routing tables from a ground controller, wherein each backbone routing table defines a snapshot of a time-varying backbone topology of the NGSO system, receiving one or more user routing tables from the ground controller, wherein the user routing tables identify connectivity of users to satellites in the NGSO system, and receiving a data packet for routing in the NGSO system. The method also includes determining, based on the user routing table, whether the data packet is destined for a first user that is directly connected to another satellite in the NGSO system. In response to determining that the data packet is destined for the first user, the method also includes: identifying another satellite based on the user routing table; identifying an active backbone routing table from the plurality of backbone routing tables; and forwarding the data packet to the other satellite based on the active backbone routing table. The method also includes determining, based on the user routing table, whether the data packet is destined for a second user that is directly connected to the satellite, and in response to determining that the data packet is destined for the second user, sending the data packet to the second user via a user link maintained by the satellite.
[0007] Another embodiment includes a non-transitory computer-readable medium containing programming instructions that, when executed by one or more processors of a satellite of a non-geostationary satellite orbit (NGSO) system, direct the satellite to perform the following steps: receiving a plurality of backbone routing tables from a ground controller, wherein each backbone routing table defines a snapshot of a time-varying backbone topology of the NGSO system; receiving one or more user routing tables from the ground controller, wherein the user routing tables identify connectivity of users to satellites in the NGSO system; and receiving a data packet for routing in the NGSO system. The instructions further direct the one or more processors to determine, based on the user routing table, whether the data packet is destined for a first user directly connected to another satellite in the NGSO system. In response to determining that the data packet is destined for the first user, the instructions further direct the one or more processors to identify another satellite based on the user routing table, identify an active backbone routing table from the plurality of backbone routing tables, and forward the data packet to the other satellite based on the active backbone routing table. The instructions further direct the one or more processors to determine, based on the user routing table, whether the data packet is destined for a second user directly connected to the satellite. In response to determining that the data packet is destined for the second user, the instructions further direct the one or more processors to send the data packet to the second user via a user link maintained by the satellite.
[0008] Another embodiment includes an NGSO system including a satellite. The satellite includes a memory storing: a plurality of backbone routing tables received from a ground controller, wherein each backbone routing table defines a snapshot of a time-varying backbone topology of the NGSO system; and one or more user routing tables received from the ground controller, wherein the user routing table identifies connectivity of users to satellites in the NGSO system. The satellite includes a communication system that implements at least one of: user links with users of the NGSO system, intra-orbit links with other satellites in the NGSO system that share a common orbital plane with the satellite, and inter-orbit links with other satellites in the NGSO system that are located in a different orbital plane from the satellite. The satellite also includes at least one processor that receives a data packet for routing in the NGSO system and determines, based on the user routing table, whether the data packet is destined for a first user that is directly connected to another satellite in the NGSO system. In response to determining that the data packet is destined for the first user, the at least one processor performs the following steps: identifying another satellite based on the user routing table; identifying an active backbone routing table from the plurality of backbone routing tables; and forwarding the data packet to another satellite via an inter-orbit link or an intra-orbit link based on the active backbone routing table. The at least one processor determines, based on the user routing table, whether the data packet is destined for a second user directly connected to the satellite, and in response to determining that the data packet is destined for the second user, sends the data packet to the second user via a user link maintained by the satellite
[0009] The features, functions, and advantages that have been discussed can be achieved independently in various embodiments or may be combined in yet other embodiments, further details of which can be seen with reference to the following description and drawings. BRIEF DESCRIPTION OF THE DRAWINGS
[0010] Some embodiments will now be described, by way of example only, and with reference to the drawings. The same reference number represents the same element or the same type of element on all drawings.
[0011] Figure 1 An NGSO satellite system topology is depicted in one illustrative embodiment.
[0012] Figure 2A In an illustrative embodiment Figure 1 Block diagram of a satellite of an NGSO satellite system.
[0013] Figure 2B In an illustrative embodiment Figure 1 Block diagram of the ground controller of an NGSO satellite system.
[0014] Figure 3 In one illustrative embodiment, Figure 1 A flow chart of a method of satellite operation of an NGSO satellite system.
[0015] Figure 4 In an illustrative embodiment Figure 1 Satellite routing implementation method of NGSO satellite system.
[0016] Figure 5 Depicted is an illustrative embodiment for Figure 1 The user routing table and backbone routing table of the satellite in the NGSO satellite system.
[0017] Figure 6 Depicts an illustrative embodiment Figure 3 Additional details of the method. DETAILED DESCRIPTION
[0018] The accompanying drawings and the following description illustrate specific exemplary embodiments. It should be appreciated that those skilled in the art will be able to design various arrangements that, although not explicitly described or shown herein, embody the principles described herein and are included within the intended scope of the claims that follow this specification. In addition, any examples described herein are intended to aid in understanding the principles of the present disclosure and should be interpreted as not limiting. Therefore, the present disclosure is not limited to the specific embodiments or examples described below, but is defined by the claims and their equivalents.
[0019] As previously mentioned, existing routing solutions for NGSO satellite systems rely heavily on real-time calculations and updates of onboard satellite Internet Protocol (IP) routers during handover events, which occur more frequently in NGSO satellite systems than in GEO satellite systems. Figure 1 An NGSO satellite system topology 100 is depicted in an illustrative embodiment. In this embodiment, the topology 100 includes a plurality of NGSO satellites 102 disposed within orbital planes 108-109. In various embodiments, the orbital planes 108-109 include a MEO orbital plane, a LEO orbital plane, or a combination of MEO and LEO orbital planes. LEO satellites are typically found in circular orbits between about 160 kilometers (km) and about 2000 km above the surface of the earth, with an orbital period of about 90 minutes. MEO satellites are typically found in circular orbits between 2000 km and less than the GEO level (e.g., 35786 km) around the earth, with an orbital period varying from about 2 hours to approximately 24 hours.
[0020] Although topology 100 depicts only satellites 102 in LEO and MEO orbital planes, in other embodiments, topology 100 includes satellites in LEO and / or MEO and other satellites in the GEO orbital plane (not shown). In topology 100, satellites 102-1, 102-2, and 102-3 are located in orbital plane 108, and satellites 102-4, 102-5, and 102-6 are located in orbital plane 109.
[0021] In topology 100, intra-orbit links 110 allow satellites 102 located in the same orbital plane 107-108 to communicate with each other. Typically, intra-orbit links 110 are fixed over time because satellites 102 located in the same orbital plane 107-108 generally do not change position relative to each other. Additionally, in this embodiment, inter-orbit links 112 allow satellites 102 located in different orbital planes 107-108 to communicate with each other. Inter-orbit links 112 change over time because satellites 102 located in different orbital planes 107-108 move relative to each other. For example, if orbital plane 109 is closer to the earth's surface than orbital plane 108, satellites 102 in orbital plane 109 may move in the direction of arrow 123 relative to satellites 102 in orbital plane 108 (e.g., satellites 102 in orbital plane 109 sweep across the earth's surface at a faster rate than satellites 102 in orbital plane 108). When this movement occurs, satellite 102-6 may handoff as satellite 102-6 changes its communications from satellite 102-2 to satellite 102-3. When satellite 102-6 is handoffed, inter-orbit link 112-4 is created between satellite 102-6 and satellite 102-3, and inter-orbit link 112-3 between satellite 102-6 and satellite 102-2 may be terminated.
[0022] Additionally, in this embodiment, satellite 102 communicates with users 114 via user links 118. In this embodiment, user 114-1 and user 114-2 are depicted as mobile terminals (e.g., mobile satellite phones), while user 114-3 is depicted as a ground station (e.g., a fixed placement device). However, in other embodiments, the number and type of users 114 are different.
[0023] As mobile users 114 (e.g., user 114-1 and user 114-2) move across the surface of the earth, and / or as satellite 102 moves relative to user 114 over time, user link 118 changes over time. For example, if satellite 102 in orbital plane 108-109 moves relative to the surface of the earth in the direction of arrows 122-123, user 114-3 can switch from satellite 102-3 to satellite 102-6. In this example, user link 118-5 is created between user 114-3 and satellite 102-6, and user link 118-3 between user 114-3 and satellite 102-3 can be terminated. In another example, user 114-2 can switch from satellite 102-2 to satellite 102-5. In this example, user link 118-4 is created between user 114-2 and satellite 102-5, and user link 118-2 between user 114-2 and satellite 102-2 can be terminated.
[0024] In previous NGSO architectures, time-varying changes in NGSO topology or time-varying changes in user connectivity to NGSO satellites generated real-time updates to IP routing tables used by NGSO satellites, where topology changes required ground assets to compute new backbone routing strategies based on the orbital mechanics of the NGSO satellites and upload the backbone routing changes to the NGSO satellites. This type of real-time update generates a significant computational overhead in the NGSO satellite system and generates real-time data updates between ground assets and satellites in the NGSO satellite system, and does not scale well as the number of NGSO satellites increases due to the increasing complexity of the time-varying topology. In addition, when a partial system outage occurs and real-time updates are not distributed to NGSO satellites, partial or complete failure of the system may occur when NGSO satellites move out of alignment with each other and their inter-orbital and / or intra-orbital communication links are lost.
[0025] In the embodiments described herein, time-varying changes to the backbone routing table in the topology 100 and time-varying changes to the user routing table in the topology 100 are decoupled from each other using separate routing tables on the satellite 102. In addition, the time-varying changes to the backbone routing table in the topology 100 are pre-computed by the ground controller 120 of the topology 100, uploaded to the satellite 102, and selected by the satellite 102 at different points in time. As the topology 100 changes over time, the satellite 102 uses different backbone routing tables (e.g., according to the instructions of the ground controller 120). When the user routing table in the topology 100 changes over time (e.g., when the user 114 switches from one satellite 102 to another satellite 102), the ground controller 120 updates the user routing table of the satellite 102 independently of the backbone routing table, which reduces the real-time information exchanged between the satellite 102 and the ground controller 120. In particular, a technical benefit of allowing the ground controller 120 to manage a greater number of NGSO satellites than previous NGSO systems is achieved because the real-time aspects of computing backbone connectivity changes for the topology 100 are reduced or eliminated. Furthermore, a temporary loss in communications between the satellites 102 and the ground controller 120 does not immediately produce a failure in the topology 100 as it would in previous NGSO systems because the satellites 102 continue to use pre-computed backbone routing tables stored locally at each satellite 102 to adapt to backbone connectivity changes over time.
[0026] In some embodiments, the ground controller 120 includes a software defined network (SDN) architecture. In these embodiments, topology and business engineering intelligence and algorithms are instantiated as SDN applications executed on the ground controller 120. The ground controller 120 manages the satellites 102 using a priori knowledge of the motion of the satellites 102 in the orbital planes 107-108. In some embodiments, the SDN control plane is used to configure the routing tables of the satellites 102. In these embodiments, in addition to the inter-orbital links 112, the ground controller 120 manages user 114 connectivity routing and topology 100 connectivity routing. The ground controller 120 is aware a priori when the inter-orbital satellites 102 have overlapping fields of view of each other (e.g., when the field of view of satellite 102-2 overlaps the field of view of satellite 102-6). Ground controller 120 also optimizes the backbone routing of topology 100, making decisions about which inter-orbit links 112 to create and disconnect (e.g., by creating inter-orbit link 112-4 and disconnecting inter-orbit link 112-3 as satellite 102-6 transitions out of the field of view of satellite 102-2 and transitions into the field of view of satellite 102-3).
[0027] In some embodiments, the ground controller 120 manages handover requests between the user 114 and the satellite 102. In one such embodiment, the ground controller 120 manages the handover request of the user 114 using a mobility management SDN application executed on the ground controller 120, thereby updating the user routing table on the satellite 102 in real time in response to the user link 118 handover (e.g., the user routing table is based on the real-time connectivity changes between the user 114 and the satellite 102). In other embodiments, the ground controller 120 uses a priori knowledge about the predicted switching events between the user 114 and the satellite 102 to pre-calculate the user routing table and upload it to the satellite 102 (e.g., the user routing table is based on the predicted connectivity changes between the user 114 and the satellite 102). Using the pre-calculated user routing table, when a temporary loss of communication occurs between the satellite 102 and the ground controller 120, the satellite 102 can operate autonomously with respect to the handover between the user 114 and the satellite 102.
[0028] In this embodiment, satellite 102 includes any combination of hardware and / or software that provides in-orbit communication capabilities to users 114 and other satellites 102, including providing user link 118 communication capabilities, intra-orbit link 110 communication capabilities, and inter-orbit link 112 communication capabilities.
[0029] Figure 2A1 is a block diagram of a satellite 102 in an illustrative embodiment. In this embodiment, the satellite 102 includes, but is not limited to, one or more processors 202 that execute software instructions, a memory 204, a power system 206, a propulsion system 208, a communication system 210, and one or more switches / routers 214. The processor 202 (and any other processors described herein) include any hardware device capable of performing the functions described for the satellite 102. The processor 202 (and any other processors described herein) may include one or more central processing units (CPUs), microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), etc. Some examples of processors include CORE TM Processors, Advanced Reduced Instruction Set Computing (RISC) Machines Processor, etc.
[0030] The memory 204 (and any other memory devices described herein) includes any hardware device capable of storing data. The memory 204 (and any other memory devices described herein) may include one or more volatile or non-volatile dynamic random access memory (DRAM) devices, flash memory devices, volatile or non-volatile static RAM devices, hard drives, solid-state disks (SSDs), etc. Some examples of non-volatile DRAM and SRAM include battery-backed DRAM and battery-backed SRAM.
[0031] The power system 206 includes any component, system, or device that stores and generates power for the satellite 102. Some examples of the power system 206 include batteries, solar panels, fuel cells, etc. The propulsion system 208 includes any component, system, or device that provides the satellite 102 with the ability to maneuver in orbit. The propulsion system 208 may include onboard fuel, rocket engines, ion thrusters, etc. The communication system 210 includes any component, system, or device that enables the satellites 102 to communicate with each other via the intra-orbit link 110 and the inter-orbit link 112, and to communicate with the users 114 via the user link 118. The communication system 210 may include a radio communication system, an optical communication system, or a combination of radio and optical communication systems. The switch / router 214 includes any component, system, or device that provides packet routing capabilities to the satellite 102. This packet routing capability includes routing data packets received from the satellite 102 to the communication system 210 for data transmission via the intra-orbit link 110, the inter-orbit link 112, and the user link 118.
[0032] In this embodiment, the memory 204 stores one or more user routing tables 216 and a plurality of backbone routing tables 218. Typically, the user routing tables 216 and backbone routing tables 218 are different for each satellite 102 in the topology 100. For each satellite 102, the user routing table 216 may track which satellite 102 the user 114 is connected to. For example, if the user 114-2 is connected to the satellite 102-2 (e.g., via the user link 118-2), the user routing table 216 of the satellite 102-2 may indicate that the user 114-2 is locally connected to the satellite 102-2 (e.g., via local routing information such as the currently active user link 118-2 and / or the egress port of the switch / router 214 associated with the user link 118-2). The user routing tables 216 of other satellites 102 may indicate that the user 114-2 is not locally attached to the particular satellite 102. For example, a user routing table 216 for a satellite 102-1 that is not locally connected to user 114-2 may indicate an egress port associated with forwarding data to user 114-2 (e.g., an egress port associated with intra-orbit link 110-1 between satellite 102-1 and satellite 102-2). When a user 114 is handed off to a different satellite 102 in topology 100, it is the task of ground controller 120 to calculate a new user routing table 216 for each satellite 102 that indicates the change in connectivity for user 114 and upload the appropriate user routing table 216 to the satellite 102.
[0033] As previously described, the backbone routing table 218 may be different for each satellite 102 because each of the satellites 102 may see a different portion of the topology 100. For example, the portion of the topology 100 seen by satellite 102-4 includes the intra-orbit link 110-3 with satellite 102-5 and the inter-orbit link 112-2 with satellite 102-1, while the portion of the topology 100 seen by satellite 102-5 includes the intra-orbit link 110-3 with satellite 102-4, the intra-orbit link 110-4 with satellite 102-6, and the inter-orbit link 112-2 with satellite 102-2. It is the task of the ground controller 120 to pre-compute the backbone routing table 218 and upload it to the satellite 102. It may also be the task of the ground controller 120 to instruct the satellite 102 which backbone routing table 218 should be used at a particular point in time. For example, the ground controller 120 may instruct the satellite 102 to utilize the backbone routing table 218-1 during a first time frame of the day, and subsequently instruct the satellite 102 to utilize the backbone routing table 218-2 during a second time frame of the day.
[0034] In this embodiment, ground controller 120 manages and communicates with satellite 102 through network 122 coupled to user 114 - 3 , which is shown in this embodiment as a ground station. Figure 2B 1 is a block diagram of a ground controller 120 in an illustrative embodiment. In this embodiment, the ground controller 120 may include, but is not limited to, one or more processors 220 that execute software instructions, a memory 222, and a network interface 224. The network interface 224 electrically couples the ground controller 120 with the network 122. The network interface 224 includes any component, system, or device that provides network signaling and network frame processing capabilities to the ground controller 120. In some embodiments, the network 122 may include a local network, the Internet, or a combination of a local network and the Internet.
[0035] Figure 3 FIG. 3 is a flow chart of a method 300 that may be performed by an NGSO satellite in accordance with an illustrative embodiment. Figure 1 102-2 of the topology 100, although the method 300 is equally applicable to other satellites 102 in the topology 100. In addition, the method 300 is equally applicable to other NGSO satellites in other topologies. The steps of the method 300 are not all inclusive, and the method 300 may include other steps not shown. In addition, the steps of the method 300 may be performed in an alternative order.
[0036] Consider that topology 100 is operational and ground controller 120 has a pre-computed backbone routing table 218 for satellite 102-2. To do so, ground controller 120 utilizes a priori orbital information of satellite 102-2, including a time-varying field of view that satellite 102-2 has of other satellites 102 in topology 100. For example, over time, the field of view of satellite 102-2 to other satellites 102 in topology 100 may include satellite 102-6, satellite 102-5, and satellite 102-4, wherein ground controller 120 pre-computes backbone routing table 218 for satellite 102-2 that changes accordingly over time.
[0037] In response to calculating the backbone routing table 218 of the satellite 102-2, the ground controller 120 uploads the backbone routing table 218 to the satellite 102-2. The satellite 102-2 receives the backbone routing table 218 from the ground controller 120 (see step 301) and stores the backbone routing table 218 in the memory 204 (see step 302). The satellite 102-2 selects the active backbone routing table 218 stored in the memory 204 (e.g., according to the instruction of the ground controller 120, see step 303).
[0038] Ground controller 120 computes a user routing table 216 for satellite 102-2 that includes information regarding whether user 114 is locally connected to satellite 102-2 and which of users 114 are connected to other satellites 102 in topology 100. For example, user routing table 216 for satellite 102-2 may indicate that user 114-2 is locally connected to satellite 102-2, and that user 114-1 and user 114-3 are connected to other satellites 102 in topology 100. This type of information allows satellite 102-2 to determine whether packets for user 114 are forwarded to another satellite 102 in topology 100 or processed locally at satellite 102-2 without forwarding.
[0039] In response to calculating the user routing table 216 of satellite 102-2, ground controller 120 uploads the user routing table 216 to satellite 102-2, which receives the user routing table 216 (see step 304). Satellite 102-2 stores its user routing table 216 in memory 204 (see step 305).
[0040] During operation, satellite 102-2 monitors information from ground controller 120 to determine if it has received a new user routing table 216 (see step 306). If a new user routing table 216 has not been received, step 310 is performed. For example, a new user routing table 216 may be received when a user 114 switches from one satellite 102 to another satellite 102. When a switch occurs, ground controller 120 calculates a new user routing table 216 that reflects the change in how user 114 is connected to satellites 102 in topology 100 and uploads the new user routing table to the appropriate satellite 102. When satellite 102-2 receives the new user routing table 216, satellite 102-2 updates the user routing table 216 stored in memory 204 (see step 308) and performs step 310.
[0041] During operation, the satellite 102-2 also determines whether the active backbone routing table 218 has changed (see step 310). If the active backbone routing table 218 has not changed, step 314 is performed. Typically, the active backbone routing table 218 is changed based on time-varying changes in the topology 100. In one embodiment, the ground controller 120 instructs the satellite 102-2 when to change the active backbone routing table 218. In another embodiment, the satellite 102-2 selects a different backbone routing table 218 based on internal criteria (e.g., time of day). If the satellite 102-2 is instructed or decides to change the active backbone routing table 218, the satellite 102-2 selects a new backbone routing table 218 from the plurality of backbone routing tables 218 that the satellite 102-2 previously received from the ground controller 120 (see step 312), and step 314 is performed.
[0042] During operation, satellite 102-2 monitors its communication links (e.g., intra-orbit link 110, inter-orbit link 112, and user link 118) to determine whether a data packet has been received for processing (see step 314). In other embodiments, receiving a data packet also includes receiving a plurality of data packets. Therefore, the following discussion regarding processing of a received data packet is equally applicable to processing a plurality of data packets.
[0043] If no data packet is received, the satellite 102-2 continues monitoring and processing returns to step 306. If the satellite 102-2 receives a data packet, step 316 is performed. The received data packet may, for example, be for one of the users 114. The satellite 102-2 determines whether the data packet is for a user 114 that is locally connected to other satellites 102 in the topology 100 based on one or more of the user routing tables 216 (see step 316). For example, a user 114 served by a user link 118 maintained by a satellite 102 other than the satellite 102-2. If the data packet is not for a user 114 on another satellite 102, then in step 318, the satellite 102-2 determines whether the data packet is for a user 114 that is locally connected to itself (e.g., the satellite 102-2). If the data packet is not for any user 114 served by the satellite 102-2, the data packet is discarded (see step 320) and processing returns to step 306 for monitoring.
[0044] If satellite 102-2 determines that the data packet is for user 114 locally connected to itself, satellite 102-2 sends the packet to user 114 via user link 118 maintained by satellite 102-2 (see step 322), and processing returns to step 306. For example, if the data packet is addressed to user 114-2, satellite 102-2 sends the packet to user 114-2 via user link 118-2.
[0045] As depicted in step 316, when satellite 102-2 determines that the data packet is for a user 114 that is locally connected to a different satellite 102, satellite 102-2 identifies which of the satellites 102 the user 114 is locally connected to based on user routing table 216 (see step 324). Satellite 102-2 identifies active backbone routing table 218 at satellite 102-2 (see step 326) and forwards the data packet to one of the satellites 102 to which the user 114 is locally connected based on active backbone routing table 218 (see step 328). Processing then returns to step 306 for monitoring.
[0046] For example, consider that satellite 102-2 receives a data packet addressed to user 114-1. Based on user routing table 216 stored at satellite 102-2, satellite 102-2 determines that user 114-1 is locally connected to satellite 102-4. Satellite 102-2 then forwards the data packet to satellite 102-4 based on active backbone routing table 218 stored in memory 204 of satellite 102-2. For example, active backbone routing table 218 may instruct satellite 102-2 to forward the data packet for user 114-1 to satellite 102-1 via intra-orbit link 110-1, or to forward the data packet for user 114-1 to satellite 102-5 via inter-orbit link 112-2. In either case, the receiving satellite 102 performs the same or similar process to determine whether the received data packet is for user 114 that is locally connected to that particular satellite 102. For example, if satellite 102-1 receives a data packet for user 114-1 from satellite 102-2, satellite 102-1 will determine that user 114-1 is locally connected to another satellite 102, and in response, satellite 102-1 forwards the data packet to satellite 102-4 via inter-orbit link 112-4. If satellite 102-5 receives a data packet from satellite 102-2, satellite 102-5 will determine that user 114-1 is locally connected to another satellite 102, and in response, satellite 102-5 forwards the data packet to satellite 102-4 via intra-orbit link 110-3. In response to satellite 102-4 receiving a data packet for user 114-1, satellite 102-4 determines that user 114-1 is not locally connected to another satellite 102, and sends the data packet to user 114-1 via a user link 118 (e.g., user link 118-1) maintained by satellite 102-4.
[0047] Figure 41 is a routing implementation of satellite 102-2 in an illustrative embodiment. In this embodiment, switch / router 214-1 of satellite 102-2 includes ports 401-405, which are communicatively coupled to communication channel 210-1, communication channel 210-2, communication channel 210-3, communication channel 210-4, and communication channel 210-5, respectively. Based on topology 100 at a specific point in time, port 401 provides a routing path to satellite 102-1 through intra-orbit link 110-1, port 402 provides a routing path to satellite 102-5 through inter-orbit link 112-2, port 403 provides a routing path to user 114-2, port 404 provides a routing path to satellite 102-6, and port 405 provides a routing path to satellite 102-3 through intra-orbit link 110-2. Figure 4 will be used to describe how satellite 102-2 may be used. Figure 3 The user routing table 216 and backbone routing table 218 are used to perform the packet routing process discussed later.
[0048] Figure 5 A user routing table 216 and a backbone routing table 218 for satellite 102-2 are depicted in one illustrative embodiment. Figure 5 A plurality of table numbers 502 from 0 to N are illustrated for use by satellite 102-2 in processing packets received for user 114, where N is an arbitrary table number. Figure 5 Each table number 502 in defines a match condition 504 and an action 506 to be taken when a match occurs in its corresponding table. Table zero corresponds to user routing table 216-1, which defines what action 506 occurs for which users 114 are not locally connected to satellite 102-2. Table 1 corresponds to user routing table 216-2, which defines what action 506 occurs when a user 114 is locally connected to satellite 102-2. Table 2 defines the backbone routing table 218 that is currently active. Figure 5 , the active backbone routing table 218 is Table 3, which corresponds to backbone routing table 218-1. Each of backbone routing tables 218 defines actions 506 that occur when a data packet is routed to a satellite 102 other than satellite 102-2. Figure 5 Tables 4 and N are also described, which define the future backbone routing topology of satellite 102-2. Figure 6 Discuss how to use Satellite 102-2 Figure 5 Table and Figure 4 The routing topology.
[0049] Figure 6 Additional details of method 300 are described in one illustrative embodiment. Figure 5-Figure 6and Satellite 102-2 Description Figure 6 steps, despite Figure 6 The steps in may be applied to other NGSO satellites in topology 100 or other NGSO topologies.
[0050] When satellite 102-2 receives a data packet (see step 314), the processing of the data packet is changed from the corresponding Figure 5 1. In this embodiment, user routing table 216-1 (table zero) identifies which users 114 in topology 100 are connected to other satellites 102 (e.g., users 114 that are not locally connected to satellite 102-2). For example, user routing table 216-1 defines that user 114-1 is locally connected to satellite 102-4, and user 114-3 is locally connected to satellite 102-3. When satellite 102-2 receives a packet, satellite 102-2 determines whether the address of the packet matches the IP prefix of a user 114 locally connected to other satellites 102 based on the entries in table zero and match condition 504 (see Figure 6 The IP prefix match in table zero notifies satellite 102-2 that the data packet received by satellite 102-2 is destined for another satellite 102 in topology 100.
[0051] If a match occurs for an entry in table zero, satellite 102-2 performs action 506 in table zero corresponding to the matching entry. Specifically, satellite 102-2 writes satellite node ID metadata for the packet, which identifies how the packet is subsequently processed (see step 604).
[0052] For example, if the data packet received by satellite 102-2 includes an IP prefix for user 114-1, satellite 102-2 performs action 506 to write the node ID of satellite 102-4 to the metadata associated with the packet, and processing jumps to Table 2. If the data packet received by satellite 102-2 includes an IP prefix for user 114-3, satellite 102-2 performs action 506 to write the node ID of satellite 102-3 to the metadata associated with the packet, and processing also jumps to Table 2. In either case, the metadata written for the data packet defines how the backbone routing table 218 will be routed through the switch / router 214-1 of satellite 102-2 (see Figure 4 ) to forward packets. Use Figure 5 2, satellite 102-2 identifies active backbone routing table 218 (see step 324). Figure 5 In Table 2, Table 2 indicates that the active backbone routing table 218 is located in Table 3 corresponding to the backbone routing table 218-1. Using the information in Table 2, in Figure 5Processing continues at Table 3 in . Using Table 3 and the metadata written for the packet, satellite 102-2 identifies which of the ports 401-405 of switch / router 214-1 to route the packet to (see step 606). Satellite 102-2 then routes the packet to one of satellites 102 using the identified port at switch / router 214-1 (see step 608).
[0053] Returning to step 602, if no match condition 504 is found for the packet, satellite 102-2 begins processing table 1 corresponding to user routing table 216-2. In this case, no match assumes that the packet received by satellite 102-2 is for a user 114 locally connected to satellite 102-2 (e.g., user 114 communicating with satellite 102-2 via user link 118).
[0054] When processing moves to Table 1 based on action 506 specified in Table Zero, satellite 102-2 determines whether the data packet received by satellite 102-2 matches the IP prefix of user 114 in Table 1 (i.e., user routing table 214-2). Table 1 identifies which users 114, if any, are locally connected to satellite 102-2 (see step 610). If no match occurs, the packet is discarded (see step 612). If the address of the data packet does match the IP prefix of user 114 in Table 1, satellite 102-2 identifies a local port for its locally attached user 114 (see step 614). Satellite 102-2 then uses switch / router 214-1 to send the data packet to its user 114 through the identified port (see step 616). In this embodiment, user 114-2 is locally connected to satellite 102-2 via user link 118-2 at port 403 (see Figure 4 ). Therefore, if the data packet matches the IP prefix of user 114-2 in Table 1, satellite 102-2 performs action 506 in Table 1 to send the data packet out through port 403 at switch / router 214-1.
[0055] For example, if the metadata associated with the data packet indicates the node ID of satellite 102-1, satellite 102-2 forwards the data packet through port 401, as indicated by backbone routing table 218-1. If the metadata indicates the node ID of satellite 102-3, port 405 is used. Similarly, if the metadata indicates the node ID of satellite 102-4, port 402 is used, and if the metadata indicates the node ID of satellite 102-6, port 404 is used. This information corresponds to match condition 504 and its action 506 as indicated in Table 3, which is backbone routing table 218-1. In Figure 44-14, which is a snapshot of the routing topology defined by the active backbone routing table 218-1 at satellite 102-2. In response to sending data in step 614, processing returns to step 306 for monitoring.
[0056] As mentioned above Figure 3 As discussed, satellite 102-2 may receive updates to its user routing table 216 during operation when user 114 is switched to a different satellite 102 in topology 100. When an update occurs, satellite 102-2 updates the user routing table 216 by updating Figure 5 Table 0 and / or Table 1 in step 308 (see Figure 6 ), Table 0 and Table 1 correspond to user routing table 216-1 and user routing table 216-2, respectively. For example, if user 114-1 switches from satellite 102-4 to satellite 102-5, the ground controller generates a new user routing table 216-1 for satellite 102-2, which indicates that action 506 of user 114-1 is changed to write the node ID of satellite 102-2 instead of the node ID of satellite 102-4. This type of update is performed independently of the backbone routing table 218, thereby reducing the computational burden of the ground controller 120 and the real-time data update from the ground controller 120 to the satellite 102. In another example, if user 114-2 is switched from satellite 102-2 to satellite 102-5 (e.g., user link 118-2 between user 114-2 and satellite 102-2 is removed, and user link 118-4 is created between user 114-2 and satellite 102-5), ground controller 120 updates both user routing table 216-1 and user routing table 216-2 of satellite 102-2. In particular, the update to table 0 will indicate that user 114-2 is located at satellite 102-5, and the entry for user 114-2 in table 2 will be deleted.
[0057] As discussed above, since the topology 100 changes due to the orbital motion of the satellite 102, the satellite 102 uses different backbone routing tables 218 at different points in time. Figure 6 In step 312), satellite 102-2 updates table 2 at different times to indicate which backbone routing table 218 is currently active. For example, at some point in the future, Figure 5 Table 2 in Table 4 may be updated to point to the new backbone routing table 218 (eg, by updating the information in Table 2, backbone routing table 218-2 in Table 4). This allows satellite 102-2 to adapt to changes in topology 100 over time during the packet routing process.
[0058] Although the process has been described specifically for the transient backbone topology and satellite 102-2 defined in backbone routing table 218-1, the process is equally applicable to other satellites 102 in the topology 100 and at other operating times during which the topology 100 will change based on the orbital mechanics of the satellites 102.
[0059] Any of the various elements shown in the figure or described herein can be implemented as hardware, software, firmware or some combination of these elements. For example, an element can be implemented as special hardware. Special hardware elements can be referred to as "processors", "controllers" or some similar terms. When provided by a processor, functions can be provided by a single special processor, a single shared processor or multiple separate processors, some of which can be shared. In addition, the explicit use of the term "processor" or "controller" should not be interpreted as referring only to hardware capable of executing software, but can implicitly include but is not limited to digital signal processor (DSP) hardware, network processor, application specific integrated circuit (ASIC) or other circuits, field programmable gate array (FPGA), read-only memory (ROM) for storing software, random access memory (RAM), non-volatile storage device, logic or some other physical hardware component or module.
[0060] In addition, an element can be implemented as instructions that can be executed by a processor or computer to perform the function of the element. Some examples of instructions are software, program code, and firmware. These instructions are operable when the processor executes these instructions to instruct the processor to perform the function of the element. The instructions can be stored on a storage device readable by the processor. Some examples of storage devices are digital or solid-state memory, magnetic storage media such as disks and tapes, hard drives, or optically readable digital data storage media.
[0061] Furthermore, the present invention comprises embodiments according to the following clauses:
[0062] Clause 1. A method 300 operable by a satellite of a non-geostationary satellite orbit (NGSO) system, the method comprising:
[0063] receiving a plurality of backbone routing tables from a ground controller, wherein each backbone routing table defines a snapshot 301 of a time-varying backbone topology of the NGSO system;
[0064] receiving one or more user routing tables from a ground controller, wherein the user routing tables identify connectivity of users to satellites in the NGSO system 304;
[0065] receiving a data packet for routing in an NGSO system 314;
[0066] determining, based on the user routing table, whether the data packet is destined for a first user directly connected to another satellite in the NGSO system 316;
[0067] In response to determining that the destination of the data packet is the first user, performing the following steps:
[0068] identifying another satellite based on the user routing table 324;
[0069] identifying an active backbone routing table from among the plurality of backbone routing tables 326; and
[0070] forwarding the data packet to another satellite based on the active backbone routing table 328;
[0071] determining whether the data packet is destined for a second user directly connected to the satellite based on the user routing table 318; and
[0072] In response to determining that the data packet is destined for the second user, the data packet is sent 322 to the second user via a user link maintained by the satellite.
[0073] Clause 2. The method according to clause 1, further comprising:
[0074] Determining that the active backbone routing table has changed 310; and
[0075] A new active backbone routing table is selected 312 from among the plurality of backbone routing tables.
[0076] Clause 3. The method of clause 2, wherein the step of determining that the active backbone routing table has changed comprises:
[0077] An instruction is received from a ground controller to select a new active backbone routing table.
[0078] Clause 4. The method according to any one of clauses 1 to 3, further comprising:
[0079] Updates to the user routing table are received from a ground controller in response to real-time or predicted changes in user connectivity to satellites in the NGSO system.
[0080] Clause 5. A method according to any one of clauses 1 to 4, wherein:
[0081] Determining whether the data packet is destined for the first user based on the user routing table includes:
[0082] determining that the data packet is destined for the first user when the address of the data packet matches an Internet Protocol (IP) prefix of a table entry for the first user in a first user routing table of the one or more user routing tables 602; and
[0083] The method further includes:
[0084] Writing satellite node identification (ID) metadata 604 for the data packet;
[0085] Based on the metadata of the data packet and the active backbone routing table, identifying 606 a first port at a switch of the satellite that is communicatively coupled to another satellite via at least one of an intra-orbit link and an inter-orbit link; and
[0086] The data packet is forwarded 608 via the first port.
[0087] Clause 6. The method according to clause 5, wherein:
[0088] Determining whether the data packet is destined for the second user based on the user routing table includes:
[0089] determining that the data packet is addressed to the second user 610 when the address of the data packet matches the IP prefix of the table entry of the second user in the second user routing table of the one or more user routing tables, and
[0090] The method further includes:
[0091] identifying 614 a second port at a switch of the satellite, based on a table entry for the second user in the second user routing table, the second port communicatively coupled to the second user via a user link; and
[0092] The data packet is sent to the second user 616 through the second port.
[0093] Clause 7. The method according to clause 6, further comprising:
[0094] An update to the first user routing table is received from the ground controller based on real-time or predicted connectivity changes of the first user to other satellites in the NGSO system.
[0095] Clause 8. The method according to clause 7, further comprising:
[0096] An update to the second user routing table is received from the ground controller based on real-time or predicted connectivity changes of the second user to the satellite.
[0097] Clause 9. A non-transitory computer readable medium containing programmed instructions that, when executed by one or more processors 202 of a satellite 102 of a non-geostationary satellite orbit (NGSO) system 100, directs the satellite to perform the following steps:
[0098] receiving a plurality of backbone routing tables from a ground controller, wherein each backbone routing table defines a snapshot 301 of a time-varying backbone topology of the NGSO system;
[0099] receiving one or more user routing tables from a ground controller, wherein the user routing tables identify connectivity of users to satellites in the NGSO system 304;
[0100] receiving a data packet for routing in an NGSO system 314;
[0101] determining, based on the user routing table, whether the data packet is destined for a first user directly connected to another satellite in the NGSO system 316;
[0102] In response to determining that the destination of the data packet is the first user, the following steps are performed:
[0103] identifying another satellite based on the user routing table 324;
[0104] identifying an active backbone routing table from among the plurality of backbone routing tables 326; and
[0105] forwarding the data packet to another satellite 328 based on the active backbone routing table; and
[0106] Based on the user routing table, determining whether the data packet is destined for a second user directly connected to the satellite 318; and
[0107] In response to determining that the destination of the data packet is the second user, the following steps are performed: the data packet is sent to the second user 322 via a user link maintained by the satellite.
[0108] Clause 10. The non-transitory computer readable medium of clause 9, wherein the programming instructions further instruct the satellite to perform the following steps:
[0109] determining that the active backbone routing table has changed 310; and
[0110] A new active backbone routing table is selected 312 from among the plurality of backbone routing tables.
[0111] Clause 11. The non-transitory computer readable medium of clause 10, wherein the programming instructions further instruct the satellite to perform the following steps:
[0112] In response to instructions received from a ground controller, a new active backbone routing table is selected.
[0113] Clause 12. The non-transitory computer-readable medium of any of clauses 9-11, wherein the programming instructions further instruct the satellite to perform the following steps:
[0114] Updates to the user routing table are received from a ground controller in response to real-time or predicted changes in user connectivity to satellites in the NGSO system.
[0115] Clause 13. The non-transitory computer-readable medium of any of Clauses 9-12, wherein:
[0116] The satellite determines that the data packet is destined for the first user 602 when the address of the data packet matches an Internet Protocol (IP) prefix of a table entry for a first user in a first user routing table of the one or more user routing tables; and
[0117] The programming instructions further instruct the satellite to perform the following steps:
[0118] Writing satellite node identification (ID) metadata 604 for the data packet;
[0119] Based on the metadata of the data packet and the active backbone routing table, identifying 606 a first port at a switch of the satellite that is communicatively coupled to another satellite via at least one of an intra-orbit link and an inter-orbit link; and
[0120] The data packet is forwarded 608 via the first port.
[0121] Clause 14. The non-transitory computer-readable medium of clause 13, wherein:
[0122] When the address of the data packet matches the IP prefix of the table entry of the second user in the second user routing table of the one or more user routing tables, the satellite determines that the data packet is addressed to the second user 610, and
[0123] The programming instructions further instruct the satellite to perform the following steps:
[0124] identifying, based on a table entry for the second user in the second user routing table, a second port at a switch of the satellite, the second port communicatively coupled to the second user via a user link 614; and
[0125] The data packet is sent to the second user 616 through the second port.
[0126] Clause 15. The non-transitory computer readable medium of clause 14, wherein the programming instructions further instruct the satellite to perform the following steps:
[0127] An update to the first user routing table is received from a ground controller based on a real-time or predicted change in connectivity of the first user to another satellite in the NGSO system.
[0128] Clause 16. The non-transitory computer readable medium of clause 15, wherein the programming instructions further instruct the satellite to perform the following steps:
[0129] An update to the second user routing table is received from the ground controller based on a real-time or predicted change in connectivity of the second user to the satellite.
[0130] Clause 17. A non-geostationary satellite orbit (NGSO) system 100, the NGSO system comprising:
[0131] Satellite 102, comprising:
[0132] Memory 204, which stores:
[0133] a plurality of backbone routing tables 218 received from the ground controller 120, wherein each backbone routing table defines a snapshot of a time-varying backbone topology of the NGSO system; and
[0134] one or more user routing tables 216 received from a ground controller, wherein the user routing table identifies connectivity of users 114 to satellites 102 in the NGSO system;
[0135] a communication system 210 configured to implement at least one of: a user link 118 with a user of the NGSO system, an intra-orbit link 110 with other satellites in the NGSO system that share a common orbital plane with the satellite, and an inter-orbit link 112 with other satellites in the NGSO system that are in a different orbital plane than the satellite; and
[0136] at least one processor 202 configured to: receive a data packet for routing in the NGSO system and determine, based on the user routing table, whether the data packet is destined for a first user directly connected to another satellite in the NGSO system,
[0137] wherein at least one processor is configured to: in response to determining that the destination of the data packet is the first user, identify another satellite based on the user routing table, identify an active backbone routing table from a plurality of backbone routing tables, and forward the data packet to another satellite via an inter-orbit link or an intra-orbit link based on the active backbone routing table;
[0138] At least one processor is configured to determine whether the data packet is destined for a second user directly connected to the satellite based on the user routing table, and in response to determining that the data packet is destined for the second user, send the data packet to the second user via a user link maintained by the satellite.
[0139] Clause 18. The NGSO system of clause 17, wherein:
[0140] At least one processor is configured to determine that an active backbone routing table has changed and select a new active backbone routing table from the plurality of backbone routing tables.
[0141] Clause 19. The NGSO system of clause 18, wherein:
[0142] At least one processor is configured to select a new active backbone routing table in response to instructions received from a ground controller.
[0143] Clause 20. An NGSO system according to any of Clauses 17-19, wherein:
[0144] At least one processor is configured to receive updates to the user routing table from a ground controller in response to real-time or predicted changes in user connectivity to satellites in the NGSO system.
[0145] Clause 21. An NGSO system according to any of Clauses 17-20, wherein:
[0146] Satellites also include:
[0147] a switch 214 having a first port communicatively coupled to another satellite via an intra-orbit link or an inter-orbit link,
[0148] The at least one processor is configured to: determine that the destination of the data packet is the first user when the address of the data packet matches an Internet Protocol (IP) prefix of a table entry of the first user in a first user routing table of the one or more user routing tables,
[0149] At least one processor is configured to write satellite node identification (ID) metadata for a data packet, identify a first port based on the metadata of the data packet and an active backbone routing table, and forward the data packet to another satellite through the first port.
[0150] Clause 22. The NGSO satellite system of clause 21, wherein:
[0151] The switch also includes a second port communicatively coupled to a second user via a user link,
[0152] At least one processor is configured to: determine that the data packet is addressed to the second user when the address of the data packet matches the IP prefix of the table entry of the second user in the second user routing table of the one or more user routing tables, identify the second port based on the table entry of the second user in the second user routing table, and send the data packet to the second user through the second port.
[0153] Clause 23. The NGSO satellite system of clause 22, wherein:
[0154] The at least one processor is configured to receive updates to the first user routing table from the ground controller based on real-time or predicted connectivity changes of the first user to other satellites in the NGSO system.
[0155] Clause 24. The NGSO satellite system of clause 23, wherein:
[0156] The at least one processor is configured to receive an update to the second user routing table from the ground controller based on a real-time or predicted change in connectivity of the second user to the satellite.
[0157] Clause 25. An NGSO satellite system according to any one of Clauses 17-24, further comprising:
[0158] Ground controls.
[0159] Although specific embodiments are described herein, the scope is not limited to those specific embodiments. Rather, the scope is defined by the following claims and their equivalents.
Claims
1. A method (300) operable by a satellite of a non-geostationary satellite orbit system (NGSO system), the method comprising: Receiving a plurality of backbone routing tables from a ground controller, wherein each of the backbone routing tables defines a snapshot of a time-varying backbone topology of the NGSO system (301); receiving one or more user routing tables from the ground controller, wherein the user routing tables identify connectivity of users to satellites in the NGSO system (304); receiving a data packet for routing in the NGSO system (314); determining, based on the user routing table, whether the data packet is destined for a first user directly connected to another satellite in the NGSO system (316); In response to determining that the destination of the data packet is the first user, performing the following steps: identifying the other satellite based on the user routing table (324); identifying an active backbone routing table from among the plurality of backbone routing tables (326); as well as forwarding the data packet to the other satellite based on the active backbone routing table (328); as well as determining, based on the user routing table, whether the data packet is destined for a second user directly connected to the satellite (318); and In response to determining that the data packet is destined for the second user, the data packet is sent to the second user via a user link maintained by the satellite (322).
2. The method according to claim 1, further comprising: Determining that the active backbone routing table has changed (310); as well as A new active backbone routing table is selected from the plurality of backbone routing tables (312).
3. The method according to claim 1 or 2, further comprising: Receiving updates to the user routing table from the ground controller in response to real-time or predicted changes in the connectivity of users to satellites in the NGSO system.
4. The method according to claim 1 or 2, wherein: Determining whether the destination of the data packet is the first user based on the user routing table comprises: When the address of the data packet matches the Internet Protocol prefix (IP prefix) of the table entry of the first user in the first user routing table of the one or more user routing tables, determining that the destination of the data packet is the first user (602); and The method further comprises: Writing satellite node identification metadata, i.e., satellite node ID metadata, into the data packet (604); identifying, based on the metadata of the data packet and the active backbone routing table, a first port at a switch of the satellite, the first port communicatively coupled to another satellite via at least one of an intra-orbit link and an inter-orbit link (606); and The data packet is forwarded through the first port (608).
5. A non-transitory computer readable medium containing programming instructions which, when executed by one or more processors (202) of a satellite (102) of a non-geostationary satellite orbit system (NGSO system) (100), direct the satellite to perform the following steps: Receiving a plurality of backbone routing tables from a ground controller, wherein each of the backbone routing tables defines a snapshot of a time-varying backbone topology of the NGSO system (301); receiving one or more user routing tables from the ground controller, wherein the user routing tables identify connectivity of users to satellites in the NGSO system (304); receiving a data packet for routing in the NGSO system (314); determining, based on the user routing table, whether the data packet is destined for a first user directly connected to another satellite in the NGSO system (316); In response to determining that the destination of the data packet is the first user, performing the following steps: identifying the other satellite based on the user routing table (324); identifying an active backbone routing table from among the plurality of backbone routing tables (326); as well as forwarding the data packet to the other satellite based on the active backbone routing table (328); as well as determining, based on the user routing table, whether the data packet is destined for a second user directly connected to the satellite (318); and In response to determining that the destination of the data packet is the second user, the following step is performed: sending the data packet to the second user via a user link maintained by the satellite (322).
6. The non-transitory computer readable medium of claim 5, wherein the programming instructions further instruct the satellite to perform the following steps: determining that the active backbone routing table has changed (310); and A new active backbone routing table is selected from the plurality of backbone routing tables (312).
7. A non-geostationary satellite orbit system, i.e., a NGSO system (100), the NGSO system comprising: A satellite (102) comprising: A memory (204) storing: a plurality of backbone routing tables (218) received from a ground controller (120), wherein each of the backbone routing tables defines a snapshot of a time-varying backbone topology of the NGSO system; and one or more user routing tables (216) received from the ground controller, wherein the user routing tables identify connectivity of users (114) to satellites (102) in the NGSO system; A communication system (210) configured to implement at least one of: a user link (118) with a user of the NGSO system, an intra-orbit link (110) with other satellites in the NGSO system that share a common orbital plane with the satellite, and an inter-orbit link (112) with the other satellites in the NGSO system that are in a different orbital plane than the satellite; and at least one processor (202) configured to: receive a data packet for routing in the NGSO system and determine, based on the user routing table, whether the data packet is destined for a first user directly connected to another satellite in the NGSO system, wherein the at least one processor is configured to: in response to determining that the destination of the data packet is the first user, identify the other satellite based on the user routing table, identify an active backbone routing table from the plurality of backbone routing tables, and forward the data packet to the other satellite via an inter-orbit link or an intra-orbit link based on the active backbone routing table, The at least one processor is configured to determine, based on the user routing table, whether the data packet is destined for a second user directly connected to the satellite, and in response to determining that the data packet is destined for the second user, send the data packet to the second user via a user link maintained by the satellite.
8. The NGSO system according to claim 7, wherein: The at least one processor is configured to determine that the active backbone routing table has changed and select a new active backbone routing table from the plurality of backbone routing tables.
9. The NGSO system according to claim 7 or 8, wherein: The at least one processor is configured to receive updates to the user routing table from the ground controller in response to real-time or predicted changes in the connectivity of users to satellites in the NGSO system.
10. The NGSO system according to claim 7 or 8, wherein: The satellite further comprises: a switch (214) having a first port communicatively coupled to the other satellite via the intra-orbit link or the inter-orbit link, The at least one processor is configured to: determine that the destination of the data packet is the first user when the address of the data packet matches an Internet Protocol prefix (IP prefix) of a table entry of the first user in a first user routing table of the one or more user routing tables, The at least one processor is configured to write satellite node identification metadata, i.e., satellite node ID metadata, for the data packet, identify the first port based on the metadata of the data packet and the active backbone routing table, and forward the data packet to the other satellite through the first port.
