rfc9224xml2.original.xml | rfc9224.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="US-ASCII"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | <!DOCTYPE rfc [ | |||
<!ENTITY nbsp " "> | ||||
<!ENTITY zwsp "​"> | ||||
<!ENTITY nbhy "‑"> | ||||
<!ENTITY wj "⁠"> | ||||
]> | ]> | |||
<rfc category="std" ipr="trust200902" docName="draft-ietf-regext-rfc7484bis-06" | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft | |||
obsoletes="7484"> | -ietf-regext-rfc7484bis-06" number="9224" obsoletes="7484" updates="" submission | |||
Type="IETF" category="std" consensus="true" xml:lang="en" tocInclude="true" symR | ||||
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> | efs="true" sortRefs="true" version="3"> | |||
<?rfc rfcedstyle="yes" ?> | ||||
<?rfc toc="yes" ?> | ||||
<?rfc symrefs="yes" ?> | ||||
<?rfc sortrefs="yes"?> | ||||
<?rfc compact="yes" ?> | ||||
<?rfc subcompact="no" ?> | ||||
<front> | <front> | |||
<title abbrev="Finding Authoritative RDAP Service">Finding the Authoritative Reg | <title abbrev="Finding Authoritative RDAP Service">Finding the Authoritative | |||
istration Data (RDAP) Service</title> | Registration Data Access Protocol (RDAP) Service</title> | |||
<author initials="M." surname="Blanchet" fullname="Marc Blanchet"> | <seriesInfo name="RFC" value="9224"/> | |||
<organization>Viagenie</organization> | <seriesInfo name="STD" value="95"/> | |||
<address> | <author initials="M." surname="Blanchet" fullname="Marc Blanchet"> | |||
<postal> | <organization>Viagenie</organization> | |||
<street>246 Aberdeen</street> | <address> | |||
<city>Quebec</city> | <postal> | |||
<region>QC</region> | <street>246 Aberdeen</street> | |||
<code>G1R 2E1</code> | <city>Quebec</city> | |||
<country>Canada</country> | <region>QC</region> | |||
</postal> | <code>G1R 2E1</code> | |||
<email>Marc.Blanchet@viagenie.ca</email> | <country>Canada</country> | |||
<uri>https://viagenie.ca</uri> | </postal> | |||
</address> | <email>Marc.Blanchet@viagenie.ca</email> | |||
</author> | <uri>https://viagenie.ca</uri> | |||
</address> | ||||
</author> | ||||
<date year="2022" month="March" /> | ||||
<area>art</area> | ||||
<workgroup>regext</workgroup> | ||||
<keyword>whois</keyword> | ||||
<keyword>bootstrap</keyword> | ||||
<keyword>domain</keyword> | ||||
<keyword>IDN</keyword> | ||||
<keyword>DNS</keyword> | ||||
<keyword>AS</keyword> | ||||
<keyword>IPv4</keyword> | ||||
<keyword>IPv6</keyword> | ||||
<keyword>JSON</keyword> | ||||
<abstract> | ||||
<t>This document specifies a method to find which Registration Data Access | ||||
Protocol (RDAP) server is authoritative to answer queries for a requested scope | ||||
, such as domain names, IP addresses, or Autonomous System numbers. This documen | ||||
t obsoletes RFC 7484.</t> | ||||
</abstract> | ||||
</front> | ||||
<middle> | ||||
<section numbered="true" toc="default"> | ||||
<name>Introduction</name> | ||||
<t>Querying and retrieving registration data from registries are defined | ||||
in the Registration Data Access Protocol (RDAP) <xref target="RFC7480" | ||||
format="default"/> <xref target="RFC7481" format="default"/> <xref | ||||
target="RFC9082" format="default"/> <xref target="RFC9083" | ||||
format="default"/>. These documents do not specify where to send the | ||||
queries. This document specifies a method to find which server is | ||||
authoritative to answer queries for the requested scope.</t> | ||||
<t>Top-Level Domains (TLDs), Autonomous System (AS) numbers, and network | ||||
blocks are delegated by IANA to Internet registries such as TLD | ||||
registries and Regional Internet Registries (RIRs) that then issue | ||||
further delegations and maintain information about them. Thus, the | ||||
bootstrap information needed by RDAP clients is best generated from data | ||||
and processes already maintained by IANA; the relevant registries | ||||
already exist at <xref target="ipv4reg" format="default"/>, <xref | ||||
target="ipv6reg" format="default"/>, <xref target="asreg" | ||||
format="default"/>, and <xref target="domainreg" | ||||
format="default"/>. This document obsoletes <xref target="RFC7484" | ||||
format="default"/>. | ||||
</t> | ||||
<t>Per this document, IANA has created new registries based on a JSON | ||||
format specified in this document, herein named RDAP Bootstrap Service | ||||
Registries. These new registries are based on the existing entries of | ||||
the above-mentioned registries. An RDAP client fetches the RDAP | ||||
Bootstrap Service Registries, extracts the data, and then performs a | ||||
match with the query data to find the authoritative registration data | ||||
server and appropriate query base URL. | ||||
</t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Conventions Used in This Document</name> | ||||
<date/> | <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> | ||||
<keyword>whois</keyword> | </section> | |||
<keyword>bootstrap</keyword> | <section anchor="struct" numbered="true" toc="default"> | |||
<keyword>domain</keyword> | <name>Structure of the RDAP Bootstrap Service Registries</name> | |||
<keyword>IDN</keyword> | <t>The RDAP Bootstrap Service Registries, as specified in <xref target="ia | |||
<keyword>DNS</keyword> | naconsiderations" format="default"/> below, have been made available as JSON <xr | |||
<keyword>AS</keyword> | ef target="RFC8259" format="default"/> objects, which can be retrieved via HTTP | |||
<keyword>IPv4</keyword> | from locations specified by IANA. The JSON object for each registry contains a s | |||
<keyword>IPv6</keyword> | eries of members containing metadata about the registry such as a version identi | |||
<keyword>JSON</keyword> | fier, a timestamp of the publication date of the registry, and a description. Ad | |||
ditionally, a "services" member contains the registry items themselves, as an ar | ||||
ray. Each item of the array contains a second-level array, with two elements, ea | ||||
ch of them being a third-level array. | ||||
</t> | ||||
<abstract> | <t>Each element of the Services Array is a second-level array with two ele | |||
<t>This document specifies a method to find which Registration Data Access Proto | ments: in order, an Entry Array and a Service URL Array.</t> | |||
col (RDAP) server is authoritative to answer queries for a requested scope, such | <t>The Entry Array contains all entries that have the same set of base RDA | |||
as domain names, IP addresses, or Autonomous System numbers. This document obso | P URLs. The Service URL Array contains the list of base RDAP URLs usable for th | |||
letes RFC7484.</t> | e entries found in the Entry Array. Elements within these two arrays are not ord | |||
</abstract> | ered in any way.</t> | |||
</front> | <t>An example structure of the JSON output of an RDAP Bootstrap Service Re | |||
<middle> | gistry is illustrated: | |||
<section title="Introduction"> | ||||
<t>Querying and retrieving registration data from registries are defined in Regi | ||||
stration Data Access Protocol (RDAP) <xref target="RFC7480"/> <xref target="RFC7 | ||||
481"/> <xref target="RFC9082"/> <xref target="RFC9083"/>. These documents do not | ||||
specify where to send the queries. This document specifies a method to find whi | ||||
ch server is authoritative to answer queries for the requested scope.</t> | ||||
<t>Top-Level Domains (TLDs), Autonomous System (AS) numbers, and network | ||||
blocks are delegated by IANA to Internet registries such as TLD registries and | ||||
Regional Internet Registries (RIRs) that then issue further delegations and | ||||
maintain information about them. Thus, the bootstrap information needed by | ||||
RDAP clients is best generated from data and processes already maintained by | ||||
IANA; the relevant registries already exist at <xref target="ipv4reg"/>, <xref t | ||||
arget="ipv6reg"/>, <xref target="asreg"/>, and <xref target="domainreg"/>. This | ||||
document obsoletes <xref target="RFC7484"/>. | ||||
</t> | ||||
<t>Per this document, IANA has created new registries based on a JSON format spe | ||||
cified in this document, herein named RDAP Bootstrap Service Registries. These n | ||||
ew registries are based on the existing entries of the above-mentioned registrie | ||||
s. An RDAP client fetches the RDAP Bootstrap Service Registries, extracts the da | ||||
ta, and then performs a match with the query data to find the authoritative regi | ||||
stration data server and appropriate query base URL. | ||||
</t> | ||||
</section> | ||||
<section title="Conventions Used in This Document"> | ||||
<t> The key words "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 <xref target="RFC2119"/> <xref target="RFC8174"/> when, | ||||
and only when, they | ||||
appear in all capitals, as shown here. | ||||
</t> | ||||
</section> | ||||
<section anchor="struct" title="Structure of the RDAP Bootstrap Service Regist | ||||
ries"> | ||||
<t>The RDAP Bootstrap Service Registries, as specified in <xref | ||||
target="ianaconsiderations"/> below, have been made available as JSON <xref | ||||
target="RFC8259"/> objects, which can be retrieved via HTTP from locations speci | ||||
fied by IANA. The JSON object for each registry contains a series of members con | ||||
taining metadata about the registry such as a version identifier, a timestamp of | ||||
the publication date of the registry, and a description. Additionally, a "servi | ||||
ces" member contains the registry items themselves, as an array. Each item of th | ||||
e array contains a second-level array, with two elements, each of them being a t | ||||
hird-level array. | ||||
</t> | </t> | |||
<t>Each element of the Services Array is a second-level array with two elements: | <sourcecode type="json"><![CDATA[ | |||
in order, an Entry Array and a Service URL Array.</t> | ||||
<t>The Entry Array contains all entries that have the same set of base RDAP URLs | ||||
. The Service URL Array contains the list of base RDAP URLs usable for the entr | ||||
ies found in the Entry Array. Elements within these two arrays are not ordered i | ||||
n any way.</t> | ||||
<t>An example structure of the JSON output of a RDAP Bootstrap Service Registry | ||||
is illustrated: | ||||
<figure> | ||||
<artwork> | ||||
{ | { | |||
"version": "1.0", | "version": "1.0", | |||
"publication": "YYYY-MM-DDTHH:MM:SSZ", | "publication": "YYYY-MM-DDTHH:MM:SSZ", | |||
"description": "Some text", | "description": "Some text", | |||
"services": [ | "services": [ | |||
[ | [ | |||
["entry1", "entry2", "entry3"], | ["entry1", "entry2", "entry3"], | |||
[ | [ | |||
"https://registry.example.com/myrdap/", | "https://registry.example.com/myrdap/", | |||
"http://registry.example.com/myrdap/" | "http://registry.example.com/myrdap/" | |||
] | ] | |||
], | ], | |||
[ | [ | |||
["entry4"], | ["entry4"], | |||
[ | [ | |||
"https://example.org/" | "https://example.org/" | |||
] | ] | |||
] | ] | |||
] | ] | |||
} | } | |||
</artwork> | ]]></sourcecode> | |||
</figure> | <t>The formal syntax is described in <xref target="abnf" format="default"/ | |||
>.</t> | ||||
<t>The "version" corresponds to the format version of the registry. This s | ||||
pecification defines version "1.0".</t> | ||||
<t>The syntax of the "publication" value conforms to the Internet date/tim | ||||
e format <xref target="RFC3339" format="default"/>. The value is the latest upda | ||||
te date of the registry by IANA.</t> | ||||
<t>The optional "description" string can contain a comment regarding the c | ||||
ontent of the bootstrap object. </t> | ||||
<t>Per <xref target="RFC7258" format="default"/>, in each array of base RD | ||||
AP URLs, the secure versions of the transport protocol <bcp14>SHOULD</bcp14> be | ||||
preferred and tried first. For example, if the base RDAP URLs array contains bot | ||||
h HTTPS and HTTP URLs, the bootstrap client <bcp14>SHOULD</bcp14> try the HTTPS | ||||
version first.</t> | ||||
<t>Base RDAP URLs <bcp14>MUST</bcp14> have a trailing "/" character | ||||
because they are concatenated to the various segments defined in <xref | ||||
target="RFC9082" format="default"/>.</t> | ||||
<t>JSON names <bcp14>MUST</bcp14> follow the format recommendations of | ||||
<xref target="RFC7480" sectionFormat="of" section="6" | ||||
format="default"/>. Any unrecognized JSON object properties or values | ||||
<bcp14>MUST</bcp14> be ignored by implementations.</t> | ||||
<t>Internationalized Domain Name labels used as entries or base RDAP URLs | ||||
in the registries defined in this document <bcp14>MUST</bcp14> be only represent | ||||
ed using their A-label form as defined in <xref target="RFC5890" format="default | ||||
"/>.</t> | ||||
<t>All Domain Name labels used as entries or base RDAP URLs in the registr | ||||
ies defined in this document <bcp14>MUST</bcp14> be only represented in lowercas | ||||
e.</t> | ||||
</section> | ||||
<section anchor="domainrdapreg" numbered="true" toc="default"> | ||||
<name>Bootstrap Service Registry for Domain Name Space</name> | ||||
<t>The JSON output of this registry contains domain label entries attached | ||||
to the root, grouped by base RDAP URLs, as shown in this example. | ||||
</t> | </t> | |||
<t>The formal syntax is described in <xref target="abnf"/>.</t> | <sourcecode type="json"><![CDATA[ | |||
<t>The "version" corresponds to the format version of the registry. This specifi | ||||
cation defines version "1.0".</t> | ||||
<t>The syntax of the "publication" value conforms to the Internet date/time form | ||||
at <xref target="RFC3339"/>. The value is the latest update date of the registry | ||||
by IANA.</t> | ||||
<t>The optional "description" string can contain a comment regarding the content | ||||
of the bootstrap object. </t> | ||||
<t>Per <xref target="RFC7258"/>, in each array of base RDAP URLs, the secure ver | ||||
sions of the transport protocol SHOULD be preferred and tried first. For example | ||||
, if the base RDAP URLs array contains both HTTPS and HTTP URLs, the bootstrap c | ||||
lient SHOULD try the HTTPS version first.</t> | ||||
<t>Base RDAP URLs MUST have a trailing "/" character because they are concatenat | ||||
ed to the various segments defined in <xref target="RFC9082"/>.</t> | ||||
<t>JSON names MUST follow the format recommendations of section 6 of <xref targe | ||||
t="RFC7480"/>. Any unrecognized JSON object properties or values MUST be | ||||
ignored by implementations.</t> | ||||
<t>Internationalized Domain Name labels used as entries or base RDAP URLs in the | ||||
registries defined in this document MUST be only represented using their A-labe | ||||
l form as defined in <xref target="RFC5890"/>.</t> | ||||
<t>All Domain Name labels used as entries or base RDAP URLs in the registries de | ||||
fined in this document MUST be only represented in lowercase.</t> | ||||
</section> | ||||
<section anchor="domainrdapreg" | ||||
title="Bootstrap Service Registry for Domain Name Space"> | ||||
<t>The JSON output of this registry contains domain label entries attached t | ||||
o the root, grouped by base RDAP URLs, as shown in this example. | ||||
<figure> | ||||
<artwork> | ||||
{ | { | |||
"version": "1.0", | "version": "1.0", | |||
"publication": "2024-01-07T10:11:12Z", | "publication": "2024-01-07T10:11:12Z", | |||
"description": "Some text", | "description": "Some text", | |||
"services": [ | "services": [ | |||
[ | [ | |||
["net", "com"], | ["net", "com"], | |||
[ | [ | |||
"https://registry.example.com/myrdap/" | "https://registry.example.com/myrdap/" | |||
] | ] | |||
skipping to change at line 147 ¶ | skipping to change at line 169 ¶ | |||
], | ], | |||
[ | [ | |||
["xn--zckzah"], | ["xn--zckzah"], | |||
[ | [ | |||
"https://example.net/rdap/xn--zckzah/", | "https://example.net/rdap/xn--zckzah/", | |||
"http://example.net/rdap/xn--zckzah/" | "http://example.net/rdap/xn--zckzah/" | |||
] | ] | |||
] | ] | |||
] | ] | |||
} | } | |||
</artwork> | ]]></sourcecode> | |||
</figure> | <t>The domain name's authoritative registration data service is found by | |||
</t> | ||||
<t>The domain name's authoritative registration data service is found by | ||||
doing the label-wise longest match of the target domain name with the | doing the label-wise longest match of the target domain name with the | |||
domain values in the Entry Arrays in the IANA Bootstrap Service Registry for | domain values in the Entry Arrays in the IANA "Bootstrap Service Registry fo | |||
Domain Name Space. The match is done per label, from right to left. If the l | r | |||
ongest match results in multiple entries, then those entries are considered equi | Domain Name Space". The match is done per label, from right to left. If the | |||
valent. The values contained in the Service URL Array of the matching second-lev | longest match results in multiple entries, then those entries are considered equ | |||
el array are the valid base RDAP URLs as described in <xref target="RFC9082"/>.< | ivalent. The values contained in the Service URL Array of the matching second-le | |||
/t> | vel array are the valid base RDAP URLs as described in <xref target="RFC9082" fo | |||
<t>For example, a domain RDAP query for a.b.example.com matches the com entr | rmat="default"/>.</t> | |||
y in one of the arrays of the registry. The base RDAP URL for this query is then | <t>For example, a domain RDAP query for a.b.example.com matches the com en | |||
taken from the second element of the array, which is an array of base RDAP URLs | try in one of the arrays of the registry. The base RDAP URL for this query is th | |||
valid for this entry. The client chooses one of the base URLs from this array; | en taken from the second element of the array, which is an array of base RDAP UR | |||
in this example, it chooses the only one available, "https://registry.example.co | Ls valid for this entry. The client chooses one of the base URLs from this array | |||
m/myrdap/". The segment specified in <xref target="RFC9082"/> is then appended t | ; in this example, it chooses the only one available, "https://registry.example. | |||
o the base URL to complete the query. The complete query is then "https://regist | com/myrdap/". The segment specified in <xref target="RFC9082" format="default"/> | |||
ry.example.com/myrdap/domain/a.b.example.com". </t> | is then appended to the base URL to complete the query. The complete query is t | |||
<t>If a domain RDAP query for a.b.example.com matches both com and example.com | hen "https://registry.example.com/myrdap/domain/a.b.example.com". </t> | |||
entries in the registry, then the longest match applies and the example.com entr | <t>If a domain RDAP query for a.b.example.com matches both com and example | |||
y is used by the client.</t> | .com entries in the registry, then the longest match applies and the example.com | |||
<t>If the registry contains entries such as com and goodexample.com, then a dom | entry is used by the client.</t> | |||
ain RDAP query for example.com only matches the com entry because matching is do | <t>If the registry contains entries such as com and goodexample.com, then | |||
ne on a per-label basis.</t> | a domain RDAP query for example.com only matches the com entry because matching | |||
is done on a per-label basis.</t> | ||||
<t>The entry for the root of the domain name space is specified as "".</t> | ||||
</section> | ||||
<t>The entry for the root of the domain name space is specified as "".</t> | <section anchor="iprdapreg" numbered="true" toc="default"> | |||
</section> | <name>Bootstrap Service Registries for Internet Numbers</name> | |||
<section anchor="iprdapreg" | <t>This section discusses IPv4 and IPv6 address space and Autonomous Syste | |||
title="Bootstrap Service Registries for Internet Numbers"> | m numbers.</t> | |||
<t>This section discusses IPv4 and IPv6 address space and Autonomous System | <t>For IP address space, the authoritative registration data service is fo | |||
numbers.</t> | und | |||
<t>For IP address space, the authoritative registration data service is found | ||||
by doing a longest match of the target address with the values of the arrays | by doing a longest match of the target address with the values of the arrays | |||
in the corresponding RDAP Bootstrap Service Registry for Address | in the corresponding RDAP Bootstrap Service Registry for Address | |||
Space. The longest match is done the same way as in packet forwarding: the addre | Space. The longest match is done the same way as in packet forwarding: the addre | |||
sses are converted in binary form and then the binary strings are compared to fi | sses are converted in binary form and then the binary strings are compared to fi | |||
nd the longest match up to the specified prefix length. The values contained in | nd the longest match up to the specified prefix length. The values contained in | |||
the second element of the array are the base RDAP URLs as described in <xref tar | the second element of the array are the base RDAP URLs as described in <xref tar | |||
get="RFC9082"/>. The longest match method enables covering prefixes of a larger | get="RFC9082" format="default"/>. The longest match method enables covering pref | |||
address space pointing to one base RDAP URL while more specific prefixes within | ixes of a larger address space pointing to one base RDAP URL while more specific | |||
the covering prefix are being served by another base RDAP URL.</t> | prefixes within the covering prefix are being served by another base RDAP URL.< | |||
<section title="Bootstrap Service Registry for IPv4 Address Space"> | /t> | |||
<t>The JSON output of this registry contains IPv4 prefix entries, specified | <section numbered="true" toc="default"> | |||
in Classless Inter-domain Routing (CIDR) format <xref target="RFC4632"/> and gro | <name>Bootstrap Service Registry for IPv4 Address Space</name> | |||
uped by RDAP URLs, as shown in this example. | <t>The JSON output of this registry contains IPv4 prefix entries, specif | |||
<figure> | ied in Classless Inter-domain Routing (CIDR) format <xref target="RFC4632" forma | |||
<artwork> | t="default"/> and grouped by RDAP URLs, as shown in this example. | |||
</t> | ||||
<sourcecode type="json"><![CDATA[ | ||||
{ | { | |||
"version": "1.0", | "version": "1.0", | |||
"publication": "2024-01-07T10:11:12Z", | "publication": "2024-01-07T10:11:12Z", | |||
"description": "RDAP Bootstrap file for example registries.", | "description": "RDAP Bootstrap file for example registries.", | |||
"services": [ | "services": [ | |||
[ | [ | |||
["198.51.100.0/24", "192.0.0.0/8"], | ["198.51.100.0/24", "192.0.0.0/8"], | |||
[ | [ | |||
"https://rir1.example.com/myrdap/" | "https://rir1.example.com/myrdap/" | |||
] | ] | |||
skipping to change at line 197 ¶ | skipping to change at line 218 ¶ | |||
], | ], | |||
[ | [ | |||
["203.0.113.0/28"], | ["203.0.113.0/28"], | |||
[ | [ | |||
"https://example.net/rdaprir2/", | "https://example.net/rdaprir2/", | |||
"http://example.net/rdaprir2/" | "http://example.net/rdaprir2/" | |||
] | ] | |||
] | ] | |||
] | ] | |||
} | } | |||
</artwork> | ]]></sourcecode> | |||
</figure> | <t>For example, a query for "192.0.2.1/25" matches the "192.0.0.0/8" ent | |||
ry and the "192.0.2.0/24" entry in the example registry above. The latter is cho | ||||
sen by the client because it is the longest match. The base RDAP URL for this qu | ||||
ery is then taken from the second element of the array, which is an array of bas | ||||
e RDAP URLs valid for this entry. The client chooses one of the base URLs from t | ||||
his array; in this example, it chooses the only one available, "https://example. | ||||
org/". The {resource} specified in <xref target="RFC9082" format="default"/> is | ||||
then appended to the base URL to complete the query. The complete query is then | ||||
"https://example.org/ip/192.0.2.1/25".</t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Bootstrap Service Registry for IPv6 Address Space</name> | ||||
<t>The JSON output of this registry contains IPv6 prefix entries, | ||||
using <xref target="RFC5952" format="default"/> text representation of | ||||
the address prefixes format, grouped by base RDAP URLs, as shown in | ||||
this example. | ||||
</t> | </t> | |||
<t>For example, a query for "192.0.2.1/25" matches the "192.0.0.0/8" entry and t | <sourcecode type="json"><![CDATA[ | |||
he "192.0.2.0/24" entry in the example registry above. The latter is chosen by t | ||||
he client because it is the longest match. The base RDAP URL for this query is t | ||||
hen taken from the second element of the array, which is an array of base RDAP U | ||||
RLs valid for this entry. The client chooses one of the base URLs from this arra | ||||
y; in this example, it chooses the only one available, "https://example.org/". T | ||||
he {resource} specified in <xref target="RFC9082"/> is then appended to the base | ||||
URL to complete the query. The complete query is then "https://example.org/ip/1 | ||||
92.0.2.1/25".</t> | ||||
</section> | ||||
<section title="Bootstrap Service Registry for IPv6 Address Space"> | ||||
<t>The JSON output of this registry contains IPv6 prefix entries, using <xre | ||||
f target="RFC5952"/> text representation of the address prefixes format, grouped | ||||
by base RDAP URLs, as shown in this example. | ||||
<figure> | ||||
<artwork> | ||||
{ | { | |||
"version": "1.0", | "version": "1.0", | |||
"publication": "2024-01-07T10:11:12Z", | "publication": "2024-01-07T10:11:12Z", | |||
"description": "RDAP Bootstrap file for example registries.", | "description": "RDAP Bootstrap file for example registries.", | |||
"services": [ | "services": [ | |||
[ | [ | |||
["2001:db8::/34"], | ["2001:db8::/34"], | |||
[ | [ | |||
"https://rir2.example.com/myrdap/" | "https://rir2.example.com/myrdap/" | |||
] | ] | |||
skipping to change at line 232 ¶ | skipping to change at line 255 ¶ | |||
], | ], | |||
[ | [ | |||
["2001:db8:1000::/36"], | ["2001:db8:1000::/36"], | |||
[ | [ | |||
"https://example.net/rdaprir2/", | "https://example.net/rdaprir2/", | |||
"http://example.net/rdaprir2/" | "http://example.net/rdaprir2/" | |||
] | ] | |||
] | ] | |||
] | ] | |||
} | } | |||
</artwork> | ]]></sourcecode> | |||
</figure> | <t>For example, a query for "2001:db8:1000::/48" matches the | |||
</t> | "2001:db8::/34" entry and the "2001:db8:1000::/36" entry in the | |||
<t>For example, a query for "2001:db8:1000::/48" matches the "2001:db8::/34" ent | example registry above. The latter is chosen by the client because it | |||
ry and the "2001:db8:1000::/36" entry in the example registry above. The latter | is the longest match. The base RDAP URL for this query is then taken | |||
is chosen by the client because it is the longest match. The base RDAP URL for t | from the second element of the array, which is an array of base RDAP | |||
his query is then taken from the second element of the array, which is an array | URLs valid for this entry. The client chooses one of the base URLs | |||
of base RDAP URLs valid for this entry. The client chooses one of the base URLs | from this array; in this example, it chooses | |||
from this array; in this example, it chooses "https://example.net/rdaprir2/" bec | "https://example.net/rdaprir2/" because it's the secure version of the | |||
ause it's the secure version of the protocol. The segment specified in <xref tar | protocol. The segment specified in <xref target="RFC9082" | |||
get="RFC9082"/> is then appended to the base URL to complete the query. The comp | format="default"/> is then appended to the base URL to complete the | |||
lete query is, therefore, "https://example.net/rdaprir2/ip/2001:db8:1000::/48". | query. The complete query is therefore | |||
If the target RDAP server does not answer, the client can then use another URL p | "https://example.net/rdaprir2/ip/2001:db8:1000::/48". If the target | |||
refix from the array.</t> | RDAP server does not answer, the client can then use another URL | |||
</section> | prefix from the array.</t> | |||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Bootstrap Service Registry for AS Number Space</name> | ||||
<section title="Bootstrap Service Registry for AS Number Space"> | <t>The JSON output of this registry contains entries for AS number | |||
<t>The JSON output of this registry contains Autonomous Systems number range | ranges, grouped by base RDAP URLs, as shown in this example. The Entry | |||
s entries, grouped by base RDAP URLs, as shown in this example. The Entry Array | Array is an array containing the list of AS number ranges served by | |||
is an array containing the list of AS number ranges served by the base RDAP URLs | the base RDAP URLs found in the second element. Each element of the | |||
found in the second element. Each element of the array contains two AS numbers | array contains two AS numbers represented in decimal format, separated | |||
represented in decimal format, separated by a hyphen, that represents the range | by a hyphen, that represents the range of AS numbers between the two | |||
of AS numbers between the two AS numbers (inclusive), where values are in increa | AS numbers (inclusive), where values are in increasing order (e.g., | |||
sing order (e.g. 100-200, not 200-100). A single AS number is represented as a r | 100-200, not 200-100). A single AS number is represented as a range of | |||
ange of two identical AS numbers. AS numbers are represented as 'asplain' as def | two identical AS numbers. AS numbers are represented as 'asplain' as | |||
ined in <xref target="RFC5396"/>. Ranges MUST NOT overlap. | defined in <xref target="RFC5396" format="default"/>. Ranges | |||
<figure> | <bcp14>MUST NOT</bcp14> overlap. | |||
<artwork> | </t> | |||
<sourcecode type="json"><![CDATA[ | ||||
{ | { | |||
"version": "1.0", | "version": "1.0", | |||
"publication": "2024-01-07T10:11:12Z", | "publication": "2024-01-07T10:11:12Z", | |||
"description": "RDAP Bootstrap file for example registries.", | "description": "RDAP Bootstrap file for example registries.", | |||
"services": [ | "services": [ | |||
[ | [ | |||
["64496-64496"], | ["64496-64496"], | |||
[ | [ | |||
"https://rir3.example.com/myrdap/" | "https://rir3.example.com/myrdap/" | |||
] | ] | |||
skipping to change at line 268 ¶ | skipping to change at line 313 ¶ | |||
], | ], | |||
[ | [ | |||
["64512-65534"], | ["64512-65534"], | |||
[ | [ | |||
"http://example.net/rdaprir2/", | "http://example.net/rdaprir2/", | |||
"https://example.net/rdaprir2/" | "https://example.net/rdaprir2/" | |||
] | ] | |||
] | ] | |||
] | ] | |||
} | } | |||
</artwork> | ]]></sourcecode> | |||
</figure> | <t>For example, a query for AS 65411 matches the 64512-65534 entry in th | |||
</t> | e example registry above. The base RDAP URL for this query is then taken from th | |||
<t>For example, a query for AS 65411 matches the 64512-65534 entry in the ex | e second element of the array, which is an array of base RDAP URLs valid for thi | |||
ample registry above. The base RDAP URL for this query is then taken from the se | s entry. The client chooses one of the base URLs from this array; in this exampl | |||
cond element of the array, which is an array of base RDAP URLs valid for this en | e, it chooses "https://example.net/rdaprir2/". The segment specified in <xref ta | |||
try. The client chooses one of the base URLs from this array; in this example, i | rget="RFC9082" format="default"/> is then appended to the base URL to complete t | |||
t chooses "https://example.net/rdaprir2/". The segment specified in <xref target | he query. The complete query is, therefore, "https://example.net/rdaprir2/autnum | |||
="RFC9082"/> is then appended to the base URL to complete the query. The complet | /65411". If the server does not answer, the client can then use another URL pref | |||
e query is, therefore, "https://example.net/rdaprir2/autnum/65411". If the serve | ix from the array.</t> | |||
r does not answer, the client can then use another URL prefix from the array.</t | </section> | |||
> | ||||
</section> | </section> | |||
</section> | <section numbered="true" toc="default"> | |||
<section title="Entity"> | <name>Entity</name> | |||
<t>Entities (such as contacts, registrants, or registrars) can be queried by | ||||
handle as described in <xref target="RFC9082"/>. Since there is no global namesp | ||||
ace for entities, this document does not describe how to find the authoritative | ||||
RDAP server for entities. However, it is possible that, if the entity identifier | ||||
was received from a previous query, the same RDAP server could be queried for t | ||||
hat entity, or the entity identifier itself is a fully qualified URL that can be | ||||
queried. The mechanism described in <xref target="RFC8521"/> MAY also be used.< | ||||
/t> | ||||
</section> | ||||
<section title="Non-existent Entries or RDAP URL Values"> | ||||
<t>The registries may not contain the requested value. In these cases, there | ||||
is no known RDAP server for that requested value, and the client SHOULD provide | ||||
an appropriate error message to the user.</t> | ||||
</section> | ||||
<section anchor="deploy" title="Deployment and Implementation Considerations"> | ||||
<t>This method relies on the fact that RDAP clients are fetching the IANA reg | ||||
istries to then find the servers locally. Clients SHOULD NOT fetch the registry | ||||
on every RDAP request. Clients SHOULD cache the registry, but use underlying pro | ||||
tocol signaling, such as the HTTP Expires header field <xref target="RFC7234"/>, | ||||
to identify when it is time to refresh the cached registry.</t> | ||||
<t>Some authorities of registration data may work together on sharing their i | ||||
nformation for a common service, including mutual redirection <xref target="REDI | ||||
RECT-RDAP"/>.</t> | ||||
<t>When a new object is allocated, such as a new AS range, a new TLD, or a new | ||||
IP address range, there is no guarantee that this new object will have an entry | ||||
in the corresponding bootstrap RDAP registry, since the setup of the RDAP serve | ||||
r for this new entry may become live and registered later. Therefore, the client | ||||
s should expect that even if an object, such as TLD, IP address range, or AS ran | ||||
ge is allocated, the existence of the entry in the corresponding bootstrap regis | ||||
try is not guaranteed.</t> | ||||
</section> | ||||
<section title="Limitations"> | ||||
<t>This method does not provide a direct way to find authoritative RDAP serv | ||||
ers for any other objects than the ones described in this document. In particula | ||||
r, the following objects are not bootstrapped with the method described in this | ||||
document: | ||||
<list style="symbols"> | ||||
<t>entities</t> | ||||
<t>queries using search patterns that do not contain a terminating strin | ||||
g that matches some entries in the registries</t> | ||||
<t>nameservers</t> | ||||
<t>help</t> | ||||
</list> | ||||
</t> | ||||
</section> | ||||
<section anchor="abnf" title="Formal Definition"> | ||||
<t>This section is the formal definition of the registries. The structure of JSO | ||||
N objects and arrays using a set of primitive elements is defined in <xref targe | ||||
t="RFC8259"/>. Those elements are used to describe the JSON structure of the reg | ||||
istries.</t> | ||||
<section title="Imported JSON Terms"> | <t>Entities (such as contacts, registrants, or registrars) can be queried | |||
by handle as described in <xref target="RFC9082" format="default"/>. Since there | ||||
is no global name space for entities, this document does not describe how to fi | ||||
nd the authoritative RDAP server for entities. However, it is possible that, if | ||||
the entity identifier was received from a previous query, the same RDAP server c | ||||
ould be queried for that entity, or the entity identifier itself is a fully qual | ||||
ified URL that can be queried. The mechanism described in <xref target="RFC8521" | ||||
format="default"/> <bcp14>MAY</bcp14> also be used.</t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Non-existent Entries or RDAP URL Values</name> | ||||
<t>The registries may not contain the requested value. In these cases, the | ||||
re is no known RDAP server for that requested value, and the client <bcp14>SHOUL | ||||
D</bcp14> provide an appropriate error message to the user.</t> | ||||
</section> | ||||
<t> | <section anchor="deploy" numbered="true" toc="default"> | |||
<list style="symbols"> | <name>Deployment and Implementation Considerations</name> | |||
<t>OBJECT: a JSON object, defined in Section 4 of <xref target="RFC8259"/></t> | <t>This method relies on the fact that RDAP clients are fetching the | |||
<t>MEMBER: a member of a JSON object, defined in Section 4 of <xref target="RF | IANA registries to then find the servers locally. Clients <bcp14>SHOULD | |||
C8259"/></t> | NOT</bcp14> fetch the registry on every RDAP request. Clients | |||
<t>MEMBER-NAME: the name of a MEMBER, defined as a "string" in | <bcp14>SHOULD</bcp14> cache the registry, but use underlying protocol | |||
Section 4 of <xref target="RFC8259"/></t> | signaling, such as the HTTP Expires header field <xref target="RFC7234" | |||
<t>MEMBER-VALUE: the value of a MEMBER, defined as a "value" in | format="default"/>, to identify when it is time to refresh the cached | |||
Section 4 of <xref target="RFC8259"/></t> | registry.</t> | |||
<t>ARRAY: an array, defined in Section 5 of <xref target="RFC8259"/></t> | <t>Some authorities of registration data may work together on sharing thei | |||
<t>ARRAY-VALUE: an element of an ARRAY, defined in Section 5 of | r information for a common service, including mutual redirection <xref target="I | |||
<xref target="RFC8259"/></t> | -D.ietf-weirds-redirects" format="default"/>.</t> | |||
<t>STRING: a "string", as defined in Section 7 of <xref target="RFC8259"/></t> | <t>When a new object is allocated, such as a new AS range, a new TLD, or a | |||
</list> | new IP address range, there is no guarantee that this new object will have an e | |||
</t> | ntry in the corresponding bootstrap RDAP registry, since the setup of the RDAP s | |||
</section> | erver for this new entry may become live and registered later. Therefore, the cl | |||
<section title="Registry Syntax"> | ients should expect that even if an object, such as TLD, IP address range, or AS | |||
<t>Using the above terms for the JSON structures, the syntax of a | range is allocated, the existence of the entry in the corresponding bootstrap r | |||
registry is defined as follows: | egistry is not guaranteed.</t> | |||
<list style="symbols"> | </section> | |||
<t>rdap-bootstrap-registry: an OBJECT containing a MEMBER version and | <section numbered="true" toc="default"> | |||
a MEMBER publication, an optional MEMBER description, and a MEMBER services- | <name>Limitations</name> | |||
list</t> | <t>This method does not provide a direct way to find authoritative RDAP se | |||
<t>version: a MEMBER with MEMBER-NAME "version" and | rvers for any other objects than the ones described in this document. In particu | |||
MEMBER-VALUE a STRING</t> | lar, the following objects are not bootstrapped with the method described in thi | |||
<t>publication: a MEMBER with MEMBER-NAME "publication" and | s document: | |||
MEMBER-VALUE a STRING</t> | </t> | |||
<t>description: a MEMBER with MEMBER-NAME "description" and | <ul spacing="normal"> | |||
MEMBER-VALUE a STRING</t> | <li>entities</li> | |||
<t>services-list: a MEMBER with MEMBER-NAME "services" and MEMBER-VALUE a servi | <li>queries using search patterns that do not contain a terminating stri | |||
ces-array</t> | ng that matches some entries in the registries</li> | |||
<t>services-array: an ARRAY, where each ARRAY-VALUE is a service</t> | <li>nameservers</li> | |||
<t>service: an ARRAY of 2 elements, where the first ARRAY-VALUE is an entry-lis | <li>help</li> | |||
t and the second ARRAY-VALUE is a service-uri-list</t> | </ul> | |||
<t>entry-list: an ARRAY, where each ARRAY-VALUE is an entry</t> | </section> | |||
<t>entry: a STRING</t> | <section anchor="abnf" numbered="true" toc="default"> | |||
<t>service-uri-list: an ARRAY, where each ARRAY-VALUE is a service-uri</t> | <name>Formal Definition</name> | |||
<t>service-uri: a STRING</t> | <t>This section is the formal definition of the registries. The structure | |||
</list> | of JSON objects and arrays using a set of primitive elements is defined in <xref | |||
</t> | target="RFC8259" format="default"/>. Those elements are used to describe the JS | |||
</section> | ON structure of the registries.</t> | |||
</section> | <section numbered="true" toc="default"> | |||
<section title="Security Considerations"> | <name>Imported JSON Terms</name> | |||
<t>By providing a bootstrap method to find RDAP servers, this document | ||||
helps to ensure that the end users will get the RDAP data from an | ||||
authoritative source, instead of from rogue sources. The method has the | ||||
same security properties as the RDAP protocols themselves. | ||||
The transport used to access the registries uses TLS <xref target="RFC8446"/> | <dl> | |||
. | ||||
</t> | ||||
<t>Additional considerations on using RDAP are described in <xref target="RFC748 | <dt>OBJECT: | |||
1"/>.</t> | </dt> | |||
</section> | <dd>a JSON object, defined in <xref target="RFC8259" | |||
<section title="Implementation Status"> | sectionFormat="of" section="4" format="default"/> | |||
<t> NOTE: Please remove this section and the reference to RFC 7942 prior to publ | </dd> | |||
ication as an RFC.</t> | ||||
<t>This section records the status of known implementations of the protocol defi | <dt>MEMBER: | |||
ned by this specification at the time of posting of this Internet-Draft, and is | </dt> | |||
based on a proposal described in <xref target="RFC7942"/>. The description of im | <dd>a member of a JSON object, defined in <xref | |||
plementations in this section is intended to assist the IETF in its decision pro | target="RFC8259" format="default" sectionFormat="of" section="4" | |||
cesses in progressing drafts to RFCs. Please note that the listing of any indiv | /> | |||
idual implementation here does not imply endorsement by the IETF. Furthermore, | </dd> | |||
no effort has been spent to verify the information presented here that was suppl | ||||
ied by IETF contributors. This is not intended as, and must not be construed to | ||||
be, a catalog of available implementations or their features. Readers are advi | ||||
sed to note that other implementations may exist.</t> | ||||
<t>According to <xref target="RFC7942"/>, "this will allow reviewers and working | <dt>MEMBER-NAME: | |||
groups to assign due consideration to documents that have the benefit of runnin | </dt> | |||
g code, which may serve as evidence of valuable experimentation and feedback tha | <dd>the name of a MEMBER, defined as a "string" in | |||
t have made the implemented protocols more mature. It is up to the individual w | <xref target="RFC8259" sectionFormat="of" section="4" format="default"/> | |||
orking groups to use this information as they see fit". </t> | </dd> | |||
<section title="RDAP Browser Mobile Application"> | ||||
<t> | ||||
<list> | ||||
<t>Responsible Organization: Viagenie</t> | ||||
<t>Author: Marc Blanchet</t> | ||||
<t>Location: https://viagenie.ca/rdapbrowser/</t> | ||||
<t>Description: RDAP Browser is an RDAP client for domain names, IP addresse | ||||
s and AS numbers fetching the IANA registries described in this document to find | ||||
the right authoritative RDAP server. End user can query any domain name, IP add | ||||
ress or AS number and the registration data will be shown on the screen.</t> | ||||
<t>Level of Maturity: Production (i.e. in the Android and iOS App stores sin | ||||
ce August 2019)</t> | ||||
<t>Contact Information: rdapbrowser@viagenie.ca</t> | ||||
<t>Information last updated: March 2021</t> | ||||
</list> | ||||
</t> | ||||
</section> | ||||
<section title="ICANN Lookup Web Application"> | ||||
<t> | ||||
<list> | ||||
<t>Responsible Organization: ICANN </t> | ||||
<t>Location: https://lookup.icann.org</t> | ||||
<t>Description: ICANN's Domain Name Registration Data Lookup is an RDAP clie | ||||
nt for domain names fetching the IANA regis tries described in this document to | ||||
find the right authoritative RDAP server. End user can query any domain name and | ||||
the registration data will be shown on the screen.</t> | ||||
<t>Level of Maturity: Production</t> | ||||
<t>Information last updated: March 2021</t> | ||||
</list> | ||||
</t> | ||||
</section> | ||||
<section title="ARIN Implementation"> | ||||
<t> | ||||
<list> | ||||
<t>Responsible Organization: ARIN</t> | ||||
<t>Base URL: https://rdap-bootstrap.arin.net/bootstrap ( Sample quer | ||||
y: https://rdap-bootstrap.arin.net/bootstrap/autnum/1 )</t> | ||||
<t>Description: ARIN RDAP Bootstrap server aids clients by reading t | ||||
he bootstrapping information published by IANA and using it to send HTTP redirec | ||||
ts to RDAP queries. RDAP clients https://search.arin.net/ and NicInfo ( https:// | ||||
github.com/arineng/nicinfo ) use this bootstrap service. The underlying server s | ||||
oftware is open-sourced at https://github.com/arineng/rdap_bootstrap_server .</t | ||||
> | ||||
<t>Level of Maturity: Production</t> | ||||
<t>Contact Information: info@arin.net</t> | ||||
<t>Information Last Updated: Nov 2020</t> | ||||
</list> | ||||
</t> | ||||
</section> | ||||
</section> | ||||
<section anchor="ianaconsiderations" title="IANA Considerations"> | ||||
<t>IANA has created the RDAP Bootstrap Services Registries, listed below, | ||||
and made them available as JSON objects. The contents of these registries are | ||||
described in <xref target="struct"/>, <xref target="domainrdapreg"/>, and <xref | ||||
target="iprdapreg"/>, with the formal syntax specified in <xref target="abnf"/>. | ||||
The registries MUST be accessible only through HTTPS (TLS <xref target="RFC8446 | ||||
"/>) transport.</t> | ||||
<t>The process for adding or updating entries in these registries differs from t | <dt>MEMBER-VALUE: | |||
he normal IANA registry processes: these registries are generated from the data, | </dt> | |||
processes, and policies maintained by IANA in their allocation registries (<xre | <dd>the value of a MEMBER, defined as a "value" in | |||
f target="ipv4reg"/>, <xref target="ipv6reg"/>, <xref target="asreg"/>, and <xre | <xref target="RFC8259" sectionFormat="of" section="4" format="default" | |||
f target="domainreg"/>), with the addition of new RDAP server information.</t> | /> | |||
</dd> | ||||
<t>IANA updates RDAP Bootstrap Services Registries entries from the allocation r | <dt>ARRAY: | |||
egistries as those registries are updated.</t> | </dt> | |||
<dd>an array, defined in <xref target="RFC8259" | ||||
format="default" sectionFormat="of" section="5"/> | ||||
</dd> | ||||
<t>This document does not change any policies related to the allocation | <dt>ARRAY-VALUE: | |||
registries; IANA has provided a mechanism for collecting the RDAP server informa | </dt> | |||
tion.</t> | <dd>an element of an ARRAY, defined in <xref | |||
target="RFC8259" sectionFormat="of" section="5" | ||||
format="default"/> | ||||
</dd> | ||||
<t>IANA has created a new top-level category on the Protocol Registries page, | <dt>STRING: | |||
<https://www.iana.org/protocols>. The group is called "Registration Data | </dt> | |||
Access Protocol (RDAP)". | <dd>a "string", as defined in <xref target="RFC8259" | |||
format="default" sectionFormat="of" section="7"/> | ||||
</dd> | ||||
</dl> | ||||
Each of the RDAP Bootstrap Services Registries has | </section> | |||
been made available for general public on-demand download in the JSON format, | <section numbered="true" toc="default"> | |||
and that registry's URI is listed directly on the Protocol Registries page. | <name>Registry Syntax</name> | |||
<t>Using the above terms for the JSON structures, the syntax of a | ||||
registry is defined as follows: | ||||
</t> | </t> | |||
<t>Other normal registries will be added to this group by other | ||||
documents, but the reason the URIs for these registries are | ||||
clearly listed on the main page is to make those URIs obvious to | ||||
implementers -- these are registries that will be accessed by | ||||
software, as well as by humans using them for reference information.</t> | ||||
<t>Because these registries will be accessed by software, the download demand | <dl> | |||
for the RDAP Bootstrap Services Registries may be unusually high compared to | <dt>rdap-bootstrap-registry: | |||
normal IANA registries. The technical infrastructure by which registries are | </dt> | |||
published has been put in place by IANA to support the load. Since the publicati | <dd>an OBJECT containing a MEMBER version and a MEMBER publication, an optiona | |||
on of <xref target="RFC7484"/>, no issue have been reported regarding the load | l MEMBER description, and a MEMBER services-list | |||
or the service. </t> | </dd> | |||
<t>As discussed in <xref target="deploy"/>, software that accesses these registr | <dt>version: | |||
ies will depend on the HTTP Expires header field to limit their query rate. It i | </dt> | |||
s, therefore, important for that header field to be properly set to provide time | <dd>a MEMBER with MEMBER-NAME "version" and MEMBER-VALUE a STRING | |||
ly information as the registries change, while maintaining a reasonable load on | </dd> | |||
the IANA servers.</t> | ||||
<t>The HTTP Content-Type returned to clients accessing these JSON-formatted regi | <dt>publication: | |||
stries MUST be "application/json", as defined in <xref target="RFC8259"/>.</t> | </dt> | |||
<dd>a MEMBER with MEMBER-NAME "publication" and MEMBER-VALUE a STRING | ||||
</dd> | ||||
<t>Because of how information in the RDAP Bootstrap Services Registries is group | <dt>description: | |||
ed and formatted, the registry entries may not be sortable. It is, therefore, n | </dt> | |||
ot required or expected that the entries be ordered in any way.</t> | <dd>a MEMBER with MEMBER-NAME "description" and MEMBER-VALUE a STRING | |||
</dd> | ||||
<t>NOTE TO IANA: Please update the registries to reference this new RFC instead | <dt>services-list: | |||
of RFC 7484 once this document is approved by the IESG and published by the RFC | </dt> | |||
Editor". RFC-Editor, please remove this paragraph before publication</t> | <dd>a MEMBER with MEMBER-NAME "services" and MEMBER-VALUE a services-array | |||
</dd> | ||||
<dt>services-array: | ||||
</dt> | ||||
<dd>an ARRAY, where each ARRAY-VALUE is a service | ||||
</dd> | ||||
<dt>service: | ||||
</dt> | ||||
<dd>an ARRAY of 2 elements, where the first ARRAY-VALUE is an entry-list and t | ||||
he second ARRAY-VALUE is a service-uri-list | ||||
</dd> | ||||
<dt>entry-list: | ||||
</dt> | ||||
<dd>an ARRAY, where each ARRAY-VALUE is an entry | ||||
</dd> | ||||
<dt>entry: | ||||
</dt> | ||||
<dd>a STRING | ||||
</dd> | ||||
<dt>service-uri-list: | ||||
</dt> | ||||
<dd>an ARRAY, where each ARRAY-VALUE is a service-uri | ||||
</dd> | ||||
<dt>service-uri: | ||||
</dt> | ||||
<dd>a STRING | ||||
</dd> | ||||
</dl> | ||||
<section title="Bootstrap Service Registry for IPv4 Address Space"> | ||||
<t>Entries in this registry contain at least the following: | ||||
<list style="symbols"> | ||||
<t>a CIDR <xref target="RFC4632"/> specification of the network block being re | ||||
gistered.</t> | ||||
<t>one or more URLs that provide the RDAP service regarding this registration. | ||||
</t> | ||||
</list> | ||||
</t> | ||||
</section> | ||||
<section title="Bootstrap Service Registry for IPv6 Address Space"> | ||||
<t>Entries in this registry contain at least the following: | ||||
<list style="symbols"> | ||||
<t>an IPv6 prefix <xref target="RFC5952"/> specification of the network block | ||||
being registered.</t> | ||||
<t>one or more URLs that provide the RDAP service regarding this registration. | ||||
</t> | ||||
</list> | ||||
</t> | ||||
</section> | ||||
<section title="Bootstrap Service Registry for AS Number Space"> | ||||
<t>Entries in this registry contain at least the following: | ||||
<list style="symbols"> | ||||
<t>a range of Autonomous System numbers being registered.</t> | ||||
<t>one or more URLs that provide the RDAP service regarding this registration. | ||||
</t> | ||||
</list> | ||||
</t> | ||||
</section> | </section> | |||
<section title="Bootstrap Service Registry for Domain Name Space"> | </section> | |||
<t>Entries in this registry contain at least the following: | <section numbered="true" toc="default"> | |||
<list style="symbols"> | <name>Security Considerations</name> | |||
<t>a domain name attached to the root being registered.</t> | <t>By providing a bootstrap method to find RDAP servers, this document | |||
<t>one or more URLs that provide the RDAP service regarding this registration. | helps to ensure that the end users will get the RDAP data from an | |||
</t> | authoritative source instead of from rogue sources. The method has the | |||
</list> | same security properties as the RDAP protocols themselves. | |||
The transport used to access the registries uses TLS <xref target="RFC8446" f | ||||
ormat="default"/>. | ||||
</t> | ||||
<t>Additional considerations on using RDAP are described in <xref target=" | ||||
RFC7481" format="default"/>.</t> | ||||
</section> | ||||
<section anchor="ianaconsiderations" numbered="true" toc="default"> | ||||
<name>IANA Considerations</name> | ||||
<t>IANA has created the RDAP Bootstrap Services Registries listed below | ||||
and made them available as JSON objects. The contents of these registries are | ||||
described in Sections <xref target="struct" format="counter"/>, <xref target="do | ||||
mainrdapreg" format="counter"/>, and <xref target="iprdapreg" format="counter"/> | ||||
, with the formal syntax specified in <xref target="abnf" format="default"/>. Th | ||||
e registries <bcp14>MUST</bcp14> be accessible only through HTTPS (TLS <xref tar | ||||
get="RFC8446" format="default"/>) transport.</t> | ||||
<t>The process for adding or updating entries in these registries differs | ||||
from the normal IANA registry processes: these registries are generated from the | ||||
data, processes, and policies maintained by IANA in their allocation registries | ||||
(<xref target="ipv4reg" format="default"/>, <xref target="ipv6reg" format="defa | ||||
ult"/>, <xref target="asreg" format="default"/>, and <xref target="domainreg" fo | ||||
rmat="default"/>), with the addition of new RDAP server information.</t> | ||||
<t>IANA updates RDAP Bootstrap Services Registries entries from the | ||||
allocation registries as those registries are updated.</t> | ||||
<t>This document does not change any policies related to the allocation | ||||
registries; IANA has provided a mechanism for collecting the RDAP server informa | ||||
tion.</t> | ||||
<t>IANA has created a new top-level category on the Protocol Registries page: | ||||
<eref target="https://www.iana.org/protocols" brackets="angle"/>. The group | ||||
is | ||||
called "Registration Data Access Protocol (RDAP)". | ||||
Each of the RDAP Bootstrap Services Registries has been made available for | ||||
on-demand download in the JSON format by the general public, and that registry's | ||||
URI | ||||
is listed directly on the Protocol Registries page. | ||||
</t> | </t> | |||
</section> | <t>Other normal registries will be added to this group by other | |||
</section> | documents, but the reason the URIs for these registries are clearly | |||
listed on the main page is to make those URIs obvious to implementers -- | ||||
these are registries that will be accessed by software, as well as by | ||||
humans using them for reference information.</t> | ||||
<t>Because these registries will be accessed by software, the download dem | ||||
and | ||||
for the RDAP Bootstrap Services Registries may be unusually high compared to | ||||
normal IANA registries. The technical infrastructure by which registries are | ||||
published has been put in place by IANA to support the load. Since the publicati | ||||
on of <xref target="RFC7484" format="default"/>, no issues have been reported r | ||||
egarding the load or the service. </t> | ||||
<t>As discussed in <xref target="deploy" format="default"/>, software that | ||||
accesses these registries will depend on the HTTP Expires header field to limit | ||||
their query rate. It is, therefore, important for that header field to be prope | ||||
rly set to provide timely information as the registries change, while maintainin | ||||
g a reasonable load on the IANA servers.</t> | ||||
<t>The HTTP Content-Type returned to clients accessing these JSON-formatte | ||||
d registries <bcp14>MUST</bcp14> be "application/json", as defined in <xref targ | ||||
et="RFC8259" format="default"/>.</t> | ||||
<t>Because of how information in the RDAP Bootstrap Services Registries is | ||||
grouped and formatted, the registry entries may not be sortable. It is, theref | ||||
ore, not required or expected that the entries be ordered in any way.</t> | ||||
</middle> | <section numbered="true" toc="default"> | |||
<back> | <name>Bootstrap Service Registry for IPv4 Address Space</name> | |||
<references title="Normative References"> | <t>Entries in this registry contain at least the following: | |||
<?rfc include="reference.RFC.2119"?> | </t> | |||
<?rfc include="reference.RFC.3339"?> | <ul spacing="normal"> | |||
<?rfc include="reference.RFC.4632"?> | <li>a CIDR <xref target="RFC4632" format="default"/> specification of | |||
<?rfc include="reference.RFC.5396"?> | the network block being registered</li> | |||
<?rfc include="reference.RFC.5890"?> | <li>one or more URLs that provide the RDAP service regarding this regi | |||
<?rfc include="reference.RFC.5952"?> | stration</li> | |||
<?rfc include="reference.RFC.7258"?> | </ul> | |||
<?rfc include="reference.RFC.7480"?> | </section> | |||
<?rfc include="reference.RFC.8174"?> | <section numbered="true" toc="default"> | |||
<?rfc include="reference.RFC.8259"?> | <name>Bootstrap Service Registry for IPv6 Address Space</name> | |||
</references> | <t>Entries in this registry contain at least the following: | |||
</t> | ||||
<ul spacing="normal"> | ||||
<li>an IPv6 prefix <xref target="RFC5952" format="default"/> specifica | ||||
tion of the network block being registered</li> | ||||
<li>one or more URLs that provide the RDAP service regarding this regi | ||||
stration | ||||
</li> | ||||
</ul> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Bootstrap Service Registry for AS Number Space</name> | ||||
<t>Entries in this registry contain at least the following: | ||||
</t> | ||||
<ul spacing="normal"> | ||||
<li>a range of Autonomous System numbers being registered</li> | ||||
<li>one or more URLs that provide the RDAP service regarding this | ||||
registration | ||||
</li> | ||||
</ul> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Bootstrap Service Registry for Domain Name Space</name> | ||||
<t>Entries in this registry contain at least the following: | ||||
</t> | ||||
<ul spacing="normal"> | ||||
<li>a domain name attached to the root being registered</li> | ||||
<li>one or more URLs that provide the RDAP service regarding this regi | ||||
stration | ||||
</li> | ||||
</ul> | ||||
</section> | ||||
</section> | ||||
<references title="Informative References"> | </middle> | |||
<?rfc include="reference.RFC.7071"?> | <back> | |||
<?rfc include="reference.RFC.7234"?> | ||||
<?rfc include="reference.RFC.7481"?> | ||||
<?rfc include="reference.RFC.7484"?> | ||||
<?rfc include="reference.RFC.7942"?> | ||||
<?rfc include="reference.RFC.8446"?> | ||||
<?rfc include="reference.RFC.8521"?> | ||||
<?rfc include="reference.RFC.9082"?> | ||||
<?rfc include="reference.RFC.9083"?> | ||||
<!--I-D.ietf-weirds-redirects, Expired - not in queue--> | <displayreference target="I-D.ietf-weirds-redirects" to="REDIRECT-RDAP"/> | |||
<reference anchor='REDIRECT-RDAP'> | ||||
<references> | ||||
<name>References</name> | ||||
<references> | ||||
<name>Normative References</name> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.2119.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.3339.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.4632.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5396.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5890.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5952.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7258.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7480.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8174.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8259.xml"/> | ||||
</references> | ||||
<references> | ||||
<name>Informative References</name> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7071.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7234.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7481.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.7484.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8446.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8521.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.9082.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.9083.xml"/> | ||||
<reference anchor="I-D.ietf-weirds-redirects"> | ||||
<front> | <front> | |||
<title>Redirection Service for Registration Data Access Protocol</title> | <title>Redirection Service for Registration Data Access Protocol</title> | |||
<author initials='C' surname='Martinez' fullname='Carlos Martinez'> | <author initials='C.M.' surname='Martinez' fullname='Carlos M. Martinez' role='e | |||
<organization /> | ditor'/> | |||
</author> | ||||
<author initials='L' surname='Zhou' fullname='Linlin Zhou'> | <author initials='L.' surname='Zhou' fullname='Linlin Zhou' role='editor' /> | |||
<organization /> | ||||
</author> | <author initials='G.' surname='Rada' fullname='Gerardo Rada' /> | |||
<author initials='G' surname='Rada' fullname='Gerardo Rada'> | <date month='July' year='2014'/> | |||
<organization /> | ||||
</author> | ||||
<date month='July' year='2014' /> | ||||
</front> | </front> | |||
<seriesInfo name='Work in Progress,' value='draft-ietf-weirds-redirects-04' /> | <seriesInfo name="Internet-Draft" value="draft-ietf-weirds-redirects-04"/> | |||
</reference> | </reference> | |||
<reference anchor="ipv4reg" target="https://www.iana.org/assignments/ipv4-ad | ||||
dress-space"> | ||||
<front><title>IPv4 Address Space Registry</title> | ||||
<author> | ||||
<organization>IANA</organization></author> | ||||
<date/> | ||||
</front> | ||||
</reference> | ||||
<reference anchor="ipv6reg" target="https://www.iana.org/assignments/ipv6-un | <reference anchor="ipv4reg" target="https://www.iana.org/assignments/ipv | |||
icast-address-assignments"> | 4-address-space"> | |||
<front><title>IPv6 Global Unicast Address Assignments</title> | <front> | |||
<author> | <title>IANA IPv4 Address Space Registry</title> | |||
<organization>IANA</organization></author> | <author> | |||
<date/></front> | <organization>IANA</organization> | |||
</reference> | </author> | |||
<date/> | ||||
</front> | ||||
</reference> | ||||
<reference anchor="asreg" target="https://www.iana.org/assignments/as-number | <reference anchor="ipv6reg" target="https://www.iana.org/assignments/ipv | |||
s"> | 6-unicast-address-assignments"> | |||
<front><title>Autonomous System (AS) Numbers</title> | <front> | |||
<author> | <title>IPv6 Global Unicast Address Assignments</title> | |||
<organization>IANA</organization></author> | <author> | |||
<date/> | <organization>IANA</organization> | |||
</front> | </author> | |||
</reference> | <date/> | |||
</front> | ||||
</reference> | ||||
<reference anchor="domainreg" target="https://www.iana.org/domains/root/db"> | <reference anchor="asreg" target="https://www.iana.org/assignments/as-nu | |||
<front><title>Root Zone Database</title> | mbers"> | |||
<author> | <front> | |||
<organization>IANA</organization></author> | <title>Autonomous System (AS) Numbers</title> | |||
<date/></front> | <author> | |||
</reference> | <organization>IANA</organization> | |||
</references> | </author> | |||
<date/> | ||||
</front> | ||||
</reference> | ||||
<section title="Acknowledgements" numbered="no"> | <reference anchor="domainreg" target="https://www.iana.org/domains/root/ | |||
<t>The WEIRDS working group had multiple discussions on this topic, | db"> | |||
including a session during IETF 84, where various methods such as | <front> | |||
in&nbhy;DNS and others were debated. | <title>Root Zone Database</title> | |||
<author> | ||||
<organization>IANA</organization> | ||||
</author> | ||||
<date/> | ||||
</front> | ||||
</reference> | ||||
</references> | ||||
</references> | ||||
<section numbered="true" toc="default"> | ||||
<name>Changes since RFC 7484</name> | ||||
<t>There are no substantive changes except for minor clarifications. | ||||
This update is primarily to meet the requirements for moving to an Interne | ||||
t | ||||
Standard.</t> | ||||
</section> | ||||
<section numbered="false" toc="default"> | ||||
<name>Acknowledgements</name> | ||||
<t>The WEIRDS Working Group had multiple discussions on this topic, including | ||||
a session during IETF 84, where various methods such as in-DNS and others were | ||||
debated. | ||||
The idea of using IANA registries was discovered by the author during | ||||
discussions with his colleagues as well as by a comment from <contact | ||||
fullname="Andy Newton"/>. All the people involved in these discussions are | ||||
herein acknowledged. <contact fullname="Linlin Zhou"/>, <contact | ||||
fullname="Jean-Philippe Dionne"/>, <contact fullname="John Levine"/>, <contact | ||||
fullname="Kim Davies"/>, <contact fullname="Ernie Dainow"/>, <contact | ||||
fullname="Scott Hollenbeck"/>, <contact fullname="Arturo Servin"/>, <contact | ||||
fullname="Andy Newton"/>, <contact fullname="Murray Kucherawy"/>, <contact | ||||
fullname="Tom Harrison"/>, <contact fullname="Naoki Kambe"/>, <contact | ||||
fullname="Alexander Mayrhofer"/>, <contact fullname="Edward Lewis"/>, <contact | ||||
fullname="Pete Resnick"/>, <contact fullname="Alessandro Vesely"/>, <contact | ||||
fullname="Bert Greevenbosch"/>, <contact fullname="Barry Leiba"/>, <contact | ||||
fullname="Jari Arkko"/>, <contact fullname="Kathleen Moriaty"/>, <contact | ||||
fullname="Stephen Farrell"/>, <contact fullname="Richard Barnes"/>, and | ||||
<contact fullname="Jean-Francois Tremblay"/> provided input and suggestions to | ||||
the first version of this document.</t> | ||||
<t> | ||||
<contact fullname="Guillaume Leclanche"/> | ||||
was a coauthor of this document for some revisions; his support is therein | ||||
acknowledged and greatly appreciated. The section on formal definition was | ||||
inspired by <xref target="RFC7071" sectionFormat="of" section="6.2" | ||||
format="default"/>. This new version [This document] received comments and | ||||
suggestions from <contact fullname="Gavin Brown"/>, <contact fullname="Patrick | ||||
Mevzek"/>, <contact fullname="John Levine"/>, <contact fullname="Jasdip | ||||
Singh"/>, <contact fullname="George Michaelson"/>, <contact fullname="Scott | ||||
Hollenbeck"/>, <contact fullname="Russ Housley"/>, <contact fullname="Joel | ||||
Halpern"/>, <contact fullname="Lars Eggert"/>, <contact fullname="Benjamin | ||||
Kaduk"/>, <contact fullname="Scott Kelly"/>, <contact fullname="Éric | ||||
Vyncke"/>, <contact fullname="John Scudder"/>, <contact fullname="Erik | ||||
Kline"/>, and <contact fullname="Robert Wilton"/>. Errata for RFC 7484 were | ||||
submitted by <contact fullname="Pieter Vandepitte"/> and were applied to this | ||||
document. | ||||
</t> | ||||
The idea of using IANA registries was discovered by the author during discussion | ||||
s with his colleagues as well as by a comment from Andy Newton. All the people i | ||||
nvolved in these discussions are herein acknowledged. Linlin Zhou, Jean-Philippe | ||||
Dionne, John Levine, Kim Davies, Ernie Dainow, Scott Hollenbeck, Arturo Servin, | ||||
Andy Newton, Murray Kucherawy, Tom Harrison, Naoki Kambe, Alexander Mayrhofer, | ||||
Edward Lewis, Pete Resnick, Alessandro Vesely, Bert Greevenbosch, Barry Leiba, J | ||||
ari Arkko, Kathleen Moriaty, Stephen Farrell, Richard Barnes, and Jean-Francois | ||||
Tremblay have provided input and suggestions to this document. Guillaume Leclan | ||||
che was a coauthor of this document for some revisions; his support is therein a | ||||
cknowledged and greatly appreciated. The section on formal definition was inspir | ||||
ed by Section 6.2 of <xref target="RFC7071"/>. This new version got comments an | ||||
d suggestions from: Gavin Brown, Patrick Mevzek, John Levine, Jasdip Singh, Geor | ||||
ge Michaelson, Scott Hollenbeck, Russ Housley, Joel Halpern, Lars Eggert, Benjam | ||||
in Kaduk, Scott Kelly, Eric Vyncke, John Scudder, Erik Kline, Robert Wilton. Err | ||||
ata of RFC7484 were submitted by Pieter Vandepitte and were applied to this vers | ||||
ion.</t> | ||||
</section> | ||||
<section title="Changes since RFC7484" numbered="no"> | ||||
<t>There are no substantive changes except for updates to the implementation | ||||
status and minor clarifications. | ||||
This update is primarily to meet the requirements for moving to Internet | ||||
Standard.</t> | ||||
</section> | </section> | |||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 53 change blocks. | ||||
585 lines changed or deleted | 678 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |