>>>>> On Thu, 11 Apr 2002 18:26:32 +0200 (CEST),
>>>>> Erik Nordmark <[EMAIL PROTECTED]> said:
> Is there a middle ground where the API can be made more clear
> than using "-1" without having to replace IPV6_USE_MIN_MTU?
> We already have IPV6_option and IPV6_MULTICAST_option in some cases.
> Thus would it make sense to
> 1) declare the IPV6_USE_MIN_MTU only applies to unicast.
> 2) define a new IPV6_MULTICAST_USE_MIN_MTU whose default would be "true".
This is essentially the same idea of the original proposal...the
problem of this approach is that programmers would wonder "why
does IPV6_USE_MIN_MTU not contain "UNICAST" but the use of it is
limited to unicast?". I don't think this makes the API "more clear".
Either way we'll need to describe the background and its limitation
clearly, and if so, I'd prefer to keep the number of options.
Actually I can make a compromise with either approach *if we can make
a quick consensus*. To make the approach I proposed clearer, I've
attached concrete text for the revised version of IPV6_USE_MIN_MTU
according to my proposal. If we can live with this (though you may
prefer the other one), please let us go.
Thanks,
JINMEI, Tatuya
Communication Platform Lab.
Corporate R&D Center, Toshiba Corp.
[EMAIL PROTECTED]
===
11.1. Sending with the Minimum MTU
Unicast applications should usually let the kernel to 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.
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
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,
x == -1: use kernel default. That is, perform path MTU discovery
for unicast, and disable it for multicast.
x == 0: always perform path MTU discovery.
x >= 1: always disable path MTU discovery and send packets at
the minimum MTU.
(values less than -1 are invalid.)
For 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));
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]
--------------------------------------------------------------------