draft-ietf-v6ops-v6onbydefault-02.txt   draft-ietf-v6ops-v6onbydefault-03.txt 
Network Working Group S. Roy Network Working Group S. Roy
Internet-Draft A. Durand Internet-Draft J. Paugh
Expires: November 5, 2004 J. Paugh Expires: February 2005 A. Durand
Sun Microsystems, Inc. Sun Microsystems, Inc.
May 7, 2004 July 2004
Issues with Dual Stack IPv6 on by Default Issues with Dual Stack IPv6 on by Default
draft-ietf-v6ops-v6onbydefault-02.txt draft-ietf-v6ops-v6onbydefault-03.txt
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 RFC2026. all provisions of Section 10 of RFC2026.
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 other Task Force (IETF), its areas, and its working groups. Note that
groups may also distribute working documents as Internet-Drafts. other groups may also distribute working documents as
Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference 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 http:// The list of current Internet-Drafts can be accessed at http://
www.ietf.org/ietf/1id-abstracts.txt. 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.
This Internet-Draft will expire on November 5, 2004. This Internet-Draft will expire on October 30, 2004.
Copyright Notice Copyright Notice
Copyright (C) The Internet Society (2004). All Rights Reserved. Copyright (C) The Internet Society (2004). All Rights Reserved.
Abstract Abstract
This document discusses problems that can occur when dual stack nodes This document discusses problems that can occur when dual stack nodes
that have IPv6 enabled by default are deployed in IPv4 or mixed IPv4 that have IPv6 enabled by default are deployed in IPv4 or mixed IPv4
and IPv6 environments. The problems include application connection and IPv6 environments. The problems include application connection
skipping to change at page 2, line 13 skipping to change at page 2, line 13
enabled by default or not. enabled by default or not.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. No IPv6 Router . . . . . . . . . . . . . . . . . . . . . . . . 3 2. No IPv6 Router . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1 Problems with Default Address Selection for IPv6 . . . . . 3 2.1 Problems with Default Address Selection for IPv6 . . . . . 3
2.2 Neighbor Discovery's On-Link Assumption Considered 2.2 Neighbor Discovery's On-Link Assumption Considered
Harmful . . . . . . . . . . . . . . . . . . . . . . . . . 5 Harmful . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3 Transport Protocol Robustness . . . . . . . . . . . . . . 6 2.3 Transport Protocol Robustness . . . . . . . . . . . . . . 6
2.3.1 TCP Implications . . . . . . . . . . . . . . . . . . . 6 3. Other Problematic Scenarios . . . . . . . . . . . . . . . . . 6
2.3.2 UDP Implications . . . . . . . . . . . . . . . . . . . 8 3.1 IPv6 Network of Smaller Scope . . . . . . . . . . . . . . 6
2.3.3 SCTP Implications . . . . . . . . . . . . . . . . . . 8 3.1.1 Alleviating the Scope Problem . . . . . . . . . . . . 7
3. Other Problematic Scenarios . . . . . . . . . . . . . . . . . 9 3.2 Poor IPv6 Network Performance . . . . . . . . . . . . . . 7
3.1 IPv6 Network of Smaller Scope . . . . . . . . . . . . . . 9 3.3 Security . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.1.1 Alleviating the Scope Problem . . . . . . . . . . . . 10 3.3.1 Mitigating Security Risks . . . . . . . . . . . . . . 8
3.2 Poor IPv6 Network Performance . . . . . . . . . . . . . . 10 4. Application Robustness . . . . . . . . . . . . . . . . . . . . 9
3.2.1 Dealing with Poor IPv6 Network Performance . . . . . . 10 5. Security Considerations . . . . . . . . . . . . . . . . . . . 9
3.3 Security . . . . . . . . . . . . . . . . . . . . . . . . . 11 6. References . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.3.1 Mitigating Security Risks . . . . . . . . . . . . . . 11 6.1 Normative References . . . . . . . . . . . . . . . . . . . . 9
4. Application Robustness . . . . . . . . . . . . . . . . . . . . 12 6.2 Informative References . . . . . . . . . . . . . . . . . . . 10
5. Security Considerations . . . . . . . . . . . . . . . . . . . 12 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 10
6. References . . . . . . . . . . . . . . . . . . . . . . . . . . 12 A. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 11
6.1 Normative References . . . . . . . . . . . . . . . . . . . . 12 B. Changes from draft-ietf-v6ops-v6onbydefault-02 . . . . . . . . 11
6.2 Informative References . . . . . . . . . . . . . . . . . . . 13 C. Changes from draft-ietf-v6ops-v6onbydefault-01 . . . . . . . . 11
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 13 D. Changes from draft-ietf-v6ops-v6onbydefault-00 . . . . . . . . 11
A. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 14 Intellectual Property and Copyright Statements . . . . . . . . 13
B. Changes from draft-ietf-v6ops-v6onbydefault-01 . . . . . . . . 14
C. Changes from draft-ietf-v6ops-v6onbydefault-00 . . . . . . . . 14
Intellectual Property and Copyright Statements . . . . . . . . 16
1. Introduction 1. Introduction
This document specifically addresses operating system implementations This document specifically addresses operating system implementations
that implement the dual stack IPv6 model, and would ship with IPv6 that implement the dual stack IPv6 model, and would ship with IPv6
enabled by default. It addresses the case where such systems are enabled by default. It addresses the case where such systems are
installed and placed in IPv4-only or mixed IPv4 and IPv6 installed and placed in IPv4-only or mixed IPv4 and IPv6
environments, and documents potential problems that users on such environments, and documents potential problems that users on such
systems could experience if the IPv6 connectivity is non-existent or systems could experience if the IPv6 connectivity is non-existent or
sub-optimal. The purpose of this document is not to try to specify sub-optimal. The purpose of this document is not to try to specify
whether IPv6 should be enabled by default or not, but to raise whether IPv6 should be enabled by default or not, but to raise
awareness of the potential issues involved. awareness of the potential issues involved.
This memo begins in Section 2 by examining problems within IPv6 This memo begins in Section 2 by examining problems within IPv6
implementations that defeat the destination address selection implementations that defeat the destination address selection
mechanism defined in [ADDRSEL] and contribute to poor IPv6 mechanism defined in [RFC3484] and contribute to poor IPv6
connectivity. Starting with Section 3 it then examines other issues connectivity. Starting with Section 3 it then examines other issues
that network software engineers and network and systems that network software engineers and network and systems
administrators should be aware of when deploying dual stack systems administrators should be aware of when deploying dual stack systems
with IPv6 enabled. with IPv6 enabled.
2. No IPv6 Router 2. No IPv6 Router
Consider a scenario in which a dual stack system has IPv6 enabled and Consider a scenario in which a dual stack system has IPv6 enabled and
is placed on a link with no IPv6 routers. The system is using IPv6 is placed on a link with no IPv6 routers. The system is using IPv6
Stateless Address Autoconfiguration [AUTOCONF], so it only has a Stateless Address Autoconfiguration [RFC2462], so it only has a
link-local IPv6 address configured. It also has a single IPv4 link-local IPv6 address configured. It also has a single IPv4
address that happens to be a private address as defined in address that happens to be a private address as defined in [RFC1918].
[PRIVADDR].
An application on this system is trying to communicate with a An application on this system is trying to communicate with a
destination whose name resolves to public and global IPv4 and IPv6 destination whose name resolves to public and global IPv4 and IPv6
addresses. The application uses an address resolution API that addresses. The application uses an address resolution API that
implements the destination address selection mechanism described in implements the destination address selection mechanism described in
Default Address Selection for IPv6 [ADDRSEL]. The application will Default Address Selection for IPv6 [RFC3484]. The application will
attempt to connect to each address, in the order they were returned, attempt to connect to each address, in the order they were returned,
until one succeeds. Since the system has no off-link IPv6 routes, until one succeeds. Since the system has no off-link IPv6 routes,
the optimal scenario would be if the IPv4 addresses returned were the optimal scenario would be if the IPv4 addresses returned were
ordered before the IPv6 addresses. The following sections describe ordered before the IPv6 addresses. The following sections describe
what things can go wrong with this scenario. what things can go wrong with this scenario.
2.1 Problems with Default Address Selection for IPv6 2.1 Problems with Default Address Selection for IPv6
The Default Address Selection for IPv6 [ADDRSEL] destination address The Default Address Selection for IPv6 [RFC3484] destination address
selection mechanism could save the application a few useless selection mechanism could save the application a few useless
connection attempts by placing the IPv4 addresses in front of the connection attempts by placing the IPv4 addresses in front of the
IPv6 addresses. This would be desired since all IPv6 destinations in IPv6 addresses. This would be desired since all IPv6 destinations in
this scenario are unreachable (there's no route to them), and the this scenario are unreachable (there's no route to them), and the
system's only IPv6 source address is inadequate to communicate with system's only IPv6 source address is inadequate to communicate with
off-link destinations even if it did have an off-link route. off-link destinations even if it did have an off-link route.
Let's examine how the destination address selection mechanism behaves Let's examine how the destination address selection mechanism behaves
in the face of this scenario when given one IPv4 destination and one in the face of this scenario when given one IPv4 destination and one
IPv6 destination. IPv6 destination.
skipping to change at page 4, line 28 skipping to change at page 4, line 27
method somewhat irrelevant, however, as an implementation of the method somewhat irrelevant, however, as an implementation of the
assumption could simply be to insert an IPv6 default on-link route assumption could simply be to insert an IPv6 default on-link route
into the system's forwarding table when the default router list is into the system's forwarding table when the default router list is
empty. The side-effect is that the rule would always determine that empty. The side-effect is that the rule would always determine that
all IPv6 destinations are reachable. Therefore, this rule will not all IPv6 destinations are reachable. Therefore, this rule will not
necessarily prefer one destination over the other. necessarily prefer one destination over the other.
The second rule, "Prefer matching scope", could prefer the IPv4 The second rule, "Prefer matching scope", could prefer the IPv4
destination over the IPv6 destination, but only if the IPv4 destination over the IPv6 destination, but only if the IPv4
destination's scope matches the scope of the system's IPv4 source destination's scope matches the scope of the system's IPv4 source
address. Since [ADDRSEL] considers private addresses (as defined in address. Since [RFC3484] considers private addresses (as defined in
[PRIVADDR]) of site-local scope, then this rule will not prefer [RFC1918]) of site-local scope, then this rule will not prefer either
either destination over the other. The link-local IPv6 source destination over the other. The link-local IPv6 source doesn't match
doesn't match the global IPv6 destination, and the "site-local" IPv4 the global IPv6 destination, and the "site-local" IPv4 source doesn't
source doesn't match the global IPv4 destination. The tie-breaking match the global IPv4 destination. The tie-breaking rule in this
rule in this case is rule 6, "Prefer higher precedence". Since IPv6 case is rule 6, "Prefer higher precedence". Since IPv6 destinations
destinations are of higher precedence than IPv4 destinations in the are of higher precedence than IPv4 destinations in the default policy
default policy table, the IPv6 destination will be preferred. table, the IPv6 destination will be preferred.
The solution in this case could be to add a new rule after rule 2 The solution in this case could be to add a new rule after rule 2
(rule 2.5) that avoids non-link-local IPv6 destinations whose (rule 2.5) that avoids non-link-local IPv6 destinations whose
selected source addresses are link-local. Of course, if the host is selected source addresses are link-local. Of course, if the host is
manually assigned a global IPv6 source address, then rule 2 will manually assigned a global IPv6 source address, then rule 2 will
automatically prefer the IPv6 destination, and there is no fix other automatically prefer the IPv6 destination, and there is no fix other
than to make sure rule 1 considers IPv6 destinations unreachable in than to make sure rule 1 considers IPv6 destinations unreachable in
this scenario. this scenario.
Fixing the destination address selection mechanism by adding such a Fixing the destination address selection mechanism by adding such a
skipping to change at page 5, line 28 skipping to change at page 5, line 26
Let's assume that the application described in Section 2 is Let's assume that the application described in Section 2 is
attempting a connection to an IPv6 address first, either because the attempting a connection to an IPv6 address first, either because the
destination address selection mechanism described in Section 2.1 destination address selection mechanism described in Section 2.1
returned the addresses in that order, or because the application returned the addresses in that order, or because the application
isn't trying the addresses in the order returned. Regardless, the isn't trying the addresses in the order returned. Regardless, the
user expects that the application will quickly connect to the user expects that the application will quickly connect to the
destination. It is therefore important that the system quickly destination. It is therefore important that the system quickly
determine that the IPv6 destination is unreachable so that the determine that the IPv6 destination is unreachable so that the
application can try the IPv4 destination. application can try the IPv4 destination.
Neighbor Discovery's [ND] conceptual sending algorithm states that Neighbor Discovery's [RFC2461] conceptual sending algorithm states
when sending a packet to a destination, if a host's default router that when sending a packet to a destination, if a host's default
list is empty, then the host assumes that the destination is on-link. router list is empty, then the host assumes that the destination is
This issue is described in detail in [ONLINK]. In summary, this on-link. This issue is described in detail in
assumption makes the unreachability detection of off-link nodes in [I-D.ietf-v6ops-onlinkassumption]. In summary, this assumption makes
the absence of a default router a lengthy operation. This is due to the unreachability detection of off-link nodes in the absence of a
the cost of attempting Neighbor Discovery link-layer address default router a lengthy operation. This is due to the cost of
resolution for each destination, and potential transport layer costs attempting Neighbor Discovery link-layer address resolution for each
associated with connection timeouts. The transport layer issues are destination, and potential transport layer costs associated with
discussed later in Section 2.3. connection timeouts. The transport layer issues are discussed later
in Section 2.3.
On a network that has no IPv6 routing and no IPv6 neighbors, making On a network that has no IPv6 routing and no IPv6 neighbors, making
the assumption that every IPv6 destination is on-link will be costly the assumption that every IPv6 destination is on-link will be costly
and incorrect. If an application has a list of addresses associated and incorrect. If an application has a list of addresses associated
with a destination and the first 15 are IPv6 addresses, then the with a destination and the first 15 are IPv6 addresses, then the
application won't be able to successfully send a packet to the application won't be able to successfully send a packet to the
destination until the attempts to resolve each IPv6 address have destination until the attempts to resolve each IPv6 address have
failed. This could take 45 seconds (MAX_MULTICAST_SOLICIT * failed. This could take 45 seconds (MAX_MULTICAST_SOLICIT *
RETRANS_TIMER * 15). This could be compounded by any transport RETRANS_TIMER * 15). This could be compounded by any transport
timeouts associated with each connection attempt, bringing the timeouts associated with each connection attempt, bringing the
skipping to change at page 6, line 25 skipping to change at page 6, line 25
long the network layer takes to determine that the IPv6 destination long the network layer takes to determine that the IPv6 destination
is unreachable, the delay associated with a connection attempt to an is unreachable, the delay associated with a connection attempt to an
unreachable destination can be compounded by the transport layer. unreachable destination can be compounded by the transport layer.
When the unreachability of a destination is obviated by the reception When the unreachability of a destination is obviated by the reception
of an ICMPv6 destination unreachable message, the transport layer of an ICMPv6 destination unreachable message, the transport layer
should make it possible for the application or API to deal with this. should make it possible for the application or API to deal with this.
It could fail the connection attempt, pass ICMPv6 errors up to the It could fail the connection attempt, pass ICMPv6 errors up to the
application, or pass them up to an API that is handling this for the application, or pass them up to an API that is handling this for the
application, etc. application, etc.
Such messages would be received in the cases mentioned in Section 2
in which a node has no default routers and NUD fails for destinations
assumed to be on-link, and when firewalls or other systems that
enforce scope boundaries send such ICMPv6 errors as described in
Section 3.1 and Section 3.3.
For cases when packets to a destination are essentially black-holed
and no ICMPv6 errors are generated, there is very little additional
remedy other than the existing timer mechanisms inside transport
layers and applications. The following transport layer implication
discussions deal with the former case, in which ICMPv6 errors are
received.
2.3.1 TCP Implications
In the case of a socket application attempting a connection via TCP,
it would be unreasonable for the application to block even after the
system has received notification that the destination address is
unreachable via an ICMPv6 Destination Unreachable message.
Following are some ways of solving TCP related delays associated with
destination unreachability when ICMPv6 errors are generated.
2.3.1.1 TCP Connection Termination
One solution for TCP is to abort connections in SYN-SENT or
SYN-RECEIVED state when it receives an ICMPv6 Destination Unreachable
message.
It should be noted that the Requirements for Internet Hosts
[HOSTREQS] document, in section 4.2.3.9., states that TCP MUST NOT
abort connections when receiving ICMP Destination Unreachable
messages that indicate "soft errors", where soft errors are defined
as ICMP codes 0 (network unreachable), 1 (host unreachable), and 5
(source route failed), and SHOULD abort connections upon receiving
the other codes (which are considered "hard errors"). ICMPv6 didn't
exist when that document was written, but one could extrapolate the
concept of soft errors to ICMPv6 Type 1 codes 0 (no route to
destination) and 3 (address unreachable), and hard errors to the
other codes. Thus, it could be argued that a TCP implementation that
behaves as suggested in this section is in conflict with [HOSTREQS].
When [HOSTREQS] was written, most applications would mostly only try
one address when establishing communication with a destination. Not
aborting a connection was a sane thing to do if re-trying a single
address was a better alternative over quitting the application
altogether. With IPv6, and especially on dual stack systems,
destinations are often assigned multiple addresses (at least one IPv4
and one IPv6 address), and applications iterate through destination
addresses when attempting connections.
Since soft errors conditions are those that would cause an
application to continue iterating to another address, TCP could
simply not make the distinction between ICMPv6 soft errors and hard
errors when in SYN-SENT or SYN-RECEIVED state. It would abort a
connection in those states when receiving any ICMPv6 Destination
Unreachable message. When in any other state, TCP would behave as
described in [HOSTREQS].
Many TCP implementations already behave this way, but others do not.
This should be noted as a best current practice in this case.
A tangential method of handling the problem in this way would be for
applications to somehow notify the TCP layer of their preference in
the matter. An application could notify TCP that it should abort a
connection upon receipt of particular ICMPv6 errors. Similarly, it
could notify TCP that it should not abort a connection. This would
allow existing TCP implementations to maintain their status quo at
the expense of increased application complexity.
Drawbacks do exist for this TCP behavior. One drawback involves a
transient problem existing at the network layer that could cause all
destinations to be unreachable for a temporary length of time. In
such a situation, the application could quickly cycle through the
destinations and return an error, when it could have let TCP retry a
destination a few seconds later when the transient problem could have
been mitigated.
Another drawback is related to the insecurity of ICMP messages.
Reacting to "soft errors" in all TCP connection states would have
significant security implications, as it would be possible for anyone
to reset established sessions, even without IP spoofing. However,
this document only proposes reacting to such errors in SYN-SENT or
SYN-RECEIVED states. These states are very short-lived, so the
window of exposure is very short and the threat is negligible.
2.3.1.2 Asynchronous Application Notification
In section 4.2.4.1, [HOSTREQS] states that there MUST be a mechanism
for reporting soft TCP error conditions to the application. Such a
mechanism (assuming one is implemented) could be used by applications
to cycle through destination addresses.
2.3.1.3 Higher Level API
Regardless of which solution is used, an API that handles connection
attempts to a destination in a transparent way could remove the
complexity from applications and handle this scenario gracefully. The
API could contain the intelligence required to resolve the hostname,
try each destination address, etc.
Such an API would also help to build applications that are protocol
independent, and would reduce the impact on applications when
transport layer behavior changes.
The drawback of this approach is the need to change applications to
use the API.
2.3.2 UDP Implications
As noted in [HOSTREQS] section 4.1.3.3, UDP implementations MUST pass
to the application layer all ICMP error messages that it receives
from the IP layer, granted that the socket used is connected. As a
result, proper handling destination unreachability by UDP
applications is the responsibility of the applications themselves.
A higher level API as mentioned in Section 2.3.1.3 could remove the
complexity from applications in this case as well.
2.3.3 SCTP Implications
According to [SCTPIMP], SCTP ignores all ICMPv6 destination
unreachable messages that do not indicate that the SCTP protocol
itself is unreachable. The existing SCTP specifications do not
suggest any action on the part of the implementation on reception of
a "soft error".
Unlike TCP, SCTP itself is multihomed and allows a user to specify a
list of addresses to connect to. Upon reception of a Destination
Unreachable Message during connection setup SCTP should attempt to
retransmit the Initiation message to one of its alternate addresses
and put the address that encountered the "soft error" into the
unreachable state. This will prevent use of the address after the
association is set-up until SCTP's heartbeat mechanism finds the
address to be reachable.
In some cases the application may not have provided a list of
addresses. In these cases it may be beneficial for SCTP, at a
minimum, to mark the address as unreachable so that the application
can acquire a notification through its application interface. In
such a case the application could then either take action upon the
address notification by aborting the connection attempt or allow
SCTP's normal timer mechanism to continue retransmitting the INIT
message to the peer's address.
There is work in progress to specify adding the support for handling
soft errors to the SCTP specification.
3. Other Problematic Scenarios 3. Other Problematic Scenarios
This section describes problems that could arise for a dual stack This section describes problems that could arise for a dual stack
system with IPv6 enabled when placed on a network with IPv6 system with IPv6 enabled when placed on a network with IPv6
connectivity. connectivity.
3.1 IPv6 Network of Smaller Scope 3.1 IPv6 Network of Smaller Scope
A network that has a smaller scope of connectivity for IPv6 as it A network that has a smaller scope of connectivity for IPv6 as it
does for IPv4 could be a problem in some cases. If applications have does for IPv4 could be a problem in some cases. If applications have
skipping to change at page 10, line 22 skipping to change at page 7, line 22
To allow applications to correctly fall back to IPv4 when IPv6 To allow applications to correctly fall back to IPv4 when IPv6
packets are destined beyond their allowed scope, the devices packets are destined beyond their allowed scope, the devices
enforcing the scope boundary must send ICMPv6 Destination Unreachable enforcing the scope boundary must send ICMPv6 Destination Unreachable
messages back to senders of such packets. The sender's transport messages back to senders of such packets. The sender's transport
layer should act on these errors as described in Section 2.3. layer should act on these errors as described in Section 2.3.
3.2 Poor IPv6 Network Performance 3.2 Poor IPv6 Network Performance
Most applications on dual stack nodes will try IPv6 destinations Most applications on dual stack nodes will try IPv6 destinations
first by default due to the Default Address Selection mechanism first by default due to the Default Address Selection mechanism
described in [ADDRSEL]. If the IPv6 connectivity to those described in [RFC3484]. If the IPv6 connectivity to those
destinations is poor while the IPv4 connectivity is better (i.e., the destinations is poor while the IPv4 connectivity is better (i.e., the
IPv6 traffic experiences higher latency, lower throughput, or more IPv6 traffic experiences higher latency, lower throughput, or more
lost packets than IPv4 traffic), applications will still communicate lost packets than IPv4 traffic), applications will still communicate
over IPv6 at the expense of network performance. There is no over IPv6 at the expense of network performance. There is no
information available to applications in this case to advise them to information available to applications in this case to advise them to
try another destination address. try another destination address.
An example of such a situation is a node which obtains IPv4 An example of such a situation is a node which obtains IPv4
connectivity natively through an ISP, but whose IPv6 connectivity is connectivity natively through an ISP, but whose IPv6 connectivity is
obtained through a configured tunnel whose other endpoint is obtained through a configured tunnel whose other endpoint is
topologically such that most IPv6 communication is done through topologically such that most IPv6 communication is done through
triangular IPv4 paths. Operational experience on the 6bone shows triangular IPv4 paths. Operational experience on the 6bone shows
that IPv6 RTT's are poor in such situations. that IPv6 RTT's are poor in such situations.
3.2.1 Dealing with Poor IPv6 Network Performance
There are few options from the end node's perspective. One is to
configure each node to prefer IPv4 destinations over IPv6. If hosts
implement the Default Address Selection for IPv6 [ADDRSEL] policy
table, IPv4 mapped addresses could be assigned higher precedence,
resulting in applications trying IPv4 for communication first. This
has the negative side-effect that these nodes will almost never use
IPv6 unless the only address published in the DNS for a given name is
IPv6, presumably because of this phenomenon.
Disabling IPv6 on the end nodes is another solution. The idea would
be that enabling IPv6 on dual stack nodes is a manual process that
would be done when the administrator knows that IPv6 connectivity is
adequate.
3.3 Security 3.3 Security
Enabling IPv6 on a host implies that the services on the host may be Enabling IPv6 on a host implies that the services on the host may be
open to IPv6 communication. If the service itself is insecure and open to IPv6 communication. If the service itself is insecure and
depends on a security policy enforced somewhere else on the network depends on a security policy enforced somewhere else on the network
(such as in a firewall), then there is potential for new attacks (such as in a firewall), then there is potential for new attacks
against the service. against the service.
A firewall may not be enforcing the same policy for IPv4 as for IPv6 A firewall may not be enforcing the same policy for IPv4 as for IPv6
traffic, which could be due to misconfiguration of the firewall. One traffic, which could be due to misconfiguration of the firewall. One
skipping to change at page 12, line 29 skipping to change at page 9, line 29
Enabling IPv6 on a dual stack node is only useful if applications Enabling IPv6 on a dual stack node is only useful if applications
that support IPv6 on that node properly cycle through addresses that support IPv6 on that node properly cycle through addresses
returned from name lookups and fall back to IPv4 when IPv6 returned from name lookups and fall back to IPv4 when IPv6
communication fails. Simply cycling through the list of addresses communication fails. Simply cycling through the list of addresses
returned from a name lookup when attempting connections works in most returned from a name lookup when attempting connections works in most
cases for most applications, but there are still cases where that's cases for most applications, but there are still cases where that's
not enough. Applications also need to be aware that the fact that a not enough. Applications also need to be aware that the fact that a
dual stack destination's IPv6 address is published in the DNS does dual stack destination's IPv6 address is published in the DNS does
not necessarily imply that all services on that destination function not necessarily imply that all services on that destination function
over IPv6. This problem, along with a thorough discussion of IPv6 over IPv6. This problem, along with a thorough discussion of IPv6
application transition guidelines, is discussed in [APPTRANS]. application transition guidelines, is discussed in
[I-D.ietf-v6ops-application-transition].
5. Security Considerations 5. Security Considerations
This document raises security concerns in Section 3.3. They are This document raises security concerns in Section 3.3. They are
summarized below: summarized below:
o Firewalls need to be configured properly to have deliberate o Firewalls need to be configured properly to have deliberate
security policies for IPv6 packets, including IPv6 packets security policies for IPv6 packets, including IPv6 packets
encapsulated in other layers. encapsulated in other layers.
o Implementations of virtual private networks need to have a o Implementations of virtual private networks need to have a
deliberate IPv6 security policy that doesn't allow packets to deliberate IPv6 security policy that doesn't allow packets to
accidentally appear in the clear when they were intended to be accidentally appear in the clear when they were intended to be
sent securely over the VPN. sent securely over the VPN.
6. References 6. References
6.1 Normative References 6.1 Normative References
[ADDRSEL] Draves, R., "Default Address Selection for Internet [I-D.ietf-v6ops-application-transition]
Protocol version 6 (IPv6)", RFC 3484, February 2003. Shin, M., "Application Aspects of IPv6 Transition",
draft-ietf-v6ops-application-transition-03 (work in
[APPTRANS] progress), June 2004.
Hong, Y-G., Hagino, J., Savola, P. and M. Castro,
"Application Aspects of IPv6 Transition", March 2004.
draft-ietf-v6ops-application-transition-02 [I-D.ietf-v6ops-onlinkassumption]
Roy, S., Durand, A. and J. Paugh, "IPv6 Neighbor Discovery
On-Link Assumption Considered Harmful",
draft-ietf-v6ops-onlinkassumption-02 (work in progress),
May 2004.
[ND] 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.
[ONLINK] Roy, S., Durand, A. and J. Paugh, "IPv6 Neighbor Discovery [RFC3484] Draves, R., "Default Address Selection for Internet
On-Link Assumption Considered Harmful", October 2003. Protocol version 6 (IPv6)", RFC 3484, February 2003.
draft-ietf-v6ops-onlinkassumption-02
6.2 Informative References 6.2 Informative References
[AUTOCONF] [I-D.ietf-tsvwg-sctpimpguide]
Thomson, S. and T. Narten, "IPv6 Stateless Address Stewart, R., "Stream Control Transmission Protocol (SCTP)
Autoconfiguration", RFC 2462, December 1998. Implementors Guide", draft-ietf-tsvwg-sctpimpguide-10
(work in progress), December 2003.
[HOSTREQS] [RFC1122] Braden, R., "Requirements for Internet Hosts -
Braden, R., "Requirements for Internet Hosts --
Communication Layers", STD 3, RFC 1122, October 1989. Communication Layers", STD 3, RFC 1122, October 1989.
[PRIVADDR] [RFC1918] Rekhter, Y., Moskowitz, R., Karrenberg, D., Groot, G. and
Rekhter, Y., Moskowitz, B., Karrenberg, D., de Groot, G. E. Lear, "Address Allocation for Private Internets", BCP
and E. Lear, "Address Allocation for Private Internets", 5, RFC 1918, February 1996.
BCP 5, RFC 1918, February 1996.
[SCTPIMP] Stewart, R., Arias-Rodriguez, I., Poon, K., Caro, A. and
M. Tuexen, "", November 2003.
draft-ietf-tsvwg-sctpimpguide-10 [RFC2462] Thomson, S. and T. Narten, "IPv6 Stateless Address
Autoconfiguration", RFC 2462, December 1998.
Authors' Addresses Authors' Addresses
Sebastien Roy Sebastien Roy
Sun Microsystems, Inc. Sun Microsystems, Inc.
1 Network Drive 1 Network Drive
UBUR02-212 UBUR02-212
Burlington, MA 01801 Burlington, MA 01801
EMail: sebastien.roy@sun.com EMail: sebastien.roy@sun.com
skipping to change at page 14, line 27 skipping to change at page 11, line 27
EMail: james.paugh@sun.com EMail: james.paugh@sun.com
Appendix A. Acknowledgments Appendix A. Acknowledgments
The authors gratefully acknowledge the contributions of Jim Bound, The authors gratefully acknowledge the contributions of Jim Bound,
Fernando Gont, Tony Hain, Tim Hartrick, Mika Liljeberg, Erik Fernando Gont, Tony Hain, Tim Hartrick, Mika Liljeberg, Erik
Nordmark, Kacheong Poon, Pekka Savola, Randall Stewart, and Ronald Nordmark, Kacheong Poon, Pekka Savola, Randall Stewart, and Ronald
van der Pol. van der Pol.
Appendix B. Changes from draft-ietf-v6ops-v6onbydefault-01 Appendix B. Changes from draft-ietf-v6ops-v6onbydefault-02
o Removed all text suggesting solutions to the problems described
by this draft.
o Removed the all sub-sections of Section 2.3 that offered solutions
to the problems being presented.
o Removed Section 3.2.1, which described a solution to dealing with
poor IPv6 network performance.
Appendix C. Changes from draft-ietf-v6ops-v6onbydefault-01
o Added specificity to the DNS resolver problem in Section 2.1. o Added specificity to the DNS resolver problem in Section 2.1.
o Added a few paragraphs in Section 2.3.1.1 describing potential o Added a few paragraphs in Section 2.3.1.1 describing potential
drawbacks to TCP aborting connections ins SYN-SENT or SYN-RECEIVED drawbacks to TCP aborting connections ins SYN-SENT or SYN-RECEIVED
state. state.
o Added Section 2.3.1.3 describing how a higher level API could be o Added Section 2.3.1.3 describing how a higher level API could be
used to manage connections. used to manage connections.
o Expanded Section 2.3.3 to describe desired SCTP behavior when o Expanded Section 2.3.3 to describe desired SCTP behavior when
encountering soft errors. encountering soft errors.
o Added a summary of security concerns to Section 5. o Added a summary of security concerns to Section 5.
o Miscellaneous editorial changes. o Miscellaneous editorial changes.
Appendix C. Changes from draft-ietf-v6ops-v6onbydefault-00 Appendix D. Changes from draft-ietf-v6ops-v6onbydefault-00
o Clarified in the abstract and introduction that the document is o Clarified in the abstract and introduction that the document is
meant to raise awareness, and not to specify whether IPv6 should meant to raise awareness, and not to specify whether IPv6 should
be enabled by default or not. be enabled by default or not.
o Shortened Section 2.2 and made reference to [ONLINK]. o Shortened Section 2.2 and made reference to
[I-D.ietf-v6ops-onlinkassumption].
o Added clarification in Section 2.3 about packets that are lost o Added clarification in Section 2.3 about packets that are lost
without ICMPv6 notification. without ICMPv6 notification.
o Section 2.3 now has subsections for TCP, UDP, and SCTP. o Section 2.3 now has subsections for TCP, UDP, and SCTP.
o Removed text in Section 2.3.1.1 suggesting that hosts usually were o Removed text in Section 2.3.1.1 suggesting that hosts usually were
only assigned one address when [HOSTREQS] was written. only assigned one address when [RFC1122] was written.
o Added text in Section 2.3.1.1 suggesting a method for applications o Added text in Section 2.3.1.1 suggesting a method for applications
to advise TCP of their preference for ICMPv6 handling. to advise TCP of their preference for ICMPv6 handling.
o Added Section 2.3.1.2. o Added Section 2.3.1.2.
o Added Section 2.3.2. o Added Section 2.3.2.
o Added Section 2.3.3. o Added Section 2.3.3.
o Strengthened wording in Section 3.1.1 to suggest that devices o Strengthened wording in Section 3.1.1 to suggest that devices
enforcing scope boundaries must send ICMPv6 Destination enforcing scope boundaries must send ICMPv6 Destination
Unreachable messages. Unreachable messages.
o Clarified that the VPN problem described in Section 3.3 is due to o Clarified that the VPN problem described in Section 3.3 is due to
a combination of the VPN software and either the on-link a combination of the VPN software and either the on-link
assumption and/or a "bad guy". assumption and/or a "bad guy".
o Shortened Section 4 and made reference to [APPTRANS]. o Shortened Section 4 and made reference to
[I-D.ietf-v6ops-application-transition].
o Miscellaneous editorial changes. o Miscellaneous editorial changes.
Intellectual Property Statement Intellectual Property Statement
The IETF takes no position regarding the validity or scope of any The IETF takes no position regarding the validity or scope of any
intellectual property or other rights that might be claimed to intellectual property or other rights that might be claimed to
pertain to the implementation or use of the technology described in pertain to the implementation or use of the technology described in
this document or the extent to which any license under such rights this document or the extent to which any license under such rights
might or might not be available; neither does it represent that it might or might not be available; neither does it represent that it
 End of changes. 

This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/