This disclosure relates to data routing, and, more specifically, to data routing between satellites in orbit.
Satellites in space that orbit the Earth can perform routing of data between ground stations on Earth by routing data between satellites to facilitate global data communications coverage. Unlike a terrestrial network, a satellite network includes nodes that are in constant motion and that change positions with respect to each other and to the ground. Such a dynamic environment may require sophisticated management beyond that of terrestrial networks for sophisticated routing decision-making for path optimization.
In general, this disclosure describes techniques for orbit-aware routing of data by satellites that provide for autonomous, dynamic (on-demand) routing by satellites, with little or no reliance on ground systems for route generation and very low routing management overhead. Instead, a satellite that receives data for routing may determine how to route the data to a neighboring satellite without relying on information from a ground station. Such orbit-aware routing may be highly responsive to changing crosslink and node outages, providing rapid re-routing around problematic links and nodes.
In one example, a method for orbit-aware routing includes: receiving, by a satellite orbiting the Earth, a data packet; determining, by the satellite, whether a final destination plane of the data packet is different from an orbital plane of the satellite; in response to determining that the final destination plane of the data packet is different from the orbital plane of the satellite, determining, by the satellite, whether the satellite is able to communicate with one or more cross-plane neighboring satellites; selecting, by the satellite, a neighboring satellite to receive the data packet based at least in part on whether the satellite is able to communicate with one or more cross-plane neighboring satellites; and forwarding, by the satellite, the data packet to the neighboring satellite.
In another example, a satellite includes: a memory; and processing circuitry operably coupled to the memory and configured to: receive a data packet; determine whether a final destination plane of the data packet is different from an orbital plane of the satellite; in response to determining that the final destination plane of the data packet is different from the orbital plane of the satellite, determine whether the satellite is able to communicate with one or more cross-plane neighboring satellites; select a neighboring satellite to receive the data packet based at least in part on whether the satellite is able to communicate with one or more cross-plane neighboring satellites; and forward the data packet to the neighboring satellite.
In another example, a computer-readable storage medium storing instructions that, when executed by one or more processors of a satellite orbiting the Earth, cause the one or more processors of the satellite to: receive a data packet; determine whether a final destination plane of the data packet is different from an orbital plane of the satellite; in response to determining that the final destination plane of the data packet is different from the orbital plane of the satellite, determine whether the satellite is able to communicate with one or more cross-plane neighboring satellites; select a neighboring satellite to receive the data packet based at least in part on whether the satellite is able to communicate with one or more cross-plane neighboring satellites; and forward the data packet to the neighboring satellite.
The details of one or more examples are set forth in the accompanying drawings and the description below. Other features, objects, and advantages will be apparent from the description and drawings, and from the claims.
Each of satellites 4 may be an artificial satellite, such as a communication satellite, placed into space around Earth 2. Each of satellites 4 can communicate (e.g., send and receive data) with other satellites and with ground stations on Earth 2, so that the satellite constellation of satellites 4 act as a communication network to transmit data between ground stations on Earth 2.
Ground stations on Earth 2, such as ground stations 8A and 8B, may be terrestrial radio stations located on the surface of Earth 2 or in Earth 2's atmosphere, that transmit and receive radio waves to communicate with satellites 4. For example, a ground station may be able to communicate, such as by sending or receiving radio waves, with satellites that are within the ground station's line of sight. In other examples, ground stations may be any endpoint on Earth 2 that may communicate with satellites 4, such as mobile phones, satellite radios, antenna, and the like.
Communication between satellites 4 orbiting along the same orbital plane, such as between satellite 4A-1 and satellite 4A-2 both orbiting along orbital plane 6A, is referred to herein as in-plane communication. Similarly, communication between satellites 4 orbiting along different orbital planes, such as between satellite 4B-4 orbiting along orbital plane 6B and satellite 4C-4 orbiting along in orbital plane 6C, is referred to herein as cross-plane communication. A satellite may be able to communicate with neighboring satellites, including in-plane neighboring satellites and cross-plane neighboring satellites. For example, a satellite, such as satellite 4C-4 along orbital plane 6C, may have two in-plane neighboring satellites 4C-3 and 4C-5 that are the closest satellites in the same orbital plane 6C as satellite 4C-4 and two cross-plane neighboring satellites 4B-4 and 4D-4 that are the closest satellites in the two neighboring orbital planes 6B and 6D, respectively to orbital plane 6C of satellite 4C-4.
Satellites 4 may form a communication network that ground stations on Earth 2 may use to route data between ground stations on Earth 2. For example, to route data from ground station 8A to ground station 8B, ground station 8A may transmit the data to satellite 4D-8 that is the closest satellite that is within line of sight to ground station 8A. Satellites 4 may route the data received from ground station 8A through the constellation of satellites 4 to the closest satellite that is within line of sight to ground station 8B, and may transmit the data to ground station 8B, thereby performing routing of data between ground stations 8A and 8B.
However, certain technical problems may arise when satellites 4 perform data routing between ground stations. For example, a satellite that participates in such data routing may not always be able to communicate with a ground station in order to receive instructions from a ground station as to how to route data. In another example, a satellite that is close to the poles (e.g., north pole or south pole) of the Earth 2, such that the satellite is situated above a cutoff latitude in the northern hemisphere of the Earth 2 or below a cutoff latitude in the southern hemisphere of the Earth 2, may not be able to maintain communication links with cross-plane neighboring satellites because satellites 4 in different orbital planes 6 may converge near the poles of the Earth 2 and cross paths, thereby potentially causing radio frequency interference and preventing a satellite from communicating with its cross-plane neighboring satellites.
In accordance with aspects of the present disclosure, satellites 4 may perform orbit-aware routing to route data between ground stations on Earth 2. When performing orbit-aware routing, satellites 4 may be able to route data through satellites 4 from an origin ground station to a destination ground station without having to communicate with ground stations on Earth 2 besides receiving the data from the origin ground station and forwarding the data to the destination ground station. Further, when performing orbit-aware routing, satellites 4 may be able to route data through satellites 4 while taking into account the cutoff latitudes, thereby being able to more quickly and intelligently route data between the origin ground station and the destination ground station.
To perform orbit-aware routing, a satellite may, after receiving data from another satellite or from a ground station, determine whether the final destination plane of the data is the same as the orbital plane of the satellite. That is, a satellite may determine whether it is in the same orbital plane as the destination satellite that is to communicate with the destination ground station to forward the data to the ground station. If the satellite determines that it is in the same orbital plane as the satellite that is to communicate with the destination ground station, the satellite may forward the data to the in-plane neighboring satellite that is closer to the destination satellite relative to the satellite.
If the satellite determines that it is not in the same orbital plane as the satellite that is to communicate with the destination ground station, the satellite may determine whether it is able to forward the data to the cross-plane neighboring satellite that is closer to the final destination plane relative to the orbital plane of the satellite. For example, the satellite may not be able to forward the data to the cross-plane neighboring satellite that is closer to the final destination plane relative to the orbital plane of the satellite if the satellite is above the cutoff latitude in the northern hemisphere or below the cutoff latitude in the southern hemisphere, or if for any other reason the link between the satellite and the cross-plane neighboring satellite is down.
If the satellite determines it is able to forward the data to the cross-plane neighboring satellite that is closer to the final destination plane relative to the orbital plane of the satellite, the satellite may forward the data to the cross-plane neighboring satellite that is closer to the final destination plane relative to the orbital plane of the satellite. However, if the satellite determines that it is unable to forward the data to the cross-plane neighboring satellite that is closer to the final destination plane relative to the orbital plane of the satellite, the satellite may forward the data to an in-plane neighboring satellite. For example, the satellite may not be in a pre-determined region that allows communication with cross-plane neighboring satellites if it is above the cutoff latitude in the northern hemisphere or below the cutoff latitude in the southern hemisphere. Thus, if the satellite determines that it is above the cutoff latitude in the northern hemisphere or below the cutoff latitude in the southern hemisphere, the satellite may forward the data to an in-plane neighboring satellite that is relatively closer to the equator relative to the satellite so that the data may move below the cutoff latitude in the northern hemisphere or above the cutoff latitude in the southern hemisphere.
In the example of
Satellite 4D-8 may, after receiving data from satellite 4D-9, determine that the final destination plane of the data is orbital plane 6A, which is different from orbital plane 6D of satellite 4D-8. Because satellite 4D-8 is not below cutoff latitude 15 in the southern hemisphere of the Earth 2, satellite 4D-8 may forward the data to cross-plane neighboring satellite 4C-8 that is closer to orbital plane 6A relative to satellite 4D-8.
Satellite 4C-8 may, after receiving the data from satellite 4D-8, may determine that the final destination plane of the data is orbital plane 6A, which is different from orbital plane 6C of satellite 4C-8. Thus, satellite 4C-8 may forward the data to cross-plane neighboring satellite 4B-8 that is closer to orbital plane 6A relative to satellite 4C-8. Satellite 4B-8 may, after receiving the data from satellite 4C-8, may determine that the final destination plane of the data is orbital plane 6A, which is different from orbital plane 6B of satellite 4B-8. Thus, satellite 4B-8 may forward the data to cross-plane neighboring satellite 4A-8 that is closer to orbital plane 6A relative to satellite 4B-8.
Satellite 4A-8 may, after receiving the data from satellite 4B-8, determine that the final destination plane of the data is orbital plane 6A, which is the same orbital plane 6A of satellite 4A-8. Thus, satellite 4A-8 may forward the data to in-plane neighboring satellite 4A-7 which is the in-plane neighboring satellite of satellite 4A-8 that is closer to ground station 8B relative to satellite 4A-8.
Satellite 4A-7 may, after receiving the data from satellite 4A-8, determine that the final destination plane of the data is orbital plane 6A, which is the same orbital plane 6A of satellite 4A-7. Thus, satellite 4A-7 may forward the data to in-plane neighboring satellite 4A-6 which is the in-plane neighboring satellite of satellite 4A-7 that is closer to ground station 8B relative to satellite 4A-7. Satellite 4A-6 may, after receiving the data from satellite 4A-7, determine that it is the destination satellite (e.g., the satellite that is closest to as within line-of-sight of ground station 8B) for the data, and may transmit the data to ground station 8B.
In general each satellite may be able to communicate (e.g., send and receive data) with in-plane neighboring satellites and cross-plane neighboring satellites. In-plane neighboring satellites may be the closest satellites to the satellite that are in the same orbital plane as the satellite. Cross-plane neighboring satellites may be the closest satellites to the satellite that are in the nearest orbital planes to the orbital plane of the satellite. Thus, satellite 4B may be able to communicate with two in-plane neighboring satellites 4C and 4D that are on the same orbital plane as satellite 4B, and may also be able to communicate with two cross-plane neighboring satellites 4E and 4F that are the nearest orbital planes to the orbital plane of satellite 4B.
However, in some cases, a satellite may be able to communicate with fewer than two cross-plane neighboring satellites. For example, if two cross-plane satellites are traveling in opposite directions, the two cross-plane satellites may not be able to communicate with each other. The dividing line between satellites travelling in opposite directions is referred to herein as a seam. In
As shown in the example of
One or more processors 10 may implement functionality and/or execute instructions within satellite 12. For example, processors 10 on satellite 12 may receive and execute instructions stored by storage devices 18 that provide the functionality of network processor 20. These instructions executed by processors 10 may cause satellite 12 to store and/or modify information, within storage devices 18 during program execution. Processors 10 may execute instructions of network processor 20 to perform one or more operations. That is, network processor 20 may be operable by processors 10 to perform various functions described herein.
One or more communication units 14 of satellite 12 may communicate with external devices, such as ground stations and neighboring satellites, by transmitting and/or receiving data. For example, satellite 12 may use one or more communication units 14 to transmit and/or receive radio signals on a radio network, transmit and/or receive satellite signals on a satellite network, transmit and/or receive optical signals, and the like. Examples of one or more communication units 14 include a network interface card (e.g. such as an Ethernet card), an optical transceiver, a radio frequency transceiver, laser transceiver, and/or any other type of device that can send and/or receive signals for inter-satellite communication or ground-to-satellite or satellite-to-ground communication. For example, one or more communication units may include four communication ports (e.g., eth0, eth1, eth2, and eth3) for communicating with two in-plane neighboring satellites and two cross-plane neighboring satellites.
One or more storage devices 18 within satellite 12 may store information for processing during operation of satellite 12. In some examples, storage device 18 is a temporary memory, meaning that a primary purpose of storage device 18 is not long-term storage. Storage devices 18 on satellite 12 may be configured for short-term storage of information as volatile memory and therefore not retain stored contents if deactivated. Examples of volatile memories include random access memories (RAM), dynamic random access memories (DRAM), static random access memories (SRAM), and other forms of volatile memories known in the art.
Storage devices 18, in some examples, also include one or more computer-readable storage media. Storage devices 18 may be configured to store larger amounts of information than volatile memory. Storage devices 18 may further be configured for long-term storage of information as non-volatile memory space and retain information after activate/off cycles. Examples of non-volatile memories include magnetic hard discs, optical discs, floppy discs, flash memories, or forms of electrically programmable memories (EPROM) or electrically erasable and programmable (EEPROM) memories. Storage devices 18 may store program instructions and/or data associated with network processor 20 and network data store 22.
In accordance with techniques of the disclosure, satellite 12 may include one or more processors 10 that are configured to execute network processor 20 to perform orbit-aware routing. That is, one or more processors 10 may execute network processor 20 to enable satellite 12 to intelligently route data to a neighboring satellite or to a destination ground station without relying on communicating with ground stations.
One or more processors 10 may be configured to execute network processor 20 to, in response to satellite 12 receiving a data packet from another satellite or from a ground station via one or more communication units 14, route the data packet to a neighboring satellite or to a ground station. In some examples, satellites and ground stations may send and receive data via data packets. The data packets may conform to ethernet frames, transmission control protocol (TCP), user datagram protocol (UDP), internet protocol (IP), other suitable level 2 (L2) and level 3 (L3) protocols, other suitable communication protocols, or a combination thereof. For example, a data packet may include an ethernet frame header along with a UDP payload or a TCP/IP payload.
In some examples, a data packet may specify one or more of: a source media access control (MAC) address, a destination MAC address, a source IP address, a source port, a destination IP address, and a destination IP address. The source IP address, and the source port may be the IP address and port of the originating ground station that sent the data packet to satellites 4 for routing to a destination ground station, and the destination IP address and the destination port may be the IP address and port of the destination ground station. A data packet transmitted by an originating ground station to satellite 12 may specify a source MAC address that indicates a best guess estimate of the location (orbit plane, ordinal) of the final destination of the data packet, and may also include a continuous portion that identifies the type of traffic being routed (e.g., user data, directory services, administrative data, etc.). The location and size of each of these elements in the MAC address may be specified in network processor 20's configuration file.
Each satellite of satellites 4, including satellite 12, may be associated with a MAC address. Thus, a data packet transmitted by another satellite to satellite 12 may specify a source MAC address as the MAC address of the satellite that forwarded the data packet and may specify a destination MAC address as the MAC address of a final destination satellite for the data packet. For example, a destination MAC address may have the following example encoding: 02:00:08:<orbital plane>:<ordinal>:<reserved>. Thus, the destination MAC address may, in some examples, specify the orbital plane and the ordinal within that orbital plane of the final destination satellite. Similarly, in some examples, a source MAC address may be similarly encoded, but may instead specify the orbital plane and the ordinal of the satellite sending the data packet, which may be used to, for example, determine a return path for the data packet.
When satellite 12 receives a data packet, one or more processors 10 may be configured to execute network processor 20 to perform one or more checks on the received data packet. For example, satellite 12 may determine whether the data packet specifies valid source and destination IP addresses, whether the timestamp of the data packet is within a valid range, and the like. If network processor 20 determines that the data packet does not pass the one or more checks, network processor 20 may drop the data packet.
If the data packet passes the checks, one or more processors 10 may be configured to execute network processor 20 to determine whether the data packet is a packet associated with a flow of data packets (“a packet flow”) that has already been encountered by satellite 12. If satellite 12 has previously encountered other data packets associated with the same packet flow, network processor 20 may use the flow rules associated with the packet flow stored in network data store 22 to determine how to process and route the data packet. However, if the data packet associated with a packet flow is the first data packet associated with the data flow encountered by network processor 20, there may be no flow rule associated with the packet flow that can be used by network processor 20 to determine how to process and route the data packet.
To determine whether the data packet received by satellite 12 is associated with a packet flow that has been previously encountered by satellite 12, one or more processors 10 may be configured to execute network processor 20 to index into a flow table in network data store 22 using the source port and the destination IP address specified by the data packet. If flow rules associated with the source port and the destination IP address exists in the flow table, then network processor 20 may determine that the data packet is associated with a packet flow that has been previously encountered by satellite 12. Conversely, if flow rules associated with the source port and the destination IP address do not exist in the flow table, then network processor 20 may determine that the data packet is associated with a new packet flow that has not been previously encountered by satellite 12.
One or more processors 10 may be configured to execute network processor 20 to, in response to a data packet of a new packet flow that has not been previously encountered by satellite 12, determine whether satellite 12 is the final destination node for the data packet. A satellite is a final destination node for the data packet if it is the satellite that transmits the data packet to the destination ground station. If the data packet received by satellite 12 from another satellite specifies a destination MAC address, the destination MAC address specified by the data packet may be the MAC address of the final destination node. Thus, if network processor 20 determines that the MAC address of satellite 12 matches the destination MAC address specified by the data packet, network processor 20 may determine that satellite 12 is the final destination node for the data packet and may transmit the data packet to the destination ground station.
If the data packet does not specify a destination MAC address, such as when satellite 12 receives the data packet from a ground station, such as when satellite 12 receives the data packet from a ground station, one or more processors 10 may be configured to execute network processor 20 to determine the MAC address of the final destination node. In some examples, network data store 22 may store information regarding each satellite in a satellite constellation (e.g., satellites 4) that includes satellite 12. Network processor 20 may determine, based on the best estimate of the ordinal and the orbital plane of the final destination node, the MAC address of the final destination node. For example, network data store 22 may store, for each satellite in the satellite constellation, the MAC address of the satellite, the orbital plane of the satellite, the ordinal of the satellite, and the like. Thus, network processor 20 may determine, based on the information stored in network data store 22, the final destination node to be the satellite having an associated orbital plane and ordinal that most closely matches the best estimate of the ordinal and the orbital plane of the final destination node specified in the source MAC address of the data packet. If network processor 20 determines that the MAC address of satellite 12 matches the MAC address of the final destination node, network processor 20 may determine that satellite 12 is the final destination node for the data packet and may transmit the data packet to the destination ground station.
If network processor 20 determines that satellite 12 is not the final destination node, one or more processors 10 may be configured to execute network processor 20 to determine whether the orbital plane of satellite 12 is the same as the final destination plane. To determine whether the orbital plane of satellite 12 is the same as the final destination plane, network processor 20 may look up the orbital plane of the final destination node as stored in network data store 22 and compare the orbital plane of the final destination node as stored in network data store 22 with the orbital plane of satellite 12. If the orbital plane of satellite 12 is the same as the final destination plane, satellite 12 may forward the data packet to an in-plane neighboring satellite towards the final destination node. However, if the orbital plane of satellite 12 is not the same as the final destination plane, satellite 12 may potentially have to forward the data packet to a cross-plane neighboring satellite in order for the data packet to reach the final destination node.
If network processor 20 determines that the orbital plane of satellite 12 is the same as the final destination plane, network processor 20 may forward the data packet to an in-plane neighboring satellite. One or more processors 10 may be configured to execute network processor 20 to determine which in-plane neighboring satellite to which the data packet should be forwarded. In general, satellite 12 may have two in-plane neighboring satellites in opposite directions with which satellite 12 can communicate to forward the data packet, and network processor 20 may select the in-plane neighboring satellites to which the data packet is forwarded based on minimizing the number of hops to the final destination node.
Given that network processor 20 has determined the MAC address of the final destination node, network processor 20 can look up, in network data store 22, the ordinal of the final destination node in the orbital plane. Network processor 20 can compare the ordinal of the final destination node in the orbital plane with the ordinal of satellite 12 to determine which of the two in-plane neighboring satellites with which satellite 12 can communicate would provide a shorter path to the final destination node. Network processor 20 may therefore select the in-plane neighboring satellite to which the data packet is to be forwarded and may forward, via the one or more communication units 14, the data packet to the selected in-plane neighboring satellite.
If network processor 20 determines that the orbital plane of satellite 12 is not the same as the final destination plane, network processor 20 may determine whether satellite 12 is able to forward the data packet to a cross-plane neighboring satellite. As discussed with respect to
In some examples, network processor 20 may also determine whether communication links with cross-plane neighboring satellites are up by periodically sending and receiving neighbor status data to and from neighboring satellites. For example, satellite 12 may periodically send information regarding the status of its communication ports (e.g., ports in one or more communication units 14 that establishes links with neighboring satellites), such as whether each of the ports are up or down, the bandwidth metrics of each of the ports, and the like, to its neighboring satellites. Similarly, satellite 12 may receive, from neighboring satellites, neighbor status data that includes similar information regarding ports of each of the neighboring satellites, as well as information regarding the ports of other non-neighboring satellites in satellites 4.
Network processor 20 may store such neighbor status data received from neighboring satellites as well as the data regarding satellite 12's own ports in network data store 22 to build a topology of satellites 4 which may indicate which communication links between satellites are down, the bandwidth metrics of each of the links in satellite 4, and the like. Such a topology may enable network processor 20 to intelligently route data packets based on determining link status, data congestion, bandwidth availability, and the like.
In some examples, network processor 20 may determine whether satellite 12 is located in a pre-determined region that allows communication with cross-plane neighboring satellites. If network processor 20 determines that satellite 20 is not located in a pre-determined region that allows communication with cross-plane neighboring satellites, network processor 20 may the pre-determined region that allows communication with cross-plane neighboring satellites may be a region that is below a cutoff latitude in the northern hemisphere or above a cutoff latitude in the southern hemisphere. If network processor 20 determines that satellite 12 is above the cutoff latitude in the northern hemisphere or below the cutoff latitude in the southern hemisphere, network processor 20 may determine that satellite 12 is not able to forward the data packet to a cross-plane neighboring satellite.
If network processor 20 determines that satellite 12 is not able to forward the data packet to a cross-plane neighboring satellite, network processor 20 may select an in-plane neighboring satellite to which the data packet is forwarded. For example, if satellite 12 is not able to establish communication links with cross-plane neighboring satellites because satellite 12 is near the north pole or the south pole, satellite 12 may select an in-plane neighboring satellite that is relatively closer to the equator as the in-plane neighboring satellite to which the data packet is forwarded. In another if satellite 12 is not able to establish communication links with cross-plane neighboring satellites because satellite 12 is near the equator, satellite 12 may select an in-plane neighboring satellite that is relatively farther away from the equator as the in-plane neighboring satellite to which the data packet is forwarded. Network processor 20 may therefore forward, via the one or more communication units 14, the data packet to the selected in-plane neighboring satellite.
If network processor 20 determines that satellite 12 is able to forward the data packet to a cross-plane neighboring satellite, network processor 20 may determine which cross-plane neighboring satellite to which the data packet is forwarded. In general, satellite 12 may be able to establish a communication link with a neighboring cross-plane satellite on each of the two neighboring orbital planes of the orbital plane of satellite 12, and satellite 12 may select the cross-plane neighboring satellite out of the two neighboring cross-plane satellites that is in a direction where no seam exists between satellite 12 and the final destination plane as the cross-plane neighboring satellite to which the data packet is forwarded. For example, network data store 22 may store an indication of a topology of the constellation of satellites that includes satellite 12, including indications of where seams exist within the topology, and network processor 20 may use such a topology to determine the cross-plane direction to the final destination plane that does not have a seam. Network processor 20 may therefore forward, via the one or more communication units 14, the data packet to the selected cross-plane neighboring satellite.
In some examples, network processor 20 may use congestion routing to determine which neighboring satellite to which the data packet is forwarded based at least in part on. Satellite 12 may communicate with its neighboring satellites (e.g., two cross-plane neighboring satellites and two in-plane neighboring satellites of satellite 12) to receive, from each of the neighboring satellites, information such as the availability of the link between satellite 12 and the neighboring satellite, the amount of bandwidth being utilized by the neighboring satellite to transfer data, and the like. Network processor 20 may therefore determine, based on information such as the link availability of each of the neighboring satellites and the bandwidth utilized by each of the neighboring satellites, the neighboring satellite to which data is forwarded.
For example, if network processor 20 determines that satellite 12 is in a pre-determined region that allows communication with cross-plane neighboring satellites, network processor 20 may determine whether the link between satellite 12 and the cross-plane neighboring satellite in the cross-plane direction to the final destination plane that does not have a seam is available. If network processor 20 determines that the link between satellite 12 and the cross-plane neighboring satellite in the cross-plane direction to the final destination plane that does not have a seam is not available, network processor 20 may forward, via the one or more communication units 14, the data packet to an in-plane neighboring satellite instead of a cross-plane neighboring satellite. In some examples, a link between satellite 12 and a neighboring satellite may not be available because the neighboring satellite is already reserved by other missions and/or other data traffic, because satellite 12 and a neighboring satellite are unable to communicate with each other, such as due to hardware malfunction, and the like.
If network processor 20 determines that the link between satellite 12 and the cross-plane neighboring satellite in the cross-plane direction to the final destination plane that does not have a seam is available, network processor 20 may determine, based on the information regarding the amount of bandwidth being utilized by the cross-plane neighboring satellite to transfer data, whether the cross-plane neighboring satellite has the available bandwidth to receive the data packet from satellite 12. For example, network processor 20 may determine whether the amount of bandwidth being utilized by the cross-plane neighboring satellite to transfer data is greater than or equal to a traffic threshold, which may correspond to the amount of bandwidth usage at which the cross-plane neighboring satellite is considered to be congested. If network processor 20 determines that the amount of bandwidth being utilized by the cross-plane neighboring satellite to transfer data is greater than or equal to a traffic threshold, network processor 20 may determine that the cross-plane neighboring satellite does not have the available bandwidth to receive the data packet from satellite 12, and may instead forward, via the one or more communication units 14, the data packet to an in-plane neighboring satellite instead of the cross-plane neighboring satellite.
Similarly, if network processor 20 determines that satellite 12 is not able to forward the data packet to a cross-plane neighboring satellite, network processor 20, may determine which one of the two in-plane neighboring satellites to which the data packet is forwarded. If network processor 20 determines that the link between satellite 12 to one of the two in-plane neighboring satellites is not available, then network processor 20 may forward the data packet to the other one of the two in-plane satellites.
In some examples, network processor 20 may determine which one of the two in-plane neighboring satellites to which the data packet is forwarded based on whether the two in-plane neighboring satellites have the available bandwidth to receive the data packet from satellite 12. As described above, network processor 20 may receive, from each of the two in-plane neighboring satellites, regarding the amount of bandwidth being utilized by the in-plane neighboring satellite. If network processor 20 determines that the amount of bandwidth being utilized by a first of the two in-plane neighboring satellite to transfer data is greater than or equal to a traffic threshold, and that the amount of bandwidth being utilized by a second of the two in-plane neighboring satellite to transfer data is less than the traffic threshold, network processor 20 may forward, via the one or more communication units 14, the data packet to the second in-plane neighboring satellite instead of the first in-plane neighboring satellite.
Prior to forwarding the data packet to the selected neighboring satellite, one or more processors 10 may be configured to execute network processor 20 to update the data packet. Specifically, network processor 20 may update the data packet to specify the source MAC address as the MAC address of satellite 12 and may update the data packet to specify the destination MAC address to the MAC address of the final destination node.
If the data packet is the first data packet of a packet flow encountered by satellite 12, one or more processors 10 may be configured to execute network processor 20 to create flow rules for the packet flow, and store the flow rules in network data store 22, where the flow rules are associated with the source port and the destination IP address specified by the data packet. Network processor 20 may create, for the packet flow, a flow rule to update the data packet to specify the source MAC address as the MAC address of satellite 12. Network processor 20 may also create, for the packet flow, a flow rule to update the data packet to specify the destination MAC address to 1) the MAC address of the final destination node if the data packet is forwarded to a neighboring satellite or to 2) the destination ground station's MAC address if the data packet is forwarded to the destination ground station. Network processor 20 may create, for the packet flow, a flow rule to forward data packets of the packet flow to the selected neighboring satellite or, if satellite 12 forwards the data packet to the destination ground station, a flow rule to forward the data packets of the data flow to the destination ground station.
The following pseudocode is an example description of the operations of network processor 20 to receive and forward data packets:
The two primary code paths that comprise the basic OAR traffic routing algorithm are the receipt of a user traffic packet (data packet) and notification of a down port.
OAR user traffic routing begins with the receipt of a user traffic packet:
The following pseudocode is an example description of the operations of network processor 20 to receive status information for all the nodes in satellites 4 for which satellite 12 can receive status information from its neighboring satellites, and to send status information regarding satellite 12 to its neighboring satellites:
On startup, the OAR NS module creates and initializes a node data table containing node information for all the nodes for which it can receive status information from its neighbors. A configuration element indicates the number of planes (currently one) of information NS will transmit in each status message. The number of planes in the node data table will thus be at most the number of transmitted planes plus two (by receiving status packets from the left and right cross-plane neighbors, limited by the seams).
There are three main code flows in OAR-NS: (continuously running) worker thread, port status event (port transition), and received NS packet event.
As shown in
A satellite may not be able to communicate with a cross-plane neighboring satellite across a seam, as it may be difficult to establish a reliable communication link between satellites traveling in different directions. Thus, for example, even though satellite 4A-23 is a cross-plane neighboring satellite of satellite 4F-2, satellites 4A-23 and 4F-2 may not be able to communicate with each other because seam 50A lies between satellites 4A-23 and 4F-2.
A satellite may also not be able to communicate with a cross-plane neighboring satellite if the satellite is above a cutoff latitude 52A in the northern hemisphere or if the satellite is below a cutoff latitude 52B in the southern hemisphere. For example, satellite 4E-2 may not be able to communicate with cross-plane neighboring satellites 4F-2 or 4D-2 because satellite 4E-2 is located above cutoff latitude 52A in the northern hemisphere. Similarly, satellite 4D-14 may not be able to communicate with cross-plane neighboring satellites 4E-14 or 4C-14 because satellite 4D-14 is located below cutoff latitude 52B in the southern hemisphere.
A ground station on Earth 2 may use satellites 4 to route data to another ground station on Earth 2. As shown in
In some examples, a ground station may transmit data in the form of data packets via any suitable data transmission protocols, such as UDP, TCP, and the like. For example, a data packet may be an Ethernet frame that encapsulates a UDP/IP packet or a TCP/IP packet.
Satellite 4E-17 may, after receiving a first data packet from ground station 8A, determine the final destination satellite of the data packet. That is, satellite 4E-17 may determine the satellite that is to transmit the data packet to destination ground station 8B. Satellite 4E-17 may determine, based on the destination MAC address and/or the destination IP address and destination port specified by the data packet, the final destination satellite of the data packet. In the example of
Satellite 4E-17 may determine the final destination plane of the data packet as the ordinal plane of the final destination satellite 4D-4 of the data packet. For example, satellite 4E-17 may look up the ordinal plane of final destination satellite 4D-4 using one or more tables stored in satellite 4E-17 that stores the associated ordinal planes and ordinals of each of satellites 4 to determine the orbital plane for satellites 4D-1 to 4D-17 as the final destination plane.
Satellite 4E-17 may determine whether the final destination plane of the data packet is different from the ordinal plane of satellite 4E-17. If satellite 4E-17 determines that the final destination plane of the data packet is the same as the ordinal plane of satellite 4E-17, satellite 4E-17 may forward the data packet to an in-plane neighboring satellite in the direction that minimizes the number of hops to the final destination satellite.
If satellite 4E-17 determines that the final destination plane of the data packet is different from the ordinal plane of satellite 4E-17, satellite 4E-17 may determine whether satellite 4E-17 is able to forward the packet to a cross-plane neighboring satellite. Satellite 4E-17 may not be able to forward the packet to a cross-plane neighboring satellite, for example, if there is a problem with the link between satellite 4E-17 and cross-plane neighboring satellites or if satellite 4E-17 is above cutoff latitude 52A or below cutoff latitude 52B.
Because the final destination plane of the data packet is different from the ordinal plane of satellite 4E-17, satellite 4E-17 may determine whether it is able to forward the packet to a cross-plane neighboring satellite. Because satellite 4E-17 is not above cutoff latitude 52A or below cutoff latitude 52B, and because there are no problems with the link between satellite 4E-17 and cross-plane neighboring satellites, satellite 4E-17 may determine to forward the data packet to a cross-plane neighboring satellite.
If satellite 4E-17 determines to forward the data packet to a cross-plane neighboring satellite, satellite 4E-17 may determine the cross-plane direction to forward the data packet towards the final destination plane. As can be seen in
Satellite 4E-17 may update the data packet to specify the source MAC address of the data packet as the MAC address of satellite 4E-17. Satellite 4E-17 may also update the data packet to specify the destination MAC address of the data packet to the MAC address of final destination satellite 4D-4. If the data packet received by satellite 4E-17 is a first packet of a packet flow received by satellite 4E-17, the data packet may create a new flow rule for the packet flow associated with the source port and the destination IP address to, for each subsequently received data packet of the packet flow, update the data packet to specify the source MAC address of the data packet as the MAC address of satellite 4E-17, update the data packet to specify the destination MAC address of the data packet to the MAC address of final destination satellite 4D-4, and to specify that data packets of the data flow are to be forwarded to satellite 4D-17.
Satellite 4E-17 may therefore forward the data packet to satellite 4D-17. As satellite 4E-17 encounters subsequent data packets of the same packet flow, satellite 4E-17 may also follow the flow rule for the packet flow to update the source and destination MAC addresses of those data packets and forward the data packets to satellite 4D-17.
Satellite 4D-17 may, in response to receiving the data packet, determine that its ordinal plane is the same as the final destination plane. Because the ordinal plane of satellite 4D-17 is the same as the final destination plane, satellite 4D-17 may determine in which in-plane direction to forward the data packet towards the final destination satellite 4D-4 based on the number of hops to reach the final destination satellite 4D-4. Satellite 4D-17 may determine that it takes fewer hops to reach the final destination satellite 4D-4 by forwarding to a northern in-plane neighboring satellite 4D-18 and may therefore determine to forward the data packet to in-plane neighboring satellite 4D-18.
Satellite 4D-17 may update the data packet to specify the source MAC address of the data packet as the MAC address of satellite 4D-17. Satellite 4D-17 may also update the data packet to specify the destination MAC address of the data packet to the MAC address of final destination satellite 4D-4. If the data packet received by satellite 4D-17 is a first packet of a packet flow received by satellite 4D-17, the data packet may create a new flow rule for the packet flow associated with the source port and the destination IP address to, for each subsequently received data packet of the packet flow, update the data packet to specify the source MAC address of the data packet as the MAC address of satellite 4D-17, update the data packet to specify the destination MAC address of the data packet to the MAC address of final destination satellite 4D-4, and to specify that data packets of the data flow are to be forwarded to satellite 4D-18.
Satellite 4D-17 may therefore forward the data packet to satellite 4D-18. As satellite 4D-17 encounters subsequent data packets of the same packet flow, satellite 4D-17 may also follow the flow rule for the packet flow to update the source and destination MAC addresses of those data packets and forward the data packets to satellite 4D-18.
Satellite 4D-18 may, in response to receiving the data packet from satellite 4D-17, perform the techniques described with respect to satellite 4D-17 to determine to forward the data packet to satellite 4D-19, update the MAC addresses in the data packet, create a flow rule for the packet flow associated with the data packet, and forward the data packet to satellite 4D-19. As the data packet is forwarded through satellites 4D-19 to 4D-4 along the final destination plane, each of the satellites that receive the data packet may, in response to receiving the data packet, perform the techniques described with respect to satellite 4D-17 to determine the in-plane neighboring satellite to which the data packet is forwarded, update the MAC addresses in the data packet, create a flow rule for the packet flow associated with the data packet, and forward the data packet. When satellite 4D-4 receives the data packet and determines that it is the final destination satellite, satellite 4D-4 may also update the destination MAC address of the data packet to the MAC address of ground station 8B and may transmit the data packet to ground station 8B, thereby successfully routing data from ground station 8A to ground station 8B via satellites 4.
As shown in
Because satellite 4B-22 is in the northern hemisphere below cutoff latitude 90A and because the orbital plane of satellite 4B-22 is not the same as the final destination orbital plane, satellite 4B-22 may transmit data received from satellite 4A-22 to a cross-plane neighboring satellite. Because the western cross-plane direction between the orbital plane of satellite 4B-22 and the final destination plane passes through seam 50A, satellite 4B-22 may forward the data instead to the eastern cross-plane neighboring satellite 4C-22.
Because satellite 4C-22 is in the northern hemisphere below cutoff latitude 90A and because the orbital plane of satellite 4C-22 is not the same as the final destination orbital plane, satellite 4C-22 may transmit data received from satellite 4B-22 to a cross-plane neighboring satellite. Because the western cross-plane direction between the orbital plane of satellite 4C-22 and the final destination plane passes through seam 50A, satellite 4C-22 may forward the data instead to the eastern cross-plane neighboring satellite 4D-22.
Because satellite 4D-22 is in the same orbital plane as the final destination orbital plane, satellite 4D-22 may transmit data received from satellite 4C-22 to an in-plane neighboring satellite in the direction of the final destination satellite 4D-4. Because it takes six hops for data to reach the final destination satellite 4D-4 from satellite 4D-22 by transmitting the data in a northern direction with respect to satellite 4D-4 as opposed to 18 hops by transmitting the data in a southern direction with respect to satellite 4D-4, satellite 4D-4 may forward the date to in-plane neighboring satellite 4D-23.
Satellite 4D-23 to satellite 4D-3 may continue to forward the data in-plane to reach final destination satellite 4D-4, and final destination satellite 4D-4 may forward the data to ground station 8B, thereby successfully routing data from ground station 8C to ground station 8B via satellites 4.
As shown in
Because satellite 4A-21 is in the northern hemisphere below cutoff latitude 90A and because the orbital plane of satellite 4A-21 is not the same as the final destination orbital plane, satellite 4A-21 may transmit data received from satellite 4A-22 to a cross-plane neighboring satellite. Because the western cross-plane direction between the orbital plane of satellite 4A-21 and the final destination plane passes through seam 50A, satellite 4A-21 may forward the data instead to the eastern cross-plane neighboring satellite 4B-21.
Satellites 4B-21 and 4C-21 may continue forwarding the data to cross-plane neighboring satellites until the data reaches satellite 4D-21, which is on the final destination plane of the data. Satellite 4D-21 may therefore determine the shortest path in which to forward the data to final destination satellite 4D-4, which may be the path northwards from satellite 4D-21, and satellite 4D-4 may therefore forward the data to in-plane neighboring satellite 4D-22, which may continue forwarding the data through satellites 4D-22, 4D-23, 4D-24, 4D-1, 4D-2, and 4D-3 until the data is forwarded to final destination satellite 4D-4. Final destination satellite 4D-4 may forward the data to ground station 8B, thereby successfully routing data from ground station 8C to ground station 8B via satellites 4.
In some examples, seams may greatly lengthen the path between ground stations. As shown in
In some examples, to select the neighboring satellite to receive the data packet, satellite 12 may, in response to determining that the satellite 12 is able to communicate with one or more cross-plane neighboring satellites, select a cross-plane neighboring satellite as the neighboring satellite to receive the data packet.
In some examples, to select the cross-plane neighboring satellite as the neighboring satellite to receive the data packet, satellite 12 may select the cross-plane neighboring satellite in a direction towards the final destination plane relative to the orbital plane of the satellite 12 that does not include a seam.
In some examples, to select the neighboring satellite to receive the data packet, satellite 12 may, in response to determining that the satellite 12 is not able to communicate with one or more cross-plane neighboring satellites, select an in-plane neighboring satellite as the neighboring satellite to receive the data packet.
In some examples, to determine whether the satellite 12 is able to communicate with one or more cross-plane neighboring satellites, satellite 12 may determine that the satellite is not in a pre-determined region that allows communication with cross-plane neighboring satellites. For example, satellite 12 may determine that the satellite 12 is at least one of: above a first cutoff latitude in the northern hemisphere of the Earth or below a second cutoff latitude in the southern hemisphere of the Earth. Satellite 12 may, in response to determining that the satellite is not in the pre-determined region that allows communication with cross-plane neighboring satellites, determining, by the satellite, that the satellite is not able to communicate with one or more cross-plane neighboring satellites. For example, satellite 12 may, in response to determining that the satellite 12 is at least one of: above the first cutoff latitude in the northern hemisphere of the Earth or below the second cutoff latitude in the southern hemisphere of the Earth, determine that the satellite 12 is not able to communicate with one or more cross-plane neighboring satellite.
In some examples to select the neighboring satellite to receive the data packet, satellite 12 may select an in-plane neighboring satellite that is closer to the equator relative to the satellite as the neighboring satellite to receive the data packet.
In some examples, satellite 12 may receive a second data packet, determine that a final destination plane of the second data packet is the same as the orbital plane of the satellite 12, and in response to determining that the final destination plane of the second data packet is the same as the orbital plane of the satellite 12, select an in-plane neighboring satellite to receive the data packet based on a number of hops to reach a final destination satellite of the second data packet.
The techniques described in this disclosure may be implemented, at least in part, in hardware, software, firmware or any combination thereof. For example, various aspects of the described techniques may be implemented within one or more processors, including one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or any other equivalent integrated or discrete logic circuitry, as well as any combinations of such components. The term “processor” or “processing circuitry” may generally refer to any of the foregoing logic circuitry, alone or in combination with other logic circuitry, or any other equivalent circuitry. A control unit comprising hardware may also perform one or more of the techniques of this disclosure.
Such hardware, software, and firmware may be implemented within the same device or within separate devices to support the various operations and functions described in this disclosure. In addition, any of the described units, modules or components may be implemented together or separately as discrete but interoperable logic devices. Depiction of different features as modules or units is intended to highlight different functional aspects and does not necessarily imply that such modules or units must be realized by separate hardware or software components. Rather, functionality associated with one or more modules or units may be performed by separate hardware or software components, or integrated within common or separate hardware or software components.
The techniques described in this disclosure may also be embodied or encoded in a computer-readable medium, such as a computer-readable storage medium, containing instructions. Instructions embedded or encoded in a computer-readable medium may cause a programmable processor, or other processor, to perform the method, e.g., when the instructions are executed. Computer-readable media may include non-transitory computer-readable storage media and transient communication media. Computer readable storage media, which is tangible and non-transitory, may include random access memory (RAM), read only memory (ROM), programmable read only memory (PROM), erasable programmable read only memory (EPROM), electronically erasable programmable read only memory (EEPROM), flash memory, a hard disk, a CD-ROM, a floppy disk, a cassette, magnetic media, optical media, or other computer-readable storage media. It should be understood that the term “computer-readable storage media” refers to physical storage media, and not signals, carrier waves, or other transient media.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US2021/024472 | 3/26/2021 | WO |