[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: I-D ACTION:draft-ietf-v6ops-application-transition-00.txt



I have a couple of general comments and then some details.

General: 

1) The document still needs quite a lot of work on (minor) errors in
English and so on. I have not tackled this.

2) I think there is a need to "spam" people with experience in porting applications
for their comments on this draft.
Details:

> 2. Overview of IPv6 application transition
> 
>      The transition of an application can be classifed using four
>      different cases (excluding the first case when there is no IPv6
>      support either in the application or the operating system), as
>      follows:
> 
>       +-------------------+
>       |       appv4       | (appv4 - IPv4-only applications)
>       +-------------------+
>       |     TCP / UDP     | (transport protocols)
>       +-------------------+
>       |    IPv4 | IPv6    | (IP protocols supported/enabled in the OS)
>       +-------------------+
> 
>       Case 1. IPv4 applications in a dual-stack node

These days we have to consider SCTP, DCCP etc too.

> 5.1 Presentation format for an IP address

This section should refer to draft-main-ipaddr-text-rep-00.txt

It should also mention the different format defined in RFC 2821
(i.e. [IPv6:...] )

> 5.4.3 Storage of IP addresses
...
>      Instead of using IP addresses, applications should use FQDNs.
>      Hence, applications delegate the resolution of the IP addresses to
>      the name resolution system, which will return the associated IP
>      address at the moment of the query.

This makes it sound too easy. I think that in some contexts (such as
massive peer to peer systems, or highly dynamic networking) this is bad
advice. Even in normal situations, it may be appropriate to cache addresses
for a considerable time. I would rewrite as

  When possible, applications should store names, such as FQDNs, instead
  of storing addresses. In this case applications are only bound to specific
  addresses at run time, or for the duration of a cache lifetime. Other types 
  of application, such as massive peer to peer systems with their own  
  rendez-vous and discovery mechanisms, may need to cache addresses for 
  performance reasons, but cached addresses should not be treated as permanent, 
  reliable information. In highly dynamic networks any form of name resolution 
  may be impossible, and here again addresses must be cached.

> 7. Transition mechanism considerations
> 
>      A mechanism, [NAT-PT], introduces a special set of addresses,
>      formed of NAT-PT prefix and an IPv4 address; this refers to IPv4
>      addresses, translated by NAT-PT DNS-ALG.  In some cases, one might
>      be tempted to handle these differently.
> 
>      However, IPv6 applications must not be required to distinguish
>      "normal" and "NAT-PT translated" addresses (or any other kind of
>      special addresses, including the IPv6-mapped IPv4-addresses):  that
>      would be completely unscalable, and if such distinction must be
>      made, it must be done elsewhere (e.g. kernel, system libraries).

I'm not sure why it would be unscalable - messy, yes, but not unscalable.
Also, what if an application *wants* to treat a NAT-PT based session differently
(i.e. implement some legacy features because it knows that the other end
is IPv4)? Shouldn't the socket API be capable of telling the upper layer
"this address was translated"?

    Brian