Caso de uso 1: Equilibrio de carga SMPP

Millones de mensajes cortos se intercambian diariamente entre individuos y proveedores de servicios de valor agregado, como bancos, anunciantes y servicios de directorio, mediante el protocolo de mensajes cortos peer to peer (SMPP). A menudo, la entrega de mensajes se retrasa porque los servidores están sobrecargados y el tráfico no se distribuye de manera óptima entre los servidores. Citrix ADC admite el equilibrio de carga SMPP y proporciona una distribución óptima de mensajes entre los servidores, lo que evita un rendimiento deficiente y las interrupciones.

Citrix ADC realiza el equilibrio de carga en el lado del servidor cuando se reciben mensajes de clientes y en el lado del cliente cuando se reciben mensajes de servidores.

El equilibrio de carga de los mensajes SMPP por Citrix ADC proporciona las siguientes ventajas:

  • Mejor distribución de la carga en los servidores, lo que se traduce en un tiempo de respuesta más rápido para los usuarios finales
  • Supervisión del estado de los servidores y mejores capacidades de conmutación por error
  • Adición rápida y sencilla de nuevos servidores (centros de mensajes) sin cambiar la configuración del cliente
  • Alta disponibilidad

Introducción a SMPP

SMPP es un protocolo de capa de aplicación para la transferencia de mensajes cortos entre entidades externas de mensajes cortos (ESME), entidades de enrutamiento (RE) y centros de mensajes (MC) a través de conexiones TCP de larga duración. Se utiliza para enviar mensajes de servicio de mensajes cortos (SMS) entre amigos, contactos y terceros como bancos (banca móvil), anunciantes (comercio móvil) y servicios de directorio. Los mensajes de una ESME (entidad no móvil) llegan al MC, que los distribuye a entidades de mensajes cortos (PYME), como teléfonos móviles. SMPP también es utilizado por las PYME para enviar mensajes cortos a terceros (por ejemplo, para la compra de productos, el pago de facturas y la transferencia de fondos). Estos mensajes llegan al MC y se reenvían al MC de destino o ESME.

El siguiente diagrama muestra las diferentes entidades SMPP: ESMES, Res y MCs, en una red móvil.

arquitectura

Descripción general de la arquitectura de las diferentes entidades SMPP en una red móvil

Nota: Los términos cliente y ESME se utilizan indistintamente en todo el documento.

Un ESME (cliente) abre una conexión al MC en uno de los tres modos: Como transmisor, receptor o transceptor. Como transmisor, solo puede enviar mensajes para su entrega. Como receptor, solo puede recibir mensajes. Como transceptor, el ESME puede enviar y recibir mensajes. El ESME envía al MC uno de los tres mensajes (también conocidos como PDU): Bind_transmitter, bind_receiver o bind_transceiver. El MC responde con bind_transmitter_resp, bind_receiver_resp o bind_transceiver_resp, según corresponda para la solicitud.

Una vez establecida la conexión, el ESME puede, dependiendo del modo en el que esté enlazado al MC, enviar un mensaje submit_sm o data_sm, recibir un mensaje deliver_sm o data_sm, o enviar y recibir cualquiera de estos tipos de mensajes. El ESME también puede enviar mensajes auxiliares, como query_sm, replace_sm y cancel_sm, para consultar el estado de una entrega de mensajes anterior, reemplazar un mensaje anterior por un mensaje nuevo o cancelar un mensaje no entregado.

Si no se entrega un mensaje porque un ESME no está disponible o un suscriptor móvil no está conectado, el mensaje se pone en cola. Más tarde, cuando el MC detecta que el suscriptor móvil es ahora accesible, envía una PDU de notificación de alerta a la ESME a través de una sesión de receptor o transceptor, solicitando la entrega de cualquier mensaje en cola.

Cada PDU de solicitud tiene un número de secuencia único. La PDU de respuesta tiene el mismo número de secuencia que la solicitud original. Dado que el intercambio de mensajes a través de SMPP puede estar en modo asíncrono, un ESME o un MC pueden enviar varias solicitudes a la vez. El número de secuencia juega un papel crucial en la devolución de la respuesta en la misma sesión SMPP. En otras palabras, el número de secuencia hace posible la coincidencia de solicitudes y respuestas.

