Subject: [core] Clarification on PROBING_RATE

From: "Peter A. Bigot" <[email-masked]>
Date: Tue, 29 Oct 2013 10:03:54 -0500

coap-18 section 4.7 mandates that the average data rate to an endpoint
that does not respond must not exceed PROBING_RATE bytes per second.

It's not entirely clear, but I suspect the intent here is that
constraint like NSTART only applies to clients transmitting request
messages to servers, though I also expect it to apply to observe servers
sending response messages.

The number of bytes transmitted can only be estimated by the number of
bytes provided to the transport layer to be sent to the destination: it
does not include transport-, link-, phy-, or other overhead.  Right?

If endpoint A sends a confirmable message to endpoint B and that message
is not acknowledged in any way, but endpoint B does send unrelated
messages to endpoint A, can we consider B considered to have "responded"
to A's messages?  I think the text as written only allows "No".

Over what period is this average calculated?  A confirmable request
message of at least 19 bytes when sent with default transmission
parameters exceeds PROBING_RATE for the entire MAX_TRANSMIT_WAIT.  I
expect the intent is that the PROBING_RATE limit does not apply during
this period.

I'm interpreting the required operational behavior to be equivalent to
maintaining a counter of bytes sent to the endpoint (SENT_BYTES), which
is reset to zero each time the endpoint "responds" (at time
RESPONSE_MARK, also maintained).  Then the effect of 4.7 is to add a
gating function such that (absent unspecified optimizations) no further
(request) transmissions to the endpoint are allowed until:

    (SENT_BYTES / (now - RESPONSE_MARK)) <= PROBING_RATE

The impact of this requirement is pretty large; e.g. if a single
exchange for a block transfer with 1024-byte payloads does not produce a
response, technically no further (request) messages can be transmitted
to the destination for well over an hour.