Está en la página 1de 21

ce er SMS

Introducción a SMPP
Muchos proveedores utilizan y soportan el protocolo SMPP:

Short Message Peer-to-Peer Aldiscon, Acision, Comverse, Alcatel, Huawei, CBOSS, Jinny,
Comviva, Tekelec, Mctel, Openmind Networks, Logica, Hewlett
Packard, ESKADENIA, Symsoft, ATS Advanced Technology
por Victor Celer Solutions, Telsis, Telenity, Redknee, Tango, NewNet, Mavenir,
2019-07-10 ZTE, AdaptiveMobile, Nordic Messaging, Homisco,
www.celersms.com Evistel, Bercut,
Ericsson,
Halys
¿Qué es SMPP?
ce er
Short Message Peer-to-Peer (SMPP) se define oficialmente como un protocolo
estándar y abierto, diseñado para proporcionar una interfaz de telecomunicaciones
flexible para la transferencia de mensajes cortos entre entidades de mensajería
externas (ESME), entidades de enrutamiento y centros de mensajes (SMSC)

Móviles
ESME1 SMPP

ESME2 SMPP SMSC

SMPP
ESME3

Compatible con diferentes tecnologías: GSM, UMTS, IS-95 (CDMA), CDMA2000, TDMA, iDEN, …
¿Existen Alternativas?
ce er
Existen varios protocolos alternativos:
• CIMD / CIMD v2
actualmente
• EMI / UCP (Logica CMG) prácticamente
• OIS (SEMA / Airwide) no se usan

Protocolos propietarios basados es: principalmente se usan


• HTTP por proveedores de SMS
masivos y SMS Hubs
• HTTPS

Protocolos SMPP personalizados:


para mayor seguridad,
• SMPP sobre SSL
especialmente en la nube
• SMPP sobre HTTP
Historial de Versiones
ce er

• SMPP v3.3: solamente unidireccional (Tx o Rx) 1997


• SMPP v3.4: también bidireccional (TRx), TLV opcionales 1999
• SMPP v5.0: soporta difusión CBC, control de flujo 2003 actual

compatibilidad hacia atrás


Ramas propietarias:
• SMPP v4.0 (Logica)
• CMPP (China Mobile)

sin compatibilidad
Aplicaciones Típicas
ce er
SMS:
• Mercadeo Móvil
• Contraseñas de uso único (OTP)
• Notificaciones de correo de voz
• Gestión de tarjetas SIM Over-the-Air (OTA)
• Gestión de dispositivos móviles (OMACP)
• Telemetría, M2M

Otros usos, diferentes de SMS:


• USSD
• Difusión de Cell Broadcast (CBC)
• Tasación
Modelo Cliente-Servidor
ce er
• El SMSC usualmente hace las veces de servidor en espera de conexiones
• El ESME hace las veces de cliente

• Los mensajes se intercambian en pares de Solicitud-Respuesta (de manera asíncrona)

• Operaciones en SMPP:
• bind servidor
• submit_sm
• deliver_sm
• enquire_link
• alert_notification
• … cliente cliente cliente
Transmisor (Tx), Receptor (Rx) o Transceptor (TRx)
ce er

ESME1 transmisor

unidireccional

ESME2 receptor SMSC

bidireccional ESME3
transceptor
Sesión SMPP
ce er

SALIENTE

ATADO_TX

ABIERTO ATADO_RX DESATADO CERRADO

ATADO_TRX
Solamente Transmisor (Tx)
ce er
ESME SMSC
conexión a nivel de red
ABIERTO
bind_transmitter
bind_transmitter_resp
ATADO_TX
mensajes cortos

submit_sm
Envío de

submit_sm_resp
submit_sm
submit_sm_resp
unbind
unbind_resp
DESATADO
cerrar la conexión
CERRADO
Solamente Receptor (Rx)
ce er
ESME SMSC
conexión a nivel de red
ABIERTO
bind_receiver
bind_receiver_resp
ATADO_RX
Mensajes cortos
Recepción de

deliver_sm
deliver_sm_resp
deliver_sm
deliver_sm_resp
unbind
unbind_resp
DESATADO
cerrar la conexión
CERRADO
Transceptor (TRx): combina transmisor y receptor
ce er
ESME SMSC
conexión a nivel de red
ABIERTO
bind_transceiver
bind_transceiver_resp
Envío y recepción de

ATADO_TRX
mensajes cortos

submit_sm
submit_sm_resp
deliver_sm
deliver_sm_resp
unbind
unbind_resp
DESATADO
cerrar la conexión
CERRADO
Formato de PDU
ce er
Encabezado PDU (Mandatorio) Cuerpo PDU
longitud id status número secuencia (Opcional)
4 octetos 4 octetos 4 octetos 4 octetos longitud - 16

