<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-piraux-space-constellation-code-02" category="info" consensus="true" submissionType="IRTF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="Constellation code">A code to describe satellite constellations</title>
    <seriesInfo name="Internet-Draft" value="draft-piraux-space-constellation-code-02"/>
    <author fullname="Maxime Piraux">
      <organization>Aerospacelab</organization>
      <address>
        <email>maxime.piraux@aerospacelab.com</email>
      </address>
    </author>
    <author fullname="Juan A. Fraire">
      <organization>Inria / Saarland University</organization>
      <address>
        <email>juan.fraire@inria.fr</email>
      </address>
    </author>
    <date year="2026" month="July" day="06"/>
    <area>IRTF</area>
    <workgroup>Systems and Protocol Aspects for Circumstellar Environments RG</workgroup>
    <abstract>
      <?line 57?>

<t>When considering a satellite constellation forming a non-terrestrial network, the characteristics of this constellation heavily influence the network topology it forms.
To improve the analysis of such non-terrestrial networks across various tools developed by the network community, this document defines a constellation code to describe common orbital shell patterns, and specification formats to describe inter-satellite link topologies and ground stations, covering the Core and Ground Networks of a constellation.
In addition, this document may serve as an introduction to satellite constellations for IETF participants.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://mpiraux.github.io/draft-piraux-space-constellation-code/draft-piraux-space-constellation-code.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-piraux-space-constellation-code/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Systems and Protocol Aspects for Circumstellar Environments RG Research Group mailing list (<eref target="mailto:space@irtf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/space/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/space/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/mpiraux/draft-piraux-space-constellation-code"/>.</t>
    </note>
  </front>
  <middle>
    <?line 63?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>A satellite constellation spans three networks to deliver their services as illustrated by <xref target="fig-satellite-constellation-networks"/>.
First, an Access Network enables User Equipment (UE) to connect to the constellation.
This is realised by the establishment of a Service Link to exchange UE traffic.
Then, the UE traffic is forwarded over a Core Network consisting of the different interconnected satellites.
Finally, the UE traffic is sent back to ground via the Feeder Link, which connects a satellite to a ground station.
A ground station is usually colocated with the infrastructure required to deliver the service.
In the case of Internet broadband access, this can be a Point-of-Presence (PoP) connecting to the Internet.</t>
      <figure anchor="fig-satellite-constellation-networks">
        <name>A satellite constellation spans three networks</name>
        <artwork align="center"><![CDATA[
 Access Network |         Core Network         |    Ground Network
                |                              |
  UE ------- Service ---> *---*---*---* ---- Feeder --> Ground --- PoP
              Link        :   :   :   :       Link      Station
                |         *---*---*---*        |
                |                              |
]]></artwork>
      </figure>
      <t>The network topology of the Core Network of a satellite constellation is heavily influenced by its orbital characteristics. A network is formed in space by establishing Inter-Satellite Links (ISL) between neighbour satellites, notably enabled by recent technologies such as Optical ISLs (OISL). The resulting topology can be dynamic as the distance between neighbour satellites changes throughout their orbital period.</t>
      <t>A key characteristic of satellite constellations is the ephemeral nature of the Feeder Links.
They may only be established when a satellite and a ground station are in range of each other.
Typically, ground stations can establish links within a defined cone of coverage.
This cone is often characterised by a Minimum Elevation Angle (MEA), such that Feeder Links can only be established when their elevation is above the MEA.
Consequently, satellites are often engineered such that Feeder Links are feasible within the entire cone of coverage of ground stations.
A ground station often includes several antennas such that a certain number of Feeder Links can be established from a given location.
Satellites may include several antennas as well to establish several Feeder Links or enable make-before-break transitions.</t>
      <t>A common notation for the network community to describe these constellations could improve the reproducibility of evaluations, measurements and simulations of satellite constellation networks.
This document focuses on describing some elements of the Core and Ground Networks.</t>
      <t>The approach of this document is based on the mission parameters of a satellite constellation. Based on these parameters, the expected position of each satellite within the constellation can then be computed.
