[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
state loss detection
Hi,
It just occurred to me that the state loss problem may not be as
intractable as we thought.
The problem is that when (for instance) a host taking part in the
shim6 protocol reboots, and it sees shimmed packets when it gets back
on its feet again, it gets confused. If the packets that are
rewritten by the shim only have their addresses rewritten, the
checksum on those packets will be invalid, the packet will be dropped
and the source host doesn't get to hear about it so the failure won't
be detected until there is a timeout.
However, as I wrote in a draft a while ago, it may be a good idea to
rewrite the checksum too, in order to avoid confusing firewalls and
the like unnecessarily, and to maintain compatibility with NICs that
do checksum offloading. (Although I'm not familiar with ones that do
this for IPv6.)
With the checksum rewritten as well, the packet will flow through the
shim layer without any action as there is no state, and the upper
layer will generate an error, such as a TCP RST.
In and of itself this doesn't provide the host that still has state
with the information it needs to recover from the remote state loss
(it could have been a legitimate RST that was shimmed), but it
wouldn't be huge imposition to send a shim state refresh when this
happens.
For TCP and UDP where the host with the state loss used an ephemeral
port this should work well. I'm not sure what happens when an UDP
server does when it sees packets for an unknown "session". For non-
UDP/TCP protocols the transport protocol would probably have to
trigger a shim state refresh.