Internet DRAFT - draft-woodworth-npn

draft-woodworth-npn







DNSOP Working Group                                         J. Woodworth
Internet-Draft                                                 D. Ballew
Updates: 2308, 4033, 4034, 4035 (if                    CenturyLink, Inc.
         approved)                            S. Bindinganaveli Raghavan
Intended status: Standards Track                  Hughes Network Systems
Expires: January 22, 2020                                    D. Lawrence
                                                                  Oracle
                                                           July 21, 2019


                  Numeric Pattern Normalization (NPN)
                         draft-woodworth-npn-00

Abstract

   The Numeric Pattern Normalization (NPN) resource record provides pre-
   processing information to reduce the number of possible variants
   which can be generated by pattern-based RR's into a single signable
   record.

Ed note

   Text inside square brackets ([]) is additional background
   information, answers to frequently asked questions, general musings,
   etc.  They will be removed before publication.  This document is
   being collaborated on in GitHub at <https://github.com/ioneyez/npn>.
   The most recent version of the document, open issues, etc should all
   be available here.  The authors gratefully accept pull requests.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at https://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on January 22, 2020.






Woodworth, et al.       Expires January 22, 2020                [Page 1]

Internet-Draft                     NPN                         July 2019


Copyright Notice

   Copyright (c) 2019 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (https://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
     1.1.  Background and Terminology  . . . . . . . . . . . . . . .   3
   2.  The NPN Resource Record . . . . . . . . . . . . . . . . . . .   3
     2.1.  NPN RDATA Wire Format . . . . . . . . . . . . . . . . . .   3
     2.2.  The NPN RR Presentation Format  . . . . . . . . . . . . .   5
     2.3.  Use and Normalization Processing of NPN RRs . . . . . . .   5
       2.3.1.  Pseudocode for NPN Normalization Processing . . . . .   6
   3.  Security Considerations . . . . . . . . . . . . . . . . . . .   7
     3.1.  Normalized (NPN-Based) Signatures . . . . . . . . . . . .   7
   4.  Privacy Considerations  . . . . . . . . . . . . . . . . . . .   7
   5.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   8
   6.  Acknowledgments . . . . . . . . . . . . . . . . . . . . . . .   8
   7.  References  . . . . . . . . . . . . . . . . . . . . . . . . .   8
     7.1.  Normative References  . . . . . . . . . . . . . . . . . .   8
     7.2.  Informative References  . . . . . . . . . . . . . . . . .   9
   Appendix A.  NPN Examples . . . . . . . . . . . . . . . . . . . .   9
     A.1.  EXAMPLE 1 . . . . . . . . . . . . . . . . . . . . . . . .   9
     A.2.  EXAMPLE 2 . . . . . . . . . . . . . . . . . . . . . . . .  10
     A.3.  EXAMPLE 3 . . . . . . . . . . . . . . . . . . . . . . . .  11
     A.4.  EXAMPLE 4 . . . . . . . . . . . . . . . . . . . . . . . .  12
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  13

1.  Introduction

   The Numeric Pattern Normalization (NPN) resource record provides
   methods to generate DNSSEC signatures for pattern-based "synthesized"
   RR's, and validation of such signatures.  It does this by introducing
   a pre-processing step of pattern substitution into both the signing
   and validating processes.





Woodworth, et al.       Expires January 22, 2020                [Page 2]

Internet-Draft                     NPN                         July 2019


1.1.  Background and Terminology

   The reader is assumed to be familiar with the basic DNS and DNSSEC
   concepts described in [RFC1034], [RFC1035], [RFC4033], [RFC4034], and
   [RFC4035]; subsequent RFCs that update them in [RFC2181] and
   [RFC2308]; and DNS terms in [RFC7719].

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in [RFC2119].

2.  The NPN Resource Record

   The Numeric Pattern Normalization (NPN) resource record provides pre-
   processing information to reduce the number of possible variants that
   can be generated by a pattern-based RR into one signable record.  By
   identifying parts of the dynamic resource record which should be
   ignored or represented as a static value, one exemplar record and
   signature is used to validate all other records that match the
   pattern.

   For example, a pattern replacement like pool-A-${1}-${2}.example.com
   that generates PTR records for pool-A-0-0.example.com through pool-
   A-255-255.example.com would have an NPN record that signals a
   validating resolver to verify all pool-A-#-#.example.com names
   against a record for pool-A-9-9.example.com.

   Though it is conceivable that forged records could be validated as
   legitimate, such forged records must meet strict criteria and match
   patterns which define and are considered legitimate.  The added
   measure is a notable improvement in security over being hosted in
   insecure zones.

   The Type value for the NPN RR type is TBD.

   The NPN RR is class independent and has no special TTL requirements.

2.1.  NPN RDATA Wire Format

   The RDATA for an NPN RR consists of a 2 octet Match Type field, a 1
   octet Flags field, a 1 octet Owner Ignore field, a 1 octet Left
   Ignore field and a 1 octet Right Ignore field.









Woodworth, et al.       Expires January 22, 2020                [Page 3]

Internet-Draft                     NPN                         July 2019


                        1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           Match Type          |     Flags     |  Owner Ignore |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Left Ignore  |  Right Ignore |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Match Type indicates the type of the RRset with which this record is
   associated.

   Flags defines additional processing parameters for data
   normalization.  This document defines only the Period-As-Number flag
   "." (position 5), the Hyphen-As-Number "-" (position 6) and the
   hexadecimal flag "X" (position 7).  All other flags are reserved for
   future use.

    0 1 2 3 4 5 6 7
   +-+-+-+-+-+-+-+-+
   |Reserved |.|-|X|
   +-+-+-+-+-+-+-+-+

   Bits 0-4: Reserved for future

   Bit    5: Period As Number (.) Flag
      If 0, periods are treated as non-digits.
      If 1, periods will be processed as digits.

   Bit    6: Hyphen As Number (-) Flag
      If 0, hyphens are treated as non-digits.
      If 1, hyphens will be processed as digits.

   Bit    7: Hexadecimal (X) Flag
      If 0, numeric digits include only 0-9.
      If 1, numeric digits include a-f in addition to 0-9.

   Owner Ignore defines the number of octets in the owner name, as
   counted from the left, which MUST be ignored by the normalization
   process.  This field offers additional security to pattern based
   signatures which may not be immediately apparent.  By restricting the
   leftmost characters defined by this value, ultimately the length of
   the generated portion of the accompanying synthesized RR will be
   confined accordingly.

   Left Ignore defines the number of octets of the generated RDATA, as
   counted from the left, which MUST be ignored by the normalization
   process.




Woodworth, et al.       Expires January 22, 2020                [Page 4]

Internet-Draft                     NPN                         July 2019


   Right Ignore defines the number of octets of the generated RDATA, as
   counted from the right, which MUST be ignored by the normalization
   process.

2.2.  The NPN RR Presentation Format

   Match Type is represented as an RR type mnemonic or with [RFC3597]'s
   generic TYPE mechanism.

   Flags is a string of characters indicating the status of each bit as
   per the following table.  The characters can appear in any order.

   +------------------+-----------+-----------+
   |       Flag       |   Unset   |    Set    |
   +------------------+-----------+-----------+
   | Period As Number |           |     .     |
   +------------------+-----------+-----------+
   | Hyphen As Number |           |     -     |
   +------------------+-----------+-----------+
   |   Hexadecimal    |     9     |     f     |
   +------------------+-----------+-----------+

   Owner Ignore, Left Ignore, and Right Ignore are displayed as unsigned
   decimal integers, ranging from 0 through 255.

2.3.  Use and Normalization Processing of NPN RRs

   This document provides a minor yet significant modification to DNSSEC
   regarding how RRsets will be signed or verified.  Specifically the
   Signature Field of [RFC4034], Section 3.1.8.  Prior to processing
   into canonical form, signed zones may contain associated RRs where;
   owner, class and type of a non NPN RR directly corresponds with an
   NPN RR matching owner, class and Match Type.  If this condition
   exists the NPN RR's RDATA defines details for processing the
   associated RDATA into a "Normalized" format.  Normalized data is
   based on pre-canonical formatting and zero padded for "A" and "AAAA"
   RR types for acceptable precision during the process.  This concept
   will become clearer in the NPN pseudocode and examples provided in
   the sections to follow.

   The rules for this transformation are simple:

   o  For RR's Owner field, characters from the beginning to the index
      of the Owner Ignore value or the final string of characters
      belonging to the zone's ORIGIN MUST NOT be modified by this
      algorithm.  This value is intended to provide additional
      limitations on the query portion further minimizing the risk of
      spoofed RR's matching NPN-based signatures.



Woodworth, et al.       Expires January 22, 2020                [Page 5]

Internet-Draft                     NPN                         July 2019


   o  For RR's RDATA field, character from beginning to the index of
      Left Ignore value or characters with index of Right Ignore value
      to the end MUST NOT be modified by this algorithm.

   o  In the remaining portion of both Owner and RDATA strings of
      numeric data, defined as character "0" through "f" or "0" through
      "9" depending on whether or not the Hexadecimal flag is set or
      not, MUST be consolidated to a single character and set to the
      highest value defined by the Hexadecimal flag.  Examples may be
      found in the following section.  If period-as-number or hyphen-as-
      number flags are set whichever are used ("." or "-") would be
      treated as part of the number and consolidated where appropriate.

   Once the normalization has been performed the signature will continue
   processing into canonical form using the normalized RRs in the place
   of original ones.

   If multiple NPN RR's resolve to the same owner and type, it MUST be
   assumed either multiple overlapping pattern-based generation RR's
   coexist for the same owner.  In this scenario, the validation
   algorithm SHOULD be attempted against all NPN RR's until a successful
   validation is found or no NPN's for this owner and type remain.
   While multiple overlapping pattern-based generation SHOULD be
   discouraged, future pattern-based RR's may necessitate this condition
   so it must be accounted for.

   NPN RRs MAY be included in the "Additional" section to provide a hint
   of the NPN processing required for the verification path.

   It is important to note, properly sizing the Ignore fields is
   critical to minimizing the risk of spoofed signatures.  Never
   intentionally set all Ignore values to zero in order to make
   validation easier as it places the validity of zone data at risk.
   Only accompany RRs which are pattern derived (such as BULK) with NPN
   records as doing so may unnecessarily reduce the confidence level of
   generated signatures.

2.3.1.  Pseudocode for NPN Normalization Processing

   This section provides a simple demonstration of process flow for NPN
   rdata normalization and DNSSEC signatures.

   The pseudocode provided below assumes all associated RRs are valid
   members of a DNSSEC-compatible RRset, including pattern-generated
   ones.






Woodworth, et al.       Expires January 22, 2020                [Page 6]

Internet-Draft                     NPN                         July 2019


      for rr in rrset
          if (has_NPN<rr.owner, rr.class, rr.type>)
              rr.rdata_normal = NPN_normalize<rr.rdata>
              add_to_sigrrset<NPN.owner, rr.class, rr.type,
                  rr.rdata_normal>
              next
          else
              add_to_sigrrset<rr.owner, rr.class, rr.type, rr.rdata>
              next

      process_canonical_form<sigrrset>

      dnssec_sign<sigrrset>

   Similar logic MUST be used for determining DNSSEC validity of RRsets
   in validating nameservers for signatures generated based on NPN
   normalization.

3.  Security Considerations

   The NPN RR is intended to be used only with the offline-signing of
   pattern-based RR's where there is an expected minimal security
   impact.  Use of NPN RR's for other purposes is strongly discouraged
   and falls outside the scope of this document.

3.1.  Normalized (NPN-Based) Signatures

   This solution provides a flexible solution as nameservers without on-
   the-fly signing capabilities can still support signatures for
   pattern-based records.  The down side to this solution is it requires
   NPN resolver support for validation.

   It has been pointed out that due to this limitation, creation of
   DNSSEC-signed pattern-based RRs requiring NPN support SHOULD be
   formally discouraged until such time a respectable percentage (>80%)
   of validating resolvers in-the-wild possess NPN processing
   capabilities.  Until that time, on-the-fly signing and unsigned
   records offer the intended capabilities for pattern-based RR's, while
   requiring zero new features to support their resolution.  Given
   enough time, enough nameservers will be patched and upgraded for
   unrelated reasons and by means of simple attrition can supply a level
   of inertia and eventually widespread adoption can be assumed.

4.  Privacy Considerations

   NPN records do not introduce any new privacy concerns to DNS data.





Woodworth, et al.       Expires January 22, 2020                [Page 7]

Internet-Draft                     NPN                         July 2019


5.  IANA Considerations

   IANA is requested to assign numbers for the NPN DNS resource record
   type identified in this document.

6.  Acknowledgments

   This document was created as an extension to the DNS infrastructure.
   As such, many people over the years have contributed to its creation
   and the authors are appreciative to each of them even if not thanked
   or identified individually.

   A special thanks is extended for the kindness, wisdom and technical
   advice of Robert Whelton (CenturyLink, Inc.) and Gary O'Brien
   (Secure64).

7.  References

7.1.  Normative References

   [RFC1034]  Mockapetris, P., "Domain names - concepts and facilities",
              STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987,
              <https://www.rfc-editor.org/info/rfc1034>.

   [RFC1035]  Mockapetris, P., "Domain names - implementation and
              specification", STD 13, RFC 1035, DOI 10.17487/RFC1035,
              November 1987, <https://www.rfc-editor.org/info/rfc1035>.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.

   [RFC2181]  Elz, R. and R. Bush, "Clarifications to the DNS
              Specification", RFC 2181, DOI 10.17487/RFC2181, July 1997,
              <https://www.rfc-editor.org/info/rfc2181>.

   [RFC2308]  Andrews, M., "Negative Caching of DNS Queries (DNS
              NCACHE)", RFC 2308, DOI 10.17487/RFC2308, March 1998,
              <https://www.rfc-editor.org/info/rfc2308>.

   [RFC2317]  Eidnes, H., de Groot, G., and P. Vixie, "Classless IN-
              ADDR.ARPA delegation", BCP 20, RFC 2317,
              DOI 10.17487/RFC2317, March 1998,
              <https://www.rfc-editor.org/info/rfc2317>.






