<?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-07" submissionType="IETF" category="std" xml:lang="en" xmlns:xi="http://www.w3.org/2001/XInclude" indexInclude="true" consensus="true">

<front>
<title abbrev="rdap-geofeed">An RDAP Extension for Geofeed Data</title><seriesInfo value="draft-ietf-regext-rdap-geofeed-07" 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 Registration Data Access Protocol (RDAP)
extension, &quot;geofeed1&quot;, for indicating that an RDAP server hosts
geofeed URLs for its IP network objects. It also defines a new media
type and link relation type for the associated link objects included
in responses.</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 (commonly known as
'geofeed') file format and associated access mechanisms. This document
specifies how geofeed URLs can be accessed through RDAP. It defines a
new RDAP extension, &quot;geofeed1&quot;, for indicating that an RDAP server
hosts geofeed URLs for its IP network objects, as well as a media type
and a link relation type for the associated link objects.</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="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
<xref target="RFC3629"></xref> comma-separated values (CSV) file, with a series of &quot;#&quot;
comments at the end for the optional Resource Public Key
Infrastructure (RPKI, <xref target="RFC6480"></xref>) signature. At first glance, the
&quot;text/csv&quot; media type (<xref target="I-D.shafranovich-rfc4180-bis" sectionFormat="of" relative="#" section="4"></xref>)
seems like a good candidate for a geofeed file, since it supports the
&quot;#&quot; comments needed for including the RPKI signature.</t>
<t>However, although the CSV geofeed data could be viewed directly by a
user such that the &quot;text/csv&quot; media type was appropriate, 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 &quot;application&quot; media type with a
&quot;geofeed&quot; subtype (<xref target="RFC6838" sectionFormat="of" relative="#" section="4.2.5"></xref>) for the geofeed data is
preferable to using &quot;text/csv&quot;.</t>
<t>To that end, this document registers a new &quot;application/geofeed+csv&quot;
media type in the IANA Media Types Registry (see
<xref target="media_types_registry"></xref>), and a new &quot;+csv&quot; suffix in the IANA
Structured Syntax Suffixes Registry (see
<xref target="structured_syntax_suffixes_registry"></xref>).</t>
</section>

<section anchor="geofeed_link"><name>Geofeed Link</name>
<t>An RDAP server that hosts geofeed URLs for its IP network objects
(<xref target="RFC9083" sectionFormat="of" relative="#" section="5.4"></xref>) may include link objects for those geofeed
URLs in IP network objects in its responses. These link objects are
added to the &quot;links&quot; member of each object (<xref target="RFC9083" sectionFormat="of" relative="#" section="4.2"></xref>).</t>
<t>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. The geofeed-specific components of a link
object are like so:</t>

<ul spacing="compact">
<li>&quot;rel&quot; -- The link relation type is set to &quot;geo&quot;. This is a new link
relation type for geographical data, registered
in the IANA Link Relations Registry (see <xref target="link_relations_registry"></xref>)
by this document.</li>
<li>&quot;href&quot; -- The target URL is set to the HTTPS URL of the geofeed
file for an IP network.</li>
<li>&quot;type&quot; -- &quot;application/geofeed+csv&quot; (see <xref target="media_type_for_a_geofeed_link"></xref>).</li>
</ul>
<t>An IP network object returned by an RDAP server may contain zero, one,
or multiple geofeed link objects. An example scenario where more than
one geofeed link object would be returned is where the server is able
to represent that data in multiple languages (see the &quot;hreflang&quot;
member of the link object).</t>
</section>

<section anchor="extension-identifier"><name>Extension Identifier</name>
<t>This document defines a new extension identifier, &quot;geofeed1&quot;, for use
by servers that host geofeed URLs for their IP network objects and
include geofeed URL link objects in their responses to clients in
accordance with <xref target="geofeed_link"></xref>. A server that uses this extension
identifier MUST include it 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>{
    &quot;rdapConformance&quot;: [ &quot;rdap_level_0&quot;, &quot;geofeed1&quot;, ... ],
    ...
}
</artwork>
<t>An RDAP server may make use of the &quot;application/geofeed+csv&quot; media
type and the &quot;geo&quot; link relation defined in this specification in
its responses without including the &quot;geofeed1&quot; extension
identifier in those responses, because RDAP servers are free to
use any registered media type or link relation in a standard
response (without implementing any particular extension). The
additional value of the extension identifier here is that it
signals to the client that the server hosts geofeed URLs for its
IP network objects. This is useful where a client receives an IP
network object without a geofeed link object, because in that case
the client can infer that no geofeed data is available for that
object, since the server would have provided it if it were
available.</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>{
    &quot;objectClassName&quot;: &quot;ip network&quot;,
    &quot;handle&quot;: &quot;XXXX-RIR&quot;,
    &quot;startAddress&quot;: &quot;2001:db8::&quot;,
    &quot;endAddress&quot;: &quot;2001:db8:0:ffff:ffff:ffff:ffff:ffff&quot;,
    &quot;ipVersion&quot;: &quot;v6&quot;,
    &quot;name&quot;: &quot;NET-RTR-1&quot;,
    &quot;type&quot;: &quot;DIRECT ALLOCATION&quot;,
    &quot;country&quot;: &quot;AU&quot;,
    &quot;parentHandle&quot;: &quot;YYYY-RIR&quot;,
    &quot;status&quot;: [ &quot;active&quot; ],
    &quot;links&quot;:
     [
        {
            &quot;value&quot;: &quot;https://example.net/ip/2001:db8::/48&quot;,
            &quot;rel&quot;: &quot;self&quot;,
            &quot;href&quot;: &quot;https://example.net/ip/2001:db8::/48&quot;,
            &quot;type&quot;: &quot;application/rdap+json&quot;
        },
        {
            &quot;value&quot;: &quot;https://example.net/ip/2001:db8::/48&quot;,
            &quot;rel&quot;: &quot;geo&quot;,
            &quot;href&quot;: &quot;https://example.com/geofeed&quot;,
            &quot;type&quot;: &quot;application/geofeed+csv&quot;
        },
        ...
    ],
    ...
}
</artwork>
</section>
</section>

<section anchor="operational-considerations"><name>Operational Considerations</name>
<t>When an RDAP server is queried for an IP network for a given address
range, it is required to return the most-specific IP network object
that covers the address range. That IP network object may not have an
associated geofeed link, but it is possible that a less-specific IP
network object does have such a link. Clients attempting to retrieve
geofeed data for a given address range via RDAP should consider
whether to retrieve the parent object for the initial response (and so
on, recursively) in the event that the initial response does not
contain geofeed data. Conversely, server operators should consider
interface options for resource holders in order to support the
provisioning of geofeed links for all networks covered by the
associated data.</t>
<t>It is common for a resource holder to maintain a single geofeed file
containing the geofeed data for all of their resources. The resource
holder then updates each of their network object registrations to
refer to that single geofeed file. As with geofeed references in
inetnum objects (per <xref target="RFC9092"></xref>), clients who find a geofeed link
object within an IP network object MUST ignore geofeed data from that
link that is outside the IP network object's address range.</t>
<t><xref target="RFC8805" sectionFormat="of" relative="#" section="3.2"></xref> recommends that consumers of geofeed data
verify that the publisher of the data is authoritative for the
relevant resources. The RDAP bootstrap process (<xref target="RFC9224"></xref>) helps
clients with this recommendation, since a client following that
process will be directed to the RDAP server that is able to make
authoritative statements about the disposition of the relevant
resources.</t>
</section>

<section anchor="privacy-considerations"><name>Privacy Considerations</name>
<t>When including a geofeed file URL in an IP network object, it is
expected that the service provider publishing the geofeed file has
followed the guidance from <xref target="I-D.ietf-opsawg-9092-update" sectionFormat="of" relative="#" section="7"></xref>
to not accidentally expose the location of an individual.</t>
<t>Many jurisdictions have laws or regulations that restrict the use of
&quot;personal data&quot;, per the definition in <xref target="RFC6973"></xref>. Given that,
registry operators should ascertain whether the regulatory environment
in which they operate permits implementation of the functionality
defined in this document.</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. The geofeed file may also contain an RPKI signature. 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" relative="#" 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 URL string to specify a geofeed file URL. Andy Newton, James Gould, Scott
Hollenbeck, and Mario Loffredo also provided valuable feedback for this document.</t>
</section>

<section anchor="change-history"><name>Change History</name>
<t>(Remove this section before publication.)</t>

<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 URL 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 anchor="changes-from-04-to-05"><name>Changes from 04 to 05</name>

<ul spacing="compact">
<li>Made various editorial changes.</li>
</ul>
</section>

<section anchor="changes-from-05-to-06"><name>Changes from 05 to 06</name>

<ul spacing="compact">
<li>The extension identifier inclusion is now a must.</li>
<li>Added the &quot;Operational Considerations&quot; section to clarify the geofeed file and IP networks relationship, as well as
how RDAP Bootstrap helps with a recommendation from RFC 8805.</li>
<li>Updated the &quot;Privacy Considerations&quot; section to clarify the service provider responsibility.</li>
</ul>
</section>

<section anchor="changes-from-06-to-07"><name>Changes from 06 to 07</name>

<ul spacing="compact">
<li>Updated the extension identifier text so as to clarify that the media type and link relation can be used independently of that identifier.</li>
</ul>
</section>
</section>

</middle>

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

</back>

</rfc>