El siguiente diagrama muestra cómo el flujo de tráfico utiliza las distintas PDU cuando ESME se vincula como transceptor.

flujo de tráfico

Limitación:

El dispositivo Citrix ADC no admite operaciones de salida de enlace. Es decir, un centro de mensajes no puede iniciar una sesión SMPP con un ESME a través del dispositivo Citrix ADC.

Cómo funciona el equilibrio de carga SMPP en Citrix ADC

Un ESME (cliente) envía un mensaje de enlace para abrir una conexión con Citrix ADC. El ADC autentica cada ESME y, si tiene éxito, responde con un mensaje apropiado. Citrix ADC establece una conexión con cada centro de mensajes y equilibra la carga todos los mensajes entre estos centros de mensajes. Cuando el ADC recibe un mensaje de un cliente, vuelve a utilizar una conexión abierta al centro de mensajes o envía una solicitud de enlace a un centro de mensajes si no hay disponible una conexión abierta.

El ADC puede equilibrar la carga mensajes procedentes de los clientes y de los servidores. Puede supervisar el estado de los centros de mensajes y manejar mensajes concatenados. También proporciona compatibilidad con el cambio de contenido para los centros de mensajes.

Mensajes que se originan desde los eMES

Cada ESME debe agregarse como usuario en Citrix ADC para la autenticación. El cliente establece una conexión TCP con un servidor virtual SMPP configurado en el ADC mediante el envío de una solicitud de enlace. El ADC autentica el cliente y, si tiene éxito, analiza el mensaje de enlace. A continuación, el ADC envía la solicitud al centro de mensajes seleccionado por el método de equilibrio de carga configurado. Si una conexión con el centro de mensajes no está disponible para su reutilización, el ADC abre una conexión TCP con el centro de mensajes enviando una nueva solicitud de enlace al centro de mensajes.

Antes de reenviar la respuesta (submit_sm_resp o data_sm_resp) desde el centro de mensajes al cliente, el ADC agrega un identificador de servidor personalizado al identificador del mensaje para identificar el centro de mensajes para operaciones auxiliares, como consultar, reemplazar o cancelar solicitudes de un mensaje, realizadas por el cliente. Las solicitudes de otros clientes se equilibran de la misma manera.

En la solicitud de enlace original, un cliente especifica el rango de direcciones que puede servir. Este intervalo se utiliza para reenviar mensajes deliver_sm o data_sm desde los centros de mensajes a los clientes.

Mensajes que se originan desde un centro de mensajes

Los ESME que pueden manejar un intervalo de direcciones específico se agrupan en un clúster. Todos los nodos de un clúster proporcionan las mismas credenciales. Dentro de un clúster, solo se utiliza el método round robin para el equilibrio de carga. Para entregar mensajes móviles originados (MO), el centro de mensajes envía un mensaje deliver_sm al Citrix ADC. Si un clúster que puede servir el intervalo de direcciones de destino (por ejemplo, números que comienzan por 998) está enlazado al ADC, selecciona ese clúster y, a continuación, equilibra la carga el mensaje entre los nodos ESME de ese clúster.

Si un ESME que puede servir mensajes deliver_sm para el intervalo de direcciones no está enlazado al ADC y la cola de mensajes está habilitada, el mensaje se pone en cola hasta que dicho cliente se vincule al ADC en un modo receptor o transceptor. Puede especificar el tamaño de la cola.

El siguiente diagrama ilustra el flujo interno de PDU entre ESMES, Citrix ADC y los centros de mensajes. Para simplificar, solo se muestran dos ESMES y dos centros de mensajes.

Esmes

Flujo de mensajes (PDU):

  1. ESME1 envía una solicitud de enlace a NetScaler
  2. NetScaler envía una solicitud de enlace a MC1
  3. MC1 envía una respuesta de enlace a NetScaler
  4. NetScaler envía una respuesta de enlace a ESME1
  5. ESME1 envía submit_sm (1) a NetScaler
  6. ESME1 envía submit_sm (2) a NetScaler
  7. NetScaler reenvía submit_sm (1) a MC1
  8. NetScaler envía una solicitud de enlace a MC2
  9. MC2 envía una respuesta de enlace a NetScaler
  10. NetScaler reenvía submit_sm (2) a MC2
  11. MC1 envía submit_sm_resp (1) a NetScaler
  12. MC2 envía submit_sm_resp (2) a NetScaler
  13. NetScaler reenvía submit_sm_resp (1) a ESME1
  14. NetScaler reenvía submit_sm_resp (2) a ESME1
  15. ESME2 envía una solicitud de enlace a NetScaler
  16. NetScaler envía una respuesta de enlace a ESME2
  17. ESME2 envía submit_sm (3) a NetScaler
  18. NetScaler reenvía submit_sm (3) a MC1
  19. MC2 envía deliver_sm a NetScaler (ESME2 sirve el intervalo de direcciones especificado en el mensaje)
  20. MC1 envía submit_sm_resp (3) a NetScaler
  21. NetScaler reenvía submit_sm_resp (3) a ESME2
  22. NetScaler reenvía deliver_sm a ESME2
  23. ESME2 envía deliver_sm_resp a NetScaler
  24. MC1 envía alert_notification a NetScaler (ESME1 sirve el intervalo de direcciones especificado en el mensaje)
  25. NetScaler reenvía deliver_sm_resp a MC2
  26. NetScaler reenvía la alert_notification a ESME1

Supervisión de Salud de Centros de Mensajes

De forma predeterminada, un monitor TCP_Default está enlazado a un servicio SMPP, pero puede enlazar un monitor personalizado de tipo SMPP. El monitor personalizado abre una conexión TCP al centro de mensajes y envía un paquete enquire_link. En función del éxito o el fallo del sondeo, el servicio se marca hacia arriba o hacia abajo.

Content Switching on Message Centers

Los centros de mensajes pueden aceptar varias conexiones (o enlazar solicitudes) de ESMES. Puede configurar Citrix ADC para cambiar de contenido estas solicitudes basándose en los parámetros de enlace SMPP. A continuación se presentan algunas expresiones comunes para configurar métodos para seleccionar un centro de mensajes:

  • Basado en el intervalo de direcciones: En la siguiente expresión de ejemplo, el ADC selecciona un centro de mensajes específico si el intervalo de direcciones comienza en 988.

Ejemplo:

SMPP.BINDINFO.ADDRESS_RANGE.CONTAINS(“^988”)

  • Basado en el ID de ESME: En la siguiente expresión de ejemplo, el ADC selecciona un centro de mensajes específico si el ID de ESME es igual a ESME1.

Ejemplo:

SMPP.BINDINFO.SYSTEM_ID.EQ (“ESME1”)

  • Basado en el tipo ESME: En la siguiente expresión de ejemplo, el ADC selecciona un centro de mensajes específico si el tipo ESME es VMS. VMS significa sistema de correo de voz.

Ejemplo:

SMPP.BINDINFO.SYSTEM_TYPE.EQ (“VMS”)

  • Según el tipo de número (TON) de ESME: En la siguiente expresión de ejemplo, el ADC selecciona un centro de mensajes específico si TON es igual a 1 (1 significa un número internacional).

Ejemplo:

SMPP.BINDINFO.ADDR_TON.EQ (1)

  • Basado en el indicador de plan numérico (NPI) de ESME: En la siguiente expresión de ejemplo, el ADC selecciona un centro de mensajes específico si NPI es igual a 0 (0 representa una conexión desconocida).

Ejemplo:

SMPP.BINDINFO.ADDR_NPI.EQ (0)

  • Basado en el tipo de enlace: En la siguiente expresión de ejemplo, el ADC selecciona un centro de mensajes específico si el tipo de enlace es TRANSCEPTER. (Un transceptor puede enviar y recibir mensajes.)

Ejemplo:

SMPP.BINDINFO.TYPE.EQ (TRANSCEPTOR)

Manejo de mensajes concatenados

