As some of you have already noticed, I submitted a new version of the
advanced API (rfc2292bis) draft.

The only change (other than minor wording nits) is as follows:

-  Revised the "minimum MTU" section so that path MTU discovery would
   be disabled for multicast by default.  A new (default) value "-1" as
   an argument was introduced accordingly.
(from Change History section)

To be more accurate, I've attached the whole section at the end of
this message.

I believe the change was based on the consensus on the list and we
can proceed to the next step with this version, but if you see any
problems please let me know.

Thanks,

                                        JINMEI, Tatuya
                                        Communication Platform Lab.
                                        Corporate R&D Center, Toshiba Corp.
                                        [EMAIL PROTECTED]

p.s. I've also implemented the change in the latest snapshot of our
implementation.

11.1.  Sending with the Minimum MTU

   Unicast applications should usually let the kernel perform path MTU
   discovery, as long as the kernel support it, and should not care
   about the path MTU.  Some applications, however, might not want to
   incur the overhead of path MTU discovery, especially if the
   applications only send a single datagram to a destination.  A
   potential example is a DNS server.

   Also, path MTU discovery for multicast has severe scalability
   limitations and should thus be avoided by default.  Applications
   sending multicast traffic should explicitly enable path MTU discovery
   only when they understand that the benefit of possibly larger MTU
   usage outweights the possible impact of MTU discovery for active
   sources across the delivery tree(s).  This default behavior is based
   on today's available MTU path discovery mechanism and may change in
   the future once better scalable mechanisms are sufficiently
   ubiquitously available.

   This specification defines a mechanism to avoid path MTU discovery by
   sending at the minimum IPv6 MTU [RFC-2460].  If the packet is larger
   than the minimum MTU and this feature has been enabled the IP layer
   will fragment to the minimum MTU.  To control the policy about path
   MTU discovery, applications can use the IPV6_USE_MIN_MTU socket



draft-ietf-ipngwg-rfc2292bis-07.txt                            [Page 45]

INTERNET-DRAFT        Advanced Sockets API for IPv6        Apr. 19, 2002


   option.

   As described above, the default policy should depend on whether the
   destination is unicast or multicast.  For unicast destinations path
   MTU discovery should be performed by default.  For multicast
   destinations path MTU discovery should be disabled by default.  This
   option thus takes the following three types of integer arguments:

       -1: Perform path MTU discovery for unicast destinations but do
           not perform it for multicast destinations.  Packets to multicast
           destinations are therefore sent with the minimum MTU.
       0: always perform path MTU discovery.
       1: always disable path MTU discovery and send packets at the
          minimum MTU.

   The default value of this option is -1.  Values other than -1, 0, and
   1 are invalid, and an error EINVAL will be returned for those values.

   As an example, if a unicast application intentionally wants to
   disable path MTU discovery, it will add the following lines:

       int  on = 1;
       setsockopt(fd, IPPROTO_IPV6, IPV6_USE_MIN_MTU, &on, sizeof(on));

   Note that this API intentionally excludes the case where the
   application wants to perform path MTU discovery for multicast but to
   disable it for unicast.  This is because such usage is not feasible
   considering a scale of performance issues around whether to do path
   MTU discovery or not.  When path MTU discovery makes sense to a
   destination but not to a different destination, regardless of whether
   the destination is unicast or multicast, applications either need to
   toggle the option between sending such packets on the same socket, or
   use different sockets for the two classes of destinations.

   This option can also be sent as ancillary data.  In the cmsghdr
   structure containing this ancillary data, the cmsg_level member will
   be IPPROTO_IPV6, the cmsg_type member will be IPV6_USE_MIN_MTU, and
   the first byte of cmsg_data[] will be the first byte of the integer.
--------------------------------------------------------------------
IETF IPng Working Group Mailing List
IPng Home Page:                      http://playground.sun.com/ipng
FTP archive:                      ftp://playground.sun.com/pub/ipng
Direct all administrative requests to [EMAIL PROTECTED]
--------------------------------------------------------------------

Reply via email to