Subject: Re: [Idr] WG adoption requested for draft-hares-idr-update-attrib-low-bits-fix-01

From: "Chris Hall" <[email-masked]>
Date: Sat, 16 Mar 2013 11:11:15 -0000

Enke Chen wrote (on Thu 14-Mar-2013 at 21:40 +0000):
> I am not suggesting revising old documents.  Just the contrary, I
> do not see a need to redefine/clarify the word "send/sent". The
> definition in the dictionary is clear and fits well in the text
> for the reserved bits of the attribute flag.

Well, yes... "sent" can cover all cases, but can also cover any subset
of them equally well.

Since we're in the realm of apparent shortage of crystal-clarity... if
the new text is:

  The lower-order four bits of the Attribute Flags octet are unused.
  They MUST be zero when originated or propagated.  When received,
  any MUST be accepted and ignored.

...is "originated or propagated" well defined for attributes and their
bits ?  Does that unambiguously cover all the cases ?

It seems clear that when a route is being originated, its attributes
are being originated.

However, where a route is being propagated, each attribute may be: (a)
passed unchanged (recognised or not), (b) modified, (c) replaced, (d)
entirely new, ...  Some of those look like propagating an attribute,
some look like originating one and some aren't quite either of those ?

---------------------------------------------------------------
FWIW, in the suggested new text the last sentence is ugly.  The "any"
grates... for "any MUST be accepted" it would be "any value of the
reserved bits", but for "any MUST be ignored" I feel "all" would be
more natural.  Further, while "MUST be (accepted and ignored)" is (one
assumes) the intended parsing, "(MUST be accepted) and ignored" is
also possible.  Finally, I guess that the "accepted" is intended to
convey the fact that non-zero bits are not an error -- but that seems
a little oblique, particularly under the circumstances.

Taking another turn around the pin-head, how about replacing:

  They MUST be zero when sent and MUST be ignored when
  received.

by:

  They MUST be zero whenever sent and MUST be ignored when
  received.

However, part of the problem appears to be that what looks like belt
and braces has been the source of some confusion.  On one hand, if the
bits MUST be zero when sent, then presumably it's an error if they
aren't zero... so a "careful" implementation might want to police
that.  On the other hand, since the receiver MUST ignore the bits,
there is implied licence to do something new and interesting with
them, in a downwards-compatible way.

The position could be described as:

  They MUST be ignored when received.  For the avoidance of
  doubt: receivers MUST NOT treat a non-zero value of these
  bits as an error.  However, for historical reasons, senders
  cannot depend on all receivers correctly following this rule,
  and MUST send zero, at all times.

Chris