Routing
The ISL (Inter-Satellite Link) Routing Protocol provides point-to-point message delivery across a satellite constellation organized as a 2D torus topology.
Topology
Satellites are arranged in a grid where:
- Each satellite has an
(orbit_id, satellite_id)address - Orbits wrap around (orbit 0 is adjacent to orbit N-1)
- Satellites within an orbit wrap around (sat 0 is adjacent to sat M-1)
This forms a 2D torus with four neighbors per satellite:
- North: Previous orbit (orbit_id - 1)
- South: Next orbit (orbit_id + 1)
- East: Next satellite in orbit (satellite_id + 1)
- West: Previous satellite in orbit (satellite_id - 1)
Packet Structure
ISL Routing Packet (10 + N bytes)
SPP Primary Header (6 bytes)
Version3 bitsPacket version (0)
Type1 bit1 = Telecommand
Sec Hdr Flag1 bit1 = Present
APID11 bitsDestination application (0–2047)
Seq Flags2 bitsSegmentation control
Seq Count14 bitsSequence number (0–16383)
Data Length16 bitsRemaining length − 1
cFE Secondary Header (2 bytes)
Function Code8 bitsCommand code
Checksum8 bitsXOR of entire packet
ISL Routing Header (2 bytes)
Target Address16 bitsDestination (orb, sat) or ground
Application Payload (variable)
The SPP and cFE headers are shared across all packet types. The routing layer adds:
- Target Address — the final destination satellite or ground station. The router at each hop reads this field, computes the next hop on the torus, and forwards the packet. The address is not modified in transit — every hop sees the same destination.
Address Encoding
The address wire format (2 bytes):
| ground_or_orbit | station_or_sat | Meaning |
|---|---|---|
| 0 | N | Ground station N |
| K (1-255) | 0 | Service area for orbit K-1 |
| K (1-255) | M (1-255) | Satellite (orbit=K-1, sat=M) |
Routing Algorithm
The router determines the next hop based on the shortest path through the torus:
- Parse the target address from the packet header
- Convert source and destination to torus points
- Calculate Manhattan distance in each direction (accounting for wraparound)
- Choose the direction that minimizes total distance
- Forward to the appropriate neighbor link
Direction Selection
if target == self:
deliver to Local
else:
calculate shortest path on torus
forward to North, South, East, or West
Router Operation
The router manages six interfaces:
- north, south, east, west: Inter-satellite links
- ground: Earth communication link
- local: Application interface
Main Loop
loop {
packet = recv from any interface
target = parse packet header
direction = next_hop(target)
forward packet to direction
}
Error Handling
| Condition | Behavior |
|---|---|
| Invalid packet format | Drop silently |
| Link send failure | Log error, continue |
| Unknown target | Route based on torus algorithm |
Configuration
The router requires:
- Own address (orbit_id, satellite_id)
- Constellation dimensions (max_orb, max_sat)
- Routing algorithm implementation