coap

Does CoAP allow multiple oustanding (ACKed) CON Requests when NSTART is 1


According to the CoAP RFC, NSTART is a limit on the number of outstanding interactions. But it describes an outstanding interaction as:

either a CON for which an ACK has not yet been received but is still expected (message layer) or a request for which neither a response nor an Acknowledgment message has yet been received but is still expected (which may both occur at the same time, counting as one outstanding interaction)

This would seem to imply that if an empty ACK has been received for a CON request, but the matching response has not yet been received, it is okay to send a new CON request (with a different token of course) without violating NSTART=1. Is this interpretation correct?


Solution

  • I received a response from the IETF core mailing list, confirming that NSTART is not a constraint on the number of concurrent, ACK'd CON requests:

    Does this wording imply that concurrent CON requests (ACK'ed, but for which a CON response is still expected) are acceptable if NSTART=1?

    Yes.

    If an empty ACK has been received for a CON request, may a new CON request be sent before a CON response has been received for the first request, without violating the NSTART=1 constraint?

    Yes.

    The idea is that the fact that the CON did receive an ACK (and the latency taken for that) indicates that the path is not heavily suggested, or that the necessary slow-down has been achieved (by the original RTT, and by wait times before retransmission).

    The server will independently congestion-control their separate responses.