summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc8678.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc8678.txt')
-rw-r--r--doc/rfc/rfc8678.txt2423
1 files changed, 2423 insertions, 0 deletions
diff --git a/doc/rfc/rfc8678.txt b/doc/rfc/rfc8678.txt
new file mode 100644
index 0000000..713e761
--- /dev/null
+++ b/doc/rfc/rfc8678.txt
@@ -0,0 +1,2423 @@
+
+
+
+
+Internet Engineering Task Force (IETF) F. Baker
+Request for Comments: 8678
+Category: Informational C. Bowers
+ISSN: 2070-1721 Juniper Networks
+ J. Linkova
+ Google
+ December 2019
+
+
+ Enterprise Multihoming Using Provider-Assigned IPv6 Addresses without
+ Network Prefix Translation: Requirements and Solutions
+
+Abstract
+
+ Connecting an enterprise site to multiple ISPs over IPv6 using
+ provider-assigned addresses is difficult without the use of some form
+ of Network Address Translation (NAT). Much has been written on this
+ topic over the last 10 to 15 years, but it still remains a problem
+ without a clearly defined or widely implemented solution. Any
+ multihoming solution without NAT requires hosts at the site to have
+ addresses from each ISP and to select the egress ISP by selecting a
+ source address for outgoing packets. It also requires routers at the
+ site to take into account those source addresses when forwarding
+ packets out towards the ISPs.
+
+ This document examines currently available mechanisms for providing a
+ solution to this problem for a broad range of enterprise topologies.
+ It covers the behavior of routers to forward traffic by taking into
+ account source address, and it covers the behavior of hosts to select
+ appropriate default source addresses. It also covers any possible
+ role that routers might play in providing information to hosts to
+ help them select appropriate source addresses. In the process of
+ exploring potential solutions, this document also makes explicit
+ requirements for how the solution would be expected to behave from
+ the perspective of an enterprise site network administrator.
+
+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 candidates for any level of Internet
+ Standard; see Section 2 of RFC 7841.
+
+ Information about the current status of this document, any errata,
+ and how to provide feedback on it may be obtained at
+ https://www.rfc-editor.org/info/rfc8678.
+
+Copyright Notice
+
+ Copyright (c) 2019 IETF Trust and the persons identified as the
+ document authors. All rights reserved.
+
+ This document is subject to BCP 78 and the IETF Trust's Legal
+ Provisions Relating to IETF Documents
+ (https://trustee.ietf.org/license-info) in effect on the date of
+ publication of this document. Please review these documents
+ carefully, as they describe your rights and restrictions with respect
+ to this document. Code Components extracted from this document must
+ include Simplified BSD License text as described in Section 4.e of
+ the Trust Legal Provisions and are provided without warranty as
+ described in the Simplified BSD License.
+
+Table of Contents
+
+ 1. Introduction
+ 2. Requirements Language
+ 3. Terminology
+ 4. Enterprise Multihoming Use Cases
+ 4.1. Simple ISP Connectivity with Connected SERs
+ 4.2. Simple ISP Connectivity Where SERs Are Not Directly
+ Connected
+ 4.3. Enterprise Network Operator Expectations
+ 4.4. More Complex ISP Connectivity
+ 4.5. ISPs and Provider-Assigned Prefixes
+ 4.6. Simplified Topologies
+ 5. Generating Source-Prefix-Scoped Forwarding Tables
+ 6. Mechanisms for Hosts To Choose Good Default Source Addresses in
+ a Multihomed Site
+ 6.1. Default Source Address Selection Algorithm on Hosts
+ 6.2. Selecting Default Source Address When Both Uplinks Are
+ Working
+ 6.2.1. Distributing Default Address Selection Policy
+ Table with DHCPv6
+ 6.2.2. Controlling Default Source Address Selection with
+ Router Advertisements
+ 6.2.3. Controlling Default Source Address Selection with
+ ICMPv6
+ 6.2.4. Summary of Methods for Controlling Default Source
+ Address Selection to Implement Routing Policy
+ 6.3. Selecting Default Source Address When One Uplink Has Failed
+ 6.3.1. Controlling Default Source Address Selection with
+ DHCPv6
+ 6.3.2. Controlling Default Source Address Selection with
+ Router Advertisements
+ 6.3.3. Controlling Default Source Address Selection with
+ ICMPv6
+ 6.3.4. Summary of Methods for Controlling Default Source
+ Address Selection on the Failure of an Uplink
+ 6.4. Selecting Default Source Address upon Failed Uplink
+ Recovery
+ 6.4.1. Controlling Default Source Address Selection with
+ DHCPv6
+ 6.4.2. Controlling Default Source Address Selection with
+ Router Advertisements
+ 6.4.3. Controlling Default Source Address Selection with ICMP
+ 6.4.4. Summary of Methods for Controlling Default Source
+ Address Selection upon Failed Uplink Recovery
+ 6.5. Selecting Default Source Address When All Uplinks Have
+ Failed
+ 6.5.1. Controlling Default Source Address Selection with
+ DHCPv6
+ 6.5.2. Controlling Default Source Address Selection with
+ Router Advertisements
+ 6.5.3. Controlling Default Source Address Selection with
+ ICMPv6
+ 6.5.4. Summary of Methods for Controlling Default Source
+ Address Selection When All Uplinks Failed
+ 6.6. Summary of Methods for Controlling Default Source Address
+ Selection
+ 6.7. Solution Limitations
+ 6.7.1. Connections Preservation
+ 6.8. Other Configuration Parameters
+ 6.8.1. DNS Configuration
+ 7. Deployment Considerations
+ 7.1. Deploying SADR Domain
+ 7.2. Hosts-Related Considerations
+ 8. Other Solutions
+ 8.1. Shim6
+ 8.2. IPv6-to-IPv6 Network Prefix Translation
+ 8.3. Multipath Transport
+ 9. IANA Considerations
+ 10. Security Considerations
+ 11. References
+ 11.1. Normative References
+ 11.2. Informative References
+ Acknowledgements
+ Authors' Addresses
+
+1. Introduction
+
+ Site multihoming, the connection of a subscriber network to multiple
+ upstream networks using redundant uplinks, is a common enterprise
+ architecture for improving the reliability of its Internet
+ connectivity. If the site uses provider-independent (PI) addresses,
+ all traffic originating from the enterprise can use source addresses
+ from the PI address space. Site multihoming with PI addresses is
+ commonly used with both IPv4 and IPv6, and does not present any new
+ technical challenges.
+
+ It may be desirable for an enterprise site to connect to multiple
+ ISPs using provider-assigned (PA) addresses instead of PI addresses.
+ Multihoming with provider-assigned addresses is typically less
+ expensive for the enterprise relative to using provider-independent
+ addresses as it does not require obtaining and maintaining PI address
+ space nor does it require running BGP between the enterprise and the
+ ISPs (for small/medium networks, running BGP might be not only
+ undesirable but also impossible, especially if residential-type ISP
+ connections are used). PA multihoming is also a practice that should
+ be facilitated and encouraged because it does not add to the size of
+ the Internet routing table, whereas PI multihoming does. Note that
+ PA is also used to mean "provider-aggregatable". In this document,
+ we assume that provider-assigned addresses are always provider-
+ aggregatable.
+
+ With PA multihoming, for each ISP connection, the site is assigned a
+ prefix from within an address block allocated to that ISP by its
+ National or Regional Internet Registry. In the simple case of two
+ ISPs (ISP-A and ISP-B), the site will have two different prefixes
+ assigned to it (prefix-A and prefix-B). This arrangement is
+ problematic. First, packets with the "wrong" source address may be
+ dropped by one of the ISPs. In order to limit denial-of-service
+ attacks using spoofed source addresses, [BCP38] recommends that ISPs
+ filter traffic from customer sites to allow only traffic with a
+ source address that has been assigned by that ISP. So a packet sent
+ from a multihomed site on the uplink to ISP-B with a source address
+ in prefix-A may be dropped by ISP-B.
+
+ However, even if ISP-B does not implement BCP 38, or ISP-B adds
+ prefix-A to its list of allowed source addresses on the uplink from
+ the multihomed site, two-way communication may still fail. If the
+ packet with a source address in prefix-A was sent to ISP-B because
+ the uplink to ISP-A failed, then if ISP-B does not drop the packet,
+ and the packet reaches its destination somewhere on the Internet, the
+ return packet will be sent back with a destination address in prefix-
+ A. The return packet will be routed over the Internet to ISP-A, but
+ it will not be delivered to the multihomed site because the site
+ uplink with ISP-A has failed. Two-way communication would require
+ some arrangement for ISP-B to advertise prefix-A when the uplink to
+ ISP-A fails.
+
+ Note that the same may be true of a provider that does not implement
+ BCP 38, even if his upstream provider does, or of a provider that has
+ no corresponding route to deliver the ingress traffic to the
+ multihomed site. The issue is not that the immediate provider
+ implements ingress filtering; it is that someone upstream does (so
+ egress traffic is blocked) or lacks a route (causing blackholing of
+ the ingress traffic).
+
+ Another issue with asymmetric traffic flow (when the egress traffic
+ leaves the site via one ISP, but the return traffic enters the site
+ via another uplink) is related to stateful firewalls/middleboxes.
+ Keeping state in that case might be problematic, even impossible.
+
+ With IPv4, this problem is commonly solved by using private address
+ space described in [RFC1918] within the multihomed site and Network
+ Address Translation (NAT) or Network Address/Port Translation (NAPT)
+ [RFC2663] on the uplinks to the ISPs. However, one of the goals of
+ IPv6 is to eliminate the need for and the use of NAT or NAPT.
+ Therefore, requiring the use of NAT or NAPT for an enterprise site to
+ multihome with provider-assigned addresses is not an attractive
+ solution.
+
+ [RFC6296] describes a translation solution specifically tailored to
+ meet the requirements of multihoming with provider-assigned IPv6
+ addresses. With the IPv6-to-IPv6 Network Prefix Translation (NPTv6)
+ solution, an enterprise can use either Unique Local Addresses
+ [RFC4193] or the prefix assigned by one of the ISPs within its site.
+ As traffic leaves the site on an uplink to an ISP, the source address
+ is translated in a predictable and reversible manner to an address
+ within the prefix assigned by the ISP on that uplink. [RFC6296] is
+ currently classified as Experimental, and it has been implemented by
+ several vendors. See Section 8.2 for more discussion of NPTv6.
+
+ This document defines routing requirements for enterprise
+ multihoming. This document focuses on the following general class of
+ solutions.
+
+ Each host at the enterprise has multiple addresses, at least one from
+ each ISP-assigned prefix. As discussed in Section 6.1 and in
+ [RFC6724], each host is responsible for choosing the source address
+ that is applied to each packet it sends. A host is expected to be
+ able to respond dynamically to the failure of an uplink to a given
+ ISP by no longer sending packets with the source address
+ corresponding to that ISP. Potential mechanisms for communicating
+ network changes to the host are Neighbor Discovery Router
+ Advertisements [RFC4861], DHCPv6 [RFC8415], and ICMPv6 [RFC4443].
+
+ The routers in the enterprise network are responsible for ensuring
+ that packets are delivered to the "correct" ISP uplink based on
+ source address. This requires that at least some routers in the site
+ network are able to take into account the source address of a packet
+ when deciding how to route it. That is, some routers must be capable
+ of some form of Source Address Dependent Routing (SADR), if only as
+ described in Section 4.3 of [RFC3704]. At a minimum, the routers
+ connected to the ISP uplinks (the site exit routers or SERs) must be
+ capable of Source Address Dependent Routing. Expanding the connected
+ domain of routers capable of SADR from the site exit routers deeper
+ into the site network will generally result in more efficient routing
+ of traffic with external destinations.
+
+ This document is organized as follows. Section 4 looks in more
+ detail at the enterprise networking environments in which this
+ solution is expected to operate. The discussion of Section 4 uses
+ the concepts of Source-Prefix-Scoped Routing advertisements and
+ forwarding tables and describes how Source-Prefix-Scoped Routing
+ advertisements are used to generate source-prefix-scoped forwarding
+ tables. A detailed description of generating source-prefix-scoped
+ forwarding tables is provided in Section 5. Section 6 discusses
+ existing and proposed mechanisms for hosts to select the default
+ source address to be used by applications. It also discusses the
+ requirements for routing that are needed to support these enterprise
+ network scenarios and the mechanisms by which hosts are expected to
+ update default source addresses based on network state. Section 7
+ discusses deployment considerations, while Section 8 discusses other
+ solutions.
+
+2. Requirements Language
+
+ 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
+ BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
+ capitals, as shown here.
+
+3. Terminology
+
+ PA (provider-assigned or provider-aggregatable) address space: a
+ block of IP addresses assigned by a Regional Internet Registry
+ (RIR) to a Local Internet Registry (LIR), used to create
+ allocations to end sites. Can be aggregated and present in the
+ routing table as one route.
+
+ PI (provider-independent) address space: a block of IP addresses
+ assigned by a Regional Internet Registry (RIR) directly to end
+ site / end customer.
+
+ ISP: Internet Service Provider
+
+ LIR (Local Internet Registry): an organization (usually an ISP or an
+ enterprise/academic) that receives its allocation of IP addresses
+ from its Regional Internet Registry, then assigns parts of that
+ allocation to its customers.
+
+ RIR (Regional Internet Registry): an organization that manages the
+ Internet number resources (such as IP addresses and autonomous
+ system (AS) numbers) within a geographical region of the world.
+
+ SADR (Source Address Dependent Routing): routing that takes into
+ account the source address of a packet in addition to the packet
+ destination address.
+
+ SADR domain: a routing domain in which some (or all) routers
+ exchange source-dependent routing information.
+
+ Source-Prefix-Scoped Routing/Forwarding Table: a routing (or
+ forwarding) table that contains routing (or forwarding)
+ information only applicable to packets with source addresses from
+ the specific prefix.
+
+ Unscoped Routing/Forwarding Table: a routing (or forwarding) table
+ that can be used to route/forward packets with any source address.
+
+ SER (Site Edge Router): a router that connects the site to an ISP
+ (terminates an ISP uplink).
+
+ LLA (Link-Local Address): an IPv6 unicast address from the fe80::/10
+ prefix [RFC4291].
+
+ ULA (Unique Local IPv6 Unicast Address): an IPv6 unicast address
+ from the FC00::/7 prefix. They are globally unique and intended
+ for local communications [RFC4193].
+
+ GUA (Global Unicast Address): a globally routable IPv6 address of
+ the global scope [RFC4291].
+
+ SLAAC (IPv6 Stateless Address Autoconfiguration): a stateless
+ process of configuring the network stack on IPv6 hosts [RFC4862].
+
+ RA (Router Advertisement): a message sent by an IPv6 router to
+ advertise its presence to hosts together with various network-
+ related parameters required for hosts to perform SLAAC [RFC4861].
+
+ PIO (Prefix Information Option): a part of an RA message containing
+ information about IPv6 prefixes that could be used by hosts to
+ generate global IPv6 addresses [RFC4862].
+
+ RIO (Route Information Option): a part of an RA message containing
+ information about more specific IPv6 prefixes reachable via the
+ advertising router [RFC4191].
+
+4. Enterprise Multihoming Use Cases
+
+4.1. Simple ISP Connectivity with Connected SERs
+
+ We start by looking at a scenario in which a site has connections to
+ two ISPs, as shown in Figure 1. The site is assigned the prefix
+ 2001:db8:0:a000::/52 by ISP-A and prefix 2001:db8:0:b000::/52 by ISP-
+ B. We consider three hosts in the site. H31 and H32 are on a LAN
+ that has been assigned subnets 2001:db8:0:a010::/64 and
+ 2001:db8:0:b010::/64. H31 has been assigned the addresses
+ 2001:db8:0:a010::31 and 2001:db8:0:b010::31. H32 has been assigned
+ 2001:db8:0:a010::32 and 2001:db8:0:b010::32. H41 is on a different
+ subnet that has been assigned 2001:db8:0:a020::/64 and
+ 2001:db8:0:b020::/64.
+
+ 2001:db8:0:1234::101 H101
+ |
+ |
+ 2001:db8:0:a010::31 --------
+ 2001:db8:0:b010::31 ,-----. / \
+ +--+ +--+ +----+ ,' `. : :
+ +---|R1|---|R4|---+---|SERa|-+ ISP-A +--+-- :
+ H31--+ +--+ +--+ | +----+ `. ,' : :
+ | | `-----' : Internet :
+ | | : :
+ | | : :
+ | | : :
+ | | ,-----. : :
+ H32--+ +--+ | +----+ ,' `. : :
+ +---|R2|----------+---|SERb|-+ ISP-B +--+-- :
+ +--+ | +----+ `. ,' : :
+ | `-----' : :
+ | : :
+ +--+ +--+ +--+ \ /
+ H41------|R3|--|R5|--|R6| --------
+ +--+ +--+ +--+
+
+ 2001:db8:0:a020::41
+ 2001:db8:0:b020::41
+
+ Figure 1: Simple ISP Connectivity with Connected SERs
+
+ We refer to a router that connects the site to an ISP as a site edge
+ router (SER). Several other routers provide connectivity among the
+ internal hosts (H31, H32, and H41), as well as connect the internal
+ hosts to the Internet through SERa and SERb. In this example, SERa
+ and SERb share a direct connection to each other. In Section 4.2, we
+ consider a scenario in which this is not the case.
+
+ For the moment, we assume that the hosts are able to select suitable
+ source addresses through some mechanism that doesn't involve the
+ routers in the site network. Here, we focus on the primary task of
+ the routed site network, which is to get packets efficiently to their
+ destinations, while sending a packet to the ISP that assigned the
+ prefix that matches the source address of the packet. In Section 6,
+ we examine what role the routed network may play in helping hosts
+ select suitable source addresses for packets.
+
+ With this solution, routers will need some form of Source Address
+ Dependent Routing, which will be new functionality. It would be
+ useful if an enterprise site does not need to upgrade all routers to
+ support the new SADR functionality in order to support PA
+ multihoming. We consider whether this is possible and examine the
+ trade-offs of not having all routers in the site support SADR
+ functionality.
+
+ In the topology in Figure 1, it is possible to support PA multihoming
+ with only SERa and SERb being capable of SADR. The other routers can
+ continue to forward based only on destination address, and exchange
+ routes that only consider destination address. In this scenario,
+ SERa and SERb communicate source-scoped routing information across
+ their shared connection. When SERa receives a packet with a source
+ address matching prefix 2001:db8:0:b000::/52, it forwards the packet
+ to SERb, which forwards it on the uplink to ISP-B. The analogous
+ behavior holds for traffic that SERb receives with a source address
+ matching prefix 2001:db8:0:a000::/52.
+
+ In Figure 1, when only SERa and SERb are capable of source address
+ dependent routing, PA multihoming will work. However, the paths over
+ which the packets are sent will generally not be the shortest paths.
+ The forwarding paths will generally be more efficient when more
+ routers are capable of SADR. For example, if R4, R2, and R6 are
+ upgraded to support SADR, then they can exchange source-scoped routes
+ with SERa and SERb. They will then know to send traffic with a
+ source address matching prefix 2001:db8:0:b000::/52 directly to SERb,
+ without sending it to SERa first.
+
+4.2. Simple ISP Connectivity Where SERs Are Not Directly Connected
+
+ In Figure 2, we modify the topology slightly by inserting R7, so that
+ SERa and SERb are no longer directly connected. With this topology,
+ it is not enough to just enable SADR routing on SERa and SERb to
+ support PA multihoming. There are two solutions to enable PA
+ multihoming in this topology.
+
+ 2001:db8:0:1234::101 H101
+ |
+ |
+ 2001:db8:0:a010::31 --------
+ 2001:db8:0:b010::31 ,-----. / \
+ +--+ +--+ +----+ ,' `. : :
+ +---|R1|---|R4|---+---|SERa|-+ ISP-A +--+-- :
+ H31--+ +--+ +--+ | +----+ `. ,' : :
+ | | `-----' : Internet :
+ | +--+ : :
+ | |R7| : :
+ | +--+ : :
+ | | ,-----. : :
+ H32--+ +--+ | +----+ ,' `. : :
+ +---|R2|----------+---|SERb|-+ ISP-B +--+-- :
+ +--+ | +----+ `. ,' : :
+ | `-----' : :
+ | : :
+ +--+ +--+ +--+ \ /
+ H41------|R3|--|R5|--|R6| --------
+ +--+ +--+ +--+ |
+ |
+ 2001:db8:0:a020::41 2001:db8:0:5678::501 H501
+ 2001:db8:0:b020::41
+
+ Figure 2: Simple ISP Connectivity Where SERs Are Not Directly
+ Connected
+
+ One option is to effectively modify the topology by creating a
+ logical tunnel between SERa and SERb by using Generic Routing
+ Encapsulation (GRE) [RFC7676], for example. Although SERa and SERb
+ are not directly connected physically in this topology, they can be
+ directly connected logically by a tunnel.
+
+ The other option is to enable SADR functionality on R7. In this way,
+ R7 will exchange source-scoped routes with SERa and SERb, making the
+ three routers act as a single SADR domain. This illustrates the
+ basic principle that the minimum requirement for the routed site
+ network to support PA multihoming is having all of the site exit
+ routers be part of a connected SADR domain. Extending the connected
+ SADR domain beyond that point can produce more efficient forwarding
+ paths.
+
+4.3. Enterprise Network Operator Expectations
+
+ Before considering a more complex scenario, let's look in more detail
+ at the reasonably simple multihoming scenario in Figure 2 to
+ understand what can reasonably be expected from this solution. As a
+ general guiding principle, we assume an enterprise network operator
+ will expect a multihomed network to behave as close to a single-homed
+ network as possible. So a solution that meets those expectations
+ where possible is a good thing.
+
+ For traffic between internal hosts and for traffic from outside the
+ site to internal hosts, an enterprise network operator would expect
+ there to be no visible change in the path taken by this traffic,
+ since this traffic does not need to be routed in a way that depends
+ on source address. It is also reasonable to expect that internal
+ hosts should be able to communicate with each other using either of
+ their source addresses without restriction. For example, H31 should
+ be able to communicate with H41 using a packet with
+ S=2001:db8:0:a010::31, D=2001:db8:0:b020::41, regardless of the state
+ of uplink to ISP-B.
+
+ These goals can be accomplished by having all of the routers in the
+ network continue to originate normal unscoped destination routes for
+ their connected networks. If we can arrange it so that these
+ unscoped destination routes are used for forwarding this traffic,
+ then we will have accomplished multihoming's goal of not affecting
+ the forwarding of traffic destined for internal hosts.
+
+ For traffic destined for external hosts, it is reasonable to expect
+ that traffic with a source address from the prefix assigned by ISP-A
+ to follow the path that the traffic would follow if there were no
+ connection to ISP-B. This can be accomplished by having SERa
+ originate a source-scoped route of the form (S=2001:db8:0:a000::/52,
+ D=::/0). If all of the routers in the site support SADR, then the
+ path of traffic exiting via ISP-A can match that expectation. If
+ some routers don't support SADR, then it is reasonable to expect that
+ the path for traffic exiting via ISP-A may be different within the
+ site. This is a trade-off that the enterprise network operator may
+ decide to make.
+
+ It is important to understand the behavior of this multihoming
+ solution when an uplink to one of the ISPs fails. To simplify this
+ discussion, we assume that all routers in the site support SADR. We
+ start by looking at the operation of the network when the uplinks to
+ both ISP-A and ISP-B are functioning properly. SERa originates a
+ source-scoped route of the form (S=2001:db8:0:a000::/52, D=::/0), and
+ SERb originates a source-scoped route of the form
+ (S=2001:db8:0:b000::/52, D=::/0). These routes are distributed
+ through the routers in the site, and they establish within the
+ routers two sets of forwarding paths for traffic leaving the site.
+ One set of forwarding paths is for packets with source addresses in
+ 2001:db8:0:a000::/52. The other set of forwarding paths is for
+ packets with source addresses in 2001:db8:0:b000::/52. The normal
+ destination routes, which are not scoped to these two source
+ prefixes, play no role in the forwarding. Whether a packet exits the
+ site via SERa or via SERb is completely determined by the source
+ address applied to the packet by the host. So for example, when host
+ H31 sends a packet to host H101 with (S=2001:db8:0:a010::31,
+ D=2001:db8:0:1234::101), the packet will only be sent out the link
+ from SERa to ISP-A.
+
+ Now consider what happens when the uplink from SERa to ISP-A fails.
+ The only way for the packets from H31 to reach H101 is for H31 to
+ start using the source address for ISP-B. H31 needs to send the
+ following packet: (S=2001:db8:0:b010::31, D=2001:db8:0:1234::101).
+
+ This behavior is very different from the behavior that occurs with
+ site multihoming using PI addresses or with PA addresses using NAT.
+ In these other multihoming solutions, hosts do not need to react to
+ network failures several hops away in order to regain Internet
+ access. Instead, a host can be largely unaware of the failure of an
+ uplink to an ISP. When multihoming with PA addresses and NAT,
+ existing sessions generally need to be reestablished after a failure
+ since the external host will receive packets from the internal host
+ with a new source address. However, new sessions can be established
+ without any action on the part of the hosts. Multihoming with PA
+ addresses and NAT has created the expectation of a fairly quick and
+ simple recovery from network failures. Alternatives should to be
+ evaluated in terms of the speed and complexity of the recovery
+ mechanism.
+
+ Another significant difference between this multihoming solution and
+ multihoming with either PI addresses or with PA addresses using NAT
+ is the ability of the enterprise network operator to route traffic
+ over different ISPs based on destination address. We still consider
+ the fairly simple network of Figure 2 and assume that uplinks to both
+ ISPs are functioning. Assume that the site is multihomed using PA
+ addresses and NAT, and that SERa and SERb each originate a normal
+ destination route for D=::/0, with the route origination dependent on
+ the state of the uplink to the respective ISP.
+
+ Now suppose it is observed that an important application running
+ between internal hosts and external host H101 experiences much better
+ performance when the traffic passes through ISP-A (perhaps because
+ ISP-A provides lower latency to H101). When multihoming this site
+ with PI addresses or with PA addresses and NAT, the enterprise
+ network operator can configure SERa to originate into the site
+ network a normal destination route for D=2001:db8:0:1234::/64 (the
+ destination prefix to reach H101) that depends on the state of the
+ uplink to ISP-A. When the link to ISP-A is functioning, the
+ destination route D=2001:db8:0:1234::/64 will be originated by SERa,
+ so traffic from all hosts will use ISP-A to reach H101 based on the
+ longest destination prefix match in the route lookup.
+
+ Implementing the same routing policy is more difficult with the PA
+ multihoming solution described in this document since it doesn't use
+ NAT. By design, the only way to control where a packet exits this
+ network is by setting the source address of the packet. Since the
+ network cannot modify the source address without NAT, the host must
+ set it. To implement this routing policy, each host needs to use the
+ source address from the prefix assigned by ISP-A to send traffic
+ destined for H101. Mechanisms have been proposed to allow hosts to
+ choose the source address for packets in a fine-grained manner. We
+ will discuss these proposals in Section 6. However, an enterprise
+ network administrator would not expect to interact with host
+ operating systems to ensure that a particular source address is
+ chosen for a particular destination prefix in order to implement this
+ routing policy.
+
+4.4. More Complex ISP Connectivity
+
+ The previous sections considered two variations of a simple
+ multihoming scenario in which the site is connected to two ISPs
+ offering only Internet connectivity. It is likely that many actual
+ enterprise multihoming scenarios will be similar to this simple
+ example. However, there are more complex multihoming scenarios that
+ we would like this solution to address as well.
+
+ It is fairly common for an ISP to offer a service in addition to
+ Internet access over the same uplink. Two variations of this are
+ reflected in Figure 3. In addition to Internet access, ISP-A offers
+ a service that requires the site to access host H51 at
+ 2001:db8:0:5555::51. The site has a single physical and logical
+ connection with ISP-A, and ISP-A only allows access to H51 over that
+ connection. So when H32 needs to access the service at H51, it needs
+ to send packets with (S=2001:db8:0:a010::32, D=2001:db8:0:5555::51),
+ and those packets need to be forwarded out the link from SERa to ISP-
+ A.
+
+ 2001:db8:0:1234::101 H101
+ |
+ |
+ 2001:db8:0:a010::31 --------
+ 2001:db8:0:b010::31 ,-----. / \
+ +--+ +--+ +----+ ,' `. : :
+ +---|R1|---|R4|---+---|SERa|-+ ISP-A +--+-- :
+ H31--+ +--+ +--+ | +----+ `. ,' : :
+ | | `-----' : Internet :
+ | | | : :
+ | | H51 : :
+ | | 2001:db8:0:5555::51 : :
+ | +--+ : :
+ | |R7| : :
+ | +--+ : :
+ | | : :
+ | | ,-----. : :
+ H32--+ +--+ | +-----+ ,' `. : :
+ +---|R2|-----+----+--|SERb1|-+ ISP-B +--+-- :
+ +--+ | +-----+ `. ,' : :
+ +--+ `--|--' : :
+ 2001:db8:0:a010::32 |R8| | \ /
+ +--+ ,--|--. --------
+ | +-----+ ,' `. |
+ +-------|SERb2|-+ ISP-B | |
+ | +-----+ `. ,' H501
+ | `-----' 2001:db8:0:5678
+ | | ::501
+ +--+ +--+ H61
+ H41------|R3|--|R5| 2001:db8:0:6666::61
+ +--+ +--+
+
+ 2001:db8:0:a020::41
+ 2001:db8:0:b020::41
+
+ Figure 3: Internet Access and Services Offered by ISP-A and ISP-B
+
+ ISP-B illustrates a variation on this scenario. In addition to
+ Internet access, ISP-B also offers a service that requires the site
+ to access host H61. The site has two connections to two different
+ parts of ISP-B (shown as SERb1 and SERb2 in Figure 3). ISP-B expects
+ Internet traffic to use the uplink from SERb1, while it expects
+ traffic destined for the service at H61 to use the uplink from SERb2.
+ For either uplink, ISP-B expects the ingress traffic to have a source
+ address matching the prefix that it assigned to the site,
+ 2001:db8:0:b000::/52.
+
+ As discussed before, we rely completely on the internal host to set
+ the source address of the packet properly. In the case of a packet
+ sent by H31 to access the service in ISP-B at H61, we expect the
+ packet to have the following addresses: (S=2001:db8:0:b010::31,
+ D=2001:db8:0:6666::61). The routed network has two potential ways of
+ distributing routes so that this packet exits the site on the uplink
+ at SERb2.
+
+ We could just rely on normal destination routes, without using
+ source-prefix-scoped routes. If we have SERb2 originate a normal
+ unscoped destination route for D=2001:db8:0:6666::/64, the packets
+ from H31 to H61 will exit the site at SERb2 as desired. We should
+ not have to worry about SERa needing to originate the same route,
+ because ISP-B should choose a globally unique prefix for the service
+ at H61.
+
+ The alternative is to have SERb2 originate a source-prefix-scoped
+ destination route of the form (S=2001:db8:0:b000::/52,
+ D=2001:db8:0:6666::/64). From a forwarding point of view, the use of
+ the source-prefix-scoped destination route would result in traffic
+ with source addresses corresponding only to ISP-B being sent to
+ SERb2. Instead, the use of the unscoped destination route would
+ result in traffic with source addresses corresponding to ISP-A and
+ ISP-B being sent to SERb2, as long as the destination address matches
+ the destination prefix. It seems like either forwarding behavior
+ would be acceptable.
+
+ However, from the point of view of the enterprise network
+ administrator trying to configure, maintain, and troubleshoot this
+ multihoming solution, it seems much clearer to have SERb2 originate
+ the source-prefix-scoped destination route corresponding to the
+ service offered by ISP-B. In this way, all of the traffic leaving
+ the site is determined by the source-prefix-scoped routes, and all of
+ the traffic within the site or arriving from external hosts is
+ determined by the unscoped destination routes. Therefore, for this
+ multihoming solution we choose to originate source-prefix-scoped
+ routes for all traffic leaving the site.
+
+4.5. ISPs and Provider-Assigned Prefixes
+
+ While we expect that most site multihoming involves connecting to
+ only two ISPs, this solution allows for connections to an arbitrary
+ number of ISPs. However, when evaluating scalable implementations of
+ the solution, it would be reasonable to assume that the maximum
+ number of ISPs that a site would connect to is five (topologies with
+ two redundant routers, each having two uplinks to different ISPs,
+ plus a tunnel to a head office acting as fifth one are not unheard
+ of).
+
+ It is also useful to note that the prefixes assigned to the site by
+ different ISPs will not overlap. This must be the case, since the
+ provider-assigned addresses have to be globally unique.
+
+4.6. Simplified Topologies
+
+ The topologies of many enterprise sites using this multihoming
+ solution may in practice be simpler than the examples that we have
+ used. The topology in Figure 1 could be further simplified by
+ directly connecting all hosts to the LAN that connects the two site
+ exit routers, SERa and SERb. The topology could also be simplified
+ by connecting both uplinks to ISP-A and ISP-B to the same site exit
+ router. However, it is the aim of this document to provide a
+ solution that applies to a broad range of enterprise site network
+ topologies, so this document focuses on providing a solution to the
+ more general case. The simplified cases will also be supported by
+ this solution, and there may even be optimizations that can be made
+ for simplified cases. This solution, however, needs to support more
+ complex topologies.
+
+ We are starting with the basic assumption that enterprise site
+ networks can be quite complex from a routing perspective. However,
+ even a complex site network can be multihomed to different ISPs with
+ PA addresses using IPv4 and NAT. It is not reasonable to expect an
+ enterprise network operator to change the routing topology of the
+ site in order to deploy IPv6.
+
+5. Generating Source-Prefix-Scoped Forwarding Tables
+
+ So far, we have described in general terms how the SADR-capable
+ routers in this solution forward traffic by using both normal
+ unscoped destination routes and source-prefix-scoped destination
+ routes. Here we give a precise method for generating a source-
+ prefix-scoped forwarding table on a router that supports SADR.
+
+ 1. Compute the next-hops for the source-prefix-scoped destination
+ prefixes using only routers in the connected SADR domain. These
+ are the initial source-prefix-scoped forwarding table entries.
+
+ 2. Compute the next-hops for the unscoped destination prefixes using
+ all routers in the IGP. This is the unscoped forwarding table.
+
+ 3. For a given source-prefix-scoped forwarding table T (scoped to
+ source prefix P), consider a source-prefix-scoped forwarding
+ table T', whose source prefix P' contains P. We call T the more
+ specific source-prefix-scoped forwarding table, and T' the less
+ specific source-prefix-scoped forwarding table. We select
+ entries in forwarding table T' to augment forwarding table T
+ based on the following rules. If a destination prefix of an
+ entry in forwarding table T' exactly matches the destination
+ prefix of an existing entry in forwarding table T (including
+ destination prefix length), then do not add the entry to
+ forwarding table T. If the destination prefix does NOT match an
+ existing entry, then add the entry to forwarding table T. As the
+ unscoped forwarding table is considered to be scoped to ::/0,
+ this process will propagate routes from the unscoped forwarding
+ table to forwarding table T. If there exist multiple source-
+ prefix-scoped forwarding tables whose source prefixes contain P,
+ these source-prefix-scoped forwarding tables should be processed
+ in order from most specific to least specific.
+
+ The forwarding tables produced by this process are used in the
+ following way to forward packets.
+
+ 1. Select the most specific (longest prefix match) source-prefix-
+ scoped forwarding table that matches the source address of the
+ packet (again, the unscoped forwarding table is considered to be
+ scoped to ::/0).
+
+ 2. Look up the destination address of the packet in the selected
+ forwarding table to determine the next-hop for the packet.
+
+ The following example illustrates how this process is used to create
+ a forwarding table for each provider-assigned source prefix. We
+ consider the multihomed site network in Figure 3. Initially we
+ assume that all of the routers in the site network support SADR.
+ Figure 4 shows the routes that are originated by the routers in the
+ site network.
+
+ Routes originated by SERa:
+ (S=2001:db8:0:a000::/52, D=2001:db8:0:5555/64)
+ (S=2001:db8:0:a000::/52, D=::/0)
+ (D=2001:db8:0:5555::/64)
+ (D=::/0)
+
+ Routes originated by SERb1:
+ (S=2001:db8:0:b000::/52, D=::/0)
+ (D=::/0)
+
+ Routes originated by SERb2:
+ (S=2001:db8:0:b000::/52, D=2001:db8:0:6666::/64)
+ (D=2001:db8:0:6666::/64)
+
+ Routes originated by R1:
+ (D=2001:db8:0:a010::/64)
+ (D=2001:db8:0:b010::/64)
+
+ Routes originated by R2:
+ (D=2001:db8:0:a010::/64)
+ (D=2001:db8:0:b010::/64)
+
+ Routes originated by R3:
+ (D=2001:db8:0:a020::/64)
+ (D=2001:db8:0:b020::/64)
+
+ Figure 4: Routes Originated by Routers in the Site Network
+
+ Each SER originates destination routes that are scoped to the source
+ prefix assigned by the ISP to which the SER connects. Note that the
+ SERs also originate the corresponding unscoped destination route.
+ This is not needed when all of the routers in the site support SADR.
+ However, it is required when some routers do not support SADR. This
+ will be discussed in more detail later.
+
+ We focus on how R8 constructs its source-prefix-scoped forwarding
+ tables from these route advertisements. R8 computes the next hops
+ for destination routes that are scoped to the source prefix
+ 2001:db8:0:a000::/52. The results are shown in the first table in
+ Figure 5. (In this example, the next hops are computed assuming that
+ all links have the same metric.) Then, R8 computes the next hops for
+ destination routes that are scoped to the source prefix
+ 2001:db8:0:b000::/52. The results are shown in the second table in
+ Figure 5. Finally, R8 computes the next hops for the unscoped
+ destination prefixes. The results are shown in the third table in
+ Figure 5.
+
+ forwarding entries scoped to
+ source prefix = 2001:db8:0:a000::/52
+ ============================================
+ D=2001:db8:0:5555/64 NH=R7
+ D=::/0 NH=R7
+
+ forwarding entries scoped to
+ source prefix = 2001:db8:0:b000::/52
+ ============================================
+ D=2001:db8:0:6666/64 NH=SERb2
+ D=::/0 NH=SERb1
+
+ unscoped forwarding entries
+ ============================================
+ D=2001:db8:0:a010::/64 NH=R2
+ D=2001:db8:0:b010::/64 NH=R2
+ D=2001:db8:0:a020::/64 NH=R5
+ D=2001:db8:0:b020::/64 NH=R5
+ D=2001:db8:0:5555::/64 NH=R7
+ D=2001:db8:0:6666::/64 NH=SERb2
+ D=::/0 NH=SERb1
+
+ Figure 5: Forwarding Entries Computed at R8
+
+ The final step is for R8 to augment the more specific source-prefix-
+ scoped forwarding tables with entries from less specific source-
+ prefix-scoped forwarding tables. The unscoped forwarding table is
+ considered as being scoped to ::/0, so both 2001:db8:0:a000::/52 and
+ 2001:db8:0:b000::/52 are more specific prefixes of ::/0. Therefore,
+ entries in the unscoped forwarding table will be evaluated to be
+ added to these two more specific source-prefix-scoped forwarding
+ tables. If a forwarding entry from the less specific source-prefix-
+ scoped forwarding table has the exact same destination prefix
+ (including destination prefix length) as the forwarding entry from
+ the more specific source-prefix-scoped forwarding table, then the
+ existing forwarding entry in the more specific source-prefix-scoped
+ forwarding table wins.
+
+ As an example of how the source-prefix-scoped forwarding entries are
+ augmented, we consider how the two entries in the first table in
+ Figure 5 (the table for source prefix = 2001:db8:0:a000::/52) are
+ augmented with entries from the third table in Figure 5 (the table of
+ unscoped or scoped to ::/0 forwarding entries). The first four
+ unscoped forwarding entries (D=2001:db8:0:a010::/64,
+ D=2001:db8:0:b010::/64, D=2001:db8:0:a020::/64, and
+ D=2001:db8:0:b020::/64) are not an exact match for any of the
+ existing entries in the forwarding table for source prefix
+ 2001:db8:0:a000::/52. Therefore, these four entries are added to the
+ final forwarding table for source prefix 2001:db8:0:a000::/52. The
+ result of adding these entries is reflected in the first four entries
+ the first table in Figure 6.
+
+ The next less specific source-prefix-scoped (scope is ::/0)
+ forwarding table entry is for D=2001:db8:0:5555::/64. This entry is
+ an exact match for the existing entry in the forwarding table for the
+ more specific source prefix 2001:db8:0:a000::/52. Therefore, we do
+ not replace the existing entry with the entry from the unscoped
+ forwarding table. This is reflected in the fifth entry in the first
+ table in Figure 6. (Note that since both scoped and unscoped entries
+ have R7 as the next hop, the result of applying this rule is not
+ visible.)
+
+ The next less specific source-prefix-scoped (scope is ::/0)
+ forwarding table entry is for D=2001:db8:0:6666::/64. This entry is
+ not an exact match for any existing entries in the forwarding table
+ for source prefix 2001:db8:0:a000::/52. Therefore, we add this
+ entry. This is reflected in the sixth entry in the first table in
+ Figure 6.
+
+ The next less specific source-prefix-scoped (scope is ::/0)
+ forwarding table entry is for D=::/0. This entry is an exact match
+ for the existing entry in the forwarding table for the more specific
+ source prefix 2001:db8:0:a000::/52. Therefore, we do not overwrite
+ the existing source-prefix-scoped entry, as can be seen in the last
+ entry in the first table in Figure 6.
+
+ if source address matches 2001:db8:0:a000::/52
+ then use this forwarding table
+ ============================================
+ D=2001:db8:0:a010::/64 NH=R2
+ D=2001:db8:0:b010::/64 NH=R2
+ D=2001:db8:0:a020::/64 NH=R5
+ D=2001:db8:0:b020::/64 NH=R5
+ D=2001:db8:0:5555::/64 NH=R7
+ D=2001:db8:0:6666::/64 NH=SERb2
+ D=::/0 NH=R7
+
+ else if source address matches 2001:db8:0:b000::/52
+ then use this forwarding table
+ ============================================
+ D=2001:db8:0:a010::/64 NH=R2
+ D=2001:db8:0:b010::/64 NH=R2
+ D=2001:db8:0:a020::/64 NH=R5
+ D=2001:db8:0:b020::/64 NH=R5
+ D=2001:db8:0:5555::/64 NH=R7
+ D=2001:db8:0:6666::/64 NH=SERb2
+ D=::/0 NH=SERb1
+
+ else if source address matches ::/0 use this forwarding table
+ ============================================
+ D=2001:db8:0:a010::/64 NH=R2
+ D=2001:db8:0:b010::/64 NH=R2
+ D=2001:db8:0:a020::/64 NH=R5
+ D=2001:db8:0:b020::/64 NH=R5
+ D=2001:db8:0:5555::/64 NH=R7
+ D=2001:db8:0:6666::/64 NH=SERb2
+ D=::/0 NH=SERb1
+
+ Figure 6: Complete Forwarding Tables Computed at R8
+
+ The forwarding tables produced by this process at R8 have the desired
+ properties. A packet with a source address in 2001:db8:0:a000::/52
+ will be forwarded based on the first table in Figure 6. If the
+ packet is destined for the Internet at large or the service at
+ D=2001:db8:0:5555/64, it will be sent to R7 in the direction of SERa.
+ If the packet is destined for an internal host, then the first four
+ entries will send it to R2 or R5 as expected. Note that if this
+ packet has a destination address corresponding to the service offered
+ by ISP-B (D=2001:db8:0:5555::/64), then it will get forwarded to
+ SERb2. It will be dropped by SERb2 or by ISP-B, since the packet has
+ a source address that was not assigned by ISP-B. However, this is
+ expected behavior. In order to use the service offered by ISP-B, the
+ host needs to originate the packet with a source address assigned by
+ ISP-B.
+
+ In this example, a packet with a source address that doesn't match
+ 2001:db8:0:a000::/52 or 2001:db8:0:b000::/52 must have originated
+ from an external host. Such a packet will use the unscoped
+ forwarding table (the last table in Figure 6). These packets will
+ flow exactly as they would in absence of multihoming.
+
+ We can also modify this example to illustrate how it supports
+ deployments in which not all routers in the site support SADR.
+ Continuing with the topology shown in Figure 3, suppose that R3 and
+ R5 do not support SADR. Instead they are only capable of
+ understanding unscoped route advertisements. The SADR routers in the
+ network will still originate the routes shown in Figure 4. However,
+ R3 and R5 will only understand the unscoped routes as shown in
+ Figure 7.
+
+ Routes originated by SERa:
+ (D=2001:db8:0:5555::/64)
+ (D=::/0)
+
+ Routes originated by SERb1:
+ (D=::/0)
+
+ Routes originated by SERb2:
+ (D=2001:db8:0:6666::/64)
+
+ Routes originated by R1:
+ (D=2001:db8:0:a010::/64)
+ (D=2001:db8:0:b010::/64)
+
+ Routes originated by R2:
+ (D=2001:db8:0:a010::/64)
+ (D=2001:db8:0:b010::/64)
+
+ Routes originated by R3:
+ (D=2001:db8:0:a020::/64)
+ (D=2001:db8:0:b020::/64)
+
+ Figure 7: Route Advertisements Understood by Routers That Do Not
+ Support SADR
+
+ With these unscoped route advertisements, R5 will produce the
+ forwarding table shown in Figure 8.
+
+ forwarding table
+ ============================================
+ D=2001:db8:0:a010::/64 NH=R8
+ D=2001:db8:0:b010::/64 NH=R8
+ D=2001:db8:0:a020::/64 NH=R3
+ D=2001:db8:0:b020::/64 NH=R3
+ D=2001:db8:0:5555::/64 NH=R8
+ D=2001:db8:0:6666::/64 NH=SERb2
+ D=::/0 NH=R8
+
+ Figure 8: Forwarding Table for R5, Which Doesn't Understand
+ Source-Prefix- Scoped Routes
+
+ As all SERs belong to the SADR domain, any traffic that needs to exit
+ the site will eventually hit a SADR-capable router. To prevent
+ routing loops involving SADR-capable and non-SADR-capable routers,
+ traffic that enters the SADR-capable domain does not leave the domain
+ until it exits the site. Therefore all SADR-capable routers within
+ the domain MUST be logically connected.
+
+ Note that the mechanism described here for converting source-prefix-
+ scoped destination prefix routing advertisements into forwarding
+ state is somewhat different from that proposed in [DST-SRC-RTG]. The
+ method described in this document is functionally equivalent, but it
+ is based on application of existing mechanisms for the described
+ scenarios.
+
+6. Mechanisms for Hosts To Choose Good Default Source Addresses in a
+ Multihomed Site
+
+ Until this point, we have made the assumption that hosts are able to
+ choose the correct source address using some unspecified mechanism.
+ This has allowed us to focus on what the routers in a multihomed site
+ network need to do in order to forward packets to the correct ISP
+ based on source address. Now we look at possible mechanisms for
+ hosts to choose the correct source address. We also look at what
+ role, if any, the routers may play in providing information that
+ helps hosts to choose source addresses.
+
+ It should be noted that this section discusses how hosts could select
+ the default source address for new connections. Any connection that
+ already exists on a host is bound to a specific source address that
+ cannot be changed. Section 6.7 discusses the connections
+ preservation issue in more detail.
+
+ Any host that needs to be able to send traffic using the uplinks to a
+ given ISP is expected to be configured with an address from the
+ prefix assigned by that ISP. The host will control which ISP is used
+ for its traffic by selecting one of the addresses configured on the
+ host as the source address for outgoing traffic. It is the
+ responsibility of the site network to ensure that a packet with the
+ source address from an ISP is now sent on an uplink to that ISP.
+
+ If all of the ISP uplinks are working, then the host's choice of
+ source address may be driven by the desire to load share across ISP
+ uplinks, or it may be driven by the desire to take advantage of
+ certain properties of a particular uplink or ISP (if some information
+ about various path properties has been made available to the host
+ somehow. See [PROV-DOMAINS] as an example). If any of the ISP
+ uplinks is not working, then the choice of source address by the host
+ can cause packets to get dropped.
+
+ How a host selects a suitable source address in a multihomed site is
+ not a solved problem. We do not attempt to solve this problem in
+ this document. Instead we discuss the current state of affairs with
+ respect to standardized solutions and the implementation of those
+ solutions. We also look at proposed solutions for this problem.
+
+ An external host initiating communication with a host internal to a
+ PA-multihomed site will need to know multiple addresses for that host
+ in order to communicate with it using different ISPs to the
+ multihomed site (knowing just one address would undermine all
+ benefits of redundant connectivity provided by multihoming). These
+ addresses are typically learned through DNS. (For simplicity, we
+ assume that the external host is single-homed.) The external host
+ chooses the ISP that will be used at the remote multihomed site by
+ setting the destination address on the packets it transmits. For a
+ session originated from an external host to an internal host, the
+ choice of source address used by the internal host is simple. The
+ internal host has no choice but to use the destination address in the
+ received packet as the source address of the transmitted packet.
+
+ For a session originated by a host inside the multihomed site, the
+ decision of which source address to select is more complicated. We
+ consider three main methods for hosts to get information about the
+ network. The two proactive methods are Neighbor Discovery Router
+ Advertisements and DHCPv6. The one reactive method we consider is
+ ICMPv6. Note that we are explicitly excluding the possibility of
+ having hosts participate in, or even listen directly to, routing
+ protocol advertisements.
+
+ First we look at how a host is currently expected to select the
+ default source and destination addresses to be used for a new
+ connection.
+
+6.1. Default Source Address Selection Algorithm on Hosts
+
+ [RFC6724] defines the algorithms that hosts are expected to use to
+ select source and destination addresses for packets. It defines an
+ algorithm for selecting a source address and a separate algorithm for
+ selecting a destination address. Both of these algorithms depend on
+ a policy table. [RFC6724] defines a default policy that produces
+ certain behavior.
+
+ The rules in the two algorithms in [RFC6724] depend on many different
+ properties of addresses. While these are needed for understanding
+ how a host should choose addresses in an arbitrary environment, most
+ of the rules are not relevant for understanding how a host should
+ choose among multiple source addresses in a multihomed environment
+ when sending a packet to a remote host. Returning to the example in
+ Figure 3, we look at what the default algorithms in [RFC6724] say
+ about the source address that internal host H31 should use to send
+ traffic to external host H101, somewhere on the Internet.
+
+ There is no choice to be made with respect to destination address.
+ H31 needs to send a packet with D=2001:db8:0:1234::101 in order to
+ reach H101. So H31 has to choose between using S=2001:db8:0:a010::31
+ or S=2001:db8:0:b010::31 as the source address for this packet. We
+ go through the rules for source address selection in Section 5 of
+ [RFC6724].
+
+ Rule 1 (Prefer same address) is not useful to break the tie between
+ source addresses because neither one of the candidate source
+ addresses equals the destination address.
+
+ Rule 2 (Prefer appropriate scope) is also not useful in this scenario
+ because both source addresses and the destination address have global
+ scope.
+
+ Rule 3 (Avoid deprecated addresses) applies to an address that has
+ been autoconfigured by a host using stateless address
+ autoconfiguration as defined in [RFC4862]. An address autoconfigured
+ by a host has a preferred lifetime and a valid lifetime. The address
+ is preferred until the preferred lifetime expires, after which it
+ becomes deprecated. A deprecated address is not used if there is a
+ preferred address of the appropriate scope available. When the valid
+ lifetime expires, the address cannot be used at all. The preferred
+ and valid lifetimes for an autoconfigured address are set based on
+ the corresponding lifetimes in the Prefix Information Option in
+ Neighbor Discovery Router Advertisements. In this scenario, a
+ possible tool to control source address selection in this scenario
+ would be for a host to deprecate an address by having routers on that
+ link, R1 and R2 in Figure 3, send Router Advertisement messages
+ containing PIOs with the Preferred Lifetime value for the deprecated
+ source prefix set to zero. This is a rather blunt tool, because it
+ discourages or prohibits the use of that source prefix for all
+ destinations. However, it may be useful in some scenarios. For
+ example, if all uplinks to a particular ISP fail, it is desirable to
+ prevent hosts from using source addresses from that ISP address
+ space.
+
+ Rule 4 (Avoid home addresses) does not apply here because we are not
+ considering Mobile IP.
+
+ Rule 5 (Prefer outgoing interface) is not useful in this scenario
+ because both source addresses are assigned to the same interface.
+
+ Rule 5.5 (Prefer addresses in a prefix advertised by the next-hop) is
+ not useful in the scenario when both R1 and R2 will advertise both
+ source prefixes. However, this rule may potentially allow a host to
+ select the correct source prefix by selecting a next-hop. The most
+ obvious way would be to make R1 advertise itself as a default router
+ and send PIO for 2001:db8:0:a010::/64, while R2 advertises itself as
+ a default router and sends PIO for 2001:db8:0:b010::/64. We'll
+ discuss later how Rule 5.5 can be used to influence a source address
+ selection in single-router topologies (e.g., when H41 is sending
+ traffic using R3 as a default gateway).
+
+ Rule 6 (Prefer matching label) refers to the label value determined
+ for each source and destination prefix as a result of applying the
+ policy table to the prefix. With the default policy table defined in
+ Section 2.1 of [RFC6724], Label(2001:db8:0:a010::31) = 5,
+ Label(2001:db8:0:b010::31) = 5, and Label(2001:db8:0:1234::101) = 5.
+ So with the default policy, Rule 6 does not break the tie. However,
+ the algorithms in [RFC6724] are defined in such a way that non-
+ default address selection policy tables can be used. [RFC7078]
+ defines a way to distribute a non-default address selection policy
+ table to hosts using DHCPv6. So even though the application of Rule
+ 6 to this scenario using the default policy table is not useful, Rule
+ 6 may still be a useful tool.
+
+ Rule 7 (Prefer temporary addresses) has to do with the technique
+ described in [RFC4941] to periodically randomize the interface
+ portion of an IPv6 address that has been generated using stateless
+ address autoconfiguration. In general, if H31 were using this
+ technique, it would use it for both source addresses, for example,
+ creating temporary addresses 2001:db8:0:a010:2839:9938:ab58:830f and
+ 2001:db8:0:b010:4838:f483:8384:3208, in addition to
+ 2001:db8:0:a010::31 and 2001:db8:0:b010::31. So this rule would
+ prefer the two temporary addresses, but it would not break the tie
+ between the two source prefixes from ISP-A and ISP-B.
+
+ Rule 8 (Use longest matching prefix) dictates that, between two
+ candidate source addresses, the host selects the one that has longest
+ common prefix length with the destination address. For example, if
+ H31 were selecting the source address for sending packets to H101,
+ this rule would not break the tie between candidate source addresses
+ 2001:db8:0:a101::31 and 2001:db8:0:b101::31 since the common prefix
+ length with the destination is 48. However, if H31 were selecting
+ the source address for sending packets to H41 address
+ 2001:db8:0:a020::41, then this rule would result in using
+ 2001:db8:0:a101::31 as a source (2001:db8:0:a101::31 and
+ 2001:db8:0:a020::41 share the common prefix 2001:db8:0:a000::/58,
+ while for 2001:db8:0:b101::31 and 2001:db8:0:a020::41, the common
+ prefix is 2001:db8:0:a000::/51). Therefore Rule 8 might be useful
+ for selecting the correct source address in some, but not all,
+ scenarios (for example if ISP-B services belong to
+ 2001:db8:0:b000::/59, then H31 would always use 2001:db8:0:b010::31
+ to access those destinations).
+
+ So we can see that of the eight source address selection rules from
+ [RFC6724], four actually apply to our basic site multihoming
+ scenario. The rules that are relevant to this scenario are
+ summarized below.
+
+ * Rule 3: Avoid deprecated addresses.
+
+ * Rule 5.5: Prefer addresses in a prefix advertised by the next-hop.
+
+ * Rule 6: Prefer matching label.
+
+ * Rule 8: Prefer longest matching prefix.
+
+ The two methods that we discuss for controlling the source address
+ selection through the four relevant rules above are SLAAC Router
+ Advertisement messages and DHCPv6.
+
+ We also consider a possible role for ICMPv6 for getting traffic-
+ driven feedback from the network. With the source address selection
+ algorithm discussed above, the goal is to choose the correct source
+ address on the first try, before any traffic is sent. However,
+ another strategy is to choose a source address, send the packet, get
+ feedback from the network about whether or not the source address is
+ correct, and try another source address if it is not.
+
+ We consider four scenarios in which a host needs to select the
+ correct source address. In the first scenario, both uplinks are
+ working. In the second scenario, one uplink has failed. The third
+ scenario is a situation in which one failed uplink has recovered.
+ The last scenario is failure of both (all) uplinks.
+
+ It should be noted that [RFC6724] only defines the behavior of IPv6
+ hosts to select default addresses that applications and upper-layer
+ protocols can use. Applications and upper-layer protocols can make
+ their own choices on selecting source addresses. The mechanism
+ proposed in this document attempts to ensure that the subset of
+ source addresses available for applications and upper-layer protocols
+ is selected with the up-to-date network state in mind. The rest of
+ the document discusses various aspects of the default source address
+ selection defined in [RFC6724], calling it for the sake of brevity
+ "the source address selection".
+
+6.2. Selecting Default Source Address When Both Uplinks Are Working
+
+ Again we return to the topology in Figure 3. Suppose that the site
+ administrator wants to implement a policy by which all hosts need to
+ use ISP-A to reach H101 at D=2001:db8:0:1234::101. So for example,
+ H31 needs to select S=2001:db8:0:a010::31.
+
+6.2.1. Distributing Default Address Selection Policy Table with DHCPv6
+
+ This policy can be implemented by using DHCPv6 to distribute an
+ address selection policy table that assigns the same label to
+ destination addresses that match 2001:db8:0:1234::/64 as it does to
+ source addresses that match 2001:db8:0:a000::/52. The following two
+ entries accomplish this.
+
+ Prefix Precedence Label
+ 2001:db8:0:1234::/64 50 33
+ 2001:db8:0:a000::/52 50 33
+
+ Figure 9: Policy Table Entries to Implement a Routing Policy
+
+ This requires that the hosts implement [RFC6724], the basic source
+ and destination address framework, along with [RFC7078], the DHCPv6
+ extension for distributing a non-default policy table. Note that it
+ does NOT require that the hosts use DHCPv6 for address assignment.
+ The hosts could still use stateless address autoconfiguration for
+ address configuration, while using DHCPv6 only for policy table
+ distribution (see [RFC8415]). However this method has a number of
+ disadvantages:
+
+ * DHCPv6 support is not a mandatory requirement for IPv6 hosts
+ [RFC8504], so this method might not work for all devices.
+
+ * Network administrators are required to explicitly configure the
+ desired network access policies on DHCPv6 servers. While it might
+ be feasible in the scenario of a single multihomed network, such
+ approach might have some scalability issues, especially if the
+ centralized DHCPv6 solution is deployed to serve a large number of
+ multihomed sites.
+
+6.2.2. Controlling Default Source Address Selection with Router
+ Advertisements
+
+ Neighbor Discovery currently has two mechanisms to communicate prefix
+ information to hosts. The base specification for Neighbor Discovery
+ (see [RFC4861]) defines the Prefix Information Option (PIO) in the
+ Router Advertisement (RA) message. When a host receives a PIO with
+ the A-flag [RFC8425] set, it can use the prefix in the PIO as the
+ source prefix from which it assigns itself an IP address using
+ stateless address autoconfiguration (SLAAC) procedures described in
+ [RFC4862]. In the example of Figure 3, if the site network is using
+ SLAAC, we would expect both R1 and R2 to send RA messages with PIOs
+ with the A-flag set for both source prefixes 2001:db8:0:a010::/64 and
+ 2001:db8:0:b010::/64. H31 would then use the SLAAC procedure to
+ configure itself with 2001:db8:0:a010::31 and 2001:db8:0:b010::31.
+
+ Whereas a host learns about source prefixes from PIO messages, hosts
+ can learn about a destination prefix from a Router Advertisement
+ containing a Route Information Option (RIO), as specified in
+ [RFC4191]. The destination prefixes in RIOs are intended to allow a
+ host to choose the router that it uses as its first hop to reach a
+ particular destination prefix.
+
+ As currently standardized, neither PIO nor RIO options contained in
+ Neighbor Discovery Router Advertisements can communicate the
+ information needed to implement the desired routing policy. PIOs
+ communicate source prefixes, and RIOs communicate destination
+ prefixes. However, there is currently no standardized way to
+ directly associate a particular destination prefix with a particular
+ source prefix.
+
+ [SADR-RA] proposes a Source Address Dependent Route Information
+ option for Neighbor Discovery Router Advertisements that would
+ associate a source prefix with a destination prefix. The details of
+ [SADR-RA] might need tweaking to address this use case. However, in
+ order to be able to use Neighbor Discovery Router Advertisements to
+ implement this routing policy, an extension is needed that would
+ allow R1 and R2 to explicitly communicate to H31 an association
+ between S=2001:db8:0:a000::/52 and D=2001:db8:0:1234::/64.
+
+ However, Rule 5.5 of the default source address selection algorithm
+ (discussed in Section 6.1), together with default router preference
+ (specified in [RFC4191]) and RIO, can be used to influence a source
+ address selection on a host as described below. Let's look at source
+ address selection on the host H41. It receives RAs from R3 with PIOs
+ for 2001:db8:0:a020::/64 and 2001:db8:0:b020::/64. At that point,
+ all traffic would use the same next-hop (R3 link-local address) so
+ Rule 5.5 does not apply. Now let's assume that R3 supports SADR and
+ has two scoped forwarding tables, one scoped to
+ S=2001:db8:0:a000::/52 and another scoped to S=2001:db8:0:b000::/52.
+ If R3 generates two different link-local addresses for its interface
+ facing H41 (one for each scoped forwarding table, LLA_A and LLA_B),
+ R3 will send two different RAs: one from LLA_A that includes a PIO
+ for 2001:db8:0:a020::/64, and another from LLA_B that includes a PIO
+ for 2001:db8:0:b020::/64. Now it is possible to influence H41 source
+ address selection for destinations that follow the default route by
+ setting the default router preference in RAs. If it is desired that
+ H41 reaches H101 (or any destination in the Internet) via ISP-A, then
+ RAs sent from LLA_A should have the default router preference set to
+ 01 (high priority), while RAs sent from LLA_B should have the
+ preference set to 11 (low). LLA_A would then be chosen as a next-hop
+ for H101, and therefore (per Rule 5.5) 2001:db8:0:a020::41 would be
+ selected as the source address. If, at the same time, it is desired
+ that H61 is accessible via ISP-B, then R3 should include a RIO for
+ 2001:db8:0:6666::/64 in its RA sent from LLA_B. H41 would choose
+ LLA_B as a next-hop for all traffic to H61, and then per Rule 5.5,
+ 2001:db8:0:b020::41 would be selected as a source address.
+
+ If in the above-mentioned scenario it is desirable that all Internet
+ traffic leaves the network via ISP-A, and the link to ISP-B is used
+ for accessing ISP-B services only (not as an ISP-A link backup), then
+ RAs sent by R3 from LLA_B should have their Router Lifetime values
+ set to zero and should include RIOs for ISP-B address space. It
+ would instruct H41 to use LLA_A for all Internet traffic but to use
+ LLA_B as a next-hop while sending traffic to ISP-B addresses.
+
+ The description of the mechanism above assumes SADR support by the
+ first-hop routers as well as SERs. However, a first-hop router can
+ still provide a less flexible version of this mechanism even without
+ implementing SADR. This could be done by providing configuration
+ knobs on the first-hop router that allow it to generate different
+ link-local addresses and to send individual RAs for each prefix.
+
+ The mechanism described above relies on Rule 5.5 of the default
+ source address selection algorithm defined in [RFC6724]. [RFC8028]
+ states that "A host SHOULD select default routers for each prefix it
+ is assigned an address in." It also recommends that hosts should
+ implement Rule 5.5. of [RFC6724]. Hosts following the
+ recommendations specified in [RFC8028] therefore should be able to
+ benefit from the solution described in this document. No standards
+ need to be updated in regards to host behavior.
+
+6.2.3. Controlling Default Source Address Selection with ICMPv6
+
+ We now discuss how one might use ICMPv6 to implement the routing
+ policy to send traffic destined for H101 out the uplink to ISP-A,
+ even when uplinks to both ISPs are working. If H31 started sending
+ traffic to H101 with S=2001:db8:0:b010::31 and
+ D=2001:db8:0:1234::101, it would be routed through SER-b1 and out the
+ uplink to ISP-B. SERb1 could recognize that this traffic is not
+ following the desired routing policy and react by sending an ICMPv6
+ message back to H31.
+
+ In this example, we could arrange things so that SERb1 drops the
+ packet with S=2001:db8:0:b010::31 and D=2001:db8:0:1234::101, and
+ then sends to H31 an ICMPv6 Destination Unreachable message with Code
+ 5 (Source address failed ingress/egress policy). When H31 receives
+ this packet, it would then be expected to try another source address
+ to reach the destination. In this example, H31 would then send a
+ packet with S=2001:db8:0:a010::31 and D=2001:db8:0:1234::101, which
+ will reach SERa and be forwarded out the uplink to ISP-A.
+
+ However, we would also want it to be the case that SERb1 does not
+ enforce this routing policy when the uplink from SERa to ISP-A has
+ failed. This could be accomplished by having SERa originate a
+ source-prefix-scoped route for (S=2001:db8:0:a000::/52,
+ D=2001:db8:0:1234::/64), and have SERb1 monitor the presence of that
+ route. If that route is not present (because SERa has stopped
+ originating it), then SERb1 will not enforce the routing policy, and
+ it will forward packets with S=2001:db8:0:b010::31 and
+ D=2001:db8:0:1234::101 out its uplink to ISP-B.
+
+ We can also use this source-prefix-scoped route originated by SERa to
+ communicate the desired routing policy to SERb1. We can define an
+ EXCLUSIVE flag to be advertised together with the IGP route for
+ (S=2001:db8:0:a000::/52, D=2001:db8:0:1234::/64). This would allow
+ SERa to communicate to SERb that SERb should reject traffic for
+ D=2001:db8:0:1234::/64 and respond with an ICMPv6 Destination
+ Unreachable Code 5 message, as long as the route for
+ (S=2001:db8:0:a000::/52, D=2001:db8:0:1234::/64) is present. The
+ definition of an EXCLUSIVE flag for SADR advertisements in IGPs would
+ require future standardization work.
+
+ Finally, if we are willing to extend ICMPv6 to support this solution,
+ then we could create a mechanism for SERb1 to tell the host which
+ source address it should be using to successfully forward packets
+ that meet the policy. In its current form, when SERb1 sends an
+ ICMPv6 Destination Unreachable Code 5 message, it is basically
+ saying, "This source address is wrong. Try another source address."
+ In the absence of a clear indication which address to try next, the
+ host will iterate over all addresses assigned to the interface (e.g.,
+ various privacy addresses), which would lead to significant delays
+ and degraded user experience. It would be better if the ICMPv6
+ message could say, "This source address is wrong. Instead use a
+ source address in S=2001:db8:0:a000::/52".
+
+ However, using ICMPv6 for signaling source address information back
+ to hosts introduces new challenges. Most routers currently have
+ software or hardware limits on generating ICMP messages. A site
+ administrator deploying a solution that relies on the SERs generating
+ ICMP messages could try to improve the performance of SERs for
+ generating ICMP messages. However, in a large network, it is still
+ likely that ICMP message generation limits will be reached. As a
+ result, hosts would not receive ICMPv6 back, which in turn leads to
+ traffic blackholing and poor user experience. To improve the
+ scalability of ICMPv6-based signaling, hosts SHOULD cache the
+ preferred source address (or prefix) for the given destination (which
+ in turn might cause issues in the case of the corresponding ISP
+ uplink failure - see Section 6.3). In addition, the same source
+ prefix SHOULD be used for other destinations in the same /64 as the
+ original destination address. The source prefix to the destination
+ mapping SHOULD have a specific lifetime. Expiration of the lifetime
+ SHOULD trigger the source address selection algorithm again.
+
+ Using ICMPv6 Destination Unreachable Messages with Code 5 to
+ influence source address selection introduces some security
+ challenges, which are discussed in Section 10.
+
+ As currently standardized in [RFC4443], the ICMPv6 Destination
+ Unreachable Message with Code 5 would allow for the iterative
+ approach to retransmitting packets using different source addresses.
+ As currently defined, the ICMPv6 message does not provide a mechanism
+ to communicate information about which source prefix should be used
+ for a retransmitted packet. The current document does not define
+ such a mechanism, but it might be a useful extension to define in a
+ different document. However, this approach has some security
+ implications, such as an ability for an attacker to send spoofed
+ ICMPv6 messages to signal an invalid/unreachable source prefix,
+ causing a DoS-type attack.
+
+6.2.4. Summary of Methods for Controlling Default Source Address
+ Selection to Implement Routing Policy
+
+ So to summarize this section, we have looked at three methods for
+ implementing a simple routing policy where all traffic for a given
+ destination on the Internet needs to use a particular ISP, even when
+ the uplinks to both ISPs are working.
+
+ The default source address selection policy cannot distinguish
+ between the source addresses needed to enforce this policy, so a non-
+ default policy table using associating source and destination
+ prefixes using label values would need to be installed on each host.
+ A mechanism exists for DHCPv6 to distribute a non-default policy
+ table, but such solution would heavily rely on DHCPv6 support by the
+ host operating system. Moreover, there is no mechanism to translate
+ desired routing/traffic engineering policies into policy tables on
+ DHCPv6 servers. Therefore using DHCPv6 for controlling the address
+ selection policy table is not recommended and SHOULD NOT be used.
+
+ At the same time, Router Advertisements provide a reliable mechanism
+ to influence the source address selection process via PIO, RIO, and
+ default router preferences. As all those options have been
+ standardized by the IETF and are supported by various operating
+ systems, no changes are required on hosts. First-hop routers in the
+ enterprise network need to be capable of sending different RAs for
+ different SLAAC prefixes (either based on scoped forwarding tables or
+ based on preconfigured policies).
+
+ SERs can enforce the routing policy by sending ICMPv6 Destination
+ Unreachable messages with Code 5 (Source address failed ingress/
+ egress policy) for traffic sent with the wrong source address. The
+ policy distribution could be automated by defining an EXCLUSIVE flag
+ for the source-prefix-scoped route, which could then be set on the
+ SER that originates the route. As ICMPv6 message generation can be
+ rate limited on routers, it SHOULD NOT be used as the only mechanism
+ to influence source address selection on hosts. While hosts SHOULD
+ select the correct source address for a given destination, the
+ network SHOULD signal any source address issues back to hosts using
+ ICMPv6 error messages.
+
+6.3. Selecting Default Source Address When One Uplink Has Failed
+
+ Now we discuss whether DHCPv6, Neighbor Discovery Router
+ Advertisements, and ICMPv6 can help a host choose the right source
+ address when an uplink to one of the ISPs has failed. Again we look
+ at the scenario in Figure 3. This time we look at traffic from H31
+ destined for external host H501 at D=2001:db8:0:5678::501. We
+ initially assume that the uplink from SERa to ISP-A is working and
+ that the uplink from SERb1 to ISP-B is working.
+
+ We assume there is no particular routing policy desired, so H31 is
+ free to send packets with S=2001:db8:0:a010::31 or
+ S=2001:db8:0:b010::31 and have them delivered to H501. For this
+ example, we assume that H31 has chosen S=2001:db8:0:b010::31 so that
+ the packets exit via SERb to ISP-B. Now we see what happens when the
+ link from SERb1 to ISP-B fails. How should H31 learn that it needs
+ to start sending packets to H501 with S=2001:db8:0:a010::31 in order
+ to start using the uplink to ISP-A? We need to do this in a way that
+ doesn't prevent H31 from still sending packets with
+ S=2001:db8:0:b010::31 in order to reach H61 at D=2001:db8:0:6666::61.
+
+6.3.1. Controlling Default Source Address Selection with DHCPv6
+
+ For this example, we assume that the site network in Figure 3 has a
+ centralized DHCP server and that all routers act as DHCP relay
+ agents. We assume that both of the addresses assigned to H31 were
+ assigned via DHCP.
+
+ We could try to have the DHCP server monitor the state of the uplink
+ from SERb1 to ISP-B in some manner and then tell H31 that it can no
+ longer use S=2001:db8:0:b010::31 by setting its valid lifetime to
+ zero. The DHCP server could initiate this process by sending a
+ Reconfigure message to H31 as described in Section 18.3 of [RFC8415].
+ Or the DHCP server can assign addresses with short lifetimes in order
+ to force clients to renew them often.
+
+ This approach would prevent H31 from using S=2001:db8:0:b010::31 to
+ reach a host on the Internet. However, it would also prevent H31
+ from using S=2001:db8:0:b010::31 to reach H61 at
+ D=2001:db8:0:6666::61, which is not desirable.
+
+ Another potential approach is to have the DHCP server monitor the
+ uplink from SERb1 to ISP-B and control the choice of source address
+ on H31 by updating its address selection policy table via the
+ mechanism in [RFC7078]. The DHCP server could initiate this process
+ by sending a Reconfigure message to H31. Note that [RFC8415]
+ requires that Reconfigure messages use DHCP authentication. DHCP
+ authentication could be avoided by using short address lifetimes to
+ force clients to send Renew messages to the server often. If the
+ host does not obtain its IP addresses from the DHCP server, then it
+ would need to use the Information Refresh Time option defined in
+ [RFC8415].
+
+ If the following policy table can be installed on H31 after the
+ failure of the uplink from SERb1, then the desired routing behavior
+ should be achieved based on source and destination prefix being
+ matched with label values.
+
+ Prefix Precedence Label
+ ::/0 50 44
+ 2001:db8:0:a000::/52 50 44
+ 2001:db8:0:6666::/64 50 55
+ 2001:db8:0:b000::/52 50 55
+
+ Figure 10: Policy Table Needed on Failure of Uplink from SERb1
+
+ The described solution has a number of significant drawbacks, some of
+ them already discussed in Section 6.2.1.
+
+ * DHCPv6 support is not required for an IPv6 host, and there are
+ operating systems that do not support DHCPv6. Besides that, it
+ does not appear that [RFC7078] has been widely implemented on host
+ operating systems.
+
+ * [RFC7078] does not clearly specify this kind of a dynamic use case
+ in which the address selection policy needs to be updated quickly
+ in response to the failure of a link. In a large network, it
+ would present scalability issues as many hosts need to be
+ reconfigured in a very short period of time.
+
+ * Updating DHCPv6 server configuration each time an ISP's uplink
+ changes its state introduces some scalability issues, especially
+ for mid/large distributed-scale enterprise networks. In addition
+ to that, the policy table needs to be manually configured by
+ administrators, which makes that solution prone to human error.
+
+ * No mechanism exists for making DHCPv6 servers aware of network
+ topology/routing changes in the network. In general, having
+ DHCPv6 servers monitor network-related events sounds like a bad
+ idea as it requires completely new functionality beyond the scope
+ of the DHCPv6 role.
+
+6.3.2. Controlling Default Source Address Selection with Router
+ Advertisements
+
+ The same mechanism as discussed in Section 6.2.2 can be used to
+ control the source address selection in the case of an uplink
+ failure. If a particular prefix should not be used as a source for
+ any destination, then the router needs to send an RA with the
+ Preferred Lifetime field for that prefix set to zero.
+
+ Let's consider a scenario in which all uplinks are operational, and
+ H41 receives two different RAs from R3: one from LLA_A with a PIO for
+ 2001:db8:0:a020::/64 and the default router preference set to 11
+ (low), and another one from LLA_B with a PIO for
+ 2001:db8:0:a020::/64, the default router preference set to 01 (high),
+ and a RIO for 2001:db8:0:6666::/64. As a result, H41 uses
+ 2001:db8:0:b020::41 as a source address for all Internet traffic, and
+ those packets are sent by SERs to ISP-B. If SERb1's uplink to ISP-B
+ fails, the desired behavior is that H41 stops using
+ 2001:db8:0:b020::41 as a source address for all destinations but H61.
+ To achieve that, R3 should react to SERb1's uplink failure (which
+ could be detected as the disappearance of scoped route
+ (S=2001:db8:0:b000::/52, D=::/0)) by withdrawing itself as a default
+ router. R3 sends a new RA from LLA_B with the Router Lifetime value
+ set to zero (which means that it should not be used as the default
+ router). That RA still contains a PIO for 2001:db8:0:b020::/64 (for
+ SLAAC purposes) and a RIO for 2001:db8:0:6666::/64 so that H41 can
+ reach H61 using LLA_B as a next-hop and 2001:db8:0:b020::41 as a
+ source address. For all traffic following the default route, LLA_A
+ will be used as a next-hop and 2001:db8:0:a020::41 as a source
+ address.
+
+ If all of the uplinks to ISP-B have failed, source addresses from
+ ISP-B address space should not be used. In such a failure scenario,
+ the forwarding table scoped S=2001:db8:0:b000::/52 contains no
+ entries, indicating that R3 can instruct hosts to stop using source
+ addresses from 2001:db8:0:b000::/52 by sending RAs containing PIOs
+ with Preferred Lifetime values set to zero.
+
+6.3.3. Controlling Default Source Address Selection with ICMPv6
+
+ Now we look at how ICMPv6 messages can provide information back to
+ H31. We assume again that, at the time of the failure, H31 is
+ sending packets to H501 using (S=2001:db8:0:b010::31,
+ D=2001:db8:0:5678::501). When the uplink from SERb1 to ISP-B fails,
+ SERb1 would stop originating its source-prefix-scoped route for the
+ default destination (S=2001:db8:0:b000::/52, D=::/0) as well as its
+ unscoped default destination route. With these routes no longer in
+ the IGP, traffic with (S=2001:db8:0:b010::31, D=2001:db8:0:5678::501)
+ would end up at SERa based on the unscoped default destination route
+ being originated by SERa. Since that traffic has the wrong source
+ address to be forwarded to ISP-A, SERa would drop it and send a
+ Destination Unreachable message with Code 5 (Source address failed
+ ingress/egress policy) back to H31. H31 would then know to use
+ another source address for that destination and would try with
+ (S=2001:db8:0:a010::31, D=2001:db8:0:5678::501). This would be
+ forwarded to SERa based on the source-prefix-scoped default
+ destination route still being originated by SERa, and SERa would
+ forward it to ISP-A. As discussed above, if we are willing to extend
+ ICMPv6, SERa can even tell H31 what source address it should use to
+ reach that destination. The expected host behavior has been
+ discussed in Section 6.2.3. Using ICMPv6 would have the same
+ scalability/rate limiting issues that are discussed in Section 6.2.3.
+ An ISP-B uplink failure immediately makes source addresses from
+ 2001:db8:0:b000::/52 unsuitable for external communication and might
+ trigger a large number of ICMPv6 packets being sent to hosts in that
+ subnet.
+
+6.3.4. Summary of Methods for Controlling Default Source Address
+ Selection on the Failure of an Uplink
+
+ It appears that DHCPv6 is not particularly well suited to quickly
+ changing the source address used by a host when an uplink fails,
+ which eliminates DHCPv6 from the list of potential solutions. On the
+ other hand, Router Advertisements provide a reliable mechanism to
+ dynamically provide hosts with a list of valid prefixes to use as
+ source addresses as well as to prevent the use of particular
+ prefixes. While no additional new features are required to be
+ implemented on hosts, routers need to be able to send RAs based on
+ the state of scoped forwarding table entries and to react to network
+ topology changes by sending RAs with particular parameters set.
+
+ It seems that the use of ICMPv6 Destination Unreachable messages
+ generated by the SER (or any SADR-capable) routers, together with the
+ use of RAs to signal source address selection errors back to hosts,
+ has the potential to provide a support mechanism. However,
+ scalability issues may arise in large networks when topology suddenly
+ changes. Therefore, it is highly desirable that hosts are able to
+ select the correct source address in the case of uplink failure, with
+ ICMPv6 being an additional mechanism to signal unexpected failures
+ back to hosts.
+
+ The current behaviors of different host operating systems upon
+ receipt of an ICMPv6 Destination Unreachable message with Code 5
+ (Source address failed ingress/egress policy) is not clear to the
+ authors. Information from implementers, users, and testing would be
+ quite helpful in evaluating this approach.
+
+6.4. Selecting Default Source Address upon Failed Uplink Recovery
+
+ The next logical step is to look at the scenario when a failed uplink
+ on SERb1 to ISP-B comes back up, so the hosts can start using source
+ addresses belonging to 2001:db8:0:b000::/52 again.
+
+6.4.1. Controlling Default Source Address Selection with DHCPv6
+
+ The mechanism to use DHCPv6 to instruct the hosts (H31 in our
+ example) to start using prefixes from ISP-B space (e.g.,
+ S=2001:db8:0:b010::31 for H31) to reach hosts on the Internet is
+ quite similar to one discussed in Section 6.3.1 and shares the same
+ drawbacks.
+
+6.4.2. Controlling Default Source Address Selection with Router
+ Advertisements
+
+ Let's look at the scenario discussed in Section 6.3.2. If the
+ uplink(s) failure caused the complete withdrawal of prefixes from the
+ 2001:db8:0:b000::/52 address space by setting the Preferred Lifetime
+ value to zero, then the recovery of the link should just trigger the
+ sending of a new RA with a non-zero Preferred Lifetime. In another
+ scenario discussed in Section 6.3.2, the failure of the SERb1 uplink
+ to ISP-B leads to the disappearance of the (S=2001:db8:0:b000::/52,
+ D=::/0) entry from the forwarding table scoped to
+ S=2001:db8:0:b000::/52 and, in turn, causes R3 to send RAs with the
+ Router Lifetime set to zero from LLA_B. The recovery of the SERb1
+ uplink to ISP-B leads to the reappearance of the scoped forwarding
+ entry (S=2001:db8:0:b000::/52, D=::/0). That reappearance acts as a
+ signal for R3 to advertise itself as a default router for ISP-B
+ address space domain (to send RAs from LLA_B with non-zero Router
+ Lifetime).
+
+6.4.3. Controlling Default Source Address Selection with ICMP
+
+ It looks like ICMPv6 provides a rather limited functionality to
+ signal back to hosts that particular source addresses have become
+ valid again. Unless the changes in the uplink specify a particular
+ (S,D) pair, hosts can keep using the same source address even after
+ an ISP uplink has come back up. For example, after the uplink from
+ SERb1 to ISP-B had failed, H31 received ICMPv6 Code 5 message (as
+ described in Section 6.3.3) and allegedly started using
+ (S=2001:db8:0:a010::31, D=2001:db8:0:5678::501) to reach H501. Now
+ when the SERb1 uplink comes back up, the packets with that (S,D) pair
+ are still routed to SERa1 and sent to the Internet. Therefore, H31
+ is not informed that it should stop using 2001:db8:0:a010::31 and
+ start using 2001:db8:0:b010::31 again. Unless SERa has a policy
+ configured to drop packets (S=2001:db8:0:a010::31,
+ D=2001:db8:0:5678::501) and send ICMPv6 back if the SERb1 uplink to
+ ISP-B is up, H31 will be unaware of the network topology change and
+ keep using S=2001:db8:0:a010::31 for Internet destinations, including
+ H51.
+
+ One of the possible options may be using a scoped route with an
+ EXCLUSIVE flag as described in Section 6.2.3. SERa1 uplink recovery
+ would cause the (S=2001:db8:0:a000::/52, D=2001:db8:0:1234::/64)
+ route to reappear in the routing table. In the absence of that,
+ route packets to H101 are sent to ISP-B (as ISP-A uplink was down)
+ with source addresses from 2001:db8:0:b000::/52. When the route
+ reappears, SERb1 rejects those packets and sends ICMPv6 back as
+ discussed in Section 6.2.3. Practically, it might lead to
+ scalability issues, which have been already discussed in 6.2.3 and
+ 6.4.3.
+
+6.4.4. Summary of Methods for Controlling Default Source Address
+ Selection upon Failed Uplink Recovery
+
+ Once again, DHCPv6 does not look like a reasonable choice to
+ manipulate the source address selection process on a host in the case
+ of network topology changes. Using Router Advertisement provides the
+ flexible mechanism to dynamically react to network topology changes
+ (if routers are able to use routing changes as a trigger for sending
+ out RAs with specific parameters). ICMPv6 could be considered as a
+ supporting mechanism to signal incorrect source address back to
+ hosts, but it should not be considered as the only mechanism to
+ control the address selection in multihomed environments.
+
+6.5. Selecting Default Source Address When All Uplinks Have Failed
+
+ One particular tricky case is a scenario when all uplinks have
+ failed. In that case, there is no valid source address to be used
+ for any external destinations when it might be desirable to have
+ intra-site connectivity.
+
+6.5.1. Controlling Default Source Address Selection with DHCPv6
+
+ From the DHCPv6 perspective, uplinks failure should be treated as two
+ independent failures and processed as described in Section 6.3.1. At
+ this stage, it is quite obvious that it would result in a quite
+ complicated policy table that would need to be explicitly configured
+ by administrators and therefore seems to be impractical.
+
+6.5.2. Controlling Default Source Address Selection with Router
+ Advertisements
+
+ As discussed in Section 6.3.2, an uplink failure causes the scoped
+ default entry to disappear from the scoped forwarding table and
+ triggers RAs with zero Router Lifetimes. Complete disappearance of
+ all scoped entries for a given source prefix would cause the prefix
+ to be withdrawn from hosts by setting the Preferred Lifetime value to
+ zero in the PIO. If all uplinks (SERa, SERb1 and SERb2) fail, hosts
+ either lose their default routers and/or have no global IPv6
+ addresses to use as a source. (Note that 'uplink failure' might mean
+ 'IPv6 connectivity failure with IPv4 still being reachable', in which
+ case, hosts might fall back to IPv4 if there is IPv4 connectivity to
+ destinations). As a result, intra-site connectivity is broken. One
+ of the possible ways to solve it is to use ULAs.
+
+ In addition to GUAs, all hosts have ULA addresses assigned, and these
+ addresses are used for intra-site communication even if there is no
+ GUA assigned to a host. To avoid accidental leaking of packets with
+ ULA sources, SADR-capable routers SHOULD have a scoped forwarding
+ table for ULA source for internal routes but MUST NOT have an entry
+ for D=::/0 in that table. In the absence of (S=ULA_Prefix; D=::/0),
+ first-hop routers will send dedicated RAs from a unique link-local
+ source LLA_ULA with a PIO from ULA address space, a RIO for the ULA
+ prefix, and Router Lifetime set to zero. The behavior is consistent
+ with the situation when SERb1 lost the uplink to ISP-B (so there is
+ no Internet connectivity from 2001:db8:0:b000::/52 sources), but
+ those sources can be used to reach some specific destinations. In
+ the case of ULA, there is no Internet connectivity from ULA sources,
+ but they can be used to reach other ULA destinations. Note that ULA
+ usage could be particularly useful if all ISPs assign prefixes via
+ DHCP prefix delegation. In the absence of ULAs, upon the failure of
+ all uplinks, hosts would lose all their GUAs upon prefix-lifetime
+ expiration, which again makes intra-site communication impossible.
+
+ It should be noted that Rule 5.5 (prefer a prefix advertised by the
+ selected next-hop) takes precedence over the Rule 6 (prefer matching
+ label, which ensures that GUA source addresses are preferred over
+ ULAs for GUA destinations). Therefore if ULAs are used, the network
+ administrator needs to ensure that, while the site has Internet
+ connectivity, hosts do not select a router that advertises ULA
+ prefixes as their default router.
+
+6.5.3. Controlling Default Source Address Selection with ICMPv6
+
+ In the case of the failure of all uplinks, all SERs will drop
+ outgoing IPv6 traffic and respond with ICMPv6 error messages. In a
+ large network in which many hosts attempt to reach Internet
+ destinations, the SERs need to generate an ICMPv6 error for every
+ packet they receive from hosts, which presents the same scalability
+ issues discussed in Section 6.3.3.
+
+6.5.4. Summary of Methods for Controlling Default Source Address
+ Selection When All Uplinks Failed
+
+ Again, combining SADR with Router Advertisements seems to be the most
+ flexible and scalable way to control the source address selection on
+ hosts.
+
+6.6. Summary of Methods for Controlling Default Source Address
+ Selection
+
+ This section summarizes the scenarios and options discussed above.
+
+ While DHCPv6 allows administrators to manipulate source address
+ selection policy tables, this method has a number of significant
+ disadvantages that eliminate DHCPv6 from a list of potential
+ solutions:
+
+ 1. It requires hosts to support DHCPv6 and its extension [RFC7078].
+
+ 2. A DHCPv6 server needs to monitor network state and detect routing
+ changes.
+
+ 3. The use of policy tables requires manual configuration and might
+ be extremely complicated, especially in the case of a distributed
+ network in which a large number of remote sites are being served
+ by centralized DHCPv6 servers.
+
+ 4. Network topology/routing policy changes could trigger
+ simultaneous reconfiguration of large number of hosts, which
+ presents serious scalability issues.
+
+ The use of Router Advertisements to influence the source address
+ selection on hosts seem to be the most reliable, flexible, and
+ scalable solution. It has the following benefits:
+
+ 1. No new (non-standard) functionality needs to be implemented on
+ hosts (except for RIO support [RFC4191], which is not widely
+ implemented at the time of this writing).
+
+ 2. No changes in RA format.
+
+ 3. Routers can react to routing table changes by sending RAs, which
+ would minimize the failover time in the case of network topology
+ changes.
+
+ 4. Information required for source address selection is broadcast to
+ all affected hosts in the case of a topology change event, which
+ improves the scalability of the solution (compared to DHCPv6
+ reconfiguration or ICMPv6 error messages).
+
+ To fully benefit from the RA-based solution, first-hop routers need
+ to implement SADR, belong to the SADR domain, and be able to send
+ dedicated RAs per scoped forwarding table as discussed above,
+ reacting to network changes by sending new RAs. It should be noted
+ that the proposed solution would work even if first-hop routers are
+ not SADR-capable but still able to send individual RAs for each ISP
+ prefix and react to topology changes as discussed above (e.g., via
+ configuration knobs).
+
+ The RA-based solution relies heavily on hosts correctly implementing
+ the default address selection algorithm as defined in [RFC6724].
+ While the basic, and the most common, multihoming scenario (two or
+ more Internet uplinks, no 'walled gardens') would work for any host
+ supporting the minimal implementation of [RFC6724], more complex use
+ cases (such as 'walled garden' and other scenarios when some ISP
+ resources can only be reached from that ISP address space) require
+ that hosts support Rule 5.5 of the default address selection
+ algorithm. There is some evidence that not all host OSes have that
+ rule implemented currently. However, it should be noted that
+ [RFC8028] states that Rule 5.5 should be implemented.
+
+ The ICMPv6 Code 5 error message SHOULD be used to complement an RA-
+ based solution to signal incorrect source address selection back to
+ hosts, but it SHOULD NOT be considered as the standalone solution.
+ To prevent scenarios when hosts in multihomed environments
+ incorrectly identify on-link/off-link destinations, hosts SHOULD
+ treat ICMPv6 Redirects as discussed in [RFC8028].
+
+6.7. Solution Limitations
+
+6.7.1. Connections Preservation
+
+ The proposed solution is not designed to preserve connection state in
+ the case of an uplink failure. When all uplinks to an ISP go down,
+ all transport connections established to/from that ISP address space
+ will be interrupted (unless the transport protocol has specific
+ multihoming support). That behavior is similar to the scenario of
+ IPv4 multihoming with NAT when an uplink failure causes all
+ connections to be NATed to completely different public IPv4
+ addresses. While it does sound suboptimal, it is determined by the
+ nature of PA address space: if all uplinks to the particular ISP have
+ failed, there is no path for the ingress traffic to reach the site,
+ and the egress traffic is supposed to be dropped by the ingress
+ filters [BCP38]. The only potential way to overcome this limitation
+ would be to run BGP with all ISPs and to advertise all site prefixes
+ to all uplinks - a solution that shares all the drawbacks of using
+ the PI address space without sharing its benefits. Networks willing
+ and capable of running BGP and using PI are out of scope of this
+ document.
+
+ It should be noted that in the case of IPv4 NAT-based multihoming,
+ uplink recovery could cause connection interruptions as well (unless
+ packet forwarding is integrated with the tracking of existing NAT
+ sessions so that the egress interface for the existing sessions is
+ not changed). However, the proposed solution has the benefit of
+ preserving the existing sessions during and after the restoration of
+ the failed uplink. Unlike the uplink failure event, which causes all
+ addresses from the affected prefix to be deprecated, the recovery
+ would just add new, preferred addresses to a host without making any
+ addresses unavailable. Therefore, connections established to and
+ from those addresses do not have to be interrupted.
+
+ While it's desirable for active connections to survive ISP failover
+ events, such events affect the reachability of IP addresses assigned
+ to hosts in sites using PA address space. Unless the transport (or
+ higher-level protocols) is capable of surviving the host renumbering,
+ the active connections will be broken. The proposed solution focuses
+ on minimizing the impact of failover on new connections and on
+ multipath-aware protocols.
+
+ Another way to preserve connection state is to use multipath
+ transport as discussed in Section 8.3.
+
+6.8. Other Configuration Parameters
+
+6.8.1. DNS Configuration
+
+ In a multihomed environment, each ISP might provide their own list of
+ DNS servers. For example, in the topology shown in Figure 3, ISP-A
+ might provide H51 2001:db8:0:5555::51 as a recursive DNS server,
+ while ISP-B might provide H61 2001:db8:0:6666::61 as a recursive DNS
+ server (RDNSS). [RFC8106] defines IPv6 Router Advertisement options
+ to allow IPv6 routers to advertise a list of RDNSS addresses and a
+ DNS Search List (DNSSL) to IPv6 hosts. Using RDNSS together with
+ 'scoped' RAs as described above would allow a first-hop router (R3 in
+ Figure 3) to send DNS server addresses and search lists provided by
+ each ISP (or the corporate DNS server addresses if the enterprise is
+ running its own DNS servers. As discussed below, the DNS split-
+ horizon problem is too hard to solve without running a local DNS
+ server).
+
+ As discussed in Section 6.5.2, failure of all ISP uplinks would cause
+ deprecation of all addresses assigned to a host from the address
+ space of all ISPs. If any intra-site IPv6 connectivity is still
+ desirable (most likely to be the case for any mid/large-scale
+ network), then ULAs should be used as discussed in Section 6.5.2. In
+ such a scenario, the enterprise network should run its own recursive
+ DNS server(s) and provide its ULA addresses to hosts via RDNSS in RAs
+ sent for ULA-scoped forwarding table as described in Section 6.5.2.
+
+ There are some scenarios in which the final outcome of the name
+ resolution might be different depending on:
+
+ * which DNS server is used;
+
+ * which source address the client uses to send a DNS query to the
+ server (DNS split horizon).
+
+ There is no way currently to instruct a host to use a particular DNS
+ server from the configured servers list for resolving a particular
+ name. Therefore, it does not seem feasible to solve the problem of
+ DNS server selection on the host (it should be noted that this
+ particular issue is protocol-agnostic and happens for IPv4 as well).
+ In such a scenario, it is recommended that the enterprise run its own
+ local recursive DNS server.
+
+ To influence host source address selection for packets sent to a
+ particular DNS server, the following requirements must be met:
+
+ * The host supports RIO as defined in [RFC4191].
+
+ * The routers send RIOs for routes to DNS server addresses.
+
+ For example, if it is desirable that host H31 reaches the ISP-A DNS
+ server H51 2001:db8:0:5555::51 using its source address
+ 2001:db8:0:a010::31, then both R1 and R2 should send RIOs containing
+ the route to 2001:db8:0:5555::51 (or covering route) in their
+ 'scoped' RAs, containing LLA_A as the default router address and the
+ PIO for SLAAC prefix 2001:db8:0:a010::/64. In that case, host H31
+ (if it supports Rule 5.5) would select LLA_A as a next-hop and then
+ choose 2001:db8:0:a010::31 as the source address for packets to the
+ DNS server.
+
+ It should be noted that [RFC6106] explicitly prohibits using DNS
+ information if the RA Router Lifetime has expired:
+
+ | An RDNSS address or a DNSSL domain name MUST be used only as long
+ | as both the RA router Lifetime (advertised by a Router
+ | Advertisement message) and the corresponding option Lifetime have
+ | not expired.
+
+ Therefore, hosts might ignore RDNSS information provided in ULA-
+ scoped RAs, as those RAs would have Router Lifetime values set to
+ zero. However, [RFC8106], which obsoletes RFC 6106, has removed that
+ requirement.
+
+ As discussed above, the DNS split-horizon problem and the selection
+ of the correct DNS server in a multihomed environment are not easy
+ problems to solve. The proper solution would require hosts to
+ support the concept of multiple provisioning domains (PvD, a set of
+ configuration information associated with a network, [RFC7556]).
+
+7. Deployment Considerations
+
+ The solution described in this document requires certain mechanisms
+ to be supported by the network infrastructure and hosts. It requires
+ some routers in the enterprise site to support some form of SADR. It
+ also requires hosts to be able to learn when the uplink to an ISP
+ changes its state so that the hosts can use appropriate source
+ addresses. Ongoing work to create mechanisms to accomplish this are
+ discussed in this document, but they are still works in progress.
+
+7.1. Deploying SADR Domain
+
+ The proposed solution does not prescribe particular details regarding
+ deploying an SADR domain within a multihomed enterprise network.
+ However the following guidelines could be applied:
+
+ * The SADR domain is usually limited by the multihomed site border.
+
+ * The minimal deployable scenario requires enabling SADR on all SERs
+ and including them into a single SADR domain.
+
+ * As discussed in Section 4.2, extending the connected SADR domain
+ beyond the SERs to the first-hop routers can produce more
+ efficient forwarding paths and allow the network to fully benefit
+ from SADR. It would also simplify the operation of the SADR
+ domain.
+
+ * During the incremental SADR domain expansion from the SERs down
+ towards first-hop routers, it's important to ensure that, at any
+ given moment, all SADR-capable routers within the domain are
+ logically connected (see Section 5).
+
+7.2. Hosts-Related Considerations
+
+ The solution discussed in this document relies on the default address
+ selection algorithm, Rule 5.5 [RFC6724]. While [RFC6724] considers
+ this rule as optional, the more recent [RFC8028] states that "A host
+ SHOULD select default routers for each prefix it is assigned an
+ address in." It also recommends that hosts should implement Rule
+ 5.5. of [RFC6724]. Therefore, while hosts compliant with RFC 8028
+ already have a mechanism to learn about state changes to ISP uplinks
+ and to select the source addresses accordingly, many hosts do not
+ support such a mechanism yet.
+
+ It should be noted that a multihomed enterprise network utilizing
+ multiple ISP prefixes can be considered as a typical multiple
+ provisioning domain (mPvD) scenario, as described in [RFC7556]. This
+ document defines a way for the network to provide the PvD information
+ to hosts indirectly, using the existing mechanisms. At the same
+ time, [PROV-DOMAINS] takes one step further and describes a
+ comprehensive mechanism for hosts to discover the whole set of
+ configuration information associated with different PvDs/ISPs.
+ [PROV-DOMAINS] complements this document in terms of enabling hosts
+ to learn about ISP uplink states and to select the corresponding
+ source addresses.
+
+8. Other Solutions
+
+8.1. Shim6
+
+ The Shim6 protocol [RFC5533], specified by the Shim6 working group,
+ allows a host at a multihomed site to communicate with an external
+ host and to exchange information about possible source and
+ destination address pairs that they can use to communicate. The
+ Shim6 working group also specified the REAchability Protocol (REAP)
+ [RFC5534] to detect failures in the path between working address
+ pairs and to find new working address pairs. A fundamental
+ requirement for Shim6 is that both internal and external hosts need
+ to support Shim6. That is, both the host internal to the multihomed
+ site and the host external to the multihomed site need to support
+ Shim6 in order for there to be any benefit for the internal host to
+ run Shim6. The Shim6 protocol specification was published in 2009,
+ but it has not been widely implemented. Therefore Shim6 is not
+ considered as a viable solution for enterprise multihoming.
+
+8.2. IPv6-to-IPv6 Network Prefix Translation
+
+ IPv6-to-IPv6 Network Prefix Translation (NPTv6) [RFC6296] is not the
+ focus of this document. NPTv6 suffers from the same fundamental
+ issue as any other approaches to address translation: it breaks end-
+ to-end connectivity. Therefore NPTv6 is not considered as a
+ desirable solution, and this document intentionally focuses on
+ solving the enterprise multihoming problem without any form of
+ address translation.
+
+ With increasing interest and ongoing work in bringing path awareness
+ to transport- and application-layer protocols, hosts might be able to
+ determine the properties of the various network paths and choose
+ among the paths that are available to them. As selecting the correct
+ source address is one of the possible mechanisms that path-aware
+ hosts may utilize, address translation negatively affects hosts'
+ path-awareness, which makes NTPv6 an even more undesirable solution.
+
+8.3. Multipath Transport
+
+ Using multipath transport (such as Multipath TCP (MPTCP) [RFC6824] or
+ multipath capabilities in QUIC) might solve the problems discussed in
+ Section 6 since a multipath transport would allow hosts to use
+ multiple source addresses for a single connection and to switch
+ between those source addresses when a particular address becomes
+ unavailable or a new address is assigned to the host interface.
+ Therefore, if all hosts in the enterprise network use only multipath
+ transport for all connections, the signaling solution described in
+ Section 6 might not be needed (it should be noted that Source Address
+ Dependent Routing would still be required to deliver packets to the
+ correct uplinks). At the time this document was written, multipath
+ transport alone could not be considered a solution for the problem of
+ selecting the source address in a multihomed environment. There are
+ a significant number of hosts that do not use multipath transport
+ currently, and it seems unlikely that the situation will change in
+ the foreseeable future (even if new releases of operating systems
+ support multipath protocols, there will be a long tail of legacy
+ hosts). The solution for enterprise multihoming needs to work for
+ the least common denominator: hosts without multipath transport
+ support. In addition, not all protocols are using multipath
+ transport. While multipath transport would complement the solution
+ described in Section 6, it could not be considered as a sole solution
+ to the problem of source address selection in multihomed
+ environments.
+
+ On the other hand, PA-based multihoming could provide additional
+ benefits to multipath protocols, should those protocols be deployed
+ in the network. Multipath protocols could leverage source address
+ selection to achieve maximum path diversity (and potentially improved
+ performance).
+
+ Therefore, the deployment of multipath protocols should not be
+ considered as an alternative to the approach proposed in this
+ document. Instead, both solutions complement each other, so
+ deploying multipath protocols in a PA-based multihomed network proves
+ mutually beneficial.
+
+9. IANA Considerations
+
+ This document has no IANA actions.
+
+10. Security Considerations
+
+ Section 6.2.3 discusses a mechanism for controlling source address
+ selection on hosts using ICMPv6 messages. Using ICMPv6 to influence
+ source address selection allows an attacker to exhaust the list of
+ candidate source addresses on the host by sending spoofed ICMPv6 Code
+ 5 for all prefixes known on the network (therefore preventing a
+ victim from establishing communication with the destination host).
+ Another possible attack vector is using ICMPv6 Destination
+ Unreachable Messages with Code 5 to steer the egress traffic towards
+ the particular ISP, so the attacker can benefit from their ability
+ doing traffic sniffing/interception in that ISP network.
+
+ To prevent those attacks, hosts SHOULD verify that the original
+ packet header included in the ICMPv6 error message was actually sent
+ by the host (to ensure that the ICMPv6 message was triggered by a
+ packet sent by the host).
+
+ As ICMPv6 Destination Unreachable Messages with Code 5 could be
+ originated by any SADR-capable router within the domain (or even come
+ from the Internet), the Generalized TTL Security Mechanism (GTSM)
+ [RFC5082] cannot be applied. Filtering such ICMPv6 messages at the
+ site border cannot be recommended as it would break the legitimate
+ end-to-end error signaling mechanism for which ICMPv6 was designed.
+
+ The security considerations of using stateless address
+ autoconfiguration are discussed in [RFC4862].
+
+11. References
+
+11.1. Normative References
+
+ [BCP38] Ferguson, P. and D. Senie, "Network Ingress Filtering:
+ Defeating Denial of Service Attacks which employ IP Source
+ Address Spoofing", BCP 38, RFC 2827, DOI 10.17487/RFC2827,
+ May 2000, <https://www.rfc-editor.org/info/rfc2827>.
+
+ [RFC1918] Rekhter, Y., Moskowitz, B., Karrenberg, D., de Groot, G.
+ J., and E. Lear, "Address Allocation for Private
+ Internets", BCP 5, RFC 1918, DOI 10.17487/RFC1918,
+ February 1996, <https://www.rfc-editor.org/info/rfc1918>.
+
+ [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>.
+
+ [RFC4191] Draves, R. and D. Thaler, "Default Router Preferences and
+ More-Specific Routes", RFC 4191, DOI 10.17487/RFC4191,
+ November 2005, <https://www.rfc-editor.org/info/rfc4191>.
+
+ [RFC4193] Hinden, R. and B. Haberman, "Unique Local IPv6 Unicast
+ Addresses", RFC 4193, DOI 10.17487/RFC4193, October 2005,
+ <https://www.rfc-editor.org/info/rfc4193>.
+
+ [RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing
+ Architecture", RFC 4291, DOI 10.17487/RFC4291, February
+ 2006, <https://www.rfc-editor.org/info/rfc4291>.
+
+ [RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet
+ Control Message Protocol (ICMPv6) for the Internet
+ Protocol Version 6 (IPv6) Specification", STD 89,
+ RFC 4443, DOI 10.17487/RFC4443, March 2006,
+ <https://www.rfc-editor.org/info/rfc4443>.
+
+ [RFC4861] Narten, T., Nordmark, E., Simpson, W., and H. Soliman,
+ "Neighbor Discovery for IP version 6 (IPv6)", RFC 4861,
+ DOI 10.17487/RFC4861, September 2007,
+ <https://www.rfc-editor.org/info/rfc4861>.
+
+ [RFC4862] Thomson, S., Narten, T., and T. Jinmei, "IPv6 Stateless
+ Address Autoconfiguration", RFC 4862,
+ DOI 10.17487/RFC4862, September 2007,
+ <https://www.rfc-editor.org/info/rfc4862>.
+
+ [RFC6106] Jeong, J., Park, S., Beloeil, L., and S. Madanapalli,
+ "IPv6 Router Advertisement Options for DNS Configuration",
+ RFC 6106, DOI 10.17487/RFC6106, November 2010,
+ <https://www.rfc-editor.org/info/rfc6106>.
+
+ [RFC6296] Wasserman, M. and F. Baker, "IPv6-to-IPv6 Network Prefix
+ Translation", RFC 6296, DOI 10.17487/RFC6296, June 2011,
+ <https://www.rfc-editor.org/info/rfc6296>.
+
+ [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,
+ <https://www.rfc-editor.org/info/rfc6724>.
+
+ [RFC7078] Matsumoto, A., Fujisaki, T., and T. Chown, "Distributing
+ Address Selection Policy Using DHCPv6", RFC 7078,
+ DOI 10.17487/RFC7078, January 2014,
+ <https://www.rfc-editor.org/info/rfc7078>.
+
+ [RFC7556] Anipko, D., Ed., "Multiple Provisioning Domain
+ Architecture", RFC 7556, DOI 10.17487/RFC7556, June 2015,
+ <https://www.rfc-editor.org/info/rfc7556>.
+
+ [RFC8028] Baker, F. and B. Carpenter, "First-Hop Router Selection by
+ Hosts in a Multi-Prefix Network", RFC 8028,
+ DOI 10.17487/RFC8028, November 2016,
+ <https://www.rfc-editor.org/info/rfc8028>.
+
+ [RFC8106] Jeong, J., Park, S., Beloeil, L., and S. Madanapalli,
+ "IPv6 Router Advertisement Options for DNS Configuration",
+ RFC 8106, DOI 10.17487/RFC8106, March 2017,
+ <https://www.rfc-editor.org/info/rfc8106>.
+
+ [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>.
+
+ [RFC8415] Mrugalski, T., Siodelski, M., Volz, B., Yourtchenko, A.,
+ Richardson, M., Jiang, S., Lemon, T., and T. Winters,
+ "Dynamic Host Configuration Protocol for IPv6 (DHCPv6)",
+ RFC 8415, DOI 10.17487/RFC8415, November 2018,
+ <https://www.rfc-editor.org/info/rfc8415>.
+
+11.2. Informative References
+
+ [DST-SRC-RTG]
+ Lamparter, D. and A. Smirnov, "Destination/Source
+ Routing", Work in Progress, Internet-Draft, draft-ietf-
+ rtgwg-dst-src-routing-07, 10 March 2019,
+ <https://tools.ietf.org/html/draft-ietf-rtgwg-dst-src-
+ routing-07>.
+
+ [PROV-DOMAINS]
+ Pfister, P., Vyncke, E., Pauly, T., Schinazi, D., and W.
+ Shao, "Discovering Provisioning Domain Names and Data",
+ Work in Progress, Internet-Draft, draft-ietf-intarea-
+ provisioning-domains-09, 6 December 2019,
+ <https://tools.ietf.org/html/draft-ietf-intarea-
+ provisioning-domains-09>.
+
+ [RFC2663] Srisuresh, P. and M. Holdrege, "IP Network Address
+ Translator (NAT) Terminology and Considerations",
+ RFC 2663, DOI 10.17487/RFC2663, August 1999,
+ <https://www.rfc-editor.org/info/rfc2663>.
+
+ [RFC3704] Baker, F. and P. Savola, "Ingress Filtering for Multihomed
+ Networks", BCP 84, RFC 3704, DOI 10.17487/RFC3704, March
+ 2004, <https://www.rfc-editor.org/info/rfc3704>.
+
+ [RFC4941] Narten, T., Draves, R., and S. Krishnan, "Privacy
+ Extensions for Stateless Address Autoconfiguration in
+ IPv6", RFC 4941, DOI 10.17487/RFC4941, September 2007,
+ <https://www.rfc-editor.org/info/rfc4941>.
+
+ [RFC5082] Gill, V., Heasley, J., Meyer, D., Savola, P., Ed., and C.
+ Pignataro, "The Generalized TTL Security Mechanism
+ (GTSM)", RFC 5082, DOI 10.17487/RFC5082, October 2007,
+ <https://www.rfc-editor.org/info/rfc5082>.
+
+ [RFC5533] Nordmark, E. and M. Bagnulo, "Shim6: Level 3 Multihoming
+ Shim Protocol for IPv6", RFC 5533, DOI 10.17487/RFC5533,
+ June 2009, <https://www.rfc-editor.org/info/rfc5533>.
+
+ [RFC5534] Arkko, J. and I. van Beijnum, "Failure Detection and
+ Locator Pair Exploration Protocol for IPv6 Multihoming",
+ RFC 5534, DOI 10.17487/RFC5534, June 2009,
+ <https://www.rfc-editor.org/info/rfc5534>.
+
+ [RFC6824] Ford, A., Raiciu, C., Handley, M., and O. Bonaventure,
+ "TCP Extensions for Multipath Operation with Multiple
+ Addresses", RFC 6824, DOI 10.17487/RFC6824, January 2013,
+ <https://www.rfc-editor.org/info/rfc6824>.
+
+ [RFC7676] Pignataro, C., Bonica, R., and S. Krishnan, "IPv6 Support
+ for Generic Routing Encapsulation (GRE)", RFC 7676,
+ DOI 10.17487/RFC7676, October 2015,
+ <https://www.rfc-editor.org/info/rfc7676>.
+
+ [RFC8425] Troan, O., "IANA Considerations for IPv6 Neighbor
+ Discovery Prefix Information Option Flags", RFC 8425,
+ DOI 10.17487/RFC8425, July 2018,
+ <https://www.rfc-editor.org/info/rfc8425>.
+
+ [RFC8504] Chown, T., Loughney, J., and T. Winters, "IPv6 Node
+ Requirements", BCP 220, RFC 8504, DOI 10.17487/RFC8504,
+ January 2019, <https://www.rfc-editor.org/info/rfc8504>.
+
+ [SADR-RA] Pfister, P., "Source Address Dependent Route Information
+ Option for Router Advertisements", Work in Progress,
+ Internet-Draft, draft-pfister-6man-sadr-ra-01, 22 June
+ 2015, <https://tools.ietf.org/html/draft-pfister-6man-
+ sadr-ra-01>.
+
+Acknowledgements
+
+ The original outline was suggested by Ole Trøan.
+
+ The authors would like to thank the following people (in alphabetical
+ order) for their review and feedback: Olivier Bonaventure, Deborah
+ Brungard, Brian E. Carpenter, Lorenzo Colitti, Roman Danyliw,
+ Benjamin Kaduk, Suresh Krishnan, Mirja Kühlewind, David Lamparter,
+ Nicolai Leymann, Acee Lindem, Philip Matthews, Robert Raszuk, Pete
+ Resnick, Alvaro Retana, Dave Thaler, Michael Tüxen, Martin Vigoureux,
+ Éric Vyncke, Magnus Westerlund.
+
+Authors' Addresses
+
+ Fred Baker
+ Santa Barbara, California 93117
+ United States of America
+
+ Email: FredBaker.IETF@gmail.com
+
+
+ Chris Bowers
+ Juniper Networks
+ Sunnyvale, California 94089
+ United States of America
+
+ Email: cbowers@juniper.net
+
+
+ Jen Linkova
+ Google
+ 1 Darling Island Rd
+ Pyrmont NSW 2009
+ Australia
+
+ Email: furry@google.com