Internet DRAFT - draft-nalluri-dhc-dhcpv6-mqtt-config-options
draft-nalluri-dhc-dhcpv6-mqtt-config-options
DHC working group S. Nalluri
Internet-Draft Ericsson
Intended status: Standards Track October 20, 2017
Expires: April 23, 2018
DHCPv6 options for MQTT client configuration
draft-nalluri-dhc-dhcpv6-mqtt-config-options-00
Abstract
This document defines Dynamic Host Configuration Protocol and Dynamic
Host Configuration Protocol version 6 (DHCPv6) Options for MQTT
client configuration information, which are used to carry Uniform
Resource Locater of MQTT broker and MQTT topic prefix that should be
used as prefix for any topic published by MQTT client.
Status of This Memo
This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
This Internet-Draft will expire on April 23, 2018.
Copyright Notice
Copyright (c) 2017 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Nalluri Expires April 23, 2018 [Page 1]
Internet-Draft DHCPv6 Options for MQTT October 2017
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. MQTT client configuration through DHCP . . . . . . . . . . . 3
2.1. DHCPv6 option for MQTT broker URI . . . . . . . . . . . . 3
2.2. DHCPv6 option for MQTT topic prefix . . . . . . . . . . . 4
2.3. DHCPv4 option for MQTT broker URI . . . . . . . . . . . . 4
2.4. DHCPv4 option for MQTT topic prefix . . . . . . . . . . . 5
3. Appearance of Option . . . . . . . . . . . . . . . . . . . . 5
3.1. Appearance of options in DHCPv6 control messages . . . . 5
3.2. Appearance of options in DHCPv4 control messages . . . . 6
4. Configuration Guidelines for the Server . . . . . . . . . . . 6
5. DHCPv4/DHCPv6 Client Behavior . . . . . . . . . . . . . . . . 6
6. Relay agent Behavior . . . . . . . . . . . . . . . . . . . . 7
7. Security Considerations . . . . . . . . . . . . . . . . . . . 7
8. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 8
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 8
10.1. Normative References . . . . . . . . . . . . . . . . . . 8
10.2. Informative References . . . . . . . . . . . . . . . . . 9
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 9
1. Introduction
The Message Queue Telemetry Transport (MQTT) protocol is a light-
weight IoT protocol, based on the publish/subscribe communication
model. MQTT clients, that can be publishers or subscribers,
communicate with each other via a broker. The broker hosts a set of
"topics" and clients can publish and subscribe to these topics. All
data published to a topic is delivered to all clients who are
subscribed to the same topic. In communications network using MQTT
clients commonly use a preconfigured address information, such as
Uniform Resource Identifier (URI), to register with a MQTT broker.
The URI might be configured by a user or an operator through a local
device interface. Alternatively, the URI might be provided as a
hardcoded value by manufacturer of the MQTT client device.
Hard coding configuration by device manufacturer forces device
operator to use same configuration as hard coded. It is possible
that reachability information of MQTT broker that is hard coded may
be outdated and MQTT broker reachability might fail during first use
of device. In such cases connectivity with MQTT broker is possible
only through device software upgrade.
Subscribers who are interested in specific data of a specific topic
registers the topic with the MQTT broker. MQTT clients acting as
publishers register/create topics, and MQTT clients acting as
subscribers register for a specific existing topic. In general
Nalluri Expires April 23, 2018 [Page 2]
Internet-Draft DHCPv6 Options for MQTT October 2017
terms, a topic can represented by a hierarchical string defined by
MQTT service or device operator. Before operation every MQTT client
that wishes to publish data on a specific topic should be aware of
the corresponding hierarchical strings that are supposed to be used
for the topics for the MQTT client to publish topic specific data.
However, uniqueness of topics in the MQTT network is not guaranteed
as there is no standard guideline that guarantees uniqueness. In the
same MQTT network, using the same MQTT broker, different MQTT clients
can accidentally use the same topic to publish data, which results in
invalid operation. In such scenarios, subscribers might receive
wrong data and publishers may change data they were not supposed to
change. Network or device operators therefore have to take care of
the topic name space across the MQTT network so that topic identities
are unique across the MQTT network. This manual operation is error-
prone and costly.
This draft propose DHCP and DHCPv6 options to dynamically configure
MQTT client with MQTT broker URI and one or more topic prefixs to
guarantee uniqueness of topic used across MQTT network.
2. MQTT client configuration through DHCP
MQTT broker URI and topic prefix can be collected during dynamic host
configuration phase. DHCPv4 and DHCPv6 options can be extended to
collect MQTT broker URI and MQTT topic prefix for IPv4 and IPv6
networks respectively. DHCPv4 or DHCPv6 client requests MQTT broker
URI and MQTT topic prefix using new options proposed in sections
below
2.1. DHCPv6 option for MQTT broker URI
DHCPv6 option OPTION_MQTT_BROKER_URI conveys URI through which MQTT
client can reach MQTT broker in IPv6 network. The format of MQTT
broker URI option is as shown below:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| option-code | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MQTT-broker-URI |
| (variable length data) |
| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
option-code: OPTION_MQTT_BROKER_URI
Nalluri Expires April 23, 2018 [Page 3]
Internet-Draft DHCPv6 Options for MQTT October 2017
option-len: Length of the 'MQTT-broker-URI' field in octets
MQTT-broker-URI: This string is URI of MQTT broker. The string is
not null-terminated.
2.2. DHCPv6 option for MQTT topic prefix
DHCPv6 option OPTION_MQTT_TOPIC_PREFIX conveys prefix string which
can be used by MQTT client as prefix of each topic used for
publishing data. The format of MQTT topic prefix option is as shown
below:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| option-code | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| MQTT-topic-prefix |
| (variable length data) |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
option-code: OPTION_MQTT_TOPIC_PREFIX
option-len: Length of the 'MQTT-topic-prefix' field in octets
MQTT-topic-prefix: MQTT topic prefix string that can be used by MQTT
client as prefix to each topic used for publishing data
2.3. DHCPv4 option for MQTT broker URI
DHCPv4 option OPTION_MQTT_BROKER_URI conveys URI through which MQTT
client can reach MQTT broker that is reachable through IPv4 network.
The format of MQTT broker URI option is as shown below:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| option-code | option-len | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| |
| MQTT-broker-URI(variable length data) |
| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
option-code: OPTION_MQTT_BROKER_URI
Nalluri Expires April 23, 2018 [Page 4]
Internet-Draft DHCPv6 Options for MQTT October 2017
option-len: Length of the 'MQTT-broker-URI' field in octets
MQTT-broker-URI: This string is URI of MQTT broker. The string is
not null-terminated.
2.4. DHCPv4 option for MQTT topic prefix
DHCPv4 option OPTION_MQTT_TOPIC_PREFIX conveys prefix string which
can be used by MQTT client as prefix of each topic used for
publishing data. The format of MQTT topic prefix option is as shown
below:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| option-code | option-len | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| |
| MQTT-topic-prefix |
| (variable length data) |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
option-code: OPTION_MQTT_TOPIC_PREFIX
option-len: Length of the 'MQTT-topic-prefix' field in octets
MQTT-topic-prefix: MQTT topic prefix string that can be used by MQTT
client as prefix to each topic used for publishing data
3. Appearance of Option
3.1. Appearance of options in DHCPv6 control messages
The OPTION_MQTT_BROKER_URI and OPTION_MQTT_TOPIC_PREFIX options MUST
NOT appear in messages other than the following: SOLICIT (1),
ADVERTISE (2), REQUEST (3),REPLY (4) RENEW (5), REBIND (6),
INFORMATION-REQUEST (11). If this option appears in messages other
than those specified above, the receiver MUST ignore it.
The option number for OPTION_MQTT_BROKER_URI and
OPTION_MQTT_TOPIC_PREFIX options MAY appear in the "Option Request"
option [RFC3315] in the following messages: SOLICIT (1), REQUEST (3),
RENEW (5), REBIND (6), INFORMATION-REQUEST (11) and RECONFIGURE (10).
If this option number appears in the "Option Request" option in
messages other than those specified above, the receiver SHOULD ignore
it.
Nalluri Expires April 23, 2018 [Page 5]
Internet-Draft DHCPv6 Options for MQTT October 2017
3.2. Appearance of options in DHCPv4 control messages
The OPTION_MQTT_BROKER_URI and OPTION_MQTT_TOPIC_PREFIX options MUST
NOT appear in messages other than the following: DHCPDISCOVER (1),
DHCPOFFER (2), DHCPREQUEST (3), DHCPACK (5) and DHCPINFORM (8). If
this option appears in messages other than those specified above, the
receiver MUST ignore it.
The option number for OPTION_MQTT_BROKER_URI and
OPTION_MQTT_TOPIC_PREFIX options MAY appear in the "Parameter Request
List" option [RFC2132] in the following messages: DHCPDISCOVER (1),
DHCPOFFER (2), DHCPREQUEST (3), DHCPACK (5) and DHCPINFORM (8). If
this option number appears in the "Parameter Request List" option in
messages other than those specified above, the receiver SHOULD ignore
it.
Maximum possible value of DHCPv4 "option-len" is 255. MQTT-topic-
prefix MAY be of length more than 255. To accommodate larger
certificate, DHCP server SHOULD follow encoding as mentioned in
[RFC3396].
4. Configuration Guidelines for the Server
DHCPv4 or DHCPv6 server that supports OPTION_MQTT_BROKER_URI and
OPTION_MQTT_TOPIC_PREFIX SHOULD be configured with one or more MQTT
broker URI, and one or moretopic prefix for each MQTT client. DHCP
server may use statically configured topic prefixes or algorithem
genrated topic prefixes. Algorithems to generate MQTT topic prefix
for an MQTT client might use client attributes like data link layer
address. Details of algorithems to generate topic prefix and
guidelines to manage topic prefixes are not included in the scope of
this draft
In the absence of MQTT broker URI configuration, DHCP server SHOULD
ignore option OPTION_MQTT_BROKER_URI, and SHOULD continue processing
of DHCP control message
In the absence of MQTT topic prefix configuration and topic prefix
generation algorithem, DHCP server SHOULD ignore option
OPTION_MQTT_TOPIC_PREFIX, and SHOULD continue processing of DHCP
control message
5. DHCPv4/DHCPv6 Client Behavior
DHCP or DHCPv6 client MAY decide need for inclusion of
OPTION_MQTT_BROKER_URI and OPTION_MQTT_TOPIC_PREFIX options in DHCPv4
or DHCPv6 control messages if device is capable of supporting MQTT
client functionality irrespective of state of MQTT client. It is
Nalluri Expires April 23, 2018 [Page 6]
Internet-Draft DHCPv6 Options for MQTT October 2017
possible that MQTT client MAY not be active before DHCPv4 or DHCPv6
message exchanges happens. In such scenario, DHCPv4 or DHCPv6 client
MAY collect MQTT broker URI and MQTT topic prefix and keep ready for
MQTT client initialization
DHCPv4 or DHCPv6 client MAY prefer collecting MQTT broker URI and
MQTT topic prefix by including OPTION_MQTT_BROKER_URI and
OPTION_MQTT_TOPIC_PREFIX options in DHCPINFORM or INFORMATION-REQUEST
message which MAY be send during MQTT client initialization
MQTT client devices running with IPv6 stack MAY use stateless auto
address configuration to get IPv6 address. Such clients MAY use
DHCPv6 INFORMATION-REQUEST to get MQTT broker URI and MQTT topic
prefix through options OPTION_MQTT_BROKER_URI and
OPTION_MQTT_TOPIC_PREFIX
6. Relay agent Behavior
This draft does not impose any new requirements on DHCPv4 or DHCPv6
relay agent functionality
7. Security Considerations
OPTION_MQTT_BROKER_URI option could be used by an intruder to
advertise the URI of a malicious MQTT broker which results in data
reporting by MQTT clients to an unwanted MQTT broker. As an example,
an attacker could collect data from secure locations by deploying
malicious servers.
Intuders might use OPTION_MQTT_TOPIC_PREFIX option to advertise
unwanted topic prefixes which results in duplicate MQTT topics As an
example, an attacker could collect data from secure locations by
deploying malicious servers.
To prevent these attacks, it is strongly advisable to secure the use
of these options by either:
o Using authenticated DHCP as described in [RFC3315], Section 21.
o Using options OPTION_MQTT_BROKER_URI and OPTION_MQTT_TOPIC_PREFIX
only with trusted DHCP server
The security considerations documented in [RFC3315] are to be
considered.
Nalluri Expires April 23, 2018 [Page 7]
Internet-Draft DHCPv6 Options for MQTT October 2017
8. Acknowledgement
Particular thanks to A. Keraenen and S. Krishnan for inputs and
review.
9. IANA Considerations
IANA is requested to assign new DHCPv6 option codes in the registry
maintained in http://www.iana.org/assignments/dhcpv6-parameters:
| Option Name | Value |
|---------------------------------+----------|
| OPTION_MQTT_BROKER_URI | TBA |
| OPTION_MQTT_TOPIC_PREFIX | TBA |
IANA is requested to assign new DHCPv4 option codes in the registry
maintained in http://www.iana.org/assignments/bootp-dhcp-parameters:
| Option Name | Value |
|--------------------------------+---------|
| OPTION_MQTT_BROKER_URI | TBA |
| OPTION_MQTT_TOPIC_PREFIX | TBA |
10. References
10.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, <https://www.rfc-
editor.org/info/rfc2119>.
[RFC2131] Droms, R., "Dynamic Host Configuration Protocol",
RFC 2131, DOI 10.17487/RFC2131, March 1997,
<https://www.rfc-editor.org/info/rfc2131>.
[RFC2132] Alexander, S. and R. Droms, "DHCP Options and BOOTP Vendor
Extensions", RFC 2132, DOI 10.17487/RFC2132, March 1997,
<https://www.rfc-editor.org/info/rfc2132>.
[RFC3315] Droms, R., Ed., Bound, J., Volz, B., Lemon, T., Perkins,
C., and M. Carney, "Dynamic Host Configuration Protocol
for IPv6 (DHCPv6)", RFC 3315, DOI 10.17487/RFC3315, July
2003, <https://www.rfc-editor.org/info/rfc3315>.
Nalluri Expires April 23, 2018 [Page 8]
Internet-Draft DHCPv6 Options for MQTT October 2017
[RFC3396] Lemon, T. and S. Cheshire, "Encoding Long Options in the
Dynamic Host Configuration Protocol (DHCPv4)", RFC 3396,
DOI 10.17487/RFC3396, November 2002, <https://www.rfc-
editor.org/info/rfc3396>.
[RFC4306] Kaufman, C., Ed., "Internet Key Exchange (IKEv2)
Protocol", RFC 4306, DOI 10.17487/RFC4306, December 2005,
<https://www.rfc-editor.org/info/rfc4306>.
[RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S.,
Housley, R., and W. Polk, "Internet X.509 Public Key
Infrastructure Certificate and Certificate Revocation List
(CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008,
<https://www.rfc-editor.org/info/rfc5280>.
[RFC7227] Hankins, D., Mrugalski, T., Siodelski, M., Jiang, S., and
S. Krishnan, "Guidelines for Creating New DHCPv6 Options",
BCP 187, RFC 7227, DOI 10.17487/RFC7227, May 2014,
<https://www.rfc-editor.org/info/rfc7227>.
[RFC7296] Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T.
Kivinen, "Internet Key Exchange Protocol Version 2
(IKEv2)", STD 79, RFC 7296, DOI 10.17487/RFC7296, October
2014, <https://www.rfc-editor.org/info/rfc7296>.
10.2. Informative References
[MQTT-SPEC]
"MQTT Version 3.1.1, OASIS Standard", n.d.,
<http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/
mqtt-v3.1.1-os.html>.
Author's Address
Srinivas Rao Nalluri
Ericsson
Bangalore
India
Email: srinivasa.rao.nalluri@ericsson.com
Nalluri Expires April 23, 2018 [Page 9]