summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc8678.txt
blob: 713e7614746a2d5da1b394333aa40f7b27ff5549 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
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