4. Choosing a Registration Policy and Well-Known Policies
A registration policy is the policy that controls how new assignments in a registry are accepted. There are several issues to consider when defining the registration policy.
If the registry's namespace is limited, assignments will need to be made carefully to prevent exhaustion.
Even when the space is essentially unlimited, it is still often desirable to have at least a minimal review prior to assignment in order to:
-
prevent the hoarding of or unnecessary wasting of values. For example, if the space consists of text strings, it may be desirable to prevent entities from obtaining large sets of strings that correspond to desirable names (existing company names, for example).
-
provide a sanity check that the request actually makes sense and is necessary. Experience has shown that some level of minimal review from a subject matter expert is useful to prevent assignments in cases where the request is malformed or not actually needed (for example, an existing assignment for an essentially equivalent service already exists).
Perhaps most importantly, unreviewed extensions can impact interoperability and security. See [RFC6709].
When the namespace is essentially unlimited and there are no potential interoperability or security issues, assigned numbers can usually be given out to anyone without any subjective review. In such cases, IANA can make assignments directly, provided that IANA is given detailed instructions on what types of requests it should grant, and it is able to do so without exercising subjective judgment.
When this is not the case, some level of review is required. However, it's important to balance adequate review and ease of registration. In many cases, those making registrations will not be IETF participants; requests often come from other standards organizations, from organizations not directly involved in standards, from ad-hoc community work (from an open-source project, for example), and so on. Registration must not be unnecessarily difficult, unnecessarily costly (in terms of time and other resources), nor unnecessarily subject to denial.
While it is sometimes necessary to restrict what gets registered (e.g., for limited resources such as bits in a byte, or for items for which unsupported values can be damaging to protocol operation), in many cases having what's in use represented in the registry is more important. Overly strict review criteria and excessive cost (in time and effort) discourage people from even attempting to make a registration. If a registry fails to reflect the protocol elements actually in use, it can adversely affect deployment of protocols on the Internet, and the registry itself is devalued.
Therefore, it is important to think specifically about the registration policy, and not just pick one arbitrarily nor copy text from another document. Working groups and other document developers should use care in selecting appropriate registration policies when their documents create registries. They should select the least strict policy that suits a registry's needs, and look for specific justification for policies that require significant community involvement (those stricter than Expert Review or Specification Required, in terms of the well-known policies). The needs here will vary from registry to registry, and, indeed, over time, and this BCP will not be the last word on the subject.
The following policies are defined for common usage. These cover a range of typical policies that have been used to describe the procedures for assigning new values in a namespace. It is not strictly required that documents use these terms; the actual requirement is that the instructions to IANA be clear and unambiguous. However, use of these terms is strongly recommended because their meanings are widely understood. Newly minted policies, including ones that combine the elements of procedures associated with these terms in novel ways, may be used if none of these policies are suitable; it will help the review process if an explanation is included as to why that is the case. The terms are fully explained in the following subsections.
- Private Use
- Experimental Use
- Hierarchical Allocation
- First Come First Served
- Expert Review
- Specification Required
- RFC Required
- IETF Review
- Standards Action
- IESG Approval
It should be noted that it often makes sense to partition a namespace into multiple categories, with assignments within each category handled differently. Many protocols now partition namespaces into two or more parts, with one range reserved for Private or Experimental Use while other ranges are reserved for globally unique assignments assigned following some review process. Dividing a namespace into ranges makes it possible to have different policies in place for different ranges and different use cases.
Similarly, it will often be useful to specify multiple policies in parallel, with each policy being used under different circumstances. For more discussion of that topic, see Section 4.12.
Examples of RFCs that specify multiple policies in parallel:
- LDAP [RFC4520]
- TLS ClientCertificateType Identifiers [RFC5246] (as detailed in the subsections below)
- MPLS Pseudowire Types Registry [RFC4446]
4.1. Private Use
Private Use is for private or local use only, with the type and purpose defined by the local site. No attempt is made to prevent multiple sites from using the same value in different (and incompatible) ways. IANA does not record assignments from registries or ranges with this policy (and therefore there is no need for IANA to review them) and assignments are not generally useful for broad interoperability. It is the responsibility of the sites making use of the Private Use range to ensure that no conflicts occur (within the intended scope of use).
Examples:
- Site-specific options in DHCP [RFC2939]
- Fibre Channel Port Type Registry [RFC4044]
- TLS ClientCertificateType Identifiers 224-255 [RFC5246]
4.2. Experimental Use
Experimental Use is similar to Private Use, but with the purpose being to facilitate experimentation. See [RFC3692] for details. IANA does not record assignments from registries or ranges with this policy (and therefore there is no need for IANA to review them) and assignments are not generally useful for broad interoperability. Unless the registry explicitly allows it, it is not appropriate for documents to select explicit values from registries or ranges with this policy. Specific experiments will select a value to use during the experiment.
When code points are set aside for Experimental Use, it's important to make clear any expected restrictions on experimental scope. For example, say whether it's acceptable to run experiments using those code points over the open Internet or whether such experiments should be confined to more closed environments. See [RFC6994] for an example of such considerations.
Example:
- Experimental Values in IPv4, IPv6, ICMPv4, ICMPv6, UDP, and TCP Headers [RFC4727]
4.3. Hierarchical Allocation
With Hierarchical Allocation, delegated administrators are given control over part of the namespace and can assign values in that part of the namespace. IANA makes allocations in the higher levels of the namespace according to one of the other policies.
Examples:
-
DNS names - IANA manages the top-level domains (TLDs), and, as [RFC1591] says:
Under each TLD may be created a hierarchy of names. Generally, under the generic TLDs the structure is very flat. That is, many organizations are registered directly under the TLD, and any further structure is up to the individual organizations.
-
Object Identifiers - defined by ITU-T recommendation X.208. According to
http://www.alvestrand.no/objectid/, some registries include- IANA, which hands out OIDs under the "Private Enterprises" branch,
- ANSI, which hands out OIDs under the "US Organizations" branch, and
- BSI, which hands out OIDs under the "UK Organizations" branch.
-
URN namespaces - IANA registers URN Namespace IDs (NIDs [RFC8141]), and the organization registering an NID is responsible for allocations of URNs within that namespace.
4.4. First Come First Served
For the First Come First Served policy, assignments are made to anyone on a first come, first served basis. There is no substantive review of the request, other than to ensure that it is well-formed and doesn't duplicate an existing assignment. However, requests must include a minimal amount of clerical information, such as a point of contact (including an email address, and sometimes a postal address) and a brief description of how the value will be used. Additional information specific to the type of value requested may also need to be provided, as defined by the namespace. For numbers, IANA generally assigns the next in-sequence unallocated value, but other values may be requested and assigned if an extenuating circumstance exists. With names, specific text strings can usually be requested.
When creating a new registry with First Come First Served as the registration policy, in addition to the contact person field or reference, the registry should contain a field for change controller. Having a change controller for each entry for these types of registrations makes authorization of future modifications more clear. See Section 2.3.
It is important that changes to the registration of a First Come First Served code point retain compatibility with the current usage of that code point, so changes need to be made with care. The change controller should not, in most cases, be requesting incompatible changes nor repurposing a registered code point. See also Sections 9.4 and 9.5.
A working group or any other entity that is developing a protocol based on a First Come First Served code point has to be extremely careful that the protocol retains wire compatibility with current use of the code point. Once that is no longer true, the new work needs to change to a different code point (and register that use at the appropriate time).
It is also important to understand that First Come First Served really has no filtering. Essentially, any well-formed request is accepted.
Examples:
- SASL mechanism names [RFC4422]
- LDAP Protocol Mechanisms and LDAP Syntax [RFC4520]
4.5. Expert Review
For the Expert Review policy, review and approval by a designated expert (see Section 5) is required. While this does not necessarily require formal documentation, information needs to be provided with the request for the designated expert to evaluate. The registry's definition needs to make clear to registrants what information is necessary. The actual process for requesting registrations is administered by IANA (see Section 1.2 for details).
(This policy was also called "Designated Expert" in earlier editions of this document. The current term is "Expert Review".)
The required documentation and review criteria, giving clear guidance to the designated expert, should be provided when defining the registry. It is particularly important to lay out what should be considered when performing an evaluation and reasons for rejecting a request. It is also a good idea to include, when possible, a sense of whether many registrations are expected over time, or if the registry is expected to be updated infrequently or in exceptional circumstances only.
Thorough understanding of Section 5 is important when deciding on an Expert Review policy and designing the guidance to the designated expert.
Good examples of guidance to designated experts:
- Extensible Authentication Protocol (EAP) [RFC3748], Sections 6 and 7.2
- North-Bound Distribution of Link-State and TE Information Using BGP [RFC7752], Section 5.1
When creating a new registry with Expert Review as the registration policy, in addition to the contact person field or reference, the registry should contain a field for change controller. Having a change controller for each entry for these types of registrations makes authorization of future modifications more clear. See Section 2.3.
Examples:
- EAP Method Types [RFC3748]
- HTTP Digest AKA algorithm versions [RFC4169]
- URI schemes [RFC7595]
- GEOPRIV Location Types [RFC4589]
4.6. Specification Required
For the Specification Required policy, review and approval by a designated expert (see Section 5) is required, and the values and their meanings must be documented in a permanent and readily available public specification, in sufficient detail so that interoperability between independent implementations is possible. This policy is the same as Expert Review, with the additional requirement of a formal public specification. In addition to the normal review of such a request, the designated expert will review the public specification and evaluate whether it is sufficiently stable and permanent, and sufficiently clear and technically sound to allow interoperable implementations.
The intention behind "permanent and readily available" is that a document can reasonably be expected to be findable and retrievable long after IANA assignment of the requested value. Publication of an RFC is an ideal means of achieving this requirement, but Specification Required is intended to also cover the case of a document published outside of the RFC path, including informal documentation.
For RFC publication, formal review by the designated expert is still requested, but the normal RFC review process is expected to provide the necessary review for interoperability. The designated expert's review is still important, but it's equally important to note that when there is IETF consensus, the expert can sometimes be "in the rough" (see also the last paragraph of Section 5.4).
As with Expert Review (Section 4.5), clear guidance to the designated expert should be provided when defining the registry, and thorough understanding of Section 5 is important.
When specifying this policy, just use the term "Specification Required". Some specifications have chosen to refer to it as "Expert Review with Specification Required", and that only causes confusion.
Examples:
- Diffserv-aware TE Bandwidth Constraints Model Identifiers [RFC4124]
- TLS ClientCertificateType Identifiers 64-223 [RFC5246]
- ROHC Profile Identifiers [RFC5795]
4.7. RFC Required
With the RFC Required policy, the registration request, along with associated documentation, must be published in an RFC. The RFC need not be in the IETF stream, but may be in any RFC stream (currently an RFC may be in the IETF, IRTF, IAB, or Independent Submission streams [RFC5742]).
Unless otherwise specified, any type of RFC is sufficient (currently Standards Track, BCP, Informational, Experimental, or Historic).
Examples:
- DNSSEC DNS Security Algorithm Numbers [RFC6014]
- Media Control Channel Framework registries [RFC6230]
- DANE TLSA Certificate Usages [RFC6698]
4.8. IETF Review
(Formerly called "IETF Consensus" in the first edition of this document.) With the IETF Review policy, new values are assigned only through RFCs in the IETF Stream -- those that have been shepherded through the IESG as AD-Sponsored or IETF working group documents [RFC2026] [RFC5378], have gone through IETF Last Call, and have been approved by the IESG as having IETF consensus.
The intent is that the document and proposed assignment will be reviewed by the IETF community (including appropriate IETF working groups, directorates, and other experts) and by the IESG, to ensure that the proposed assignment will not negatively affect interoperability or otherwise extend IETF protocols in an inappropriate or damaging manner.
Unless otherwise specified, any type of RFC is sufficient (currently Standards Track, BCP, Informational, Experimental, or Historic).
Examples:
- IPSECKEY Algorithm Types [RFC4025]
- TLS Extension Types [RFC5246]
4.9. Standards Action
For the Standards Action policy, values are assigned only through Standards Track or Best Current Practice RFCs in the IETF Stream.
Examples:
- BGP message types [RFC4271]
- Mobile Node Identifier option types [RFC4283]
- TLS ClientCertificateType Identifiers 0-63 [RFC5246]
- DCCP Packet Types [RFC4340]
4.10. IESG Approval
New assignments may be approved by the IESG. Although there is no requirement that the request be documented in an RFC, the IESG has the discretion to request documents or other supporting materials on a case-by-case basis.
IESG Approval is not intended to be used often or as a "common case"; indeed, it has seldom been used in practice. Rather, it is intended to be available in conjunction with other policies as a fall-back mechanism in the case where one of the other allowable approval mechanisms cannot be employed in a timely fashion or for some other compelling reason. IESG Approval is not intended to circumvent the public review processes implied by other policies that could have been employed for a particular assignment. IESG Approval would be appropriate, however, in cases where expediency is desired and there is strong consensus (such as from a working group) for making the assignment.
Before approving a request, the IESG might consider consulting the community, via a "call for comments" that provides as much information as is reasonably possible about the request.
Examples:
- IPv4 Multicast address assignments [RFC5771]
- IPv4 IGMP Type and Code values [RFC3228]
- Mobile IPv6 Mobility Header Type and Option values [RFC6275]
4.11. Using the Well-Known Registration Policies
Because the well-known policies benefit from both community experience and wide understanding, their use is encouraged, and the creation of new policies needs to be accompanied by reasonable justification.
It is also acceptable to cite one or more well-known policies and include additional guidelines for what kind of considerations should be taken into account by the review process.
For example, for media-type registrations [RFC6838], a number of different situations are covered that involve the use of IETF Review and Specification Required, while also including specific additional criteria the designated expert should follow. This is not meant to represent a registration procedure, but to show an example of what can be done when special circumstances need to be covered.
The well-known policies from "First Come First Served" to "Standards Action" specify a range of policies in increasing order of strictness (using the numbering from the full list in Section 4):
4. First Come First Served
- No review, minimal documentation.
5 and 6 (of equal strictness)
- 5. Expert Review: Expert review with sufficient documentation for review.
- 6. Specification Required: Significant stable public documentation sufficient for interoperability.
7. RFC Required
- Any RFC publication, IETF or a non-IETF Stream.
8. IETF Review
- RFC publication, IETF Stream only, but need not be Standards Track.
9. Standards Action
- RFC publication, IETF Stream, Standards Track or BCP only.
Examples of situations that might merit IETF Review or Standards Action include the following:
-
When a resource is limited, such as bits in a byte (or in two bytes, or four), or numbers in a limited range. In these cases, allowing registrations that haven't been carefully reviewed and agreed to by community consensus could too quickly deplete the allowable values.
-
When thorough community review is necessary to avoid extending or modifying the protocol in ways that could be damaging. One example is in defining new command codes, as opposed to options that use existing command codes: the former might require a strict policy, where a more relaxed policy could be adequate for the latter. Another example is in defining protocol elements that change the semantics of existing operations.
-
When there are security implications with respect to the resource, and thorough review is needed to ensure that the new usage is sound. Examples of this include lists of acceptable hashing and cryptographic algorithms, and assignment of transport ports in the system range.
When reviewing a document that asks IANA to create a new registry or change a registration policy to any policy more stringent than Expert Review or Specification Required, the IESG should ask for justification to ensure that more relaxed policies have been considered and that the more strict policy is the right one.
Accordingly, document developers need to anticipate this and document their considerations for selecting the specified policy (ideally, in the document itself; failing that, in the shepherd writeup). Likewise, the document shepherd should ensure that the selected policies have been justified before sending the document to the IESG.
When specifications are revised, registration policies should be reviewed in light of experience since the policies were set.
4.12. Using Multiple Policies in Combination
In some situations, it is necessary to define multiple registration policies. For example, registrations through the normal IETF process might use one policy, while registrations from outside the process would have a different policy applied.
Thus, a particular registry might want to use a policy such as "RFC Required" or "IETF Review" sometimes, with a designated expert checking a "Specification Required" policy at other times.
The alternative to using a combination requires either that all requests come through RFCs or that requests in RFCs go through review by the designated expert, even though they already have IETF review and consensus.
This can be documented in the IANA Considerations section when the registry is created, for example:
IANA is asked to create the registry "Fruit Access Flags" under the "Fruit Parameters" group. New registrations will be permitted through either the IETF Review policy or the Specification Required policy [BCP26]. The latter should be used only for registrations requested by SDOs outside the IETF. Registrations requested in IETF documents will be subject to IETF review.
Such combinations will commonly use one of {Standards Action, IETF Review, RFC Required} in combination with one of {Specification Required, Expert Review}. Guidance should be provided about when each policy is appropriate, as in the example above.
4.13. Provisional Registrations
Some existing registries have policies that allow provisional registration: see URI Schemes [RFC7595] and Email Header Fields [RFC3864]. Registrations that are designated as provisional are usually defined as being more readily created, changed, reassigned, moved to another status, or removed entirely. URI Schemes, for example, allow provisional registrations to be made with incomplete information.
Allowing provisional registration ensures that the primary goal of maintaining a registry -- avoiding collisions between incompatible semantics -- is achieved without the side effect of "endorsing" the protocol mechanism the provisional value is used for. Provisional registrations for codepoints that are ultimately standardized can be promoted to permanent status. The criteria that are defined for converting a provisional registration to permanent will likely be more strict than those that allowed the provisional registration.
If your registry does not have a practical limit on codepoints, perhaps adding the option for provisional registrations might be right for that registry as well.