Internet DRAFT - draft-andrews-6man-fragopt
draft-andrews-6man-fragopt
Network Working Group M. Andrews
Internet-Draft ISC
Expires: February 2, 2014 Aug 2013
IPv6 Stateless Fragmentation Identification Options
draft-andrews-6man-fragopt-01.txt
Abstract
Fragmented IPv6 packets are often dropped because there is no way to
identify whether a fragment matches a otherwise permitted packet as
the L4 header information is not available on all the fragments.
The document defines hop-by-hop options that can be used to supply
the missing information in non initial fragments.
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 February 2, 2014.
Copyright Notice
Copyright (c) 2013 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 February 2, 2014 [Page 1]
Internet-Draft hop by hop frag opts Aug 2013
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. TCP and UDP Fragments . . . . . . . . . . . . . . . . . . . . . 3
3. ICMPv6 Fragments . . . . . . . . . . . . . . . . . . . . . . . 3
4. IPv4 in IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . 4
5. IPv6 in IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . 4
6. Open Questions . . . . . . . . . . . . . . . . . . . . . . . . 5
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 5
8. Security Considerations . . . . . . . . . . . . . . . . . . . . 5
9. Normative References . . . . . . . . . . . . . . . . . . . . . 5
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 5
Andrews Expires February 2, 2014 [Page 2]
Internet-Draft hop by hop frag opts Aug 2013
1. Introduction
Fragmented IPv6 packets are often dropped because there is no way to
identify whether a fragment matches a otherwise permitted packet as
the L4 header information is not available on all the fragments.
The document defines hop-by-hop options that can be used to supply
the missing information in non initial fragments.
The information required differs depending upon the L4 packet. For
TCP and UDP the source and destination ports are needed. For ICMP
the type of ICMP packet is needed.
These options are expected to be used by middle boxes (firewalls and
load balancers) and end nodes.
2. TCP and UDP Fragments
For TCP and UDP a skippable hop-by-hop option [RFC2460] (for
backwards compatibility) containing the source and destination ports
from the TCP and UDP headers is needed. To permit the use of NATs,
however undesired, the option contents are marked changeable enroute.
The option code has mnemonic PORTS and value (TBD) and is added to
all fragments of UDP and TCP packets when they are fragmented. By
adding the option to all fragments you reduce the amount of
fragmentation reassembly failures that would result if you only added
the option to non-initial fragments and were dropping non-initial
fragments without this option.
NAT should update the port fields to match those in the TCP and UDP
headers if it updates those fields as part of the NAT processing.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0|0|1| (TBD) | 4 | source port |
+---------------+---------------+---------------+---------------+
| destination port |
+-------------------------------+
3. ICMPv6 Fragments
To identify the type of ICMPv6 packet a fragment is part of the type
and code values need to be copied from the ICMPv6 header. As with
the TCP and UDP case, a skippable hop-by-hop option is required.
ICMPv6 type and code points are not changed by NAT so a immutable
Andrews Expires February 2, 2014 [Page 3]
Internet-Draft hop by hop frag opts Aug 2013
hop-by-hop option could be used.
In most cases a ICMPv6 error message won't need to be fragmented as
the maximum size of a ICMPv6
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0|0|0| (TBD) | 2 | type | code |
+---------------+---------------+---------------+---------------+
4. IPv4 in IPv6
For IPv4 in IPv6 the IPv4 source and destination addresses are
needed.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0|0|0| (TBD) | 8 | IPv4 source address ~
+---------------+---------------+---------------+---------------+
~ IPv4 source address | IPv4 destination address ~
+---------------+---------------+---------------+---------------+
~ IPv4 destination address |
+---------------+---------------+
5. IPv6 in IPv6
For IPv6 in IPv6 the IPv6 source and destination addresses are
needed.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0|0|0| (TBD) | 32 | IPv6 source address ~
+---------------+---------------+---------------+---------------+
~ IPv6 source address ~
+---------------+---------------+---------------+---------------+
~ IPv6 source address | IPv6 destination address ~
+---------------+---------------+---------------+---------------+
~ IPv6 destination address ~
+---------------+---------------+---------------+---------------+
~ IPv6 destination address |
+---------------+---------------+
Andrews Expires February 2, 2014 [Page 4]
Internet-Draft hop by hop frag opts Aug 2013
6. Open Questions
Should this be a single hop-by-hop option or multiple hop-by-hop
options?
If a single hop-by-hop option, should it include the next header
field of the fragment header or should this be implicit?
7. IANA Considerations
To be completed.
8. Security Considerations
The use of these options will expose nodes to more fragmentation
based attacks and potentially more traffic which will ultimately be
dropped if a attacker can guess which option values will be
permitted.
With the exception of the fragmentation based attacks, permitting
fragments with these options is no worse that permitting multiple un-
fragmented packets based in the same parameters.
When reassembling a packet all fragments of a packet should have a
identical fragment identification option and it should be on all
fragment or on none of the fragments.
For TCP and UDP the ports values may or may not match up with those
of the un-fragmented packet when the packet has been through a NAT.
When a packet has passed through multiple NAT boxes that are unaware
of this option both the source and destination ports may have been
changed so the ports may appear to be completely unrelated. The
source port is changed by a client NAT and the destination port is
changed by a NAT acting a load balancer.
9. Normative References
[RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6
(IPv6) Specification", RFC 2460, December 1998.
Andrews Expires February 2, 2014 [Page 5]
Internet-Draft hop by hop frag opts Aug 2013
Author's Address
M. Andrews
Internet Systems Consortium
950 Charter Street
Redwood City, CA 94063
US
Email: marka@isc.org
Andrews Expires February 2, 2014 [Page 6]