On Mon, 19 Aug 2013, C. M. Heard wrote:
> On Tue, 6 Aug 2013, Mark Andrews wrote:
> > http://www.ietf.org/id/draft-andrews-6man-fragopt-01.txt
...
> In answer to to the open questions, I would suggest using a single
> option code and making the protocol explicit. The strategy of
> leaving the protcol implicit leads to ambigiuities (e.g., between
> TCP, UDP, and UDP-lite). I would also suggest judicious use of
> padding to align 4 and 8 bytes quantities on natural boundaries.
It occurs to me that instead of having a different option format for
every single upper-layer protocol, one could instead just package
the portion of the header chain (extension headers, if any, and
upper-layer header) that appears after the fragmentation header in
the initial fragment. That would require only a single option code,
would apply to all present and future upper-layer protocols, and
would provide the requisite upper-layer information in a form that
those who want it must already know how to parse. The option would
look like this:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0|0|1| (TBD) | Opt Data Len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ Portion of header chain following offset=0 fragment header +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The type would be chosen to indicate that the option is mutable and
is to be skipped if it is not recognized. The alignment requirement
would be 8n+6, since the upper-layer header and any preceding
extension headers always are aligned on 8-octet boundaries.
Here are some other suggestions:
- Make this a destination option that appears before the
fragmentation header, not a hop-by-hop option, as discussed in a
previous e-mail in this thread.
- This option MUST NOT appear in an initial fragment (or in an
unfragmented fatagram). That avoids the possibiity that a
middlebox will interpret a datagram differently from an end system
(or another middlebox).
- New end-system implementations MUST have the capability to insert
this option in non-initial fragments. That capability MUST be
configurable, and the default SHOULD be to insert the option.
- If a forwarding node discards a packet containing this option, it
MUST be the result of a configurable policy, and not just the
result of a failure to recognize the option. By default, the
policy SHOULD be the same that the node would apply to an initial
fragment with the same header chain that is in the option, and
that in turn SHOULD be the same policy that the node would apply
to an unfragmented datagram with the same header chain (less the
fragmentation header).
- A forwarding node that rewrites the flow label MAY use the
information available in this option for that purpose.
- An end system is not required to process this option. However, if
it does, it SHOULD ensure that the copies the upper-layer in the
various fragments match what appears in the initial fragment, and
that the option does not appear in an initial fragment (or in an
unfragmented datagram). [Define codes and pointers for an ICMPv6
Parameter Problem message that indicates these situations.]
Acknowledgments to draft-ietf-6man-ext-transmit-03 for some stolen
text.
Item for discussion: does it really matter whether or not this
option is marked as mutable? It would not be covered by an
Authetication Header in any case since "AH is applied only to whole
IP datagrams (not to IP fragments)" [RFC 2402] and this option is
inserted only after fragmentation. A NAT does not respect
immutability (as defined in RFC 2402), so the possibility of a NAT
being on the path does not seem like a good reason to mark it
mutable. On the other hand, what benefit could there be from
marking it as immutable?
Mike Heard
--------------------------------------------------------------------
IETF IPv6 working group mailing list
[email protected]
Administrative Requests: https://www.ietf.org/mailman/listinfo/ipv6
--------------------------------------------------------------------