[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Enum] 3761bis pre-LC comments



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.

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