• Type: New Feature
    • Resolution: Fixed
    • Priority: Major
    • 5
    • Affects Version/s: 5
    • Component/s: core
    • Hide

      Added to WD09

      Show
      Added to WD09

      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

            Assignee:
            edbriggs
            Reporter:
            edbriggs
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: