Network Working Group                                         T. Winters
Internet-Draft                                                   QA Cafe
Intended status: Standards Track                                O. Troan
Expires: 13 January 2022                                           cisco
                                                            12 July 2021


                The Universal IPv6 Configuration Option
                draft-troan-6man-universal-ra-option-05

Abstract

   One of the original intentions for the IPv6 host configuration, was
   to configure the network-layer parameters only with IPv6 ND, and use
   service discovery for other configuration information.  Unfortunately
   that hasn't panned out quite as planned, and we are in a situation
   where all kinds of configuration options are added to RAs and DHCP.
   This document proposes a new universal option for RA and DHCP in a
   self-describing data format, with the list of elements maintained in
   an IANA registry, with greatly relaxed rules for registration.

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 13 January 2022.

Copyright Notice

   Copyright (c) 2021 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



Winters & Troan          Expires 13 January 2022                [Page 1]


Internet-Draft   The Universal IPv6 Configuration Option       July 2021


   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
   2.  Conventions . . . . . . . . . . . . . . . . . . . . . . . . .   3
   3.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3
   4.  The Universal IPv6 Configuration option . . . . . . . . . . .   3
   5.  CBOR encoding . . . . . . . . . . . . . . . . . . . . . . . .   4
   6.  Implementation Guidance . . . . . . . . . . . . . . . . . . .   5
   7.  Implementation Status . . . . . . . . . . . . . . . . . . . .   5
   8.  Security Considerations . . . . . . . . . . . . . . . . . . .   5
   9.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   5
     9.1.  Universal configuration option  . . . . . . . . . . . . .   6
     9.2.  Initial objects in the registry . . . . . . . . . . . . .   6
       9.2.1.  CDDL/JSON Mapping Parameters to CBOR  . . . . . . . .   6
       9.2.2.  Key Registry  . . . . . . . . . . . . . . . . . . . .   7
   10. Normative References  . . . . . . . . . . . . . . . . . . . .   8
   11. Informative References  . . . . . . . . . . . . . . . . . . .   9
   Appendix A.  Acknowledgements . . . . . . . . . . . . . . . . . .   9
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .   9

1.  Introduction

   This document proposes a new universal option for the Router
   Advertisement IPv6 ND message [RFC4861] and DHCPv6 [RFC8415].  Its
   purpose is to use the RA and DHCP messages as opaque carriers for
   configuration information between an agent on a router or DHCP server
   and host / host application.

   DHCP is suited to give per-client configuration information, while
   the RA mechanism advertises configuration information to all hosts on
   the link.  There is a long running history of "conflict" between the
   two.  The arguments go; there is less fate-sharing in DHCP, DHCP
   doesn't deal with multiple sources of information, or make it more
   difficult to change information independent of the lifetimes, RA
   cannot be used to configure different information to different
   clients and so on.  And of course some options are only available in
   RAs and some options are only available in DHCP.

   While this proposal does not resolve the DHCP vs RA debate, it
   proposes a solution to the problem of a very slow process of
   standardizing new options, and the IETF spending an inordinate amount
   of time arguing over new configuration options.





Winters & Troan          Expires 13 January 2022                [Page 2]


Internet-Draft   The Universal IPv6 Configuration Option       July 2021


2.  Conventions

   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 RFC 2119 [RFC2119].

   Additionally, the key words "*MIGHT*", "*COULD*", "*MAY WISH TO*",
   "*WOULD PROBABLY*", "*SHOULD CONSIDER*", and "*MUST (BUT WE KNOW YOU
   WON'T)*" in this document are to interpreted as described in RFC 6919
   [RFC6919].

3.  Introduction

   This document specifies a new "self-describing" universal
   configuration option.  Currently new configuration option requires
   "standards action".  The proposal is that no future IETF document
   will be required.  The configuration option is described directly in
   the universal configuration IANA registry.

