Draft: draft-ietf-core-coap-tcp-tls

Commentary: Added tag for updates : Removed Observe references scattered throughout the draft Added appendix to collect clarifications to RFC7641 in one place 
 Captured from : There needs to be a section on how resources can be observed over TCP / TLS . Questions include : Do servers need to include a sequence number in notifications , given that TCP / TLS provides reliable , in - order delivery ? How do servers throttle the stream of notifications when the resource changes its state more frequently than the server can send notifications ? Does a client have to re - register its interest in a resource if it has n't received a notification for a while but the connection is still up ? 
 In a conference call with Klaus ,  ,  and myself we discussed the issue and the raised questions . QUESTION 1 : Do servers need to include a sequence number in notifications , given that TCP / TLS provides reliable , in - order delivery ? The text from the CoAP over Websockets could be re - used . Here is what it could say : Since the TCP provides ordered delivery of messages , the mechanism for reordering detection when observing resources [ RFC7641 ] is not needed . The value of the Observe Option in notifications therefore MAY be empty on transmission and MUST be ignored on reception . The Observe Option still has to be sent since it contains other information as well . QUESTION 2 : Does a client have to re - register its interest in a resource if it has n't received a notification for a while but the connection is still up ? We believe it is enough to send keep - alive message for the CoAP over TCP draft ( as opposed to send a re - registration message when used over UDP ) . QUESTION 3 : How do servers throttle the stream of notifications when the resource changes its state more frequently than the server can send notifications ? TCP offers a flow control mechanism as a means for the receiver to govern the amount of data sent by the sender . This is functionality that can be re - used . 
 ( 1 ) -- I agree with the proposed solution . ( 2 ) -- we need text that empty messages are no - ops and can be used as a keep - alive mechanism . ( 3 ) -- this is a problem that most applications that start using reliable streams run into . Early implementations sometimes ignore the need for proper flow control . That is not a reason to add more mechanism ( that would also not be in those early implementations ) , but the solution should be to use the flow control mechanisms we already have . Maybe an LWIG document could have information about flow control support in implementations , e.g. , ​ 
 Has someone thought about the following setup , that is , will it work with keep - alives only ? There is a cluster behind a load balancer . I client sets up a connection , is assigned to one node and starts observing . For some reason the node fails and through a fail - over strategy the client is handed over to another node . All further requests are answered transparently be the new node . However , the Observe relationship got lost ... 
   is covered by the Websockets draft ; close this when merged .   is covered by text in the Websockets draft ; the failover problem described can be addressed by proper implementation of failover . This may however be costly , so we should have some more discussion about this .   is an implementation quality issue . Just do n't implement stream - based without some flow control . 
 On the 7/6 call with the authors , agreed to review and determine whether all issues were addressed . 
 This issue does not include a question about the use of confirmable messages for notifications in to determine client aliveness and interest : A notification can be confirmable or non - confirmable ... An acknowledgement message signals to the server that the client is alive and interested in receiving further notifications ; if the server does not receive an acknowledgement in reply to a confirmable notification , it will assume that the client is no longer interested and will eventually remove the associated entry from the list of observers This is inappropriate for CoAP over reliable transports . 
 The phrasing is a bit unfortunate . What is meant is " if the confirmable notification times out " . The same would be true in TCP -- if the connection times out , you remove the interests . We could clarify this in a section of CoAP - TCP about the impact of no longer sending back and forth acknowledgements . 
 Discussing the scope of this issue with the authors . This probably needs a more complete treatment rather than small references like : Since the TCP protocol provides ordered delivery of messages , the mechanism for reordering detection when observing resources [ RFC7641 ] is not needed . The value of the Observe Option in notifications MAY be empty on transmission and MUST be ignored on reception . 
 My reading of the discussion thread gives me the impression that we had closed the initial set of questions . The subsequently raised issue regarding the wording in RFC 7641 I am wondering whether there is any change needed . We definitely are not going to change RFC 7641 . I personally do n't think that the highlighted text from RFC7641 will be wrongly implemented . I would suggest to close issue . 
 - this would be - any comments on that pull request ?
This document assumes that readers are familiar with the terms and
concepts that are used in RFC6455 and RFC7252.
This document assumes that readers are familiar with the terms and
concepts that are used in RFC6455, RFC7252, and RFC7641.
Since the TCP protocol provides ordered delivery of messages, the
mechanism for reordering detection when RFC7641 is not needed.  The
value of the Observe Option in notifications MAY be empty on
transmission and MUST be ignored on reception.
Since the WebSocket protocol provides ordered delivery of messages,
the mechanism for reordering detection when RFC7641 is not needed.
The value of the Observe Option in notifications MAY be empty on
transmission and MUST be ignored on reception.
All requests for which the CoAP client has not received a response
yet are cancelled when the connection is closed.  If the client
observes one or more resources over the WebSocket connection, then
the CoAP server (or intermediary in the role of the CoAP server) MUST
remove all entries associated with the client from the lists of
observers when the connection is closed.
All requests for which the CoAP client has not received a response
yet are cancelled when the connection is closed.