Uploaded image for project: 'OASIS Message Queuing Telemetry Transport (MQTT) TC'
  1. OASIS Message Queuing Telemetry Transport (MQTT) TC
  2. MQTT-68

Message delivery retry is not required where no network failure is detected

    XMLWordPrintable

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 3.1.1
    • Fix Version/s: 3.1.1
    • Component/s: core
    • Labels:
      None
    • Proposal:
      Hide

      WD11 1232 - 1254

      Remove existing content in this section and replace with:

      When a Client reconnects with CleanSession = 0, both the client and server MUST redeliver any previous
      in-flight messages. This means re-sending any unacknowledged PUBLISH packets (where QoS > 0) and PUBREL packets.
      This is the only circumstance where a Client or Server is REQUIRED to redeliver messages.
      Clients MAY resend SUBSCRIBE and UNSUBSCRIBE packets on reconnect but are not REQUIRED to do this.

      While a modern TCP network is unlikely to lose packets, a Client or Server is permitted to attempt redelivery
      at other times. However, redelivery is not encouraged unless a network failure has been detected.

      Non-normative comment

      Historically retransmission of Control Packets was required to overcome data loss on some older TCP networks.
      This might remain a concern where MQTT 3.1.1 implementations are to be deployed in such environments.

      Show
      WD11 1232 - 1254 Remove existing content in this section and replace with: When a Client reconnects with CleanSession = 0, both the client and server MUST redeliver any previous in-flight messages. This means re-sending any unacknowledged PUBLISH packets (where QoS > 0) and PUBREL packets. This is the only circumstance where a Client or Server is REQUIRED to redeliver messages. Clients MAY resend SUBSCRIBE and UNSUBSCRIBE packets on reconnect but are not REQUIRED to do this. While a modern TCP network is unlikely to lose packets, a Client or Server is permitted to attempt redelivery at other times. However, redelivery is not encouraged unless a network failure has been detected. Non-normative comment Historically retransmission of Control Packets was required to overcome data loss on some older TCP networks. This might remain a concern where MQTT 3.1.1 implementations are to be deployed in such environments.

      Description

      WD08 (section 4.3) states that if no response is received from PUBLISH, PUBREL, SUBSCRIBE, UNSUBSCRIBE within a reasonable period of time then the sender may retry delivery.

      This attempts to cater for unreliable TCP/IP networks. Since modern compliant TCP/IP networks should not lose packets, then the sender should not retry unless a network failure is detected.

      The spec should be changed to reflect this and add non-normative content to describe the historical problem.

        Attachments

          Activity

            People

            • Assignee:
              andrew_banks Andrew Banks (Inactive)
              Reporter:
              coppen Richard Coppen
            • Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: