Network Working Group                                         M. Andrews
Internet-Draft                                                       ISC
Intended status: Informational                          October 15, 2015
Expires: April 17, 2016


                  TCP Fails To Respect IPV6_USE_MINMTU
                draft-andrews-tcp-and-ipv6-use-minmtu-00

Abstract

   The IPV6_USE_MINMTU socket option is used to set the maximum IPv6
   packet size to be used on a socket.  Many implementations of TCP
   running over IPv6 neglect to check the IPV6_USE_MINMTU value when
   performing MSS negotiation and when contructing a TCP segment.  This
   lead to oversized IPv6 packets being sent resulting in unintended
   Path Maximum Transport Unit Discovery (PMTUD) being performed and to
   fragmented IPv6 packets being sent.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at http://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on April 17, 2016.

Copyright Notice

   Copyright (c) 2015 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of



Andrews                  Expires April 17, 2016                 [Page 1]


Internet-Draft           tcp-and-ipv6-use-minmtu            October 2015


   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
     1.1.  Reserved Words  . . . . . . . . . . . . . . . . . . . . .   2
   2.  MSS Negotiation . . . . . . . . . . . . . . . . . . . . . . .   2
   3.  Segment Size Calculation  . . . . . . . . . . . . . . . . . .   3
   4.  Current Usage . . . . . . . . . . . . . . . . . . . . . . . .   3
   5.  Normative References  . . . . . . . . . . . . . . . . . . . .   3
   Author's Address  . . . . . . . . . . . . . . . . . . . . . . . .   3

1.  Introduction

   The IPV6_USE_MINMTU [RFC3542] socket option is used to set the
   maximum IPv6 packet size to be used on a socket.  Many
   implementations of TCP running over IPv6 neglect to check this value
   when performing MSS negotiation and when contructing a TCP segment.
   This lead to oversized IPv6 packets being sent resulting unintended
   PMTUD [RFC1191] being performed and to fragmented IPv6 packets being
   sent.

   TCP when running over IPv6 SHOULD check the state of the
   IPV6_USE_MINMTU when performing MSS negotiation.  TCP implementions
   already use learnt PMTU and interface MTU when performing MSS
   negotiation.

   TCP, when running over IPv6, SHOULD check the state of the
   IPV6_USE_MINMTU when calculating the segment size to send.  TCP
   implementions already use learnt PMTU and interface MTU when
   performing calculating the segment size to send.

1.1.  Reserved Words

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in [RFC2119].

2.  MSS Negotiation

   TCP when running over IPv6 SHOULD check the state of the
   IPV6_USE_MINMTU when performing MSS negotiation.  If the value of
   IPV6_USE_MINMTU is one (1) then the application has requested that
   PMTUD not be performed on the is socket and that IPv6 packets be sent
   at a size no greater then the network minumum MTU of 1280 bytes.
   This means that the TCP MSS negotiation size SHOULD be no bigger than




Andrews                  Expires April 17, 2016                 [Page 2]


Internet-Draft           tcp-and-ipv6-use-minmtu            October 2015


   1220 (1280 - 40 - 20) to account for the IPv6 header and the TCP
   header and MAY be smaller.

   If this negotiation is properly performed then PMTUD of reply traffic
   should not normally occur.

3.  Segment Size Calculation

   TCP when running over IPv6 SHOULD check the state of the
   IPV6_USE_MINMTU when calculation the next segment to send.  If the
   value of IPV6_USE_MINMTU is one (1) them the maximum segment size
   SHOULD be 1220.

   If the TCP layer neglects to check the value of IPV6_USE_MINMTU and
   it is one (1), the packet, when passed to the IPv6 layer, will be
   fragmented if the resulting packet is bigger that 1280 octets.  This
   can result in communications failures due too itermediate nodes not
   passing fragmented packets.

4.  Current Usage

   The IPV6_USE_MINMTU and TCP are used together in DNS nameservers as
   TCP message streams are normally no more than a couple of IPv6
   packets, there are lots of servers / clients and there are external
   time contraints where recovery from lost ICMPv6 PTB will fall outside
   of the time constraint window.

5.  Normative References

   [RFC1191]  Mogul, J. and S. Deering, "Path MTU discovery", RFC 1191,
              DOI 10.17487/RFC1191, November 1990,
              <http://www.rfc-editor.org/info/rfc1191>.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/
              RFC2119, March 1997,
              <http://www.rfc-editor.org/info/rfc2119>.

   [RFC3542]  Stevens, W., Thomas, M., Nordmark, E., and T. Jinmei,
              "Advanced Sockets Application Program Interface (API) for
              IPv6", RFC 3542, DOI 10.17487/RFC3542, May 2003,
              <http://www.rfc-editor.org/info/rfc3542>.

Author's Address







Andrews                  Expires April 17, 2016                 [Page 3]


Internet-Draft           tcp-and-ipv6-use-minmtu            October 2015


   M. Andrews
   Internet Systems Consortium
   950 Charter Street
   Redwood City, CA  94063
   US

   Email: marka@isc.org












































Andrews                  Expires April 17, 2016                 [Page 4]