Tools using the notation described in this document are free to choose how they propagate the positions of satellites.
This may be revised in later versions of this document.
The two practical options are:</t>
      <ul spacing="normal">
        <li>
          <t>Keplerian-based propagation, focusing on the theoretical position of satellites.</t>
        </li>
        <li>
          <t>Perturbation-based propagation, such as using Simplified General Perturbations 4 (SGP4) or Simplified Deep Space Perturbations 4 (SDP4) <xref target="HoRo1980"/> <xref target="VaCrHuKe2006"/>.</t>
        </li>
      </ul>
      <t>This version of the specification applies only to circular orbital shells. The rationale for this restriction is that circular orbits are the most common in current satellite constellations and simplify the code syntax. Elliptical orbits, such as those used in Molniya or Flower constellations, are outside the current scope but could be supported in a future extension of this document.</t>
      <t>The notation defined in this document can also specify patterns for links within a shell of a constellation. Each pattern is repeated to establish the connectivity of a satellite with its neighbours within the shell. This is inspired by the works of network researchers on constellation network topology design <xref target="BhSi2019"/>.</t>
      <t>The rest of this document is organised as follows.
<xref target="core-network"/> describes the Core Network of a constellation.
<xref target="satellite-constellations"/> introduces two variants of the Walker pattern for orbital shells, used to define many of the existing satellite constellations. <xref target="constellation-code"/> defines the constellation code syntax using an ABNF grammar <xref target="RFC5234"/> and its semantics. <xref target="examples-of-constellation-codes"/> contains examples of existing constellations defined using the constellation code. <xref target="links"/> extends the code with a specification format for link patterns within a shell.
<xref target="ground-network"/> describes the Ground Network of a constellation.
<xref target="ground-stations"/> defines a specification format for ground stations.
Finally, <xref target="considerations"/> concludes with considerations for future versions of this document.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="core-network">
      <name>Describing the Core Network</name>
      <t>This section describes how the Core Network of a constellation is specified.</t>
      <section anchor="satellite-constellations">
        <name>Satellite constellations</name>
        <t>A constellation greatly improves the availability of a satellite service up to global or near-global coverage on Earth.
From the user perspective, a constellation offers more guarantees that a satellite can be reached at all times.
A constellation is composed of a set of orbital planes. Typically, several satellites are present on an orbital plane. They can be close together to perform formation flying or are equally spread within the plane.
Orbital planes are distributed in a complementary manner, i.e., they share some properties (e.g. altitude and inclination) but differ in others (e.g. longitude of ascending node).</t>
        <t>When all orbital planes of a constellation are circular orbits sharing the same altitude, they are said to constitute an orbital shell. Constellations often consist of a single orbital shell but more complex deployments can have several shells.</t>
        <t>The rest of this section describes two common shells based on the Walker pattern.</t>
        <section anchor="walker-constellations">
          <name>Walker constellations</name>
          <t>A Walker constellation consists of circular orbits sharing the same inclination. Two variants of the Walker pattern exist:</t>
          <ul spacing="normal">
            <li>
              <t>Walker Star, where orbits are distributed over 180 degrees around the equator.</t>
            </li>
            <li>
              <t>Walker Delta, where orbits are distributed over 360 degrees around the equator.</t>
            </li>
          </ul>
          <section anchor="walker-star">
            <name>Walker Star</name>
            <t><xref target="fig-walker-star"/> is an illustration of a Walker Star constellation considering the Earth equator as horizontal in the Figure. The orbit trajectories are depicted by a dashed line, while satellites and their travel direction are indicated by arrow heads.</t>
            <t>The orbits of a Walker Star constellation typically have an inclination close to 90 degrees with respect to the equator plane, though this is not a geometric constraint and other inclinations are possible. Given that they are distributed over 180 degrees around the equator plane, one half-sphere has satellites ascending from the south pole to the north pole while the other has them descending from north pole to south pole. This is depicted on the two sides of <xref target="fig-walker-star"/>.