4.  The Universal IPv6 Configuration option

   The option data is described using the schema language CDDL
   [RFC8610], encoded in CBOR [RFC7049].

        0                   1                   2                   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
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |     Type      |    Length     |   Data ...
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                 Figure 1: IPv6 Configuration Option Format

   Fields:

   Type:  42 for Universal IPv6 Configuration Option

   Length:  The length of the option (including the type and length
      fields) in units of 8 octets.

   Data:  CBOR encoded data.

   The Option is zero-padded to nearest 8-octet boundary.

   Example of an JSON instance of the option:







Winters & Troan          Expires 13 January 2022                [Page 3]


Internet-Draft   The Universal IPv6 Configuration Option       July 2021


   {
       "ietf": {
           "dns": {
               "dnssl": [
                   "example.com"
               ],
               "rdnss": [
                   "2001:db8::1",
                   "2001:db8::2"
               ]
           },
           "nat64": {
               "prefix": "64:ff9b::/96"
           },
           "rio": [
               {
                   "prefix": "::/0",
                   "next-hop": "fe80::1"
               },
               {
                   "prefix": "2001:db8::/32",
                   "next-hop": "fe80::2"
               }
           ]
       }
   }

   The universal IPv6 Configuration option MUST be small enough to fit
   within a single IPv6 ND or DHCPv6 packet.  It then follows that a
   single element in the dictionary cannot be larger than what fits
   within a single option.  Different elements can be split across
   multiple universal configuration options (in separate packets).  All
   IANA registered elements are under the "ietf" key in the dictionary.
   Private configuration information can be included in the option using
   different keys.

   If information learnt via this option conflicts with other
   configuration information learnt via Router Advertisement messages or
   via DHCPv6, that is considered a configuration error.  How those
   conflicts should be resolved is left up to the implementation.

5.  CBOR encoding

   It is recommended that the user can configure the option using JSON.
   Likewise an application registering interest in an option SHOULD be
   able to use string keys.  The CBOR encoding to save space, uses
   integers for map keys.  The mapping table between integer and string
   map keys are part of the IANA registry for the option.



Winters & Troan          Expires 13 January 2022                [Page 4]


Internet-Draft   The Universal IPv6 Configuration Option       July 2021


   Values -23-23 encodes to a single byte in CBOR, and these values are
   reserved for IETF used map keys.

6.  Implementation Guidance

   The purpose of this option is to allow users to use the RA or DHCPv6
   as an opaque carrier for configuration information without requiring
   code changes in the option carrying infrastructure.

   On the router or DHCPv6 server side there should be an API allowing a
   user to add an element, e.g. a JSON object [RFC8259] or a pre-encoded
   CBOR string to RAs sent on a given interface or to DHCPv6 messages
   sent to a client.

   On the host side, an API SHOULD be available allowing applications to
   subscribe to received configuration elements.  It SHOULD be possible
   to subscribe to configuration object by dictionary key.

   The contents of any elements that are not recognized, either in whole
   or in part, by the receiving host MUST be ignored and the remainder
   of option's contents MUST be processed as normal.

   An implementation SHOULD provide a "JSON interface" for configuring
   the option.

