<?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.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-altanai-moq-relay-geocode-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="MoQ Relay Geocode">Geographic Location for Media over QUIC Relays</title>
    <seriesInfo name="Internet-Draft" value="draft-altanai-moq-relay-geocode-00"/>
    <author fullname="Altanai Bisht">
      <organization>Cisco Meraki</organization>
      <address>
        <email>albisht@cisco.com</email>
      </address>
    </author>
    <author fullname="Tim Evens">
      <organization>Cisco</organization>
      <address>
        <email>tievens@cisco.com</email>
      </address>
    </author>
    <date year="2026" month="March" day="09"/>
    <area>Web and Internet Transport</area>
    <workgroup>Media Over QUIC</workgroup>
    <keyword>MOQ</keyword>
    <keyword>Media over QUIC</keyword>
    <keyword>geocode</keyword>
    <keyword>relay</keyword>
    <keyword>GDOR</keyword>
    <keyword>IATA</keyword>
    <keyword>geo-distributed</keyword>
    <keyword>routing</keyword>
    <abstract>
      <?line 84?>

<t>This document defines a mechanism for Media over QUIC (MoQ) relays to advertise their geographic location (geocode) and related path metrics. Some clients require their media data to remain locally or geo-fenced within specific jurisdictions for privacy and security compliance (e.g., GDPR, HIPAA, or sector-specific regulations). This mechanism enables service providers to track the geographic path of media packets through the relay mesh and to enforce geo-fencing policies. It supports Geo-Distributed Orchestration and Routing (GDOR), data residency compliance, latency optimization, and relay selection. The specification includes optional IATA airport codes as human-readable geographic identifiers for major relay locations.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://altanai.github.io/draft-altanai-moq-relay-geocode/draft-altanai-moq-relay-geocode.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-altanai-moq-relay-geocode/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Media Over QUIC Working Group mailing list (<eref target="mailto:moq@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/moq/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/moq/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/altanai/draft-altanai-moq-relay-geocode"/>.</t>
    </note>
  </front>
  <middle>
    <?line 88?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Media over QUIC Transport (MOQT) <xref target="MoQTransport"/> uses a relay-based architecture where publishers push media to relays and subscribers pull from relays. Relays can be chained for CDN-like distribution, forming a mesh of interconnected nodes. In such topologies—as illustrated by deployments with multiple relays (e.g., relays A, B, C, D) connecting Home/Enterprise clients to a Service Media backend—the following questions arise:</t>
      <ul spacing="normal">
        <li>
          <t><strong>Where</strong> is each relay located geographically?</t>
        </li>
        <li>
          <t><strong>How close</strong> are relays to each other and to clients?</t>
        </li>
        <li>
          <t><strong>Which path</strong> through the relay mesh minimizes latency or satisfies policy?</t>
        </li>
      </ul>
      <t>Today, MoQ provides no standard way for relays to advertise geographic position. Clients and orchestration systems rely on external mechanisms (e.g., IP geolocation, manual configuration) that are often imprecise, inconsistent, or unavailable. This document specifies a lightweight, protocol-aligned mechanism for relays to advertise geocode and related metrics, enabling:</t>
      <ol spacing="normal" type="1"><li>
          <t><strong>Vicinity and path computation</strong>: Determining physical proximity and logical paths between relays.</t>
        </li>
        <li>
          <t><strong>GDOR (Geo-Distributed Orchestration/Routing)</strong>: Making routing and placement decisions based on geography (e.g., route through EU relays for GDPR, avoid certain jurisdictions).</t>
        </li>
        <li>
          <t><strong>Latency optimization</strong>: Selecting relays with lower RTT or propagation time (PT) to the client or to upstream relays.</t>
        </li>
        <li>
          <t><strong>Data residency and compliance</strong>: Ensuring media flows stay within required geographic boundaries. Clients often require their data to be locally or geo-fenced for privacy and security compliance (e.g., GDPR, HIPAA).</t>
        </li>
        <li>
          <t><strong>Path tracking</strong>: Enabling service providers to track the geographic path of media packets through the relay mesh for compliance audits and geo-fencing enforcement.</t>
        </li>
      </ol>
      <section anchor="design-goals">
        <name>Design Goals</name>
        <ul spacing="normal">
          <li>
            <t><strong>Minimal protocol impact</strong>: Reuse existing MoQ catalog, metrics, or discovery mechanisms where possible.</t>
          </li>
          <li>
            <t><strong>Interoperability</strong>: Use standard geographic representations (WGS84, GeoJSON) and widely recognized identifiers (IATA codes).</t>
          </li>
          <li>
            <t><strong>Extensibility</strong>: Allow optional altitude, region codes, and path metrics (RTT, PT) without mandating them.</t>
          </li>
        </ul>
      </section>
    </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?>

