tech-net archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: New class of receive error
Date: Sun, 13 May 2018 15:01:42 +0100
From: Roy Marples <roy%marples.name@localhost>
Message-ID: <12e84d93-9f83-359c-3fd4-17f359f289de%marples.name@localhost>
| Other OS's document ENOBUFS on recv calls.
That other OS's (by which I assume you mean linux) are broken is no reason
that we should be too.
Datagram protoctols inherently lose packets - aside from in this one very
special case, there's no way at the network level to inform the receiver of
a lost packet, as there's no way to know one was ever sent. The application
level needs to recover using its own mechanism - which could be using sequence
numbers in the packets as Christos suggested - but here I do not think can
work, as the messages come from a variety of sources (including other
processes) and there's no way to synchronise the (current) sequece numbers
(rtm_seq).
But we could add a kernel geneerated seq number - set whenever a routing
packet is generated, and delivered to the receiver - that at least would be a
application layer recovery mechanism.
Aside from dhcpcd every instance of "handling" this error is to (at most)
log it and ignore it - it really is pointless.
The routing socket is something special - it arguably should not be using the
socket interface at all - as it is puerly a local host communication mechanism,
so the local host OS knows when a packet is sent, and when one is received,
and when one is lost, and so can (reliably) inform the receiver that a packet
has been lost - but that one is a very special case (along with the mobile IP
socket, which is just the routing socket with a different name (and purpose)).
My overall opinion is that if this message is not made opt-in (whatever the
default is set to for routing sockets) then the whole mechanism should simply
be deleted.
kre
Home |
Main Index |
Thread Index |
Old Index