Re: Last Call: <draft-leiba-cotton-iana-5226bis-12.txt> (Guidelines for Writing an IANA Considerations Section in RFCs) to Best Current Practice

Joe Touch <> Wed, 27 April 2016 18:28 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 4138D12DBA1; Wed, 27 Apr 2016 11:28:21 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.896
X-Spam-Status: No, score=-2.896 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RP_MATCHES_RCVD=-0.996] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id E3Wyhs07q4Cy; Wed, 27 Apr 2016 11:28:19 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id C0D4412B067; Wed, 27 Apr 2016 11:28:19 -0700 (PDT)
Received: from [] ([]) (authenticated bits=0) by (8.13.8/8.13.8) with ESMTP id u3RIRrFa009181 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT); Wed, 27 Apr 2016 11:27:54 -0700 (PDT)
Subject: Re: Last Call: <draft-leiba-cotton-iana-5226bis-12.txt> (Guidelines for Writing an IANA Considerations Section in RFCs) to Best Current Practice
To: Brian E Carpenter <>,,
References: <> <057701d19ffa$2291b5b0$67b52110$> <>
From: Joe Touch <>
Message-ID: <>
Date: Wed, 27 Apr 2016 11:27:52 -0700
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.7.2
MIME-Version: 1.0
In-Reply-To: <>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-MailScanner-ID: u3RIRrFa009181
X-ISI-4-69-MailScanner: Found to be clean
Archived-At: <>
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: IETF-Discussion <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Wed, 27 Apr 2016 18:28:21 -0000

Hi, all,

Sorry, but this seems incorrect to me.

1. if you want to reserve codepoints for an API (e.g., so that "0" means
"let the OS decide" or "any"), then you don't "reserve" it; you remove
it from the namespace. I.e., instead of defining the namespace as 0-255,
you define the namespace as 1-255 and indicate that the value of 0 is
specifically excluded *FROM THE PROTOCOL*.

Otherwise, you end up with exactly the problem we have with things like
transport port numbers - where 0 is effectively excluded as a protocol
codepoint because no API can access it, but it's not technically
excluded from being used inside a packet.

I would absolutely advise against claiming that 0 is Reserved to assist
with protocol development unless that's indicated in the specification
itself to avoid this problem in the future.

2. there is absolutely no reason to reserve the maximum value for
codepoint space extension; ANY reserved codepoint can accomplish that.
It might be useful to indicate that at least one codepoints SHOULD be
reserved for such extension, and that this is typically the highest
value -- but if you need to list a reason, the only one that comes to
mind is convenience of list management. Having it at the end makes it
easy to see. But there's no algorithmic reason for suggesting this.

Some other comments for this version:

1.1 - it's useful to remind authors to use only symbolic names for
codepoints until assignments are completed by IANA. Those symbolic names
should be used throughout the document AND in the IANA considerations

4.2 - experimental use codepoints should clearly indicate whether they
are allowed or prohibited in widescale deployments on the public
Internet; this is a good place to cite the methods described in RFC 6994
as potentially useful for other shared use of experimental codepoints.

4.3 - other guidance to expert reviewers appears in the BCP165 document
pair (RFC6335 and RFC7605).

4.5 - transport ports should be listed under the examples provided in
this section, as they are one of the most frequently assigned this way.

4.8 / 4.10 - Transport ports in the system range (0-1023) are assigned
based on *either* IETF approval or IESG review, i.e., there's a case
where either sections 4.8 or 4.10 apply. That might be a useful example.

4.11 - examples where IETF review or standards action are needed include
cases where a namespace involves privilege, i.e., where simply using
that space could provide increased access (e.g., transport ports in the
system range).

4.12 - another place where transport ports are a good example of using
multiple policies - both for different subsets of the namespace AND
within one of those subsets.

6. another term useful to include here is "known unauthorized use". It
is a flag that can accompany any of these registration status values
listed and indicates when a codepoint is known to be deployed in the
Internet in ways other than as indicated. That helps sysadmins
understand when they see the codepoint whether it is likely that the
assignee is involved or not. NOTE: I do not recommend indicating the
name or contact point of the squatter because that only helps validate
their squatting.

7. it's useful to note that documents in registries should be provided
by a relatively permanent reference; a URL alone is typically
insufficient (and dead within a few months).

9.3 - this section ought to explain the term "squatting" and its impact.
In particular, I would like to see the IETF assert the claim that "use
of a codepoint prior to its assignment should not influence a subsequent
consideration of assignment", and reiterate that Internet drafts, RFCs,
and other documentation must avoid using specific codepoints unless
assigned for that purpose (i.e., assigned for that use specifically or
consistent with generic assignments - the latter including experimental
codepoints when deployed in ways consistent with such experiments)

9.4 - this section ought to differentiate between IANA revocation,
assignee release, and transfer. I recommend seeing RFC6335 about
transfers - e.g., transfers ought to be prohibited in favor of
release/request where each of those two steps should need to pass the
same hurdles as if they were independent.

Speaking from experience, this section should also discuss what happens
to abandoned contacts, i.e., when a codepoint is assigned based on a
point of contact or assignee who no longer works at a company of whose
company no longer exists.


On 4/26/2016 4:47 PM, Brian E Carpenter wrote:
> On 27/04/2016 08:28, Adrian Farrel wrote:
> ...
>> Section 6
>> Include hint on best practice for top and bottom of ranges.
>> OLD
>>      Reserved: Not assigned and not available for assignment.  Reserved
>>            values are held for special uses, such as to extend the
>>            namespace when it becomes exhausted.  Note that this is
>>            distinctly different from "Unassigned".
>> NEW
>>      Reserved: Not assigned and not available for assignment.  Reserved
>>            values are held for special uses, such as to extend the
>>            namespace when it becomes exhausted.  Note that this is
>>            distinctly different from "Unassigned".
>>           It is common practice for documents that define numeric registries
>>           to mark the zero value as "Reserved" because this often aids protocol 
>>           implementations.
> I'm not sure about the "because" clause. It sounds a bit like an excuse for
> sloppy coding. Defining it explicitly as a no-op would seem like better
> practice in many cases.
>    Brian
>>           It is also common practice to mark the maximum
>>           value as "Reserved" so that it can be used as part of a strategy to
>>           extend the registry if the range proves too small in the future.
>> END
>> Thanks,
>> Adrian