This concept document describes using SMPP instead of REST to access Nexmo's APIs. Implementing SMPP access requires a deep understanding of this complex telecommunications protocol and a lot of low-level development work. Most developers can safely ignore this information.
By default, your account is configured to use Nexmo's REST APIs over HTTPS. Unless your organization is an aggregator with an existing SMPP implementation, the information in this guide will probably be irrelevant to you.
This document covers the following:
- What is SMPP?
- Should I use SMPP to connect to the Nexmo platform?
- Why does Nexmo offer SMPP access?
- Configuring SMPP access
- Our SMPP instances
Short Message Peer-to-Peer (SMPP) is a protocol that the telecommunications industry uses to exchange SMS messages between Short Message Service Centers (SMSC) and/or External Short Messaging Entities (ESME).
SMPP is a level-7 TCP/IP protocol, which enables fast delivery of SMS messages. It is widely used for short message exchange outside SS7 networks because of its support for non-GSM SMS protocols such as UMTS and CDMA.
Nexmo uses SMPP to connect to multiple carriers worldwide. Because SMPP is a standard, we expect any new carriers we onboard to provide standard means of connectivity. If they do, we can integrate them them with relative ease.
Nexmo does not encourage SMPP access for the following reasons:
- SMPP is a very complex telecommunications protocol. You must be a domain expert to use it properly.
- Implementation requires a lot of low-level development work, unlike our REST APIs.
- Nexmo does not offer global high availability or disaster recovery over SMPP. This is due to the design of the protocol, which requires you to establish a bind between a client and a server before you can exchange messages. If one of Nexmo's SMPP instances fails, any customers using that instance must be either:
- Be already bound to another instance and reroute traffic
- Identify that they are no longer bound to an instance and seek to bind with another instance
Nexmo offers this service to integrate new carriers and make it easier for customers with an existing SMPP implementation to use our platform.
Instead of having to re-implement messaging over our REST APIs, you can simply modify your existing integration to establish a bind with Nexmo's SMPP clusters.
You can configure SMPP access to the Nexmo platform by using one of the following methods:
- Read the SMPP FAQ, which contains details about character encoding, DLR formats, concatenated messages, throttle management and other important information.
- Email us your monthly volume forecast. We will configure our system to enable SMPP access for you and send you a confirmation email with links to further resources.
You can use Kannel version 1.4.3 or higher to configure SMPP access:
Complete the standard configuration steps.
$nexmo_passwordwith your Nexmo SMPP credentials.
For security reasons
kannel.confonly allows access from
localhost. To enable access from a different machine, edit the following parameters in
kannel.conf. For example, for the IP addresses
admin-allow-ip = "127.0.0.1;X.X.X.X;Y.Y.Y.Y" ... box-allow-ip = "127.0.0.1;X.X.X.X;Y.Y.Y.Y" ... user-allow-ip = "127.0.0.1;X.X.X.X;Y.Y.Y.Y"
Send a test message. For example:
Nexmo hosts five instances of SMPP:
SMPP1/2- clustered (NA)
SMPP3/4- clustered (APAC)
SMPP0- not clustered
We recommend that you bind to both
SMPP2 or both
SMPP4. Only bind to
SMPP0 if you cannot bind to a clustered setup.
The standalone instance
SMPP0 is for aggregators running legacy infrastructure who cannot maintain simultaneous binds to multiple IP addresses. If you are binding to
SMPP0, you must implement SMPP redundancy to avoid a higher risk of planned and unplanned downtime.
- SMS Protocol Specification v3.4
- Nexmo's SMPP FAQ
- Nexmo's SMPP server
- SMPP error codes
- Sending concatenated messages via SMPP
- SMPP DLR format and error codes
- Troubleshooting SMPP DLRs