Over the south and north poles, all orbits are crossing paths before going over the other half-sphere.</t>
            <figure anchor="fig-walker-star">
              <name>A Walker Star constellation</name>
              <artwork align="center"><![CDATA[
          /  / \  \
        , - ~ ~ ~ - ,
    , '/    ^   v    \' ,
  ,   ^    /     \    v  ,
 ,   /    ^       v    \   ,
,   ^     |       |     v   ,
,   |     ^       v     |   ,
,   ^     |       |     v   ,
 ,   \    ^       v    /   ,
  ,   ^   \       /   v   ,
    ,  \   ^     v   / , '
      ' - , _ _ _ ,  '
          \  \ /  /
]]></artwork>
            </figure>
            <t>In a Walker Star constellation, a seam can be observed at the start and end of the orbit distribution around the equator plane. That is the first orbit (resp. last orbit) is next to the last orbit (resp. first orbit) going in the opposite direction of the sphere. It can be observed at the center of the <xref target="fig-walker-star"/>. The seam effect in Walker Star constellations may limit cross-plane ISL links at the seam boundary, though cross-plane links are still possible elsewhere; for instance, the Iridium constellation uses a Walker Star pattern with cross-plane ISLs. However, the Delta variant is often preferred for OISL-capable constellations due to the absence of the seam effect.</t>
            <t><xref target="fig-walker-star-topo"/> illustrates a part of a possible network topology for Walker Star constellations, with four orbital planes depicted vertically, each containing three satellites. In this example, links are only established in-plane, i.e., within the same orbit, though cross-plane links are also possible. Each orbit forms a ring, where the last satellite is connected to the first satellite.</t>
            <figure anchor="fig-walker-star-topo">
              <name>A Walker Star constellation network topology</name>
              <artwork align="center"><![CDATA[
  :        :        :        :
  |        |        |        |
+~~~+    +~~~+    +~~~+    +~~~+
[0/0]    [1/0]    [2/0]    [3/0]
+~~~+    +~~~+    +~~~+    +~~~+
  |        |        |        |
  |        |        |        |
+~~~+    +~~~+    +~~~+    +~~~+
[0/1]    [1/1]    [2/1]    [3/1]
+~~~+    +~~~+    +~~~+    +~~~+
  |        |        |        |
  |        |        |        |
+~~~+    +~~~+    +~~~+    +~~~+
[0/2]    [1/2]    [2/2]    [3/2]
+~~~+    +~~~+    +~~~+    +~~~+
  |        |        |        |
  :        :        :        :
]]></artwork>
            </figure>
          </section>
          <section anchor="walker-delta">
            <name>Walker Delta</name>
            <t><xref target="fig-walker-delta"/> is an illustration of a Walker Delta constellation with only two orbits due to graphical constraints. The orbits of a Walker Delta constellation typically have an inclination ranging from 45 to 65 degrees with respect to the equator plane, though any inclination is geometrically valid. Combined with the altitude, the inclination directly limits the latitude coverage of a constellation, while Walker Star constellations have a complete latitude coverage.</t>
            <t>Given that the orbits are distributed around the entire equator plane, there is no seam effect as in the Walker Star pattern. Instead, each orbit progresses in the same direction and cross paths twice with every other orbit. In this case, satellites can establish links with neighbouring orbits in addition to links within the same orbit.</t>
            <figure anchor="fig-walker-delta">
              <name>A Walker Delta constellation</name>
              <artwork align="center"><![CDATA[
    /   , - ~ ~ ~ - ,   \
    , '               ' ,
  ,   \                   ,
 ,      ^           /      ,
,         \        v        ,
,           ^   /           ,
,             \v            ,
 ,           /  ^          ,
  ,         v     \       ,
    ,    /             , '
      ' - , _ _ _ ,  '
      \               /
]]></artwork>
            </figure>
            <t><xref target="fig-walker-delta-topo"/> illustrates a part of a possible network topology for Walker Delta constellations, with four orbital planes depicted vertically, each containing three satellites. Links are established in-plane and cross-plane, i.e., from one orbit to the other.</t>
            <figure anchor="fig-walker-delta-topo">
              <name>A Walker Delta constellation network topology</name>
              <artwork align="center"><![CDATA[
      :        :        :        :
      |        |        |        |
    +~~~+    +~~~+    +~~~+    +~~~+
..--[0/0]----[1/0]----[2/0]----[3/0]--..
    +~~~+    +~~~+    +~~~+    +~~~+
      |        |        |        |
      |        |        |        |
    +~~~+    +~~~+    +~~~+    +~~~+
..--[0/1]----[1/1]----[2/1]----[3/1]--..
    +~~~+    +~~~+    +~~~+    +~~~+
      |        |        |        |
      |        |        |        |
    +~~~+    +~~~+    +~~~+    +~~~+
..--[0/2]----[1/2]----[2/2]----[3/2]--..
    +~~~+    +~~~+    +~~~+    +~~~+
      |        |        |        |
      :        :        :        :
]]></artwork>
            </figure>
          </section>
        </section>
      </section>
      <section anchor="constellation-code">
        <name>Constellation code</name>
        <t><xref target="constellation-code-abnf-def"/> defines the constellation code using an ABNF grammar <xref target="RFC5234"/>. The code can define a constellation with multiple shells. Each shell can follow a Walker Star or Walker Delta pattern.</t>
        <figure anchor="constellation-code-abnf-def">
          <name>ABNF Grammar for the constellation code</name>
          <artwork type="abnf" align="center" name="syntax"><![CDATA[
constellation = shell [ "+" constellation ]
shell = walker ":" altitude ":" inclination ":" plane-params
        [ ":" mean-anomaly ]
walker = "D" / "S"
altitude = float
inclination = float
plane-params = no-sats "/" no-planes "/" phasing-factor
no-sats = int
no-planes = int
phasing-factor = int
mean-anomaly = float

int = 1*DIGIT
float = 1*DIGIT [ "." 1*DIGIT ]
]]></artwork>
        </figure>
        <t>In addition to the grammar presented above defining the syntax of the code, a number of requirements on the semantics of the code are listed below.</t>
        <ul spacing="normal">
          <li>
            <t>The altitude is expressed in kilometres with reference to the Earth's surface.</t>
          </li>
          <li>
            <t>The inclination is expressed in degrees and <bcp14>MUST</bcp14> be within the range of [0, 180] degrees. Inclinations greater than 90° represent retrograde orbits.</t>
          </li>
          <li>
            <t>The number of satellites must be evenly divisible by the number of planes.</t>
          </li>
          <li>
            <t>The phasing factor must be within the range [0, no-planes - 1]. It represents the relative offset between satellites in adjacent orbital planes. It determines how satellites in one plane are shifted in their orbital position compared to the satellites in the neighbouring plane, enabling optimal coverage patterns.</t>
          </li>
          <li>
            <t>The mean anomaly is expressed in degrees and <bcp14>MUST</bcp14> be within the range of [0, 360] degrees. It is optional and represents the orbital position of the first satellite in the first plane of the constellation. When absent it is considered equal to zero. The reference epoch for the mean anomaly is defined by the user's simulation environment or application context.</t>
          </li>
        </ul>
      </section>
      <section anchor="examples-of-constellation-codes">
        <name>Examples of constellation codes</name>
        <t>This section provides some examples of how the constellation code can be used to define existing satellite constellations sourced from public information. In some cases, when the phasing factor is not known, it is speculative.</t>
        <table anchor="example-table">
          <name>Examples of constellation codes</name>
          <thead>
            <tr>
              <th align="left">Name</th>
              <th align="left">Description</th>
              <th align="left">Constellation code</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Iridium</td>
              <td align="left">Walker Star, 780 km altitude, 86.4° inclination, 66 satellites, 6 planes</td>
              <td align="left">S:780:86.4:66/6/1</td>
            </tr>
            <tr>
              <td align="left">OneWeb</td>
              <td align="left">Walker Star, 1 200 km altitude, 87.9° inclination, 672 satellites, 12 planes</td>
              <td align="left">S:1200:87.9:672/12/11</td>
            </tr>
            <tr>
              <td align="left">Starlink (shell 1)</td>
              <td align="left">Walker Delta, 550 km altitude, 53° inclination, 1584 satellites, 72 planes</td>
              <td align="left">D:550:53:1584/72/39 <xref target="StFrHe2022"/></td>
            </tr>
            <tr>
              <td align="left">GPS</td>
              <td align="left">Walker Delta, 20 180 km, 55° inclination, 24 satellites, 6 planes</td>
              <td align="left">D:20180:55:24/6/1</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="links">
        <name>Link specification</name>
        <t>In this section, we extend the code notation with the following Concise Data Definition Language (CDDL) schema
<xref target="RFC8610"/> to specify the patterns of links within a shell.</t>
        <figure anchor="constellation-cddl-def">
          <name>CDDL schema for constellation links</name>
          <artwork type="cddl" align="left" name="syntax"><![CDATA[
constellation-specs = {
  version: tstr,
  shells: [+ shell-entry],
}

shell-entry = {
  code: tstr,  ; Constellation code as specified in this document
  link-patterns: [* link-pattern],
}

link-pattern = {
  (
    (rank-offset: int, ? plane-offset: int) //
    (? rank-offset: int, plane-offset: int)
  ),
  ? conditions: [* condition],
}

condition = { eq: [expression, expression] }

expression = int
           / context-element
           / operation

context-element = "rank" / "plane"

operation = { mod: [expression, expression] }
]]></artwork>
        </figure>
        <t>Each data item specifies a constellation that may be composed of several shells.
An example specifying a two-shell constellation is given below in Extended
Diagnostic Notation (EDN) <xref target="RFC8949"/>:</t>
        <figure anchor="constellation-edn-example">
          <name>Example constellation-specs data item</name>
          <artwork type="edn" align="center" name="example"><![CDATA[
{
  "version": "draft-piraux-space-constellation-code-02",
  "shells": [
    {
      "code": "D:1200:55:400/20/19",
      "link-patterns": [
        { "rank-offset": 1 },             / in-plane link to the next satellite /
        {
          "plane-offset": 1,              / cross-plane link in a staggered pattern /
          "conditions": [                 / e.g., when only three links are possible /
            { "eq": [{ "mod": ["rank", 2] }, { "mod": ["plane", 2] }] }
            / rank % 2 == plane % 2 /
          ]
        }
      ]
    },
    {
      "code": "S:1210:89:52/4/1",
      "link-patterns": [
        { "rank-offset": 1 }
      ]
    }
  ]
}
]]></artwork>
        </figure>
        <t><xref target="constellation-edn-example"/> specifies a two-shell constellation. The first shell is a Walker Delta shell in which satellites have three links towards neighbours. The second is a Walker Star pattern with two in-plane links per satellite.</t>
        <t>These patterns are encoded through the <tt>link-patterns</tt> key. It contains a list of patterns with optional conditions. Each pattern specifies how to reach a neighbour given local plane and rank offsets to establish a bidirectional link. For instance, the first pattern of the first shell specifies that a link is formed with the next satellite in the same orbit.</t>
        <t>For each pattern, a list of conditions can be expressed with the <tt>conditions</tt> key. These are evaluated for each satellite within the shell to determine whether the corresponding pattern should be applied to form a link. By applying each pattern to all satellites, the set of links within the constellation shell is established.</t>
        <section anchor="constellation-specs-fields">
          <name><tt>constellation-specs</tt> fields</name>
          <dl>
            <dt><tt>version</tt></dt>
            <dd>
              <t>Indicates the version of this I-D that the data item should be interpreted with.</t>
            </dd>
            <dt><tt>shells</tt></dt>
            <dd>
              <t>A list of shell entries.</t>
            </dd>
          </dl>
          <section anchor="shell-entry">
            <name>Shell entry</name>
            <dl>
              <dt><tt>code</tt></dt>
              <dd>
                <t>The shell code following the specification in <xref target="constellation-code"/>.</t>
              </dd>
              <dt><tt>link-patterns</tt></dt>
              <dd>
                <t>A list of link patterns applied to every satellite in the shell.</t>
              </dd>
            </dl>
          </section>
          <section anchor="link-pattern">
            <name>Link pattern</name>
            <dl>
              <dt><tt>rank-offset</tt></dt>
              <dd>
                <t>An integer specifying the offset in rank to reach the neighbour for this link.</t>
              </dd>
              <dt><tt>plane-offset</tt></dt>
              <dd>
                <t>An integer specifying the offset in plane to reach the neighbour for this link. When this offset causes the plane index to wrap around to the first plane, the rank index of the target satellite is adjusted according to the phasing factor of the shell.</t>
              </dd>
            </dl>
            <t>At least one of the two offsets <bcp14>MUST</bcp14> be present and non-zero.
The other defaults to zero when absent.
They naturally wrap around at the boundaries of a shell.</t>
            <dl>
              <dt><tt>conditions</tt></dt>
              <dd>
                <t>A list of conditions that must all be met for the corresponding link to be added to a given satellite.</t>
              </dd>
            </dl>
          </section>
          <section anchor="condition">
            <name>Condition</name>
            <t>A condition is a predicate applied to two expressions. This version of the document only specifies the equality predicate, indicated by the <tt>eq</tt> key.</t>
          </section>
          <section anchor="expression">
            <name>Expression</name>
            <t>An expression is one of: an integer literal, a context element, or an operation
on two sub-expressions.
Context elements are represented by strings and two of them are defined.
<tt>rank</tt> refers to the current rank index and <tt>plane</tt> refers to the current plane index of the satellite being evaluated.
This version of the document only specifies the modulo
operation, indicated by the <tt>mod</tt> key.</t>
          </section>
        </section>
      </section>
    </section>
    <section anchor="ground-network">
      <name>Describing the Ground Network</name>
      <t>This section describes how the Ground Network of a constellation is specified.</t>
      <section anchor="ground-stations">
        <name>Ground station specification</name>
        <t>In this section, we describe ground stations using the following CDDL schema
<xref target="RFC8610"/>.</t>
        <figure anchor="ground-stations-cddl-def">
          <name>CDDL schema for ground stations</name>
          <artwork type="cddl" align="left" name="syntax"><![CDATA[
ground-stations-specs = {
  version: tstr,
  ground-stations: [+ ground-station],
}

ground-station = {
  name: tstr,
  latitude: float,      ; degrees
  longitude: float,     ; degrees
  altitude: float,      ; metres above Earth surface
  min-elevation: float, ; degrees
  antennas: uint,
}
]]></artwork>
        </figure>
        <t>An example specifying a single ground station is as follows:</t>
        <figure anchor="ground-stations-json-example">
          <name>Example ground-stations-specs data item</name>
          <artwork type="json" align="left" name="example"><![CDATA[
{
  "version": "draft-piraux-space-constellation-code-02",
  "ground-stations": [
    {
      "name": "Charleroi",
      "latitude": 50.403,
      "longitude": 4.428,
      "altitude": 109.0,
      "min-elevation": 10.0,
      "antennas": 8
    }
  ]
}
]]></artwork>
        </figure>
        <t><xref target="ground-stations-json-example"/> specifies a single ground station with an associated location. It has a MEA of 10 degrees and 8 antennas that can be used simultaneously.</t>
        <section anchor="ground-stations-specs-fields">
          <name><tt>ground-stations-specs</tt> fields</name>
          <dl>
            <dt><tt>version</tt></dt>
            <dd>
              <t>Indicates the version of this I-D that the data item should be interpreted with.</t>
            </dd>
            <dt><tt>ground-stations</tt></dt>
            <dd>
              <t>A list of ground stations.</t>
            </dd>
          </dl>
          <section anchor="ground-station">
            <name>Ground station</name>
            <dl>
              <dt><tt>name</tt></dt>
              <dd>
                <t>A string to identify the ground station.</t>
              </dd>
              <dt><tt>latitude</tt></dt>
              <dd>
                <t>The latitude of the ground station location, expressed in degrees.</t>
              </dd>
              <dt><tt>longitude</tt></dt>
              <dd>
                <t>The longitude of the ground station location, expressed in degrees.</t>
              </dd>
              <dt><tt>altitude</tt></dt>
              <dd>
                <t>The altitude of the ground station location, expressed in metres above the Earth's surface.</t>
              </dd>
              <dt><tt>min-elevation</tt></dt>
              <dd>
                <t>The Minimum Elevation Angle above which Feeder Links can be established, expressed in degrees.</t>
              </dd>
              <dt><tt>antennas</tt></dt>
              <dd>
                <t>The number of antennas available to establish Feeder Links simultaneously.</t>
              </dd>
            </dl>
          </section>
        </section>
      </section>
    </section>
    <section anchor="considerations">
      <name>Considerations for future versions of this document</name>
      <t>The code and specification formats presented in this document do not consider the capabilities of satellites within a constellation to establish links. It focuses on defining the stable network topology that is expected for a constellation. Future versions of this document could consider means to define the capabilities of Optical Communication Terminals (OCTs) used to establish ISLs. This is complementary to the description of the network topology, which forms more of an intent, while capabilities define the space of possible links.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>As the code and specification formats specified in this document are foreseen as user input into software that performs simulations, evaluations and analysis of satellite constellations, implementers <bcp14>SHOULD</bcp14> consider validation and sanitisation measures.</t>
      <t>In particular, the <tt>expression</tt> and <tt>operation</tt> types (<xref target="links"/>) are recursively defined and could be nested arbitrarily deeply, and the <tt>shells</tt>, <tt>link-patterns</tt>, <tt>conditions</tt>, and <tt>ground-stations</tt> lists are unbounded in size.
Implementers <bcp14>SHOULD</bcp14> bound recursion depth and collection sizes to mitigate resources exhaustion when processing untrusted input.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="P. Overell" initials="P." surname="Overell"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="RFC8610">
          <front>
            <title>Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="C. Vigano" initials="C." surname="Vigano"/>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <date month="June" year="2019"/>
            <abstract>
              <t>This document proposes a notational convention to express Concise Binary Object Representation (CBOR) data structures (RFC 7049). Its main goal is to provide an easy and unambiguous way to express structures for protocol messages and data formats that use CBOR or JSON.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8610"/>
          <seriesInfo name="DOI" value="10.17487/RFC8610"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8949">
          <front>
            <title>Concise Binary Object Representation (CBOR)</title>
            <author fullname="C. Bormann" initials="C." surname="Bormann"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="December" year="2020"/>
            <abstract>
              <t>The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. These design goals make it different from earlier binary serializations such as ASN.1 and MessagePack.</t>
              <t>This document obsoletes RFC 7049, providing editorial improvements, new details, and errata fixes while keeping full compatibility with the interchange format of RFC 7049. It does not create a new version of the format.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="94"/>
          <seriesInfo name="RFC" value="8949"/>
          <seriesInfo name="DOI" value="10.17487/RFC8949"/>
        </reference>
        <reference anchor="TvdLCode" target="https://github.com/Tim024/ConstellationCode">
          <front>
            <title>Constellation Code</title>
            <author initials="" surname="Tim van der Lee">
              <organization/>
            </author>
            <date year="2023" month="July"/>
          </front>
        </reference>
        <reference anchor="BhSi2019">
          <front>
            <title>Network topology design at 27,000 km/hour</title>
            <author fullname="Debopam Bhattacherjee" initials="D." surname="Bhattacherjee">
              <organization>ETH Zürich</organization>
            </author>
            <author fullname="Ankit Singla" initials="A." surname="Singla">
              <organization>ETH Zürich</organization>
            </author>
            <date month="December" year="2019"/>
          </front>
          <seriesInfo name="Proceedings of the 15th International Conference on Emerging Networking Experiments And Technologies" value="pp. 341-354"/>
          <seriesInfo name="DOI" value="10.1145/3359989.3365407"/>
          <refcontent>ACM</refcontent>
        </reference>
        <reference anchor="StFrHe2022">
          <front>
            <title>Distributed On-Demand Routing for LEO Mega-Constellations: A Starlink Case Study</title>
            <author fullname="Gregory Stock" initials="G." surname="Stock">
              <organization>Saarland Informatics Campus,Saarland University &amp;#x2013; Computer Science,66123 Saarbr&amp;#x00FC;cken,Germany</organization>
            </author>
            <author fullname="Juan A. Fraire" initials="J." surname="Fraire">
              <organization>Saarland Informatics Campus,Saarland University &amp;#x2013; Computer Science,66123 Saarbr&amp;#x00FC;cken,Germany</organization>
            </author>
            <author fullname="Holger Hermanns" initials="H." surname="Hermanns">
              <organization>Saarland Informatics Campus,Saarland University &amp;#x2013; Computer Science,66123 Saarbr&amp;#x00FC;cken,Germany</organization>
            </author>
            <date month="September" year="2022"/>
          </front>
          <seriesInfo name="2022 11th Advanced Satellite Multimedia Systems Conference and the 17th Signal Processing for Space Communications Workshop (ASMS/SPSC)" value="pp. 1-8"/>
          <seriesInfo name="DOI" value="10.1109/asms/spsc55670.2022.9914716"/>
          <refcontent>IEEE</refcontent>
        </reference>
        <reference anchor="VaCrHuKe2006">
          <front>
            <title>Revisiting Spacetrack Report #3</title>
            <author fullname="David Vallado" initials="D." surname="Vallado">
              <organization>Center for Space Standards and Innovation</organization>
            </author>
            <author fullname="Paul Crawford" initials="P." surname="Crawford">
              <organization>Crawford Communications Ltd.</organization>
            </author>
            <author fullname="Ricahrd Hujsak" initials="R." surname="Hujsak">
              <organization>Analytical Graphics, Inc.</organization>
            </author>
            <author fullname="T.S. Kelso" initials="T." surname="Kelso">
              <organization>Center for Space Standards and Innovation</organization>
            </author>
            <date month="June" year="2006"/>
          </front>
          <seriesInfo name="AIAA/AAS Astrodynamics Specialist Conference and" value="Exhibit"/>
          <seriesInfo name="DOI" value="10.2514/6.2006-6753"/>
          <refcontent>American Institute of Aeronautics and Astronautics</refcontent>
        </reference>
        <reference anchor="HoRo1980">
          <front>
            <title>Spacetrack Report No. 3: Models for Propagation of NORAD Element Sets</title>
            <author initials="F. R." surname="Hoots" fullname="Felix R. Hoots">
              <organization/>
            </author>
            <author initials="R. L." surname="Roehrich" fullname="Ronald L. Roehrich">
              <organization/>
            </author>
            <date year="1980" month="December"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 521?>

<section anchor="changelog">
      <name>Changelog</name>
      <section anchor="since-draft-piraux-space-constellation-code-01">
        <name>Since draft-piraux-space-constellation-code-01</name>
        <ul spacing="normal">
          <li>
            <t>Replaced YAML by CDDL.</t>
          </li>
          <li>
            <t>Include description of ground stations.</t>
          </li>
          <li>
            <t>Reorganised the document into Core Network and Ground Network sections following the revised introduction.</t>
          </li>
        </ul>
      </section>
      <section anchor="since-draft-piraux-space-constellation-code-00">
        <name>Since draft-piraux-space-constellation-code-00</name>
        <ul spacing="normal">
          <li>
            <t>Add YAML format to specify link patterns within shells of a constellation.</t>
          </li>
          <li>
            <t>Improvement of the text and examples.</t>
          </li>
        </ul>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>We thank Tim van der Lee for his work on a code <xref target="TvdLCode"/> that served as the basis for this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
ZAAA

-->

</rfc>