<t><strong>Geocode</strong>: A representation of geographic position, typically latitude and longitude (WGS84), optionally with altitude.</t>
      <t><strong>Relay Vicinity</strong>: The geographic proximity of one relay to another or to a client, expressed as distance or as a qualitative relationship (e.g., same region, same metro).</t>
      <t><strong>Relay Path</strong>: A sequence of relays through which media flows from publisher to subscriber, or the logical/geographic route between relays.</t>
      <t><strong>GDOR (Geo-Distributed Orchestration/Routing)</strong>: Routing and orchestration decisions that consider geographic location, including data residency, latency optimization, and jurisdictional compliance.</t>
      <t><strong>IATA Code</strong>: A three-letter code assigned by the International Air Transport Association to identify airports and major metropolitan areas (e.g., JFK, LHR, FRA). Used here as an optional human-readable geographic identifier for relay locations.</t>
    </section>
    <section anchor="use-cases">
      <name>Use Cases</name>
      <section anchor="relay-selection-by-proximity">
        <name>Relay Selection by Proximity</name>
        <t>A subscriber in New York (NY) may have multiple relays available (e.g., A, B, C, D). With geocode and RTT/PT metrics, the client or an orchestration layer can select the relay that minimizes latency or satisfies geographic constraints.</t>
      </section>
      <section anchor="geo-distributed-orchestration-gdor">
        <name>Geo-Distributed Orchestration (GDOR)</name>
        <t>Some clients require their media data to remain locally or geo-fenced within specific jurisdictions for privacy and security compliance (e.g., GDPR, HIPAA, or sector-specific regulations). An operator may require that:</t>
        <ul spacing="normal">
          <li>
            <t>EU subscriber traffic flows only through EU relays.</t>
          </li>
          <li>
            <t>Media for a given jurisdiction is processed within that jurisdiction.</t>
          </li>
          <li>
            <t>Path selection avoids certain regions for policy or cost reasons.</t>
          </li>
        </ul>
        <t>Geocode enables GDOR by allowing relays to advertise their jurisdiction (e.g., via country/region codes) and by allowing path computation to respect geographic boundaries. Service providers can use relay geocode and the advertised neighbor topology to <strong>track the geographic path</strong> of media packets as they traverse the MoQ relay mesh, supporting compliance audits and geo-fencing enforcement.</t>
      </section>
      <section anchor="path-and-vicinity-awareness">
        <name>Path and Vicinity Awareness</name>
        <t>In a relay mesh (e.g., A↔B↔C↔D), knowing the geocode of each relay allows:</t>
        <ul spacing="normal">
          <li>
            <t><strong>Vicinity</strong>: Computing great-circle distance or approximate propagation delay between relays.</t>
          </li>
          <li>
            <t><strong>Path</strong>: Understanding the geographic route (e.g., NY → Relay D → Relay A → SVC) and optimizing it.</t>
          </li>
        </ul>
      </section>
      <section anchor="metrics-integration">
        <name>Metrics Integration</name>
        <t>Deployments commonly measure <strong>RTT to Relay</strong> and <strong>PT (Propagation Time) to Relay</strong> as key metrics. Geocode complements these by providing a stable, policy-relevant attribute (location) that does not change with network conditions, while RTT/PT provide dynamic performance signals.</t>
      </section>
    </section>
    <section anchor="geocode-representation">
      <name>Geocode Representation</name>
      <section anchor="primary-format-wgs84-coordinates">
        <name>Primary Format: WGS84 Coordinates</name>
        <t>Relay geocode <bcp14>MUST</bcp14> be representable as WGS84 coordinates (as used in GeoJSON <xref target="RFC7946"/>):</t>
        <ul spacing="normal">
          <li>
            <t><strong>latitude</strong>: Decimal degrees, -90 to 90.</t>
          </li>
          <li>
            <t><strong>longitude</strong>: Decimal degrees, -180 to 180.</t>
          </li>
          <li>
            <t><strong>altitude</strong> (optional): Meters above WGS84 ellipsoid.</t>
          </li>
        </ul>
        <t>Example (JSON):</t>
        <t><tt>json
{
  "latitude": 40.6413,
  "longitude": -73.7781,
  "altitude": 4
}
</tt></t>
      </section>
      <section anchor="optional-iata-code">
        <name>Optional: IATA Code</name>
        <t>An IATA airport code <bcp14>MAY</bcp14> be included as a human-readable geographic identifier. IATA codes are widely used for airports and major metro areas and provide a compact, recognizable reference (e.g., JFK for New York, LHR for London).</t>
        <t><strong>Suggested IATA codes for common relay regions</strong> (informative):</t>
        <table>
          <thead>
            <tr>
              <th align="left">Region / Metro</th>
              <th align="left">Suggested IATA</th>
              <th align="left">Notes</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">New York (NYC metro)</td>
              <td align="left">JFK, LGA, EWR</td>
              <td align="left">Primary: JFK for NYC area</td>
            </tr>
            <tr>
              <td align="left">Virginia (DC metro)</td>
              <td align="left">IAD, DCA</td>
              <td align="left">IAD for Ashburn/DC area</td>
            </tr>
            <tr>
              <td align="left">London</td>
              <td align="left">LHR, LGW</td>
              <td align="left">LHR for London</td>
            </tr>
            <tr>
              <td align="left">Frankfurt</td>
              <td align="left">FRA</td>
              <td align="left">Major EU hub</td>
            </tr>
            <tr>
              <td align="left">Paris</td>
              <td align="left">CDG</td>
              <td align="left">Major EU hub</td>
            </tr>
            <tr>
              <td align="left">Amsterdam</td>
              <td align="left">AMS</td>
              <td align="left">Major EU hub</td>
            </tr>
            <tr>
              <td align="left">Tokyo</td>
              <td align="left">NRT, HND</td>
              <td align="left">NRT for Tokyo area</td>
            </tr>
            <tr>
              <td align="left">Singapore</td>
              <td align="left">SIN</td>
              <td align="left">Asia-Pacific</td>
            </tr>
            <tr>
              <td align="left">Sydney</td>
              <td align="left">SYD</td>
              <td align="left">Australia</td>
            </tr>
            <tr>
              <td align="left">São Paulo</td>
              <td align="left">GRU</td>
              <td align="left">South America</td>
            </tr>
          </tbody>
        </table>
        <t>The IATA code <bcp14>SHOULD</bcp14> correspond to the nearest major airport or metro area where the relay is located. It is advisory only; precise routing <bcp14>MUST</bcp14> use latitude/longitude when geographic accuracy is required.</t>
      </section>
      <section anchor="optional-region-and-jurisdiction">
        <name>Optional: Region and Jurisdiction</name>
        <t>For GDOR and compliance, relays <bcp14>MAY</bcp14> advertise:</t>
        <ul spacing="normal">
          <li>
            <t><strong>country</strong>: ISO 3166-1 alpha-2 (e.g., "US", "DE").</t>
          </li>
          <li>
            <t><strong>subdivision</strong>: ISO 3166-2 (e.g., "US-NY", "DE-BY") as in <xref target="RFC9388"/>.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="relay-advertisement-format">
      <name>Relay Advertisement Format</name>
      <section anchor="json-schema">
        <name>JSON Schema</name>
        <t>The following JSON structure defines the relay geocode advertisement. It <bcp14>MAY</bcp14> be carried in MoQ catalog extensions, metrics (<xref target="MoQMetrics"/>), or a dedicated discovery resource (e.g., well-known URI).</t>
        <t><tt>json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "MoQ Relay Geocode",
  "type": "object",
  "required": ["relay_id", "latitude", "longitude"],
  "properties": {
    "relay_id": { "type": "string", "description": "Unique relay identifier" },
    "latitude": { "type": "number", "minimum": -90, "maximum": 90 },
    "longitude": { "type": "number", "minimum": -180, "maximum": 180 },
    "altitude": { "type": "number", "description": "Meters above WGS84 ellipsoid" },
    "iata_code": { "type": "string", "pattern": "^[A-Z]{3}$", "description": "IATA airport/metro code" },
    "country": { "type": "string", "pattern": "^[A-Z]{2}$", "description": "ISO 3166-1 alpha-2" },
    "subdivision": { "type": "string", "description": "ISO 3166-2 subdivision" },
    "rtt_ms": { "type": "number", "description": "RTT to this relay (ms), if advertised" },
    "pt_ms": { "type": "number", "description": "Propagation time to relay (ms), if advertised" },
    "neighbors": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "relay_id": { "type": "string" },
          "rtt_ms": { "type": "number" },
          "pt_ms": { "type": "number" }
        }
      },
      "description": "Adjacent relays and inter-relay metrics"
    }
  }
}
</tt></t>
      </section>
      <section anchor="example-advertisement">
        <name>Example Advertisement</name>
        <t>Relay D in New York area, with path metrics:</t>
        <t><tt>json
{
  "relay_id": "relay-D",
  "latitude": 40.6413,
  "longitude": -73.7781,
  "altitude": 4,
  "iata_code": "JFK",
  "country": "US",
  "subdivision": "US-NY",
  "rtt_ms": 16,
  "pt_ms": 12,
  "neighbors": [
    { "relay_id": "relay-A", "rtt_ms": 7, "pt_ms": 3 },
    { "relay_id": "relay-C", "rtt_ms": 12, "pt_ms": 5 }
  ]
}
</tt></t>
      </section>
      <section anchor="integration-with-moq">
        <name>Integration with MoQ</name>
        <ul spacing="normal">
          <li>
            <t><strong>Catalog</strong>: A relay <bcp14>MAY</bcp14> include geocode in catalog metadata for namespaces or tracks it serves.</t>
          </li>
          <li>
            <t><strong>Metrics</strong>: Geocode <bcp14>MAY</bcp14> be part of metrics exposed per <xref target="MoQMetrics"/> for relay selection and monitoring.</t>
          </li>
          <li>
            <t><strong>Discovery</strong>: A relay <bcp14>MAY</bcp14> serve geocode at a well-known path (e.g., <tt>/.well-known/moq-relay-geocode</tt>) or via a Setup Option in SETUP.</t>
          </li>
        </ul>
        <t>The exact wire format and negotiation are left to a companion specification or a future revision of the MoQ transport or metrics documents.</t>
      </section>
    </section>
    <section anchor="vicinity-and-path-computation">
      <name>Vicinity and Path Computation</name>
      <section anchor="great-circle-distance">
        <name>Great-Circle Distance</name>
        <t>Given two relays with geocode (lat1, lon1) and (lat2, lon2), the approximate great-circle distance in kilometers can be computed using the Haversine formula or an equivalent. This provides a stable measure of physical proximity independent of network topology.</t>
      </section>
      <section anchor="path-metrics">
        <name>Path Metrics</name>
        <t>When relays advertise <tt>neighbors</tt> with <tt>rtt_ms</tt> and <tt>pt_ms</tt>, a client or orchestration system can:</t>
        <ol spacing="normal" type="1"><li>
            <t><strong>Build a relay graph</strong>: Nodes = relays, edges = neighbor relationships with RTT/PT.</t>
          </li>
          <li>
            <t><strong>Compute paths</strong>: Shortest path by RTT, by PT, or by geographic distance.</t>
          </li>
          <li>
            <t><strong>Apply GDOR constraints</strong>: Filter paths to those that stay within required jurisdictions (using <tt>country</tt>, <tt>subdivision</tt>).</t>
          </li>
        </ol>
      </section>
      <section anchor="vicinity-semantics">
        <name>Vicinity Semantics</name>
        <ul spacing="normal">
          <li>
            <t><strong>Same metro</strong>: Relays with the same <tt>iata_code</tt> or within ~50 km.</t>
          </li>
          <li>
            <t><strong>Same region</strong>: Relays with the same <tt>subdivision</tt> or <tt>country</tt>.</t>
          </li>
          <li>
            <t><strong>Cross-border</strong>: Path crosses <tt>country</tt> boundaries; may trigger compliance checks.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="privacy">
        <name>Privacy</name>
        <ul spacing="normal">
          <li>
            <t>Geocode reveals relay location. Operators who wish to hide exact location <bcp14>MAY</bcp14> advertise only <tt>country</tt> and <tt>subdivision</tt>, or a coarse-grained geocode (e.g., rounded to 0.1°).</t>
          </li>
          <li>
            <t>IATA codes are less precise than coordinates and may be preferred when exact location must not be disclosed.</t>
          </li>
        </ul>
      </section>
      <section anchor="integrity">
        <name>Integrity</name>
        <ul spacing="normal">
          <li>
            <t>Geocode advertisements <bcp14>SHOULD</bcp14> be integrity-protected (e.g., over TLS as with MoQ) and, when used for compliance, <bcp14>SHOULD</bcp14> be verifiable (e.g., signed by a trusted authority).</t>
          </li>
        </ul>
      </section>
      <section anchor="misuse">
        <name>Misuse</name>
        <ul spacing="normal">
          <li>
            <t>Adversaries could advertise false geocode to attract traffic or evade geographic restrictions. Relays <bcp14>SHOULD</bcp14> be authenticated; geocode from untrusted sources <bcp14>SHOULD</bcp14> be validated or ignored.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document does not require IANA actions. If a well-known URI or a MoQ parameter type is registered in the future, the appropriate IANA registry would be updated.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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>
        <reference anchor="RFC7946">
          <front>
            <title>The GeoJSON Format</title>
            <author initials="H." surname="Butler" fullname="H. Butler">
              <organization/>
            </author>
            <author initials="M." surname="Daly" fullname="M. Daly">
              <organization/>
            </author>
            <author initials="A." surname="Doyle" fullname="A. Doyle">
              <organization/>
            </author>
            <author initials="S." surname="Gillies" fullname="S. Gillies">
              <organization/>
            </author>
            <author initials="S." surname="Hagen" fullname="S. Hagen">
              <organization/>
            </author>
            <author initials="T." surname="Schaub" fullname="T. Schaub">
              <organization/>
            </author>
            <date year="2016" month="August"/>
          </front>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="MoQTransport" target="https://datatracker.ietf.org/doc/draft-ietf-moq-transport/">
          <front>
            <title>Media over QUIC Transport</title>
            <author>
              <organization>IETF MOQ WG</organization>
            </author>
            <date year="2026"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-moq-transport-17"/>
        </reference>
        <reference anchor="MoQMetrics" target="https://datatracker.ietf.org/doc/draft-jennings-moq-metrics/">
          <front>
            <title>Metrics over MOQT</title>
            <author initials="C." surname="Jennings" fullname="C. Jennings">
              <organization/>
            </author>
            <date year="2025"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-jennings-moq-metrics-02"/>
        </reference>
        <reference anchor="RFC8801">
          <front>
            <title>Discovering Provisioning Domain Names and Data</title>
            <author>
              <organization/>
            </author>
            <date year="2020" month="July"/>
          </front>
        </reference>
        <reference anchor="RFC9388">
          <front>
            <title>Content Delivery Network Interconnection (CDNI) Footprint Types: Country Subdivision Code and Footprint Union</title>
            <author>
              <organization/>
            </author>
            <date year="2023" month="June"/>
          </front>
        </reference>
        <reference anchor="RFC8805">
          <front>
            <title>A Format for Self-Published IP Geolocation Feeds</title>
            <author>
              <organization/>
            </author>
            <date year="2020" month="August"/>
          </front>
        </reference>
      </references>
    </references>
    <?line 326?>

