<?xml version="1.0" encoding="utf-8"?>
<!-- name="GENERATOR" content="github.com/mmarkdown/mmark Mmark Markdown Processor - mmark.miek.nl" -->
<rfc version="3" ipr="trust200902" docName="draft-ietf-regext-rdap-geofeed-04" submissionType="IETF" category="std" xml:lang="en" xmlns:xi="http://www.w3.org/2001/XInclude" indexInclude="true">

<front>
<title abbrev="rdap-geofeed">An RDAP Extension for Geofeed Data</title><seriesInfo value="draft-ietf-regext-rdap-geofeed-04" stream="IETF" status="standard" name="Internet-Draft"></seriesInfo>
<author initials="J." surname="Singh" fullname="Jasdip Singh"><organization>ARIN</organization><address><postal><street></street>
</postal><email>jasdips@arin.net</email>
</address></author><author initials="T." surname="Harrison" fullname="Tom Harrison"><organization>APNIC</organization><address><postal><street></street>
</postal><email>tomh@apnic.net</email>
</address></author><date/>
<area>Applications and Real-Time Area (ART)</area>
<workgroup>Registration Protocols Extensions (regext)</workgroup>

<abstract>
<t>This document defines a new RDAP extension &quot;geofeed1&quot; for including a geofeed file URL in an IP Network object.</t>
</abstract>

</front>

<middle>

<section anchor="introduction"><name>Introduction</name>
<t><xref target="RFC8805"></xref> and <xref target="I-D.ietf-opsawg-9092-update"></xref> (obsoletes <xref target="RFC9092"></xref>) detail the IP geolocation feed (in short,
geofeed) concept. This document specifies how the geofeed data can be accessed through RDAP. It defines a new RDAP
extension &quot;geofeed1&quot; for including a geofeed file URL in an IP Network object.</t>

<section anchor="requirements-language"><name>Requirements Language</name>
<t>The keywords &quot;MUST&quot;, &quot;MUST NOT&quot;, &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL NOT&quot;, &quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;,
&quot;NOT RECOMMENDED&quot;, &quot;MAY&quot;, and &quot;OPTIONAL&quot; in this document are to be interpreted as described in BCP 14
<xref target="RFC2119"></xref> <xref target="RFC8174"></xref> when, and only when, they appear in all capitals, as shown here.</t>
<t>Indentation and whitespace in examples are provided only to illustrate element relationships, and are not a REQUIRED
feature of this protocol.</t>
<t>&quot;...&quot; in examples is used as shorthand for elements defined outside of this document.</t>
</section>
</section>

<section anchor="specification"><name>Specification</name>

<section anchor="extension"><name>Extension</name>
<t>A new RDAP extension &quot;geofeed1&quot; is defined for accessing the geofeed data through RDAP. It updates the IP Network object
class definition (<xref target="RFC9083" sectionFormat="of" section="5.4"></xref>) to include a new link object for the geofeed file URL in its &quot;links&quot; array
(<xref target="RFC9083" sectionFormat="of" section="4.2"></xref>).</t>
<t>An RDAP server conforming to this specification MUST include the &quot;geofeed1&quot; extension string in the &quot;rdapConformance&quot;
array for any lookup or search response containing an IP Network object, as well as in the help response. Here is an
elided example for this inclusion:</t>

<artwork><![CDATA[{
    "rdapConformance": [ "rdap_level_0", "geofeed1", ... ],
    ...
}
]]>
</artwork>
</section>

<section anchor="geofeed-link"><name>Geofeed Link</name>
<t>The IP Network object class (<xref target="RFC9083" sectionFormat="of" section="5.4"></xref>) MAY include a link object for the geofeed file URL (also referred
to as a Geofeed link object) in its &quot;links&quot; array (<xref target="RFC9083" sectionFormat="of" section="4.2"></xref>). In RDAP, the &quot;value&quot;, &quot;rel&quot;, and &quot;href&quot;
JSON members are REQUIRED for any link object. Additionally, for a Geofeed link object, the &quot;type&quot; JSON member is
RECOMMENDED. Pertinent details of a Geofeed link object:</t>

<ul spacing="compact">
<li>&quot;rel&quot; -- The link relation type is set to the &quot;geo&quot; string. The &quot;geo&quot; link relation type is new and will be registered
in the IANA Link Relations Registry (see <xref target="link_relations_registry"></xref>).</li>
<li>&quot;href&quot; -- The target URI is set to the HTTPS URL of the geofeed file for an IP network.</li>
<li>&quot;type&quot; -- See <xref target="media_type_for_a_geofeed_link"></xref> for acceptable &quot;type&quot; values.</li>
</ul>
<t>There MAY be zero or more Geofeed link objects in the &quot;links&quot; array of an IP Network object. Further, more than one
Geofeed link object is allowed in case a geofeed file target needs to be represented in multiple formats and/or
languages.</t>
</section>

<section anchor="media_type_for_a_geofeed_link"><name>Media Type for a Geofeed Link</name>
<t><xref target="I-D.ietf-opsawg-9092-update"></xref> requires a geofeed file to be a UTF-8 CSV file, with a series of &quot;#&quot; comments at the end
for the optional RPKI (Resource Public Key Infrastructure) signature. At first glance, the &quot;text/csv&quot; media type
(<xref target="I-D.shafranovich-rfc4180-bis" sectionFormat="of" section="4"></xref>) seems like a good candidate to represent a geofeed file since it now
supports the &quot;#&quot; comments needed for including the RPKI signature.</t>
<t>However, although the CSV geofeed data could be directly viewed by a user, the most common use case will involve it
being processed by some sort of application first, in order to facilitate subsequent address lookup operations.
Therefore, using a new “application” media type with a “geofeed” subtype under the &quot;application&quot; top-level type
(<xref target="RFC6838" sectionFormat="of" section="4.2.5"></xref>) for the geofeed data is preferable over the existing &quot;text/csv&quot; media type.</t>
<t>To that end, a new media type &quot;application/geofeed+csv&quot; will be registered in the IANA Media Types Registry (see
<xref target="media_types_registry"></xref>), and a new suffix &quot;+csv&quot; will be registered in the IANA Structured Syntax Suffixes
Registry (see <xref target="structured_syntax_suffixes_registry"></xref>).</t>
<t>The &quot;type&quot; JSON value in a Geofeed link object SHOULD be set to the &quot;application/geofeed+csv&quot; media type.</t>
<t>A server that includes the &quot;geofeed1&quot; extension identifier in its responses is indicating that by way of its responses,
it will provide access to geofeed data at a target site, in accordance with the text of this document. However, this
document does not restrict the use of other media types that relate to geographic information, nor the use of link
objects more generally.</t>
<t>Although a server may use registered media types in its link objects without any restrictions, it may be useful to
define new RDAP extensions for those media types in order for the server to communicate to clients that it will make
data for that type accessible, in the same way that the server does with the &quot;geofeed1&quot; extension identifier.</t>
</section>

<section anchor="example"><name>Example</name>
<t>The following is an elided example of an IP Network object with a Geofeed link object:</t>

<artwork><![CDATA[{
    "objectClassName": "ip network",
    "handle": "XXXX-RIR",
    "startAddress": "2001:db8::",
    "endAddress": "2001:db8:0:ffff:ffff:ffff:ffff:ffff",
    "ipVersion": "v6",
    "name": "NET-RTR-1",
    "type": "DIRECT ALLOCATION",
    "country": "AU",
    "parentHandle": "YYYY-RIR",
    "status": [ "active" ],
    "links":
     [
        {
            "value": "https://example.net/ip/2001:db8::/48",
            "rel": "self",
            "href": "https://example.net/ip/2001:db8::/48",
            "type": "application/rdap+json"
        },
        {
            "value": "https://example.net/ip/2001:db8::/48",
            "rel": "geo",
            "href": "https://example.com/geofeed",
            "type": "application/geofeed+csv"
        },
        ...
    ],
    ...
}
]]>
</artwork>
</section>
</section>

<section anchor="privacy-considerations"><name>Privacy Considerations</name>
<t>When including a geofeed file URL in an IP Network object, an RDAP server operator SHOULD follow the guidance from
<xref target="I-D.ietf-opsawg-9092-update" sectionFormat="of" section="7"></xref> to not accidentally expose the location of an individual.</t>
</section>

<section anchor="security_considerations"><name>Security Considerations</name>
<t><xref target="I-D.ietf-opsawg-9092-update"></xref> requires an HTTPS URL for a geofeed file, and optionally RPKI-signing the data within.
Besides that, this document does not introduce any new security considerations past those already discussed in the
RDAP protocol specifications.</t>
</section>

<section anchor="iana-considerations"><name>IANA Considerations</name>

<section anchor="rdap-extensions-registry"><name>RDAP Extensions Registry</name>
<t>IANA is requested to register the following value in the RDAP Extensions Registry at
<eref target="https://www.iana.org/assignments/rdap-extensions/:">https://www.iana.org/assignments/rdap-extensions/:</eref></t>

<ul spacing="compact">
<li>Extension identifier: geofeed1</li>
<li>Registry operator: Any</li>
<li>Published specification: This document.</li>
<li>Contact: IETF <eref target="mailto:iesg@ietf.org">iesg@ietf.org</eref></li>
<li>Intended usage: This extension describes version 1 of a method to access the IP geolocation feed data through RDAP.</li>
</ul>
</section>

<section anchor="link_relations_registry"><name>Link Relations Registry</name>
<t>IANA is requested to register the following value in the Link Relations Registry at
<eref target="https://www.iana.org/assignments/link-relations/:">https://www.iana.org/assignments/link-relations/:</eref></t>

<ul spacing="compact">
<li>Relation Name: geo</li>
<li>Description: Indicates that the link context has a resource with geographic information at the link target.</li>
<li>Reference: This document.</li>
</ul>
</section>

<section anchor="media_types_registry"><name>Media Types Registry</name>
<t>IANA is requested to register the following value in the Media Types Registry at
<eref target="https://www.iana.org/assignments/media-types/:">https://www.iana.org/assignments/media-types/:</eref></t>

<ul spacing="compact">
<li>Type name: application</li>
<li>Subtype name: geofeed+csv</li>
<li>Required parameters: N/A</li>
<li>Optional parameters: N/A</li>
<li>Encoding considerations: See <xref target="I-D.ietf-opsawg-9092-update" sectionFormat="of" section="2"></xref>.</li>
<li>Security considerations: See <xref target="security_considerations"></xref> of this document.</li>
<li>Interoperability considerations: There are no known interoperability problems regarding this media format.</li>
<li>Published specification: This document.</li>
<li>Applications that use this media type: Implementations of the Registration Data Access Protocol (RDAP) Extension for
Geofeed Data. Furthermore, any application that processes the CSV geofeed data.</li>
<li>Additional information: This media type is a product of the IETF REGEXT Working Group. The REGEXT charter, information
on the REGEXT mailing list, and other documents produced by the REGEXT Working Group can be found at
<eref target="https://datatracker.ietf.org/wg/regext/">https://datatracker.ietf.org/wg/regext/</eref>.</li>
<li>Person &amp; email address to contact for further information: IETF <eref target="mailto:iesg@ietf.org">iesg@ietf.org</eref></li>
<li>Intended usage: COMMON</li>
<li>Restrictions on usage: None</li>
<li>Authors: Tom Harrison, Jasdip Singh</li>
<li>Change controller: IETF</li>
<li>Provisional Registration: No</li>
</ul>
</section>

<section anchor="structured_syntax_suffixes_registry"><name>Structured Syntax Suffixes Registry</name>
<t>IANA is requested to register the following value in the Structured Syntax Suffixes Registry at
<eref target="https://www.iana.org/assignments/media-type-structured-suffix/:">https://www.iana.org/assignments/media-type-structured-suffix/:</eref></t>

