-
Notifications
You must be signed in to change notification settings - Fork 6
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
MQTT Protocol in transport parameters and DNS-SD advertisement? #54
Comments
I found a nice summary of the differences between MQTT versions here: https://github.com/mqtt/mqtt.github.io/wiki/Differences-between-3.1.1-and-5.0 It does sound as if it could be important to know which version is being used. |
https://blog.codecentric.de/en/2017/11/hello-mqtt-version-5-0/ says MQTT 5.0 (protocol 5) is not backwards compatible with MQTT v3.1.1 (protocol 4). (MQTT v3.1 was protocol 3.) |
Note that the IANA Service Name and Transport Protocol Port Number Registry already has entries for the service names I also found there was an action in OASIS MQTT-203 to register the informally supported URL schemes like |
From MQTT Version 3.1.1 - Section 3.1.2.2 Protocol Level, the client indicates the protocol level and "The Server MUST respond to the CONNECT Packet with a CONNACK return code 0x01 (unacceptable protocol level) and then disconnect the Client if the Protocol Level is not supported by the Server." I am slightly aghast that the equivalent sentence in MQTT 5.0, says "Reason Code 0x84 (Unsupported Protocol Version)"! They changed all the numbering! However, at least it appears an MQTT Version 3.1.1 client basically has to treat any non-zero code as fatal error... So, while there are opportunities for connection failure due to protocol level, the feeling in the group call today is that therefore we do not need to indicate the protocol level supported by the MQTT client of IS-07 Senders/Receivers in transport parameters. A client may choose to try its preferred protocol version first (e.g. MQTT 5.0) and retry if necessary. |
As for whether secure comms needs to be indicated in some way, the consensus on the group call today was that for now if the Connection API is being accessed via HTTPS, then secure connection with the MQTT broker via the indicated However, this has not answered the question as to whether secure comms should be indicated in the (Nor did we cover whether it is necessary to add something to identify whether |
I agree that we would leave out the MQTT protocol version out of the specification and leave it to the clients and servers to agree on a supported version. |
Thanks.
Thanks, OK. (Not a problem for WebSocket as the
I.e. TXT record, OK.
Agreed! Thanks. |
@mjeras, on reflection, I do wonder if we should revisit this:
Adding the MQTT protocol to the transport params explicitly gives us most clarity and most flexibility. It's also easy for an implementation to add the constraint that only allow one value. See AMWA-TV/is-05#80 (comment) for a proposal. |
Closed by AMWA-TV/is-04#101 and related doc updates here in #57. |
In my understanding MQTT brokers may support several protocols - the 'MQTT' protocol over TCP, a TLS protocol for secure comms, or variants on top of (Secure) WebSocket.
We have
"destination_host"
and"destination_port"
(or the source variants for a Receiver) in the IS-05 MQTT transport params, but that doesn't indicate the protocol.Similarly, Transport - MQTT - Broker discovery mentions the broker will be advertised via DNS-SD, but there's no indication of any TXT records that might allow the protocol to be discovered.
I'm also not sure whether the MQTT version needs to be specified, e.g. Version 3.1.1 vs. Version 5.0?
The text was updated successfully, but these errors were encountered: