Всё, что стоит знать, и ничего лишнего.
Почему версия 3.4 завоевала базу установленных устройств?
Протокол SMPP 3.4 был выпущен одновременно с началом распространения SMS A2P. Все основные поставщики SMSC разработали надежные и стабильные реализации версии 3.4. Протокол невелик (около 30 типов PDU, всего восемь команд, которые вы когда-либо отправляете), хорошо изучен и преодолевает любые NAT и межсетевые экраны на пути следования. Спустя двадцать семь лет спецификация SMPP 3.4 по-прежнему является основным протоколом в каждом контракте на межсетевое соединение A2P.
Что добавила версия 5.0
В SMPP 5.0 были устранены некоторые недоработки: встроенная поддержка UTF-8 для полезной нагрузки сообщений, корректный реестр типов служб, функции broadcast_sm / query_broadcast_sm / cancel_broadcast_sm для широковещательной рассылки в сотовых сетях, опциональные TLV для выставления счетов и более жесткий контроль перегрузки с помощью congestion_state. Также была введена концепция машин состояний сообщений, которыми SMSC может управлять от имени ESME.
Почему почти никто не использует версию 5.0
Три причины. Во-первых, поставщикам SMSC не заплатили за обновление — у операторов уже были работающие стеки версии 3.4. Во-вторых, сценарий использования широковещательной передачи сот, на который была ориентирована версия 5.0, был ориентирован на выделенные центры широковещательной передачи сот (CBC), а не на SMSC. В-третьих, проблемы, исправленные в версии 5.0 (обработка Unicode, TLV для выставления счетов), обычно решаются на уровне приложений с помощью TLV поверх версии 3.4. В результате: в BroadNet у нас в эксплуатации только одна привязка версии 5.0. У нас более 1000 активных привязок версии 3.4.
Практические советы
Подключитесь в качестве трансивера по SMPP 3.4 с использованием TLS на порту, указанном в вашей учетной записи. Используйте submit_sm с TLV message_payload для длинных сообщений (вместо конкатенации UDH), если принимающий SMSC это поддерживает. Согласовывайте enquire_link каждые 30 секунд, корректно отключайте. Если ваш агрегатор принудительно использует версию 5.0, уточните причину — это не дает преимуществ в плане доставляемости на коммерческих маршрутах A2P.
SMPP 3.4 против SMPP 5.0 с первого взгляда
| SMPP 3.4 | SMPP 5.0 | |
|---|---|---|
| Год выпуска | 1999 | 2003 |
| Распространённость в продакшене | Почти каждое A2P-подключение (bind) | Редко — почти не внедряется |
| Нативный заголовок Unicode | — | |
| Поддержка Cell Broadcast | — | |
| Управление перегрузкой | Базовое | Сигнализация congestion_state |
| Выигрыш в доставляемости | Базовый уровень | Нет на коммерческих A2P-маршрутах |
| Рекомендовано сегодня | Да — transceiver поверх TLS | Только если этого требует контрагент |