Issue12

Issue Title Lost GIMPS-Confirm Handling
Document: GIMPS Protocol Specification v04 Section: 9.11 part
Category: Technical Priority: Must Fix
Status: Closed

Created on 2005-01-07.15:54:34 by reh, last changed 2005-03-02.16:00:23.

Messages
msg54 Author: reh Date: 2005-03-02.16:00:23
This issue has been implemented in the latest -05 version (the message
processing is decribed in section 5.3.3).
msg48 Author: reh Date: 2005-02-10.23:37:08
The following is a proposed approach to addressing this issue.

Notionally, we should distinguish between two cases:
a) where the Responding node is already prepared to store per-flow state after
receiving a single (Query) message. This would include any cases where the node
has NSLP data queued to send.
b) where the responding node is not prepared to store per-flow state until
receiving a properly formed Confirm message.

In case (a), it is reasonable for the protocol to demand that the Responding
node runs a retransmission timer to resend the Response message until a Confirm
is received. The problem of the amplification attack should be handled by
requiring the cookie mechanism to enable the node receiving the Response to
discard it efficiently if it does not match a previously sent Query.

In case (b) (which is probably the more commonplace one where Confirm messages
are wanted at all), a retransmission timer should not be required. However, we
can assume that the next signalling message will be in the direction Querying
Node -> Responding Node (if there is no 'next signalling message' the fact that
the Confirm has been lost is moot). In this case, the responding node will start
to receive messages at the GIMPS level for a flow/NSLP combination for which
there is no stored routing state (since this state is only created on receipt of
a Confirm). 

The consequence of this is that the error condition is detected at the
Responding node when such a message arrives without the need for a specific
timer. Recovery requires a Confirm to be retranmitted and successfully received.
The ideal mechanism to cause this would be for the Responding node to be able to
reject the incoming message with an error "No Routing State Exists" back to the
Querying node, which would interpret this as caused by a lost Confirm; the
Querying node needs to be able to regenerate the Confirm from local state
without getting a Response (e.g. in particular it needs to remember the
Responder Cookie value).
msg12 Author: reh Date: 2005-01-07.15:54:34
How should GIMPS handle a lost GIMPS-confirm? The naive approach of requiring
retransmission of the GIMPS-response that requested it would impose a processing
and state maintenance burden on the responding node at an early stage of the
message exchange, which could lead to denial of service problems and also an
amplification attack where a query is sent from a forged address.  Note that the
problem only arises in the case where no reliable messaging association is being
set up; otherwise, GIMPS-confirm is delivered reliably in C-mode.
History
Date User Action Args
2005-03-02 16:00:23rehsetstatus: Pending -> Closed
messages: + msg54
2005-02-10 23:37:09rehsetstatus: No Discussion -> Pending
messages: + msg48
2005-01-07 15:54:34rehcreate