<section anchor="appendix-a-example-topology-informative">
      <name>Appendix A. Example Topology (Informative)</name>
      <t>The following example illustrates a typical relay mesh topology:</t>
      <t><tt>
Home/Ent (NY)                    Relay Mesh                    SVC Media MS
    |                          A --- B
    |                           \   /
    +----(16ms RTT)-------------&gt; D
    |                           /   \
    |                          C --- (to SVC)
</tt></t>
      <ul spacing="normal">
        <li>
          <t><strong>Relay D</strong>: JFK (NY), serves Home/Ent with 16ms RTT.</t>
        </li>
        <li>
          <t><strong>Relay A, B, C</strong>: Interconnected; A connects to SVC.</t>
        </li>
        <li>
          <t>Geocode for each enables path selection (e.g., NY client → D → A → SVC) and GDOR (e.g., ensure D and A are in permitted jurisdictions).</t>
        </li>
      </ul>
    </section>
    <section anchor="appendix-b-iata-code-reference-informative">
      <name>Appendix B. IATA Code Reference (Informative)</name>
      <t>IATA codes are maintained by the International Air Transport Association. A subset useful for MoQ relay identification:</t>
      <table>
        <thead>
          <tr>
            <th align="left">Code</th>
            <th align="left">City/Region</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">JFK</td>
            <td align="left">New York (John F. Kennedy)</td>
          </tr>
          <tr>
            <td align="left">LGA</td>
            <td align="left">New York (LaGuardia)</td>
          </tr>
          <tr>
            <td align="left">EWR</td>
            <td align="left">Newark (NYC metro)</td>
          </tr>
          <tr>
            <td align="left">IAD</td>
            <td align="left">Washington Dulles (Virginia)</td>
          </tr>
          <tr>
            <td align="left">DCA</td>
            <td align="left">Washington Reagan</td>
          </tr>
          <tr>
            <td align="left">LHR</td>
            <td align="left">London Heathrow</td>
          </tr>
          <tr>
            <td align="left">FRA</td>
            <td align="left">Frankfurt</td>
          </tr>
          <tr>
            <td align="left">CDG</td>
            <td align="left">Paris Charles de Gaulle</td>
          </tr>
          <tr>
            <td align="left">AMS</td>
            <td align="left">Amsterdam</td>
          </tr>
          <tr>
            <td align="left">NRT</td>
            <td align="left">Tokyo Narita</td>
          </tr>
          <tr>
            <td align="left">SIN</td>
            <td align="left">Singapore</td>
          </tr>
          <tr>
            <td align="left">SYD</td>
            <td align="left">Sydney</td>
          </tr>
          <tr>
            <td align="left">GRU</td>
            <td align="left">São Paulo</td>
          </tr>
        </tbody>
      </table>
      <t>Operators <bcp14>SHOULD</bcp14> use the official IATA code list for authoritative mappings.</t>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9VbXXIbSXJ+71OUMftAagGQlDT64ezuLARQFGfFnyGoVcjj
8bKALgA9anRjurpJwZIcftoDOPYAjvAFfIb1TfYk/jKzqrsaAkcz6/CDGSEK
6K6frKzML7/MKvZ6vahMytQcqs6xyeeFXi2SqXqZT3WZ5Jma5YU6NXGiVX5j
CvXtq5OhujSpXttOpCeTwtyg42n+rTxUGGKax6YTobuZ58X6UNkyjqI4n2Z6
iUniQs/Knk5Lnemkt8x/7BXUsTeXjr39/chWk2ViLWYv1yt0OTm6eh5l1XJi
isMoxriH6v7+/Ue9/Qe9/afRNM+syWxlD1VZVCaCPAeRLoyGXK/NROksVidZ
aYrMlOqq0Jld5UXZiW7z4u28yKsVyc8LPPcL7ERvzRrv48NIqZ46Pf9W/m+r
gZ85sfkzL4Q/HY/OL/nDyeBq4Nv14sSWRTKpShNL+7wqk2weRTcmqwzNdac8
SokqOq8hNfqoY2pJz5c6SfEcivx9YspZPy/m9FgX0wUeL8pyZQ/39qgVPUpu
TN8326MHe5Miv7VmD/33qN88KRfVBD3dDu19Zr+oT4otsWUwm2vdl8H6Sf65
UT73vr8ol2kninRVLvKCdwX/lJpVaSpmNZCu6lliFyW/wwp1lvwLW/GhGiZ2
mmMHC/024ddGFKfTCfX4/ZTe96f5csvYV8lSHWGP7F3jhgOWiaGmwYBRlhdL
NL/hLb58Prx/cPDUfXxy8Pih+/j46cNHhzySd8erhSF/+mZ8fqae8xgdfu9d
4AAu8ISfNHqhn54SuV/01bMKQxUbz0/7aqTT9cbTAZ7m69RsPB731XGSpomx
n754oecm23h81Vfj6UJXkyhKslm4coBE7X7thW7iS+Cln64O+kcXwgRyTPX6
uK2U+4/4qzUFRCYJfD+PAb0R2ZoHInIGtrfSz9k7eCzC6WJuQqvGDBqtpm9N
0fgQcG3vrpHYobDqUwO3n9rNNfNDWTUWcrVtraLSzrCvvjFZBr+3G4v98hct
9gc3CIu5FAF6+/f/ruVuG4sXTFb9ZP+gvdoReQNWStB1UeQ3CaE7fRnlcJtM
nWGhlqF6hGk3Frnf238sAz998ORJe+AhgoTJSjUyKcysWKszUxKyiwYQGzIz
5Ti2MxydnezCj/JyBTEQCgCoiBnDvMpK9BtXkzgRufAsNixM0/pVhhcbciH8
PKoX/GVbroHzWI6fY5POehfVJAXUGESjC3Lr1EfY58bEm/u6T57dQ2imX0pP
LO1EGUVXi8QqbEK1pEXHZpZkpDe1NPC5LLHLrfF6B0a4K+HJqjJXOsarMrFG
lQuTFBScfNyvpdpx0LvLiqC+CFtqpcuFcrsNR8+XRk2BDVlp0eTHKin8kEsW
gWyIJiwM7zINnqZruDDHw5nJphjzFlECL+3KTJMZRPihKhIbJ7xtlteDLbjR
0zVLYs0U78u1ArSu0kRjCLVj+vN+F1H34rKrXpxcDAZdmgNNy7zo1QMXZl6l
vDq721esykZvJtOTFLqEL90kGHNFVhqbghXGfkArC1XFushnbqkr8hSooVwg
Ms8X3Jg1jvd2waJjIEOQODX18skFVnmaTOG/fXVSKlutCDosWUhv1BAGdY5g
bcgMeHdouEuhD2qH2MZuV5RdAAdiDBzqp8sRmp7lqzJZutjVrTd2jUWn4iak
FlNvhcyVZNO0iqEa6p1nOmVWo3RSkKSKjAQmaNWiWuoMcVvHpMlQUyRRiQFJ
m7SfS/0DfsvU3uBsX2x9mcQxglD0BXlwkccVyxVFd8YIWDfQc1e9fx8GmI8f
VWXZNYRITLSFEpkClVhqBUO9XRj8Xjm3hGiryi7cbrLNsruwzVUTO8VGSKM0
VbMiX7oGfceG1VRnagJ3WMDSMRWtE5DTS5O3RtXMj/VOUZE2TotpwISSAKzQ
NyOVwhzgFNUUppTDRPI5TORv//YXKBrhuGJLQNPJGiiwSvP1kp2QfEktq7RM
VqnxS3Du4b7BN5511bCrRrvK4yOEeQFf3jsiOeBttnFrggsAmDiFbMKETD2L
IQwZ+SxP0/yWhvixgoGy02oa4hAbqu7de01qvndPwduMxmqCbYf8jZUQMnzN
PV7kt5g+t9QLRD4ALh4gx6yFdygn5tduqgTvyS/R8w5HhObJBWAatVMAKWCC
FvZpxRkhR3SVx3rdpfDtocBiX5DMYGJdALUw4Mxb8QaqhiCR20Qca+gUSoLn
LWe2a1uaJSEoYWOmzDsK3vCzGp3qPUTomDehowtPyio0xD7Oknkl4+1iyQg8
pLl8hiWqZLkq4NAWQABfxv7AGiEKY2SV6RvKDeCxDhLr6OJQgJ0oTeaL8tbQ
7y7po0RsSMHXkznZejv63KGRqQ+qPpa4MNIV6IUBwWAO+tjGPwIOM4J4as0o
S1hWlby6e/cOEeyhINpIQs/F2pLxkFTvsLOuG/kLP0V3C7+E8NCEc9noPk1D
sAnw/Cmc3XMYu0uznmrOvFzWJsKlempcKJ4yd8BcjDTYRm8F69oB0dPUdnn0
ymuKlCaxS9/kSaymUBqFy1Yg3O1HD0jql1ugnKQbC4STgDIqQwE8E75yeXWl
OIzmKz0Xm0NnxM0L4CaFt4X3d2qGB9UKGjC6xrjoIU09agcYUkATZEiGI6Th
TPEERGeY3ZLHrH2MdxwhdHs1AQGDR3EA9D4idttmFJ5LAGO384i/jylAr1/S
4i7IzjjOYwGyGLHK/ytGQOIGkukqThw6hOTAEQayMQTIL76A7Vs4nTrOdWoF
YE8J0cQB2C3J30EWaQ2XBkEQeAL7psEIzIAcGs7RbdwPcsSOnq9DyHHxMbc2
IXTguZhV5yuk0ZMkhW5pkleYoobFQBuFAexYCC7xXe28Ph4/edj1Ka0Qy1to
FDsJfMrnyKqxjSFZ2GGmwQxjVwQ4AjYCwJrZBxR9GmqiEfpKsBUKd3MydO7c
baDELVvtwCm6ihyAbBOeSVgKGyM9YaeWpG0kAtkNScMxjZITItyM55a4uFFv
DWw7L2KLhO7V+KrTlf/V2Tl/vjwCV7k8GtHn8YvBy5f1h8i1GL84f/Vy1Hxq
eg7PT0+PzkbSGU9V61HUOR286ci6OucXVyfnZ4OXHeA7hA9BnKKAOE0isd0Q
yGkbQStMaWLq82x48df/OHgIDvUPrj4B/iRfqEKBLzAGxxjzDPslX6GndaRX
K6MLGgU+CfNaJTAw0jhcf5HfZorMCNq89x1p5vtD9ZvJdHXw8HfuAS249dDr
rPWQdfbpk086ixK3PNoyTa3N1vMNTbflHbxpffd6Dx7+5mtghlG9gydf/y7C
ou+5giib6oZLEFRsoQpdqvUJHyKOwubsYlo2l2/iSuD83u5Tgdja/Enf96Qi
66MpSXC1gVd1yIQkeebhiSJ3JixLwoF20QGh+h0tgKm0ZVbL2IVWmljCj+Ai
SckFH4ny5CiLZOVh1yLLd37pvpA35ruBtBdM3khXFuhvePRZTSkckt4yzwuD
DBPymsqTzA1nZ4Qj8HWcYC/EKA7Jm/Qg+uXk4DJgBW121zADpmXMvxBFtiXd
XZdr0UDtbO6nUriQJjAX9DGFF8IIOqwtECo0ppeaEmCghJJZKywOqQRpSUpH
2o02QORtUq2Btfk0cQwi91C99rmggKRkd7yzxKZhIoRCuuaw3zz/Q1e9fIEA
/PwS4ZfiR8wgwUaUNVj+cxLKhnG2MskvOCoNQcUsR00xrrFPc2mtF974o2gQ
WAsB2Zm5VW+oiLRz9mYX61mrhYZJb+ZVNXP2KwtSq756Tf4Y8l4EnL2Lqybu
tlkXLbxlN5iCtgjPJTsP+AMb0mcSmUBbZHIYFQHACof46dqC1BOi6P91dWdA
dgSaUnK5YR3Ir0tOTEG/g03H2mc0iKAJh7hPeDoREEmASWqt5oC5NkmnHBeY
OhWEdCvnzQpb0TjMNuuqi/B+WxN/gUinHU5IFZNFWypyJDFxF1jqwhUjFuxa
+3T87npfS2an3husayq10L2QOglNC8fdzMjEBGgfyrt4/fgTCk12TdxUDDp0
EzLzWuBYZZR0TjgOcRWEw9O9e3fyb2T+nzBwbZmq0C5jXFEDk+GGjnd95Y1W
+HfQct5QalUnr4NboF4GU4iik8zXoYT6e7j425//8gz/hvg3QjB/m4mC3apY
I1hLUDXhPbCusBIG9iFvB3Wew0LK3jQppqlpR+iVhHuARSsTjHnkzRDYcykR
E/yMtowYfiBdO4K6FZ29UX/78787tB0Fnwf8efzHoZiTC2I0XOIU6M9DKPzM
BYmiaBSUtrApS3bMJVyA6negDMhrYQ08BdWKMDKkvkJeG6zvCpnubquZZdpe
V7G9I/GuG5kMi4SZwOrFYqVaBxXA07rOJemE0txo4tilQ1K142OQq8HEOVeN
SqoKZnMjHC1zJxSA5VhyiS4xGmyXixDOS1S8zvSSzNoUfJBGG0mxGvSaQ5wX
/LLFKsUcC2w00jk5hDhUzBdhJUhVkoyOa6PosuV5TMUnJmCoFNegKuk5bXqq
HTytrCQO/njy/Xt3gvnx464zT09dpWAz5RQ1xtYaSsd6T/dpS57ui6XVzHZ7
44Mn3Br/SXPPcrGZO54t7B6SCRG06AlSWSe3SdNkZQGuUNjRO00brHY4+4SU
19fXPwBMo/eRUh0vbudQPdzvP3p48KDLj71keN57/KD/+PGTA37hZaD20Uca
ixV/7sQ5VDXxAr/IPi2ZKyQTkpZxdT0WBv1zKE9fNVkx53cuh+Y94dB0Bxtz
NIxTYWdimq1eT8tunYLzxIWZgZAF0Rekjcf21IgZHD95CTOGwTPZHFfzOYgE
nXE1IrpCB5zXoZgLb7R7wREx7cgH2DKHnj3Gg1x9UBtDflBnORnhh+hDb+Pn
zgdo26J0Q5d2YDDhosdgFEevL/Hd+c1hs160JrXRhMD2Yg7I1WpnFIxxMhiB
8Q0H8pF7DexiUhXZ3ijoLHpCI6a+L49fy8dAh9zsOcj221kFK/lA/Bi/T3kH
QUMW1YSbXFB5HS+Go+NtrwdLqKuI9RIvB6fjbU2u8rdrUu7Z5RUo1dlIPrIo
8qqWegzo07AmQ1txckZD2kT3LrSQLm6yjjPgKT68oYEGfDaB8Ckv//s/cwhc
pTTd8eUraoaIsYCUBvBLjbiQUtuLcvn6NC+IVORS5qegkxlIZUtn0d6XWsbt
alYNU4ae3EkDn67hK6hFYvNizSTvK+Uq43VVl3GQiInHg70m66aiR+iSegqy
Ssw1qflx3N9AAWfP5HPfBKwrip5z0ReUrV1GrY9pCB5qGuQg1fEzAsmT8bl6
cPDoUe8ApGC10L373lM7r8ZUMRoddVzJzDYn262eYY/e2Rvp1Hv2prNLWARw
Z1CnI/ePHzneuFDuheL6kgQYXjQHgjEyiaWWPW1OhvgVzKKSkzd/bt3sU00A
w8F5yxxMTnUBKskxJ6hi8lFJZiWG1pU9Pgl0fALxiLMFZCughHLm1FQ7YU95
VTQod4t40SMalqlXlyeEaa0Y8SvLq+u4WxKHe3v0ridP5X4E343Yf7wnz77o
cKzgSwGdrffk5P16xa/zyQ8g0fLMGxSef9dhJf0piWmP6kDVDaPT99xpxbXZ
Epwb3d7zlYKmL540U1Hyl81pDCkEssHSi1dZ8mNVu08ddDrqY1fGCwJlMJ5c
z6PxOC+tlhQvn+7Td/3OfUfMrwcJwurnRkHYbw1DbMCPE0ThrcNsLO6nGEKz
wgTG9SfenTtUhjyDaiT08J+/G/T+8fv3Dz7+ast0YdDfE5TiYeuZnEP//Hnu
b5/nEzBopgi8/2daQAAQYed6xKIs/7S0P1PjjqJzUVpsamdp4ZLJLEjymrFX
v2Doi83jLH9o/9NT+ISycZHAA4Eyet3p+scJncsG7bb7qnuzxfncm590QS+Y
b3u3djda3q0r9bFu5z/VXTe1OIh/0FNC8uC+Ax8V9HzCyjgq95NotI8B2/WU
uhUTfGoxapXSKDx3JQEKz2E2aXigKvncGwke/m/4OT8IvboDeifDNh7IcTP6
xGN8cIzCvTl4JHDrv97nr6Flfcf6er9tQQOy5Xqox91mnAd+m7b2G7b6Yc6m
45e8M98HOxOk0aJ0hB4hEUMJnf5AgnaKYqzLQ+pIjL3zQRZbpbnWR/yQriRa
ZAx0H6iQY1CQhZJPSY0rHLjYS1P4HNWF8ZUmyjarY7V5t8opbYHjqHbYDgq7
QZ2MEpo8S8qcXEcm81cL15srYokaZoE8PYzvbIQu7F/v9Zs3e5/cPr7epaVS
gYxuwpTVyvE70tH46OrVRV/4jnmHRAraLoySrIblzcw8L13NnLK11MxKd6hC
qVfGN0BaF66YrswqpkqFcXcSoTRftaovmHryS5r0J35SGmhdoeDa1LAp2EkN
mOtEQ6kTjVydKIqOuahZ3tb3n27DMvYOvPCgSwdRB1LIoQf3+cH9Xaloh2Wm
7bUoaO1tkuZLicX+2hSLB0uorC8yveBiHZ2mkTarVLsyORGjG50yQeQbK/X9
HF+iqUtEUNqW+yFJFpuVyWKuvM/qeowvMAYFPWeNUfR6UdfGgmrqde3x16Kn
a3HPa9bNNXvndbc+PiP5t938IR34uy/PqiSN62ohZxpk12ecSf/WidBVJp7z
97o6Gh63uU2TapK77CLbb+Q+DN8XWcCAKJ1iR5isFZ+H07nIFRPmyTpMdfzm
uUsog9UqXUv6Ehwu0LDPk5ROluTaDQf+3ErVfftFkPZxwI7s/rVDZejuOkDj
613Zmtq4x6DY4KdTdxFiXJ8oyt2Hxn7JnPi88bqOAte0SCfNv365r94u+80g
UqG4e5RQKBqnFljGGBa5tT1sS2wKGoRtaUoPsWl126BC/hWfUcDW5nPTuhUC
YwG+skuP/dHI0J0gancPQcp9dIRCavCAC+AwOvWky9cl+4AuORWh+x051mXp
fqFaUDFI8Ku+AdzKQOVMpJGdDTxUg8uyprkurOnNC7kFWQNHfQMqo1oXZtzv
H/z1vzhD3ahmpcbaOi2H4WSt4qOUtNYcS7hIRUbEifmG9MsKtk2l1wlDD98n
dNm5xEY++Wv01co8ra9CuHsT3LpHF2zkgqZbDt9GvXo5pnzZB1nGxa6IVFfk
wvy+GZnuw8+S8ACxOYnV9MdMXPaSvwjA/M76TxOLcUl0Zl2WDYiObgg36u2a
Ye+b4EfhpuQr5PVJF6QyNzpu1/IJmZwv1vdaG3lJEsoHOYv+qh6cz97JLERe
yajDfgDrJObMG5Nihbmrk2DnzwafmPPGFXdfQfcHeNxHexlPZu2ojqxd7JDv
bepCc5ThP56SKs2c7j4WUkjg26scZoPQtSoSCl08jTQv6IoPaRdLqVa8EHdX
mS7C0joAhwgnyTv6GxpPia/8cdXOSVDj3CyMGNe6udJLUczd/wiPjHxwEr4c
+du6ckK95Uco+Cl13fIz/uPQHWWejplwftjWSn4Gipb67HPN1D/h3x63+jUV
XXcOHi0tBZXdVk32d2r02ZH2aLTPtRqyWDuwbDpVEt5L2OtyD4JdquGSfrqO
nNZ3nMVZvYD9oJ87wec6WetO9ldq4G9Lc1zDpP0APcjJ+ZzOn8au2ge8zfmY
owJ0HCYHZBtHY3LxRJrTnzXC5Ef8YsDoCLNd0d3XstwMngwPjSk+6zcnELCG
upzftsYN7KVz/FKQ+5fdBukruUNhSgK9WZXK36HUR6y+kCTgzJV+Fgz/Adn2
XJW0Luq3S/lUR6a9VGEZ/5t8kannffUHg02J17tSYz8etFu91MeVRvDQ8p6K
/PJebx4FRFK9x9vXGiQqm5cQaFSltJk7vvAv7ajW3253afRcS/2eSvqqrva/
AAFeFPmtlPYvuV9Q4Y+kiK98TX+40AVNCM0ca5pbCvqnY2oS1PUjqdcrX8k/
Q+/SFdxPzuh5ULePpDKvmkp9JKV41S7PR1HDDRx4V+6sPKeQkfi//GCLT4GM
ctrk4pNc+1oCROnPwsQYp4TKKcgqB9Xo/aEUKEz82w4HqM5HAOL56ByA7luC
Yv4PZ3SdoZM8AAA=

-->

</rfc>