Woodworth, et al.       Expires January 22, 2020                [Page 8]

Internet-Draft                     NPN                         July 2019


   [RFC3597]  Gustafsson, A., "Handling of Unknown DNS Resource Record
              (RR) Types", RFC 3597, DOI 10.17487/RFC3597, September
              2003, <https://www.rfc-editor.org/info/rfc3597>.

   [RFC4033]  Arends, R., Austein, R., Larson, M., Massey, D., and S.
              Rose, "DNS Security Introduction and Requirements",
              RFC 4033, DOI 10.17487/RFC4033, March 2005,
              <https://www.rfc-editor.org/info/rfc4033>.

   [RFC4034]  Arends, R., Austein, R., Larson, M., Massey, D., and S.
              Rose, "Resource Records for the DNS Security Extensions",
              RFC 4034, DOI 10.17487/RFC4034, March 2005,
              <https://www.rfc-editor.org/info/rfc4034>.

   [RFC4035]  Arends, R., Austein, R., Larson, M., Massey, D., and S.
              Rose, "Protocol Modifications for the DNS Security
              Extensions", RFC 4035, DOI 10.17487/RFC4035, March 2005,
              <https://www.rfc-editor.org/info/rfc4035>.

7.2.  Informative References

   [RFC7719]  Hoffman, P., Sullivan, A., and K. Fujiwara, "DNS
              Terminology", RFC 7719, DOI 10.17487/RFC7719, December
              2015, <https://www.rfc-editor.org/info/rfc7719>.

Appendix A.  NPN Examples

A.1.  EXAMPLE 1

   2.10.in-addr.arpa. 86400 IN BULK PTR (
                                    [0-255].[0-10].2.10.in-addr.arpa.
                                    pool-A-${1}-${2}.example.com.
                               )
   2.10.in-addr.arpa. 86400 IN NPN  PTR 9 0 7 13

   For the BULK RR used in this example, a query for the PTR of address
   10.2.3.44 would match the for the query name 44.3.2.10.in-addr.arpa,
   resulting in the generation of a PTR to pool-A-3-44.example.com as
   the response.

   By protecting the "Ignore" characters from the generated RR's RDATA
   the focus for normalization becomes "3-44" as illustrated below.









Woodworth, et al.       Expires January 22, 2020                [Page 9]

Internet-Draft                     NPN                         July 2019


     0 1 2 3 4 5 6 7
                   v---------
       p o o l - A - 3 - 4 4 . e x a m p l e . c o m .
                    ---------^
                             1 1 1 1
                             3 2 1 0 9 8 7 6 5 4 3 2 1 0

   Everything to the left of "3-44" will remain intact, as will
   everything to its right.  The remaining characters will be processed
   for digits between 0 and 9 as indicated by the NPN record's
   hexadecimal flag 9, and each run of digits replaced by the single
   character "9".  The final Normalized RDATA for *.2.10.in-addr.arpa
   would therefore become pool-A-9-9.example.com., and its signature
   would be based on this value to cover all possible permutations of
   the pool-A-${1}-${2}.example.com replacement pattern.

   Since the validating nameserver would use the identical NPN record
   for processing and comparison, all RRs generated by the BULK record
   can now be verified with a single signature.

A.2.  EXAMPLE 2

   This example contains a classless IPv4 delegation on the /22 CIDR
   boundary as defined by [RFC2317].  The network for this example is
   "10.2.0/22" delegated to a nameserver "ns1.sub.example.com.".  RRs
   for this example are defined as:

   $ORIGIN 2.10.in-addr.arpa.
   0-3 86400 IN      NS    ns1.sub.example.com.
       86400 IN BULK CNAME [0-255].[0-3] ${*|.}.0-3
       86400 IN NPN  CNAME 9 0 0 23

   For this example, a query of "10.2.2.65" would enter the nameserver
   as "65.2.2.10.in-addr.arpa." and a "CNAME" RR with the RDATA of
   "65.2.0-3.2.10.in-addr.arpa." would be generated.

   By protecting the "Ignore" characters from the generated RR's RDATA
   the focus for normalization becomes "65.2" as illustrated below.

          0
          v---------
            6 5 . 2 . 0 - 3 . 2 . 1 0 . i n - a d d r . a r p a .
           ---------^
                    2 2 2 2 1 1 1 1 1 1 1 1 1 1
                    3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0

   Everything to the left of "65.2" will remain intact as will
   everything to its right.  The remaining characters will be processed



Woodworth, et al.       Expires January 22, 2020               [Page 10]

Internet-Draft                     NPN                         July 2019


   for digits from 0 through 9 as indicated by the NPN record's
   hexadecimal flag "9", with each run replaced by the single character
   "9".  The final normalized RDATA would therefore become 9.9.0-
   3.2.10.in-addr.arpa and its signature would be based on this
   normalized RDATA field.  This new normalized string would be used as
   an RDATA for the wildcard label of 2.10.in-addr.arpa now encompassing
   all possible permutations of the ${*|.}.0-3.2.10.in-addr.arpa.
   pattern.

   As in example 1, the validatating resolver would use the same NPN
   record for comparison.

A.3.  EXAMPLE 3

   This example provides reverse logic for example 1 by providing an
   IPv4 address record for a requested hostname.  For this example the
   query is defined as an A record for pool-A-3-44.example.com, with an
   origin of example.com.  RRs for this example are defined as:

   example.com. 86400 IN BULK A (
                                      pool-A-[0-10]-[0-255]
                                      10.2.${*}
                                     )
   example.com. 86400 IN NPN  A 9 0 8 0

   By protecting the "Ignore" characters from the generated RR's RDATA
   the focus for normalization becomes "003.044" as illustrated below.

                   0 1 2 3 4 5 6 7 8
                                   v--------------
                     0 1 0 . 0 0 2 . 0 0 3 . 0 4 4
                                    ---------------^
                                                   0

   This example illustrates a key point about NPN records; since they
   are pre-canonical they MUST operate on a strict subset of WIRE
   formatted data.  For A and AAAA records this means the "Ignore"
   fields are based on zero padded data.  In this example our generated
   record MUST be converted into "010.002.003.044" (shown above) prior
   to processing.  After processing, wire format would become
   "0x0A02032C" (shown in hexadecimal).  This format would be too
   imprecise for normalization so padded decimal is used.

   Everything to the left of "003.044" will remain intact as will
   everything to its right.  The remaining characters will be processed
   for digits between 0 and 9 as indicated by the NPN record's
   hexadecimal flag "9" and each run replaced by the single character
   "9".  The final Normalized RDATA would therefore become 10.2.9.9 and



Woodworth, et al.       Expires January 22, 2020               [Page 11]

Internet-Draft                     NPN                         July 2019


   its signature would be based on this normalized RDATA field.  This
   new normalized A RR would be used as an RDATA for the wildcard label
   of "*.example.com." now encompassing all possible permutations of the
   10.2.${*} pattern.

A.4.  EXAMPLE 4

   This example provides similar logic for an IPv6 AAAA record.  For
   this example the query is defined as an AAAA record for pool-A-ff-
   aa.example.com with an origin of example.com..  RRs for this example
   are defined as:

   example.com. 86400 IN BULK AAAA (
                                      pool-A-[0-ffff]-[0-ffff]
                                      fc00::${1}:${2}
                                   )
   example.com. 86400 IN NPN  AAAA X 0 30 0

   By protecting the "Ignore" characters from the generated RR's RDATA
   the focus for normalization becomes "00ff:00aa" as illustrated below.

                         1 1 1 1 1 1 1 1 1 1 2 2
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

       f c 0 0 : 0 0 0 0 : 0 0 0 0 : 0 0 0 0 : -/-/

     4 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2 2 2 2 2 1
     0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9
      /-/-/- . . . . . . . . . . . . . . . . . . . . . . . . -/-/-/
                             2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4
                             1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
                                               v------------------
                        /-/- 0 0 0 0 : 0 0 0 0 : 0 0 f f : 0 0 a a
                                                -------------------^
                           2 1 1 1 1 1 1 1 1 1 1
                           0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0

   This example reinforces the point on pre-canonical processing of NPN
   records; they MUST operate on a strict subset of WIRE formatted data.
   For A and AAAA records this means the "Ignore" fields are based on
   zero padded data.  In this example our generated record MUST be
   converted into "fc00:0000:0000:0000:0000:0000:00ff:00aa" (shown
   above) prior to processing.  After processing, wire format would
   become "0xFC000000000000000000000000FF00AA" (shown in hexadecimal).
   This format is slightly misleading as it is truly only 16 bytes of
   WIRE data and would be too imprecise for normalization so padded
   hexadecimal is used.




Woodworth, et al.       Expires January 22, 2020               [Page 12]

Internet-Draft                     NPN                         July 2019


   Everything to the left of "00ff:00aa" will remain intact as will
   everything to its right.  The remaining characters will be processed
   for numbers between "0" and "f" as indicated by the NPN record's
   hexadecimal flag "X" and each run replaced by the single character
   "f".  The final Normalized RDATA would therefore become "fc00::f:f"
   and its signature would be based on this "normalized" RDATA field.
   This new "normalized" "AAAA" RR would be used as an RDATA for the
   wildcard label of *.example.com now encompassing all possible
   permutations of the "fc00::${1}:${2}" pattern.

Authors' Addresses

   John Woodworth
   CenturyLink, Inc.
   4250 N Fairfax Dr
   Arlington  VA 22203
   USA

   Email: John.Woodworth@CenturyLink.com


   Dean Ballew
   CenturyLink, Inc.
   2355 Dulles Corner Blvd, Ste 200 300
   Herndon  VA 20171
   USA

   Email: Dean.Ballew@CenturyLink.com


   Shashwath Bindinganaveli Raghavan
   Hughes Network Systems
   11717 Exploration Lane
   Germantown  MD 20876
   USA

   Email: shashwath.bindinganaveliraghavan@hughes.com


   David C Lawrence
   Oracle

   Email: tale@dd.org








Woodworth, et al.       Expires January 22, 2020               [Page 13]