Subject: [Enum] 3761bis pre-LC comments

From: Lawrence Conroy <[email-masked]>
Date: Tue, 26 May 2009 19:54:29 +0100

Hi Esteemed co-chair and co-author of 3761, folks,
  Re. "large objections to 3761bis ..."

I already mentioned this, but there has been no comment on (or off)  
list, so I repeat it.
It IS important, so I'd appreciate some response. I think we NEED to  
change section 2.
The current version is incorrect for anything but terminal rules.

For the rationale, see my original post on 2nd May:
   <http://www.ietf.org/mail-archive/web/enum/current/msg06879.html>

Since that point, I have polished the proposed text, so here's what I  
think is a sensible
and necessary replacement -- the changes are to the current section  
2.2 and 2.4 intro.
The 2.4 sub-sections have just been re-numbered and I've also zapped a  
couple of typos.

I suggest that this could be rolled into the next version along with  
any other changes
reflecting LC or IESG comments (there is always another version in  
that phase, I know it :).

Comments please?

all the best,
   Lawrence

---------------------------------------------------------------------------
2.1.  Application Unique String
   The Application Unique String (AUS) is a fully qualified E.164 number
   minus any non-digit characters except for the '+' character which
   appears at the beginning of the number.  The '+' is kept to provide a
   well understood anchor for the AUS in order to distinguish it from
   other telephone numbers that are not part of the E.164 namespace.

   For example, the E.164 number could start out as "+44-116-496-0348".
   To ensure that no syntactic sugar is allowed into the AUS, all non-
   digits except for '+' are removed, yielding "+441164960348".

2.2.  First Well Known Rule
   The First Well Known Rule converts an Application Unique String (AUS)
   into an initial key into the the Application's Rules Database. For
   ENUM, the rules database is the DNS, so this key is a domain name.

   In order to convert the AUS to a unique key in this database the
   string is converted into a domain name according to this algorithm:

      1.  Remove all characters with the exception of the digits.  For
         example, given the E.164 number "+44-20-7946-0148", this step
         would simply remove the leading '+', producing "442079460148".
      2.  Reverse the order of the digits.  Example: "841064970244"
      3.  Put dots ('.') between each digit.  Example:
         "4.4.2.0.7.9.4.6.0.1.4.8"
      4.  Append the string ".e164.arpa." to the end.  Example:
         8.4.1.0.6.4.9.7.0.2.4.4.e164.arpa.

   The E.164 namespace and this Application's database are organized in
   such a way that it is possible to go directly from the name to the
   smallest granularity of the namespace directly from the name itself,
   so no further processing is required to generate the initial key.

   This domain name is used to request NAPTR records. Each of these
   records may contain the end result or, if its flags field is empty,
   produces a new key in the form of a domain name that is used to
   request further NAPTR records from the DNS.

2.3.  Expected Output
   The output of the last DDDS loop is a Uniform Resource Identifier in
   its absolute form according to the 'absoluteURI' production in the
   Collected ABNF found in RFC 3986[RFC3986].

2.4.  Valid Databases
   At present only one DDDS Database is specified for this Application.
   "Dynamic Delegation Discovery System (DDDS) Part Three: The DNS
   Database" [RFC3403] specifies a DDDS Database that uses the NAPTR DNS
   resource record to contain the rewrite rules.  The Keys for this
   database are encoded as domain names.

   The character set used to encode the substitution expression is
   UTF-8.  The allowed input characters are all those characters that
   are allowed anywhere in an E.164 number.  The characters allowed to
   be in a Key are those that are currently defined for DNS domain
   names.

2.4.1.  Optional Name Server Additional Section Processing
   Some nameserver implementations attempt to be intelligent about items
   that are inserted into the additional information section of a given
   DNS response.  For example, BIND will attempt to determine if it is
   authoritative for a domain whenever it encodes one into a packet.  If
   it is, then it will insert any A records it finds for that domain
   into the additional information section of the answer until the
   packet reaches the maximum length allowed.  It is therefore
   potentially useful for a client to check for this additional
   information.

   It is also easy to contemplate an ENUM enhanced nameserver that
   understands the actual contents of the NAPTR records it is serving
   and inserts more appropriate information into the additional
   information section of the response.  Thus, DNS servers MAY interpret
   Flag values and use that information to include appropriate resource
   records in the Additional Information portion of the DNS packet.
   Clients are encouraged to check for additional information but are
   not required to do so.  See the Additional Information Processing
   section of RFC 3403 [RFC3403], Section 4.2 for more information on
   NAPTR records and the Additional Information section of a DNS
   response packet.

2.4.2.  Flags
   This Database contains a field that contains flags that signal when
   the DDDS algorithm has finished.  At this time only one flag, "U", is
   defined.  This means that this Rule is the last one and that the
   output of the Rule is a URI [RFC3986].  See RFC 3404 [RFC3404].

   If a client encounters a record with an unknown flag, it MUST ignore
   it and move to the next Rule.  This test takes precedence over any
   ordering since flags can control the interpretation placed on fields.

   A novel flag might change the interpretation of the regexp and/or
   replacement fields such that it is impossible to determine if a
   record matched a given target.

   If this flag is not present then this rule is non-terminal.  If a
   Rule is non-terminal then clients MUST use the Key produced by this
   Rewrite Rule as the new Key in the DDDS loop (i.e., causing the
   client to query for new NAPTR records at the domain name that is the
   result of this Rule).

2.4.3.  Services Parameters
   Service Parameters for this Application take the following form and
   are found in the Service field of the NAPTR record that holds a
   terminal rule. Where the NAPTR holds a non-terminal Rule, the
   Services field SHOULD be empty, and clients SHOULD ignore its
   content.

      service-field = "E2U" 1*(servicespec)
      servicespec   = "+" enumservice
      enumservice   = type 0*(subtypespec)
      subtypespec   = ":" subtype
      type          = 1*32(ALPHA / DIGIT / "-")
      subtype       = 1*32(ALPHA / DIGIT / "-")

   In other words, a non-optional "E2U" (used to denote ENUM only
   Rewrite Rules in order to mitigate record collisions) followed by one
   or more Enumservices which indicate the class of functionality a
   given end point offers.  Each Enumservice is indicated by an initial
   '+' character.

2.4.3.1.  ENUM Services
   Enumservices may be specified and registered via the process defined
   in "Guide and Template for IANA Registrations of Enumservices"
   [SV_GUIDE].  This registration process is not open to any Enumservice
   that has '-' as the second character in its type string.

   In particular, this registration process is not open to Enumservice
   types starting with the facet "X-". This "X-" facet is reserved for
   experimental or trial use, and any such Enumservices cannot be
   registered using the normal process.

   Finally, any Enumservice type that starts with the facet "P-" is
   intended for use exclusively on private networks. As such, NAPTRs
   containing Enumservice types starting "P-" should not be seen on the
   global Internet. Even if an ENUM client recognizes and can engage in
   the Enumservice, it may be incapable of resolving the URI generated
   by the containing NAPTR. These Enumservices WILL NOT be registered.

   Such Enumservices MUST NOT be provisioned in any system that provides
   answers to DNS queries for NAPTR resource record sets from entities
   outside the private network context in which these Enumservices are
   intended for use.

   Unless an ENUM client is sure that it is connected to the private
   network for which these NAPTRs are provisioned and intended, it MUST
   discard any NAPTR with an Enumservice type that starts with the "P-"
   facet.

2.4.3.2.  Compound NAPTRs and Implicit ORDER/REFERENCE Values
   It is possible to have more than one Enumservice associated with a
   single NAPTR.  These Enumservices share the same Regexp field and so
   generate the same URI.  Such a "compound" NAPTR could well be used to
   indicate a mobile phone that supports both "voice:tel" and "sms:tel"
   Enumservices.  The Services field in that case would be
   "E2U+voice:tel+sms:tel".

   A compound NAPTR can be treated as a set of NAPTRs that each hold a
   single Enumservice.  These reconstructed NAPTRs share the same ORDER
   and PREFERENCE/PRIORITY field values but should be treated as if each
   had a logically different priority.  ENUM clients SHOULD process the
   Enumservices within a compound NAPTR in a left-to-right sequence.
   ENUM provisioning systems SHOULD assume that such a processing order
   will be used and provision the Enumservices within a compound NAPTR
   accordingly.

---------------------------------------------------------------------------