Internet-Draft | rdap-geofeed | March 2024 |
Singh & Harrison | Expires 5 September 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 September 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.ymbk-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, with the following REQUIRED JSON members:¶
Per the definition of a web link ([RFC8288]), a Geofeed link object may have additional JSON members. Specifically:¶
There MAY be zero or more Geofeed link objects in the "links" array of an IP Network object. In other words, the Geofeed link objects are OPTIONAL.¶
[I-D.ymbk-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 6.3), and a new suffix "+csv" will be registered in the IANA Structured Syntax Suffixes Registry (see Section 6.4).¶
The "type" JSON value in a Geofeed link object SHOULD be set to the "application/geofeed+csv" media type.¶
If alternative geofeed formats (beside CSV) are defined in the future, they could be included in future versions of this specification.¶
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.net/geofeed", "type": "application/geofeed+csv" }, ... ], ... }¶
Since the Geofeed link objects in the "links" array of an IP Network object are optional, the Redaction by Removal method [I-D.ietf-regext-rdap-redacted] MUST be used when redacting them. The following is an elided example of an IP Network object with redacted Geofeed link objects:¶
{ "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" }, ... ], "redacted": [ { "name": { "description": "Geofeed links" }, "prePath": "$.links[?(@.rel=='geo')]", "method": "removal" } ], ... }¶
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.ymbk-opsawg-9092-update] to not accidentally expose the location of an individual.¶
[I-D.ymbk-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:¶
IANA is requested to register the following value in the Link Relations Registry:¶
Fragment Identifier Considerations:¶
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".¶
Security Considerations: Same as "text/csv".¶
Contact: IETF iesg@ietf.org¶
Gavin Brown suggested using a web link instead of a simple URI string to specify a geofeed file URL.¶