OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

mqtt message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: [OASIS Issue Tracker] (MQTT-286) Make Qos 2 Delivery Method 'B' Normative


    [ https://issues.oasis-open.org/browse/MQTT-286?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=63405#comment-63405 ] 

Ed Briggs commented on MQTT-286:
--------------------------------

I propose the following changes, using the MQTT 3.1.1 standard as the starting point.
(I suspect the diagram will be mangled in transport, but have no other way to depict this. Apologies
in advance).

1. Diagram 4.3 (QoS Flow Control, Non-normative example) should be modified to remove references to delivery method A.   (Abbreviated  here)

Sender action                                      Control Packet                                 Receiver Action
Store Msg
Publish QoS 2 DUP 0
                                                             ----------------->  
                                                                                                             Method A,  Store Message (remove this)
                                                                                                                                   or
                                                                                                              Method B,  Store <Packet Identifier>
                                                                                                               then initiate onward delivery of Application
                                                                                                               message.   (Remove 'Method B', keep the 
                                                                                                               'Store .... message' part
                                                           <---------------------
Discard Message, Store
PUBREC received  <Packet
Identifier>

PUBREL <Packet Identifier>
                                                           ---------------------->
                                                                                                               Method A, Initiate Onward delivery of the
                                                                                                                Application message,  then discard message
                                                                                                                            (remove the above)
                                                                                                                Method B Discard Packet Identifier 
                                                                                                                            (remove "Method B', keep 'Discard.
                                                                                                                             <Packet Identifier> part'
                                                          
                                                                                                                Send PUBCOMP <Packet ID>
                                                            <-----------------------
Discard Stored State


2.  In the caption for Diagram 4.3 which reads "Figure 4.3 shows there are to methods by which QoS 2
traffic can be handled by the receiver ... [and describes using either A or B - ed]

     I proposed this should be changed to eliminate references to Method A, so perhaps "Diagram 4.3
     shows the sequence of events by which QoS 2 traffic is handled by the receiver."



> Make Qos 2 Delivery Method 'B' Normative
> ----------------------------------------
>
>                 Key: MQTT-286
>                 URL: https://issues.oasis-open.org/browse/MQTT-286
>             Project: OASIS Message Queuing Telemetry Transport (MQTT) TC
>          Issue Type: New Feature
>    Affects Versions: 5
>            Reporter: Ed Briggs
>            Assignee: Ed Briggs
>
> I propose QoS 2 Delivery Method B should become the only forwarding method, and Method A be eliminated in future MQTT versions.
> This can reduce delivery delays for PUBLISH messages over QoS 2 flows when the network propagation delay is substantial. In addition, Method B eliminates temporary storage required by Method A.  Both methods are described in MQTT 3.1.1 Section 4.3.3 in non-normative text accompanying diagram 4.3.
> This change may also be beneficial for the following MQTT isses:
> MQTT-197  Support Request Reply
> MQTT-236  Consolidate ACKs, Enable NAKs
> MQTT-271  Describe Small Device Limitations aka The Arduino problem.
> I propose the existing non-normative text in section 4.3.3 : 
>  "...there are two methods by which QoS 2 can be handled by the receiver. They differ in the point within the flow at which the message is made available for onward delivery. The choice of Method A or Method B is implementation specific. As long as an implementation chooses exactly one of these approaches, this does not affect the guarantees of a QoS 2 flow."
> Be replaced by normative text along the lines of the following:
> "Upon receiving a QoS 2 PUBLISH message which is both valid and not a duplicate, the receiver SHOULD immediately initiate onward delivery and send a PUBREC. The receiver MAY send a PUBREC before the onward delivery is complete.  If the forwarding operation fails, the receiver MUST send an appropriate error response, or terminate the transport as specified in section {TBD part of MQTT-236 }. The receiver MUST NOT send more than one PUBREC for the a single message arrival."
> A brief containing additional details can be found here:
> https://www.oasis-open.org/apps/org/workgroup/mqtt/download.php/58364/Mqtt-286-MqttQoS2DeliveryProposal.pdf



--
This message was sent by Atlassian JIRA
(v6.2.2#6258)


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]