<?xml version="1.0" encoidng="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<!--xml2rfc v1 used -->
<rfc ipr="trust200902"
     number="7120"
     obsoletes="4020" submissionType="IETF" consensus="yes"     
category="bcp" seriesNo="100">

<?rfc toc="yes"?> 
<?rfc symrefs="yes"?> 
<?rfc rfcedstyle="yes"?>
<?rfc tocindent="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>

<front>

   <title abbrev="Early IANA Allocation">Early IANA Allocation of Standards Track Code Points</title>

<author initials="M." surname="Cotton" fullname="Michelle Cotton">
	<organization abbrev="ICANN">
		Internet Corporation for Assigned Names and Numbers
	</organization>
	<address>
	<postal>
		<street>12025 Waterfront Drive, Suite 300</street>
		<code>90094-2536</code> <city>Los Angeles, CA</city>
		<country>United States of America</country>
		</postal>
		<phone>+1-310-823-5800</phone>
		<email>michelle.cotton@icann.org</email>
		<uri>
		http://www.icann.org/
		</uri>
	</address>
</author>
		  
    <date month="January" year="2014" />

<keyword>early allocation</keyword>
<keyword>policy</keyword>
<keyword>protocol</keyword>

<abstract>

<t>
This memo describes the process for early allocation of code points
by IANA from registries for which "Specification Required", "RFC
Required", "IETF Review", or "Standards Action" policies apply.  This
process can be used to alleviate the problem where code point
allocation is needed to facilitate desired or required implementation
and deployment experience prior to publication of an RFC, which would
normally trigger code point allocation. The procedures in this
document are intended to apply only to IETF Stream documents.
</t>

<t>
	
This document obsoletes RFC 4020.
   
</t>
   
</abstract>

</front>

<middle>

<section anchor="intro" title="Introduction">

<t>
      
In protocol specifications documented in RFCs, there is often a need to allocate code
points for various objects, messages, or other protocol entities so that implementations 
can interoperate.  Many of these code point spaces have registries handled by the 
Internet Assigned Number Authority (IANA). Several IETF policies for IANA
allocation of protocol parameters are described in RFC 5226 <xref target="RFC5226"/>.  Some
of them, such as "First Come First Served" or "Expert Review", do not require a
formal IETF action before the IANA performs allocation.  
However, in situations where code points are a scarce resource and/or the IETF community 
has consensus to retain tight control of the registry content, policies such as "IETF Review" (formerly 
"IETF Consensus"), or "Standards Action" have been used.  Such allocation policies 
present a problem in situations where implementation and/or deployment experience are 
desired or required before the document becomes an RFC.

</t>
	
<t>
    
   To break the deadlock, document authors often choose some "seemingly
   unused" code points, often by selecting the next available value from
   the registry; this is problematic because these may turn out to be different
   from those later assigned by IANA.  To make this problem worse, "pre-RFC"
   implementations are often developed and deployed based on these code
   point selections.
This creates several potential interoperability problems between early implementations 
and implementations of the final standard, as
described below:

<list style="numbers">

<t>

IANA allocates code points different from those that early implementations assumed 
would be allocated.  Early implementations won't interoperate with standard ones.

</t>

<t>

IANA allocates code points for one extension while a "pre-RFC" implementation of a 
different extension chooses the same code point. The different extensions will collide 
on the same code point in the field.

</t>

</list>

</t>
	
<t>
	
This gets in the way of the main purpose of standards; namely, to facilitate interoperable 
implementations.

</t>

<t>
	
It is easy to say that pre-RFC implementations should be kept private and should not be 
deployed; however, both the length of the standards process and the immense value of 
early implementations and early deployments suggest that finding a better
solution is worthwhile.  As an 
example, in the case of documents produced by Working Groups in the Routing Area, a
pre-RFC implementation is highly desirable and sometimes even required <xref target="RFC4794"/>, 
and early deployments provide useful feedback on the technical and operational quality 
of the specification.

</t>

<t>

This memo addresses the early allocation of code points so that
reservations are made in the IANA registries before the publication
of an RFC.  The early allocation mechanisms are applied only to spaces
whose allocation policy is "Specification Required" (where an RFC is
used as the stable reference), "RFC Required", "IETF Review", or
"Standards Action".  For an explanation of these allocation policies,
see <xref target="RFC5226"/>.

</t>

<t>
A policy for IANA early allocations was previously described in
<xref target="RFC4020"/>.  This document obsoletes RFC 4020 and includes other
registration procedures regarding the types of registries that can qualify
for early allocation. The procedures in this document are intended 
to apply only to IETF Stream documents.	
   
</t>

</section>

<section title="Conditions for Early Allocation">

<t>

The following conditions must hold before a request for early
allocation of code points will be considered by IANA:
	
<list style="letters">
		
<t>
	
       The code points must be from a space designated as "RFC                              
       Required", "IETF Review", or "Standards Action".  Additionally,
       requests for early assignment of code points from a "Specification 
       Required" registry are allowed if the specification will be published as 
       an RFC. 

</t>

<t>
	
The format, semantics, processing, and other rules related to handling the protocol entities 
defined by the code points (henceforth called "specifications") must be adequately described
in an Internet-Draft.
	
</t>

<t>
	
The specifications of these code points must be stable; i.e., if there is a change, 
implementations based on the earlier and later specifications must be seamlessly interoperable.

</t>

<t>
	
The Working Group chairs and Area Directors (ADs) judge that there is sufficient interest in the community for early (pre-RFC) implementation and deployment, or that failure to make an early allocation might lead to contention for the code point in the field.

</t>

</list>

</t>
	

</section>

<section title="Process for Early Allocation">

<t>
	
There are three processes associated with early allocation: making the request for code points; 
following up on the request; and revoking an early allocation.  It cannot be emphasized enough that
these processes must have a minimal impact on IANA itself, or they will not be feasible.

</t>

<t>
	
The processes described below assume that the document in question is the product of an IETF Working 
Group (WG).  If this is not the case, replace "WG chairs" below with "Shepherding Area Director".

</t>

<section title="Request">
   
<t>
 
The process for requesting and obtaining early allocation of code points is as follows:

<list style="numbers">

<t>
	
The authors (editors) of the document submit a request for early allocation to the Working Group 
chairs, specifying which code points require early allocation and to which document they should be 
assigned.

</t>

<t>
	
The WG chairs determine whether the conditions for early allocations described in Section 2 are met, 
particularly conditions (c) and (d).

</t>
	
<t>

The WG chairs gauge whether there is consensus within the WG that early allocation is appropriate 
<!--in the case of--> for the given document.

</t>

<t>
	
If steps 2) and 3) are satisfied, the WG chairs request approval from the Area Director(s).  The Area 
Director(s) may apply judgement to the request, especially if there is a risk of registry depletion.

</t>

<t>
	
If the Area Directors approve step 4), the WG chairs request IANA to make an early allocation.

</t>

<t>
	
IANA makes an allocation from the appropriate registry, marking it as "Temporary", valid for a period 
of one year from the date of allocation.  The date of first allocation and the date of expiry are also 
recorded in the registry and made visible to the public.

</t>

</list>

</t>

<t>
	
Note that Internet-Drafts should not include a specific value of a code point until IANA has completed the early allocation for this value.
 
</t>  
     
</section>

<section title="Follow-Up">

<t>
   
It is the responsibility of the document authors and the Working
Group chairs to review changes in the document, and especially in the
specifications of the code points for which early allocation was
requested, to ensure that the changes are backward compatible.
</t>
<t>   
If at some point changes that are not backward compatible are
nonetheless required, a decision needs to be made as to whether
previously allocated code points must be deprecated (see Section 3.3
for more information on code point deprecation).  The considerations
include aspects such as the possibility of existing deployments of
the older implementations and, hence, the possibility for a collision
between older and newer implementations in the field.
</t>
<t>   
If the document progresses to the point at which IANA normally makes
code point allocations, it is the responsibility of the authors and
the WG chairs to remind IANA that there were early allocations and
of the code point values allocated in the IANA Considerations
section of the RFC-to-be.  Allocation is then just a matter of
removing the "Temporary" tag from the allocation description.
   
</t>
   
</section>

<section title="Expiry">

<t>
      
