RFC 5226
Guidelines for Writing an IANA Considerations Section in RFCs
Title Block ๐๐
Okay bestie, this is RFC 5226, and it's called Guidelines for Writing an IANA Considerations Section in RFCs. It came out from the Network Working Group in May 2008, written by T. Narten (IBM) and H. Alvestrand (Google). It's a Best Current Practice, filed as BCP: 26 ๐ง. It obsoletes RFC 2434, so that older one is out and this is the new source of truth ๐ .
Abstract โจ
Okay so, lots of protocols use identifiers that are just constants and well-known values ๐. Even after a protocol is defined and out in the wild, new values might need to be assigned, like a new option type in DHCP or a new encryption or authentication transform for IPsec ๐. To keep those values consistent and meaning the same thing across every implementation, the assignment has to be run by a central authority. For IETF protocols, that's the Internet Assigned Numbers Authority (IANA) ๐.
IANA needs clear rules to manage a namespace properly, like when new values can be handed out or when existing ones can get changed ๐. If IANA has a job to do in a namespace, it has to get clear, concise instructions about that job ๐ซถ. This doc talks through what to think about when setting a policy for assigning values, and it gives authors the exact text they need to include in documents that give IANA work to do ๐.
This document obsoletes RFC 2434.
Status of This Memo ๐ธ
This document specifies an Internet Best Current Practices for the Internet Community, and it asks for discussion and suggestions for improvements. Distribution of this memo is unlimited ๐ฆ.
Table of Contents ๐บ๏ธ
1. Introduction ....................................................2
2. Why Management of a Namespace May Be Necessary ..................3
3. Designated Experts ..............................................4
3.1. The Motivation for Designated Experts ......................4
3.2. The Role of the Designated Expert ..........................5
3.3. Designated Expert Reviews ..................................7
4. Creating a Registry .............................................8
4.1. Well-Known IANA Policy Definitions .........................9
4.2. What to Put in Documents That Create a Registry ...........12
4.3. Updating IANA Guidelines for Existing Registries ..........15
5. Registering New Values in an Existing Registry .................15
5.1. What to Put in Documents When Registering Values ..........15
5.2. Updating Registrations ....................................17
5.3. Overriding Registration Procedures ........................17
6. Miscellaneous Issues ...........................................18
6.1. When There Are No IANA Actions ............................18
6.2. Namespaces Lacking Documented Guidance ....................19
6.3. After-the-Fact Registrations ..............................19
6.4. Reclaiming Assigned Values ................................19
7. Appeals ........................................................20
8. Mailing Lists ..................................................20
9. Security Considerations ........................................20
10. Changes Relative to RFC 2434 ..................................21
11. Acknowledgments ...............................................22
12. References ....................................................22
12.1. Normative References .....................................22
12.2. Informative References ...................................22
1. Introduction ๐
Okay, so lots of protocols rely on fields that hold constants and well-known values, like the Protocol field in the IP header [IP] or MIME media types [MIME-REG] ๐. Even once a protocol is defined and actually deployed, new values might still need to be assigned, like a new option type in DHCP [DHCP-OPTIONS] or a new encryption or authentication transform for IPsec [IPSEC] ๐. To make sure those fields mean the same thing in every implementation, their assignment must be run by a central authority. For IETF protocols, that authority is the Internet Assigned Numbers Authority (IANA) [IANA-MOU] ๐.
Here we call the full set of possible values for a field a "namespace" ๐ง. Its actual value could be a text string, a number, or some other kind of value โจ. When a specific value gets tied to a particular purpose inside a namespace, that's called an assigned number (or assigned value, or sometimes a "code point", "protocol constant", or "protocol parameter") ๐ฆ. Every single assignment of a value in a namespace is called a registration ๐.
IANA needs guidelines to manage a namespace prudently, so it knows when (and how) new values should be assigned, or when existing values can be changed ๐ . This doc gives authors guidance on what kind of text to add to their documents so IANA gets clear direction, and it walks through the issues worth thinking about when building a sensible policy for assigning numbers to namespaces ๐.
Not every namespace needs centralized administration ๐ธ. Sometimes you can delegate a namespace so further assignments happen independently, with no more (central) coordination needed ๐. In the Domain Name System, for example, IANA only handles assignments at the higher levels, while subdomains are run by whichever organization the space was delegated to ๐. Another example is Object Identifiers (OIDs), which the ITU also delegates [ASSIGNED]. IANA manages the subtree rooted at "iso.org.dod.internet" (1.3.6.1) ๐. When a namespace is delegated, IANA's scope is limited to the parts of it where IANA actually has authority ๐ซถ.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [KEYWORDS] ๐ฅ. For this document, "the specification" as used by RFC 2119 refers to the processing of protocol documents within the IETF standards process ๐.
2. Why Management of a Namespace May Be Necessary ๐
Okay, one thing to think about when managing a namespace is its size ๐. If the space is small and limited, assignments have to be made carefully so the space doesn't run out ๐ญ. If the space is basically unlimited, though, running out probably won't be a practical concern at all ๐. Even when the space is basically unlimited, it's still usually a good idea to have at least a minimal review before assignment, in order to:
- prevent the hoarding or unnecessary wasting of values. For example, if the space consists of text strings, it may be desirable to stop entities from grabbing big piles of strings that match desirable names (e.g., existing company names) ๐.
- provide a sanity check that the request actually makes sense and is necessary. Experience has shown that a bit of minimal review from a subject matter expert is useful for stopping assignments where the request is malformed or not actually needed (i.e., an existing assignment for an essentially equivalent service already exists) ๐.
A second thing to consider is whether it makes sense to delegate the namespace in some way ๐ง. You should go down that route when it's appropriate, because it takes some of the load off IANA when it comes to assignments ๐ซถ.
A third consideration, and honestly maybe the most important one, is the potential impact on interoperability of unreviewed extensions ๐ค. Proposed protocol extensions generally benefit from community review. In fact, review is often essential to avoid future interoperability problems [PROTOCOL-EXT] โจ.
When the namespace is essentially unlimited and there are no potential interoperability issues, assigned numbers can safely be given out to anyone without any subjective review ๐ฆ. In those cases, IANA can make assignments directly, as long as IANA is given specific instructions on what types of requests it should grant, and on what information must be provided as part of a well-formed request for an assigned number ๐.
3. Designated Experts โจ
3.1. The Motivation for Designated Experts ๐
Okay so, IANA doesn't invent assignment policy ๐ โโ๏ธ. It just carries out the policies that other people have defined and published in RFCs. So IANA needs a set of guidelines that let it make allocation decisions with minimal subjectivity, without needing any technical expertise about the protocols that use a registry. Iconic of them to keep it neutral ๐ .
In lots of cases, some review of new allocations is a good idea, and then the real question is who reviews and why. You might think an IETF working group (WG) that knows the namespace should be consulted, right? ๐ค But here's the tea: WGs eventually disband, so they can't be a permanent evaluator ๐ญ. And namespaces can also be created through individual submission documents, where no WG ever gets formed.
One way to make sure the community reviews assignments is to have the requester submit a document for publication as an RFC ๐. That's giving permanent and public ๐ฆ. It makes sure the specification is publicly and permanently available, and it allows some review of the spec before publication and before the requested code points get assigned. This is the preferred way to get review, and it matters extra if any interoperability issues could come up ๐จ. Like, some assignments aren't just assignments. They also involve an element of protocol specification ๐ง . A new option might define fields that need to be parsed and acted on, and if that's specified poorly, it might not fit cleanly with the architecture of other options or the base protocols they're built on ๐.
Sometimes though, publishing an RFC just to get an assignment is excessive ๐ฉ. Even so, it's generally still useful (and sometimes necessary) to discuss proposed additions on a mailing list dedicated to the purpose, like ietf-types@iana.org for media types ๐, or on a more general mailing list, like one for a current or former IETF WG ๐ธ. That kind of list gives new registrations a public review before they get assigned, or gives advice to people who want help understanding what a proper registration should contain ๐ซถ.
Discussion on a mailing list can be super valuable technical feedback โจ, but opinions can vary, and discussions can keep going for a while with no clear resolution ๐ตโ๐ซ. Plus, IANA can't join all of these mailing lists, and it can't tell if or when those discussions reach consensus ๐. So, IANA relies on a "designated expert" for advice on the specific question of whether an assignment should be made ๐. The designated expert is an individual who is responsible for carrying out an appropriate evaluation and returning a recommendation to IANA ๐.
Here's the big thing: a key motivation for designated experts is that the IETF gives IANA a subject matter expert to whom the evaluation can be delegated ๐ง. IANA forwards requests for an assignment to the expert, and the expert (after doing the evaluation) tells IANA whether or not to make the assignment or registration ๐.
3.2. The Role of the Designated Expert โญ
The designated expert is responsible for starting and coordinating the right review of an assignment request ๐ฏ. The review can be wide or narrow, depending on the situation and the expert's judgment ๐. It might involve consulting a set of technology experts, discussing on a public mailing list, consulting a working group (or its mailing list if the WG has disbanded), and so on ๐. Ideally, the designated expert follows the specific review criteria documented with the protocol that creates or uses the namespace ๐. (Check out the IANA Considerations sections of [RFC3748] and [RFC3575] for examples that have been done for specific namespaces ๐ฆ.)
Designated experts are expected to be able to defend their decisions to the IETF community ๐ก๏ธ. The evaluation process isn't meant to be secretive, and it doesn't give the expert unquestioned power either ๐ โโ๏ธ. Experts are expected to apply any applicable documented review or vetting procedures, or, if there are no documented criteria, follow generally accepted norms, e.g., those in Section 3.3 ๐ .
Section 5.2 goes into disputes and appeals in more detail ๐.
Designated experts are appointed by the IESG (normally on the recommendation of the relevant Area Director) ๐. They're typically named when a document creating or updating a namespace gets approved by the IESG ๐. But since originally appointed experts may later become unavailable, the IESG will appoint replacements if necessary ๐ซถ.
For some registries, having multiple designated experts has proven useful ๐ซ. Sometimes those experts work together on evaluating a request, and in other cases extra experts serve as backups ๐ค. If the experts disagree, it's their responsibility to make a single clear recommendation to IANA ๐ฃ. It's not appropriate for IANA to resolve disputes among experts ๐ โโ๏ธ. In extreme situations (like deadlock), the IESG may need to step in to resolve the problem ๐จ.
In registries where a pool of experts evaluates requests, the pool should have a single chair who's responsible for defining how requests get assigned to and reviewed by experts ๐งโโ๏ธ. Sometimes the pool is a primary expert plus backups, with the backups involved only when the primary is unavailable ๐. Other times, IANA might assign requests to individual members in sequential or approximate random order ๐ฒ. And if IANA ends up with conflicting advice from its experts, it's the pool's chair who's responsible for resolving the issue and giving IANA clear instructions ๐.
Since the designated experts are appointed by the IESG, the IESG may also remove them ๐ค.
3.3. Designated Expert Reviews ๐
In the eight years since RFC 2434 was published and put to use, experience has led to these observations ๐:
- A designated expert must respond in a timely fashion, normally within a week for simple requests, or a few weeks for more complex ones โฐ. Unreasonable delays can cause big problems for people who need assignments, like when products need code points to ship ๐ฆ. That doesn't mean every review can be finished under a firm deadline ๐, but they must be started, and the requester and IANA should have some transparency into the process if an answer can't be given quickly ๐.
- If a designated expert doesn't respond to IANA's requests within a reasonable period, either with a response or a reasonable explanation for the delay (for example, some requests may be particularly complex), and this keeps happening, IANA must raise the issue with the IESG ๐ฉ. Because delayed evaluations and assignments cause so many problems, the IESG should take appropriate actions to make sure the expert understands and accepts their responsibilities, or appoint a new expert ๐ฌ.
- The designated expert isn't required to personally bear the burden of evaluating and deciding all requests ๐. Instead, they act as a shepherd for the request and enlist the help of others as appropriate ๐. If a request is denied and rejecting it is likely to be controversial, the expert should have the support of other subject matter experts ๐ซ. In other words, the expert must be able to defend a decision to the community as a whole ๐ก๏ธ.
In the case where a designated expert is used but there are no specific documented criteria for performing an evaluation, the presumption should be that a code point gets granted, unless there's a compelling reason to the contrary โ . Possible reasons to deny a request include:
- scarcity of code points, where the finite remaining code points should be prudently managed, or when a request is made for a large number of code points and a single code point is the norm ๐ฅบ.
- documentation that isn't clear enough to evaluate or ensure interoperability ๐.
- the code point is needed for a protocol extension, but the extension isn't consistent with the documented (or generally understood) architecture of the base protocol being extended, and would be harmful to the protocol if widely deployed ๐ฅ. It's not the intent that "inconsistencies" refer to minor differences "of a personal preference nature" ๐. Instead, they refer to significant differences, like inconsistencies with the underlying security model, implying a change to the semantics of an existing message type or operation, requiring unwarranted changes in deployed systems (compared with alternate ways of achieving a similar result), and so on ๐.
- the extension would cause problems with existing deployed systems ๐งฑ.
- the extension would conflict with one under active development by the IETF, and having both would harm rather than foster interoperability ๐ฅ.
4. Creating a Registry โจ
Creating a registry involves describing the namespaces to be created ๐๏ธ, an initial set of assignments (if appropriate) ๐ฑ, and guidelines on how future assignments are to be made ๐ฎ.
Once a registry has been created, IANA records the assignments that have been made ๐. The following labels describe the status of an individual assignment (or range of assignments) ๐ท๏ธ:
Private Use: Private use only (not assigned), as described in Section 4.1. ๐Experimental: Available for experimental use as described in [EXPERIMENTATION]. IANA does not record specific assignments for any particular use. ๐งชUnassigned: Unused and available for assignment via documented procedures. ๐Reserved: Not to be assigned. Reserved values are held for special uses, such as to extend the namespace when it become exhausted. Reserved values are not available for general assignment. ๐
4.1. Well-Known IANA Policy Definitions ๐
Okay bestie, here's the menu of policies that people have actually used to decide how new values get handed out in a namespace ๐ Some of these are still going strong today, and they cover the usual range of ways a namespace gets managed. Documents don't have to use these exact terms. What really matters is that the instructions to IANA are clear and unambiguous โจ Still, using these terms is RECOMMENDED where possible, since everyone already knows what they mean ๐ซถ
Private Use - This one is for private or local use only, with the type and purpose defined by the local site ๐ Nobody tries to stop multiple sites from using the same value in different (and incompatible) ways, so yeah, chaos is possible ๐ IANA doesn't need to review these assignments (since IANA doesn't record them), and they aren't generally useful for broad interoperability. The sites using the Private Use range are responsible for making sure no conflicts happen within the intended scope of use.
Examples: Site-specific options in DHCP [DHCP-IANA], Fibre Channel Port Type Registry [RFC4044], Exchange Types in the IKEv2 header [RFC4306].
Experimental Use - This is similar to private or local use only, except the whole point is to facilitate experimentation ๐งช See [EXPERIMENTATION] for details.
Example: Experimental Values in IPv4, IPv6, ICMPv4, ICMPv6, UDP, and TCP Headers [RFC4727].
Hierarchical Allocation - Delegated managers can assign values as long as they've been given control over that part of the namespace ๐ณ IANA controls the higher levels of the namespace according to one of the other policies.
Examples: DNS names, Object Identifiers, IP addresses.
First Come First Served - Assignments go to anyone on a first come, first served basis ๐โโ๏ธ There's no substantive review of the request, other than making sure it's well-formed and doesn't duplicate an existing assignment. Requests do need to include a minimal amount of clerical information, such as a point of contact (including an email address) and a brief description of how the value will be used. Extra info specific to the type of value may also be needed, as defined by the namespace. For numbers, IANA generally assigns the exact value, and for names, specific text strings can usually be requested.
Examples: SASL mechanism names [RFC4422], LDAP Protocol Mechanisms, and LDAP Syntax [RFC4520].
Expert Review (or Designated Expert) - Approval by a Designated Expert is required ๐ง The required documentation and review criteria for the Designated Expert should be provided when defining the registry. For example, see Sections 6 and 7.2 in [RFC3748].
Examples: EAP Method Types [RFC3748], HTTP Digest AKA algorithm versions [RFC4169], URI schemes [RFC4395], GEOPRIV Location Types [RFC4589].
Specification Required - Values and their meanings must be documented in a permanent and readily available public specification, detailed enough that interoperability between independent implementations is possible ๐ When this is used, a Designated Expert is also involved, and they'll review the public specification and evaluate whether it's clear enough to allow interoperable implementations. The idea behind "permanent and readily available" is that a document can reasonably be expected to be findable and retrievable long after IANA assigns the requested value. Publishing an RFC is an ideal way to get there, but Specification Required also covers a document published outside of the RFC path. For RFC publication, the normal RFC review process is expected to provide the necessary review for interoperability, though the Designated Expert may be a particularly well-qualified person to do that review ๐
Examples: Diffserv-aware TE Bandwidth Constraints Model Identifiers [RFC4124], TLS ClientCertificateType Identifiers [RFC4346], ROHC Profile Identifiers [RFC4995].
RFC Required - RFC publication suffices, either as an IETF submission or as an RFC Editor Independent submission [RFC3932] ๐ Unless otherwise specified, any type of RFC is sufficient (e.g., Informational, Experimental, Standards Track, etc.).
IETF Review - (This was formerly called "IETF Consensus" in [IANA-CONSIDERATIONS].) New values are assigned only through RFCs that have been shepherded through the IESG as AD-Sponsored or IETF WG Documents [RFC3932] [RFC3978] ๐ธ The idea is that the document and proposed assignment get reviewed by the IESG and the appropriate IETF WGs (or experts, if suitable working groups no longer exist). That way, we can make sure the proposed assignment won't negatively impact interoperability or otherwise extend IETF protocols in an inappropriate or damaging manner ๐ก๏ธ
To make sure the community gets a proper look, these documents are shepherded through the IESG as AD-sponsored (or WG) documents with an IETF Last Call ๐ฃ
Examples: IPSECKEY Algorithm Types [RFC4025], Accounting-Auth-Method AVP values in DIAMETER [RFC4005], TLS Handshake Hello Extensions [RFC4366].
Standards Action - Values are assigned only for Standards Track RFCs approved by the IESG ๐
Examples: BGP message types [RFC4271], Mobile Node Identifier option types [RFC4283], DCCP Packet Types [RFC4340].
IESG Approval - New assignments may be approved by the IESG ๐ฆ Although there's no requirement that the request be documented in an RFC, the IESG has discretion to request documents or other supporting materials on a case-by-case basis.
IESG Approval is not meant to be used often or as a "common case" ๐ โโ๏ธ In fact, it has seldom been used in practice during the period RFC 2434 was in effect. It's really meant to be a fall-back mechanism, available alongside other policies for when one of the other allowable approval mechanisms can't be used in a timely fashion or for some other compelling reason. IESG Approval is not meant to get around the public review processes implied by other policies that could have been used for a particular assignment. It would be appropriate, though, when expediency is desired and there's strong consensus for making the assignment (e.g., WG consensus) โจ
The following guidelines are suggested for any evaluation under IESG Approval:
- The IESG can (and should) reject a request if another path for registration is available that is more appropriate and there is no compelling reason to use that path.
- Before approving a request, the community should be consulted, via a "call for comments" that provides as much information as is reasonably possible about the request.
Examples: IPv4 Multicast address assignments [RFC3171], IPv4 IGMP Type and Code values [RFC3228], Mobile IPv6 Mobility Header Type and Option values [RFC3775].
It's worth knowing that it often makes sense to split a namespace into multiple categories, with assignments in each category handled differently ๐งฉ For example, lots of protocols now divide their namespaces into two (or even more) parts. One range is reserved for Private or Experimental Use, while other ranges are reserved for globally unique assignments that go through some review process. Dividing a namespace into ranges makes it possible to have different policies in place for different ranges, which is honestly so smart ๐
Examples: LDAP [RFC4520], Pseudowire Edge to Edge Emulation (PWE3) [RFC4446].
4.2. What to Put in Documents That Create a Registry ๐
okay so the last bits were all about the stuff to think about when picking a policy for handing out values ๐ง . now it's the working group's and/or doc author's job to come up with a solid policy and write it down in the doc ๐. almost always, having an explicit "IANA Considerations" section is the move ๐ . this section and the ones after it spell out exactly what's needed for each type of IANA action โจ
Documents that create a new namespace (or change the definition of an existing one) and that expect IANA to help maintain it, like being the place where registered values live, MUST provide clear instructions on the details of the namespace ๐ซถ. specifically, the instructions MUST include:
- The name of the registry (or sub-registry) being created and/or maintained. this name shows up on the IANA web page and gets referred to in future docs that need to grab a value from the new space ๐ท๏ธ. the full name (and abbreviation, if it makes sense) should be provided. it's highly desirable that the name not be easily confusable with another registry's name ๐. when making a sub-registry, the registry it belongs to should be clearly identified. when pointing at an already existing registry, a URL that precisely identifies it is helpful. all of those URLs, however, will be removed from the RFC before final publication ๐๏ธ. for example, a doc could contain:
[TO BE REMOVED: This registration should take place at the following location: http://www.iana.org/assignments/foobar-registry] - What information must be provided as part of a request in order to assign a new value ๐. this info may include the need to document relevant security considerations, if any ๐.
- The review process that will apply to all future requests for a value from the namespace ๐.
okay this one has a few extra bits. when a Designated Expert is used, documents MUST NOT name the Designated Expert in the document itself. instead, the name should be relayed to the appropriate Area Director at the time the document is sent to the IESG for approval ๐คซ.
if the request should also be reviewed on a specific public mailing list (like ietf-types@iana.org for media types), that mailing address should be specified. but heads up, when mailing lists are specified, the requirement for a Designated Expert MUST also be specified (see Section 3) ๐ฌ.
if IANA is expected to make assignments without any outside review, sufficient guidance MUST be provided so the requests can be evaluated with minimal subjectivity ๐งโโ๏ธ.
- The size, format, and syntax of registry entries ๐. when creating a new name/number space, authors must describe any technical requirements on registry (and sub-registry) values, like valid ranges for integers or length limits on strings, plus the exact format in which registry values should be displayed ๐ข. for number assignments, one should specify whether values are recorded in decimal, hexadecimal, or some other format. for strings, the encoding format should be specified (like ASCII, UTF8, etc.). authors should also clearly specify what fields to record in the registry ๐งพ.
- Initial assignments and reservations ๐ฑ. clear instructions should be provided to identify any initial assignments or registrations. any ranges to be reserved for "Private Use", "Reserved", "Unassigned", etc. should also be clearly indicated ๐ง.
when you're specifying how future assignments get made, it's totally acceptable to pick one (or more) of the example policies from Section 4.1 and refer to it by name ๐. honestly, that's the preferred move when the sample policies give the level of review you want โจ. it's also fine to cite one of those policies and add extra guidelines about what the review process should consider ๐ง . for example, RADIUS [RFC3575] specifies the use of a Designated Expert, but it also includes specific extra criteria the Designated Expert should follow ๐.
here's something a doc could say, roughly:
This document defines a new DHCP option, entitled "FooBar" (see
Section y), assigned a value of TBD1 from the DHCP Option space
[to be removed upon publication:
http://www.iana.org/assignments/bootp-dhcp-parameters]
[DHCP-OPTIONS] [DHCP-IANA]:
Data
Tag Name Length Meaning
---- ---- ------ -------
TBD1 FooBar N FooBar server
The FooBar option also defines an 8-bit FooType field, for which
IANA is to create and maintain a new sub-registry entitled
"FooType values" under the FooBar option. Initial values for the
DHCP FooBar FooType registry are given below; future assignments
are to be made through Expert Review [IANA-CONSIDERATIONS].
Assignments consist of a DHCP FooBar FooType name and its
associated value.
Value DHCP FooBar FooType Name Definition
---- ------------------------ ----------
0 Reserved
1 Frobnitz See Section y.1
2 NitzFrob See Section y.2
3-254 Unassigned
255 Reserved
for examples of docs that give detailed guidance to IANA on assigning numbers, check out [RFC2929], [RFC3575], [RFC3968], and [RFC4520] ๐๐
4.3. Updating IANA Guidelines for Existing Registries ๐
updating the registration process for a namespace that already exists (whether it was created explicitly or implicitly) works a lot like creating a new one ๐ธ. you produce a doc that references the existing namespace and then gives detailed guidelines for handling assignments in each individual namespace ๐. these docs are normally processed as Best Current Practices (BCPs) [IETF-PROCESS] ๐ง.
some example docs that updated the guidelines for managing (then) pre-existing registries are: [RFC2929], [RFC3228], and [RFC3575] โจ
5. Registering New Values in an Existing Registry ๐ฆ
5.1. What to Put in Documents When Registering Values ๐
often, docs request an assignment from a namespace that already exists (aka one created by a previously published RFC). in those cases:
- Documents should clearly identify the namespace in which each value is to be registered. if the registration goes into a sub-registry, the author should clearly describe where the assignment or registration should go ๐บ๏ธ. it's helpful to use the exact namespace name as listed on the IANA web page (and in the defining RFC), and to cite the RFC where the namespace is defined ๐.
Note 1: there's no need to mention what the assignment policy for new assignments is, since that should be clear from the references ๐.
Note 2: when referring to an existing registry, a URL that precisely identifies the registry is helpful. these URLs, however, should usually be removed from the RFC before final publication, since IANA URLs aren't guaranteed to stay stable in the future ๐ฅบ. in cases where it's important to include a URL in the doc, IANA should concur on its inclusion ๐ค.
as an example, docs could contain: [TO BE REMOVED: This registration should take place at the following location: http://www.iana.org/assignments/foobar-registry]
- Each value requested should be given a unique reference. when the value is numeric, use the notation: TBD1, TBD2, etc. throughout the doc, wherever an actual IANA-assigned value should go, use the "TBDx" notation ๐ท๏ธ. this makes sure the final RFC has the correct assigned values inserted in all the relevant places where the value is expected to appear ๐ฏ. for values that are text strings, a specific name can be suggested. IANA will normally assign the name, unless it conflicts with a name already in use ๐ .
- Normally, the values to be used are chosen by IANA, and docs should specify values of "TBD" ๐ฒ. however, in some cases a value may have been used for testing or in early implementations. in those cases, it's acceptable to include text suggesting what specific value should be used (together with the reason for the choice). for example, one might include the text "the value XXX is suggested as it is used in implementations" ๐ก. but heads up, suggested values are just that: suggestions. IANA will attempt to assign them, but may find that impossible if the proposed number has already been assigned for some other use ๐ฌ.
for some registries, IANA has a long-standing policy prohibiting assignment of names or codes on a vanity or organization name basis. e.g., codes are always assigned sequentially unless there's a strong reason for making an exception ๐ซ. nothing in this document is intended to change those policies or stop their future application ๐ซก.
- The IANA Considerations section should summarize all of the IANA actions, with pointers to the relevant sections elsewhere in the doc as appropriate ๐ฃ. when multiple values are requested, it's generally helpful to include a summary table ๐. it's also helpful for this table to be in the same format as it should appear on the IANA web site. for example:
Value Description Reference
-------- ------------------- ---------
TBD1 Foobar [RFCXXXX]
Note: in cases where authors feel that including the full table is too verbose or repetitive, authors should still include the table, but may include a note asking that the table be removed prior to publication of the final RFC ๐ซถ.
as an example, the following text could be used to request assignment of a DHCPv6 option number ๐:
IANA has assigned an option code value of TBD1 to the DNS
Recursive Name Server option and an option code value of TBD2 to
the Domain Search List option from the DHCP option code space
defined in Section 24.3 of RFC 3315.
5.2. Updating Registrations โจ
Okay so a registration is basically a request to get a new value assigned, plus all the extra info needed to check it and document it ๐. Even after a number is assigned, some registrations still have details that might need updating over time ๐. Think MIME media types, character sets, language tags, etc. They usually come with way more than just the value itself ๐. Example info includes point-of-contact details, security issues, pointers to updates, literature references, and so on ๐. So in those cases, the document defining the namespace must clearly state who is responsible for maintaining and updating a registration. Depending on the situation, it may be appropriate to specify one or more of the following:
- Let the author update the registration, subject to the same constraints and review as with new registrations.
- Allow some mechanism to attach comments to the registration, for cases where others have significant objections to claims in a registration, but the author does not agree to change the registration.
- Designate the IESG, a Designated Expert, or another entity as having the right to change the registrant associated with a registration and any requirements or conditions on doing so. This is mainly to get around the problem when a registrant cannot be reached in order to make necessary updates.
5.3. Overriding Registration Procedures ๐ฆ
Ever since RFC 2434 was published, experience has shown that the documented IANA considerations for individual protocols don't always cover what actually happens once a protocol is deployed ๐ญ. For example, lots of older routing protocols don't have documented, detailed IANA considerations at all. Also, documented IANA considerations are sometimes too strict to let even working group documents (with strong consensus behind them) get code points from IANA before the RFC is actually published. In other cases, the documented procedures are unclear or just didn't think of every case. So, to allow assignments in individual cases where there is strong IETF consensus that an allocation should go forward, but the documented procedures don't support it, the IESG is granted authority to approve those assignments ๐. The point is not to overrule properly documented procedures, or to skip the need for protocols to document their IANA considerations properly. Instead, it's for cases where it's obvious the assignment should just be made, but updating the IANA process just to assign one particular code point feels like too heavy a burden ๐ .
In general, the IETF would like deficient IANA registration procedures for a namespace to be revised through the IETF standards process ๐ง. Just not at the cost of unreasonable delay for needed assignments. If the IESG has had to take the action in this section, that's a strong sign the IANA registration procedures should be updated, possibly in parallel with ongoing protocol work ๐ฅ.
6. Miscellaneous Issues ๐
6.1. When There Are No IANA Actions ๐
Before an Internet-Draft can be published as an RFC, IANA needs to know what actions (if any) it needs to perform ๐. It's not always obvious whether a document has no IANA actions without reading the whole thing in detail ๐ญ. So to make it clear to IANA that there's nothing to do (and that the author has consciously decided that), such documents should include an IANA Considerations section that states:
This document has no IANA actions.
This statement, or an equivalent, must only be inserted after the WG or individual submitter has carefully verified it to be true. Slapping it on as "boilerplate" or without careful thought can lead to incomplete or incorrect IANA actions being performed ๐.
If a specification uses values from a namespace that is not managed by IANA, it may be useful to note that fact, for example with wording like:
The values of the Foobar parameter are assigned by the Barfoo
registry on behalf of the Rabfoo Forum. Therefore, this document
has no IANA actions.
Sometimes, leaving out IANA-assigned values is useful info for future readers ๐. Other times it's no longer valuable once the document is approved, and it can be removed before archival publication ๐งน. The choice should be made clear in the draft, for example by including a sentence such as
[RFC Editor: please remove this section prior to publication.]
or
[RFC Editor: please do not remove this section.]
6.2. Namespaces Lacking Documented Guidance ๐ธ
For all existing RFCs that either explicitly or implicitly rely on IANA to evaluate assignments without specifying a precise evaluation policy, IANA (in consultation with the IESG) will keep deciding what policy is appropriate ๐คทโโ๏ธ. Changes to existing policies can always be started through the normal IETF consensus process โจ.
All future RFCs that either explicitly or implicitly rely on IANA to register or otherwise manage namespace assignments MUST provide guidelines for managing the namespace. ๐จ
6.3. After-the-Fact Registrations ๐ต๏ธโโ๏ธ
Every so often, IANA finds out that an unassigned value from a managed namespace is being used on the Internet, or that an assigned value is being used for a different purpose than what was originally registered ๐ณ. IANA will not condone that kind of misuse, so procedures of the type described in this document MUST be applied to such cases. Unless there are specifications saying otherwise, values may only be reassigned for a different purpose with the consent of the original assignee (when possible), and with due consideration of the impact of that reassignment ๐ซถ. If things look likely to get controversial, consulting the IESG is advised ๐ฃ.
6.4. Reclaiming Assigned Values โป๏ธ
Reclaiming previously assigned values for reuse is tricky ๐ฌ, because doing so can cause interoperability problems with deployed systems that are still using those values. It can also be extremely difficult to figure out how widely systems using a particular value are deployed. Still, if a namespace is running out of unassigned values and more are needed, it may be desirable to try reclaiming unused ones ๐. When reclaiming unused values, the following (at a minimum) should be considered:
- Attempts should be made to contact the original party to which a value is assigned, to determine if the value was ever used, and if so, the extent of deployment. (In some cases, products were never shipped or have long ceased being used. In other cases, it may be known that a value was never actually used at all.)
- Reassignments should not normally be made without the concurrence of the original requester. Reclamation under such conditions should only take place where there is strong evidence that a value is not widely used, and the need to reclaim the value outweighs the cost of a hostile reclamation. In any case, IESG Approval is needed in this case ๐.
- It may be appropriate to write up the proposed action and solicit comments from relevant user communities. In some cases, it may be appropriate to write an RFC that goes through a formal IETF process (including IETF Last Call), as was done when DHCP reclaimed some of its "Private Use" options [RFC3942] ๐ง .
7. Appeals ๐
Appeals of registration decisions made by IANA can be made using the normal IETF appeals process as described in Section 6.5 of [IETF-PROCESS]. Specifically, appeals should be directed to the IESG, followed (if necessary) by an appeal to the IAB, etc. ๐ฎ
8. Mailing Lists ๐ฌ
All IETF mailing lists associated with evaluating or discussing assignment requests as described in this document are subject to whatever rules of conduct and methods of list management are currently defined by Best Current Practices or by IESG decision ๐งพ.
9. Security Considerations ๐จ๐
Okay, this part is seriously important, bestie ๐ค. Information that creates or updates a registration needs to be authenticated and authorized. IANA updates registries according to instructions in published RFCs and from the IESG. It also may accept clarifications from document authors, relevant WG chairs, Designated Experts, and mail list participants, too ๐.
Information about possible security vulnerabilities of a protocol can change over time ๐. Likewise, security vulnerabilities related to how an assigned number is used (for example, if it identifies a protocol) may change as well. As new vulnerabilities are discovered, information about them may need to be attached to existing registrations, so that users aren't misled about the true security issues surrounding the use of a registered number ๐ฑ.
An analysis of security issues is generally required for all protocols that make use of parameters (data types, operation codes, keywords, etc.) used in IETF protocols or registered by IANA. Such security considerations are usually included in the protocol document [RFC3552]. It is the responsibility of the IANA considerations associated with a particular registry to specify what (if any) security considerations must be provided when assigning new values, and the process for reviewing such claims ๐.
10. Changes Relative to RFC 2434 ๐
Here's what changed ๐:
- Major reordering of text to expand descriptions and to better group topics such as "updating registries" vs. "creating new registries", in order to make it easier for authors to find the text most applicable to their needs.
- Numerous editorial changes to improve readability.
- Changed the term "IETF Consensus" to "IETF Review" and added more clarifications. History has shown that people see the words "IETF Consensus" (without consulting the actual definition) and are quick to make incorrect assumptions about what the term means in the context of IANA Considerations ๐.
- Added "RFC Required" to list of defined policies.
- Much more explicit directions and examples of "what to put in RFCs".
- "Specification Required" now implies use of a Designated Expert to evaluate specs for sufficient clarity.
- Significantly changed the wording in Section 3. Main purpose is to make clear that Expert Reviewers are accountable to the community, and to provide some guidance for review criteria in the default case.
- Changed wording to remove any special appeals path. The normal RFC 2026 appeals path is used.
- Added a section about reclaiming unused value.
- Added a section on after-the-fact registrations.
- Added a section indicating that mailing lists used to evaluate possible assignments (e.g., by a Designated Expert) are subject to normal IETF rules.
11. Acknowledgments โจ
okay bestie, the people who gave specific feedback on this doc are the squad ๐ซถ: Jari Arkko, Marcelo Bagnulo Braun, Brian Carpenter, Michelle Cotton, Spencer Dawkins, Barbara Denny, Miguel Garcia, Paul Hoffman, Russ Housley, John Klensin, Allison Mankin, Blake Ramsdell, Mark Townsley, Magnus Westerlund, and Bert Wijnen. literally iconic ๐
the original acknowledgments in RFC 2434 also gave a shoutout to Jon Postel and Joyce Reynolds ๐ธ, who explained what IANA needs to manage assignments efficiently and patiently commented on loads of drafts. Brian Carpenter helped out there too ๐. and one paragraph in the Security Considerations section was borrowed from [MIME-REG] ๐ฆ, which is the kind of collab energy we love to see.
12. References ๐
12.1. Normative References
These are the must-reads ๐:
[KEYWORDS] Bradner, S., "Key words for use in RFCs to
Indicate Requirement Levels", BCP 14, RFC 2119,
March 1997.
12.2. Informative References
These are the extra-credit reads ๐ง:
[ASSIGNED] Reynolds, J., Ed., "Assigned Numbers: RFC 1700
is Replaced by an On-line Database", RFC 3232,
January 2002.
[DHCP-OPTIONS] Alexander, S. and R. Droms, "DHCP Options and
BOOTP Vendor Extensions", RFC 2132, March 1997.
[DHCP-IANA] Droms, R., "Procedures and IANA Guidelines for
Definition of New DHCP Options and Message
Types", BCP 43, RFC 2939, September 2000.
[EXPERIMENTATION] Narten, T., "Assigning Experimental and Testing
Numbers Considered Useful", BCP 82, RFC 3692,
January 2004.
[IANA-CONSIDERATIONS] Narten, T. and H. Alvestrand, "Guidelines for
Writing an IANA Considerations Section in
RFCs", BCP 26, RFC 2434, October 1998.
[IANA-MOU] Carpenter, B., Baker, F., and M. Roberts,
"Memorandum of Understanding Concerning the
Technical Work of the Internet Assigned Numbers
Authority", RFC 2860, June 2000.
[IETF-PROCESS] Bradner, S., "The Internet Standards Process --
Revision 3", BCP 9, RFC 2026, October 1996.
[IP] Postel, J., "Internet Protocol", STD 5, RFC
791, September 1981.
[IPSEC] Kent, S. and K. Seo, "Security Architecture for
the Internet Protocol", RFC 4301, December
2005.
[MIME-REG] Freed, N. and J. Klensin, "Media Type
Specifications and Registration Procedures",
BCP 13, RFC 4288, December 2005.
[PROTOCOL-EXT] Carpenter, B. and B. Aboba, "Design
Considerations for Protocol Extensions", Work
in Progress, December 2007.
[RFC2929] Eastlake 3rd, D., Brunner-Williams, E., and B.
Manning, "Domain Name System (DNS) IANA
Considerations", BCP 42, RFC 2929, September
2000.
[RFC3171] Albanna, Z., Almeroth, K., Meyer, D., and M.
Schipper, "IANA Guidelines for IPv4 Multicast
Address Assignments", BCP 51, RFC 3171, August
2001.
[RFC3228] Fenner, B., "IANA Considerations for IPv4
Internet Group Management Protocol (IGMP)", BCP
57, RFC 3228, February 2002.
[RFC3552] Rescorla, E. and B. Korver, "Guidelines for
Writing RFC Text on Security Considerations",
BCP 72, RFC 3552, July 2003.
[RFC3575] Aboba, B., "IANA Considerations for RADIUS
(Remote Authentication Dial In User Service)",
RFC 3575, July 2003.
[RFC3748] Aboba, B., Blunk, L., Vollbrecht, J., Carlson,
J., and H. Levkowetz, Ed., "Extensible
Authentication Protocol (EAP)", RFC 3748, June
2004.
[RFC3775] Johnson, D., Perkins, C., and J. Arkko,
"Mobility Support in IPv6", RFC 3775, June
2004.
[RFC3932] Alvestrand, H., "The IESG and RFC Editor
Documents: Procedures", BCP 92, RFC 3932,
October 2004.
[RFC3942] Volz, B., "Reclassifying Dynamic Host
Configuration Protocol version 4 (DHCPv4)
Options", RFC 3942, November 2004.
[RFC3968] Camarillo, G., "The Internet Assigned Number
Authority (IANA) Header Field Parameter
Registry for the Session Initiation Protocol
(SIP)", BCP 98, RFC 3968, December 2004.
[RFC3978] Bradner, S., Ed., "IETF Rights in
Contributions", BCP 78, RFC 3978, March 2005.
[RFC4005] Calhoun, P., Zorn, G., Spence, D., and D.
Mitton, "Diameter Network Access Server
Application", RFC 4005, August 2005.
[RFC4025] Richardson, M., "A Method for Storing IPsec
Keying Material in DNS", RFC 4025, March 2005.
[RFC4044] McCloghrie, K., "Fibre Channel Management MIB",
RFC 4044, May 2005.
[RFC4124] Le Faucheur, F., Ed., "Protocol Extensions for
Support of Diffserv-aware MPLS Traffic
Engineering", RFC 4124, June 2005.
[RFC4169] Torvinen, V., Arkko, J., and M. Naslund,
"Hypertext Transfer Protocol (HTTP) Digest
Authentication Using Authentication and Key
Agreement (AKA) Version-2", RFC 4169, November
2005.
[RFC4271] Rekhter, Y., Ed., Li, T., Ed., and S. Hares,
Ed., "A Border Gateway Protocol 4 (BGP-4)", RFC
4271, January 2006.
[RFC4283] Patel, A., Leung, K., Khalil, M., Akhtar, H.,
and K. Chowdhury, "Mobile Node Identifier
Option for Mobile IPv6 (MIPv6)", RFC 4283,
November 2005.
[RFC4306] Kaufman, C., Ed., "Internet Key Exchange
(IKEv2) Protocol", RFC 4306, December 2005.
[RFC4340] Kohler, E., Handley, M., and S. Floyd,
"Datagram Congestion Control Protocol (DCCP)",
RFC 4340, March 2006.
[RFC4346] Dierks, T. and E. Rescorla, "The Transport
Layer Security (TLS) Protocol Version 1.1", RFC
4346, April 2006.
[RFC4366] Blake-Wilson, S., Nystrom, M., Hopwood, D.,
Mikkelsen, J., and T. Wright, "Transport Layer
Security (TLS) Extensions", RFC 4366, April
2006.
[RFC4395] Hansen, T., Hardie, T., and L. Masinter,
"Guidelines and Registration Procedures for New
URI Schemes", BCP 115, RFC 4395, February 2006.
[RFC4422] Melnikov, A., Ed., and K. Zeilenga, Ed.,
"Simple Authentication and Security Layer
(SASL)", RFC 4422, June 2006.
[RFC4446] Martini, L., "IANA Allocations for Pseudowire
Edge to Edge Emulation (PWE3)", BCP 116, RFC
4446, April 2006.
[RFC4520] Zeilenga, K., "Internet Assigned Numbers
Authority (IANA) Considerations for the
Lightweight Directory Access Protocol (LDAP)",
BCP 64, RFC 4520, June 2006.
[RFC4589] Schulzrinne, H. and H. Tschofenig, "Location
Types Registry", RFC 4589, July 2006.
[RFC4727] Fenner, B., "Experimental Values In IPv4, IPv6,
ICMPv4, ICMPv6, UDP, and TCP Headers", RFC
4727, November 2006.
[RFC4995] Jonsson, L-E., Pelletier, G., and K. Sandlund,
"The RObust Header Compression (ROHC)
Framework", RFC 4995, July 2007.
Authors' Addresses ๐ก
Thomas Narten
IBM Corporation
3039 Cornwallis Ave.
PO Box 12195 - BRQA/502
Research Triangle Park, NC 27709-2195
Phone: 919-254-7798
EMail: narten@us.ibm.com
Harald Tveit Alvestrand
Google
Beddingen 10
Trondheim, 7014
Norway
EMail: Harald@Alvestrand.no
Full Copyright Statement โ๏ธ
Copyright (C) The IETF Trust (2008).
This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.
This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Intellectual Property ๐
The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.
Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.
The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.
๐ฆ where this page comes from
- ietf: rfc5226 2008-05
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms