Man page improvements - document MQTT support.

This commit is contained in:
Roger A. Light 2021-05-19 13:33:09 +01:00
parent b6187c8880
commit 99833795f2

View File

@ -91,6 +91,231 @@
</para>
</refsect1>
<refsect1>
<title>MQTT Support</title>
<para>Mosquitto supports MQTT v5.0, v3.1.1, and v3.1.</para>
<refsect2>
<title>MQTT v5.0</title>
<para>
Mosquitto provides full MQTT v5.0 support, but some features
are not used directly. The following sections describe the new
features and explain where Mosquitto does not make use of a feature.
</para>
<refsect3>
<title>Features</title>
<variablelist>
<varlistentry>
<term><option>Enhanced authentication</option></term>
<listitem><para>
Basic MQTT authentication uses username/password
checks. Enhanced authentication allows different
authentication schemes to be integrated into MQTT,
and even those schemes with multiple step processes.
Clients request a particular type of authentication
and if the broker is configured for that scheme the
authentication continues. Mosquitto supports
enhanced authentication through plugins.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>Error handling</option></term>
<listitem><para>
Most MQTT packets now have the concept of a
<option>reason code</option>
which indicates success or failure, and what the failure
was. Mosquitto provides full support for reason codes,
but does not make use of the
<option>reason string</option>
feature which can be used to provide a human readable
error string to explain the reason code.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>Flow control</option></term>
<listitem><para>
The number of "in flight" messages for QoS 1 and QoS
2 can be controlled by both the client and the
broker.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>Request / response</option></term>
<listitem><para>
MQTT v5.0 adds a request/response pattern that
allows a client to publish a message and instruct
the subscribers of that message where to publish a
response.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>Server redirection</option></term>
<listitem><para>
Server redirection is the concept of telling a
client to connect to a different MQTT broker, either
on CONNECT or with a broker initiated DISCONNECT.
Mosquitto does not currently make use of this
feature.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>Shared subscriptions</option></term>
<listitem><para>
When multiple clients subscribe to the same shared
subscription, only one client out of the group will
receive each message which allows for distributing
work loads.
</para></listitem>
</varlistentry>
</variablelist>
</refsect3>
<refsect3>
<title>Packet properties</title>
<para>
MQTT v5.0 allows properties to be added to packets to
control certain behaviour. Unless noted, Mosquitto
support the properties listed below.
</para>
<variablelist>
<varlistentry>
<term><option>CONNECT</option></term>
<listitem>
<itemizedlist>
<listitem><para>Authentication data</para></listitem>
<listitem><para>Authentication method</para></listitem>
<listitem><para>Maximum packet size</para></listitem>
<listitem><para>Receive maximum</para></listitem>
<listitem><para>Request problem information - supported but not used</para></listitem>
<listitem><para>Request response information - supported but not used</para></listitem>
<listitem><para>Session expiry interval</para></listitem>
<listitem><para>Topic alias maximum</para></listitem>
<listitem><para>User property</para></listitem>
</itemizedlist>
</listitem>
</varlistentry>
<varlistentry>
<term><option>Last will and testament</option></term>
<listitem>
<itemizedlist>
<listitem><para>Content type</para></listitem>
<listitem><para>Correlation data</para></listitem>
<listitem><para>Message expiry interval</para></listitem>
<listitem><para>Payload format indicator</para></listitem>
<listitem><para>Response topic</para></listitem>
<listitem><para>User property</para></listitem>
<listitem><para>Will delay interval</para></listitem>
</itemizedlist>
</listitem>
</varlistentry>
<varlistentry>
<term><option>CONNACK</option></term>
<listitem>
<itemizedlist>
<listitem><para>Assigned client identifier</para></listitem>
<listitem><para>Authentication data</para></listitem>
<listitem><para>Authentication method</para></listitem>
<listitem><para>Maximum packet size</para></listitem>
<listitem><para>Maximum qos</para></listitem>
<listitem><para>Reason string - supported but not used</para></listitem>
<listitem><para>Receive maximum</para></listitem>
<listitem><para>Response information - supported but not used</para></listitem>
<listitem><para>Retain available</para></listitem>
<listitem><para>Server keep alive</para></listitem>
<listitem><para>Server reference - supported but not used</para></listitem>
<listitem><para>Session expiry interval</para></listitem>
<listitem><para>Shared subscription available</para></listitem>
<listitem><para>Subscription identifiers available</para></listitem>
<listitem><para>Topic alias maximum</para></listitem>
<listitem><para>User property</para></listitem>
<listitem><para>Wildcard subscription available</para></listitem>
</itemizedlist>
</listitem>
</varlistentry>
<varlistentry>
<term><option>PUBLISH</option></term>
<listitem>
<itemizedlist>
<listitem><para>Content type</para></listitem>
<listitem><para>Correlation data</para></listitem>
<listitem><para>Message expiry interval</para></listitem>
<listitem><para>Payload format indicator</para></listitem>
<listitem><para>Response topic</para></listitem>
<listitem><para>Subscription identifier</para></listitem>
<listitem><para>Topic alias</para></listitem>
<listitem><para>User property</para></listitem>
</itemizedlist>
</listitem>
</varlistentry>
<varlistentry>
<term><option>PUBACK / PUBREC / PUBREL / PUBCOMP / SUBACK / SUBSCRIBE / SUBACK</option></term>
<listitem>
<itemizedlist>
<listitem><para>Reason string - supported but not used</para></listitem>
<listitem><para>User property</para></listitem>
</itemizedlist>
</listitem>
</varlistentry>
<varlistentry>
<term><option>SUBSCRIBE</option></term>
<listitem>
<itemizedlist>
<listitem><para>Subscription identifier</para></listitem>
<listitem><para>User property</para></listitem>
</itemizedlist>
</listitem>
</varlistentry>
<varlistentry>
<term><option>DISCONNECT</option></term>
<listitem>
<itemizedlist>
<listitem><para>Reason string - supported but not used</para></listitem>
<listitem><para>Server reference - supported but not used</para></listitem>
<listitem><para>Session expiry interval</para></listitem>
<listitem><para>User property</para></listitem>
</itemizedlist>
</listitem>
</varlistentry>
<varlistentry>
<term><option>AUTH</option></term>
<listitem>
<itemizedlist>
<listitem><para>Authentication method</para></listitem>
<listitem><para>Authentication data</para></listitem>
<listitem><para>Reason string - supported but not used</para></listitem>
<listitem><para>User property</para></listitem>
</itemizedlist>
</listitem>
</varlistentry>
</variablelist>
</refsect3>
</refsect2>
<refsect2>
<title>MQTT v3.1.1</title>
<para>Mosquitto provides full MQTT v3.1.1 support.</para>
</refsect2>
<refsect2>
<title>MQTT v3.1</title>
<para>Mosquitto provides full MQTT v3.1 support.</para>
</refsect2>
<refsect2>
<title>MQTT v3</title>
<para>
MQTT v3 is an obsolete version of the protocol that does not
support username/password authentication and used the
<option>clean start</option> flag in the CONNECT packet which
applied only to the start of a session. An MQTT v3 client
will be able to successfully connect to a Mosquitto instance
that does not require authentication.
</para>
</refsect2>
</refsect1>
<refsect1>
<title>Broker Status</title>
<para>Clients can find information about the broker by subscribing to