draft-ietf-ipv6-router-selection-01.txt | draft-ietf-ipv6-router-selection-02.txt | |||
---|---|---|---|---|
IPng Working Group Richard Draves | IPng Working Group R. Draves | |||
Internet Draft Microsoft Research | Internet Draft Microsoft Research | |||
Document: draft-ietf-ipv6-router-selection-01.txt March 1, 2002 | Document: draft-ietf-ipv6-router-selection-02.txt R. Hinden | |||
Nokia | ||||
June 10, 2002 | ||||
Default Router Preferences and More-Specific Routes | Default Router Preferences, More-Specific Routes, and Load Sharing | |||
Status of this Memo | Status of this Memo | |||
This document is an Internet-Draft and is in full conformance with | This document is an Internet-Draft and is in full conformance with | |||
all provisions of Section 10 of RFC 2026 [1]. | all provisions of Section 10 of RFC 2026 [1]. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF), its areas, and its working groups. Note that | Task Force (IETF), its areas, and its working groups. Note that | |||
other groups may also distribute working documents as Internet- | other groups may also distribute working documents as Internet- | |||
Drafts. | Drafts. | |||
skipping to change at line 31 | skipping to change at line 33 | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
http://www.ietf.org/ietf/1id-abstracts.txt. | http://www.ietf.org/ietf/1id-abstracts.txt. | |||
The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
Abstract | Abstract | |||
This document describes an optional extension to Neighbor Discovery | This document describes two changes to Neighbor Discovery. The first | |||
Router Advertisement messages for communicating default router | change is an optional extension to Router Advertisement messages for | |||
preferences and more-specific routes from routers to hosts. This | communicating default router preferences and more-specific routes | |||
improves the ability of hosts to pick an appropriate router, | from routers to hosts. This improves the ability of hosts to pick an | |||
especially when the host is multi-homed and the routers are on | appropriate router, especially when the host is multi-homed and the | |||
different links. The preference values and specific routes | routers are on different links. The preference values and specific | |||
advertised to hosts require administrative configuration; they are | routes advertised to hosts require administrative configuration; | |||
not automatically derived from routing tables. | they are not automatically derived from routing tables. The second | |||
change is a mandatory modification of the conceptual sending | ||||
algorithm to support load-sharing among equivalent routers. | ||||
1. Introduction | 1. Introduction | |||
Neighbor Discovery [2] specifies a conceptual model for hosts that | Neighbor Discovery [2] specifies a conceptual model for hosts that | |||
includes a Default Router List and a Prefix List. Hosts send Router | includes a Default Router List and a Prefix List. Hosts send Router | |||
Solicitation messages and receive from routers Router Advertisement | Solicitation messages and receive Router Advertisement messages from | |||
messages. Hosts populate their Default Router List and Prefix List | routers. Hosts populate their Default Router List and Prefix List | |||
based on information in the Router Advertisement messages. A | based on information in the Router Advertisement messages. A | |||
conceptual sending algorithm uses the Prefix List to determine if a | conceptual sending algorithm uses the Prefix List to determine if a | |||
destination address is on-link and the Default Router List to select | destination address is on-link and the Default Router List to select | |||
a router for off-link destinations. | a router for off-link destinations. | |||
Draves Expires January 2003 1 | ||||
In some network topologies where the host has multiple routers on | In some network topologies where the host has multiple routers on | |||
its Default Router List, the choice of router for an off-link | its Default Router List, the choice of router for an off-link | |||
destination is important. In some situations, one router may provide | destination is important. In some situations, one router may provide | |||
Draves Expires September 2002 1 | ||||
much better performance than another for a destination. In other | much better performance than another for a destination. In other | |||
situations, choosing the wrong router may result in a failure to | situations, choosing the wrong router may result in a failure to | |||
communicate. (A later section gives specific examples of these | communicate. (A later section gives specific examples of these | |||
scenarios.) | scenarios.) | |||
This document describes an optional extension to Neighbor Discovery | This document describes an optional extension to Neighbor Discovery | |||
Router Advertisement messages for communicating default router | Router Advertisement messages for communicating default router | |||
preferences and more-specific routes from routers to hosts. This | preferences and more-specific routes from routers to hosts. This | |||
improves the ability of hosts to pick an appropriate router for an | improves the ability of hosts to pick an appropriate router for an | |||
off-link destination. | off-link destination. | |||
skipping to change at line 93 | skipping to change at line 96 | |||
6-over-4 [3] or configured tunnel [4] network connections. | 6-over-4 [3] or configured tunnel [4] network connections. | |||
This document requires that the preference values and specific | This document requires that the preference values and specific | |||
routes advertised to hosts require explicit administrative | routes advertised to hosts require explicit administrative | |||
configuration. They are not automatically derived from routing | configuration. They are not automatically derived from routing | |||
tables. In particular, the preference values are not routing metrics | tables. In particular, the preference values are not routing metrics | |||
and it is not recommended that routers "dump out" their entire | and it is not recommended that routers "dump out" their entire | |||
routing tables to hosts. | routing tables to hosts. | |||
We use Router Advertisement messages, instead of some other protocol | We use Router Advertisement messages, instead of some other protocol | |||
like RIP [5], is that Router Advertisements are an existing | like RIP [5], because Router Advertisements are an existing | |||
standard, stable protocol for router-to-host communication. | standard, stable protocol for router-to-host communication. | |||
Piggybacking this information on existing message traffic from | Piggybacking this information on existing message traffic from | |||
routers to hosts reduces network overhead. Neighbor Discovery is to | routers to hosts reduces network overhead. Neighbor Discovery is to | |||
unicast routing as Multicast Listener Discovery is to multicast | unicast routing as Multicast Listener Discovery is to multicast | |||
routing. In both cases, a single simple protocol insulates the host | routing. In both cases, a single simple protocol insulates the host | |||
from the variety of router-to-router protocols. In addition, RIP is | from the variety of router-to-router protocols. In addition, RIP is | |||
unsuitable because it does not carry route lifetimes so it requires | unsuitable because it does not carry route lifetimes so it requires | |||
frequent message traffic with greater processing overheads. | frequent message traffic with greater processing overheads. | |||
This document also describes a mandatory change in host behavior. | ||||
Neighbor DiscoveryÆs conceptual sending algorithm is modified to | ||||
require hosts to select randomly among equivalent routers. This | ||||
Draves Expires January 2003 2 | ||||
distributes traffic to different destinations among the routers. | ||||
Traffic to a single destination continues to use a single router, | ||||
because of the Destination Cache. | ||||
The mechanisms specified here are backwards-compatible, so that | The mechanisms specified here are backwards-compatible, so that | |||
hosts that do not implement them continue to function as well as | hosts that do not implement them continue to function as well as | |||
they did previously. | they did previously. | |||
Draves Expires September 2002 2 | ||||
1.1. Conventions used in this document | 1.1. Conventions used in this document | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in | |||
this document are to be interpreted as described in RFC-2119 [6]. | this document are to be interpreted as described in RFC-2119 [6]. | |||
2. Message Formats | 2. Message Formats | |||
2.1. Preference Values | 2.1. Preference Values | |||
skipping to change at line 154 | skipping to change at line 164 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Reachable Time | | | Reachable Time | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Retrans Timer | | | Retrans Timer | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Options ... | | Options ... | |||
+-+-+-+-+-+-+-+-+-+-+-+- | +-+-+-+-+-+-+-+-+-+-+-+- | |||
Fields: | Fields: | |||
Draves Expires January 2003 3 | ||||
Prf (Default Router Preference) | Prf (Default Router Preference) | |||
2-bit signed integer. Indicates whether or not to prefer | 2-bit signed integer. Indicates whether or not to prefer | |||
this router over other default routers. If Router | this router over other default routers. If Router | |||
Lifetime is zero, it MUST be initialized to zero by the | Lifetime is zero, it MUST be initialized to zero by the | |||
sender and MUST be ignored by the receiver. If the | sender and MUST be ignored by the receiver. If the | |||
Reserved (10) value is received, the receiver should | Reserved (10) value is received, the receiver should | |||
treat the RA as having a zero Router Lifetime. | treat the RA as having a zero Router Lifetime. | |||
Draves Expires September 2002 3 | ||||
Resvd (Reserved) | Resvd (Reserved) | |||
A 3-bit unused field. It MUST be initialized to zero by | A 3-bit unused field. It MUST be initialized to zero by | |||
the sender and MUST be ignored by the receiver. | the sender and MUST be ignored by the receiver. | |||
Possible Options: | Possible Options: | |||
Route Information | Route Information | |||
These options specify prefixes that are reachable via | These options specify prefixes that are reachable via | |||
the router. | the router. | |||
Discussion: | Discussion: | |||
Note that in addition to the preference value in the message header, | Note that in addition to the preference value in the message header, | |||
a Router Advertisement can also contain a Route Information Option | a Router Advertisement can also contain a Route Information Option | |||
for ::/0, with a preference value and lifetime. Encoding a | for ::/0, with a preference value and lifetime. Encoding a | |||
preference value in the Router Advertisement header has some | preference value in the Router Advertisement header has some | |||
advantages: | advantages: | |||
1. It allows for a distinction between "best default router" and | 1. It allows for a distinction between "best default router" and | |||
"best router for default", as described below. | "best router for default", as described below in section 5.1. | |||
2. When the best default router is also the best router for | 2. When the best default router is also the best router for | |||
default (which will be a common case), encoding the preference | default (which will be a common case), encoding the preference | |||
value in the message header is more efficient than having to send | value in the message header is more efficient than having to send | |||
a separate option. | a separate option. | |||
2.3. Route Information Option | 2.3. Route Information Option | |||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
skipping to change at line 209 | skipping to change at line 219 | |||
+ + | + + | |||
| | | | | | |||
+ Prefix + | + Prefix + | |||
| | | | | | |||
+ + | + + | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Fields: | Fields: | |||
Draves Expires January 2003 4 | ||||
Type TBD | Type TBD | |||
Length 1, 2, or 3 depending on Prefix Length. If Prefix Length | Length 8-bit unsigned integer. The length of the option | |||
is greater than 64, then Length must be at least 3. If | (including the Type and Length fields) in units of | |||
Prefix Length is greater than 0, then Length must be at | 8 octets. | |||
least 2. If Prefix Length is zero, then Length may be 1. | ||||
Draves Expires September 2002 4 | ||||
Prefix Length | Prefix Length | |||
8-bit unsigned integer. The number of leading bits in | 8-bit unsigned integer. The number of leading bits in | |||
the Prefix that are valid. The value ranges from 0 to | the Prefix that are valid. The value ranges from 0 to | |||
128. | 128. | |||
Prf (Route Preference) | Prf (Route Preference) | |||
2-bit signed integer. Indicates whether or not to prefer | 2-bit signed integer. Indicates whether or not to prefer | |||
this router for the prefix over others. If the Reserved | this router for the prefix over others. If the Reserved | |||
(10) value is received, the Route Information Option | (10) value is received, the Route Information Option | |||
MUST be ignored. | MUST be ignored. | |||
skipping to change at line 238 | skipping to change at line 247 | |||
Resvd (Reserved) | Resvd (Reserved) | |||
Two 3-bit unused fields. They MUST be initialized to | Two 3-bit unused fields. They MUST be initialized to | |||
zero by the sender and MUST be ignored by the receiver. | zero by the sender and MUST be ignored by the receiver. | |||
Route Lifetime | Route Lifetime | |||
32-bit unsigned integer. The length of time in seconds | 32-bit unsigned integer. The length of time in seconds | |||
(relative to the time the packet is sent) that the | (relative to the time the packet is sent) that the | |||
prefix is valid for route determination. A value of all | prefix is valid for route determination. A value of all | |||
one bits (0xffffffff) represents infinity. | one bits (0xffffffff) represents infinity. | |||
Prefix An IP address or a prefix of an IP address. The Prefix | Prefix Variable-length field containing an IP address or a | |||
Length field contains the number of valid leading bits | prefix of an IP address. The Prefix Length field | |||
in the prefix. The bits in the prefix after the prefix | contains the number of valid leading bits in the prefix. | |||
length are reserved and MUST be initialized to zero by | The bits in the prefix after the prefix length (if any) | |||
the sender and ignored by the receiver. | are reserved and MUST be initialized to zero by the | |||
sender and ignored by the receiver. | ||||
The Prefix field is 0, 8, or 16 octets depending on | The Length field is 1, 2, or 3 depending on Prefix Length. If Prefix | |||
Length. | Length is greater than 64, then Length must be 3. If Prefix Length | |||
is greater than 0, then Length must be 2 or 3. If Prefix Length is | ||||
zero, then Length must be 1, 2, or 3. | ||||
The Prefix field is 0, 8, or 16 octets depending on Length. | ||||
Routers SHOULD NOT include in a Router Advertisement two Route | Routers SHOULD NOT include in a Router Advertisement two Route | |||
Information Options with the same Prefix and Prefix Length. If a | Information Options with the same Prefix and Prefix Length. If a | |||
host processes a Router Advertisement carrying multiple Router | host processes a Router Advertisement carrying multiple Router | |||
Information Options with the same Prefix and Prefix Length, it MUST | Information Options with the same Prefix and Prefix Length, it MUST | |||
process one of the options (unspecified which one) and it MUST | process one of the options (unspecified which one) and it MUST | |||
effectively ignore the rest. It MUST NOT retain some information | effectively ignore the rest. It MUST NOT retain some information | |||
(like preference) from one option and other information (like | (like preference) from one option and other information (like | |||
lifetime) from another option. | lifetime) from another option. | |||
Discussion: | Discussion: | |||
Draves Expires January 2003 5 | ||||
There are several reasons for using a new Route Information Option, | There are several reasons for using a new Route Information Option, | |||
instead of using flag bits to overload the existing Prefix | instead of using flag bits to overload the existing Prefix | |||
Information Option: | Information Option: | |||
1. Prefixes will typically only show up in one or the other kind | 1. Prefixes will typically only show up in one or the other kind | |||
of option, not both, so a new option does not introduce | of option, not both, so a new option does not introduce | |||
duplication. | duplication. | |||
2. The Route Information Option is typically 16 octets while the | 2. The Route Information Option is typically 16 octets while the | |||
Prefix Information Option is 32 octets. | Prefix Information Option is 32 octets. | |||
Draves Expires September 2002 5 | ||||
3. Using a new option may improve backwards-compatibility with | 3. Using a new option may improve backwards-compatibility with | |||
some host implementations. | some host implementations. | |||
3. Conceptual Model of a Host | 3. Conceptual Model of a Host | |||
There are three possible conceptual models for host implementation | There are three possible conceptual models for host implementation | |||
of default router preferences and more-specific routes, | of default router preferences and more-specific routes, | |||
corresponding to different levels of support. We refer to these as | corresponding to different levels of support. We refer to these as | |||
host A, host B, and host C. Note that these are really classes of | host A, host B, and host C. Note that these are really classes of | |||
hosts, not individual hosts. | hosts, not individual hosts. | |||
skipping to change at line 300 | skipping to change at line 314 | |||
Route Information Options. | Route Information Options. | |||
Host C uses a Routing Table instead of a Default Router List. (The | Host C uses a Routing Table instead of a Default Router List. (The | |||
Routing Table may also subsume the Prefix List, but that is beyond | Routing Table may also subsume the Prefix List, but that is beyond | |||
the scope of this document.) Entries in the Routing Table have a | the scope of this document.) Entries in the Routing Table have a | |||
prefix, prefix length, preference value, lifetime, and next-hop | prefix, prefix length, preference value, lifetime, and next-hop | |||
router. Host C uses both the Default Router Preference value in the | router. Host C uses both the Default Router Preference value in the | |||
Router Advertisement header and Route Information Options. | Router Advertisement header and Route Information Options. | |||
When host C receives a Router Advertisement, it modifies its Routing | When host C receives a Router Advertisement, it modifies its Routing | |||
Table as follows. If a route's lifetime is zero, the route is | Table as follows. If the received route's lifetime is zero, the | |||
removed from the Routing Table if present. If a route's lifetime is | route is removed from the Routing Table if present. If a route's | |||
non-zero, the route is added to the Routing Table if not present and | lifetime is non-zero, the route is added to the Routing Table if not | |||
the route's lifetime and preference is updated if the route is | present and the route's lifetime and preference is updated if the | |||
already present. A route is located in the Routing Table based on | route is already present. A route is located in the Routing Table | |||
prefix, prefix length, and next-hop router. When processing a Router | based on prefix, prefix length, and next-hop router. When processing | |||
Advertisment, host C first updates a ::/0 route based on the Router | a Router Advertisement, host C first updates a ::/0 route based on | |||
Lifetime and Default Router Preference in the Router Advertisement | the Router Lifetime and Default Router Preference in the Router | |||
message header. Then as host C processes Route Information Options | Advertisement message header. Then as host C processes Route | |||
in the Router Advertisement message body, it updates its routing | Information Options in the Router Advertisement message body, it | |||
table for each such option. The Router Preference and Lifetime | updates its routing table for each such option. The Router | |||
values in a ::/0 Route Information Option override the preference | Preference and Lifetime values in a ::/0 Route Information Option | |||
and lifetime values in the Router Advertisement header. | ||||
Draves Expires January 2003 6 | ||||
override the preference and lifetime values in the Router | ||||
Advertisement header. | ||||
For example, suppose a host receives a Router Advertisement from | For example, suppose a host receives a Router Advertisement from | |||
router X with a Router Lifetime of 100 seconds and Default Router | router X with a Router Lifetime of 100 seconds and Default Router | |||
Preference of Medium. The body of the Router Advertisement contains | Preference of Medium. The body of the Router Advertisement contains | |||
a Route Information Option for ::/0 with a Route Lifetime of 200 | a Route Information Option for ::/0 with a Route Lifetime of 200 | |||
seconds and a Route Preference of Low. After processing the Router | seconds and a Route Preference of Low. After processing the Router | |||
Advertisement, host A will have an entry for router X in its Default | Advertisement, host A will have an entry for router X in its Default | |||
Router List with lifetime 100 seconds. If host B receives the same | Router List with lifetime 100 seconds. If host B receives the same | |||
Router Advertisement, it will have an entry in its Default Router | Router Advertisement, it will have an entry in its Default Router | |||
List for router X with Medium preference and lifetime 100 seconds. | List for router X with Medium preference and lifetime 100 seconds. | |||
Draves Expires September 2002 6 | ||||
Host C will have an entry in its Routing Table for ::/0 -> router X, | Host C will have an entry in its Routing Table for ::/0 -> router X, | |||
with Low preference and lifetime 200 seconds. | with Low preference and lifetime 200 seconds. Host C MAY have a | |||
transient state, during processing of the Router Advertisement, in | ||||
which it has an entry in its Routing Table for ::/0 -> router X with | ||||
Medium preference and lifetime 100 seconds. | ||||
3.2. Conceptual Sending Algorithm for Hosts | 3.2. Conceptual Sending Algorithm for Hosts | |||
Host A uses the conceptual sending algorithm described in Neighbor | Host A uses the conceptual sending algorithm described in Neighbor | |||
Discovery [2]. | Discovery [2], modified slightly to support load sharing as | |||
described in section 3.5. | ||||
When host B does next-hop determination and consults its Default | When host B does next-hop determination and consults its Default | |||
Router List, it first prefers reachable routers over non-reachable | Router List, it primarily prefers reachable routers over non- | |||
routers and second uses the router preference values. If all default | reachable routers and secondarily uses the router preference values. | |||
routers are not reachable, then it SHOULD round-robin among them all | ||||
regardless of preference value. | ||||
When host C does next-hop determination and consults its Routing | When host C does next-hop determination and consults its Routing | |||
Table for an off-link destination, it first prefers reachable | Table for an off-link destination, it first prefers reachable | |||
routers over non-reachable routers, second uses longest-matching- | routers over non-reachable routers, second uses longest-matching- | |||
prefix, and third uses route preference values. | prefix, and third uses route preference values. | |||
If there are no reachable routers with routes matching the | If there are no routes matching the destination (i.e., no default | |||
destination, then host C SHOULD round-robin among all routers with | routes and no more-specific routes), then if host C has a single | |||
routes matching the destination regardless of preference value or | interface then it SHOULD assume the destination is on-link to that | |||
prefix length. | interface. If host C has multiple interfaces then it SHOULD discard | |||
the packet and report a Destination Unreachable / No Route To | ||||
If there are no routes matching the destination, then if host C has | Destination error to the upper layer. | |||
a single interface then it SHOULD assume the destination is on-link. | ||||
If host C has multiple interfaces then it SHOULD discard the packet | ||||
and report a Destination Unreachable / No Route To Destination error | ||||
to the upper layer. | ||||
For example: suppose host C has four entries in its Routing Table: | ||||
::/0 -> router W with Medium preference | ||||
2001::/16 -> router X with Medium preference | ||||
3ffe::/16 -> router Y with High preference | ||||
3ffe::/16 -> router Z with Low preference | ||||
and host C is sending to 3ffe::1, an off-link destination. If all | ||||
routers are reachable, then router Y will be chosen. If router Y is | ||||
not reachable, then router Z will be chosen. If routers Y and Z are | ||||
not reachable, then router W will be chosen. If routers W, Y, and Z | ||||
are all not reachable, then host C should round-robin among the | ||||
three routers. Router X will never be chosen because its prefix does | ||||
not match the destination. | ||||
3.3. Destination Cache Management | 3.3. Destination Cache Management | |||
When a host processes a Router Advertisement and updates its | When host C processes a Router Advertisement and updates its | |||
conceptual routing table, it SHOULD invalidate or remove Destination | conceptual Routing Table, it SHOULD invalidate or remove Destination | |||
Cache Entries and redo next-hop determination for destinations | Cache Entries and redo next-hop determination for destinations | |||
affected by the routing table changes. The host MAY implement this | affected by the Routing Table changes. The host MAY implement this | |||
requirement by flushing its entire Destination Cache. | requirement by flushing its entire Destination Cache. | |||
Draves Expires September 2002 7 | ||||
3.4. Router Reachability Probing | 3.4. Router Reachability Probing | |||
When a host avoids using a non-reachable router X and instead uses a | When a host avoids using a non-reachable router X and instead uses | |||
reachable router Y, and the host would have used router X if router | another router Y, and the host would have used router X if router X | |||
X were reachable, then the host SHOULD probe router XÆs reachability | were reachable, then the host SHOULD probe router X's reachability | |||
by sending a Neighbor Solicitation. These probes MUST be rate- | ||||
limited to no more than one per minute per router. | Draves Expires January 2003 7 | |||
by sending a Neighbor Solicitation. A host MUST NOT probe a router's | ||||
reachability in the absence of useful traffic that the host would | ||||
have sent to the router if it were reachable. In any case, these | ||||
probes MUST be rate-limited to no more than one per minute per | ||||
router. | ||||
This requirement allows the host to discover when router X becomes | This requirement allows the host to discover when router X becomes | |||
reachable and to start using router X at that point. Otherwise, the | reachable and to start using router X at that point. Otherwise, the | |||
host might not notice router XÆs reachability and continue to use | host might not notice router XÆs reachability and continue to use | |||
the less-desirable router Y. | the less-desirable router Y. | |||
3.5. Host Load Sharing | 3.5. Host Load Sharing | |||
Sometimes a host has a choice of multiple "equivalent" routers for a | Sometimes a host has a choice of multiple "equivalent" routers for a | |||
destination. We say that two routers are equivalent for a | destination. We say that two routers are equivalent for a | |||
destination if they have the same reachability, the same matching | destination if they have the same reachability, the same matching | |||
prefix length (if the host supports a Routing Table), and the same | prefix length (if the host supports a Routing Table), and the same | |||
preference values (if the host supports preference values). | preference values (if the host supports preference values). | |||
When a host chooses from multiple equivalent routers, it SHOULD | When a host chooses from multiple equivalent routers, it MUST choose | |||
choose randomly. | randomly. | |||
This has the effect of distributing load for new destinations among | This has the effect of distributing load for new destinations among | |||
the equivalent routers. Note that traffic to a single destination | the equivalent routers. Note that traffic to a single destination | |||
will use a single router as long as the Destination Cache Entry for | will use a single router as long as the Destination Cache Entry for | |||
the destination is not deleted. Random selection, instead of round- | the destination is not deleted. Random selection, instead of round- | |||
robin, is used to avoid synchronization issues. | robin, is used to avoid synchronization issues. | |||
3.6. Example | ||||
For example: suppose host C has five entries in its Routing Table: | ||||
::/0 -> router W with Medium preference | ||||
2001::/16 -> router X with Medium preference | ||||
3ffe::/16 -> router Y1 with High preference | ||||
3ffe::/16 -> router Y2 with High preference | ||||
3ffe::/16 -> router Z with Low preference | ||||
and host C is sending to 3ffe::1, an off-link destination. If all | ||||
routers are reachable, then the host will choose randomly between | ||||
routers Y1 and Y2. If routers Y1 and Y2 are not reachable, then | ||||
router Z will be chosen and the reachability of routers Y1 and Y2 | ||||
will be probed. If routers Y1, Y2, and Z are not reachable, then | ||||
router W will be chosen and the reachability of routers Y1, Y2, and | ||||
Z will be probed. If routers W, Y1, Y2, and Z are all not reachable, | ||||
then host C should round-robin among Y1 and Y2 while probing the | ||||
reachability of W and Z. Router X will never be chosen because its | ||||
prefix does not match the destination. | ||||
4. Router Configuration | 4. Router Configuration | |||
Routers should not advertise preferences or routes by default. In | Routers should not advertise preferences or routes by default. In | |||
particular, they should not "dump out" their entire routing table to | particular, they should not "dump out" their entire routing table to | |||
hosts. Routers MAY have a configuration mode where a filter is | hosts. Routers MAY have a configuration mode where a filter is | |||
Draves Expires January 2003 8 | ||||
applied to their routing table to obtain the routes that are | applied to their routing table to obtain the routes that are | |||
advertised to hosts. | advertised to hosts. | |||
The preference values (both Default Router Preferences and Route | The preference values (both Default Router Preferences and Route | |||
Preferences) should not be routing metrics or automatically derived | Preferences) should not be routing metrics or automatically derived | |||
from metrics: the preference values should be configured. The High | from metrics: the preference values should be configured. The High | |||
and Low (non-default) preference values should only be used when | and Low (non-default) preference values should only be used when | |||
someone with knowledge of both routers and the network topology | someone with knowledge of both routers and the network topology | |||
configures them explicitly. For example, it could be a common | configures them explicitly. For example, it could be a common | |||
network administrator, or it could be a customer request to | network administrator, or it could be a customer request to | |||
different administrators managing the routers. | different administrators managing the routers. | |||
As one exception to this general rule, the administrator of a router | As one exception to this general rule, the administrator of a router | |||
that does not have a connection to the internet, or is connected | that does not have a connection to the internet, or is connected | |||
through a firewall that blocks general traffic, may configure the | through a firewall that blocks general traffic, may configure the | |||
router to advertise a Low Default Router Preference. | router to advertise a Low Default Router Preference. | |||
Draves Expires September 2002 8 | ||||
An administrator of a router may configure the router to advertise | An administrator of a router may configure the router to advertise | |||
specific routes for directly connected subnets and any shorter | specific routes for directly connected subnets and any shorter | |||
prefixes (eg, site, NLA, or TLA prefixes) for networks to which the | prefixes (eg, site, NLA, or TLA prefixes) for networks to which the | |||
router belongs. | router belongs. | |||
For example, if a home user sets up a tunnel into a firewalled | For example, if a home user sets up a tunnel into a firewalled | |||
corporate network, the access router on the corporate network end of | corporate network, the access router on the corporate network end of | |||
the tunnel can advertise itself as a default router, but with a Low | the tunnel can advertise itself as a default router, but with a Low | |||
preference. Furthermore the corporate router can advertise a | preference. Furthermore the corporate router can advertise a | |||
specific route for the corporate site prefix. The net result is that | specific route for the corporate site prefix. The net result is that | |||
destinations in the corporate network will be reached via the | destinations in the corporate network will be reached via the | |||
tunnel, and general internet destinations will be reached via the | tunnel, and general internet destinations will be reached via the | |||
home ISP. Without these mechanisms, the home machine might choose to | home ISP. Without these mechanisms, the home machine might choose to | |||
send internet traffic into the corporate network or corporate | send internet traffic into the corporate network or corporate | |||
traffic into the internet, leading to communication failure because | traffic into the internet, leading to communication failure because | |||
of the firewall. | of the firewall. | |||
Routers SHOULD NOT send more than 17 Route Information Options in | Routers SHOULD NOT send more than 17 Route Information Options in | |||
Router Advertisements per link. | Router Advertisements per link. This arbitrary bound is meant to | |||
reinforce that relatively few and carefully selected routes should | ||||
be advertised to hosts. | ||||
5. Examples | 5. Examples | |||
5.1. Best Default Router vs Best Route for Default | 5.1. Best Default Router vs Best Route for Default | |||
The best default router is not quite the same thing as the best | The best default router is not quite the same thing as the best | |||
router for default. The best default router is the router that will | router for default. The best default router is the router that will | |||
generate the fewest number of redirects for the host's traffic. The | generate the fewest number of redirects for the host's traffic. The | |||
best router for default is the router with the best route toward the | best router for default is the router with the best route toward the | |||
wider internet. | wider internet. | |||
For example, suppose a situation where you have a link with two | For example, suppose a situation where you have a link with two | |||
routers X and Y. Router X is the best for 2002::/16. (It's your 6to4 | routers X and Y. Router X is the best for 2002::/16. (It's your 6to4 | |||
site gateway.) Router Y is the best for ::/0. (It connects to the | site gateway.) Router Y is the best for ::/0. (It connects to the | |||
native IPv6 internet.) Router X forwards native IPv6 traffic to | native IPv6 internet.) Router X forwards native IPv6 traffic to | |||
Draves Expires January 2003 9 | ||||
router Y; router Y forwards 6to4 traffic to router X. But most | router Y; router Y forwards 6to4 traffic to router X. But most | |||
traffic from this site is sent to 2002:/16 destinations. In this | traffic from this site is sent to 2002:/16 destinations. In this | |||
scenario, router X is the best default router and router Y is the | scenario, router X is the best default router and router Y is the | |||
best router for default. | best router for default. | |||
To make host A work well, both routers should advertise themselves | To make host A work well, both routers should advertise themselves | |||
as default routers. In particular, if router Y goes down host A | as default routers. In particular, if router Y goes down host A | |||
should send traffic to router X to maintain 6to4 connectivity, so | should send traffic to router X to maintain 6to4 connectivity, so | |||
router X as well as router Y needs to be a default router. | router X as well as router Y needs to be a default router. | |||
To make host B work well, router X should in addition advertise | To make host B work well, router X should in addition advertise | |||
itself with a High default router preference. This will cause host B | itself with a High default router preference. This will cause host B | |||
to prefer router X, minimizing the number of redirects. | to prefer router X, minimizing the number of redirects. | |||
To make host C work well, router X should in addition advertise the | To make host C work well, router X should in addition advertise the | |||
::/0 route with Low preference and the 2002::/16 route with Medium | ::/0 route with Low preference and the 2002::/16 route with Medium | |||
preference. Host C will end up with three routes in its routing | preference. Host C will end up with three routes in its routing | |||
table: ::/0 -> router X (Low), ::/0 -> router Y (Medium), 2002::/16 | table: ::/0 -> router X (Low), ::/0 -> router Y (Medium), 2002::/16 | |||
-> router X (Medium). It will send 6to4 traffic to router X and | -> router X (Medium). It will send 6to4 traffic to router X and | |||
other traffic to router Y. Host C will not cause any redirects. | other traffic to router Y. Host C will not cause any redirects. | |||
Draves Expires September 2002 9 | ||||
Note that when host C processes the Router Advertisement from router | Note that when host C processes the Router Advertisement from router | |||
X, the Low preference for ::/0 overrides the High default router | X, the Low preference for ::/0 overrides the High default router | |||
preference. If the ::/0 specific route were not present, then host C | preference. If the ::/0 specific route were not present, then host C | |||
would apply the High default router preference to its ::/0 route to | would apply the High default router preference to its ::/0 route to | |||
router X. | router X. | |||
5.2. Multi-Homed Host and Isolated Network | 5.2. Multi-Homed Host and Isolated Network | |||
Here's another scenario: a multi-homed host is connected to the | Here's another scenario: a multi-homed host is connected to the | |||
6bone/internet via router X on one link and to an isolated network | 6bone/internet via router X on one link and to an isolated network | |||
skipping to change at line 519 | skipping to change at line 545 | |||
advertise a Route Information Option for the isolated network | advertise a Route Information Option for the isolated network | |||
prefix. It might not advertise itself as a default router at all | prefix. It might not advertise itself as a default router at all | |||
(zero Router Lifetime), or it might advertise itself as a default | (zero Router Lifetime), or it might advertise itself as a default | |||
router with Low preference. Router Y should advertise itself as a | router with Low preference. Router Y should advertise itself as a | |||
default router with Medium preference. | default router with Medium preference. | |||
6. Security Considerations | 6. Security Considerations | |||
A malicious node could send Router Advertisement messages, | A malicious node could send Router Advertisement messages, | |||
specifying High Default Router Preference or carrying specific | specifying High Default Router Preference or carrying specific | |||
Draves Expires January 2003 10 | ||||
routes, with the effect of pulling traffic away from legitimate | routes, with the effect of pulling traffic away from legitimate | |||
routers. However, a malicious node could easily achieve this same | routers. However, a malicious node could easily achieve this same | |||
effect in other ways. For example, it could fabricate Router | effect in other ways. For example, it could fabricate Router | |||
Advertisement messages with zero Router Lifetime from the other | Advertisement messages with zero Router Lifetime from the other | |||
routers, causing hosts to stop using the other routes. Hence, this | routers, causing hosts to stop using the other routes. Hence, this | |||
document has no appreciable impact on Internet infrastructure | document has no new appreciable impact on Internet infrastructure | |||
security. | security. | |||
References | References | |||
1 S. Bradner, "The Internet Standards Process -- Revision 3", BCP | 1 S. Bradner, "The Internet Standards Process -- Revision 3", BCP | |||
9, RFC 2026, October 1996. | 9, RFC 2026, October 1996. | |||
2 T. Narten, E. Nordmark, W. Simpson. "Neighbor Discovery for IP | 2 T. Narten, E. Nordmark, W. Simpson. "Neighbor Discovery for IP | |||
Version 6 (IPv6)", RFC 2461, December 1998. | Version 6 (IPv6)", RFC 2461, December 1998. | |||
3 B. Carpenter, K. Moore. "Connection of IPv6 Domains via IPv4 | 3 B. Carpenter, K. Moore. "Connection of IPv6 Domains via IPv4 | |||
Clouds", RFC 3056, February 2001. | Clouds", RFC 3056, February 2001. | |||
Draves Expires September 2002 10 | ||||
4 R. Gilligan, E. Nordmark. "Transition Mechanisms for IPv6 Hosts | 4 R. Gilligan, E. Nordmark. "Transition Mechanisms for IPv6 Hosts | |||
and Routers", RFC 1933, April 1996. | and Routers", RFC 1933, April 1996. | |||
5 G. Malkin, R. Minnear. "RIPng for IPv6", RFC 2080 , January 1997. | 5 G. Malkin, R. Minnear. "RIPng for IPv6", RFC 2080 , January 1997. | |||
6 S. Bradner, "Key words for use in RFCs to Indicate Requirement | 6 S. Bradner, "Key words for use in RFCs to Indicate Requirement | |||
Levels", BCP 14, RFC 2119, March 1997. | Levels", BCP 14, RFC 2119, March 1997. | |||
Acknowledgments | Acknowledgments | |||
The author would like to acknowledge the contributions of Balash | The authors would like to acknowledge the contributions of Balash | |||
Akbari, Steve Deering, Robert Elz, Tony Hain, Bob Hinden, Christian | Akbari, Steve Deering, Robert Elz, Tony Hain, Christian Huitema, | |||
Huitema, JINMEI Tatuya, Erik Nordmark, Dave Thaler, and Brian Zill. | JINMEI Tatuya, Erik Nordmark, Pekka Savola, Dave Thaler, and Brian | |||
The packet diagrams are derived from Neighbor Discovery [2]. The | Zill. The packet diagrams are derived from Neighbor Discovery [2]. | |||
description of host load sharing is derived from Bob Hinden's draft | The description of host load sharing is derived from Bob Hinden's | |||
on the subject. | draft on the subject. | |||
Author's Addresses | Author's Addresses | |||
Richard Draves | Richard Draves | |||
Microsoft Research | Microsoft Research | |||
One Microsoft Way | One Microsoft Way | |||
Redmond, WA 98052 | Redmond, WA 98052 | |||
Phone: 1-425-706-2268 | Phone: +1 425 706 2268 | |||
Email: richdr@microsoft.com | Email: richdr@microsoft.com | |||
Robert M. Hinden | ||||
Nokia | ||||
313 Fairchild Drive | ||||
Mountain View, CA 94043 | ||||
Phone: +1 650 625 2004 | ||||
Email: hinden@iprg.nokia.com | ||||
Draves Expires January 2003 11 | ||||
Revision History | Revision History | |||
Changes from draft-ietf-ipv6-router-selection-01 | ||||
Added Bob Hinden as co-author. | ||||
Various clarifications and textual improvements. | ||||
Slightly simplified the specification of round-robining in next-hop | ||||
determination, relying on router-reachability probing in some cases. | ||||
Clarified that router reachability probing only happens when the | ||||
host is sending packets that would have gone to that router if it | ||||
were reachable. | ||||
Changed load sharing to a mandatory requirement and added supporting | ||||
text to the title, abstract, and introduction. | ||||
Changes from draft-ietf-ipngwg-router-selection-00 | Changes from draft-ietf-ipngwg-router-selection-00 | |||
Specified reachability probing of otherwise more-preferred but | Specified reachability probing of otherwise more-preferred but | |||
currently unreachable routers. | currently unreachable routers. | |||
Changed the requirement of Destination Cache invalidation, from MAY | Changed the requirement of Destination Cache invalidation, from MAY | |||
to SHOULD, but allowing flushing of the entire Destination Cache. | to SHOULD, but allowing flushing of the entire Destination Cache. | |||
Added a section specifying load sharing among equivalent routers. | Added a section specifying load sharing among equivalent routers. | |||
skipping to change at line 590 | skipping to change at line 642 | |||
seen. | seen. | |||
Specified that routers SHOULD NOT send more than 17 Route | Specified that routers SHOULD NOT send more than 17 Route | |||
Information Options. | Information Options. | |||
Added discussion of Destination Cache invalidation, allowing but not | Added discussion of Destination Cache invalidation, allowing but not | |||
requiring it. | requiring it. | |||
Removed references to the fourth conceptual host model, host D. | Removed references to the fourth conceptual host model, host D. | |||
Draves Expires September 2002 11 | ||||
Changes from draft-draves-ipngwg-router-selection-00 | Changes from draft-draves-ipngwg-router-selection-00 | |||
Made the option variable length. Must ignore prefix bits past prefix | Made the option variable length. Must ignore prefix bits past prefix | |||
length. | length. | |||
Added more allowable router configuration scenarios, weakening the | Added more allowable router configuration scenarios, weakening the | |||
requirement that one administrator must coordinate the configuration | requirement that one administrator must coordinate the configuration | |||
of all relevant routers. | of all relevant routers. | |||
Draves Expires September 2002 12 | Draves Expires January 2003 12 | |||
Full Copyright Statement | Full Copyright Statement | |||
Copyright (C) The Internet Society (2000). All Rights Reserved. | Copyright (C) The Internet Society (2000). All Rights Reserved. | |||
This document and translations of it may be copied and furnished to | This document and translations of it may be copied and furnished to | |||
others, and derivative works that comment on or otherwise explain it | others, and derivative works that comment on or otherwise explain it | |||
or assist in its implementation may be prepared, copied, published | or assist in its implementation may be prepared, copied, published | |||
and distributed, in whole or in part, without restriction of any | and distributed, in whole or in part, without restriction of any | |||
kind, provided that the above copyright notice and this paragraph | kind, provided that the above copyright notice and this paragraph | |||
are included on all such copies and derivative works. However, this | are included on all such copies and derivative works. However, this | |||
skipping to change at line 630 | skipping to change at line 680 | |||
The limited permissions granted above are perpetual and will not be | The limited permissions granted above are perpetual and will not be | |||
revoked by the Internet Society or its successors or assigns. | revoked by the Internet Society or its successors or assigns. | |||
This document and the information contained herein is provided on an | This document and the information contained herein is provided on an | |||
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING | "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING | |||
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING | TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING | |||
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION | BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION | |||
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF | HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF | |||
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | |||
Draves Expires September 2002 13 | Draves Expires January 2003 13 | |||
End of changes. | ||||
This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/ |