[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Flow label versus Extension header - protocol itself



Francis Dupont wrote:
 In your previous mail you wrote:

Dealing with the same header for different purposes in different places in the header sequence doesn't make an implementation easier.

=> the price has been already paid for Mobile IPv6...

Yes, but that doesn't mean we want to pay again for shim6.

So while this might be viewed as conceptually simple, and implementation needs to verify that a particular option (such as the MIPv6 one) is not present in the wrong "type" (aka "placement") of destination option.
=> note this check will be needed by an extension header too.

I don't think so. The receiver can be liberal in what it accepts when it comes to the order of extension headers. The only exception is ESP and AH which might want to, for security as opposed to functionality reasons, check what extension headers are before and/or after.


and the additional 2 byte overhead for destination options

=> there will be no real overhead if the proposed extension header
will be 8 byte aligned and the tag length a power of two.

In any case the minimum thing we can add to e.g. a IPv6+TCP packet, is an 8 byte extension header; doesn't matter whether this is a destinations options header or a "shim6" header.
But the overhead is due to the destination options header implying an extra 16 bits for the option type and length. Thus a minimum size destination options header would be
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Header | Hdr Ext Len | Option Type | Opt Data Len |


+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

    |       32 bit option value = shim6 payload                     |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Whereas with a separate extension header the minimum is
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Header | Hdr Ext Len | |


+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +

    |       48 bit option value = shim6 payload                     |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Hence the destination option approach has 16 bit more overhead.
The criticality of this depends on how big we need the shim6 payload to be. The "firewall uniformity" argument implies that we want to use the same approach for the shim6 control messages and the data messages.
Thus we need a "message type" field.
And we need a context tag. Some people has expressed that they think that 20 bits is too little; not clear to me how many context we want one host to be able to support.
I hope we can design the state management so that the shim6 payload doesn't need to carry its own checksum.


But in any case, this is just one of the items to consider when comparing the destinations options approach with an extension header approach.

=> how do you address my concern about new extension header handling
(BTW more not handling :-) by classifiers/filters/etc?

There are actually two potential issues in here: implementation and policy.
1. Current classifiers/filters etc would not have code that can deal with either a new shim6 destination option, or a new shim6 extension header. Thus for classifiers/filters in firewalls and elsewhere to be able to make decisions about the content, there would need to be new code written in either case. With an extension header approach there would also need to be code to find the next extension header, but given that we can design the extension header to have the type/len in the same place as other headers this change is trivial compared to the other necessary changes.


2. Existing (and future) IPv6 firewalls might have various policies that allow or block packets with destination options header independent of content, or allow or block such packets based on the actual options.

I suspect that the firewall mindset is that "anything unknown should be dropped", but I don't know what policies folks currently operate with.
It does seem odd to have a firewall policy which allows destination options independent of the options contained therein, so I would not assume that a shim6 destination option can silently sneak by a firewall.


   Erik