• El campo de longitud representa la longitud total del PDU en


octetos (bytes), incluyendo la longitud del mismo campo
• La longitud mínima es 16
Formato de PDU
ce er
Encabezado PDU (Mandatorio) Cuerpo PDU
longitud id status número secuencia (Opcional)
4 octetos 4 octetos 4 octetos 4 octetos longitud - 16

• El identificador único de la operación:


submit_sm (0x00000004)
submit_sm_resp (0x80000004)
deliver_sm (0x00000005)
enquire_link (0x00000015)

• Los ID de solicitud están en el rango: 0x00000000 – 0x000001FF
• Los ID de respuesta están en el rango: 0x80000000 – 0x800001FF
Formato de PDU
ce er
Encabezado PDU (Mandatorio) Cuerpo PDU
longitud id status número secuencia (Opcional)
4 octetos 4 octetos 4 octetos 4 octetos longitud - 16

• El valor de status siempre es 0x00000000 para los PDU de solicitud


• En los PDU de respuesta el valor de status indica éxito (0x00000000) o
falla de la solicitud correspondiente
• Las especificaciones de SMPP describen los códigos de error estándar,
por ejemplo:
ESME_RMSGQFUL (0x00000014)
ESME_RTHROTTLED (0x00000058)
ESME_RINVEXPIRY (0x00000062)
Formato de PDU
ce er
Encabezado PDU (Mandatorio) Cuerpo PDU
longitud id status número secuencia (Opcional)
4 octetos 4 octetos 4 octetos 4 octetos longitud - 16

• Se incrementa para cada solicitud PDU subsiguiente


• Rango: 0x00000001 – 0x7FFFFFFF
• El número de secuencia en la respuesta debe coincidir con el
número de secuencia en la solicitud (correlación)
• Permite procesamiento asíncrono
Formato de PDU: Mayor profundidad
ce er

longitud
id
Encabezado
status
número de secuencia
Parámetros mandatorios
Cuerpo
Parámetros opcionales

• El encabezado es mandatorio para todos los PDU


• Algunos PDU no incluyen cuerpo (ej: enquire_link, generic_nack)
• Los parámetros opcionales están disponibles a partir de SMPP v3.4
• Los parámetros opcionales pueden ser ignorados por el ESME o el SMSC
Formato de PDU: Parámetros Opcionales
ce er

Tamaño Descripción
Tag 2 Identifica el parámetro de manera única
Longitud 2 Indica la longitud del valor
Valor Longitud Contiene el valor del parámetro

• Los parámetros opcionales (TLV) aparecen al final del cuerpo de PDU


• El orden en el que aparecen los TLV no es relevante
• Si el valor del tag no es soportado, entonces el TLV debe ser ignorado
• Recuerde que SMPP v3.3 no soporta esta funcionalidad
Ejemplo de Sesión Tx
ce er
ESME SMSC

bind_transmitter(1)
síncrono
bind_transmitter_resp(1)

submit_sm(2)
submit_sm(3)
Pares de
solicitud- submit_sm(4)

asíncrono
respuesta: submit_sm_resp(2)
mismo número
de secuencia submit_sm(5)
submit_sm_resp(3)
submit_sm_resp(4)
submit_sm_resp(5)
unbind(6)
síncrono
unbind_resp(6)
Ejemplo de Sesión Rx
ce er
ESME SMSC

bind_receiver(1)
síncrono
bind_receiver_resp(1)

deliver_sm(1)

Pares de deliver_sm(2)
solicitud- deliver_sm(3)

asíncrono
respuesta:
mismo número deliver_sm_resp(1)
de secuencia deliver_sm(4)
deliver_sm_resp(2)
deliver_sm_resp(3)
deliver_sm_resp(4)
unbind(2)
síncrono
unbind_resp(2)
Ejemplo de Sesión TRx
ce er
ESME SMSC

bind_transceiver(1)
síncrono
bind_transceiver_resp(1)

submit_sm(2)
submit_sm(3)
submit_sm_resp(2)

asíncrono
submit_sm_resp(3)
deliver_sm(1)
deliver_sm_resp(1)
deliver_sm(2)
deliver_sm_resp(2)
unbind(4)
síncrono
unbind_resp(4)
Manejo de Errores
ce er

solicitud
tiempo corto (ms)
respuesta

• Se genera error de tiempo fuera o retransmisión si no se tiene


respuesta luego de alcanzar el tiempo máximo de espera
• Se verifica el valor del campo status en el PDU de respuesta para
conocer si el resultado fue exitoso o no
• Es posible que se deba esperar por información adicional luego de
recibir una respuesta exitosa
(ej: reporte de entregado, PoR)
• La respuesta puede ser generic_nack si el PDU está corrupto

También podría gustarte