Un SMS puede contener un máximo de 140 bytes. Los mensajes más largos deben dividirse en partes más pequeñas. Si el móvil de destino es capaz, los mensajes se combinan y se entregan como un SMS largo. Citrix ADC reenvía los fragmentos de un mensaje al mismo centro de mensajes. Cada mensaje contiene un número de referencia, un número de secuencia y el número total de fragmentos. El número de referencia es el mismo para cada fragmento de un mensaje largo. El número de secuencia especifica la posición del fragmento en particular en el mensaje completo. Después de recibir todos los fragmentos, ESME combina los fragmentos en un mensaje largo y entrega el mensaje al suscriptor móvil.

Si un cliente se desconecta de una conexión activa, la conexión al centro de mensajes no se cierra. Se reutiliza para solicitudes de otros clientes.

Limitación

Los ID de mensaje, desde el centro de mensajes, no son compatibles con más de 59 bytes. Si la longitud del identificador del mensaje devuelto por el centro de mensajes es superior a 59 bytes, las operaciones auxiliares fallan y Citrix ADC responde con un mensaje de error.

Configuración del equilibrio de carga SMPP en Citrix ADC

Realice las siguientes tareas para configurar el equilibrio de carga SMPP en el ADC:

  1. Agregue un usuario SMPP. El ADC autentica al usuario antes de aceptar una solicitud de enlace del usuario. El usuario suele ser un ESME.
  2. Agregue un servidor virtual de equilibrio de carga, especificando el protocolo como SMPP.
  3. Agregue un servicio, especificando el protocolo como SMPP y un identificador de servidor personalizado que sea único para cada servidor. Enlace el servicio al servidor virtual de equilibrio de carga creado anteriormente.
  4. Opcionalmente, cree un grupo de servicios y agregue servicios al grupo de servicios.
  5. Opcionalmente, agregue un monitor de tipo SMPP-ECV y vincularlo al servicio. Un monitor TCP predeterminado está enlazado de forma predeterminada.
  6. Establezca los parámetros SMPP, como el modo cliente y la cola de mensajes.

Para configurar el equilibrio de carga SMPP mediante la línea de comandos

En el símbolo del sistema, escriba:

add smpp user <username> -password <password>  
add service <name> <IP> SMPP <port> –customserverID <customserverID>  
add lb vserver <name> <IP> SMPP <port>  
bind lb vserver <name> <service name>  
set smpp param  

Ejemplo

add smpp user smppclient1 -password c03ebb540695b6110eb31172f32245a1 -encrypted -encryptmethod ENCMTHD_2
add smpp user smppclient2 -password c03ebb540695b6110eb31172f32245a1 -encrypted -encryptmethod ENCMTHD_2
add service smmpsvc 10.102.84.140 SMPP 2775 -gslb NONE -maxClient 0 -maxReq 0 -cip DISABLED -usip NO -useproxyport YES -sp ON -cltTimeout 180 -svrTimeout 360 -CustomServerID ab -CKA NO -TCPB NO -CMP NO
add service smmpsvc2 10.102.81.175 SMPP 2775 -gslb NONE -maxClient 0 -maxReq 0 -cip DISABLED -usip NO -useproxyport YES -sp ON -cltTimeout 180 -svrTimeout 360 -CustomServerID xy -CKA NO -TCPB NO -CMP NO
add lb vserver smppvs SMPP 10.102.239.179 2775 -persistenceType NONE -cltTimeout 180
bind lb vserver smppvs smmpsvc2
bind lb vserver smppvs smmpsvc
set smpp param -addrrange "d*"

Para configurar el equilibrio de carga SMPP mediante la utilidad de configuración

  1. Vaya a Sistema > Administración de usuarios > Usuarios SMPP y agregue un usuario SMPP.
  2. Vaya a Administración del tráfico > Equilibrio de carga > Configurar parámetros SMPP y defina los parámetros según lo requiera la implementación.
  3. Vaya a Administración del tráfico > Equilibrio de carga > Servidores virtuales y agregue un servidor virtual de tipo SMPP.
  4. Haga clic en la sección Servicio, agregue un servicio de tipo SMPP y especifique un ID de servidor.