Softwire                                                   S. Jiang, Ed.
Internet-Draft                              Huawei Technologies Co., Ltd
Intended status: Standards Track                              Y. Fu, Ed.
Expires: May 11, July 25, 2019                                             CNNIC
                                                                  B. Liu
                                            Huawei Technologies Co., Ltd
                                                               P. Deacon
                                                      IEA Software, Inc.
                                                                  C. Xie
                                                           China Telecom
                                                                   T. Li
                                                     Tsinghua University
                                                       M. Boucadair, Ed.
                                                                  Orange
                                                        November 7, 2018
                                                        January 21, 2019

RADIUS Attributes for Address plus Port (A+P) based Softwire Mechanisms
                   draft-ietf-softwire-map-radius-17
                   draft-ietf-softwire-map-radius-18

Abstract

   IPv4-over-IPv6 transition mechanisms provide IPv4 connectivity
   services over IPv6 native networks during the IPv4/IPv6 co-existence
   period.  DHCPv6 options have been defined for configuring clients for
   Lightweight 4over6, Mapping of Address and Port with Encapsulation,
   and Mapping of Address and Port using Translation unicast softwire
   mechanisms, and also multicast softwires.  However, in many networks,
   configuration information is stored in an Authentication,
   Authorization, and Accounting server which utilizes the RADIUS
   protocol to provide centralized management for users.  When a new
   transition mechanism is developed, new RADIUS attributes need to be
   defined correspondingly.

   This document defines three new RADIUS attributes to carry Address plus
   Port based softwire configuration parameters from an Authentication,
   Authorization, and Accounting server to a Broadband Network Gateway.
   Both unicast and multicast attributes are covered.

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 May 11, July 25, 2019.

Copyright Notice

   Copyright (c) 2018 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  . . . . . . . . . . . . . . . . . . . . . . . .   3
   2.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   5
   3.  Extensions of  New RADIUS Attributes and TLVs  . . . . . . . . . .   6
     3.1.  Softwire46-Configuration Attribute . . . . . . . . . . .   6
       3.1.1.  Softwire46 TLVs .
     3.1.  Softwire46-Configuration Attribute  . . . . . . . . . . .   7
       3.1.1.  Softwire46 Attributes . . . . . . .   8
         3.1.1.1.  S46-MAP-E TLV Format . . . . . . . . .   8
         3.1.1.1.  Softwire46-MAP-E Attribute  . . . . .  10
         3.1.1.2.  S46-MAP-T TLV Format . . . . . .  10
         3.1.1.2.  Softwire46-MAP-T Attribute  . . . . . . . .  11
         3.1.1.3.  S46-Lightweight-4over6 TLV Format . . .  10
         3.1.1.3.  Softwire46-Lightweight-4over6 Attribute . . . . .  12  11
       3.1.2.  Softwire46 Sub-TLVs Sub-Attributes . . . . . . . . . . . . . . . . .  13  11
       3.1.3.  Format  Specification of the Softwire46 Sub-TLVs . . . Sub-Attributes  . . . . . . .  14  12
         3.1.3.1.  S46-Rule Sub-TLV  . . . .  Softwire46-Rule Attribute . . . . . . . . . . . .  14  12
         3.1.3.2.  S46-BR Sub-TLV  . . . .  Softwire46-BR Attribute . . . . . . . . . . . . .  15  13
         3.1.3.3.  S46-DMR Sub-TLV . . . . .  Softwire46-DMR Attribute  . . . . . . . . . . . .  16  14
         3.1.3.4.  S46-V4V6Bind Sub-TLV  . . . .  Softwire46-V4V6Bind Attribute . . . . . . . . . .  17  14
         3.1.3.5.  S46-PORTPARAMS Sub-TLV  . . . .  Softwire46-PORTPARAMS Attribute . . . . . . . . .  18  15
       3.1.4.  Sub-TLVs  Sub-Attributes for S46-Rule Sub-TLV . . . Sofwtire46-Rule  . . . . . . . . .  19  16
         3.1.4.1.  Rule-IPv6-Prefix Sub-TLV  . Attribute  . . . . . . . . . . .  19  16
         3.1.4.2.  Rule-IPv4-Prefix Sub-TLV  . Attribute  . . . . . . . . . . .  20  17
         3.1.4.3.  EA-Length Sub-TLV . Attribute . . . . . . . . . . . . . . .  21  17
       3.1.5.  Sub-TLVs  Attributes for S46-v4v6Bind Sub-TLV . Softwire46-v4v6Bind  . . . . . . . . .  22  18
         3.1.5.1.  The  IPv4-address Sub-TLV Attribute  . . . . . . . . . . . .  22 .  18
         3.1.5.2.  The  Bind-IPv6-Prefix Sub-TLV Attribute  . . . . . . . . . .  22 .  18
       3.1.6.  Sub-TLVs  Attributes for S46-PORTPARAMS Sub-TLV . . . . . . . . .  23 . . .  19
         3.1.6.1.  The  PSID-offset Sub-TLV Attribute . . . . . . . . . . . . . .  23  19
         3.1.6.2.  The  PSID-len Sub-TLV Attribute  . . . . . . . . . . . . . .  24 .  20
         3.1.6.3.  The  PSID Sub-TLV Attribute  . . . . . . . . . . . . . . . .  25 .  20
     3.2.  Softwire46-Priority Attribute . . . . . . . . . . . . . .  25  21
     3.3.  Softwire46-Multicast Attribute  . . . . . . . . . . . . .  26  22
       3.3.1.  ASM-Prefix64 TLV  . . . Attribute  . . . . . . . . . . . . . . .  28  24
       3.3.2.  SSM-Prefix64 TLV  . . . Attribute  . . . . . . . . . . . . . . .  29  25
       3.3.3.  U-Prefix64 TLV  . . . Attribute  . . . . . . . . . . . . . . . .  30  25
   4.  A Sample Configuration Process with RADIUS  . . . . . . . . .  31  25
   5.  Table of Attributes . . . . . . . . . . . . . . . . . . . . .  34  28
   6.  Security Considerations . . . . . . . . . . . . . . . . . . .  35  29
   7.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  35  29
     7.1.  New RADIUS Attributes . . . . . . . . . . . . . . . . . .  35  29
     7.2.  New  RADIUS TLVs . . . . . . . . . . . . . . . . . . . . .  36 Softwire46 Configuration and Multicast Attributes   30
     7.3.  S46  Softwire46 Mechanisms and Their Identifying Option Codes . . . .  36   30
   8.  Contributing Authors  . . . . . . . . . . . . . . . . . . . .  37  31
   9.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .  38  32
   10. References  . . . . . . . . . . . . . . . . . . . . . . . . .  39  33
     10.1.  Normative References . . . . . . . . . . . . . . . . . .  39  33
     10.2.  Informative References . . . . . . . . . . . . . . . . .  40  34
   Appendix A.  DHCPv6 to RADIUS Field Mappings  . . . . . . . . . .  42  35
     A.1.  OPTION_S46_RULE (89) to S46-Rule Softwire46-Rule Sub-TLV Field
           Mappings  .  42
     A.2.  OPTION_S46_BR (90) to S46-BR Sub-TLV Sub-TLV Field
           Mappings . . . . . . . . . . . . . . . . . . . . . . .  36
     A.2.  OPTION_S46_BR (90) to Softwire46-BR Field Mappings  .  42 . .  36
     A.3.  OPTION_S46_DMR (91) to S46-DMR Sub-TLV Softwire46-DMR . . . . . . . . .  42 .  36
     A.4.  OPTION_S46_V4V6BIND (92) to S46-V4V6Bind Sub-TLV Softwire46-V4V6Bind . . . . .  42  36
     A.5.  OPTION_S46_PORTPARAMS (93) to S46-PORTPARAMS Sub-TLV Softwire46-PORTPARAMS Field
           Mappings  . . . . . . . . . . . . . . . . . . . . .  43 . . .  36
     A.6.  OPTION_S46_PRIORITY (111) to S46-PORTPARAMS Sub-TLV Softwire46-PORTPARAMS Field
           Mappings  . . . . . . . . . . . . . . . . . . . . . . . .  43  37
     A.7.  OPTION_V6_PREFIX64 (113) to Softwire46-Multicast
           Attribute TLV Field Mappings  . . . . . . . . . . . . . .  43 . .  37
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  43  37

