Internet-Draft | rdap-geofeed | April 2024 |
Singh & Harrison | Expires 5 October 2024 | [Page] |
This document defines a new RDAP extension "geofeed1" for including a geofeed file URL in an IP Network object.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 5 October 2024.¶
Copyright (c) 2024 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
[RFC8805] and [I-D.ietf-opsawg-9092-update] (obsoletes [RFC9092]) 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 "geofeed1" for including a geofeed file URL in an IP Network object.¶
The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
Indentation and whitespace in examples are provided only to illustrate element relationships, and are not a REQUIRED feature of this protocol.¶
"..." in examples is used as shorthand for elements defined outside of this document.¶
A new RDAP extension "geofeed1" is defined for accessing the geofeed data through RDAP. It updates the IP Network object class definition (Section 5.4 of [RFC9083]) to include a new link object for the geofeed file URL in its "links" array (Section 4.2 of [RFC9083]).¶
An RDAP server conforming to this specification MUST include the "geofeed1" extension string in the "rdapConformance" array for the IP Network lookup and search responses, as well as in the help response. Here is an elided example for this inclusion:¶
{ "rdapConformance": [ "rdap_level_0", "geofeed1", ... ], ... }¶
The IP Network object class (Section 5.4 of [RFC9083]) MAY include a link object for the geofeed file URL (also referred to as a Geofeed link object) in its "links" array (Section 4.2 of [RFC9083]). In RDAP, the "value", "rel", and "href" JSON members are REQUIRED for any link object. Additionally, for a Geofeed link object, the "type" JSON member is RECOMMENDED. Pertinent details of a Geofeed link object:¶
There MAY be zero or more Geofeed link objects in the "links" 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.¶
[I-D.ietf-opsawg-9092-update] requires a geofeed file to be a UTF-8 CSV file, with a series of "#" comments at the end for the optional RPKI (Resource Public Key Infrastructure) signature. At first glance, the "text/csv" media type (Section 4 of [I-D.shafranovich-rfc4180-bis]) seems like a good candidate to represent a geofeed file since it now supports the "#" comments needed for including the RPKI signature.¶
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 "application" top-level type (Section 4.2.5 of [RFC6838]) for the geofeed data is preferable over the existing "text/csv" media type.¶
To that end, a new media type "application/geofeed+csv" will be registered in the IANA Media Types Registry (see Section 5.3), and a new suffix "+csv" will be registered in the IANA Structured Syntax Suffixes Registry (see Section 5.4).¶
The "type" JSON value in a Geofeed link object SHOULD be set to the "application/geofeed+csv" media type.¶
A server that includes the "geofeed1" 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.¶
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 "geofeed1" extension identifier.¶
The following is an elided example of an IP Network object with a Geofeed link object:¶
{ "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" }, ... ], ... }¶
When including a geofeed file URL in an IP Network object, an RDAP server operator SHOULD follow the guidance from Section 7 of [I-D.ietf-opsawg-9092-update] to not accidentally expose the location of an individual.¶
[I-D.ietf-opsawg-9092-update] 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.¶
IANA is requested to register the following value in the RDAP Extensions Registry at https://www.iana.org/assignments/rdap-extensions/:¶
IANA is requested to register the following value in the Link Relations Registry at https://www.iana.org/assignments/link-relations/:¶
IANA is requested to register the following value in the Media Types Registry at https://www.iana.org/assignments/media-types/:¶
IANA is requested to register the following value in the Structured Syntax Suffixes Registry at https://www.iana.org/assignments/media-type-structured-suffix/:¶
The syntax and semantics of fragment identifiers specified for +csv SHOULD be as specified for "text/csv".¶
The syntax and semantics for fragment identifiers for a specific "xxx/yyy+csv" SHOULD be processed as follows:¶
For cases defined in +csv, where the fragment identifier resolves per the +csv rules, then as specified in +csv.¶
For cases defined in +csv, where the fragment identifier does not resolve per the +csv rules, then as specified in "xxx/yyy+csv".¶
For cases not defined in +csv, then as specified in "xxx/yyy+csv".¶
Mark Kosters provided initial support and encouragement for this work, along with the [RFC9092] 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.¶