ADC

Caso de uso 1: Equilibrio de carga SMPP

Diariamente se intercambian millones de mensajes cortos entre personas y proveedores de servicios de valor agregado, como bancos, anunciantes y servicios de directorios, mediante el protocolo de mensajería corta de igual a igual (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. NetScaler admite el equilibrio de carga de SMPP y proporciona una distribución óptima de los mensajes en los servidores, lo que evita el bajo rendimiento y las interrupciones.

NetScaler equilibra la carga en el lado del servidor cuando se reciben mensajes de los clientes y en el lado del cliente cuando se reciben mensajes de los servidores.

El equilibrio de carga de los mensajes SMPP mediante NetScaler ofrece 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 del servidor 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 redirección (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 las entidades de mensajes cortos (PYMES), como los teléfonos móviles. Las pymes también utilizan el SMPP 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 o ESME de destino.

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 usan 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, la ESME puede, según el modo en que esté enlazada 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 uno nuevo o cancelar un mensaje no entregado.

Si un mensaje no se entrega porque no hay una ESME disponible o porque un suscriptor móvil no está en línea, el mensaje se pone en cola. Más adelante, cuando el MC detecta que el suscriptor móvil ya está accesible, envía una PDU alert_notification 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. Como el intercambio de mensajes a través de SMPP puede realizarse en modo asíncrono, un ESME o un MC pueden enviar varias solicitudes a la vez. El número de secuencia desempeña un papel crucial a la hora de devolver la respuesta en la misma sesión de 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 NetScaler no admite operaciones salientes. Es decir, un centro de mensajes no puede iniciar una sesión SMPP con un ESME a través del dispositivo NetScaler.

Cómo funciona el equilibrio de carga SMPP en NetScaler

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

El ADC puede equilibrar la carga de los mensajes que se originan en los clientes y en los servidores. Puede supervisar el estado de los centros de mensajes y gestionar los mensajes concatenados. También proporciona soporte de conmutación de contenido para los centros de mensajes.

Mensajes procedentes de las ESME

Cada ESME debe agregarse como usuario en NetScaler 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 no hay una conexión al centro de mensajes 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) del centro de mensajes al cliente, el ADC agrega un identificador de servidor personalizado al ID del mensaje para identificar el centro de mensajes para las operaciones auxiliares, como consultar, reemplazar o cancelar las solicitudes de un mensaje, por parte del 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 al que puede prestar servicio. Este rango se usa para reenviar mensajes deliver_sm o data_sm desde los centros de mensajes a los clientes.

Mensajes que se originan en un centro de mensajes

Las ESME que pueden gestionar un rango 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 usa el método de todos contra todos para equilibrar la carga. Para entregar mensajes originados en dispositivos móviles (MO), el centro de mensajes envía un mensaje deliver_sm a NetScaler. Si un clúster que puede servir al rango 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 del mensaje entre los nodos de ESME de ese clúster.

Si un ESME que pueda enviar mensajes de deliver_sm para el rango 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 enlace al ADC en modo receptor o transceptor. Puede especificar el tamaño de la cola.

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

ESME

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 la 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 rango 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 rango de direcciones especificado en el mensaje)
  25. NetScaler reenvía deliver_sm_resp a MC2
  26. NetScaler reenvía la alert_notification a ESME1

Monitorización del estado de los centros de mensajes

De forma predeterminada, un monitor TCP_Default está enlazado a un servicio SMPP, pero puede vincular 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. Según el éxito o el fallo de la sonda, el servicio se marcará como ACTIVADO o DESACTIVADO.

Cambio de contenido en centros de mensajes

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

  • Según el rango de direcciones: en la siguiente expresión de ejemplo, el ADC selecciona un centro de mensajes específico si el rango 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”)

  • Según el tipo de ESME: en la siguiente expresión de ejemplo, el ADC selecciona un centro de mensajes específico si el tipo de ESME es VMS. VMS son las siglas de Voice Mail System.

Ejemplo:

SMPP.BINDINFO.SYSTEM_TYPE.EQ (“MÁQUINAS VIRTUALES”)

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

Ejemplo:

SMPP.BINDINFO.ADDR_TON.EQ (1)

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

Ejemplo:

SMPP.BINDINFO.ADDR_NPI.EQ (0)

  • Según 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 TRANSCEPTOR. (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 compatible, los mensajes se combinan y se entregan como un SMS largo. El NetScaler 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 concreto en el mensaje completo. Una vez recibidos todos los fragmentos, la 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 con el centro de mensajes no se cierra. Se reutiliza para las solicitudes de otros clientes.

Limitación

No se admiten los ID de mensajes del centro de mensajes de más de 59 bytes. Si la longitud del ID del mensaje devuelta por el centro de mensajes es superior a 59 bytes, las operaciones auxiliares fallan y NetScaler responde con un mensaje de error.

Configuración del equilibrio de carga SMPP en NetScaler

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

  1. Añada un usuario de 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 ID de servidor personalizado que sea único para cada servidor. Enlazar el servicio al servidor virtual de equilibrio de carga creado anteriormente.
  4. Si lo desea, cree un grupo de servicios y añada servicios al grupo de servicios.
  5. Si lo desea, añada un monitor de tipo SMPP-ECV y vincúlelo al servicio. Un monitor TCP predeterminado está enlazado de forma predeterminada.
  6. Configure los parámetros de SMPP, como el modo cliente y la cola de mensajes.

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

En la línea de comandos, 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  
<!--NeedCopy-->

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*"
<!--NeedCopy-->

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

  1. Vaya a Sistema > Administración de usuarios > Usuarios de SMPPy agregue un usuario SMPP.
  2. Vaya a Administración del tráfico > Equilibrio de carga > Configurar parámetros SMPPy establezca los parámetros según lo requiera la implementación.
  3. Vaya a Administración del tráfico > Equilibrio de carga > Servidores virtualesy 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.