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

Re: shim header in every shimmed packet



Iljitsch van Beijnum wrote:

And of course, it doesn't get any simpler than simply putting in an explicit shim6 header with the context tag in every shimmed packet. This is what's on the table now.

Iljitsch,
it is not in every packet.
It is only in packets after a locator switch i.e., when the IPv6 source and/or destination are different then the ULIDs.

The question is of course whether saving 8 bytes on shimmed packets is worth the trouble relative to the added complexity of having packets with or without the header. It looks that to a large degree, this is a matter of personal taste. We're essentially increasing overhead on IPv6 by at least 1% (7.7% to 8.7% for two 1500 byte TCP packets + an ACK).

Looks like you are assuming that there will be failures all the time so that NO packet will have ULIDs=locators. If that level of failures was common in the Internet today, then I suspect we'd spend most of our time waiting for BGP to converge instead of sending emails to each other :-)


> So in these cases it makes sense to suppress the shim header. Now
> obviously it may be tricky to determine exactly when the receiver  will
> or won't need the shim header, but the good part is that we  don't have
> to figure that out now. What I'm arguing for is a  capability that
> allows a receiver to let the sender know it doesn't  need the shim
> header for a certain context (when there are no  extension headers). So
> the only thing we need is specify a capability  bit in the initial shim
> exchange that signals this, and require that  implementations suppress
> the shim header when the bit indicates this  is desired.

Isn't the receiver's ability to demux the packets to the correct context without the context tag a function of the locator sets and ULIDs that are in use?
If so I don't see how a single bit can suffice.

It seems like one would need to at a minimum covey that bit in the Update Ack message (in addition to the context establishment) so that when the peer changes its locators, the host can restate whether or not it can demux without the context tag for the new set of locators.

But the current design also uses uncoordinated teardown of the context state, which can result in one end not having any context state any more, even though the peer might send packets using that context. With the context tag in the packets that need to be rewritten by the receiver, we can detect this condition. But your 'single bit' scheme would seem to need some different way to detect this missing state. Any ideas on how to do this?

   Erik