7.  Implementation Status

   The Universal IPv6 configuration option sending side is implemented
   in VPP (https://wiki.fd.io/view/VPP (https://wiki.fd.io/view/VPP)).

   The implementation is a prototype released under Apache license and
   available at: https://github.com/vpp-dev/vpp/
   commit/156db316565e77de30890f6e9b2630bd97b0d61d (https://github.com/
   vpp-dev/vpp/commit/156db316565e77de30890f6e9b2630bd97b0d61d).

8.  Security Considerations

   Unless there is a security relationship between the host and the
   router (e.g.  SEND), and even then, the consumer of configuration
   information can put no trust in the information received.

9.  IANA Considerations

   IANA is requested to add a new registry for the Universal IPv6
   Configuration option.  The registry should be named "IPv6 Universal
   Configuration Information Option".

   The schema field follows the CDDL schema definition in [RFC8610].



Winters & Troan          Expires 13 January 2022                [Page 5]


Internet-Draft   The Universal IPv6 Configuration Option       July 2021


   Changes and additions to the registry follow the policies below
   [RFC8126]:

          +============================+========================+
          | Range                      | Registration Procedure |
          +============================+========================+
          | -23-23                     | Standards Action       |
          +----------------------------+------------------------+
          | 24-32767                   | Specification Required |
          +----------------------------+------------------------+
          | 32768-18446744073709551615 | Expert Review          |
          +----------------------------+------------------------+

                                  Table 1

   A new registration requires a new CBOR key to parameter name
   assignment and a CDDL definition.

9.1.  Universal configuration option

   The IANA is requested to add the universal option to the "IPv6
   Neighbor Discovery Option Formats" registry with the value of 42.

   The IANA is requested to add the universal option to the "Dynamic
   Host Configuration Protocol for IPv6 (DHCPv6) Option Codes" registry.

9.2.  Initial objects in the registry

9.2.1.  CDDL/JSON Mapping Parameters to CBOR

                 +===========================+==========+
                 | Parameter Name / JSON key | CBOR Key |
                 +===========================+==========+
                 | ietf                      | -23      |
                 +---------------------------+----------+
                 | pio                       | -22      |
                 +---------------------------+----------+
                 | mtu                       | -21      |
                 +---------------------------+----------+
                 | rio                       | -20      |
                 +---------------------------+----------+
                 | dns                       | -19      |
                 +---------------------------+----------+
                 | nat64                     | -18      |
                 +---------------------------+----------+
                 | ipv6-only                 | -17      |
                 +---------------------------+----------+
                 | pvd                       | -16      |



Winters & Troan          Expires 13 January 2022                [Page 6]


Internet-Draft   The Universal IPv6 Configuration Option       July 2021


                 +---------------------------+----------+
                 | prefix                    | -15      |
                 +---------------------------+----------+
                 | preferred-lifetime        | -14      |
                 +---------------------------+----------+
                 | valid-lifetime            | -13      |
                 +---------------------------+----------+
                 | lifetime                  | -12      |
                 +---------------------------+----------+
                 | a-flag                    | -11      |
                 +---------------------------+----------+
                 | l-flag                    | -10      |
                 +---------------------------+----------+
                 | preference                | -9       |
                 +---------------------------+----------+
                 | nexthop                   | -8       |
                 +---------------------------+----------+
                 | nssl                      | -7       |
                 +---------------------------+----------+
                 | dnss                      | -6       |
                 +---------------------------+----------+
                 | fqdn                      | -5       |
                 +---------------------------+----------+
                 | uri                       | -4       |
                 +---------------------------+----------+

                                 Table 2

9.2.2.  Key Registry

   +------------------------------------------------+-----------+
   |CDDL                                            | Reference |
   +------------------------------------------------+-----------+
   |ietf = {                                        |           |
   |  ? pio : [+ pio]                               |           |
   |  ? mtu : (0..65535)                            |           |
   |  ? rio : [+ rio]                               |           |
   |  ? dns : dns                                   |           |
   |  ? nat64: nat64                                |           |
   |  ? ipv6-only: bool                             |           |
   |  ? pvd : pvd                                   |           |
   |}                                               |           |
   |                                                |           |
   |pio = {                                         | RFC4861   |
   |  prefix : ipv6-prefix                          |           |
   |  ? preferred-lifetime : uint .size 4           |           |
   |  ? valid-lifetime : uint .size 4               |           |
   |  ? a-flag : bool                               |           |



Winters & Troan          Expires 13 January 2022                [Page 7]


Internet-Draft   The Universal IPv6 Configuration Option       July 2021


   |  ? l-flag : bool                               |           |
   |}                                               |           |
   |                                                |           |
   |rio = {                                         | RFC4191   |
   |  prefix : ipv6-prefix                          |           |
   |  ? preference : (0..3)                         |           |
   |  ? lifetime : uint .size 4                     |           |
   |  ? mtu : (0..65535)                            |           |
   |  ? nexthop: ipv6-address                       |           |
   |}                                               |           |
   |                                                |           |
   |dns = {                                         | RFC8106   |
   |  nssl : [* tstr]                               |           |
   |  dnss : [+ ipv6-address]                       |           |
   |  lifetime : uint .size 4                       |           |
   |}                                               |           |
   |                                                |           |
   |nat64 = {                                       | RFC7050   |
   |  prefix : ipv6-prefix                          |           |
   |}                                               |           |
   |                                                |           |
   |pvd = {                                         |           |
   |  fqdn : tstr                                   |           |
   |  uri : tstr                                    |           |
   |  ? dns : dns                                   |           |
   |  ? nat64: nat64                                |           |
   |  ? pio : [+ pio]                               |           |
   |  ? rio : [+ rio]                               |           |
   |}                                               |           |
   |ipv6-prefix = #6.261(bstr)                      |           |
   |ipv6-address = #6.260(bstr)                     |           |
   +------------------------------------------------+-----------+

10.  Normative References

   [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>.

   [RFC4861]  Narten, T., Nordmark, E., Simpson, W., and H. Soliman,
              "Neighbor Discovery for IP version 6 (IPv6)", RFC 4861,
              DOI 10.17487/RFC4861, September 2007,
              <https://www.rfc-editor.org/info/rfc4861>.







Winters & Troan          Expires 13 January 2022                [Page 8]


Internet-Draft   The Universal IPv6 Configuration Option       July 2021


   [RFC6919]  Barnes, R., Kent, S., and E. Rescorla, "Further Key Words
              for Use in RFCs to Indicate Requirement Levels", RFC 6919,
              DOI 10.17487/RFC6919, April 2013,
              <https://www.rfc-editor.org/info/rfc6919>.

   [RFC7049]  Bormann, C. and P. Hoffman, "Concise Binary Object
              Representation (CBOR)", RFC 7049, DOI 10.17487/RFC7049,
              October 2013, <https://www.rfc-editor.org/info/rfc7049>.

   [RFC8415]  Mrugalski, T., Siodelski, M., Volz, B., Yourtchenko, A.,
              Richardson, M., Jiang, S., Lemon, T., and T. Winters,
              "Dynamic Host Configuration Protocol for IPv6 (DHCPv6)",
              RFC 8415, DOI 10.17487/RFC8415, November 2018,
              <https://www.rfc-editor.org/info/rfc8415>.

   [RFC8610]  Birkholz, H., Vigano, C., and C. Bormann, "Concise Data
              Definition Language (CDDL): A Notational Convention to
              Express Concise Binary Object Representation (CBOR) and
              JSON Data Structures", RFC 8610, DOI 10.17487/RFC8610,
              June 2019, <https://www.rfc-editor.org/info/rfc8610>.

11.  Informative References

   [RFC8126]  Cotton, M., Leiba, B., and T. Narten, "Guidelines for
              Writing an IANA Considerations Section in RFCs", BCP 26,
              RFC 8126, DOI 10.17487/RFC8126, June 2017,
              <https://www.rfc-editor.org/info/rfc8126>.

   [RFC8259]  Bray, T., Ed., "The JavaScript Object Notation (JSON) Data
              Interchange Format", STD 90, RFC 8259,
              DOI 10.17487/RFC8259, December 2017,
              <https://www.rfc-editor.org/info/rfc8259>.

Appendix A.  Acknowledgements

   Many thanks to Dave Thaler for feedback and suggestions of a more
   effective CBOR encoding.  Thank you very much to Carsten Bormann for
   CBOR and CDDL help.

Authors' Addresses

   T. Winters
   QA Cafe

   Email: tim@qacafe.com






Winters & Troan          Expires 13 January 2022                [Page 9]


Internet-Draft   The Universal IPv6 Configuration Option       July 2021


   O. Troan
   cisco

   Email: ot@cisco.com















































Winters & Troan          Expires 13 January 2022               [Page 10]