What is the SMPP protocol? - protocols

What is the SMPP protocol and how does it work?
I've not even seen it yet and have to start with introduction onward.

SMPP is a low-level binary Internet protocol.
The primary use of SMPP is to send and receive medium-to-high volumes of SMS texts.
SMPP uses a standard Internet connection to connect to an SMPP provider, to do away with or compliment the purchase of a GSM modem or a SIM card.
SMPP offers the following benefits over a GSM modem:
Send by a meaningful name e.g. a company name instead of phone number.
Send by a short codes; 3, 4, or 5 digit phone number instead of the normal length.
Faster processing
Software:
Kannel is an open-source client for experimenting on.
ActiveXperts Mobile Messaging Toolkit is a commercial solution with SMPP simulator.
For the record: I'm a programmer at ActiveXperts, actively involved in SMPP and SMS related developments.

Fundamentally it's the main protocol that SMS aggregator companies
(mostly!) use when communicating with different type of Gateways (GW).
Please check these links...they will definitely help you out understand SMPP more thoroughly.
http://www.simpleteam.com/downloads/SMPP_v3_4_Issue1_2.pdf
http://www.ehow.com/facts_7344160_smpp-protocol_.html
Wikipedia definition:
"SMPP is a telecommunications industry protocol for exchanging SMS messages between SMS peer entities such as short message service centers and/or External Short Messaging Entities. It is often used to allow third parties (e.g. value-added service providers like news organizations) to submit messages, often in bulk."

Related

Can we implement gateways for sending sms in node js , Any alternate for KANNEL?

Wants to create sms service how to implement gateways in nodejs other than using kannel,
Any opensource Alternates for kannel method
Basically, you can implement an SMS-Gateway in any language. While on the north part you can implement the protocol you want (XML, JSON, whatever on HTTP(S), or messaging queues, or even your own), on one south part, the one that connects to the telco network you need to talk to the SMSC which usually talks SMPP 3.4 and implementing SMPP might be tricky.
Kannel had been around for something like 20 years and I would say it had been battle tested since then. We are using it and I can't remember any single problem due to Kannel since ever.
JasminSMS is an often cited alternative but I never played with it. There are some others, just google for opensource sms gateway.
it depends on your needs for the SMS Gateway features ,there 2 alternative to kannel : playsms and jasmin SMS gateway , keep in mind you still need to have an outgoing route connected to your sms gateway to send the sms out to end users , optionaly you can connected to an sms provider , like https://www.octopush.com/api-sms-documentation/
you can build your sms gateway based on that api and plug your users to your sms gateway

instant messaging for apps