<ul spacing="compact">
<li>Name: Comma-Separated Values (CSV)</li>
<li>+suffix: +csv</li>
<li>References: <xref target="RFC4180"></xref>, <xref target="RFC7111"></xref></li>
<li>Encoding Considerations: Same as &quot;text/csv&quot;.</li>
<li>Interoperability Considerations: Same as &quot;text/csv&quot;.</li>
<li>Fragment Identifier Considerations:</li>
</ul>
<t>The syntax and semantics of fragment identifiers specified for +csv SHOULD be as specified for &quot;text/csv&quot;.</t>
<t>The syntax and semantics for fragment identifiers for a specific &quot;xxx/yyy+csv&quot; SHOULD be processed as follows:</t>
<t>For cases defined in +csv, where the fragment identifier resolves per the +csv rules, then as specified in +csv.</t>
<t>For cases defined in +csv, where the fragment identifier does not resolve per the +csv rules, then as specified in
  &quot;xxx/yyy+csv&quot;.</t>
<t>For cases not defined in +csv, then as specified in &quot;xxx/yyy+csv&quot;.</t>

<ul spacing="compact">
<li>Security Considerations: Same as &quot;text/csv&quot;.</li>
<li>Contact: IETF <eref target="mailto:iesg@ietf.org">iesg@ietf.org</eref></li>
</ul>
</section>
</section>

<section anchor="acknowledgements"><name>Acknowledgements</name>
<t>Mark Kosters provided initial support and encouragement for this work, along with the <xref target="RFC9092"></xref> authors. Gavin Brown
suggested using a web link instead of a simple URI string to specify a geofeed file URL. Andy Newton, James Gould, and
Scott Hollenbeck also provided valuable feedback for this document.</t>
</section>

<section anchor="change-history"><name>Change History</name>

<section anchor="changes-from-00-to-01"><name>Changes from 00 to 01</name>

<ul spacing="compact">
<li>Now using a web link instead of a simple URI string to specify a geofeed file URL.</li>
<li>Renamed the extension as &quot;geofeed1&quot; instead of &quot;geofeedv1&quot;.</li>
<li>Introduced the new &quot;geo&quot; link relation type.</li>
<li>Introduced the new &quot;application/geofeed+csv&quot; media type.</li>
</ul>
</section>

<section anchor="changes-from-01-to-02"><name>Changes from 01 to 02</name>

<ul spacing="compact">
<li>Updated the &quot;Requirements Language&quot; section for examples.</li>
<li>Added an example for RDAP conformance.</li>
<li>Updated the rationale for using the new &quot;application/geofeed+csv&quot; media type.</li>
<li>Updated the &quot;Applications that use this media type&quot; section for the &quot;application/geofeed+csv&quot; registration.</li>
</ul>
</section>

<section anchor="changes-from-02-to-03"><name>Changes from 02 to 03</name>

<ul spacing="compact">
<li>Removed &quot;value&quot; and &quot;hreflang&quot; explanations from the &quot;Geofeed Link&quot; section. Further, clarified the cardinality of
Geofeed link objects.</li>
<li>Updated extensibility verbiage in the &quot;Media Type for a Geofeed Link&quot; section.</li>
<li>In the &quot;Example&quot; section, updated the domain in &quot;href&quot; of the Geofeed link object to contrast with the domain in
&quot;value&quot; to highlight that &quot;href&quot; is for a geofeed file hosted at a network operator site whereas &quot;value&quot; is for an IP
network object from an RDAP server.</li>
<li>Removed the &quot;Redaction&quot; section since the geofeed files are public to start with.</li>
<li>Added URLs for various IANA registries.</li>
</ul>
</section>

<section anchor="changes-from-03-to-04"><name>Changes from 03 to 04</name>

<ul spacing="compact">
<li>Updated the criteria for including the extension identifier in &quot;rdapConformance&quot;.</li>
</ul>
</section>
</section>

</middle>

<back>
<references><name>References</name>
<references><name>Normative References</name>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4180.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6838.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7111.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8805.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9083.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9092.xml"/>
</references>
<references><name>Informative References</name>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-opsawg-9092-update.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.shafranovich-rfc4180-bis.xml"/>
</references>
</references>

</back>

</rfc>
