summaryrefslogtreecommitdiff
path: root/doc/draft/draft-ietf-ipngwg-default-addr-select-00.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/draft/draft-ietf-ipngwg-default-addr-select-00.txt')
-rw-r--r--doc/draft/draft-ietf-ipngwg-default-addr-select-00.txt587
1 files changed, 0 insertions, 587 deletions
diff --git a/doc/draft/draft-ietf-ipngwg-default-addr-select-00.txt b/doc/draft/draft-ietf-ipngwg-default-addr-select-00.txt
deleted file mode 100644
index f62bd8d5..00000000
--- a/doc/draft/draft-ietf-ipngwg-default-addr-select-00.txt
+++ /dev/null
@@ -1,587 +0,0 @@
-IPng Working Group R. Draves
-Internet Draft Microsoft Research
-Document: draft-ietf-ipngwg-default-addr-select-00.txt October 22, 1999
-Category: Standards Track
-
- Default Address Selection for IPv6
-
-Status of this Memo
-
- This document is an Internet-Draft and is in full conformance with
- all provisions of Section 10 of RFC 2026 [1].
-
- Internet-Drafts are working documents of the Internet Engineering
- Task Force (IETF), its areas, and its working groups. Note that
- other groups may also distribute working documents as Internet-
- Drafts.
-
- Internet-Drafts are draft documents valid for a maximum of six
- months and may be updated, replaced, or obsoleted by other documents
- at any time. It is inappropriate to use Internet-Drafts as reference
- material or to cite them other than as "work in progress."
-
- The list of current Internet-Drafts can be accessed at
- http://www.ietf.org/ietf/1id-abstracts.txt.
-
- The list of Internet-Draft Shadow Directories can be accessed at
- http://www.ietf.org/shadow.html.
-
-Abstract
-
- This document describes two algorithms, for destination address
- ordering and for source address selection. The algorithms specify
- default behavior for all IPv6 implementations. They do not override
- choices made by applications or upper-layer protocols, nor do they
- preclude the development of more advanced mechanisms for address
- selection. The two algorithms share a common framework, including an
- optional mechanism for allowing administrators to provide policy
- that can override the default behavior.
-
-1. Introduction
-
- The IPv6 addressing architecture [2] allows multiple unicast
- addresses to be assigned to interfaces. These addresses may have
- different reachability scopes (link-local, site-local, or global).
- These addresses may be "preferred" or "deprecated" [3]. In addition,
- multi-homing situations will result in more addresses per node. For
- example, a node may have multiple interfaces, some of them tunnels
- or virtual interfaces, or a site may have multiple ISP attachments.
-
- The end result is that IPv6 implementations will very often be faced
- with multiple possible source and destination addresses when
- initiating communication. It is desirable to have simple default
- algorithms, common across all implementations, for selecting source
-
-Draves Standards Track - Expires May 2000 1
-
-Default Address Selection for IPv6 October 22, 1999
-
-
- and destination addresses so that developers and administrators can
- reason about and predict the behavior of their systems.
-
- This document specifies source address selection and destination
- address selection separately, but using a common framework so that
- together the two algorithms yield useful results. The algorithms
- attempt to choose source and destination addresses of appropriate
- scope and configuration status (preferred or deprecated).
- Furthermore, this document suggests a preferred method, longest
- matching prefix, for choosing among otherwise equivalent addresses
- in the absence of better information.
-
- The framework also has policy hooks to allow administrative override
- of the default behavior. For example, using these hooks an
- administrator can specify a preferred source prefix for use with a
- destination prefix, or prefer destination addresses with one prefix
- over addresses with another prefix. These hooks give an
- administrator flexibility in dealing with some multi-homing and
- transition scenarios, but they are certainly not a panacea.
-
- The rules specified in this document MUST NOT be construed to
- override an application or upper-layer's explicit choice of
- destination or source address.
-
-1.1. Conventions used in this document
-
- The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
- "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in
- this document are to be interpreted as described in RFC-2119 [4].
-
-2. Framework
-
- Our framework for address selection derives from the most common
- implementation architecture, which separates the choice of
- destination address from the choice of source address. Consequently,
- the framework specifies two separate algorithms for these tasks. The
- algorithms are designed to work well together and they share a
- mechanism for administrative policy override.
-
- In this implementation architecture, applications use APIs [5] like
- getipnodebyname() and getaddrinfo() that return a list of addresses
- to the application. The application then passes a destination
- address to the IPv6 layer with connect() or sendto(). The
- application might just use the first address in the list, or it
- might loop over the list of addresses to find a working address. In
- any case, the IPv6 network layer is never in a position where it
- needs to choose a destination address from several alternatives. The
- application might also specify a source address with bind(), but
- often the source address is left unspecified. Therefore the IPv6
- layer does often choose a source address from several alternatives.
-
- As a consequence, we intend that implementations of
- getipnodebyname() and getaddrinfo() will use the destination address
-
-Draves Standards Track - Expires May 2000 2
-
-Default Address Selection for IPv6 October 22, 1999
-
-
- ordering algorithm specified here to sort the list of addresses that
- they return. Separately, the IPv6 network layer will use the source
- address selection algorithm when an application or upper-layer has
- not specified a source address.
-
- The algorithms use several criteria in making their decisions. The
- combined effect is to prefer destination/source address pairs for
- which the two addresses are of equal scope or type, prefer smaller
- scopes over larger scopes for the destination address, prefer non-
- deprecated source addresses of sufficient scope to reach the
- destination, avoid the use of transitional addresses when native
- addresses are available, and all else being equal prefer address
- pairs having the longest possible common prefix.
-
- The framework optionally allows for the possibility of
- administrative configuration of policy that can override the default
- behavior of the algorithms. The policy override takes the form of a
- configurable table that provides precedence values and preferred
- source prefixes for destination prefixes. If an implementation is
- not configurable, or if an implementation has not been configured,
- then the default policy table specified in this document MUST be
- used.
-
-2.1. Scope Comparisons
-
- Multicast destination addresses have a 4-bit scope field that
- controls the propagation of the multicast packet. The IPv6
- addressing architecture defines scope field values for node-local
- (0x1), link-local (0x2), site-local (0x5), organization-local (0x8),
- and global (0xE) scopes.
-
- Application of the address selection algorithms in the presence of
- multicast destination addresses requires the comparison of a unicast
- address scope with a multicast address scope. We map unicast link-
- local to multicast link-local, unicast site-local to multicast site-
- local, and unicast global scope to multicast global scope. For
- example, unicast site-local is equal to multicast site-local, which
- is smaller than multicast organization-local, which is smaller than
- unicast global, which is equal to multicast global.
-
- We write Scope(A) to mean the scope of address A. For example, if A
- is a link-local unicast address and B is a site-local multicast
- address, then Scope(A) < Scope(B).
-
- This mapping implicitly conflates unicast site boundaries and
- multicast site boundaries.
-
-2.2. IPv4-Compatible Addresses and Other Format Prefixes
-
- For the purposes of this document, IPv4-compatible addresses have
- global scope and "preferred" configuration status.
-
-
-
-Draves Standards Track - Expires May 2000 3
-
-Default Address Selection for IPv6 October 22, 1999
-
-
- Similarly, NSAP addresses, IPX addresses, or addresses with as-yet-
- undefined format prefixes should be treated as having global scope
- and "preferred" configuration status. Later standards may supercede
- this treatment.
-
- The loopback address should be treated as having link-local scope
- and "preferred" configuration status.
-
-2.3. Policy Table
-
- The policy table is a longest-matching-prefix lookup table, like a
- routing table. Given an address A, a lookup in the policy table
- produces three values: a precedence value Precedence(A), a
- classification or label Label(A), and a second label
- MatchSrcLabel(A).
-
- The precedence value Precedence(A) is used for sorting destination
- addresses. If Precedence(A) > Precedence(B), we say that address A
- has higher precedence than address B, meaning that our algorithm
- will prefer to sort destination address A before destination address
- B.
-
- The labels Label(A) and MatchSrcLabel(A) allow for policies that
- prefer a particular source address prefix for use with a destination
- address prefix. The algorithms prefer to use a source address S with
- a destination address D if Label(S) = MatchSrcLabel(D).
-
- IPv6 implementations SHOULD support configurable address selection
- via a mechanism at least as powerful as the policy tables defined
- here. If an implementation is not configurable or has not been
- configured, then it MUST operate according to the algorithms
- specified here in conjunction with the following default policy
- table:
-
- Prefix Precedence Label MatchSrcLabel
- fe80::/10 40 1 1
- fec0::/10 30 2 2
- ::/0 20 3 3
- 2002::/16 10 4 4
- ::/96 10 5 5
-
- One effect of the default policy table is to prefer using native
- source addresses with native destination addresses, 6to4 source
- addresses with 6to4 destination addresses, and v4-compatible source
- addresses with v4-compatible destination addresses. Another effect
- of the default policy table is to prefer communication using native
- addresses to communication using either 6to4 or v4-compatible
- addresses, but not to express a preference for 6to4 addresses over
- v4-compatible addresses or vice-versa.
-
-
-
-
-
-Draves Standards Track - Expires May 2000 4
-
-Default Address Selection for IPv6 October 22, 1999
-
-
-2.4. Candidate Source Addresses
-
- Both the destination address ordering algorithm and the source
- address selection algorithm use the concept of a "candidate set" of
- potential source addresses for a given destination address.
-
- We write CandidateSrc(A) to denote the candidate set for the address
- A. In some cases the destination address A may be qualified with a
- scope-id or other information that will constrain the candidate set.
- We write PreferSrc(A) to denote the subset of preferred (non-
- deprecated) addresses in CandidateSrc(A) We write MatchSrc(A) to
- denote the subset of addresses S in PreferSrc(A) for which Label(S)
- = MatchSrcLabel(A).
-
- The destination address ordering algorithm and the source address
- selection algorithm specify somewhat different definitions for
- CandidateSrc(A). This is because the two algorithms operate in
- different environments. The source address selection algorithm
- assumes that an outgoing interface for a packet has already been
- selected, while the destination address ordering algorithm does not
- assume that knowledge. Therefore the destination address ordering
- algorithm uses a broader or more-inclusive definition of
- CandidateSrc(A).
-
- In any case, anycast addresses, multicast addresses, and the
- unspecified address MUST NOT be included in a candidate set.
-
-2.5. Common Prefix Length
-
- We define the common prefix length CommonPrefixLen(A, B) of two
- addresses A and B as the length of the longest prefix that the two
- addresses have in common. It ranges from 0 to 128.
-
- We define the maximum common prefix length MaxCommonPrefixLen(A, X)
- of an address A and a non-empty set of addresses X as the maximum of
- CommonPrefixLen(A, B) for addresses B in the set X.
-
-3. Destination Address Ordering
-
- The destination address ordering algorithm takes a list of
- destination addresses and sorts the addresses to produce a new list.
- It is specified here in terms of the pair-wise comparison of
- addresses DA and DB, where DA appears before DB in the original
- list.
-
- The pair-wise comparison consists of four rules, which MUST be
- applied in order. If a rule determines a result, then the remaining
- rules are not relevant and MUST be ignored. Subsequent rules act as
- tie-breakers for earlier rules.
-
- Rule 1: If MatchSrc(DA) is non-empty and MatchSrc(DB) is empty, then
- sort DA before DB. Similarly, if MatchSrc(DA) is empty and
- MatchSrc(DB) is non-empty, then sort DB before DA.
-
-Draves Standards Track - Expires May 2000 5
-
-Default Address Selection for IPv6 October 22, 1999
-
-
- Rule 2: If Precedence(A) > Precedence(B), then sort DA before DB.
- Similarly, if Precedence(B) > Precedence(A), then sort DB before DA.
-
- Rule 3: If MatchSrc(DA) and MatchSrc(DB) are both non-empty. If
- MaxCommonPrefixLen(DA, MatchSrc(DA)) > MaxCommonPrefixLen(DB,
- MatchSrc(DB)), then sort DA before DB. Similarly, if
- MaxCommonPrefixLen(DB, MatchSrc(DB)) > MaxCommonPrefixLen(DA,
- MatchSrc(DA)), then sort DB before DA.
-
- Rule 4: Sort DA before DB.
-
- The third and fourth rules MAY be superceded if the implementation
- has other means of sorting destination addresses. For example, if
- the implementation somehow knows which destination addresses will
- result in the "best" communications performance.
-
-3.1. Candidate Source Addresses
-
- For the purposes of destination address ordering, the candidate set
- of source addresses CandidateSrc(D) for a destination address D
- SHOULD contain all and only the unicast addresses assigned to
- interfaces that might be used to send to the destination D.
-
- For example, if the address D is a link-local unicast address that
- is qualified with a scope-id value specifying a particular
- interface, then CandidateSrc(D) SHOULD contain all and only the
- unicast addresses assigned to that interface.
-
- For example, if the address D is a global scope unicast address,
- then CandidateSrc(D) MAY contain every unicast address assigned to
- all interfaces. However if the implementation wishes to consult a
- routing table and determine a likely outgoing interface, then
- CandidateSrc(D) MAY contain only unicast addresses assigned to that
- outgoing interface.
-
-4. Source Address Selection
-
- The source address selection algorithm chooses a source address for
- use with a destination address D. It is specified here in terms of
- the pair-wise comparison of addresses SA and SB. The pair-wise
- comparison can be used to select an address from the set
- CandidateSrc(D).
-
- The pair-wise comparison consists of six rules, which MUST be
- applied in order. If a rule chooses an address, then the remaining
- rules are not relevant and MUST be ignored. Subsequent rules act as
- tie-breakers for earlier rules. If the six rules fail to choose an
- address, some unspecified tie-breaker MUST be used.
-
- Rule 1: If SA is in MatchSrc(D) and SB is not, then choose SA.
- Similarly, if SB is in MatchSrc(D) and SA is not, then choose SB.
-
-
-
-Draves Standards Track - Expires May 2000 6
-
-Default Address Selection for IPv6 October 22, 1999
-
-
- Rule 2: If SA is equal to D, then choose SA. Similarly, if SB is
- equal to D, then choose SB.
-
- Rule 3a: If Scope(SA) < Scope(SB). If Scope(SA) < Scope(D), then
- choose SB. Otherwise, if one of the source addresses is "preferred"
- and one of them is "deprecated", then choose the "preferred"
- address. Otherwise, choose SA.
-
- Rule 3b: Similarly, if Scope(SB) < Scope(SA). If Scope(SB) <
- Scope(D), then choose SA. Otherwise, if one of the source addresses
- is "preferred" and one of them is "deprecated", then choose the
- "preferred" address. Otherwise, choose SB.
-
- Rule 4: The addresses SA and SB have the same scope. If one of the
- source addresses is "preferred" and one of them is "deprecated", an
- implementation MUST choose the one that is preferred.
-
- Rule 5: If Label(SA) = MatchSrcLabel(D) and Label(SB) <>
- MatchSrcLabel(D), then choose SA. Similarly, if Label(SA) <>
- MatchSrcLabel(D) and Label(SB) = MatchSrcLabel(D), then choose SB.
- (Note that this rule will apply only when both SA and SB are
- deprecated.)
-
- Rule 6: If CommonPrefixLen(SA, D) > CommonPrefixLen(SB, D), then
- choose SA. Similarly, if CommonPrefixLen(SB, D) >
- CommonPrefixLen(SA, D), then choose SB.
-
- The sixth rule MAY be superceded if the implementation has other
- means of choosing among source addresses. For example, if the
- implementation somehow knows which source address will result in the
- "best" communications performance.
-
-4.1. Candidate Source Addresses
-
- For the purposes of source address selection, the candidate set of
- source addresses CandidateSrc(D) for a destination address D MUST
- contain all and only the unicast addresses assigned to the interface
- that will be used to send to the destination D.
-
-5. Interactions with Routing
-
- All IPv6 nodes, including both hosts and routers, MUST conform to
- this specification.
-
- This specification of source address selection implies that routing
- (more precisely, selecting an outgoing interface on a node with
- multiple interfaces) is done before source address selection.
- However, implementations MAY use source address considerations as a
- tiebreaker when choosing among otherwise equivalent routes.
-
- For example, suppose a node has interfaces on two different links,
- with both links having a working default router. One of the
- interfaces has a preferred global address and the other interface
-
-Draves Standards Track - Expires May 2000 7
-
-Default Address Selection for IPv6 October 22, 1999
-
-
- only has a deprecated global address. When sending to a global
- destination address, if there's no routing reason to prefer one
- interface over the other, then an implementation MAY preferentially
- choose the outgoing interface that will allow it to use the
- preferred global source address.
-
-6. Interactions with Mobility
-
- TBD
-
-7. Implementation Considerations
-
- The destination address ordering algorithm needs information about
- potential source addresses. One possible implementation strategy is
- for getipnodebyname() and getaddrinfo() to call down to the IPv6
- network layer with a list of destination addresses, sort the list in
- the network layer with full current knowledge of available source
- addresses, and return the sorted list to getipnodebyname() or
- getaddrinfo(). This is simple but it introduces overhead.
-
- Another implementation strategy is to call down to the network layer
- to retrieve source address information and then sort the list of
- addresses directly in the context of getipnodebyname() or
- getaddrinfo(). To reduce overhead in this approach, the source
- address information SHOULD be cached, amortizing the overhead of
- retrieving it across multiple calls to getipnodebyname() and
- getaddrinfo(). If an implementation uses cached and possibly stale
- source address information in its implementation of destination
- address ordering, then it MUST ensure that the source address
- information is no more than one second out of date.
-
-8. Security Considerations
-
- This document has no direct impact on Internet infrastructure
- security.
-
-References
-
- 1 S. Bradner, "The Internet Standards Process -- Revision 3", BCP
- 9, RFC 2026, October 1996.
-
- 2 R. Hinden, S. Deering, "IP Version 6 Addressing Architecture",
- RFC 2373, July 1998.
-
- 3 S. Thompson, T. Narten, "IPv6 Stateless Address
- Autoconfiguration", RFC 2462 , December 1998.
-
- 4 S. Bradner, "Key words for use in RFCs to Indicate Requirement
- Levels", BCP 14, RFC 2119, March 1997.
-
- 5 R. Gilligan, S. Thomson, J. Bound, W. Stevens, "Basic Socket
- Interface Extensions for IPv6", RFC 2553, March 1999.
-
-
-Draves Standards Track - Expires May 2000 8
-
-
-
-Acknowledgments
-
- The author would like to acknowledge the contributions of the IPng
- Working Group.
-
-Author's Address
-
- Richard Draves
- Microsoft Research
- One Microsoft Way
- Redmond, WA 98052
- Email: richdr@microsoft.com
-
-Revision History
-
-Changes from draft-draves-ipngw-simple-srcaddr-01
-
- Added framework discussion.
-
- Added algorithm for destination address ordering.
-
- Added mechanism to allow the specification of administrative policy
- that can override the default behavior.
-
- Added section on routing interactions and TBD section on mobility
- interactions.
-
- Changed the candidate set definition for source address selection,
- so that only addresses assigned to the outgoing interface are
- allowed.
-
- Changed the loopback address treatment to link-local scope.
-
-Changes from draft-draves-ipngw-simple-srcaddr-00
-
- Minor wording changes because DHCPv6 also supports "preferred" and
- "deprecated" addresses.
-
- Specified treatment of other format prefixes; now they are
- considered global scope, "preferred" addresses.
-
- Reiterated that anycast and multicast addresses are not allowed as
- source addresses.
-
- Recommended that source addresses be taken from the outgoing
- interface. Required this for multicast destinations. Added analogous
- requirements for link-local and site-local destinations.
-
- Specified treatment of the loopback address.
-
- Changed the second selection rule so that if both candidate source
- addresses have scope greater or equal than the destination address
- and only of them is preferred, the preferred address is chosen.
-
-
-Draves Standards Track - Expires May 2000 9
-
-Default Address Selection for IPv6 October 22, 1999
-
-
- Full Copyright Statement
-
- Copyright (C) The Internet Society (1999). All Rights Reserved.
-
- This document and translations of it may be copied and furnished to
- others, and derivative works that comment on or otherwise explain it
- or assist in its implementation may be prepared, copied, published
- and distributed, in whole or in part, without restriction of any
- kind, provided that the above copyright notice and this paragraph
- are included on all such copies and derivative works. However, this
- document itself may not be modified in any way, such as by removing
- the copyright notice or references to the Internet Society or other
- Internet organizations, except as needed for the purpose of
- developing Internet standards in which case the procedures for
- copyrights defined in the Internet Standards process must be
- followed, or as required to translate it into languages other than
- English.
-
- The limited permissions granted above are perpetual and will not be
- revoked by the Internet Society or its successors or assigns.
-
- This document and the information contained herein is provided on an
- "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
- TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
- BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
- HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
- MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Draves Standards Track - Expires May 2000 10
-