I'm developing a web and mobile app using spring mvc and I'm having a problem understanding the different protocols and tools to make instant messaging (like facebook messaging in the website or whatsapp instant notifications). one functionality besides chatting in the project is for a user to send a request and waiting for the other user to respond with notifying them instantly).
However I'm lost cause some say to use GCM or FCM for the mobile and others say there other protocols like STOMP and AQMP and some others. I don't know what to see and use in my rest api so that it works for both browsers and mobiles while taking performance and other issues into consideration and how to consume these messages from client (I mean does the consumption method varies based on the chosen protocol?). should I use multiple protocols and tools based on the source of the request (i.e. if mobile and Android --> GCM or FCM, if browser STOMP for example, if iOS --> don't know what to use).
I know it looks like a general question but I really got lost specially that I don't know what are the right things to choose these days to start with.
Messaging stack consists of multiple components. One of them is message transport - used to pas messages between the server and the client. FCM/GCM/APNS in this context is the transport protocol.
GCM is deprecated in favor of FCM. FCM is going to work for Android, the latest versions of iOS, and even some browsers. However if the user disables notifications for your app, the messaging will stop working. There is also some unpredictable latency with push notifications, particularly if you would like to send high-volume messages like typing notifications.
Message format is another component of the stack. For instance, STOMP is the message format protocol. It's defined for any serial transport, i.e. can be used over FCM or TCP or websocket.
Given the questions you ask it looks completely impractical for you to write your own messaging stack. Just pick something off the shelf, like one of the million XMPP servers or a more modern one like Tinode. Google it.

Which of the following SMPP architectures produces higher performance?

I am currently implementing an SMS application which requires that I connect to a telecom operator's SMPP server. I have decided to use Kannel running on Ubuntu as my SMPP client. I need to relay the messages from my SMPP client to my application server. When a message is received from the operator's SMPP server, Kannel forwards the said SMS message by performing an HTTP GET request on some configurable URL.
Which of the following attached alternatives would be more efficient?
You spend time on three occasions:
prepare data on the machine with SMPP client
send data
decode data on the machine with Node
The rest depends on your machines' configuration and network connection quality.
Sending data via WebSockets is generally faster due to a significant reduction in overhead (especially for SMS-messages, which are numerous but small). You will, however, spend extra time on converting Kannel GET to a WebSocket request.
There is no sane way to theoretically predict which alternative will work better, so you will have to try both in order to decide.

OPC UA protocol vs MQTT protocol

I would like to compare OPC UA vs MQTT on basis of the general characteristics of both the protocols such as Overhead (Packets), Security, Information modeling and Reliability. Where can I find some sample data for Overhead, and other characteristics, for each protocol so that I compare them. I need your suggestions. You can suggest any tool to compare these protocols.
MQTT is a broker based messaging protocol where the payload encoding and content is completely application specific. Therefore it would be useful if you want to send messages between two applications developed by you.
OPC UA is an architecture (OPC Unified Architecture) where a communication protocol is only a part of the topics addressed. An OPC UA application is able to expose a full meshed network of Objects, Variables, Methods and data structures in an object oriented way. The communication today is based on a client/server model where the server exposes a set of standard services to navigate through the available object, read and write data, call methods or subscribe for data changes or events.
The main goal is to provide interoperability between applications from different vendors by defining the meta meta model on how to make information available, by defining standard services for access to the information and by defining different transport protocols and data encodings for the service invocation. Protocols include an optimized OPC UA binary protocol providing end to end security but also web services or HTTPS based protocols.
The OPC UA working is currently working on a second Publish Subscribe based communication model that allows a messaging between OPC UA applications. Besides a UDP based peer-to-peer protocol, this PubSub extension will also use broker based messaging protocols like AMQP and MQTT.
Therefore it is difficult to compare OPC UA which is a complete set of features including protocols like MQTT and MQTT as stand-alone protocol.
Other responses already include references to MQTT material.
Here are some links to OPC UA material:
Brochure with some high level introduction to OPC UA:
https://opcfoundation.org/resources/brochures/
OPC UA Specifications:
https://opcfoundation.org/developer-tools/specifications-unified-architecture
Free evaluation and test tools:
Test / demo client:
https://www.unified-automation.com/downloads/opc-ua-clients.html
Test / demo servers:
https://www.unified-automation.com/downloads/opc-ua-servers.html
Development tools for different programming languages:
https://www.unified-automation.com/downloads/opc-ua-development.html
I have not seen a OPC UA vs MQTT comparison yet. Bear in mind, that OPC-UA shines most for SCADA systems, MQTT is very good for Publish/Subscribe messaging over unreliable networks like mobile networks.
If low overhead is key for you, MQTT may be a much better fit than OPC-UA. This of course heavily depends on your use case.
You may find this link useful if you're interested in the MQTT overhead: http://stephendnicholas.com/archives/1217
If you're interested in MQTT and security, this blog post series may be helpful to you: http://www.hivemq.com/introducing-the-mqtt-security-fundamentals/
If you're getting started with MQTT, this in-depth blog post series may be valuable for you: http://www.hivemq.com/mqtt-essentials-wrap-up/
OPC UA and MQTT are orthogonal because they try to solve different problems.
The OPC UA WG is currently developing a PubSub extension OPC UA that specifies how OPC UA payloads can be sent over MQTT, AMQP or XMPP.
One of the biggest problems with MQTT is the format of the payload is left to the application which means you have no real inter-operability between applications that have not been specifically coded to work with each other. The OPC UA PubSub extension addresses this limitation by defining a syntax for OPC UA payloads.

USSD secure or not?

I have a question about USSD and security in this channel.
As you know today mobile banking and many payments using USSD, I want to know is USSD safe?
If USSD transactions using a5/1 for encryption,its totally broke few years a go and now can be captured by usrp (or HackRF board) and decoded by rainbow tables created for a5/1.
I think this transactions is not really safe,but I want to know more about this protocol and encryption using at this transactions. I dont know USSD codes encoded with a5/1 or GSM-7... so my question is:
What is encryption using for USSD transactions? Is the USSD using
GSM voice encryption ( a5/1) or using GSM-7 or other?
How we can make USSD secure? is possible to add additional
encryption to transactions or what you think about securing USSD
codes and transactions.
Thanks all.
In general there are two level of security in Mobile networks (in this case GSM)
AirInterface Security
Core Network Security
For the AirInterface (Radio Interface between MS and BTS) it can be encrypted or unencrypted (depend on network setting)
https://en.wikipedia.org/wiki/A5/1
https://en.wikipedia.org/wiki/A5/2
As you can see both current encryption methods are so weak specially for financial transaction (compare to acceptable encryption methods for online banking).
The real problem for USSD messages are their MAP/SS7(Sigtran) related message in the core network.
Unfortunately all USSD messages in GSM network transfer as a plain text (as a part of MAP message) and all E1 links are easily monitor-able.
Using USSD as a transmission layer (in the lack of Data connection(GPRS-3G-LTE)on network) is possible but an encryption layer is require ( and it can be implemented on Android or IOS App)

Resources