MQTT Broker
MQTT Broker (MB) acts as cross proxy converting the MQTT messages to HTTP messages and vice versa to enable IP device communication between IoT devices and SCS/AS. The MQTT Broker enables IoT device communication for this use case.
MQTT Broker complies with MQTT 3.1.1 specification and supports the following features:
- MQTT Subscriber messages from the application to a specific topic and device
- Subscribe message from the application to a specific topic
- Publish message from the application to a specific topic and device
- MQTT Subscribe messages from device to a specific topic
- Publish message from device to a specific topic
- High availability
- Provide a rest interface to provision MQTT details into system
- Integration with AAA server to get MQTT device IP details
- Integration with AAA server to update the device IP details in MQTT broker
- Route T8 messages to DSR and MQTT Broker depending on the device details provisioned in the system
- Perform Access control checks based on configured MSISDN range and domain IDs of external identifier for MO and MT messages per application
- Perform configured APN rate control per MQTT CONNECT, SUBSCRIBE, PUBLISH to and from devices
- Cross-routing functionality in OCSG cluster to handle T8 requests if the devices are connected to different AppServer
MQTT Broker provides a unified T8 interface for IP device communication enabling NIDD Downlink Data Delivery (POST) and monitoring event (POST & DELETE) call flows. For more details on the required configuration, see section MQTT Configuration.
T8-MQTT-Message Mapping
This section describes the mandatory parameters requires in T8 messages and their mapping to MQTT parameters.
Table 2-9 NIDD Downlink Data Delivery (POST)
Parameter Name | Type | Mandatory/Optional | MQTT mapping |
---|---|---|---|
SCSASID in Request URI | Input | Mandatory | N/A |
ConfigID in request URI | Defaulted to 'IPDD' | Mandatory | N/A |
ExternalId in Json Body | Input | Optional | Mapped to corresponding MQTT Device ID, this field is optional if MSISDN is present or for Broadcast messages |
MSISDN in Json Body | Input | Optional | Mapped to corresponding MQTT Device ID, this field is optional if ExternalID is present or for Broadcast messages |
Self in Json Body | Input | Optional | Stored for DLD buffered data delivery status notifications in case of MT buffering |
Data in json body | Input | Mandatory | MQTT PUBLISH Data |
Custom Header "Xscef-message-type: MQTT "
|
Input | Mandatory (in case of broadcast) | N/A |
Custom Header "Xscef-mqtt-topic-name:<topic> "
|
Input | Mandatory | MQTT PUBLISH topic name |
Table 2-10 NIDD Buffered Message Delivery Status Notification
Parameter Name | Type | Mandatory/Optional | MQTT Mapping |
---|---|---|---|
niddDownlinkDataTransfer
|
Input | Mandatory | Publishing topic name |
deliveryStatus
|
Input | Mandatory | N/A |
externalId |
Input | Mandatory | To identify this notification belongs to which MT data delivery. |
Table 2-11 Monitoring Event subscription (POST)
Parameter Name | Type | Mandatory/Optional | MQTT Mapping |
---|---|---|---|
Custom Header "Xscef-message-type: MQTT "
|
Input | Mandatory (in case device id not present) | |
SCSASID in Request URI
|
Input | Mandatory | N/A |
ExternalId in Json Body
|
Input | Optional | Mapped to corresponding MQTT Device ID, this field is optional if MSISDN is present or subscriptions without device id. |
MSISDN in Json Body
|
Input | Optional | Mapped to corresponding MQTT Device ID, this field is optional if External ID is present or subscriptions without device id. |
Notification Destination in Json Body | Input | Mandatory | N/A |
Monitoring type in Json body | Input | Mandatory | MQTT topic name |
subscriptionId
|
Output | Mandatory | N/A |
Table 2-12 Monitoring Event subscription (DELETE)
Parameter Name | Type | Mandatory/Optional | MQTT Mapping |
---|---|---|---|
Custom Header "Xscef-message-type: MQTT "
|
Input | Mandatory | |
SCSASID in Request URI | Input | Mandatory | N/A |
subscriptionId in Request URI | Input | Mandatory | N/A |
Table 2-13 Monitoring Event subscription Notification
Parameter Name | Type | Mandatory/Optional | MQTT Mapping |
---|---|---|---|
externalIds in Json body (external Id) | Input | Mandatory | To identify this notification belongs to which MT data delivery |
Monitoring type in Json body | Input | Mandatory | MQTT topic name |
Subscription in Json Body (Subscription Id) | Input | Mandatory | N/A |
Data in Json Body | Input | Mandatory | Data in PUBLISH message from device |