As described in Section 3.1, each temporary assignment is recorded in
the registry with the date of expiry of the assignment. If an early
allocation expires before the document progresses to the point where
IANA normally makes allocations, the authors and WG chairs may repeat
the process described in Section 3.1 to request renewal of the code points. At
most, one renewal request may be made; thus, authors should choose
carefully when the original request is to be made.
</t>

<t>
	
As an exception to the above rule, under rare circumstances, more
than one allocation renewal may be justified. All such further
renewal requests must be reviewed by the IESG. The renewal request
to the IESG must include the reasons why such further renewal is
necessary and the WG's plans regarding the specification.

</t>

<t>
	
If a follow-up request is not made, or the document fails to progress
to an RFC, the assignment will remain visible in the registry, but the
temporary assignment will be shown to have expired as indicated by
the expiry date. The WG chairs are responsible for informing IANA
that the expired assignments are not required and that the code
points are to be marked "deprecated".
</t>

<t>
   
A deprecated code point is not marked as allocated for use as
described in any document (that is, it is not allocated) and is not
available for allocation in a future document.  The WG chairs may 
inform IANA that a deprecated code point can be 
completely  de&nbhy;allocated (i.e., made available for new allocations) at
any time after it has been deprecated. Factors influencing this
decision will include whether there may be implementations using the
previous temporary allocation and the availability of other
unallocated code points in the registry.
   
</t>

<t>
   
Implementers and deployers need to be aware that deprecation and
de-allocation could take place at any time after expiry; therefore, an
expired early allocation is best considered as deprecated.
   
</t>

<t>
	
It is not IANA's responsibility to track the status of allocations,
their expirations, or when they may be re-allocated.

</t>

<t>
	
Note that if a document is submitted for review to the IESG, and at
the time of submission some early allocations are valid (not
expired), these allocations must not be considered to have expired
while the document is under IESG consideration or is awaiting publication in the RFC
Editor's queue after approval by the IESG.
      
</t>
   
</section>

</section>

<section title="IANA Considerations">
		
<t>
			
This document defines procedures for early allocation of code points in the registries with the 
"Specification Required", "RFC Required", "IETF Review", and "Standards Action" policies and as 
such directly affects IANA.

This document removes the need for registries to be marked as specifically
allowing early allocation. IANA has updated impacted registries by removing any such markings.
			
</t>
		
</section>

<section title="Security Considerations">
      
<t>
         
It is important to keep in mind that denial-of-service attacks on IANA are
possible as a result of the processes defined in this memo.  There are two that are
immediately obvious: depletion of code space by early  
allocations and process overloading of IANA itself.  
   The processes described here
   attempt to alleviate both of these potential attacks, but they are subject to
   scrutiny by IANA to ensure that they work.  IANA may at any time
   request that the IESG suspend the procedures described in this
   document.

</t>

<t>
	
There is a significant concern that the procedures in this document could be used as an end-run 
on the IETF process to achieve code point allocation when an RFC will not be published.  For 
example, a WG or a WG chair might be pressured to obtain an early allocation for a protocol 
extension for a particular company or for another Standards Development
Organization even though it might be predicted that an IETF 
LC or IESG Evaluation would reject the approach that is documented. The
requirement for AD consent of early review is an important safeguard, and ADs
with any concern are strongly recommended to escalate the issue for IESG-wide
discussion. 

</t>
      
</section>

</middle>
   
<back>

<references title="Normative References">

	<?rfc include="reference.RFC.5226" ?>

</references>

   <references title="Informative References">
      
      
      <?rfc include="reference.RFC.4020" ?>
      <?rfc include="reference.RFC.4794" ?>
      
   </references>

<section title="Acknowledgments">

<t>
   
Many thanks to Bert Wijnen, Adrian Farrel, and Bill Fenner for their input on
RFC 4020.  Thank you  
to Kireeti Kompella and Alex Zinin for authoring RFC 4020. Thank you to Adrian
Farrel, Stewart Bryant, Leo Vegoda, John Klensin, Subramanian Moonesamy, Loa
Andersson, Tom Petch, Robert Sparks, Eric Rosen, Amanda Baber, and Pearl Liang
for their reviews of this document.  
   
</t>

</section>

</back>
</rfc>
