Network Working Group M. Andrews Internet-Draft ISC Updates: RFC 3542 December 13, 2011 (if approved) Intended status: Informational Expires: June 15, 2012 Forcing Fragmentation of IPv6 Packets draft-andrews-6man-force-fragmentation-00 Abstract Extend The Advanced Sockets API for IPv6 (RFC 3542) to provide a mechanism to force a Fragment header to be added to a packet. 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 June 15, 2012. Copyright Notice Copyright (c) 2011 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 the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License. Andrews Expires June 15, 2012 [Page 1] Internet-Draft Forcing Fragmentation of IPv6 Packets December 2011 Table of Contents 1. Background . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1. Reserved Words . . . . . . . . . . . . . . . . . . . . . . 3 2. Extend IPV6_USE_MIN_MTU . . . . . . . . . . . . . . . . . . . . 3 3. Extend IPV6_DONTFRAG . . . . . . . . . . . . . . . . . . . . . 3 4. Add IPV6_DOFRAG . . . . . . . . . . . . . . . . . . . . . . . . 3 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 4 6. Security Considerations . . . . . . . . . . . . . . . . . . . . 4 7. Normative References . . . . . . . . . . . . . . . . . . . . . 4 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 4 Andrews Expires June 15, 2012 [Page 2] Internet-Draft Forcing Fragmentation of IPv6 Packets December 2011 1. Background In order to avoid PMTUD [RFC 1191] in IPv6 an application must not only force packets to be fragmented at the network MTU it must also force the addition of a Fragment header to unfragmented packets otherwise PTB ICMPv6 may be sent if the packet goes through a IPv6 to IPv4 translating router [RFC 2460]. The Advanced Sockets API for IPv6 [RFC 3542] provides mechanisms to force fragmentation of packet greater than the network MTU (IPV6_USE_MIN_MTU). It also provides mechanisms to prevent fragmentation of a packet (IPV6_DONTFRAG). It however does not provide a mechanism to force a fragmentation header to be added. This document intends to add such a mechanism. There appears to be 3 viable alternatives. 1) extend IPV6_USE_MIN_MTU to force the inclusion of a Fragment header. 2) extend IPV6_DONTFRAG to signal that a Fragment header needs to be included. 3) add a new socket option like IPV6_DOFRAG. 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 [RFC 2119]. 2. Extend IPV6_USE_MIN_MTU If IPV6_USE_MIN_MTU is set to 1 then a Fragment header MUST be added to both multicast and unicast packets. If IPV6_USE_MIN_MTU is set to -1 then a Fragment header MUST be added to multicast packets. 3. Extend IPV6_DONTFRAG If IPV6_DONTFRAG is set to -1 (new value) then a Fragment header MUST be added to the packet. 4. Add IPV6_DOFRAG This is similar to IPV6_USE_MIN_MTU in that it is a tri-state flag. When set to -1 a Fragment header MUST be added to multicast packets. When set to 1 a Fragment header MUST be added to both multicast and unicast packets. When set to 0 a Fragment header is only added if Andrews Expires June 15, 2012 [Page 3] Internet-Draft Forcing Fragmentation of IPv6 Packets December 2011 fragmentation would otherwise happen. int on = 1; setsockopt(fd, IPPROTO_IPV6, IPV6_DOFRAG, &on, sizeof(on)); Setting IPV6_DONTFRAG to 1 will force IPV6_DOFRAG to 0. Setting IPV6_DOFRAG to 1 or -1 will force IPV6_DONTFRAG to 0. 5. IANA Considerations No IANA Considerations. 6. Security Considerations TBA 7. Normative References [RFC 1191] Mogul, J. and S. Deering, "Path MTU Discovery", RFC 1191, November 1990. [RFC 2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [RFC 2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 (IPv6) Specification", RFC 2460, December 1998. [RFC 3542] Stevens, W., Thomas, M., Normark, E., and T. Jinmei, "Advanced Sockets Application Program Interface (API) for IPv6", RFC 2003, May 2003. Andrews Expires June 15, 2012 [Page 4] Internet-Draft Forcing Fragmentation of IPv6 Packets December 2011 Author's Address Mark Andrews Internet Systems Consortium 950 Charter Street Redwood City, CA 94063 US Email: marka@isc.org Andrews Expires June 15, 2012 [Page 5]