1.  Introduction

   Providers have started deploying and transitioning to IPv6.  Several
   IPv4 service continuity mechanisms based on the Address plus Port
   (A+P) [RFC6346] have been proposed for providing unicast IPv4 over
   IPv6-only infrastructure, such as Mapping of Address and Port with
   Encapsulation (MAP-E) [RFC7597], Mapping of Address and Port using
   Translation (MAP-T) [RFC7599], and Lightweight 4over6 [RFC7596].
   Also, [RFC8114] specifies a generic solution for the delivery of IPv4
   multicast services to IPv4 clients over an IPv6 multicast network.
   For each of these mechanisms, DHCPv6 options have been specified for
   client configuration.

   In many networks, user configuration information is stored in an
   Authentication, Authorization, and Accounting (AAA) server.  AAA
   servers generally communicate using the Remote Authentication Dial In
   User Service (RADIUS) [RFC2865] protocol.  In a fixed broadband
   network, a Broadband Network Gateway (BNG) acts as the access gateway
   for users.  That is, the BNG acts as both an AAA client to the AAA
   server, and a DHCPv6 server for DHCPv6 messages sent by clients.
   Throughout this document, the term BNG describes a device
   implementing both the AAA client and DHCPv6 server functions.

   Since IPv4-in-IPv6 softwire configuration information is stored in an
   AAA server, and user configuration information is mainly transmitted
   through DHCPv6 protocol between the BNGs and Customer Premises
   Equipment (CEs, a.k.a., CPE), new RADIUS attributes are needed to
   propagate the information from the AAA servers to BNGs.

   The RADIUS attributes defined in this document provide configuration
   to populate the corresponding DHCPv6 options for unicast and
   multicast softwire configuration, specifically:

   o  "Mapping of Address and Port with Encapsulation (MAP-E)" [RFC7597]
      (DHCPv6 options defined in [RFC7598].

   o  "Mapping of Address and Port using Translation (MAP-T)" [RFC7599]
      (DHCPv6 options defined in [RFC7598].

   o  "Lightweight 4over6: An Extension to the Dual-Stack Lite
      Architecture" [RFC7596] (DHCPv6 options defined in [RFC7598].

   o  "Unified IPv4-in-IPv6 Softwire Customer Premises Equipment (CPE):
      A DHCPv6-Based Prioritization Mechanism" [RFC8026].

   o  "Delivery of IPv4 Multicast Services to IPv4 Clients over an IPv6
      Multicast Network" [RFC8114] (DHCPv6 options defined in [RFC8115].

   The contents of the attributes/sub-TLVs attributes defined in this document have a 1:1
   mapping into the fields of the various DHCPv6 options in [RFC7598],
   [RFC8026], and [RFC8115].  Table 1 shows how the DHCPv6 options map
   to the corresponding RADIUS attribute, or Sub-TLV. attribute.  For detailed mappings between
   each DHCPv6 option field and the corresponding RAIDUS Attribute, TLV, RADIUS Attribute or Sub-TLV
   field, see Appendix A.

      +----------------------------+--------------------------------+
      |        DHCPv6 Option       |        RADIUS Attribute/Sub-TLV Attribute        |
      +----------------------------+--------------------------------+
      |     OPTION_S46_RULE (89)   |        S46-Rule Sub-TLV        Softwire46-Rule         |
      |     OPTION_S46_BR (90)     |         S46-BR Sub-TLV         Softwire46-BR          |
      |     OPTION_S46_DMR (91)    |        S46-DMR Sub-TLV        Softwire46-DMR          |
      |   OPTION_S46_V4V6BIND (92) |      S46-v4v6Bind Sub-TLV      Softwire46-v4v6Bind       |
      | OPTION_S46_PORTPARAMS (93) |     S46-PORTPARAMS Sub-TLV     Softwire46-PORTPARAMS      |
      |  OPTION_S46_PRIORITY (111) |  Softwire46-Priority Attribute |
      |  OPTION_V6_PREFIX64 (113)  | Softwire46-Multicast Attribute |
      +----------------------------+--------------------------------+

       Table 1: Mapping between DHCPv6 Options and RADIUS Attributes/TLVs Attributes

   A RADIUS attribute for Dual-Stack Lite [RFC6333] is defined in
   [RFC6519].

2.  Terminology

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in
   [RFC2119] [RFC8174] when, and only when, they appear in all capitals,
   as shown here.

   The reader should be familiar with the concepts and terms defined in
   [RFC7596], [RFC7597], [RFC7599], and [RFC8026].

   The terms "multicast Basic Bridging BroadBand" element (mB4) and
   "multicast Address Family Transition Router" element (mAFTR) are
   defined in [RFC8114].

   S46

   Softwire46 (S46) is used throughout to denote any of the IPv4-in-IPv6
   softwire mechanisms listed above.  Additionally, the following abbrevitiaons
   abbreviations are used within the document:

   o  BMR: Basic Mapping Rule

   o  BNG: Broadband Network Gateway

   o  BR: Border Relay

   o  CE: Customer Edge

   o  DMR: Default Mapping Rule

   o  EA: Embedded Address
   o  FMR: Forwarding Mapping Rule

   o  PSID: Port Set Identifier

   o  TLV: Type, Length, Value

   o  MAP-E: Mapping of Address and Port with Encapsulation

   o  MAP-T: Mapping of Address and Port using Translation

3.  Extensions of  New RADIUS Attributes and TLVs

   This section defines the following attributes:

   1.  Softwire46-Configuration Attribute (Section 3.1):

       This attribute carries the configuration information for MAP-E,
       MAP-T, and Lightweight 4over6.  The configuration information for
       each S46 Softwire46 mechanism is carried in the corresponding
       Softwire46
       TLVs. attributes.  Different Sub-TLVs attributes are required for
       each type of Softwire46 TLVs. mechanism.

   2.  Softwire46-Priority Attribute (Section 3.2):

       Depending on the deployment scenario, a client may support
       several different S46 Softwire46 mechanisms and so request
       configuration for more than one S46 Softwire46 mechanism at a time.
       The Softwire46-Priority Attribute contains information allowing
       the client to prioritize which mechanism to use, corresponding to
       OPTION_S46_PRIORITY defined in [RFC8026].

   3.  Softwire46-Multicast Attribute (Section 3.3):

       This attribute conveys the IPv6 prefixes to be used in [RFC8114]
       to synthesize IPv4-embedded IPv6 addresses.  The BNG uses the
       IPv6 prefixes returned in the RADIUS Softwire46-Multicast
       Attribute to populate the DHCPv6 PREFIX64 Option [RFC8115].

   All of these attributes are allocated from the RADIUS "Extended Type"
   code space per [RFC6929].

   All of these attribute designs follow [RFC6158] and [RFC6929].

   This document adheres to [RFC8044] for defining the new attributes.

3.1.  Softwire46-Configuration Attribute

   This attribute is of type "TLV", "tlv", as defined in the RADIUS Protocol
   Extensions [RFC6929].  It contains some sub-attributes, with the
   following requirements:

      The Softwire46-Configuration Attribute MUST contain one or more of
      the following: S46-MAP-E TLV, S46-MAP-T TLV, and/or S46-
      Lightweight-4over6 TLV. following attributes: Softwire46-MAP-E, Softwire46-MAP-T, and/
      or Softwire46-Lightweight-4over6.

      The Softwire46-Configuration Attribute conveys the configuration
      information for MAP-E, MAP-T, or Lightweight 4over6.  The BNG
      SHALL use the configuration information returned in the RADIUS
      attribute to populate the DHCPv6 Softwire46 Container Option
      defined in Section 5 of [RFC7598].

      The Softwire46-Configuration Attribute MAY appear in an Access-
      Accept packet.  It MAY also appear in an Access-Request packet.

      The Softwire46-Configuration Attribute MAY appear in a CoA-Request
      packet.

      The Softwire46-Configuration Attribute MAY appear in an
      Accounting-Request packet.

      The Softwire46-Configuration Attribute MUST NOT appear in any
      other RADIUS packet.

      The Softwire46-Configuration Attribute MUST only encapsulate one
      or more of the Softwire46 TLVs attributes defined in this document.

   The Softwire46-Configuration Attribute is structured as follows:

    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    | Extended-Type |    Value ...  .
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

    Type
      241 (To be confirmed by IANA).

    Length
      Indicates the total length, in bytes, of all fields of
      this attribute, including the Type, Length, Extended-Type,
      and the entire length of the embedded TLVs. attributes.

     Extended-Type
        TBD1

     Value
        Contains one or more of the following TLVs. attributes. Each TLV attribute
        type may appear at most once:

         S46-MAP-E TLV

        Softwire46-MAP-E
           For configuring MAP-E clients. For the construction of
           this TLV, attribute, Refer to Section 3.1.1.1.

         S46-MAP-T TLV

        Softwire46-MAP-T
           For configuring MAP-T clients. For the construction of
           this TLV, attribute, Refer to Section 3.1.1.2.

         S46-Lightweight-4over6 TLV

        Softwire46-Lightweight-4over6
           For configuring Lightweight 4over6 clients. For the
           construction of this TLV, attribute, Refer to Section 3.1.1.3.

   The Softwire46-Configuration Attribute is associated with the
   following identifier: 241.Extended-Type(TBD1).

3.1.1.  Softwire46 TLVs Attributes

   The Softwire46 TLVs attributes can only be encapsulated in the
   Softwire46-Configuration Attribute.  Depending on the deployment
   scenario, a client might request for more than one transition
   mechanism at a time.  There MUST be at least one Softwire46 TLV attribute
   encapsulated in one Softwire46-Configuration Attribute.  There MUST
   be at most one instance of each type of Softwire46 TLV attribute
   encapsulated in one Softwire46-Configuration Attribute.

   There are three types of Softwire46 TLV, attributes, namely:

   1.  S46-MAP-E TLV  Softwire46-MAP-E (Section 3.1.1.1)

   2.  S46-MAP-T TLV  Softwire46-MAP-T (Section 3.1.1.2)

   3.  S46-Lightweight  Softwire46-Lightweight 4over6 TLV (Section 3.1.1.3)
   Each type of Softwire46 TLV attribute contains a number of sub-TLVs, sub-
   attributes, defined in Section 3.1.3.  The hierarchy of the
   Softwire46 TLVs attributes is shown in Figure 1.  Section 3.1.2 describes
   which Sub-TLVs sub-attributes are mandatory, optional, or not permitted for
   each defined Softwire46 TLV. attribute.

                                                 /1.Rule-IPv6-Prefix
 S                      /                       |   Sub-TLV
 o  /                  | 1.S46-Rule Sub-TLV ----+ 1.Softwire46-Rule -----+ 2.Rule-IPv4-Prefix
 f | S46-MAP-E TLV-----+ Softwire46-MAP-E--+                        |   Sub-TLV
 t |                   | 2.S46-BR Sub-TLV 2.Softwire46-BR        | 3.EA Length Sub-
 w |                   |                         \  TLV
 i |                   |                               /1.PSID-offset
 r |                   |                              |   Sub-TLV
 e |                   | 5.S46-PORTPARAMS Sub-TLV ----+ 5.Softwire46-PORTPARAMS -----+ 2.PSID-len
 - |                    \                             |   Sub-TLV
 C |                                                  | 3.PSID Sub-
 o |                                                   \  TLV
 n |
 f |                                             /1.Rule-IPv6-Prefix
 i |                    /                       |   Sub-TLV
 g |                   | 1.S46-Rule Sub-TLV ----+ 1.Softwire46-Rule------+ 2.Rule-IPv4-Prefix
 u | S46-MAP-T TLV ----+ Softwire46-MAP-T--+                        |   Sub-TLV
 r |                   | 3.S46-DMR Sub-TLV 3.Softwire46-DMR       | 3.EA Length Sub-
 a |                   |                         \  TLV
 t |                   |                               /1.PSID-offset
 i |                   |                              |   Sub-TLV
 o |                   | 5.S46-PORTPARAMS Sub-TLV ----+ 5.Softwire46-PORTPARAMS------+ 2.PSID-len
 n |                    \                             |   Sub-TLV
   |                                                  | 3.PSID Sub-
 A |                                                   \  TLV
 t |
 t |                                                 /1.IPv4-address
 r |                    /                           |   Sub-TLV
 i |                   | 4.S46-v4v6Bind Sub-TLV ----+ 4.Softwire46-v4v6Bind -----+ 2.Bind-IPv6-Prefix
 b | S46-Lightweight Softwire46-       |                             \  Sub-TLV
 u | -4over6 TLV ------+ Lightweight-4over6+                               /1.PSID-offset
 t  \                  |                              |   Sub-TLV
 e                     | 5.S46-PORTPARAMS Sub-TLV 5.Softwire46-PORTPARAMS  ----+ 2.PSID-len
                        \                             |   Sub-TLV
                                                      | 3.PSID Sub-
                                                       \  TLV

                 Figure 1: Softwire46 TLV Attributes Hierarchy

3.1.1.1.  S46-MAP-E TLV Format  Softwire46-MAP-E Attribute

   Softwire46-MAP-E attribute is designed for carrying the configuration
   information for MAP-E.  The format structure of the S46-MAP-E TLV Softwire46-MAP-E is
   shown below:

      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
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |   TLV-Type    |  TLV-Length   |     TLV-Value ...             .
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

    TLV-Type
       TBD2
      1

    TLV-Length
       One octet long.
      Indicates the length of this TLV, attribute, including
      the TLV-Type, TLV-Length, and TLV-Value fields.

    TLV-Value
      Contains a set of Sub-TLVs, sub-attributes, with the following requirements:

      It MUST contain the S46-Rule Sub-TLV, Softwire46-Rule, defined in Section 3.1.3.1.

      It MUST contain the S46-BR Sub-TLV, Softwire46-BR, defined in Section 3.1.3.2.

      It MAY contain the S46-PORTPARAMS Sub-TLV, Softwire46-PORTPARAMS, defined in
      Section 3.1.3.5.

3.1.1.2.  S46-MAP-T TLV Format  Softwire46-MAP-T Attribute

   Softwire46-MAP-T attribute is designed for carrying the configuration
   information for MAP-T.  The format structure of the S46-MAP-T TLV Softwire46-MAP-T is
   shown below:

       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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   TLV-Type    |  TLV-Length   |     TLV-Value ...             .
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   TLV-Type
        TBD3
      2

   TLV-Length
        One octet long.
      Indicates the length of this TLV, attribute, including
      the TLV-Type, TLV-Length, and TLV-Value fields.

   TLV-Value
      Contains a set of Sub-TLVs, sub-attributes, with the following requirements:

      It MUST contain the S46-Rule Sub-TLV, Softwire46-Rule, defined in
      Section 3.1.3.1.

      It MUST contain the S46-DMR Sub-TLV, Softwire46-DMR, defined in
      Section 3.1.3.3.

      It MAY contain the S46-PORTPARAMS Sub-TLV, Softwire46-PORTPARAMS, defined in
      Section 3.1.3.5.

3.1.1.3.  S46-Lightweight-4over6 TLV Format  Softwire46-Lightweight-4over6 Attribute

   Softwire46-Lightweight-4over6 attribute is designed for carrying the
   configuration information for Lightweight 4over6.  The format structure of
   the S46-Lightweight-4over6 TLV Softwire46-Lightweight-4over6 is shown below:

       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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   TLV-Type    |  TLV-Length   |     TLV-Value ...             .
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

     TLV-Type
        TBD4
        3

     TLV-Length
        One octet long.
        Indicates the length of this TLV, attribute, including
        the TLV-Type, TLV-Length, and TLV-Value fields.

     TLV-Value
        Contains a set of Sub-TLVs sub-attributes as follows:

        It MUST contain the S46-BR Sub-TLV, Softwire46-BR, defined in
        Section 3.1.3.2.

        It MUST contain the S46-V4V6Bind Sub-TLV, Softwire46-V4V6Bind, defined in
        Section 3.1.3.4.

        It MAY contain the S46-PORTPARAMS Sub-TLV, Softwire46-PORTPARAMS, defined in
        Section 3.1.3.5.

3.1.2.  Softwire46 Sub-TLVs Sub-Attributes

   Table 2 shows which encapsulated Sub-TLVs sub-attributes are mandatory,
   optional, or not permitted for each defined Softwire46 TLV.

   +----------------+-------+-------+--------------------+ attribute.

   +-----------------------+-------+-------+--------------------+
   | Sub-TLV Sub-Attributes        | MAP-E | MAP-T | Lightweight 4over6 |
   +----------------+-------+-------+--------------------+
   +-----------------------+-------+-------+--------------------+
   | S46-BR Softwire46-BR         |   M   1   |  N/P   0   |          M          1         |
   | S46-Rule Softwire46-Rule       |   M   1   |   M   1   |         N/P          0         |
   | S46-DMR Softwire46-DMR        |  N/P   0   |   M   1   |         N/P          0         |
   | S46-V4V6Bind Softwire46-V4V6Bind   |  N/P   0   |  N/P   0   |          M          1         |
   | S46-PORTPARAMS Softwire46-PORTPARAMS |   O  0-1  |   O  0-1  |          O         0-1        |
   +----------------+-------+-------+--------------------+

   M - Mandatory, O - Optional, N/P - Not Permitted
   +-----------------------+-------+-------+--------------------+

                    Table 2: Softwire46 Sub-TLVs Sub-Attributes

   The following table defines the meaning of the above table entries.

   0     Not Permitted
   0+    Optional, zero or more instances of the attribute
         may be present.
   0-1   Optional, zero or one instance of the attribute
         may be present.
   1     Mandatory

3.1.3.  Format  Specification of the Softwire46 Sub-TLVs Sub-Attributes

3.1.3.1.  S46-Rule Sub-TLV  Softwire46-Rule Attribute

   The S46-Rule Sub-TLV Softwire46-Rule can only be encapsulated in the S46-MAP-E TLV Softwire46-MAP-E
   (Section 3.1.1.1) or the S46-MAP-T TLV Softwire46-MAP-T (Section 3.1.1.2).
   Depending on the deployment scenario, one Basic Mapping Rule (BMR)
   and zero or more Forwarding Mapping Rules (RMRs) (FMRs) MUST be included in
   one
   S46-MAP-E TLV Softwire46-MAP-E or S46-MAP-T TLV. Softwire46-MAP-T.

   Each type of S46-Rule Sub-TLV Softwire46-Rule also contains a number of Sub-TLVs, sub-
   attributes, including Rule-IPv6-Prefix Sub-TLV, Rule-IPv4-Prefix Sub-TLV, Rule-IPv6-Prefix, Rule-IPv4-Prefix, and EA-
   Length Sub-TLV.
   Length.  The structure of the Sub-TLVs sub-attributes for the S46-Rule Sub-
   TLV Softwire46-Rule
   is defined in Section 3.1.4.

   Defining multiple TLV-types achieves the same design goals as the
   "S46
   "Softwire46 Rule Flags" defined in Section 4.1 of [RFC7598].  Using
   TLV-type set to 2 4 is equivalent to setting the F-flag in the
   OPTION_S46_RULE S46 Rule Flags field.

       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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   TLV-Type    |  TLV-Length   |     TLV-Value ...             .
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

  TLV-Type
        TBD7
     4 Basic Mapping Rule only (not to be used for forwarding)
        TBD8
     5 Forwarding Premitted Permitted Mapping Rule (may be used for
        forwarding. Can also be a Basic Mapping Rule)

  TLV-Length
        One octet long.
     Indicates the length of this TLV, attribute, including
     the TLV-Type, TLV-Length, and TLV-Value fields.

     TLV-Value
        This field contains a set of TLVs as

  Data Type
     The attribute Softwire46-Rule is of type tlv (Section 3.13 of
     [RFC8044]).

  TLV-Value
     This field contains a set of attributes as follows:

     Rule-IPv6-Prefix Sub-TLV
        This TLV attribute contains the IPv6 prefix for use in the MAP rule.
        Refer to Section 3.1.4.1.

     Rule-IPv4-Prefix Sub-TLV
        This TLV attribute contains the IPv4 prefix for use in the MAP rule.
        Refer to Section 3.1.4.2.

     EA-Length Sub-TLV
        This TLV attribute contains the Embedded-Address (EA) bit length.
        Refer to Section 3.1.4.1.

3.1.3.2.  S46-BR Sub-TLV  Softwire46-BR Attribute

   The S46-BR Sub-TLV Softwire46-BR can only be encapsulated in the S46-MAP-E TLV Softwire46-MAP-E
   (Section 3.1.1.1) or S46-Lightweight-4over6 TLV Softwire46-Lightweight-4over6 (Section 3.1.1.3).

   There MUST be at least one S46-BR Sub-TLV Softwire46-BR included in each S46-MAP-E
   TLV
   Softwire46-MAP-E or S46-Lightweight-4over6 TLV. Softwire46-Lightweight-4over6.

   The format structure of the S46-BR Sub-TLV Softwire46-BR is shown below:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |    TLV-Type   |   TLV-Length  |                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
   |                                                               |
   |                        br-ipv6-address                        |
   |                                                               |
   |                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

     TLV-Type
         TBD9
        6

     TLV-Length
        18 octets

      br-ipv6-address
         IPv6 address.

     Data Type
        The attribute Softwire46-BR is of type ip6addr (Section 3.9 of
        [RFC8044]).

     TLV-Value
        br-ipv6-address. A fixed-length field of 16 octets that
        specifies the IPv6 address for the S46 Softwire46 Border Relay (BR).

3.1.3.3.  S46-DMR Sub-TLV  Softwire46-DMR Attribute

   The S46-DMR Sub-TLV Softwire46-DMR may only appear in the S46-MAP-T TLV Softwire46-MAP-T
   (Section 3.1.1.2).  There MUST be exactly one S46-DMR Sub-TLV Softwire46-DMR included
   in one S46-MAP-T TLV. Softwire46-MAP-T.

   The format structure of the S46-DMR Sub-TLV Softwire46-DMR is shown below:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |    TLV-Type   |   TLV-Length  |    Reserved   |dmr-prefix6-len|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        dmr-ipv6-prefix                        |
   .                       (variable length)                       .
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

     TLV-Type
         TBD10
        7

     TLV-Length
        4 + length of dmr-ipv6-prefix specified in octets

      Reserved
         This field octets.

     Data Type
        The attribute Softwire46-DMR is reserved. It should be set to all zeros.

      dmr-prefix6-len
         8-bits long. Expresses the bitmask length of the IPv6 prefix
         specified in the dmr-ipv6-prefix field. Allowed values range
         from 0 to 96.

      dmr-ipv6-prefix
         IPv6 Prefix. type ip6pref (Section 3.10 of
        [RFC8044]).

     TLV-Value
        dmr-ipv6-prefix. A variable-length field specifying the IPv6
        prefix for the BR. This field is right-padded with zeros to
        the nearest octet boundary when dmr-prefix6-len is not
        divisible by 8. Prefixes with from 0 to 96 are allowed.

3.1.3.4.  S46-V4V6Bind Sub-TLV  Softwire46-V4V6Bind Attribute

   The S46-V4V6Bind Sub-TLV Softwire46-V4V6Bind may only be encapsulated in the S46- Softwire46-
   Lightweight-4over6 TLV (Section 3.1.1.3).  There MUST be exactly one
   S46-V4V6Bind Sub-TLV
   Softwire46-V4V6Bind included in each S46-Lightweight-4over6 TLV. Softwire46-Lightweight-4over6.

   The format structure of the S46-V4V6Bind Sub-TLV Softwire46-V4V6Bind is shown below:

       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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |

   TLV-Type    |  TLV-Length   |     TLV-Value ...             .
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

      TLV-Type
         TBD11
      8

   TLV-Length
         8-bits long.
      Indicates the length of this TLV, attribute, including
      the TLV-Type, TLV-Length, and TLV-Value fields.

   Data Type
      The attribute Softwire46-V4V6Bind is of type tlv (Section 3.13 of
      [RFC8044]).

   TLV-Value
      This field contains a set of Sub-TLVs attributes as follows:

      IPv4-address Sub-TLV
         This TLV attribute contains an IPv4 address, used to specify
         the full or shared IPv4 address of the CE. Refer to
         Section 3.1.5.1.

      Bind-IPv6-Prefix Sub-TLV
         This TLV attribute contains an IPv6 prefix used to indicate which
         configured prefix the S46 Softwire46 CE should use for constructing
         the softwire. Refer to Section 3.1.5.2.

3.1.3.5.  S46-PORTPARAMS Sub-TLV  Softwire46-PORTPARAMS Attribute

   The S46-PORTPARAMS Sub-TLV Softwire46-PORTPARAMS is optional.  It is used to specify port
   set information for IPv4 address sharing between clients.  The
   S46-PORTPARAMS Sub-TLV
   Softwire46-PORTPARAMS MAY be included in any of the Softwire46 TLVs.
   attributes.

   The format structure of the S46-PORTPARAMS Sub-TLV Softwire46-PORTPARAMS is shown below:

       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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   TLV-Type    |  TLV-Length   |     TLV-Value ...             .
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

    TLV-Type
         TBD12
       9

    TLV-Length
         8-bits long.
       Indicates the length of this TLV, attribute, including
       the TLV-Type, TLV-Length, and TLV-Value fields.

    Data Type
       The attribute Softwire46-PORTPARAMS is of type tlv (Section 3.13
       of [RFC8044]).

    TLV-Value
       This field contains a set of TLVs attributes as follows:

       PSID-offset Sub-TLV
          This TLV attribute specifies the numeric value for the S46 Softwire46
          algorithm's excluded port range/offset bits (a bits). Refer to
          Section 3.1.6.1.

       PSID-len Sub-TLV
          This TLV attribute specifies the number of significant bits in the
          PSID field (also known as 'k'). Refer to Section 3.1.6.2.

       PSID Sub-TLV
          This TLV attribute specifies PSID value. Refer to Section 3.1.6.3.

3.1.4.  Sub-TLVs  Sub-Attributes for S46-Rule Sub-TLV Sofwtire46-Rule

   There are two types of S46-Rule: Softwire46-Rule: the Basic Mapping Rule and
   the Forwarding Mapping Rule, indicated by the value in the TLV-Type
   field of the S46-Rule Sub-TLV Softwire46-Rule (see Section 3.1.3.1).

   Each type of S46-Rule Sub-TLV Softwire46-Rule also contains a number of Sub-TLVs Sub-attributes
   as detailed in the following sub-sections.

3.1.4.1.  Rule-IPv6-Prefix Sub-TLV Attribute

   The Rule-IPv6-Prefix Sub-TLV is REQUIRED for every S46-Rule Sub-TLV. Softwire46-Rule.  There
   MUST be exactly one Rule-IPv6-Prefix Sub-TLV encapsulated in each type of S46-Rule Sub-TLV.
   Softwire46-Rule.

   The Rule-IPv6-Prefix Sub-TLV follows the framed IPv6 prefix designed in
   [RFC3162] and [RFC8044].

   The format structure of the Rule-IPv6-Prefix Sub-TLV is shown below:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |    TLV-Type   |   TLV-Length  |   Reserved    |ruleprefix6-len|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   |                        rule-ipv6-prefix                       |
   |                                                               |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

     TLV-Type
         TBD13
        10

     TLV-Length
        20

      Reserved
         This field is reserved. It is always set to zero. This field
         is one octet in length.

      Ruleprefix6-len octets

     Data Type
        The length attribute Rule-IPv6-Prefix is of IPv6 prefix, specified in the rule-ipv6-prefix
         field, expressed in bits.

      rule-ipv6-prefix
         IPv6 Prefix. type ipv6pref (Section 3.10
        of [RFC8044]).

     TLV-Value
        rule-ipv6-prefix. 128-bits long field that specifying specifies an IPv6
        prefix appearing in the MAP rule.

3.1.4.2.  Rule-IPv4-Prefix Sub-TLV Attribute

   This Sub-TLV attribute is used to convey the MAP Rule IPv4 prefix.  The format
   structure of the Rule-IPv4-Prefix Sub-TLV is shown below:

    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

     TLV-Type
        11

     TLV-Length
        8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |    TLV-Type   |   TLV-Length  |   Reserved    |ruleprefix4-len|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                       rule-ipv4-prefix                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

      TLV-Type
         TBD14

      TLV-Length
         8

      Reserved
         8-bits long. This field is reserved and is always set to
         zero.

      ruleprefix4-len
         8-bits long. octets

     Data Type
        The length attribute Rule-IPv4-Prefix is of IPv4 prefix specified in the
         rule-ipv4-prefix field, expressed in bits.

      rule-ipv4-prefix type ipv4pref (Section 3.11
        of [RFC8044]).

     TLV-Value
        rule-ipv4-prefix. 32-bits long. Specifies the IPv4 prefix
        appearing in the MAP rule.

3.1.4.3.  EA-Length Sub-TLV Attribute

   This Sub-TLV attribute is used to convey the Embedded-Address(EA) bit length.
   The format structure of the EA-Length Sub-TLV is shown below:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |    TLV-Type   |  TLV-Length   |             EA-len            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

      TLV-Type
         TBD15
         12

      TLV-Length
         4

      EA-len
         16-bits
         6 octets

      Data Type
         The attribute EA-Length is of type integer (Section 3.1 of
         [RFC8044]).

     TLV-Value
         EA-len; 32-bits long. Specifies the Embedded-Address(EA) bit
         length. Allowed values range from 0 to 48.

3.1.5.  Sub-TLVs  Attributes for S46-v4v6Bind Sub-TLV Softwire46-v4v6Bind

3.1.5.1.  The  IPv4-address Sub-TLV Attribute

   The IPv4-address Sub-TLV MAY be used to specify the full or shared IPv4
   address of the CE.

   The format structure of the IPv4-address Sub-TLV is shown below:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   TLV-Type    |  TLV-Length   |            ipv4-address       .
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   .           ipv4-address        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

      TLV-Type
         TBD16
         13

      TLV-Length
         6

      ipv4-address octets

      Data Type
         The attribute IPv4-address is of type ipv4addr (Section 3.8
         of [RFC8044]).

      TLV-Value
         32-bits long. Specifies the IPv4 address to appear in the
         S46-V4V6Bind Sub-TLV
         Softwire46-V4V6Bind (Section 3.1.3.4).

3.1.5.2.  The  Bind-IPv6-Prefix Sub-TLV Attribute

   The Bind-IPv6-Prefix Sub-TLV is used by the CE to identify the correct IPv6
   prefix to be used as the tunnel source.

   The format structure of the Bind-IPv6-Prefix Sub-TLV is shown below:

    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |    TLV-Type   |   TLV-Length  |   Reserved    |bindprefix6-len|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   |                        bind-ipv6-prefix                       |
   |                        (variable length)                      |
   .                                                               .
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

     TLV-Type
         TBD17
        14

     TLV-Length
        4 + length of bind-ipv6-prefix specified in octets

      Reserved
         8-bits long. This field is reserved and octets.

     Data Type
        The attribute Bind-IPv6-Prefix is always set
         to zero.

      bindprefix6-len
         8-bits long. Expresses the bitmask length of the IPv6
         prefix specified in the bind-ipv6-prefix field. Allowed
         values range from 0 to 128.

      bind-ipv6-prefix
         IPv6 prefix. type ipv6pref (Section 3.10
        of [RFC8044]).

     TLV-Value
        bind-ipv6-prefix. A variable-length field specifying the IPv6
        prefix or address for the S46 Softwire46 CE. This field is
        right-padded with zeros to the nearest octet boundary
        when bindprefix6-len is not divisible by 8.

3.1.6.  Sub-TLVs  Attributes for S46-PORTPARAMS Sub-TLV

3.1.6.1.  The  PSID-offset Sub-TLV Attribute

   This Sub-TLV attribute is used to convey the Port Set Identifier offset as
   defined in [RFC7597].  This attribute is encoded 32 bits as per the
   recommendation in Appendix A.2.1 of [RFC6158].

   The format structure of the PSID-offset Sub-TLV is shown below:

    0                   1                   2
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |    TLV-Type   |   TLV-Length  |  PSID-Offset  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

      TLV-Type
         TBD18
         15

      TLV-Length
         3
         6 octets

      Data Type
         The attribute PSID-offset is of type integer (Section 3.1
         of [RFC8044]).

      TLV-Value
         Contains the PSID-Offset
         Integer. An 8-bits long (8-bits) right
         justified, and the unused bits in this field MUST
         be set to zero. This field that specifies the
         numeric value for the S46 Softwire46 algorithm's excluded
         port range/offset bits (a bits), as per Section 5.1
         of RFC7597. Allowed values are between 0 and 15.
         Default values for this field are specific to the
         Softwire mechanism being implemented and are defined
         in the relevant specification document.

3.1.6.2.  The  PSID-len Sub-TLV Attribute

   This Sub-TLV attribute is used to convey the PSID length as defined in
   [RFC7597].  This attribute is encoded 32 bits as per the
   recommendation in Appendix A.2.1 of [RFC6158].

   The format structure of the PSID-len Sub-TLV is shown below:

    0                   1                   2
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |

      TLV-Type   |
         16

      TLV-Length  |
         6 octets

      Data Type
         The attribute PSID-len   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

      TLV-Type
         TBD19

      TLV-Length
         3 is of type integer (Section 3.1
         of [RFC8044]).

      TLV-Value
         Contains the PSID-len
         8-bits long (8-bits) right
         justified, and the unused bits in this field specifying MUST
         be set to zero. This field specifies the number of
         significant bits in the PSID field (also known as
         'k'). When set to 0, the PSID field is to be ignored.
         After the first 'a' bits, there are k bits in the
         port number representing the value of the PSID.
         Subsequently, the address sharing ratio would be
         2^k.

3.1.6.3.  The  PSID Sub-TLV Attribute

   This Sub-TLV attribute is used to convey the PSID as defined in [RFC7597].
   This attribute is encoded 32 bits as per the recommendation in
   Appendix A.2.1 of [RFC6158].

   The format structure of the PSID Sub-TLV is shown below:

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

     TLV-Type
        17

     TLV-Length
        6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   TLV-Type    |   TLV-Length  |             PSID              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

      TLV-Type
         TBD20

      TLV-Length
         4

      PSID (Port-set ID)
         Integer. An explicit 16-bit (unsigned word) octets

     Data Type
        The attribute Bind-IPv6-Prefix is of type integer (Section 3.1
        of [RFC8044]).

     TLV-Value
        Contains the PSID value. (16-bits) right justified, and the unused bits
        in this field MUST be set to zero.
        The PSID value algorithmically identifies a set of ports
        assigned to a CE. The first k bits on the left of this
        2-octet field is the PSID value. The remaining (16-k) bits
        on the right are padding zeros.

3.2.  Softwire46-Priority Attribute

   The Softwire46-Priority Attribute defines a 16-bit S46-option-code 32-bit Softwire46-option-
   code field to contain the information allowing the client to
   prioritize which mechanism to use, corresponding to
   OPTION_S46_PRIORITY defined in [RFC8026].  The following requirements
   apply:

      The Softwire46-Priority Attribute MAY appear in an Access-Accept
      packet.  It MAY also appear in an Access-Request packet.

      The Softwire46-Priority Attribute MAY appear in a CoA-Request
      packet.

      The Softwire46-Priority Attribute MAY appear in an Accounting-
      Request packet.

      The Softwire46-Priority Attribute MUST NOT appear in any other
      RADIUS packet.

   The S46-Priority Softwrie46-Priority Attribute is structured as follows:

    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     | Extended-Type |      ...      .
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   .          S46-option-code                   Softwire46-option-code                      |       S46-option-code
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                       Softwire46-option-code                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      Type
        241 (To be confirmed by IANA)

      Length
        One octet long.
        Indicates the length of this TLV, attribute,
        including the TLV-Type, TLV-Length, Type, Length, Extended-Type and TLV-Value Value fields.

      Extended-Type
        TBD5

      S46-option-code

      Softwire46-option-code
        Integer. A 16-bit 32-bit IANA-registered option code representing
        an S46 Softwire46 mechanism. The option codes and their
        corresponding
        S46 Softwire46 mechanisms are listed in Section 7.3.

        S46

        Softwire46 mechanisms are prioritized in the appearance order
        of the
        S46-option-code(s) Softwire46-option-code(s) in the Softwire46-Priority
        Attribute.

        A Softwire46-Priority Attribute MUST contain at least one
        S46-option-code.
        Softwire46-option-code.

   The Softwire46-Priority Attribute is associated with the following
   identifier: 241.Extended-Type (TBD5).

3.3.  Softwire46-Multicast Attribute

   The Softwire46-Multicast Attribute conveys the IPv6 prefixes to be
   used to synthesize multicast and unicast IPv4-embedded IPv6 addresses
   as per [RFC8114].  This attribute is of type "TLV" "tlv" and contains
   additional TLVs.  The following requirements apply:

      The BNG SHALL use the IPv6 prefixes returned in the RADIUS
      Softwire46-Multicast Attribute to populate the DHCPv6 PREFIX64
      Option [RFC8115].

      This attribute MAY be used in Access-Request packets as a hint to
      the RADIUS server.  For example, if the BNG is pre-configured for
      Softwire46-Multicast, these prefixes MAY be inserted in the
      attribute.  The RADIUS server MAY ignore the hint sent by the BNG,
      and it MAY assign a different Softwire46-Multicast Attribute.

      The Softwire46-Multicast Attribute MAY appear in an Access-Request
      packet.

      The Softwire46-Multicast Attribute MAY appear in an Access-Accept
      packet.

      The Softwire46-Multicast Attribute MAY appear in a CoA-Request
      packet.

      The Softwire46-Multicast Attribute MAY appear in an Accounting-
      Request packet.

      The Softwire46-Multicast Attribute MUST NOT appear in any other
      RADIUS packet.

      The Softwire46-Multicast Attribute MAY contain the ASM-Prefix64
      TLV
      (see Section 3.3.1).

      The Softwire46-Multicast Attribute MAY contain the SSM-Prefix64
      TLV
      (see Section 3.3.2).

      The Softwire46-Multicast Attribute MAY contain the U-Prefix64 TLV (see
      Section 3.3.3).

      The Softwire46-Multicast Attribute MUST include the ASM-Prefix64
      TLV
      or the SSM-Prefix64 TLV, SSM-Prefix64, and it MAY include both.

      The U-Prefix64 TLV MUST be present when the SSM-Prefix64 TLV is present.
      The U-Prefix64 TLV MAY be present when the ASM-Prefix64
      TLV is present.

   The the Softwire46-Multicast Attribute is structured as follows:

  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    | Extended-Type |    Value ...  .
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

    Type
      241 (To be confirmed by IANA)

    Length
      This field indicates the total length in bytes of all fields of
      this attribute, including the Type, Length, Extended-Type, and the
      entire length of the embedded TLVs. attributes.

    Extended-Type
      TBD6

    Value
      This field contains a set of TLVs attributes as follows:

      ASM-Prefix64 TLV
        This TLV attribute contains the ASM IPv6 prefix. Refer to
        Section 3.3.1.

      SSM-Prefix64 TLV
        This TLV attribute contains the SSM IPv6 prefix. Refer to
        Section 3.3.2.

      U-Prefix64 TLV
        This TLV attribute contains the IPv4 prefix used for address
        translation. Refer to Section 3.3.3.

   The Softwire46-Multicast Attribute is associated with the following
   identifier: 241.Extended-Type(TBD6).

3.3.1.  ASM-Prefix64 TLV Attribute

   The ASM-Prefix64 TLV is structured as follows:

 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|

    TLV-Type    |   Reserved    | Prefix-Length |               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               |
|                                                               |
|                                                               |
|                           ASM Prefix64                        |
|                                                               |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   TLV-Type
      TBD21

   Reserved
     This field is reserved. It is always set to zero. This field
     is one octet in length.

   Prefix-Length
       18

    TLV-Length
       16 octets. The length of the prefix, in bits. It MUST ssm-prefix64 must be set to 96 [RFC8115].

   ASM Prefix64
      IPv6 prefix.

    Data Type
       The attribute ASM-Prefix64 is of type ipv6prefix (Section 3.10 of
       [RFC8044]).

    TLV-Value
       This field specifies the IPv6 multicast prefix (asm-prefix64)
       to be used to synthesize the IPv4-embedded IPv6 addresses of the
       multicast groups in the ASM mode. The conveyed multicast IPv6
       prefix MUST belong to the ASM range.

3.3.2.  SSM-Prefix64 TLV Attribute

   The format of SSM-Prefix64 TLV is shown below:

 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   TLV-Type    |    Reserved   |Prefix-Length  |               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               |
|                                                               |
|                                                               |
|                          SSM Prefix64                         |
|                                                               |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   TLV-Type
      TBD22

   Reserved
      This field is reserved. It is always set to zero. This field attribute is one octet in length.

   Prefix-Length structured as follows:

    Type
      19

    TLV-Length
       16 octets. The length of the prefix, in bits. It MUST ssm-prefix64 must be set to 96 [RFC8115].

   SSM Prefix64
      IPv6 prefix.

    Data Type
       The attribute SSM-Prefix64 is of type ipv6prefix (Section 3.10 of
       [RFC8044]).

    TLV-Type
       This field specifies the IPv6 multicast prefix (ssm-prefix64)
       to be used to synthesize the IPv4-embedded IPv6 addresses of the
       multicast groups in the SSM mode. The conveyed multicast IPv6
       prefix MUST belong to the SSM range.

3.3.3.  U-Prefix64 TLV

   The format of the U-Prefix64 TLV is shown below:

   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
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  |   TLV-Type    |  Reserved     | Prefix-Length |               |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+               |
  |                                                               |
  |                                                               |
  |                       Unicast Prefix64                        |
  |                                                               |
  |                                                               |
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

     TLV-Type
        TBD23

     Reserved
        This field is reserved. It is always set to zero. This field
        is one octet in length.

     Prefix-Length  U-Prefix64 Attribute

   The length structure of the prefix, in bits. U-Prefix64 attribute is shown below:

     TLV-Type
        20

     TLV-Length
        4 + length of unicast-prefix. As specified in [RFC6052],
        the Unicast-prefix unicast-prefix prefix-length MUST be set to 32, 40, 48,
        56, 64, or 96.

     Unicast Prefix64
        IPv6 prefix.

     Data Type
        The attribute U-Prefix64 is of type ipv6prefix (Section 3.10 of
        [RFC8044]).

     TLV-Value
        This field identifies the IPv6 unicast prefix to
        be used in SSM mode for constructing the IPv4-embedded IPv6
        addresses representing the IPv4 multicast sources in the IPv6
        domain. It may also be used to extract the IPv4 address from the
        received multicast data flows.

4.  A Sample Configuration Process with RADIUS

   Figure 2 illustrates how the RADIUS and DHCPv6 protocols interwork to
   provide CE with softwire configuration information.

   CE                             BNG                         AAA Server
   |                               |                               |
   |-------1.DHCPv6 Solicit------->|                               |
   |(ORO with unicast and/or m'cast|                               |
   |    container option code(s))  |                               |
   |                               |                               |
   |                               |-------2.Access-Request------->|
   |                               |   (Softwire46-Configuration   |
   |                               |       Attribute and/or        |
   |                               |Softwire46-Multicast Attribute)|
   |                               |                               |
   |                               |<------3.Access-Accept---------|
   |                               |   (Softwire46-Configuration   |
   |                               |       Attribute and/or        |
   |                               |Softwire46-Multicast Attribute)|
   |                               |                               |
   |<----4.DHCPv6 Advertisement----|                               |
   |     (container option(s))     |                               |
   |                               |                               |
   |-------5.DHCPv6  Request------>|                               |
   |     (container Option(s))     |                               |
   |                               |                               |
   |<--------6.DHCPv6 Reply--------|                               |
   |     (container option(s))     |                               |
   |                               |                               |
                DHCPv6                         RADIUS

      Figure 2: Interaction between DHCPv6 and AAA Server with RADIUS
                              authentication

   1.  The CE creates a DHCPv6 Solicit message.  For unicast softwire
       configuration, the message includes an OPTION_REQUEST_OPTION (6)
       with the S46 Softwire46 Container option codes as defined in
       [RFC7598].  OPTION_S46_CONT_MAPE (94) should be included for MAP-E, MAP-
       E, OPTION_S46_CONT_MAPT (95) for MAP-T, and OPTION_S46_CONT_LW
       (96) for Lightweight 4over6.  For multicast configuration, the
       option number for OPTION_V6_PREFIX64 (113) is included in the
       client's ORO.  The message is sent to the BNG.

   2.  On receipt of the Solicit message, the BNG constructs a RADIUS
       Access-Request message containing a User-Name Attribute (1)
       (containing either a CE MAC address, interface-id or both), a
       User-Password Attribute (2) (with a pre-configured shared
       password as defined in [RFC2865].  The Softwire46-Configuration
       Attribute and/or Softwire46-Multicast Attribute are also included
       (as requested by the client).  The resulting message is sent to
       the AAA server.

   3.  The AAA server authenticates the request.  If this is successful,
       and suitable configuration is available, an Access-Accept message
       is sent to the BNG containing the requested
       Softwire46-Configuration Attribute or Softwire46-Multicast
       Attribute.

   4.  The BNG maps the received softwire configuration into the
       corresponding fields in the DHCPv6 softwire configuration
       option(s).  Theses are included in the DHCPv6 Advertise message
       which is sent to the CE.

   5.  The CE send a DHCPv6 Request message.  In the ORO, the option
       code(s) of any of the required softwire options that were
       received in the Advertise message are included.

   6.  The BNG sends a Reply message to the client containing the
       softwire container options enumerated in the ORO.

   The authorization operation could also be done independently, after
   the authentication process.  In this case, steps 1-5 are completed as
   above, then the following steps are performed:

   6a. When the BNG receives the DHCPv6 Request, it constructs a RADIUS
       Access-Request message, which contains a Service-Type Attribute
       (6) with the value "Authorize Only" (17), the corresponding
       Softwire46-Configuration Attribute, and a State Attribute
       obtained from the previous authentication process according to
       [RFC5080].  The resulting message is sent to the AAA server.

   7a. The AAA checks the authorization request.  If it is approved, an
       Access-Accept message is returned to the BNG with the
       corresponding Softwire46-Configuration Attribute.

   8a. The BNG sends a Reply message to the client containing the
       softwire container options enumerated in the ORO.

   In addition to the above, the following points need to be considered:

   o  In both the configuration message flows described above the
      Message-authenticator (type 80) [RFC2869] SHOULD be used to
      protect both Access-Request and Access-Accept messages.

   o  If the BNG does not receive the corresponding
      Softwire46-Configuration Attribute in the Access-Accept message it
      MAY fallback to creating the DHCPv6 softwire configuration options
      using pre-configured S46 Softwire46 configuration, if this is present.

   o  If the BNG receives an Access-Reject from the AAA server, then S46
      Softwire46 configuration MUST NOT be supplied to the client.

   o  As specified in [RFC3315], Section 18.1.4, "Creation and
      Transmission of Rebind Messages", if the DHCPv6 server to which
      the DHCPv6 Renew message was sent at time T1 has not responded by
      time T2, the CE (DHCPv6 client) SHOULD enter the Rebind state and
      attempt to contact any available server.  In this situation, a
      secondary BNG receiving the DHCPv6 message MUST initiate a new
      Access-Request message towards the AAA server.  The secondary BNG
      includes the Softwire46-Configuration Attribute in this Access-
      Request message.

   o  For Lightweight 4over6, the subscriber's binding state needs to be
      synchronized between the clients and the lwAFTR/BR.  This can be
      achieved in two ways: static pre-configuring of the bindings on
      both the AAA server and lwAFTR, or on-demand whereby the AAA
      server updates the lwAFTR with the subscriber's binding state as
      it is created or deleted.

   In some deployments, the DHCP server may use the Accounting-Request
   to report to a AAA server the softwire configuration returned to a
   requesting host.  It is the responsibility of the DHCP server to
   ensure the consistency of the configuration provided to requesting
   hosts.  Reported data to a AAA server may be required for various
   operational purposes (e.g., regulatory).

5.  Table of Attributes

   This document specifies three new RADIUS attributes, and their
   formats are as follows:

   o  Softwire46-Configuration Attribute: 241.TBD1

   o  Softwire46-Priority Attribute: 241.TBD5

   o  Softwire46-Multicast Attribute: 241.TBD6

   The following table describes which attributes may be found, in which
   kinds of packets and in what quantity.

   Request Accept Reject Challenge Accounting  #       Attribute
                                    Request
    0-1     0-1     0      0         0-1      241.TBD1 Softwire46-
                                                       Configuration
    0-1     0-1     0      0         0-1      241.TBD5 Softwire46-
                                                       Priority
    0-1     0-1     0      0         0-1      241.TBD6 Softwire46-
                                                       Multicast

   The following table defines the meaning of the above table entries.

   0     This attribute MUST NOT be present in packet.
   0+    Zero or more instances of this attribute MAY be present in
         packet.
   0-1   Zero or one instance of this attribute MAY be present in
         packet.
   1     Exactly one instance of this attribute MUST be present in
         packet.

6.  Security Considerations

   Known security vulnerabilities of the RADIUS protocol are discussed
   in [RFC2607], [RFC2865], and[RFC2869].  Use of IPsec [RFC4301] for
   providing security when RADIUS is carried in IPv6 is discussed in
   [RFC3162].

   Specific security considerations for interactions between the MAP CE
   and the BNG are discussed in [RFC7597] and [RFC7599].  Security
   considerations for Lightweight 4over6 are discussed in [RFC7596].
   Security considerations for DHCPv6-Based S46 Softwire46 Prioritization
   Mechanism are discussed in [RFC8026].  Security considerations for
   multicast scenarios are discussed in [RFC 8114]. [RFC8114].  Furthermore, generic
   DHCPv6 security mechanisms can be applied to DHCPv6
   intercommunication between the CE and the BNG.

7.  IANA Considerations

   IANA is requested to make new code point assignments for RADIUS
   attributes as described in the following subsections.

7.1.  New RADIUS Attributes

   This document requests IANA to assign the Attribute Types defined in
   this document from the RADIUS namespace as described in the "IANA
   Considerations" section of [RFC3575], in accordance with BCP 26
   [RFC5226].

   This document requests that IANA register three new RADIUS
   attributes, from the "Short Extended Space" of [RFC6929].  The
   attributes are: Softwire46-Configuration Attribute,
   Softwire46-Priority Attribute, and Softwire46-Multicast Attribute:

      Type        Description                Data Type   Reference
      ----        -----------                ---------   ---------
      241.TBD1     Softwire46-Configuration   TLV   tlv         Section 4.1
      241.TBD5     Softwire46-Priority        integer     Section 4.2
      241.TBD6     Softwire46-Multicast       TLV       tlv         Section 4.3

7.2.  New  RADIUS TLVs Softwire46 Configuration and Multicast Attributes

   IANA is requested to create a new registry called "RADIUS Softwire46
   Configuration and Multicast TLVs". Attributes".

   All TLVs attributes in this registry have one or more parent RADIUS
   attributes in nesting (refer to [RFC6929]).

   This registry must be initially populated with the following values:

   Value  Description                     Data Type    Reference
   -----  -----------                     ---------    ---------
   0      Reserved
         TBD2   S46-MAP-E                TLV
   1      Softwire46-MAP-E                tlv          Section 3.1.1.1
         TBD3   S46-MAP-T                TLV
   2      Softwire46-MAP-T                tlv          Section 3.1.1.2
         TBD4   S46-Lightweight-4over6   TLV
   3      Softwire46-Lightweight-4over6   tlv          Section 3.1.1.3
         TBD7   S46-Rule                 TLV
   4      Softwire46-Rule                 tlv          Section 3.1.3.1
         TBD8   S46-Rule                 TLV
   5      Softwire46-Rule                 tlv          Section 3.1.3.1
         TBD9   S46-BR
   6      Softwire46-BR                   ipv6addr     Section 3.1.3.2
         TBD10  S46-DMR
   7      Softwire46-DMR                  ipv6prefix   Section 3.1.3.3
         TBD11  S46-V4V6Bind             TLV
   8      Softwire46-V4V6Bind             tlv          Section 3.1.3.4
         TBD12  S46-PORTPARAMS           TLV
   9      Softwire46-PORTPARAMS           tlv          Section 3.1.3.5
         TBD13
   10     Rule-IPv6-Prefix                ipv6prefix   Section 3.1.4.1
         TBD14
   11     Rule-IPv4-Prefix                ipv4prefix   Section 3.1.4.2
         TBD15
   12     EA-Length                       integer      Section 3.1.4.3
         TBD16
   13     IPv4-address                    ipv4addr     Section 3.1.5.1
         TBD17
   14     Bind-IPv6-Prefix                ipv6prefix   Section 3.1.5.2
         TBD18
   15     PSID-offset                     integer      Section 3.1.6.1
         TBD19
   16     PSID-len                        integer      Section 3.1.6.2
         TBD20
   17     PSID                            integer      Section 3.1.6.3
         TBD21
   18     ASM-Prefix64                    ipv6prefix   Section 3.3.1
         TBD22
   19     SSM-Prefix64                    ipv6prefix   Section 3.3.2
         TBD23
   20     U-Prefix64                      ipv6prefix   Section 3.3.3
   21-255 Unassigned, TBD2,TBD3,TBD4 will be assigned by IANA Unassigned

   The registration procedure for this registry is Standards Action as
   defined in [RFC5226].  The registry may be added to using the IETF
   Review process described in Section 4.1 of [RFC5226].

7.3.  S46  Softwire46 Mechanisms and Their Identifying Option Codes

   The Softwire46-Priority Attribute defines a 16-bit S46-option-code Softwire46-option-
   code field, for which IANA is requested to create and maintain a new
   registry entitled "Option Codes Permitted in the Softwire46-Priority
   Attribute".  The registration procedure for this registry is
   Standards Action as defined in [RFC5226].

   This document requires requests IANA to register the three option codes of the
   Softwire46 mechanisms permitted to be included in the
   Softwire46-Priority Attribute.  The value of option code corresponds
   to the TLV-Type defined in the Section 3.1.1.  Additional options may
   be added to this list in the future using the IETF Review process
   described in Section 4.1 of [RFC5226].

   Table 3. 3 shows the option codes required, and the S46 Softwire46
   mechanisms that they represent.  The option code for DS-Lite is
   derived from the IANA allocated RADIUS Attribute Type value for DS-Lite DS-
   Lite [RFC6519].  The option codes for MAP-E, MAP-T, and Lightweight
   4over6 need to be assigned.  The option codes for MAP-E, MAP-T, and
   Lightweight 4over6 should also be used as the TLV-Type values for the
   MAP-E, MAP-T, and Lightweight 4over6 TLV defined in Section 3.1.1.

             +-------------+------------------+-----------+
             | Option Code |  S46 Mechanism   |

             +-----------+--------------------+-----------+
             |Option Code|Softwire46 Mechanism| Reference |
             +-------------+------------------+-----------+
             +-----------+--------------------+-----------+
             |    TBD2   |        MAP-E       |  RFC7597  |
             |    TBD3   |        MAP-T       |  RFC7599  |
             |    TBD4    |Lightweight 4over6|   | Lightweight 4over6 |  RFC7596  |
             |    144    |      DS-Lite       |  RFC6519  |
             +--------------------------------+-----------+

                  Table 3: Option Codes to S46 Mechanisms

8.  Contributing Authors
   Qiong Sun
   China Telecom
   Beijing  China
   Email: sunqiong@ctbri.com.cn

   Qi Sun
   Tsinghua University
   Department of Computer Science, Tsinghua University
   Beijing 100084
   P.R.China
   Phone: +86-10-6278-5822
   Email: sunqibupt@gmail.com

   Cathy Zhou
   Huawei Technologies
   Bantian, Longgang District
   Shenzhen 518129
   Email: cathy.zhou@huawei.com

   Tina Tsou
   Huawei Technologies(USA)
   2330 Central Expressway
   Santa Clara, CA 95050
   USA
   Email: Tina.Tsou.Zouting@huawei.com

   ZiLong Liu
   Tsinghua University
   Beijing 100084
   P.R.China
   Phone: +86-10-6278-5822
   Email: liuzilong8266@126.com

   Yong Cui
   Tsinghua University
   Beijing 100084
   P.R.China
   Phone: +86-10-62603059
   Email: yong@csnet1.cs.tsinghua.edu.cn

9.  Acknowledgements

   The authors would like to thank the valuable comments made by Peter
   Lothberg, Wojciech Dec, Ian Farrer, Suresh Krishnan, Qian Wang, Wei
   Meng and
   Meng, Cui Wang for Wang, Alan Dekok, and Stefan Winter to this document.

   This document was merged with draft-sun-softwire-lw4over6-radext-01
   and draft-wang-radext-
   multicast-radius-ext-00, draft-wang-radext-multicast-radius-ext-00, thanks to everyone who
   contributed to this document.

   This document was produced using the xml2rfc tool [RFC7991].

10.  References

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

   [RFC2865]  Rigney, C., Willens, S., Rubens, A., and W. Simpson,
              "Remote Authentication Dial In User Service (RADIUS)",
              RFC 2865, DOI 10.17487/RFC2865, June 2000,
              <https://www.rfc-editor.org/info/rfc2865>.

   [RFC3162]  Aboba, B., Zorn, G., and D. Mitton, "RADIUS and IPv6",
              RFC 3162, DOI 10.17487/RFC3162, August 2001,
              <https://www.rfc-editor.org/info/rfc3162>.

   [RFC3315]  Droms, R., Ed., Bound, J., Volz, B., Lemon, T., Perkins,
              C., and M. Carney, "Dynamic Host Configuration Protocol
              for IPv6 (DHCPv6)", RFC 3315, DOI 10.17487/RFC3315, July
              2003, <https://www.rfc-editor.org/info/rfc3315>.

   [RFC3575]  Aboba, B., "IANA Considerations for RADIUS (Remote
              Authentication Dial In User Service)", RFC 3575,
              DOI 10.17487/RFC3575, July 2003,
              <https://www.rfc-editor.org/info/rfc3575>.

   [RFC5080]  Nelson, D. and A. DeKok, "Common Remote Authentication
              Dial In User Service (RADIUS) Implementation Issues and
              Suggested Fixes", RFC 5080, DOI 10.17487/RFC5080, December
              2007, <https://www.rfc-editor.org/info/rfc5080>.

   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an
              IANA Considerations Section in RFCs", RFC 5226,
              DOI 10.17487/RFC5226, May 2008,
              <https://www.rfc-editor.org/info/rfc5226>.

   [RFC6052]  Bao, C., Huitema, C., Bagnulo, M., Boucadair, M., and X.
              Li, "IPv6 Addressing of IPv4/IPv6 Translators", RFC 6052,
              DOI 10.17487/RFC6052, October 2010,
              <https://www.rfc-editor.org/info/rfc6052>.

   [RFC6158]  DeKok, A., Ed. and G. Weber, "RADIUS Design Guidelines",
              BCP 158, RFC 6158, DOI 10.17487/RFC6158, March 2011,
              <https://www.rfc-editor.org/info/rfc6158>.

   [RFC6929]  DeKok, A. and A. Lior, "Remote Authentication Dial In User
              Service (RADIUS) Protocol Extensions", RFC 6929,
              DOI 10.17487/RFC6929, April 2013,
              <https://www.rfc-editor.org/info/rfc6929>.

   [RFC8026]  Boucadair, M. and I. Farrer, "Unified IPv4-in-IPv6
              Softwire Customer Premises Equipment (CPE): A DHCPv6-Based
              Prioritization Mechanism", RFC 8026, DOI 10.17487/RFC8026,
              November 2016, <https://www.rfc-editor.org/info/rfc8026>.

   [RFC8044]  DeKok, A., "Data Types in RADIUS", RFC 8044,
              DOI 10.17487/RFC8044, January 2017,
              <https://www.rfc-editor.org/info/rfc8044>.

   [RFC8114]  Boucadair, M., Qin, C., Jacquenet, C., Lee, Y., and Q.
              Wang, "Delivery of IPv4 Multicast Services to IPv4 Clients
              over an IPv6 Multicast Network", RFC 8114,
              DOI 10.17487/RFC8114, March 2017,
              <https://www.rfc-editor.org/info/rfc8114>.

   [RFC8115]  Boucadair, M., Qin, J., Tsou, T., and X. Deng, "DHCPv6
              Option for IPv4-Embedded Multicast and Unicast IPv6
              Prefixes", RFC 8115, DOI 10.17487/RFC8115, March 2017,
              <https://www.rfc-editor.org/info/rfc8115>.

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/info/rfc8174>.

10.2.  Informative References

   [RFC2607]  Aboba, B. and J. Vollbrecht, "Proxy Chaining and Policy
              Implementation in Roaming", RFC 2607,
              DOI 10.17487/RFC2607, June 1999,
              <https://www.rfc-editor.org/info/rfc2607>.

   [RFC2869]  Rigney, C., Willats, W., and P. Calhoun, "RADIUS
              Extensions", RFC 2869, DOI 10.17487/RFC2869, June 2000,
              <https://www.rfc-editor.org/info/rfc2869>.

   [RFC4301]  Kent, S. and K. Seo, "Security Architecture for the
              Internet Protocol", RFC 4301, DOI 10.17487/RFC4301,
              December 2005, <https://www.rfc-editor.org/info/rfc4301>.

   [RFC6333]  Durand, A., Droms, R., Woodyatt, J., and Y. Lee, "Dual-
              Stack Lite Broadband Deployments Following IPv4
              Exhaustion", RFC 6333, DOI 10.17487/RFC6333, August 2011,
              <https://www.rfc-editor.org/info/rfc6333>.

   [RFC6346]  Bush, R., Ed., "The Address plus Port (A+P) Approach to
              the IPv4 Address Shortage", RFC 6346,
              DOI 10.17487/RFC6346, August 2011,
              <https://www.rfc-editor.org/info/rfc6346>.

   [RFC6519]  Maglione, R. and A. Durand, "RADIUS Extensions for Dual-
              Stack Lite", RFC 6519, DOI 10.17487/RFC6519, February
              2012, <https://www.rfc-editor.org/info/rfc6519>.

   [RFC7596]  Cui, Y., Sun, Q., Boucadair, M., Tsou, T., Lee, Y., and I.
              Farrer, "Lightweight 4over6: An Extension to the Dual-
              Stack Lite Architecture", RFC 7596, DOI 10.17487/RFC7596,
              July 2015, <https://www.rfc-editor.org/info/rfc7596>.

   [RFC7597]  Troan, O., Ed., Dec, W., Li, X., Bao, C., Matsushima, S.,
              Murakami, T., and T. Taylor, Ed., "Mapping of Address and
              Port with Encapsulation (MAP-E)", RFC 7597,
              DOI 10.17487/RFC7597, July 2015,
              <https://www.rfc-editor.org/info/rfc7597>.

   [RFC7598]  Mrugalski, T., Troan, O., Farrer, I., Perreault, S., Dec,
              W., Bao, C., Yeh, L., and X. Deng, "DHCPv6 Options for
              Configuration of Softwire Address and Port-Mapped
              Clients", RFC 7598, DOI 10.17487/RFC7598, July 2015,
              <https://www.rfc-editor.org/info/rfc7598>.

   [RFC7599]  Li, X., Bao, C., Dec, W., Ed., Troan, O., Matsushima, S.,
              and T. Murakami, "Mapping of Address and Port using
              Translation (MAP-T)", RFC 7599, DOI 10.17487/RFC7599, July
              2015, <https://www.rfc-editor.org/info/rfc7599>.

   [RFC7678]  Zhou, C., Taylor, T., Sun, Q., and M. Boucadair,
              "Attribute-Value Pairs for Provisioning Customer Equipment
              Supporting IPv4-Over-IPv6 Transitional Solutions",
              RFC 7678, DOI 10.17487/RFC7678, October 2015,
              <https://www.rfc-editor.org/info/rfc7678>.

   [RFC7991]  Hoffman, P., "The "xml2rfc" Version 3 Vocabulary",
              RFC 7991, DOI 10.17487/RFC7991, December 2016,
              <https://www.rfc-editor.org/info/rfc7991>.

Appendix A.  DHCPv6 to RADIUS Field Mappings

   The following sections detail the mappings between the softwire
   DHCPv6 option fields and the relevant RADIUS attributes, TLVs and
   Sub-TLVs attributes as defined in
   this document.

A.1.  OPTION_S46_RULE (89) to S46-Rule Softwire46-Rule Sub-TLV Field Mappings

   +---------------------+----------------------+----------------------+
   |   OPTION_S46_RULE   |   S46-Rule Sub-TLV Softwire46-Rule Name |      TLV Field       |
   |        Field        |         Name                      |                      |
   +---------------------+----------------------+----------------------+
   |        flags        |         N/A          |   TLV-type (TBD7,    |
   |                     |                      |        TBD8)         |
   |        ea-len       |      EA-Length       |        EA-len        |
   |     prefix4-len     |   Rule-IPv4-Prefix   |   ruleprefix4-len    |
   |     ipv4-prefix     |   Rule-IPv4-Prefix   |   rule-ipv4-prefix   |
   |     prefix6-len     |   Rule-IPv6-Prefix   |   ruleprefix6-len    |
   |     ipv6-prefix     |   Rule-IPv6-Prefix   |   rule-ipv6-prefix   |
   +---------------------+----------------------+----------------------+

A.2.  OPTION_S46_BR (90) to S46-BR Sub-TLV Sub-TLV Softwire46-BR Field Mappings

              +---------------------+----------------------+

               +---------------------+---------------------+
               | OPTION_S46_BR Field | S46-BR Sub-TLV Softwire46-BR Field |
              +---------------------+----------------------+
               +---------------------+---------------------+
               |   br-ipv6-address   |   br-ipv6-address   |
              +---------------------+----------------------+
               +---------------------+---------------------+

A.3.  OPTION_S46_DMR (91) to S46-DMR Sub-TLV

              +---------------------+-----------------------+ Softwire46-DMR

              +---------------------+----------------------+
              | OPTION_S46_BR Field | S46-DMR Sub-TLV Softwire46-DMR Field |
              +---------------------+-----------------------+
              +---------------------+----------------------+
              |   dmr-prefix6-len   |   dmr-prefix6-len    |
              |   dmr-ipv6-prefix   |   dmr-ipv6-prefix    |
              +---------------------+-----------------------+
              +---------------------+----------------------+

A.4.  OPTION_S46_V4V6BIND (92) to S46-V4V6Bind Sub-TLV

   +------------------------+-----------------------+------------------+ Softwire46-V4V6Bind

   +-----------------------+------------------------+------------------+
   |  OPTION_S46_V4V6BIND  |  S46-V4V6Bind Sub-TLV  Softwire46-V4V6Bind   |    TLV Field     |
   |         Field         |          Name          |                  |
   +------------------------+-----------------------+------------------+
   +-----------------------+------------------------+------------------+
   |      ipv4-address     |      IPv4-address      |   ipv4-address   |
   |    bindprefix6-len    |    Bind-IPv6-Prefix    | bind6prefix-len  |
   |    bind-ipv6-prefix   |    Bind-IPv6-Prefix    | bind-ipv6-prefix |
   +------------------------+-----------------------+------------------+
   +-----------------------+------------------------+------------------+

A.5.  OPTION_S46_PORTPARAMS (93) to S46-PORTPARAMS Sub-TLV Softwire46-PORTPARAMS Field Mappings

   +---------------------------+-------------------------+-------------+
   +--------------------------+--------------------------+-------------+
   |  OPTION_S46_PORTPARAMS   |  S46-PORTPARAMS Sub-TLV  Softwire46-PORTPARAMS   |  TLV Field  |
   |          Field           |           Name           |             |
   +---------------------------+-------------------------+-------------+
   +--------------------------+--------------------------+-------------+
   |          offset          |       PSID-offset        | PSID-Offset |
   |         PSID-len         |         PSID-len         |   PSID-len  |
   |           PSID           |           PSID           |     PSID    |
   +---------------------------+-------------------------+-------------+
   +--------------------------+--------------------------+-------------+

A.6.  OPTION_S46_PRIORITY (111) to S46-PORTPARAMS Sub-TLV Softwire46-PORTPARAMS Field Mappings

    +---------------------------+-------------------------------------+
    | OPTION_S46_PRIORITY Field | Softwire46-Priority Attribute Field |
    +---------------------------+-------------------------------------+
    |      s46-option-code      |           S46-option-code        Softwire46-option-code       |
    +---------------------------+-------------------------------------+

A.7.  OPTION_V6_PREFIX64 (113) to Softwire46-Multicast Attribute TLV Field
      Mappings

   +--------------------+------------------------------+---------------+
   | OPTION_V6_PREFIX64 |     Softwire46-Multicast     |   TLV Field   |
   |       Field        |      Attribute TLV Name      |               |
   +--------------------+------------------------------+---------------+
   |     asm-length     |         ASM-Prefix64         | Prefix-Length |
   |   ASM_mPrefix64    |         ASM-Prefix64         |  ASM Prefix64 |
   |     ssm-length     |         SSM-Prefix64         | Prefix-Length |
   |   SSM_mPrefix64    |         SSM-Prefix64         |  SSM Prefix64 |
   |   unicast-length   |          U-Prefix64          | Prefix-Length |
   |     uPrefix64      |          U-Prefix64          |    Unicast    |
   |                    |                              |    Prefix64   |
   +--------------------+------------------------------+---------------+

Authors' Addresses

   Sheng Jiang
   Huawei Technologies Co., Ltd
   Q14, Huawei Campus, No.156 Beiqing Road
   Hai-Dian District, Beijing, 100095
   P.R. China

   Email: jiangsheng@huawei.com
   Yu Fu
   CNNIC
   No.4 South 4th Street, Zhongguancun
   Hai-Dian District, Beijing, 100190
   P.R. China

   Email: eleven711711@foxmail.com

   Bing Liu
   Huawei Technologies Co., Ltd
   Q14, Huawei Campus, No.156 Beiqing Road
   Hai-Dian District, Beijing, 100095
   P.R. China

   Email: leo.liubing@huawei.com

   Peter Deacon
   IEA Software, Inc.
   P.O. Box 1170
   Veradale, WA  99037
   USA

   Email: peterd@iea-software.com

   Chongfeng Xie
   China Telecom
   China Telecom Beijing Information Sci.&Tech. Park,
   Beiqijia Town, Changping District,
   Beijing  102209
   P.R. China

   Email: xiechf.bri@chinatelecom.cn

   Tianxiang Li
   Tsinghua University
   Beijing  100084
   P.R.China

   Email: peter416733@gmail.com
   Mohamed Boucadair (editor)
   Orange
   Rennes, 35000
   France

   Email: mohamed.boucadair@orange.com