🎄 Happy Holidays! 🥳

Most of Solace is closed December 24–January 1 so our employees can spend time with their families. We will re-open Thursday, January 2, 2024. Please expect slower response times during this period and open a support ticket for anything needing immediate assistance.

Happy Holidays!

Please note: most of Solace is closed December 25–January 2, and will re-open Tuesday, January 3, 2023.

Broker v10.5 - SparkplugB 3.0 Compliant

RonInglesby
RonInglesby Member, Employee Posts: 12 Solace Employee
edited August 2023 in PubSub+ Event Broker #1

I ran the Sparkplug Compliant test against our 10.5 broker and the result is, it is complaint. The 10.5 broker was running as a hyper-v image.

I had to make the changes as detailed at https://docs.solace.com/Services/Managing-MQTT-Retained-Messages.htm#Retain_Mem_Config_VPN in order for the retain test to pass. I had to increase the VM's memory to 8192 MB in order to make the aforementioned MQTT retain changes.

Setting up the compatibility test is detailed here:

https://github.com/eclipse-sparkplug/sparkplug/blob/522e06ca194cbc7b5132695f011f2f704a544aab/tck/UserGuide.adoc

and

https://www.hivemq.com/article/starter-guide-sparkplug-3-0-certification-technology-compatibility-kit-tck-industry-40/

The test result:

Comments

  • Thomas Manson
    Thomas Manson Member Posts: 19 ✭✭✭

    Thanks for sharing :)

  • Thomas Manson
    Thomas Manson Member Posts: 19 ✭✭✭

    is it here that you increase the memory to 8192 MB  ?

    solace(configure/message-vpn/mqtt/retain/cache)# max-memory <megabytes>

  • RonInglesby
    RonInglesby Member, Employee Posts: 12 Solace Employee
    edited August 2023 #4

    When I tried to use the max-memory command initially I got an error.

    I had to increase the memory in the hyper-v image to 8192:

    Then I could run: max-memory 300

  • RonInglesby
    RonInglesby Member, Employee Posts: 12 Solace Employee
    edited August 2023 #5

    Reposting this from Thomas's posting in our Slack channel:

    Introduction to MQTT and Sparkplug for IIoT
    Sparkplug is a specification designed to standardize interoperability in the Industrial Internet of Things (IIoT) arena, particularly in relation to the MQTT protocol. MQTT has become the de facto standard for messaging in IoT applications but was designed to be as open as possible, lacking restrictions on topic names and message structures. Sparkplug was introduced by Cirrus Link in 2016 to address some of these perceived shortcomings.
    Key Features of Sparkplug

    1. Topic Namespace Structure: Sparkplug provides a standardized topic namespace structure, which looks like this: namespace/group_id/message_type/edge_node_id/[device_id].
    2. State Management: It introduces a mechanism for state management that uses “birth messages” and the existing “last will and testament” message in MQTT.
    3. Payload Structure: Sparkplug uses Google protocol buffers for its payload structure.

    Implications

    • Sparkplug doesn’t change MQTT but defines certain aspects that were left open for the end user to decide.
    • It provides clear guidelines for designing topic namespaces, packaging message payloads, and maintaining and communicating client state, which aids in system interoperability.

    Components

    • MQTT Broker (Server): Standard MQTT broker running standard compliant MQTT v3.1.1 (or greater, current version is 5.0).
    • Management Application or Applications: SCADA/IIoT Host Node receives data from Sparkplug nodes and sends control information to them.
    • MQTT Edge of Network Nodes (MQTT EON): These are gateway devices or MQTT-enabled devices that support Sparkplug.

    Detailed Aspects of Sparkplug
    Topic Namespace Structure
    Sparkplug introduces a standardized topic namespace structure to MQTT. The structure is as follows:

    namespace/group_id/message_type/edge_node_id/[device_id] 
    

    This allows for a more organized way to manage topics and ensures that all devices and applications are on the same page when it comes to topic naming.
    State Management
    One of the unique features of Sparkplug is its state management mechanism. It introduces “birth messages” in addition to MQTT’s “last will and testament” messages. This allows for better tracking of client states, which is crucial for industrial applications.
    Payload Structure
    Sparkplug employs Google protocol buffers for its payload structure. This ensures a more efficient and structured way to package data, which is essential for IIoT systems that may deal with large volumes of data.
    Message Types
    Sparkplug introduces specific message types like:

    • NBIRTH: Birth certificate for MQTT Edge of Network (EoN) nodes.
    • NDEATH: Death certificate for MQTT EoN nodes.
    • DBIRTH: Birth certificate for Devices.
    • DDEATH: Death certificate for Devices.
    • NDATA: Node data message.
    • DDATA: Device data message.
    • NCMD: Node command message.
    • DCMD: Device command message.
    • STATE: Critical application state message.

    These message types allow for more granular control and monitoring of devices and nodes in an IIoT system.

  • bryce
    bryce Member Posts: 1

    Have you considered posting these results at https://github.com/eclipse-sparkplug/sparkplug.listings ?

  • RonInglesby
    RonInglesby Member, Employee Posts: 12 Solace Employee

    Thanks Bryce. Yes we are considering posting the results there.