draft-ietf-ipv6-router-selection-03.txt | draft-ietf-ipv6-router-selection-04.txt | |||
---|---|---|---|---|
IPng Working Group R. Draves | IPng Working Group R. Draves | |||
Internet Draft D. Thaler | Internet Draft D. Thaler | |||
Document: draft-ietf-ipv6-router-selection-03.txt Microsoft | Document: draft-ietf-ipv6-router-selection-04.txt Microsoft | |||
December 16, 2003 | June 15, 2004 | |||
Default Router Preferences and More-Specific Routes | Default Router Preferences and More-Specific Routes | |||
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. | all provisions of Section 10 of RFC 2026. | |||
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 | |||
skipping to change at line 30 | skipping to change at line 30 | |||
months and may be updated, replaced, or obsoleted by other documents | months and may be updated, replaced, or obsoleted by other documents | |||
at any time. It is inappropriate to use Internet-Drafts as reference | at any time. It is inappropriate to use Internet-Drafts as reference | |||
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. | |||
Copyright Notice | ||||
Copyright (C) The Internet Society (2004). All Rights Reserved. | ||||
Abstract | Abstract | |||
This document describes an optional extension to Router | This document describes an optional extension to Router | |||
Advertisement messages for communicating default router preferences | Advertisement messages for communicating default router preferences | |||
and more-specific routes from routers to hosts. This improves the | and more-specific routes from routers to hosts. This improves the | |||
ability of hosts to pick an appropriate router, especially when the | ability of hosts to pick an appropriate router, especially when the | |||
host is multi-homed and the routers are on different links. The | host is multi-homed and the routers are on different links. The | |||
preference values and specific routes advertised to hosts require | preference values and specific routes advertised to hosts require | |||
administrative configuration; they are not automatically derived | administrative configuration; they are not automatically derived | |||
from routing tables. | from routing tables. | |||
skipping to change at line 52 | skipping to change at line 56 | |||
Neighbor Discovery [RFC2461] specifies a conceptual model for hosts | Neighbor Discovery [RFC2461] specifies a conceptual model for hosts | |||
that includes a Default Router List and a Prefix List. Hosts send | that includes a Default Router List and a Prefix List. Hosts send | |||
Router Solicitation messages and receive Router Advertisement | Router Solicitation messages and receive Router Advertisement | |||
messages from routers. Hosts populate their Default Router List and | messages from routers. Hosts populate their Default Router List and | |||
Prefix List based on information in the Router Advertisement | Prefix List based on information in the Router Advertisement | |||
messages. A conceptual sending algorithm uses the Prefix List to | messages. A conceptual sending algorithm uses the Prefix List to | |||
determine if a destination address is on-link and the Default Router | determine if a destination address is on-link and the Default Router | |||
List to select a router for off-link destinations. | List to select a router for off-link destinations. | |||
Draves Expires May 2004 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 May 2004 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. | |||
Neighbor Discovery provides a Redirect message that routers can use | Neighbor Discovery provides a Redirect message that routers can use | |||
to correct a host's choice of router. A router can send a Redirect | to correct a host's choice of router. A router can send a Redirect | |||
message to a host, telling it to use a different router for a | message to a host, telling it to use a different router for a | |||
specific destination. However, the Redirect functionality is limited | specific destination. However, the Redirect functionality is limited | |||
to a single link. A router on one link cannot redirect a host to a | to a single link. A router on one link cannot redirect a host to a | |||
router on another link. Hence, Redirect messages do not help multi- | router on another link. Hence, Redirect messages do not help multi- | |||
homed hosts select an appropriate router. | homed (through multiple interfaces) hosts select an appropriate | |||
router. | ||||
Multi-homed hosts are an increasingly important scenario, especially | Multi-homed hosts are an increasingly important scenario, especially | |||
with IPv6. In addition to a wired network connection, like Ethernet, | with IPv6. In addition to a wired network connection, like Ethernet, | |||
hosts may have one or more wireless connections, like 802.11 or | hosts may have one or more wireless connections, like 802.11 or | |||
Bluetooth. In addition to physical network connections, hosts may | Bluetooth. In addition to physical network connections, hosts may | |||
have virtual or tunnel network connections. For example, in addition | have virtual or tunnel network connections. For example, in addition | |||
to a direct connection to the public Internet, a host may have a | to a direct connection to the public Internet, a host may have a | |||
tunnel into a private corporate network. Some IPv6 transition | tunnel into a private corporate network. Some IPv6 transition | |||
scenarios can add additional tunnels. For example, hosts may have | scenarios can add additional tunnels. For example, hosts may have | |||
6-over-4 [RFC3056] or configured tunnel [RFC1933] network | 6to4 [RFC3056] or configured tunnel [RFC2893] network connections. | |||
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 [RFC2080], because Router Advertisements are an existing | like RIP [RFC2080], 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 shares | routers to hosts reduces network overhead. Neighbor Discovery shares | |||
with Multicast Listener Discovery the property that they both define | with Multicast Listener Discovery the property that they both define | |||
host-to-router interactions, while shielding the host from having to | host-to-router interactions, while shielding the host from having to | |||
participate in more general router-to-router interactions. In | participate in more general router-to-router interactions. In | |||
addition, RIP is unsuitable because it does not carry route | addition, RIP is unsuitable because it does not carry route | |||
lifetimes so it requires frequent message traffic with greater | lifetimes so it requires frequent message traffic with greater | |||
processing overheads. | processing overheads. | |||
Draves Expires June 2004 2 | ||||
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 June 2004 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 [RFC2119]. | this document are to be interpreted as described in [RFC2119]. | |||
2. Message Formats | 2. Message Formats | |||
2.1. Preference Values | 2.1. Preference Values | |||
skipping to change at line 138 | skipping to change at line 140 | |||
11 Low | 11 Low | |||
10 Reserved - MUST NOT be sent | 10 Reserved - MUST NOT be sent | |||
Note that implementations can treat the value as a two-bit signed | Note that implementations can treat the value as a two-bit signed | |||
integer. | integer. | |||
Having just three values reinforces that they are not metrics and | Having just three values reinforces that they are not metrics and | |||
more values do not appear to be necessary for reasonable scenarios. | more values do not appear to be necessary for reasonable scenarios. | |||
2.2. Changes to Router Advertisement Message Format | 2.2. Changes to Router Advertisement Message Format | |||
The changes from Neighbor Discovery [RFC2461] section 4.2 are as | The changes from Neighbor Discovery [RFC2461] section 4.2 and | |||
follows: | [RFC3775] section 7.1 are as follows: | |||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Type | Code | Checksum | | | Type | Code | Checksum | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Cur Hop Limit |M|O|H|Prf|Resvd| Router Lifetime | | | Cur Hop Limit |M|O|H|Prf|Resvd| Router Lifetime | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Reachable Time | | | Reachable Time | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Retrans Timer | | | Retrans Timer | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Options ... | | Options ... | |||
+-+-+-+-+-+-+-+-+-+-+-+- | +-+-+-+-+-+-+-+-+-+-+-+- | |||
Fields: | Fields: | |||
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, the preference value MUST be set to | |||
sender and MUST be ignored by the receiver. If the | ||||
Reserved (10) value is received, the receiver MUST treat | ||||
the treat the value as if it had the value 00. | ||||
Draves Expires June 2004 3 | Draves Expires June 2004 3 | |||
(00) by the sender and MUST be ignored by the receiver. | ||||
If the Reserved (10) value is received, the receiver | ||||
MUST treat the value as if it were (00). | ||||
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. | |||
skipping to change at line 215 | skipping to change at line 218 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Fields: | Fields: | |||
Type TBD | Type TBD | |||
Length 8-bit unsigned integer. The length of the option | Length 8-bit unsigned integer. The length of the option | |||
(including the Type and Length fields) in units of | (including the Type and Length fields) in units of | |||
8 octets. The Length field is 1, 2, or 3 depending on | 8 octets. The Length field is 1, 2, or 3 depending on | |||
Prefix Length. If Prefix Length is greater than 64, then | Prefix Length. If Prefix Length is greater than 64, then | |||
Draves Expires June 2004 4 | ||||
Length must be 3. If Prefix Length is greater than 0, | 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 2 or 3. If Prefix Length is zero, | |||
then Length must be 1, 2, or 3. | then Length must be 1, 2, or 3. | |||
Draves Expires June 2004 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. The Prefix field is 0, 8, or 16 octets depending on | 128. The Prefix field is 0, 8, or 16 octets depending on | |||
Length. | Length. | |||
Prf (Route Preference) | Prf (Route Preference) | |||
2-bit signed integer. The Route Preference indicates | 2-bit signed integer. The Route Preference indicates | |||
whether to prefer the router associated with this prefix | whether to prefer the router associated with this prefix | |||
over others, when multiple identical prefixes (for | over others, when multiple identical prefixes (for | |||
skipping to change at line 252 | skipping to change at line 256 | |||
one bits (0xffffffff) represents infinity. | one bits (0xffffffff) represents infinity. | |||
Prefix Variable-length field containing an IP address or a | Prefix Variable-length field containing an IP address or a | |||
prefix of an IP address. The Prefix Length field | prefix of an IP address. The Prefix Length field | |||
contains the number of valid leading bits in the prefix. | contains the number of valid leading bits in the prefix. | |||
The bits in the prefix after the prefix length (if any) | The bits in the prefix after the prefix length (if any) | |||
are reserved and MUST be initialized to zero by the | are reserved and MUST be initialized to zero by the | |||
sender and ignored by the receiver. | sender and ignored by the receiver. | |||
Routers MUST NOT include two Route Information Options with the same | Routers MUST NOT include two Route Information Options with the same | |||
Prefix and Prefix Length in the same Router Advertisement. If a host | Prefix and Prefix Length in the same Router Advertisement. | |||
processes a Router Advertisement carrying multiple Router | ||||
Information Options with the same Prefix and Prefix Length, it MUST | ||||
process one of the options (unspecified which one) and it MUST | ||||
effectively ignore the rest. It MUST NOT retain some information | ||||
(like preference) from one option and other information (like | ||||
lifetime) from another option. | ||||
Discussion: | Discussion: | |||
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 June 2004 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. | |||
Draves Expires June 2004 5 | ||||
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 | |||
type A, type B, and type C. | type A, type B, and type C. | |||
3.1. Conceptual Data Structures for Hosts | 3.1. Conceptual Data Structures for Hosts | |||
Type A hosts ignore default router preferences and more-specific | Type A hosts ignore default router preferences and more-specific | |||
skipping to change at line 304 | skipping to change at line 303 | |||
Type C hosts use a Routing Table instead of a Default Router List. | Type C hosts use a Routing Table instead of a Default Router List. | |||
(The Routing Table may also subsume the Prefix List, but that is | (The Routing Table may also subsume the Prefix List, but that is | |||
beyond the scope of this document.) Entries in the Routing Table | beyond the scope of this document.) Entries in the Routing Table | |||
have a prefix, prefix length, preference value, lifetime, and next- | have a prefix, prefix length, preference value, lifetime, and next- | |||
hop router. Type C hosts use both the Default Router Preference | hop router. Type C hosts use both the Default Router Preference | |||
value in the Router Advertisement header and Route Information | value in the Router Advertisement header and Route Information | |||
Options. | Options. | |||
When a type C host receives a Router Advertisement, it modifies its | When a type C host receives a Router Advertisement, it modifies its | |||
Routing Table as follows. If the received route's lifetime is zero, | Routing Table as follows. When processing a Router Advertisement, a | |||
the route is removed from the Routing Table if present. If a route's | type C host first updates a ::/0 route based on the Router Lifetime | |||
and Default Router Preference in the Router Advertisement message | ||||
header. Then as the host processes Route Information Options in the | ||||
Router Advertisement message body, it updates its routing table for | ||||
each such option. The Router Preference and Lifetime values in a | ||||
::/0 Route Information Option override the preference and lifetime | ||||
values in the Router Advertisement header. Updating each route is | ||||
done as follows. If the received route's lifetime is zero, the | ||||
route is removed from the Routing Table if present. If a route's | ||||
lifetime is non-zero, the route is added to the Routing Table if not | lifetime is non-zero, the route is added to the Routing Table if not | |||
present and the route's lifetime and preference is updated if the | present and the route's lifetime and preference is updated if the | |||
route is already present. A route is located in the Routing Table | route is already present. A route is located in the Routing Table | |||
based on prefix, prefix length, and next-hop router. When processing | based on prefix, prefix length, and next-hop router. | |||
a Router Advertisement, a type C host first updates a ::/0 route | ||||
based on the Router Lifetime and Default Router Preference in the | ||||
Router Advertisement message header. Then as the host processes | ||||
Route Information Options in the Router Advertisement message body, | ||||
it updates its routing table for each such option. The Router | ||||
Preference and Lifetime values in a ::/0 Route Information Option | ||||
override the preference and lifetime values in the Router | ||||
Advertisement header. | ||||
For example, suppose hosts receive a Router Advertisement from | For example, suppose hosts receive 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, a type A host will have an entry for router X in its | Advertisement, a type A host will have an entry for router X in its | |||
Default Router List with lifetime 100 seconds. If a type B host | Default Router List with lifetime 100 seconds. If a type B host | |||
receives the same Router Advertisement, it will have an entry in its | receives the same Router Advertisement, it will have an entry in its | |||
Default Router List for router X with Medium preference and lifetime | ||||
Draves Expires June 2004 6 | Draves Expires June 2004 6 | |||
Default Router List for router X with Medium preference and lifetime | ||||
100 seconds. A type C host will have an entry in its Routing Table | 100 seconds. A type C host will have an entry in its Routing Table | |||
for ::/0 -> router X, with Low preference and lifetime 200 seconds. | for ::/0 -> router X, with Low preference and lifetime 200 seconds. | |||
A type C host MAY have a transient state, during processing of the | A type C host MAY have a transient state, during processing of the | |||
Router Advertisement, in which it has an entry in its Routing Table | Router Advertisement, in which it has an entry in its Routing Table | |||
for ::/0 -> router X with Medium preference and lifetime 100 | for ::/0 -> router X with Medium preference and lifetime 100 | |||
seconds. | seconds. | |||
3.2. Conceptual Sending Algorithm for Hosts | 3.2. Conceptual Sending Algorithm for Hosts | |||
Type A hosts use the conceptual sending algorithm described in | Type A hosts use the conceptual sending algorithm described in | |||
Neighbor Discovery [RFC2461]. | Neighbor Discovery [RFC2461]. | |||
When a type B host does next-hop determination and consults its | When a type B host does next-hop determination and consults its | |||
Default Router List, it primarily prefers reachable routers over | Default Router List, it primarily prefers reachable routers over | |||
non-reachable routers and secondarily uses the router preference | non-reachable routers and secondarily uses the router preference | |||
values. If the host has no information about the routerÆs | values. If the host has no information about the router's | |||
reachability then the host assumes the router is reachable. | reachability then the host assumes the router is reachable. | |||
When a type C host does next-hop determination and consults its | When a type C host does next-hop determination and consults its | |||
Routing Table for an off-link destination, it first prefers | Routing Table for an off-link destination, it first prefers | |||
reachable routers over non-reachable routers, second uses longest- | reachable routers over non-reachable routers, second uses longest- | |||
matching-prefix, and third uses route preference values. Again, if | matching-prefix, and third uses route preference values. Again, if | |||
the host has no information about the routerÆs reachability then the | the host has no information about the router's reachability then the | |||
host assumes the router is reachable. | host assumes the router is reachable. | |||
If there are no routes matching the destination (i.e., no default | If there are no routes matching the destination (i.e., no default | |||
routes and no more-specific routes), then if a type C host has a | routes and no more-specific routes), then a type C host SHOULD | |||
single interface then it SHOULD assume the destination is on-link to | discard the packet and report a Destination Unreachable / No Route | |||
that interface. If the type C host has multiple interfaces then it | To Destination error to the upper layer. | |||
SHOULD discard the packet and report a Destination Unreachable / No | ||||
Route To Destination error to the upper layer. | ||||
3.3. Destination Cache Management | 3.3. Destination Cache Management | |||
When a type C host processes a Router Advertisement and updates its | When a type C host processes a Router Advertisement and updates its | |||
conceptual Routing Table, it MUST invalidate or remove Destination | conceptual Routing Table, it MUST 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. | affected by the Routing Table changes. | |||
3.4. Client Configurability | 3.4. Client Configurability | |||
skipping to change at line 382 | skipping to change at line 379 | |||
override the values in Router Advertisements received. This is | override the values in Router Advertisements received. This is | |||
especially useful for dealing with routers which may not support | especially useful for dealing with routers which may not support | |||
preferences. | preferences. | |||
3.5. Router Reachability Probing | 3.5. Router Reachability Probing | |||
When a host avoids using any non-reachable router X and instead | When a host avoids using any non-reachable router X and instead | |||
sends a data packet to another router Y, and the host would have | sends a data packet to another router Y, and the host would have | |||
used router X if router X were reachable, then the host SHOULD probe | used router X if router X were reachable, then the host SHOULD probe | |||
each such router X's reachability by sending a single Neighbor | each such router X's reachability by sending a single Neighbor | |||
Solicitation to that router's address. A host MUST NOT probe a | ||||
Draves Expires June 2004 7 | ||||
Solicitation to that routerÆs address. A host MUST NOT probe a | ||||
router's reachability in the absence of useful traffic that the host | 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, | would have sent to the router if it were reachable. In any case, | |||
Draves Expires June 2004 7 | ||||
these probes MUST be rate-limited to no more than one per minute per | these probes MUST be rate-limited to no more than one per minute per | |||
router. | 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 until the next Router Advertisement is | |||
sent by X. Note that the router may have been unreachable for | ||||
reasons other than being down (e.g., a switch in the middle being | ||||
down), so it may be up to 30 minutes (the maximum advertisement | ||||
period) before the next Router Advertisement would be sent. | ||||
For a type A host (following the algorithm in [RFC2461]), no probing | ||||
is needed since all routers are equally preferable. A type B or C | ||||
host, on the other hand, explicitly probes unreachable, preferable | ||||
routers to notice when they become reachable again. | ||||
3.6. Example | 3.6. Example | |||
Suppose a type C host has four entries in its Routing Table: | Suppose a type C host has four entries in its Routing Table: | |||
::/0 -> router W with Medium preference | ::/0 -> router W with Medium preference | |||
2001::/16 -> router X with Medium preference | 2001::/16 -> router X with Medium preference | |||
3ffe::/16 -> router Y with High preference | 3ffe::/16 -> router Y with High preference | |||
3ffe::/16 -> router Z with Low preference | 3ffe::/16 -> router Z with Low preference | |||
and the host is sending to 3ffe::1, an off-link destination. If all | and the host is sending to 3ffe::1, an off-link destination. If all | |||
routers are reachable, then the host will choose router Y. If router | routers are reachable, then the host will choose router Y. If router | |||
skipping to change at line 429 | skipping to change at line 435 | |||
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. This arbitrary bound is meant to | Router Advertisements per link. This arbitrary bound is meant to | |||
reinforce that relatively few and carefully selected routes should | reinforce that relatively few and carefully selected routes should | |||
be advertised to hosts. | be 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. | from metrics: the preference values should be configured. | |||
The information contained in Router Advertisements may change | ||||
through actions of system management. For instance, the lifetime or | ||||
Draves Expires June 2004 8 | ||||
preference of advertised routes may change, new routes could be | ||||
added, etc. In such cases, the router MAY transmit up to | ||||
MAX_INITIAL_RTR_ADVERTISEMENTS unsolicited advertisements, using the | ||||
same rules as in [RFC2461]. When ceasing to be an advertising | ||||
interface and sending Router Advertisements with a Router Lifetime | ||||
of zero, the Router Advertisement SHOULD also set the Route Lifetime | ||||
to zero in all Route Information Options. | ||||
4.1. Guidance to Administrators | 4.1. Guidance to Administrators | |||
The High and Low (non-default) preference values should only be used | The High and Low (non-default) preference values should only be used | |||
when someone with knowledge of both routers and the network topology | when 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. | |||
Draves Expires June 2004 8 | ||||
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, should configure the | through a firewall that blocks general traffic, should configure the | |||
router to advertise a Low Default Router Preference. | router to advertise a Low Default Router Preference. | |||
In addition, the administrator of a router should configure the | In addition, the administrator of a router should configure the | |||
router to advertise a specific route for the site prefix of the | router to advertise a specific route for the site prefix of the | |||
network(s) to which the router belongs. The administrator may also | network(s) to which the router belongs. The administrator may also | |||
configure the router to advertise specific routes for directly | configure the router to advertise specific routes for directly | |||
connected subnets and any shorter prefixes for networks to which the | connected subnets and any shorter 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 should advertise itself as a default router, but with a | the tunnel should advertise itself as a default router, but with a | |||
Low preference. Furthermore the corporate router should advertise a | Low preference. Furthermore the corporate router should 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. | |||
It is worth noting that the network administrator setting up | ||||
preferences and/or more specific routes in Routing Advertisements | ||||
typically does not know which kind of nodes (Type A, B, and/or C) | ||||
will be connected to its links. This requires that the administrator | ||||
will need to configure the settings that will work in an optimal | ||||
fashion no matter which kinds of nodes will be attached. | ||||
5. Examples | 5. Examples | |||
5.1. Best Router for ::/0 vs Router Least Likely to Redirect | 5.1. Best Router for ::/0 vs Router Least Likely to Redirect | |||
The best router for the default route is the router with the best | The best router for the default route is the router with the best | |||
route toward the wider internet. The router least likely to | route toward the wider Internet. The router least likely to | |||
Draves Expires June 2004 9 | ||||
redirect traffic depends on the actual traffic usage. The two | redirect traffic depends on the actual traffic usage. The two | |||
concepts can be different when the majority of communication | concepts can be different when the majority of communication | |||
actually needs to go through some other router. | actually needs to go through some other router. | |||
For example, consider a situation where you have a link with two | For example, consider 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 Iinternet.) Router X forwards native IPv6 traffic to | |||
router Y; router Y forwards 6to4 traffic to router X. If most | router Y; router Y forwards 6to4 traffic to router X. If most | |||
traffic from this site is sent to 2002:/16 destinations, then router | traffic from this site is sent to 2002:/16 destinations, then router | |||
X is the one least likely to redirect. | X is the one least likely to redirect. | |||
To make type A hosts work well, both routers should advertise | To make type A hosts work well, both routers should advertise | |||
themselves as default routers. In particular, if router Y goes down, | themselves as default routers. In particular, if router Y goes down, | |||
type A hosts should send traffic to router X to maintain 6to4 | type A hosts should send traffic to router X to maintain 6to4 | |||
connectivity, so router X as well as router Y needs to be a default | connectivity, so router X as well as router Y needs to be a default | |||
router. | router. | |||
To make type B hosts work well, router X should in addition | To make type B hosts work well, router X should in addition | |||
advertise itself with a High default router preference. This will | advertise itself with a High default router preference. This will | |||
cause type B hosts to prefer router X, minimizing the number of | cause type B hosts to prefer router X, minimizing the number of | |||
redirects. | redirects. | |||
Draves Expires June 2004 9 | ||||
To make type C hosts work well, router X should in addition | To make type C hosts work well, router X should in addition | |||
advertise the ::/0 route with Low preference and the 2002::/16 route | advertise the ::/0 route with Low preference and the 2002::/16 route | |||
with Medium preference. A type C host will end up with three routes | with Medium preference. A type C host will end up with three routes | |||
in its routing table: ::/0 -> router X (Low), ::/0 -> router Y | in its routing table: ::/0 -> router X (Low), ::/0 -> router Y | |||
(Medium), 2002::/16 -> router X (Medium). It will send 6to4 traffic | (Medium), 2002::/16 -> router X (Medium). It will send 6to4 traffic | |||
to router X and other traffic to router Y. Type C hosts will not | to router X and other traffic to router Y. Type C hosts will not | |||
cause any redirects. | cause any redirects. | |||
Note that when type C hosts process the Router Advertisement from | Note that when type C hosts process 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 | router preference. If the ::/0 specific route were not present, then | |||
a type C host would apply the High default router preference to its | a type C host would apply the High default router preference to its | |||
::/0 route to router X. | ::/0 route to 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 | In another scenario, a multi-homed host is connected to the Internet | |||
6bone/internet via router X on one link and to an isolated network | via router X on one link and to an isolated network via router Y on | |||
via router Y on another link. The multi-homed host might have a | another link. The multi-homed host might have a tunnel into a | |||
tunnel into a firewalled corporate network, or it might be directly | firewalled corporate network, or it might be directly connected to | |||
connected to an isolated test network. | an isolated test network. | |||
In this situation, a type A multi-homed host (which has no default | In this situation, a type A multi-homed host (which has no default | |||
router preferences or more-specific routes) will have no way to | router preferences or more-specific routes) will have no way to | |||
intelligently choose between the two routers X and Y on its Default | intelligently choose between the two routers X and Y on its Default | |||
Router List. Users of the host will see unpredictable connectivity | Router List. Users of the host will see unpredictable connectivity | |||
failures, depending on the destination address and the choice of | failures, depending on the destination address and the choice of | |||
router. | router. | |||
Draves Expires June 2004 10 | ||||
A multi-homed type C host in this same situation can correctly | A multi-homed type C host in this same situation can correctly | |||
choose between routers X and Y, if the routers are configured | choose between routers X and Y, if the routers are configured | |||
appropriately. For example, router X on the isolated network should | appropriately. For example, router Y on the isolated network should | |||
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 X 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 | |||
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. By | |||
document has no new appreciable impact on Internet infrastructure | advertising a specific prefix, this attack could be carried out in a | |||
security. | less noticeable way. However, this attack has no significant | |||
incremental impact on Internet infrastructure security. | ||||
Draves Expires June 2004 10 | A malicious node could also include an infinite lifetime in a Route | |||
Information Option causing the route to linger indefinitely. A | ||||
similar attack already exists with Prefix Information Options in | ||||
RFC2461, where a malicious node causes a prefix to appear as on-link | ||||
indefinitely, resulting in lack of connectivity if it is not. In | ||||
contrast, an infinite lifetime in a Route Information Option will | ||||
cause router reachability probing to continue indefinitely, but will | ||||
not result in lack of connectivity. | ||||
[RFC3756] provides more details on the trust models, and there is | ||||
work in progress in the SEND WG on securing router discovery | ||||
messages that will address these problems. | ||||
7. Acknowledgments | 7. Acknowledgments | |||
The authors 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, Bob Hinden, Christian | |||
Huitema, JINMEI Tatuya, Erik Nordmark, Pekka Savola, Kresimir | Huitema, JINMEI Tatuya, Erik Nordmark, Pekka Savola, Kresimir | |||
Segaric, and Brian Zill. The packet diagrams are derived from | Segaric, and Brian Zill. The packet diagrams are derived from | |||
Neighbor Discovery [RFC2461]. | Neighbor Discovery [RFC2461]. | |||
8. Normative References | 8. Normative References | |||
[RFC2461] Narten, T., Nordmark, E. and W. Simpson, "Neighbor | [RFC2461] Narten, T., Nordmark, E. and W. Simpson, "Neighbor | |||
Discovery for IP Version 6 (IPv6)", RFC 2461, December | Discovery for IP Version 6 (IPv6)", RFC 2461, December | |||
1998. | 1998. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
Draves Expires June 2004 11 | ||||
[RFC3775] Johnson, D., Perkins, C. and J. Arkko, "Mobility Support | ||||
in IPv6", RFC 3775, June 2004. | ||||
9. Informative References | 9. Informative References | |||
[RFC3056] Carpenter, B. and K. Moore, "Connection of IPv6 Domains | [RFC3056] Carpenter, B. and K. Moore, "Connection of IPv6 Domains | |||
via IPv4 Clouds", RFC 3056, February 2001. | via IPv4 Clouds", RFC 3056, February 2001. | |||
[RFC1933] Gilligan, R. and E. Nordmark, "Transition Mechanisms for | [RFC2983] Gilligan, R. and E. Nordmark, "Transition Mechanisms for | |||
IPv6 Hosts and Routers", RFC 1933, April 1996. | IPv6 Hosts and Routers", RFC 2893, August 2000. | |||
[RFC2080] Malkin, G. and R. Minnear, "RIPng for IPv6", RFC 2080, | [RFC2080] Malkin, G. and R. Minnear, "RIPng for IPv6", RFC 2080, | |||
January 1997. | January 1997. | |||
Author's Addresses | [RFC3756] Nikander, P., Ed., Kempf, J. and E. Nordmark, "IPv6 | |||
Neighbor Discovery (ND) Trust Models and Threats", RFC | ||||
3756, May 2004. | ||||
Authors' 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 | |||
Dave Thaler | Dave Thaler | |||
Microsoft | Microsoft | |||
One Microsoft Way | One Microsoft Way | |||
Redmond, WA 98052 | Redmond, WA 98052 | |||
Phone: +1 425 703 8835 | Phone: +1 425 703 8835 | |||
Email: dthaler@microsoft.com | Email: dthaler@microsoft.com | |||
Revision History (to be removed before publication as an RFC) | ||||
Changes from draft-ietf-ipv6-router-selection-02 | ||||
Added Dave Thaler as co-author. | ||||
Various clarifications and textual improvements. | ||||
Split all load sharing text back into a separate document. | ||||
Draves Expires June 2004 11 | ||||
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 | ||||
Specified reachability probing of otherwise more-preferred but | ||||
currently unreachable routers. | ||||
Changed the requirement of Destination Cache invalidation, from MAY | ||||
to SHOULD, but allowing flushing of the entire Destination Cache. | ||||
Added a section specifying load sharing among equivalent routers. | ||||
Changes from draft-draves-ipngwg-router-selection-01 | ||||
Specified receiver processing when the Reserved preference value is | ||||
seen. | ||||
Specified that routers SHOULD NOT send more than 17 Route | ||||
Information Options. | ||||
Added discussion of Destination Cache invalidation, allowing but not | ||||
requiring it. | ||||
Removed references to the fourth conceptual host model, host D. | ||||
Changes from draft-draves-ipngwg-router-selection-00 | ||||
Made the option variable length. Must ignore prefix bits past prefix | ||||
length. | ||||
Added more allowable router configuration scenarios, weakening the | ||||
requirement that one administrator must coordinate the configuration | ||||
of all relevant routers. | ||||
Draves Expires June 2004 12 | Draves Expires June 2004 12 | |||
Full Copyright Statement | Full Copyright Statement | |||
Copyright (C) The Internet Society (2003). All Rights Reserved. | Copyright (C) The Internet Society (2004). 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 | |||
document itself may not be modified in any way, such as by removing | document itself may not be modified in any way, such as by removing | |||
the copyright notice or references to the Internet Society or other | the copyright notice or references to the Internet Society or other | |||
Internet organizations, except as needed for the purpose of | Internet organizations, except as needed for the purpose of | |||
skipping to change at line 676 | skipping to change at line 663 | |||
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. | |||
Intellectual Property | ||||
The IETF takes no position regarding the validity or scope of any | ||||
Intellectual Property Rights or other rights that might be claimed | ||||
to pertain to the implementation or use of the technology described | ||||
in this document or the extent to which any license under such | ||||
rights might or might not be available; nor does it represent that | ||||
it has made any independent effort to identify any such rights. | ||||
Information on the procedures with respect to rights in RFC | ||||
documents can be found in BCP 78 and BCP 79. | ||||
Copies of IPR disclosures made to the IETF Secretariat and any | ||||
assurances of licenses to be made available, or the result of an | ||||
attempt made to obtain a general license or permission for the use | ||||
of such proprietary rights by implementers or users of this | ||||
specification can be obtained from the IETF on-line IPR repository | ||||
at http://www.ietf.org/ipr. | ||||
The IETF invites any interested party to bring to its attention any | ||||
copyrights, patents or patent applications, or other proprietary | ||||
rights that may cover technology that may be required to implement | ||||
this standard. Please address the information to the IETF at ietf- | ||||
ipr@ietf.org. | ||||
Draves Expires June 2004 13 | Draves Expires June 2004 13 | |||
End of changes. | ||||
This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/ |