Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Meta] MQTT 5 support development #695

Open
13 of 27 tasks
andsel opened this issue Nov 30, 2022 · 1 comment
Open
13 of 27 tasks

[Meta] MQTT 5 support development #695

andsel opened this issue Nov 30, 2022 · 1 comment
Assignees
Labels

Comments

@andsel
Copy link
Collaborator

andsel commented Nov 30, 2022

This issue is a meta issue to track all the changes that needs to be done in order to support MQTT5 version of the protocol.

  • Update the Netty to the latest to have full MQTT 5 version protocol support Update Netty from 4.1.77 to 4.1.85 #696

  • Connection management

    • accepts a v5 connection message
    • Manage Will Delay Interval for MQTT5 #767
      The Server delays publishing the Client’s Will Message until the Will Delay Interval has passed
      or the Session ends, whichever happens first. If a new Network Connection to this Session
      is made before the Will Delay Interval has passed, the Server MUST NOT send the Will Message [MQTT-3.1.3-9].
    • Server can define its own Keep Alive in CONNACK #789
    • Assigned ClientID: In cases where the ClientID is assigned by the Server, return the assigned ClientID. This also lifts the restriction that Server assigned ClientIDs can only be used with Clean Session=1 connections.
    • Server reference: Allow the Server to specify an alternate Server to use on CONNACK or DISCONNECT. This can be used as a redirect or to do provisioning.
    • Maximum Packet Size: Allow the Client and Server to independently specify the maximum packet size they support. It is an error for the session partner to send a larger packet.
  • Subscription

    • Shared Subscriptions: Add shared subscription support allowing for load balanced consumers of a subscription. [Meta] Implement Shared Subscriptions #791
    • Subscription ID: Allow a numeric subscription identifier to be specified on a SUBSCRIBE, and returned on the message when it is delivered. This allows the Client to determine which subscription or subscriptions caused the message to be delivered. Implement Subscription identifier #801
    • Subscription options: Provide subscription options primarily defined to allow for message bridge applications. These include an option to not send messages originating on this Client (noLocal), and options for handling retained messages on subscribe. Implements Subscription Options #808
  • Various aspects

    • Message expiry: Allow an expiry interval to be set when a message is published. Implement message expiry intervals functionality #818
    • Payload format and content type #825
    • Request / Response: Formalize the request/response pattern within MQTT  #829
    • Flow control: Allow the Client and Server to independently specify the number of outstanding reliable messages (QoS>0) they allow. The sender pauses sending such messages to stay below this quota. This is used to limit the rate of reliable messages, and to limit how many are in flight at one time.
    • User properties: Add User Properties to most packets. User properties on PUBLISH are included with the message and are defined by the Client applications. The user properties on PUBLISH and Will Properties are forwarded by the Server to the receiver of the message. User properties on the CONNECT, SUBSCRIBE, and UNSUBSCRIBE packets are defined by the Server implementation. The user properties on CONNACK PUBACK, PUBREC, PUBREL, PUBCOMP, SUBACK, UNSUBACK and AUTH packets are defined by the sender, and are unique to the sender implementation. The meaning of user properties is not defined by MQTT.
    • Optional Server feature availability: Define a set of features which the Server does not allow and provide a mechanism for the Server to specify this to the Client. The features which can be specified in this way are: Maximum QoS, Retain Available, Wildcard Subscription Available, Subscription Identifier Available, and Shared Subscription Available. It is an error for the Client to use features that the Server has declared are not available.
    • Enhanced authentication: Provide a mechanism to enable challenge/response style authentication including mutual authentication. This allows SASL style authentication to be used if supported by both Client and Server, and includes the ability for a Client to re-authenticate within a connection.
    • Topic alias to define

Other secondary features

  • provide a way to define (in config file maybe) the User properties to return with CONNACK.
  • provide a way to define Server reference in CONNACK and DISCONNECT.

Useful refs

@andsel andsel added the mqtt5 label Nov 30, 2022
@andsel andsel self-assigned this Nov 30, 2022
@andsel
Copy link
Collaborator Author

andsel commented Nov 30, 2022

Thank's @hylkevds for crafting the list

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant