Skip to main content

Latency Simulation

Model end-to-end latency for orbital compute deployments, including propagation delay, ground station handovers, and inter-satellite links.
Status: Early Access — Request API key

Overview

Latency in orbital systems depends on:
  • Propagation delay — Speed of light distance
  • Ground station availability — Coverage and handover
  • Inter-satellite links (ISL) — Routing through constellation
  • Processing delay — On-board and ground processing

Quick Start

from rotastellar import RotaStellar

client = RotaStellar(api_key="rs_...")

latency = client.planning.latency(
    orbit="LEO-550",
    ground_stations=["us-west", "us-east", "europe", "asia"],
    include_isl=True
)

print(f"P50 latency: {latency.p50_ms}ms")
print(f"P95 latency: {latency.p95_ms}ms")
print(f"P99 latency: {latency.p99_ms}ms")
print(f"Coverage: {latency.coverage_percent}%")

Parameters

orbit
string
required
Orbit specification (e.g., LEO-550, MEO-8000, GEO)
ground_stations
array
required
List of ground station regions:
  • us-west, us-east, us-central
  • europe, europe-north
  • asia, asia-south
  • australia
  • south-america
include_isl
boolean
default:"false"
Include inter-satellite link routing
constellation_size
number
Number of satellites (affects ISL routing options)
user_location
object
Specific user location for point-to-point latency:
{"lat": 37.7749, "lon": -122.4194}

Response

{
  "p50_ms": 25,
  "p95_ms": 48,
  "p99_ms": 72,
  "min_ms": 12,
  "max_ms": 145,
  "coverage_percent": 98.5,
  "breakdown": {
    "propagation_ms": 8,
    "processing_ms": 5,
    "handover_ms": 12,
    "isl_hops_avg": 1.3
  },
  "ground_station_stats": [
    {
      "station": "us-west",
      "contact_percent": 35,
      "avg_elevation_deg": 42
    },
    {
      "station": "europe",
      "contact_percent": 28,
      "avg_elevation_deg": 38
    }
  ],
  "gaps": [
    {
      "start_min": 23,
      "duration_min": 4,
      "region": "pacific"
    }
  ]
}

Latency by Orbit Type

OrbitAltitudeOne-way PropagationRTT (typical)
LEO550 km1.8 ms20-50 ms
MEO8,000 km27 ms80-150 ms
GEO35,786 km120 ms480-600 ms

Latency Optimization

ISLs can reduce latency by routing traffic through space instead of bouncing to ground:
# Without ISL - must wait for ground station contact
latency_no_isl = client.planning.latency(
    orbit="LEO-550",
    ground_stations=["us-west"],
    include_isl=False
)

# With ISL - can route through constellation
latency_with_isl = client.planning.latency(
    orbit="LEO-550",
    ground_stations=["us-west"],
    include_isl=True,
    constellation_size=100
)

print(f"Without ISL: P99 = {latency_no_isl.p99_ms}ms")
print(f"With ISL: P99 = {latency_with_isl.p99_ms}ms")

Geographic Coverage Analysis

Analyze latency from specific user locations:
# Latency from San Francisco to orbital compute
latency = client.planning.latency(
    orbit="LEO-550",
    ground_stations=["us-west", "us-east"],
    user_location={"lat": 37.7749, "lon": -122.4194}
)

print(f"SF to orbit P50: {latency.p50_ms}ms")

Coverage Gaps

LEO satellites don’t provide continuous coverage. The API identifies gaps:
latency = client.planning.latency(
    orbit="LEO-550",
    ground_stations=["us-west"]
)

for gap in latency.gaps:
    print(f"Gap at {gap.start_min}min, duration {gap.duration_min}min")
To eliminate gaps, add more ground stations or enable ISL:
# Add more ground stations
latency = client.planning.latency(
    orbit="LEO-550",
    ground_stations=["us-west", "us-east", "europe", "asia"],
    include_isl=True
)

print(f"Coverage: {latency.coverage_percent}%")  # ~99%+

Next Steps