[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Comments on WIMP and MTU Handling
> - Run the ID/Loc separation between the Network and Transport
> layers instead.
> - Reduce the MTU presented to upper layers, so that there is
> always room for the optional header.
>
> If you choose the second option, though, there is no advantage to
> mechanisms that try to avoid the need to add a header (such as the
> special next header values used in NOID).
If I understand you correctly the issue appears when the shim adds
different amount of headers depending on its state.
For instance, in the NOID case it would add bytes to the packet when
establishing the host-pair context state but once that state
is established there are no bytes added.
One can view this as an artifact of the piggybacking of the ULP messages
on the state establishment protocol.
There are multiple approaches to this that do not require
moving the shim above fragmentation:
- Make the piggybacking dynamic. If the ULP message plus the shim message
fit in one packet do the piggybacking. Otherwise send two separate
packets. (If the context is created due to a TCP open exchange this will
piggyback since the SYN packets are small.)
- Make the interface between the transports and IP handle more dynamic
MTUs. The transport packetization could ask IP "how large packet can I send
now" where the answer is a function of the state of the host-pair context
in the shim layer.
- As you suggest, lower the MTU that the transport sets to take
into account the maximum amount of shim-layer header that might be
added by the shim. But this is more pessimistic than the above two choices.
Erik