RFC 7556 INFORMATIONAL MULTIHOMING · ARCHITECTURE · NETWORK CONFIGURATION

Multiple PvD: Multiple Provisioning Domain Architecture

How devices manage multiple networks with separate configurations.

On rfc-editor.org ↗
PUBLISHED
June 2015
AUTHORS
D. Anipko
STREAM
IETF
PROBLEM CATEGORIES
3
PVD DEFINITION
A consistent set of network configuration information
API SUPPORT LEVELS
3: basic, intermediate and advanced
EXAMPLE CONFIGURATIONS
3
DOI
10.17487/RFC7556
ERRATA
Reported errata

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Internet Engineering Task Force (IETF)                    D. Anipko, Ed.
Request for Comments: 7556                                  Unaffiliated
Category: Informational                                        June 2015
ISSN: 2070-1721


               Multiple Provisioning Domain Architecture

Abstract

   This document is a product of the work of the Multiple Interfaces
   Architecture Design team.  It outlines a solution framework for some
   of the issues experienced by nodes that can be attached to multiple
   networks simultaneously.  The framework defines the concept of a
   Provisioning Domain (PvD), which is a consistent set of network
   configuration information.  PvD-aware nodes learn PvD-specific
   information from the networks they are attached to and/or other
   sources.  PvDs are used to enable separation and configuration
   consistency in the presence of multiple concurrent connections.

Status of This Memo

   This document is not an Internet Standards Track specification; it is
   published for informational purposes.

   This document is a product of the Internet Engineering Task Force
   (IETF).  It represents the consensus of the IETF community.  It has
   received public review and has been approved for publication by the
   Internet Engineering Steering Group (IESG).  Not all documents
   approved by the IESG are a candidate for any level of Internet
   Standard; see Section 2 of RFC 5741.

   Information about the current status of this document, any errata,
   and how to provide feedback on it may be obtained at
   http://www.rfc-editor.org/info/rfc7556.

Copyright Notice

   Copyright (c) 2015 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
   (http://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  . . . . . . . . . . . . . . . . . . . . . . . .   4
   2.  Definitions and Types of PvDs . . . . . . . . . . . . . . . .   5
     2.1.  Explicit PvDs . . . . . . . . . . . . . . . . . . . . . .   5
     2.2.  Implicit PvDs and Incremental Adoption of Explicit PvDs .   6
     2.3.  Relationship between PvDs and Interfaces  . . . . . . . .   7
     2.4.  PvD Identity/Naming . . . . . . . . . . . . . . . . . . .   8
     2.5.  The Relationship to Dual-Stack Networks . . . . . . . . .   8
   3.  Conveying PvD Information . . . . . . . . . . . . . . . . . .   9
     3.1.  Separate Messages or One Message? . . . . . . . . . . . .   9
     3.2.  Securing PvD Information  . . . . . . . . . . . . . . . .  10
     3.3.  Backward Compatibility  . . . . . . . . . . . . . . . . .  10
     3.4.  Retracting/Updating PvD Information . . . . . . . . . . .  10
     3.5.  Conveying Configuration Information Using IKEv2 . . . . .  10
   4.  Example Network Configurations  . . . . . . . . . . . . . . .  11
     4.1.  A Mobile Node . . . . . . . . . . . . . . . . . . . . . .  11
     4.2.  A Node with a VPN Connection  . . . . . . . . . . . . . .  12
     4.3.  A Home Network and a Network Operator with Multiple PvDs   12
   5.  Reference Model for the PvD-Aware Node  . . . . . . . . . . .  13
     5.1.  Constructions and Maintenance of Separate PvDs  . . . . .  13
     5.2.  Consistent Use of PvDs for Network Connections  . . . . .  14
       5.2.1.  Name Resolution . . . . . . . . . . . . . . . . . . .  14
       5.2.2.  Next-Hop and Source Address Selection . . . . . . . .  15
       5.2.3.  Listening Applications  . . . . . . . . . . . . . . .  16
         5.2.3.1.  Processing of Incoming Traffic  . . . . . . . . .  16
       5.2.4.  Enforcement of Security Policies  . . . . . . . . . .  17
     5.3.  Connectivity Tests  . . . . . . . . . . . . . . . . . . .  18
     5.4.  Relationship to Interface Management and Connection
           Managers  . . . . . . . . . . . . . . . . . . . . . . . .  18
   6.  PvD Support in APIs . . . . . . . . . . . . . . . . . . . . .  19
     6.1.  Basic . . . . . . . . . . . . . . . . . . . . . . . . . .  19
     6.2.  Intermediate  . . . . . . . . . . . . . . . . . . . . . .  19
     6.3.  Advanced  . . . . . . . . . . . . . . . . . . . . . . . .  20
   7.  PvD Trust for PvD-Aware Node  . . . . . . . . . . . . . . . .  20
     7.1.  Untrusted PvDs  . . . . . . . . . . . . . . . . . . . . .  20
     7.2.  Trusted PvDs  . . . . . . . . . . . . . . . . . . . . . .  20
       7.2.1.  Authenticated PvDs  . . . . . . . . . . . . . . . . .  21
       7.2.2.  PvDs Trusted by Attachment  . . . . . . . . . . . . .  21
   8.  Security Considerations . . . . . . . . . . . . . . . . . . .  21
   9.  Informative References  . . . . . . . . . . . . . . . . . . .  23
   Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . .  25
   Contributors  . . . . . . . . . . . . . . . . . . . . . . . . . .  25
   Author's Address  . . . . . . . . . . . . . . . . . . . . . . . .  25

1.  Introduction

   Nodes attached to multiple networks may encounter problems from
   conflicting configuration between the networks or attempts to
   simultaneously use more than one network.  While various techniques
   are currently used to tackle these problems [RFC6419], in many cases
   issues may still appear.  The Multiple Interfaces Problem Statement
   document [RFC6418] describes the general landscape and discusses many
   of the specific issues and scenario details.

   Problems, enumerated in [RFC6418], can be grouped into 3 categories:

   1.  Lack of consistent and distinctive management of configuration
       elements associated with different networks.

   2.  Inappropriate mixed use of configuration elements associated with
       different networks during a particular network activity or
       connection.

   3.  Use of a particular network that is not consistent with the
       intended use of the network, or the intent of the communicating
       parties, leading to connectivity failure and/or other undesired
       consequences.

   An example of (1) is a single, node-scoped list of DNS server IP
   addresses learned from different networks leading to failures or
   delays in resolution of names from particular namespaces; an example
   of (2) is an attempt to resolve the name of an HTTP proxy server
   learned from network A using a DNS server learned from network B; and
   an example of (3) is the use of an employer-provided VPN connection
   for peer-to-peer connectivity unrelated to employment activities.

   This architecture provides solutions to these categories of problems,
   respectively, by:

   1.  Introducing the formal notion of PvDs, including identity for
       PvDs, and describing mechanisms for nodes to learn the intended
       associations between acquired network configuration information
       elements.

   2.  Introducing a reference model for PvD-aware nodes that prevents
       the inadvertent mixed use of configuration information that may
       belong to different PvDs.

   3.  Providing recommendations on PvD selection based on PvD identity
       and connectivity tests for common scenarios.

2.  Definitions and Types of PvDs

   Provisioning Domain:
      A consistent set of network configuration information.
      Classically, all of the configuration information available on a
      single interface is provided by a single source (such as a network
      administrator) and can therefore be treated as a single
      provisioning domain.  In modern IPv6 networks, multihoming can
      result in more than one provisioning domain being present on a
      single link.  In some scenarios, it is also possible for elements
      of the same PvD to be present on multiple links.

      Typical examples of information in a provisioning domain learned
      from the network are:

      *  Source address prefixes for use by connections within the
         provisioning domain

      *  IP address(es) of the DNS server(s)

      *  Name of the HTTP proxy server (if available)

      *  DNS suffixes associated with the network

      *  Default gateway address

   PvD-aware node:
      A node that supports the association of network configuration
      information into PvDs and the use of these PvDs to serve requests
      for network connections in ways consistent with the
      recommendations of this architecture.

   PvD-aware application:
      An application that contains code and/or application-specific
      configuration information explicitly aware of the notion of PvD
      and/or specific types of PvD elements or properties.

2.1.  Explicit PvDs

   A node may receive explicit information from the network and/or other
   sources conveying the presence of PvDs and the association of
   particular network information with a particular PvD.  PvDs that are
   constructed based on such information are referred to as "explicit"
   in this document.

   Protocol changes or extensions will likely be required to support
   explicit PvDs through IETF-defined mechanisms.  As an example, one
   could think of one or more DHCP options carrying PvD identity and/or
   its elements.

   A different approach could be the introduction of a DHCP option that
   only carries the identity of a PvD.  Here, the associations between
   network information elements with the identity is implemented by the
   respective protocols, for example, with a Router Discovery [RFC4861]
   option associating an address range with a PvD.  Additional
   discussion can be found in Section 3.

   Other examples of a delivery mechanism for PvDs are key exchange or
   tunneling protocols, such as the Internet Key Exchange Protocol
   version 2 (IKEv2) [RFC7296] that allows the transport of host
   configuration information.

   Specific, existing, or new features of networking protocols that
   enable the delivery of PvD identity and association with various
   network information elements will be defined in companion design
   documents.

   Link-specific and/or vendor-proprietary mechanisms for the discovery
   of PvD information (differing from IETF-defined mechanisms) can be
   used by nodes either separate from or in conjunction with IETF-
   defined mechanisms, providing they allow the discovery of the
   necessary elements of the PvD(s).

   In all cases, nodes must by default ensure that the lifetime of all
   dynamically discovered PvD configuration is appropriately limited by
   relevant events.  For example, if an interface media state change is
   indicated, previously discovered information relevant to that
   interface may no longer be valid and thus needs to be confirmed or
   re-discovered.

   It is expected that the way a node makes use of PvD information is
   generally independent of the specific mechanism/protocol that the
   information was received by.

   In some network topologies, network infrastructure elements may need
   to advertise multiple PvDs.  Generally, the details of how this is
   performed will be defined in companion design documents.

2.2.  Implicit PvDs and Incremental Adoption of Explicit PvDs

   For the foreseeable future, there will be networks that do not
   advertise explicit PvD information, because deployment of new
   features in networking protocols is a relatively slow process.

   When connected to networks that don't advertise explicit PvD
   information, a PvD-aware node shall automatically create separate
   PvDs for received configuration.  Such PvDs are referred to in this
   document as "implicit".

   Through the use of implicit PvDs, PvD-aware nodes may still provide
   benefits to their users (when compared to non-PvD-aware nodes) by
   following the best practices described in Section 5.

   PvD-aware nodes shall treat network information from different
   interfaces, which is not identified as belonging explicitly to some
   PvD, as belonging to separate PvDs, one per interface.

   Implicit PvDs can also occur in a mixed mode, i.e., where of multiple
   networks that are available on an attached link, only some advertise
   PvD information.  In this case, the PvD-aware node shall create
   explicit PvDs from information explicitly labeled as belonging to
   PvDs.  It shall associate configuration information not labeled with
   an explicit PvD with an implicit PvD(s) created for that interface.

2.3.  Relationship between PvDs and Interfaces

   By default, implicit PvDs are limited to the network configuration
   information received on a single interface, and by default, one such
   PvD is formed for each interface.  If additional information is
   available to the host (through mechanisms out of scope of this
   document), the host may form implicit PvDs with different
   granularity.  For example, PvDs spanning multiple interfaces such as
   a home network with a router that has multiple internal interfaces or
   multiple PvDs on a single interface such as a network that has
   multiple uplink connections.

   In the simplest case, explicit PvDs will be scoped for configuration
   related only to a specific interface.  However, there is no
   requirement in this architecture for such a limitation.  Explicit
   PvDs may include information related to more than one interface if
   the node learns the presence of the same PvD on those interfaces and
   the authentication of the PvD ID meets the level required by the node
   policy (authentication of a PvD ID may be also required in scenarios
   involving only one connected interface and/or PvD; for additional
   discussion of PvD Trust, see Section 7).

   This architecture supports such scenarios.  Hence, no hierarchical
   relationship exists between interfaces and PvDs: it is possible for
   multiple PvDs to be simultaneously accessible over one interface, as
   well as a single PvD to be simultaneously accessible over multiple
   interfaces.

2.4.  PvD Identity/Naming

   For explicit PvDs, the PvD ID is a value that is or has a high
   probability of being globally unique and is received as part of PvD
   information.  It shall be possible to generate a human-readable form
   of the PvD ID to present to the end user, either based on the PvD ID
   itself or using metadata associated with the ID.  For implicit PvDs,
   the node assigns a locally generated ID with a high probability of
   being globally unique to each implicit PvD.

   We say that a PvD ID should be, or should have a high probability of
   being, globally unique.  The purpose of this is to make it unlikely
   that any individual node will ever accidentally see the same PvD name
   twice if it is not actually referring to the same PvD.  Protection
   against deliberate attacks involving name clashes requires that the
   name be authenticated (see Section 7.2.1).

   A PvD-aware node may use these IDs to select a PvD with a matching ID
   for special-purpose connection requests in accordance with node
   policy, as chosen by advanced applications, or to present a human-
   readable representation of the IDs to the end user for selection of
   PvDs.

   A single network provider may operate multiple networks, including
   networks at different locations.  In such cases, the provider may
   chose whether to advertise single or multiple PvD identities at all
   or some of those networks as it suits their business needs.  This
   architecture does not impose any specific requirements in this
   regard.

   When multiple nodes are connected to the same link with one or more
   explicit PvDs available, this architecture assumes that the
   information about all available PvDs is made available by the
   networks to all the connected nodes.  At the same time, connected
   nodes may have different heuristics, policies, and/or other settings,
   including their configured sets of trusted PvDs.  This may lead to
   different PvDs actually being used by different nodes for their
   connections.

   Possible extensions whereby networks advertise different sets of PvDs
   to different connected nodes are out of scope of this document.

2.5.  The Relationship to Dual-Stack Networks

   When applied to dual-stack networks, the PvD definition allows for
   multiple PvDs to be created whereby each PvD contains information
   relevant to only one address family, or for a single PvD containing
   information for multiple address families.  This architecture
   requires that accompanying design documents describing PvD-related
   protocol changes must support PvDs containing information from
   multiple address families.  PvD-aware nodes must be capable of
   creating and using both single-family and multi-family PvDs.

   For explicit PvDs, the choice of either of these approaches is a
   policy decision for the network administrator and/or the node user/
   administrator.  Since some of the IP configuration information that
   can be learned from the network can be applicable to multiple address
   families (for instance, DHCPv6 Address Selection Policy Option
   [RFC7078]), it is likely that dual-stack networks will deploy single
   PvDs for both address families.

   By default for implicit PvDs, PvD-aware nodes shall include multiple
   IP families into a single implicit PvD created for an interface.  At
   the time of writing, in dual-stack networks it appears to be common
   practice for the configuration of both address families to be
   provided by a single source.

   A PvD-aware node that provides an API to use, enumerate, and inspect
   PvDs and/or their properties shall provide the ability to filter PvDs
   and/or their properties by address family.

3.  Conveying PvD Information

   DHCPv6 and Router Advertisements (RAs) are the two most common
   methods of configuring hosts.  To support the architecture described
   in this document, these protocols would need to be extended to convey
   explicit PvD information.  The following sections describe topics
   that must be considered before finalizing a mechanism to augment
   DHCPv6 and RAs with PvD information.

3.1.  Separate Messages or One Message?

   When information related to several PvDs is available from the same
   configuration source, there are two possible ways of distributing
   this information: One way is to send information from each different
   provisioning domain in separate messages.  The second method is
   combining the information from multiple PvDs into a single message.
   The latter method has the advantage of being more efficient but could
   have problems with authentication and authorization, as well as
   potential issues with accommodating information not tagged with any
   PvD information.

3.2.  Securing PvD Information

   DHCPv6 [RFC3315] and RAs [RFC3971] both provide some form of
   authentication to ensure the identity of the source as well as the
   integrity of the secured message content.  While this is useful,
   determining authenticity does not tell a node whether the
   configuration source is actually allowed to provide information from
   a given PvD.  To resolve this, there must be a mechanism for the PvD
   owner to attach some form of authorization token or signature to the
   configuration information that is delivered.

3.3.  Backward Compatibility

   The extensions to RAs and DHCPv6 should be defined in such a manner
   that unmodified hosts (i.e., hosts not aware of PvDs) will continue
   to function as well as they did prior to PvD information being added.
   This could imply that some information may need to be duplicated in
   order to be conveyed to legacy hosts.  Similarly, PvD-aware hosts
   need to be able to correctly utilize legacy configuration sources
   that do not provide PvD information.  There are also several
   initiatives that are aimed at adding some form of additional
   information to prefixes [DHCPv6-CLASS-BASED-PREFIX]
   [IPv6-PREFIX-PROPERTIES], and any new mechanism should try to
   consider coexistence with such deployed mechanisms.

3.4.  Retracting/Updating PvD Information

   After PvD information is provisioned to a host, it may become
   outdated or superseded by updated information before the hosts would
   normally request updates.  To resolve this requires that the
   mechanism be able to update and/or withdraw all (or some subset) of
   the information related to a given PvD.  For efficiency reasons,
   there should be a way to specify that all information from the PvD
   needs to be reconfigured instead of individually updating each item
   associated with the PvD.

3.5.  Conveying Configuration Information Using IKEv2

   IKEv2 [RFC7296] [RFC5739] is another widely used method of
   configuring host IP information.  For IKEv2, the provisioning domain
   could be implicitly learned from the Identification - Responder (IDr)
   payloads that the IKEv2 initiator and responder inject during their
   IKEv2 exchange.  The IP configuration may depend on the named IDr.
   Another possibility could be adding a specific provisioning domain
   identifying payload extensions to IKEv2.  All of the considerations
   for DHCPv6 and the RAs listed above potentially apply to IKEv2 as
   well.

4.  Example Network Configurations

4.1.  A Mobile Node

   Consider a mobile node with two network interfaces: one to the mobile
   network, the other to the Wi-Fi network.  When the mobile node is
   only connected to the mobile network, it will typically have one PvD,
   implicit or explicit.  When the mobile node discovers and connects to
   a Wi-Fi network, it will have zero or more (typically one) additional
   PvD(s).

   Some existing OS implementations only allow one active network
   connection.  In this case, only the PvD(s) associated with the active
   interface can be used at any given time.

   As an example, the mobile network can explicitly deliver PvD
   information through the Packet Data Protocol (PDP) context activation
   process.  Then, the PvD-aware mobile node will treat the mobile
   network as an explicit PvD.  Conversely, the legacy Wi-Fi network may
   not explicitly communicate PvD information to the mobile node.  The
   PvD-aware mobile node will associate network configuration for the
   Wi-Fi network with an implicit PvD in this case.

   The following diagram illustrates the use of different PvDs in this
   scenario:


                 <----------- Wi-Fi 'Internet' PvD -------->
        +---------+
        | +-----+ |    +-----+         _   __               _  _
        | |Wi-Fi| |    |     |        ( `    )             ( `   )_
        | |-IF  + |----+     |---------------------------(         `)
        | |     | |    |Wi-Fi|      (         )         (  Internet  )
        | +-----+ |    | AP  |     (           )        (            )
        |         |    |     |    (   Service    )      (            )
        |         |    +-----+    (  Provider's   )     (            )
        |         |               (   Networks    -     (            )
        | +----+  |                `_            )      (            )
        | |CELL|  |                 (          )        (            )
        | |-IF +--|-------------------------------------(            )
        | |    |  |                 (_     __)          (_          _)
        | +----+  |                  `- --               `- __  _) -
        +---------+
                 <------- Mobile 'Internet' PvD ----------->

     Figure 1: An Example of PvD Use with Wi-Fi and Mobile Interfaces

4.2.  A Node with a VPN Connection

   If the node has established a VPN connection, zero or more (typically
   one) additional PvD(s) will be created.  These may be implicit or
   explicit.  The routing to IP addresses reachable within this PvD will
   be set up via the VPN connection, and the routing of packets to
   addresses outside the scope of this PvD will remain unaffected.  If a
   node already has N connected PvDs, after the VPN session has been
   established typically there will be N+1 connected PvDs.

   The following diagram illustrates the use of different PvDs in this
   scenario:

             <----------- 'Internet' PvD ------>
    +--------+
    | +----+ |    +----+         _   __        _  _
    | |Phy | |    |    |        ( `    )      ( `   )_
    | |-IF +-|----+    |--------------------(         `)
    | |    | |    |    |      (         )  (_ Internet  _)
    | +----+ |    |    |     (           )   `- __  _) -
    |        |    |Home|    (   Service    )      ||
    |        |    |Gate|    (  Provider's   )     ||
    |        |    |-way|    (   Network     -     ||
    | +----+ |    |    |    `_            )  +---------+  +------------+
    | |VPN | |    |    |      (          )   |   VPN   |  |            |
    | |-IF +-|----+    |---------------------+ Gateway |--+  Private   |
    | |    | |    |    |       (_     __)    |         |  |  Services  |
    | +----+ |    +----+         `- --       +---------+  +------------+
    +--------+
             <-------------- Explicit 'VPN' PvD ----->

                 Figure 2: An Example of PvD Use with VPN

4.3.  A Home Network and a Network Operator with Multiple PvDs

   An operator may use separate PvDs for individual services that they
   offer to their customers.  These may be used so that services can be
   designed and provisioned to be completely independent of each other,
   allowing for complete flexibility in combinations of services that
   are offered to customers.

   From the perspective of the home network and the node, this model is
   functionally very similar to being multihomed to multiple upstream
   operators: Each of the different services offered by the service
   provider is its own PvD with associated PvD information.  In this
   case, the operator may provide a generic/default PvD (explicit or
   implicit), which provides Internet access to the customer.
   Additional services would then be provisioned as explicit PvDs for
   subscribing customers.

   The following diagram illustrates this, using video-on-demand as a
   service-specific PvD:

                <------ Implicit 'Internet' PvD ------>
           +----+     +-----+        _   __              _  _
           |    |     |     |       ( `    )            ( `   )_
           | PC +-----+     |-------------------------(         `)
           |    |     |     |     (         )        (_ Internet  _)
           +----+     |     |    (           )         `- __  _) -
                      |Home |   (   Service    )
                      |Gate-|   (  Provider's   )
                      |way  |   (   Network     -
           +-----+    |     |   `_            )        +-----------+
           | Set-|    |     |     (          )         |ISP Video- |
           | Top +----+     |--------------------------+on-Demand  |
           | Box |    |     |      (_     __)          | Service   |
           +-----+    +-----+        `- --             +-----------+
                 <-- Explicit 'Video-on-Demand' PvD -->

     Figure 3: An Example of PvD Use with Wi-Fi and Mobile Interfaces

   In this case, the number of PvDs that a single operator could
   provision is based on the number of independently provisioned
   services that they offer.  Some examples may include:

   o  Real-time packet voice

   o  Streaming video

   o  Interactive video (n-way video conferencing)

   o  Interactive gaming

   o  Best effort / Internet access

5.  Reference Model for the PvD-Aware Node

5.1.  Constructions and Maintenance of Separate PvDs

   It is assumed that normally, the configuration information contained
   in a single PvD shall be sufficient for a node to fulfill a network
   connection request by an application, and hence there should be no
   need to attempt to merge information across different PvDs.

   Nevertheless, even when a PvD lacks some necessary configuration
   information, merging of information associated with a different
   PvD(s) shall not be done automatically as this will typically lead to
   the issues described in [RFC6418].

   A node may use other sources, for example: node local policy, user
   input, or other mechanisms not defined by the IETF for any of the
   following:

   o  Construction of a PvD in its entirety (analogous to statically
      configuring IP on an interface)

   o  Supplementing some or all learned PvDs with particular
      configuration elements

   o  Merging of information from different PvDs (if this is explicitly
      allowed by policy)

   As an example, a node administrator could configure the node to use a
   specific DNS resolver on a particular interface, or for a particular
   named PvD.  In the case of a per-interface DNS resolver, this might
   override or augment the DNS resolver configuration for PvDs that are
   discovered on that interface.  Such creation/augmentation of a PvD(s)
   could be static or dynamic.  The specific mechanism(s) for
   implementing this is outside the scope of this document.  Such a
   merging or overriding of DNS resolver configuration might be contrary
   to the policy that applies to a special-purpose connection, such as,
   for example, those discussed in Sections 5.2.1 and 5.2.4.  In such
   cases, either the special-purpose connection should not be used or
   the merging/overriding should not be performed.

5.2.  Consistent Use of PvDs for Network Connections

   PvDs enable PvD-aware nodes to consistently use the correct set of
   configuration elements to serve specific network requests from
   beginning to end.  This section provides examples of such use.

5.2.1.  Name Resolution

   When a PvD-aware node needs to resolve the name of the destination
   for use by a connection request, the node could use one or multiple
   PvDs for a given name lookup.

   The node shall choose a single PvD if, for example, the node policy
   required the use of a particular PvD for a specific purpose (e.g., to
   download a Multimedia Messaging Service (MMS) message using a
   specific Access Point Name (APN) over a cellular connection or to
   direct traffic of enterprise applications to a VPN connection to the
   enterprise network).  To make this selection, the node could use a
   match between the PvD DNS suffix and a Fully Qualified Domain Name
   (FQDN) that is being resolved or a match of the PvD ID, as determined
   by the node policy.

   The node may pick multiple PvDs if, for example, the PvDs are for
   general purpose Internet connectivity, and the node is attempting to
   maximize the probability of connectivity similar to the Happy
   Eyeballs [RFC6555] approach.  In this case, the node could perform
   DNS lookups in parallel, or in sequence.  Alternatively, the node may
   use only one PvD for the lookup, based on the PvD connectivity
   properties, user configuration of preferred Internet PvD, etc.

   If an application implements an API that provides a way of explicitly
   specifying the desired interface or PvD, that interface or PvD should
   be used for name resolution (and the subsequent connection attempt),
   provided that the host's configuration permits this.

   In either case, by default a node uses information obtained via a
   name service lookup to establish connections only within the same PvD
   as the lookup results were obtained.

   For clarification, when it is written that the name service lookup
   results were obtained "from a PvD", it should be understood to mean
   that the name service query was issued against a name service that is
   configured for use in a particular PvD.  In that sense, the results
   are "from" that particular PvD.

   Some nodes may support transports and/or APIs that provide an
   abstraction of a single connection, aggregating multiple underlying
   connections.  Multipath TCP (MPTCP) [RFC6182] is an example of such a
   transport protocol.  For connections provided by such transports/
   APIs, a PvD-aware node may use different PvDs for servicing that
   logical connection, provided that all operations on the underlying
   connections are performed consistently within their corresponding
   PvD(s).

5.2.2.  Next-Hop and Source Address Selection

   For the purpose of this example, let us assume that the preceding
   name lookup succeeded in a particular PvD.  For each obtained
   destination address, the node shall perform a next-hop lookup among
   routers associated with that PvD.  As an example, the node could
   determine such associations via matching the source address prefixes
   / specific routes advertised by the router against known PvDs or by
   receiving an explicit PvD affiliation advertised through a new Router
   Discovery [RFC4861] option.

   For each destination, once the best next hop is found, the node
   selects the best source address according to rules defined in
   [RFC6724], but with the constraint that the source address must
   belong to a range associated with the used PvD.  If needed, the node
   would use the prefix policy from the same PvD for selecting the best
   source address from multiple candidates.

   When destination/source pairs are identified, they are sorted using
   the [RFC6724] destination sorting rules and prefix policy table from
   the used PvD.

5.2.3.  Listening Applications

   Consider a host connected to several PvDs, running an application
   that opens a listening socket / transport API object.  The
   application is authorized by the host policy to use a subset of
   connected PvDs that may or may not be equal to the complete set of
   the connected PvDs.  As an example, in the case where there are
   different PvDs on the Wi-Fi and cellular interfaces, for general
   Internet traffic the host could use only one, preferred PvD at a time
   (and accordingly, advertise to remote peers the host name and
   addresses associated with that PvD), or it could use one PvD as the
   default for outgoing connections, while still allowing use of the
   other PvDs simultaneously.

   Another example is a host with an established VPN connection.  Here,
   security policy could be used to permit or deny an application's
   access to the VPN PvD and other PvDs.

   For non-PvD-aware applications, the operating system has policies
   that determine the authorized set of PvDs and the preferred outgoing
   PvD.  For PvD-aware applications, both the authorized set of PvDs and
   the default outgoing PvD can be determined as the common subset
   produced between the OS policies and the set of PvD IDs or
   characteristics provided by the application.

   Application input could be provided on a per-application, per-
   transport-API-object, or per-transport-API-call basis.  The API for
   application input may have an option for specifying whether the input
   should be treated as a preference instead of a requirement.

5.2.3.1.  Processing of Incoming Traffic

   Unicast IP packets are received on a specific IP address associated
   with a PvD.  For multicast packets, the host can derive the PvD
   association from other configuration information, such as an explicit
   PvD property or local policy.

   The node OS or middleware may apply more advanced techniques for
   determining the resultant PvD and/or authorization of the incoming
   traffic.  Those techniques are outside the scope of this document.

   If the determined receiving PvD of a packet is not in the allowed
   subset of PvDs for the particular application/transport API object,
   the packet should be handled in the same way as if there were no
   listener.

5.2.3.1.1.  Connection-Oriented APIs

   For connection-oriented APIs, when the initial incoming packet is
   received, the packet PvD is remembered for the established connection
   and used for the handling of outgoing traffic for that connection.
   While typically connection-oriented APIs use a connection-oriented
   transport protocol, such as TCP, it is possible to have a connection-
   oriented API that uses a generally connectionless transport protocol,
   such as UDP.

   For APIs/protocols that support multiple IP traffic flows associated
   with a single transport API connection object (for example, Multipath
   TCP), the processing rules may be adjusted accordingly.

5.2.3.1.2.  Connectionless APIs

   For connectionless APIs, the host should provide an API that
   PvD-aware applications can use to query the PvD associated with the
   packet.  For outgoing traffic on this transport API object, the OS
   should use the selected outgoing PvDs, determined as described in
   Sections 5.2.1 and 5.2.2.

5.2.4.  Enforcement of Security Policies

   By themselves, PvDs do not define, and cannot be used for
   communication of, security policies.  When implemented in a network,
   this architecture provides the host with information about connected
   networks.  The actual behavior of the host then depends on the host's
   policies (provisioned through mechanisms out of scope of this
   document), applied by taking received PvD information into account.
   In some scenarios, e.g., a VPN, such policies could require the host
   to use only a particular VPN PvD for some/all of the application's
   traffic (VPN 'disable split tunneling' also known as 'force
   tunneling' behavior) or apply such restrictions only to selected
   applications and allow the simultaneous use of the VPN PvD together
   with the other connected PvDs by the other or all applications (VPN
   'split tunneling' behavior).

5.3.  Connectivity Tests

   Although some PvDs may appear as valid candidates for PvD selection
   (e.g., good link quality, consistent connection parameters, etc.),
   they may provide limited or no connectivity to the desired network or
   the Internet.  For example, some PvDs provide limited IP connectivity
   (e.g., scoped to the link or to the access network) but require the
   node to authenticate through a web portal to get full access to the
   Internet.  This may be more likely to happen for PvDs that are not
   trusted by a given PvD-aware node.

   An attempt to use such a PvD may lead to limited network connectivity
   or application connection failures.  To prevent the latter, a PvD-
   aware node may perform a connectivity test for the PvD before using
   it to serve application network connection requests.  In current
   implementations, some nodes already implement this, e.g., by trying
   to reach a dedicated web server (see [RFC6419]).

   Section 5.2 describes how a PvD-aware node shall maintain and use
   multiple PvDs separately.  The PvD-aware node shall perform a
   connectivity test and, only after validation of the PvD, consider
   using it to serve application connections requests.  Ongoing
   connectivity tests are also required, since during the IP session,
   the end-to-end connectivity could be disrupted for various reasons
   (e.g., L2 problems and IP QoS issues); hence, a connectivity
   monitoring function is needed to check the connectivity status and
   remove the PvD from the set of usable PvDs if necessary.

   There may be cases where a connectivity test for PvD selection may
   not be appropriate and should be complemented, or replaced, by PvD
   selection based on other factors.  For example, this could be
   realized by leveraging some 3GPP and IEEE mechanisms, which would
   allow the exposure of some PvD characteristics to the node (e.g.,
   3GPP Access Network Discovery and Selection Function (ANDSF)
   [TS23402], Access Network Query Protocol (ANQP) [IEEE802.11u]).

5.4.  Relationship to Interface Management and Connection Managers

   Current devices such as mobile handsets make use of proprietary
   mechanisms and custom applications to manage connectivity in
   environments with multiple interfaces and multiple sets of network
   configuration.  These mechanisms or applications are commonly known
   as connection managers [RFC6419].

   Connection managers sometimes rely on policy servers to allow a node
   that is connected to multiple networks to perform network selection.
   They can also make use of routing guidance from the network (e.g.,
   3GPP ANDSF [TS23402]).  Although connection managers solve some
   connectivity problems, they rarely address network selection problems
   in a comprehensive manner.  With proprietary solutions, it is
   challenging to present coherent behavior to the end user of the
   device, as different platforms present different behaviors even when
   connected to the same network, with the same type of interface, and
   for the same purpose.  The architecture described in this document
   should improve the host's behavior by providing the hosts with tools
   and guidance to make informed network selection decisions.

6.  PvD Support in APIs

   For all levels of PvD support in APIs described in this chapter, it
   is expected that the notifications about changes in the set of
   available PvDs are exposed as part of the API surface.

6.1.  Basic

   Applications are not PvD aware in any manner and only submit
   connection requests.  The node performs PvD selection implicitly,
   without any application participation, based purely on node-specific
   administrative policies and/or choices made by the user from a user
   interface provided by the operating environment, not by the
   application.

   As an example, PvD selection can be done at the name service lookup
   step by using the relevant configuration elements, such as those
   described in [RFC6731].  As another example, PvD selection could be
   made based on application identity or type (i.e., a node could always
   use a particular PvD for a Voice over IP (VoIP) application).

6.2.  Intermediate

   Applications indirectly participate in PvD selection by specifying
   hard requirements and soft preferences.  As an example, a real-time
   communication application intending to use the connection for the
   exchange of real-time audio/video data may indicate a preference or a
   requirement for connection quality, which could affect PvD selection
   (different PvDs could correspond to Internet connections with
   different loss rates and latencies).

   Another example is the connection of an infrequently executed
   background activity, which checks for application updates and
   performs large downloads when updates are available.  For such
   connections, a cheaper or zero-cost PvD may be preferable, even if
   such a connection has a higher relative loss rate or lower bandwidth.
   The node performs PvD selection based on applications' inputs and
   policies and/or user preferences.  Some/all properties of the
   resultant PvD may be exposed to applications.

6.3.  Advanced

   PvDs are directly exposed to applications for enumeration and
   selection.  Node polices and/or user choices may still override the
   applications' preferences and limit which PvD(s) can be enumerated
   and/or used by the application, irrespective of any preferences that
   the application may have specified.  Depending on the implementation,
   such restrictions (imposed by node policy and/or user choice) may or
   may not be visible to the application.

7.  PvD Trust for PvD-Aware Node

7.1.  Untrusted PvDs

   Implicit and explicit PvDs for which no trust relationship exists are
   considered untrusted.  Only PvDs that meet the requirements in
   Section 7.2 are trusted; any other PvD is untrusted.

   In order to avoid the various forms of misinformation that could
   occur when PvDs are untrusted, nodes that implement PvD separation
   cannot assume that two explicit PvDs with the same identifier are
   actually the same PvD.  A node that makes this assumption will be
   vulnerable to attacks where, for example, an open Wi-Fi hotspot might
   assert that it was part of another PvD and thereby attempt to draw
   traffic intended for that PvD onto its own network.

   Since implicit PvD identifiers are synthesized by the node, this
   issue cannot arise with implicit PvDs.

   Mechanisms exist (for example, [RFC6731]) whereby a PvD can provide
   configuration information that asserts special knowledge about the
   reachability of resources through that PvD.  Such assertions cannot
   be validated unless the node has a trust relationship with the PvD;
   therefore, assertions of this type must be ignored by nodes that
   receive them from untrusted PvDs.  Failure to ignore such assertions
   could result in traffic being diverted from legitimate destinations
   to spoofed destinations.

7.2.  Trusted PvDs

   Trusted PvDs are PvDs for which two conditions apply: First, a trust
   relationship must exist between the node that is using the PvD
   configuration and the source that provided that configuration; this
   is the authorization portion of the trust relationship.  Second,
   there must be some way to validate the trust relationship.  This is
   the authentication portion of the trust relationship.  Two mechanisms
   for validating the trust relationship are defined.

   It shall be possible to validate the trust relationship for all
   advertised elements of a trusted PvD, irrespective of whether the PvD
   elements are communicated as a whole, e.g., in a single DHCP option,
   or separately, e.g., in supplementary RA options.  The feasibility of
   mechanisms to implement a trust relationship for all PvD elements
   will be determined in the respective companion design documents.

7.2.1.  Authenticated PvDs

   One way to validate the trust relationship between a node and the
   source of a PvD is through the combination of cryptographic
   authentication and an identifier configured on the node.

   If authentication is done using a public key mechanism such as PKI
   certificate chain validation or DNS-Based Authentication of Named
   Entities (DANE), authentication by itself is not enough since
   theoretically any PvD could be authenticated in this way.  In
   addition to authentication, the node would need configuration to
   trust the identifier being authenticated.  Validating the
   authenticated PvD name against a list of PvD names configured as
   trusted on the node would constitute the authorization step in this
   case.

7.2.2.  PvDs Trusted by Attachment

   In some cases, a trust relationship may be validated by some means
   other than those described in Section 7.2.1 simply by virtue of the
   connection through which the PvD was obtained.  For instance, a
   handset connected to a mobile network may know through the mobile
   network infrastructure that it is connected to a trusted PvD.
   Whatever mechanism was used to validate that connection constitutes
   the authentication portion of the PvD trust relationship.
   Presumably, such a handset would be configured from the factory (or
   else through mobile operator or user preference settings) to trust
   the PvD, and this would constitute the authorization portion of this
   type of trust relationship.

8.  Security Considerations

   There are at least three different forms of attacks that can be
   performed using configuration sources that support multiple
   provisioning domains.

   Tampering with provided configuration information:  An attacker may
      attempt to modify information provided inside the PvD container
      option.  These attacks can easily be prevented by using message
      integrity features provided by the underlying protocol used to
      carry the configuration information.  For example, SEcure Neighbor
      Discovery (SEND) [RFC3971] would detect any form of tampering with
      the RA contents and the DHCPv6 [RFC3315] AUTH option that would
      detect any form of tampering with the DHCPv6 message contents.
      This attack can also be performed by a compromised configuration
      source by modifying information inside a specific PvD, in which
      case the mitigations proposed in the next subsection may be
      helpful.

   Rogue configuration source:  A compromised configuration source, such
      as a router or a DHCPv6 server, may advertise information about
      PvDs that it is not authorized to advertise.  For example, a
      coffee shop WLAN may advertise configuration information
      purporting to be from an enterprise and may try to attract
      enterprise-related traffic.  This may also occur accidentally if
      two sites choose the same identifier (e.g., "linsky").

      In order to detect and prevent this, the client must be able to
      authenticate the identifier provided by the network.  This means
      that the client must have configuration information that maps the
      PvD identifier to an identity and must be able to authenticate
      that identity.

      In addition, the network must provide information the client can
      use to authenticate the identity.  This could take the form of a
      PKI-based or DNSSEC-based trust anchor, or a key remembered from a
      previous leap-of-faith authentication of the identifier.

      Because the PvD-specific information may come to the network
      infrastructure with which the client is actually communicating
      from some upstream provider, it is necessary in this case that the
      PvD container and its contents be relayed to the client unchanged,
      leaving the upstream provider's signature intact.

   Replay attacks:  A compromised configuration source or an on-link
      attacker may try to capture advertised configuration information
      and replay it on a different link, or at a future point in time.
      This can be avoided by including a replay protection mechanism
      such as a timestamp or a nonce inside the PvD container to ensure
      the validity of the provided information.

9.  Informative References

   [DHCPv6-CLASS-BASED-PREFIX]
              Systems, C., Halwasia, G., Gundavelli, S., Deng, H.,
              Thiebaut, L., Korhonen, J., and I. Farrer, "DHCPv6 class
              based prefix", Work in Progress, draft-bhandari-dhc-class-
              based-prefix-05, July 2013.

   [IEEE802.11u]
              IEEE, "Local and Metropolitan networks - specific
              requirements - Part II: Wireless LAN Medium Access Control
              (MAC) and Physical Layer (PHY) specifications: Amendment
              9: Interworking with External Networks", IEEE Std 802.11u,
              <http://standards.ieee.org/findstds/
              standard/802.11u-2011.html>.

   [IPv6-PREFIX-PROPERTIES]
              Korhonen, J., Patil, B., Gundavelli, S., Seite, P., and D.
              Liu, "IPv6 Prefix Mobility Management Properties", Work in
              Progress, draft-korhonen-dmm-prefix-properties-03, October
              2012.

   [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, <http://www.rfc-editor.org/info/rfc3315>.

   [RFC3971]  Arkko, J., Ed., Kempf, J., Zill, B., and P. Nikander,
              "SEcure Neighbor Discovery (SEND)", RFC 3971,
              DOI 10.17487/RFC3971, March 2005,
              <http://www.rfc-editor.org/info/rfc3971>.

   [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,
              <http://www.rfc-editor.org/info/rfc4861>.

   [RFC5739]  Eronen, P., Laganier, J., and C. Madson, "IPv6
              Configuration in Internet Key Exchange Protocol Version 2
              (IKEv2)", RFC 5739, DOI 10.17487/RFC5739, February 2010,
              <http://www.rfc-editor.org/info/rfc5739>.

   [RFC6182]  Ford, A., Raiciu, C., Handley, M., Barre, S., and J.
              Iyengar, "Architectural Guidelines for Multipath TCP
              Development", RFC 6182, DOI 10.17487/RFC6182, March 2011,
              <http://www.rfc-editor.org/info/rfc6182>.

   [RFC6418]  Blanchet, M. and P. Seite, "Multiple Interfaces and
              Provisioning Domains Problem Statement", RFC 6418,
              DOI 10.17487/RFC6418, November 2011,
              <http://www.rfc-editor.org/info/rfc6418>.

   [RFC6419]  Wasserman, M. and P. Seite, "Current Practices for
              Multiple-Interface Hosts", RFC 6419, DOI 10.17487/RFC6419,
              November 2011, <http://www.rfc-editor.org/info/rfc6419>.

   [RFC6555]  Wing, D. and A. Yourtchenko, "Happy Eyeballs: Success with
              Dual-Stack Hosts", RFC 6555, DOI 10.17487/RFC6555, April
              2012, <http://www.rfc-editor.org/info/rfc6555>.

   [RFC6724]  Thaler, D., Ed., Draves, R., Matsumoto, A., and T. Chown,
              "Default Address Selection for Internet Protocol Version 6
              (IPv6)", RFC 6724, DOI 10.17487/RFC6724, September 2012,
              <http://www.rfc-editor.org/info/rfc6724>.

   [RFC6731]  Savolainen, T., Kato, J., and T. Lemon, "Improved
              Recursive DNS Server Selection for Multi-Interfaced
              Nodes", RFC 6731, DOI 10.17487/RFC6731, December 2012,
              <http://www.rfc-editor.org/info/rfc6731>.

   [RFC7078]  Matsumoto, A., Fujisaki, T., and T. Chown, "Distributing
              Address Selection Policy Using DHCPv6", RFC 7078,
              DOI 10.17487/RFC7078, January 2014,
              <http://www.rfc-editor.org/info/rfc7078>.

   [RFC7296]  Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T.
              Kivinen, "Internet Key Exchange Protocol Version 2
              (IKEv2)", STD 79, RFC 7296, DOI 10.17487/RFC7296, October
              2014, <http://www.rfc-editor.org/info/rfc7296>.

   [TS23402]  3GPP, "Technical Specification Group Services and System
              Aspects; Architecture enhancements for non-3GPP accesses",
              Release 12, 3GPP TS 23.402, 2014.

Acknowledgments

   The authors would like to thank (in no specific order) Ian Farrer,
   Markus Stenberg, and Mikael Abrahamsson for their review and
   comments.

Contributors

   The following individuals contributed to this document (listed in no
   specific order): Alper Yegin (alper.yegin@yegin.org), Aaron Yi Ding
   (yding@cs.helsinki.fi), Zhen Cao (caozhenpku@gmail.com), Dapeng Liu
   (liudapeng@chinamobile.com), Dave Thaler (dthaler@microsoft.com),
   Dmitry Anipko (dmitry.anipko@gmail.com), Hui Deng
   (denghui@chinamobile.com), Jouni Korhonen (jouni.nospam@gmail.com),
   Juan Carlos Zuniga (JuanCarlos.Zuniga@InterDigital.com), Konstantinos
   Pentikousis (k.pentikousis@huawei.com), Marc Blanchet
   (marc.blanchet@viagenie.ca), Margaret Wasserman
   (margaretw42@gmail.com), Pierrick Seite (pierrick.seite@orange.com),
   Suresh Krishnan (suresh.krishnan@ericsson.com), Teemu Savolainen
   (teemu.savolainen@nokia.com), Ted Lemon (ted.lemon@nominum.com), and
   Tim Chown (tjc@ecs.soton.ac.uk).

Author's Address

   Dmitry Anipko (editor)
   Unaffiliated

   Phone: +1 425 442 6356
   EMail: dmitry.anipko@gmail.com

ISO Plain Language

On this page
PROBLEMA device attached to more than one network can mix up settings that belong to different networks, and it can end up using a network in a way nobody intended.
MECHANISMThe document introduces the Provisioning Domain, a consistent set of network configuration information, and gives a reference model that keeps each domain's settings separate and says how a node should pick one for a given connection.
STATUS TODAYIt is an informational architecture, not a protocol: the mechanisms that would carry PvD information, such as new DHCPv6 options or Router Advertisement options, are left to companion design documents.

§1The Multiple Interfaces Problem

A node attached to several networks can run into two kinds of trouble: the configuration it holds for different networks conflicts, or it tries to use more than one network at the same time. Various techniques tackle these problems today, and the Multiple Interfaces Problem Statement in RFC 6418 describes the landscape, but issues still appear.

This document groups the problems enumerated in that statement into three categories. First, a lack of consistent and distinctive management of the configuration elements associated with different networks. Second, inappropriate mixed use of those elements during a particular network activity or connection. Third, use of a particular network that is not consistent with its intended use or with the intent of the communicating parties, which leads to connectivity failure or other undesired consequences.

The document gives an example of each. For the first, a single node-scoped list of DNS server addresses learned from different networks leads to failures or delays in resolving names from particular namespaces. For the second, an attempt to resolve the name of an HTTP proxy server learned from network A using a DNS server learned from network B. For the third, using an employer-provided VPN connection for peer-to-peer connectivity unrelated to employment.

The architecture answers the three categories in order. It introduces the formal notion of a Provisioning Domain, including identity for PvDs, and describes mechanisms for learning the intended associations between acquired configuration elements. It introduces a reference model for PvD-aware nodes that prevents the inadvertent mixed use of configuration information that may belong to different PvDs. And it provides recommendations on PvD selection based on PvD identity, together with connectivity tests for common scenarios.

The document sorts the trouble into three kinds: settings for different networks not kept apart, settings from different networks used together by mistake, and a network being used for something it was not meant for. Each has an example, and each gets its own part of the answer.

§2What a Provisioning Domain Is

A Provisioning Domain is a consistent set of network configuration information. Classically all the configuration information available on a single interface comes from a single source, such as a network administrator, and can therefore be treated as one provisioning domain. In modern IPv6 networks multihoming can put more than one provisioning domain on a single link, and in some scenarios elements of the same PvD appear on multiple links. Typical information in a PvD learned from the network includes source address prefixes for connections within the domain, the IP addresses of the DNS servers, the name of the HTTP proxy server if there is one, the DNS suffixes associated with the network, and the default gateway address.

A PvD-aware node is a node that supports associating network configuration information into PvDs and using those PvDs to serve requests for network connections in ways consistent with the recommendations of the architecture. A PvD-aware application is an application whose code or configuration is explicitly aware of the notion of PvD.

The document distinguishes two kinds. Explicit PvDs are built from information a node receives from the network or from other sources that conveys the presence of PvDs and the association of particular network information with a particular PvD. Supporting them will likely need protocol changes or extensions, for example one or more DHCP options carrying the PvD identity and its elements, or a DHCP option carrying only the identity so that the associations are made by the respective protocols, for instance a Router Discovery option associating an address range with a PvD. Key exchange and tunnelling protocols such as the Internet Key Exchange Protocol version 2 in RFC 7296 are other possible delivery mechanisms, since they can carry host configuration information. Link-specific and vendor-proprietary discovery mechanisms may also be used, provided they allow the necessary elements to be discovered. In all cases, nodes must by default limit the lifetime of dynamically discovered PvD configuration to relevant events: if an interface media state change is indicated, previously discovered information for that interface may no longer be valid and has to be confirmed or re-discovered.

Implicit PvDs exist because deployment of new features in networking protocols is slow and many networks will not advertise explicit PvD information for the foreseeable future. When a PvD-aware node connects to such a network it shall automatically create separate PvDs for the configuration received, and it shall treat network information from different interfaces that is not identified as belonging explicitly to some PvD as belonging to separate PvDs, one per interface. In a mixed mode, where some of the networks on a link advertise PvD information and others do not, the node creates explicit PvDs from the labelled information and associates the unlabelled configuration with an implicit PvD for that interface.

PvDs and interfaces have no hierarchical relationship. Multiple PvDs may be simultaneously reachable over one interface, and a single PvD may be simultaneously reachable over multiple interfaces. For explicit PvDs the PvD ID is, or has a high probability of being, globally unique, and it must be possible to produce a human-readable form of it for the end user. For implicit PvDs the node assigns a locally generated ID with a high probability of being globally unique.

A Provisioning Domain is one consistent bundle of network settings: the addresses to use, the DNS servers, the proxy name, the suffixes and the gateway. A device that understands PvDs keeps one bundle per network instead of one long list for everything, so it never mixes a setting from one network with another.

Information typically learned from the network and held in a PvD
  • Source address prefixesUsed by connections within the provisioning domain.
  • DNS server addressesThe IP addresses of the DNS servers for this domain.
  • HTTP proxy nameThe name of the HTTP proxy server, if one is available.
  • DNS suffixesThe suffixes associated with the network.
  • Default gateway addressThe address of the router to reach other networks.
Explicit and implicit provisioning domains
PropertyExplicit PvDImplicit PvD
Where it comes fromInformation received from the network or another source that labels the configuration with a PvD.Created by the node itself when the network advertises no PvD information.
IdentifierA PvD ID received as part of the PvD information, with a high probability of being globally unique.A locally generated ID with a high probability of being globally unique.
Scope by defaultConfiguration related to a specific interface, but may span more than one interface.Limited to the configuration received on a single interface, one PvD per interface.
TrustMay be trusted once the identifier is authenticated and authorised.Cannot be spoofed by name clash, since the node synthesised the identifier.

§3How PvD Information Reaches the Node

DHCPv6 and Router Advertisements are the two most common methods of configuring hosts, and both would have to be extended to convey explicit PvD information. The document sets out the topics that must be settled before such a mechanism is finalised.

One message or several. When information about several PvDs comes from the same configuration source, it can be sent as separate messages, one per provisioning domain, or combined into a single message. Combining is more efficient but can cause problems with authentication and authorisation, and with information that is not tagged with any PvD at all.

Securing the information. DHCPv6 and Router Advertisements both provide some form of authentication, so the source's identity and the integrity of the message content are covered. That is not the same as knowing whether the source is allowed to provide information for a given PvD. For that, there must be a mechanism for the PvD owner to attach an authorisation token or signature to the configuration information it delivers.

Backward compatibility. The extensions should be defined so that unmodified hosts keep working as they did before PvD information was added. That may mean duplicating some information so legacy hosts still receive it, and PvD-aware hosts have to be able to use legacy configuration sources that provide no PvD information. The document also asks that any new mechanism try to coexist with deployed mechanisms that add information to prefixes.

Updating and withdrawing. Information provisioned to a host may become outdated or superseded before the host would normally ask for updates, so the mechanism must be able to update or withdraw all or part of the information for a given PvD. For efficiency there should be a way to say that everything from the PvD has to be reconfigured, rather than updating each item one at a time.

IKEv2. IKEv2 is another widely used method of configuring host IP information. The provisioning domain could be learned implicitly from the Identification - Responder payloads that the IKEv2 initiator and responder inject during their exchange, with the IP configuration depending on the named responder identifier. Another possibility is a specific provisioning-domain identifying payload extension to IKEv2. All of the considerations listed above potentially apply to IKEv2 as well.

DHCPv6 and Router Advertisements are the usual ways a computer learns its network settings, so both would need new options to carry PvD information. The document lists what has to be decided first: one message or several, how to prove the sender is allowed to speak for that domain, how to stay compatible with older hosts, and how to withdraw settings that have changed.

§4Three Example Configurations

The first example is a mobile node with two interfaces, one to the mobile network and one to a Wi-Fi network. When it is only connected to the mobile network it has one PvD, implicit or explicit. When it discovers and connects to a Wi-Fi network it has zero or more additional PvDs, typically one. Some existing operating system implementations allow only one active network connection, in which case only the PvDs associated with the active interface can be used at any given time. The mobile network can deliver PvD information explicitly through the Packet Data Protocol context activation process, so the node treats it as an explicit PvD, while a legacy Wi-Fi network that does not communicate PvD information is associated with an implicit PvD.

The second example is a node with a VPN connection. Establishing the VPN creates zero or more additional PvDs, which may be implicit or explicit. Routing to addresses reachable inside that PvD is set up through the VPN, while routing of packets to addresses outside its scope stays unaffected. If a node already has N connected PvDs, after the VPN session is established there will typically be N+1.

The third example is a home network and a network operator that runs several PvDs. An operator may use separate PvDs for individual services so that the services are designed and provisioned to be completely independent of one another. From the point of view of the home network and the node, the model is functionally similar to being multihomed to multiple upstream operators: each service the provider offers is its own PvD with its own information. The operator may provide a generic or default PvD, explicit or implicit, giving Internet access, and provision the additional services as explicit PvDs for subscribing customers. The number of PvDs an operator can provision is based on the number of independently provisioned services it offers, and the document lists real-time packet voice, streaming video, interactive video such as n-way video conferencing, interactive gaming, and best effort Internet access as examples.

Three worked examples show what the idea means in practice. A phone on mobile data and Wi-Fi gets one domain for each. A laptop with a VPN gets an extra domain for the VPN, and its routes to the office network go there. A provider can run one domain per service, so video on demand has its own domain separate from plain Internet access.

The mobile node example from Section 4.1
  • PvD-aware mobile node
    • Mobile network PvD Explicit: delivered through the Packet Data Protocol context activation process.
    • Wi-Fi PvD Implicit: the legacy Wi-Fi network communicates no PvD information.

§5The Reference Model for a PvD-Aware Node

It is assumed that the configuration in a single PvD is normally enough for a node to fulfil a network connection request, so there should be no need to merge information across PvDs. Even when a PvD lacks some needed configuration, merging information from a different PvD shall not be done automatically, because that typically leads to the problems in RFC 6418. A node may use other sources, such as local policy or user input, to construct a PvD in its entirety, to supplement learned PvDs with particular configuration elements, or to merge information from different PvDs when policy explicitly allows it.

Name resolution. The node may use one or several PvDs for a name lookup. It shall choose a single PvD when policy requires a particular one for a purpose, for example to download a Multimedia Messaging Service message using a specific Access Point Name over a cellular connection, or to direct enterprise application traffic to a VPN connection to the enterprise network; the choice can be made by matching the PvD DNS suffix against the fully qualified domain name being resolved, or by matching the PvD ID. The node may pick multiple PvDs when they are for general Internet connectivity and it is trying to maximise the probability of connectivity, in a manner similar to Happy Eyeballs in RFC 6555, performing lookups in parallel or in sequence. By default, a node uses information obtained via a name service lookup to establish connections only within the same PvD as the lookup results.

Next hop and source address. For each destination address obtained, the node performs a next-hop lookup among routers associated with that PvD, either by matching source address prefixes or specific routes against known PvDs, or by receiving an explicit PvD affiliation advertised through a new Router Discovery option. It then selects the best source address under the rules in RFC 6724, with the added constraint that the source address must belong to a range associated with the PvD being used.

Listening applications. An application that opens a listening socket is authorised by host policy to use a subset of the connected PvDs. For an application that is not PvD-aware, the operating system decides the authorised set and the preferred outgoing PvD. For a PvD-aware application, both the authorised set and the default outgoing PvD can be the common subset produced between the operating system policies and the set of PvD IDs or characteristics the application provides. For connection-oriented APIs the PvD of the initial incoming packet is remembered for the established connection and used for that connection's outgoing traffic. For connectionless APIs the host should provide an API so that a PvD-aware application can query the PvD associated with a packet. If the determined receiving PvD is not in the allowed subset for the application, the packet should be handled as if there were no listener.

Security policies. By themselves PvDs do not define security policies and cannot be used to communicate them. The host's own policies are applied after taking received PvD information into account. In a VPN scenario such policies could require the host to use only the VPN PvD for some or all of an application's traffic, the behaviour known as disabling split tunnelling or force tunnelling, or apply the restriction only to selected applications, the split tunnelling behaviour.

Connectivity tests. A PvD can look like a good candidate and yet give limited or no connectivity to the desired network, for example a PvD that only provides scoped connectivity unless the node authenticates through a web portal. The node may therefore run a connectivity test before using a PvD, and it shall do so and consider using the PvD only after validation. Ongoing tests are also required, since end-to-end connectivity can be disrupted during the session, for example by layer 2 problems or IP quality of service issues, so a monitoring function is needed to remove a PvD from the usable set if necessary.

The reference model says a node should do everything for a connection inside one domain: look the name up there, pick the router and source address there, and only let an application listen there if policy allows. A domain that cannot actually reach the network should be tested before use and dropped again if it stops working.

§8Trust and Security Considerations

Section 7 divides PvDs into trusted and untrusted. Implicit and explicit PvDs for which no trust relationship exists are untrusted, and only PvDs meeting the requirements of Section 7.2 are trusted. A trusted PvD needs two things: a trust relationship between the node using the configuration and the source that provided it, which is the authorisation part, and some way of validating that relationship, which is the authentication part. It shall be possible to validate the trust relationship for all advertised elements of a trusted PvD, whether they arrive as a whole in a single DHCP option or separately in supplementary Router Advertisement options.

Two validation mechanisms are described. In the first, the trust relationship is validated through cryptographic authentication combined with an identifier configured on the node. If authentication uses a public key mechanism such as PKI certificate chain validation or DNS-Based Authentication of Named Entities, authentication alone is not enough, because in theory any PvD could be authenticated that way; the node also needs configuration that trusts the identifier being authenticated, and validating the authenticated name against a list of trusted PvD names on the node is the authorisation step. In the second, the trust relationship may be validated by the connection through which the PvD was obtained. A handset connected to a mobile network may know through the mobile network infrastructure that it is connected to a trusted PvD, and whatever mechanism validated that connection is the authentication part; being configured from the factory, or through operator or user preference settings, to trust the PvD is the authorisation part.

Because untrusted PvDs can carry misinformation, a node that implements PvD separation cannot assume that two explicit PvDs with the same identifier are really the same PvD. A node that makes that assumption is vulnerable to an attack in which, for example, an open Wi-Fi hotspot claims to be part of another PvD to draw traffic intended for it onto its own network. Since implicit PvD identifiers are synthesised by the node, the issue cannot arise with them. Assertions about reachability, such as those a PvD can make through mechanisms like RFC 6731, cannot be validated without a trust relationship and must be ignored when they come from an untrusted PvD, or traffic could be diverted from legitimate destinations to spoofed ones.

Section 8 names at least three forms of attack. Tampering with provided configuration information can easily be prevented by the message integrity features of the underlying protocol: SEcure Neighbor Discovery would detect tampering with Router Advertisement contents and the DHCPv6 AUTH option would detect tampering with DHCPv6 message contents. A rogue configuration source may advertise PvDs it is not authorised to advertise, for example a coffee shop WLAN claiming to be an enterprise, and this may also happen by accident when two sites pick the same identifier. To detect and prevent it, the client must be able to authenticate the identifier the network provides, which means having configuration that maps the PvD identifier to an identity and being able to authenticate that identity, and the network must supply information the client can use to do so, for example a PKI-based or DNSSEC-based trust anchor or a key remembered from a previous leap-of-faith authentication. Because PvD-specific information may reach the client from an upstream provider, the PvD container and its contents must in that case be relayed to the client unchanged, leaving the upstream provider's signature intact. Replay attacks, in which captured configuration is replayed on another link or at a later time, are avoided by including a replay protection mechanism such as a timestamp or a nonce inside the PvD container.

The security section warns about three tricks: altering the settings in transit, a rogue network pretending to be a domain it is not, and replaying old settings later. The first is handled by the integrity checks the underlying protocols already have. The other two need the node to be able to check who is speaking and to reject information it cannot verify.

§7References