OASIS Message Queuing Telemetry Transport (MQTT) TC

 View Only
  • 1.  MQTT 3.1.1 partial connect packets over TCP

    Posted 05-17-2017 10:52




    Hello everyone,
     
    Apologies if this has been answered before but I could not find a definitive answer so far.

    When using a TCP transport, is a client library sending a partial connect packet (2 byte fixed header only) while connecting to an MQTT broker conforming to the specification?
     
    I understand that it may not be a problem for an MQTT only broker but what about multi protocol brokers, packet inspectors, load balancers? The specification only has a non normative comment on line 395:
     
    Packet inspectors, such as firewalls, could use the Protocol Name to identify MQTT traffic. 
     
     
    In the above case though, the protocol name is not sent as it resides in the variable header of the packet.
     
    Any assistance would be greatly appreciated.
     
    Thanks,
     
    Alex Kritikos
     







    This communication contains information which is confidential and may also be privileged. It is for the exclusive use of the intended recipient(s).
    If you are not the intended recipient(s), please note that any distribution, copying, or use of this communication or the information in it, is strictly prohibited. If you have received this communication in error please notify us by e-mail and then delete
    the e-mail and any copies of it.
    Software AG (UK) Limited Registered in England & Wales 1310740
    - http://www.softwareag.com/uk













  • 2.  Re: [mqtt] MQTT 3.1.1 partial connect packets over TCP

    Posted 05-17-2017 12:27
    Hi Alex The fact that it's in the variable header doesn't make it optional... the 'MQTT' "eye catcher" is there for exactly that purpose of differentiating protocols in a multi-protocol server (and for helping a server know that the client that's connected is not talking MQTT). So if a client library doesn't send all the elements that are specified in the Variable Header section of the spec, then it's malformed... Maybe there should be some more "MUST"s in the spec?? Andy Andy Stanford-Clark Distinguished Engineer, Internet of Things Master Inventor, Member IBM Academy of Technology, Fellow BCS Honorary Professor University of East Anglia, Visiting Professor University of Newcastle, Adjunct Professor University of Southampton. Tel: +44 (0)7801 787096 [internal: 37 277624]   twitter: @andysc From:         "Kritikos, Alex" <Alex.Kritikos@softwareag.com> To:         "mqtt@lists.oasis-open.org" <mqtt@lists.oasis-open.org> Date:         17/05/2017 11:52 Subject:         [mqtt] MQTT 3.1.1 partial connect packets over TCP Sent by:         <mqtt@lists.oasis-open.org> Hello everyone,   Apologies if this has been answered before but I could not find a definitive answer so far. When using a TCP transport, is a client library sending a partial connect packet (2 byte fixed header only) while connecting to an MQTT broker conforming to the specification?   I understand that it may not be a problem for an MQTT only broker but what about multi protocol brokers, packet inspectors, load balancers? The specification only has a non normative comment on line 395:   Packet inspectors, such as firewalls, could use the Protocol Name to identify MQTT traffic.     In the above case though, the protocol name is not sent as it resides in the variable header of the packet.   Any assistance would be greatly appreciated.   Thanks,   Alex Kritikos   This communication contains information which is confidential and may also be privileged. It is for the exclusive use of the intended recipient(s). If you are not the intended recipient(s), please note that any distribution, copying, or use of this communication or the information in it, is strictly prohibited. If you have received this communication in error please notify us by e-mail and then delete the e-mail and any copies of it. Software AG (UK) Limited Registered in England & Wales 1310740 - http://www.softwareag.com/uk Unless stated otherwise above: IBM United Kingdom Limited - Registered in England and Wales with number 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU


  • 3.  Re: [mqtt] MQTT 3.1.1 partial connect packets over TCP

    Posted 05-17-2017 14:33
    Alex, Further to this (actually answering my comment about MUSTs), the conformance statement says: 7.1.2 MQTT Client An MQTT Client conforms to this specification only if it satisfies all the statements below:  1. The format of all MQTT Control Packets that the Client sends matches the format described in Chapter  2 and Chapter 3. ... So you MUST put in all the things it says in the packet description, otherwise it's a malformed packet. Does that solve it for you? Regards Andy Andy Stanford-Clark Distinguished Engineer, Internet of Things Master Inventor, Member IBM Academy of Technology, Fellow BCS Honorary Professor University of East Anglia, Visiting Professor University of Newcastle, Adjunct Professor University of Southampton. Tel: +44 (0)7801 787096 [internal: 37 277624]   twitter: @andysc From:         Andy Stanford-Clark/UK/IBM@IBMGB To:         "Kritikos, Alex" <Alex.Kritikos@softwareag.com> Cc:         "mqtt@lists.oasis-open.org" <mqtt@lists.oasis-open.org> Date:         17/05/2017 13:27 Subject:         Re: [mqtt] MQTT 3.1.1 partial connect packets over TCP Sent by:         <mqtt@lists.oasis-open.org> Hi Alex The fact that it's in the variable header doesn't make it optional... the 'MQTT' "eye catcher" is there for exactly that purpose of differentiating protocols in a multi-protocol server (and for helping a server know that the client that's connected is not talking MQTT). So if a client library doesn't send all the elements that are specified in the Variable Header section of the spec, then it's malformed... Maybe there should be some more "MUST"s in the spec?? Andy Andy Stanford-Clark Distinguished Engineer, Internet of Things Master Inventor, Member IBM Academy of Technology, Fellow BCS Honorary Professor University of East Anglia, Visiting Professor University of Newcastle, Adjunct Professor University of Southampton. Tel: +44 (0)7801 787096 [internal: 37 277624]   twitter: @andysc From:         "Kritikos, Alex" <Alex.Kritikos@softwareag.com> To:         "mqtt@lists.oasis-open.org" <mqtt@lists.oasis-open.org> Date:         17/05/2017 11:52 Subject:         [mqtt] MQTT 3.1.1 partial connect packets over TCP Sent by:         <mqtt@lists.oasis-open.org> Hello everyone,   Apologies if this has been answered before but I could not find a definitive answer so far. When using a TCP transport, is a client library sending a partial connect packet (2 byte fixed header only) while connecting to an MQTT broker conforming to the specification?   I understand that it may not be a problem for an MQTT only broker but what about multi protocol brokers, packet inspectors, load balancers? The specification only has a non normative comment on line 395:   Packet inspectors, such as firewalls, could use the Protocol Name to identify MQTT traffic.     In the above case though, the protocol name is not sent as it resides in the variable header of the packet.   Any assistance would be greatly appreciated.   Thanks,   Alex Kritikos   This communication contains information which is confidential and may also be privileged. It is for the exclusive use of the intended recipient(s). If you are not the intended recipient(s), please note that any distribution, copying, or use of this communication or the information in it, is strictly prohibited. If you have received this communication in error please notify us by e-mail and then delete the e-mail and any copies of it. Software AG (UK) Limited Registered in England & Wales 1310740 - http://www.softwareag.com/uk Unless stated otherwise above: IBM United Kingdom Limited - Registered in England and Wales with number 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU Unless stated otherwise above: IBM United Kingdom Limited - Registered in England and Wales with number 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU


  • 4.  Re: [mqtt] MQTT 3.1.1 partial connect packets over TCP

    Posted 05-17-2017 14:39




    Hi Andy,
     
    Yes that helps, thank you for the response. Are there any TCP packet alignment requirements? I am aware of the requirement for WS transports to support partial packet reads but what about
    TCP?
     
    Best Regards,
     
    Alex Kritikos
     

    From:
    Andy Stanford-Clark <ANDYSC@uk.ibm.com>
    Date: Wednesday 17 May 2017 at 17:32
    To: Andy Stanford-Clark <ANDYSC@uk.ibm.com>
    Cc: Alex Kritikos <Alex.Kritikos@softwareag.com>, "mqtt@lists.oasis-open.org" <mqtt@lists.oasis-open.org>
    Subject: Re: [mqtt] MQTT 3.1.1 partial connect packets over TCP


     

    Alex,

    Further to this (actually answering my comment about MUSTs), the conformance statement says:


    7.1.2 MQTT Client

    An MQTT Client conforms to this specification only if it satisfies all the statements below:

     1. The format of all MQTT Control Packets that the Client sends matches the format described in Chapter

     2 and Chapter 3.
    ...


    So you MUST put in all the things it says in the packet description, otherwise it's a malformed packet.


    Does that solve it for you?


    Regards
    Andy

    Andy Stanford-Clark
    Distinguished Engineer, Internet of Things

    Master Inventor, Member IBM Academy of Technology, Fellow BCS
    Honorary Professor University of East Anglia, Visiting Professor University of Newcastle, Adjunct Professor University of Southampton.
    Tel: +44 (0)7801 787096 [internal: 37 277624]   twitter: @andysc



    From:         Andy Stanford-Clark/UK/IBM@IBMGB

    To:         "Kritikos, Alex" <Alex.Kritikos@softwareag.com>

    Cc:         "mqtt@lists.oasis-open.org" <mqtt@lists.oasis-open.org>

    Date:         17/05/2017 13:27

    Subject:         Re: [mqtt] MQTT 3.1.1 partial connect packets over TCP

    Sent by:         <mqtt@lists.oasis-open.org>







    Hi Alex

    The fact that it's in the variable header doesn't make it optional... the 'MQTT' "eye catcher" is there for exactly that purpose of differentiating protocols in a multi-protocol server (and for helping a server know that the client that's connected is not talking
    MQTT).

    So if a client library doesn't send all the elements that are specified in the Variable Header section of the spec, then it's malformed...


    Maybe there should be some more "MUST"s in the spec??

    Andy

    Andy Stanford-Clark
    Distinguished Engineer, Internet of Things

    Master Inventor, Member IBM Academy of Technology, Fellow BCS
    Honorary Professor University of East Anglia, Visiting Professor University of Newcastle, Adjunct Professor University of Southampton.
    Tel: +44 (0)7801 787096 [internal: 37 277624]   twitter: @andysc



    From:         "Kritikos, Alex" <Alex.Kritikos@softwareag.com>

    To:         "mqtt@lists.oasis-open.org" <mqtt@lists.oasis-open.org>

    Date:         17/05/2017 11:52

    Subject:         [mqtt] MQTT 3.1.1 partial connect packets over TCP

    Sent by:         <mqtt@lists.oasis-open.org>







    Hello everyone,
     
    Apologies if this has been answered before but I could not find a definitive answer so far.

    When using a TCP transport, is a client library sending a partial connect packet (2 byte fixed header only) while connecting to an MQTT broker conforming to the specification?

     
    I understand that it may not be a problem for an MQTT only broker but what about multi protocol brokers, packet inspectors, load balancers? The specification only has a non normative comment on line 395:

     
    Packet inspectors, such as firewalls, could use the Protocol Name to identify MQTT traffic.

     
     
    In the above case though, the protocol name is not sent as it resides in the variable header of the packet.

     
    Any assistance would be greatly appreciated.
     
    Thanks,
     
    Alex Kritikos
     




    This communication contains information which is confidential and may also be privileged. It is for the exclusive use of the intended
    recipient(s). If you are not the intended recipient(s), please note that any distribution, copying, or use of this communication or the information in it, is strictly prohibited. If you have received this communication in error please notify us by e-mail and
    then delete the e-mail and any copies of it.

    Software AG (UK) Limited Registered in England & Wales 1310740 - http://www.softwareag.com/uk









    Unless stated otherwise above:
    IBM United Kingdom Limited - Registered in England and Wales with number 741598.
    Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU



    Unless stated otherwise above:
    IBM United Kingdom Limited - Registered in England and Wales with number 741598.
    Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU







    This communication contains information which is confidential and may also be privileged. It is for the exclusive use of the intended recipient(s).
    If you are not the intended recipient(s), please note that any distribution, copying, or use of this communication or the information in it, is strictly prohibited. If you have received this communication in error please notify us by e-mail and then delete
    the e-mail and any copies of it.
    Software AG (UK) Limited Registered in England & Wales 1310740
    - http://www.softwareag.com/uk