Un bind SMPP est une session authentifiée entre votre plateforme et le fournisseur SMS, et le TPS (transactions ou messages par seconde) est le nombre de messages que vous pouvez soumettre par seconde sur cette session. Les fournisseurs fixent une limite de TPS par bind ou par compte et un nombre maximal de binds ; les dépasser renvoie des erreurs de throttling : dimensionnez donc votre connexion sur votre trafic de pointe, en comptant chaque segment.
Types de bind
SMPP 3.4 définit trois façons de se connecter (bind) à un SMSC, chacune ouverte avec sa propre commande, son system_id et son mot de passe :
| Bind | Commande | Sens |
|---|---|---|
| Transmitter (TX) | bind_transmitter | Vous envoyez des messages (submit_sm) |
| Receiver (RX) | bind_receiver | Vous recevez les accusés de réception et les messages entrants (deliver_sm) |
| Transceiver (TRX) | bind_transceiver | Les deux sur une seule session |
La plupart des connexions A2P actuelles utilisent des binds transceiver. Avec des binds TX et RX séparés, assurez-vous qu'au moins un receiver est toujours connecté, sinon les accusés de réception s'accumulent chez le fournisseur. Les bases de SMPP sont dans SMPP vs API HTTP pour le SMS A2P.
Ce que signifie le TPS
Le TPS est le nombre d'opérations submit_sm autorisées par seconde. Quelques points prêtent à confusion :
- Les segments comptent : un SMS long en 3 parties utilise 3 transactions.
- Par bind ou par compte : une limite de 50 TPS peut s'appliquer à chaque bind ou à tous les binds ensemble. Demandez laquelle.
- Rafale ou débit soutenu : certains fournisseurs tolèrent de courtes rafales au-dessus de la limite, d'autres l'appliquent strictement à la seconde.
- Limites par destination : l'amont du fournisseur peut avoir des limites plus basses pour certains pays ou réseaux : le TPS de votre compte n'est donc pas toujours disponible partout.
Les valeurs typiques vont de 10 à 100 TPS par bind pour les comptes A2P normaux, davantage pour les gros expéditeurs. Une campagne de 360,000 messages à 100 TPS prend une heure ; à 20 TPS, elle en prend cinq.
Fenêtrage
SMPP est asynchrone : vous pouvez envoyer plusieurs submit_sm avant de recevoir les réponses. La taille de fenêtre est le nombre de requêtes qui peuvent être en attente en même temps. Une fenêtre trop petite limite le débit quand la latence est élevée (avec un aller-retour de 200 ms et une fenêtre de 1, vous ne pouvez pas dépasser 5 TPS). Une fenêtre trop grande peut surcharger le fournisseur. Des valeurs autour de 10 à 50 sont courantes ; convenez-en avec le fournisseur.
Ce qui se passe quand vous dépassez les limites
- ESME_RTHROTTLED (0x58) : trop de messages par seconde. Ralentissez et réessayez plus tard.
- ESME_RMSGQFUL (0x14) : la file du fournisseur est pleine. Réessayez après une pause.
- ESME_RALYBND (0x05) ou ESME_RBINDFAIL (0x0D) : souvent renvoyés quand vous ouvrez plus de binds qu'autorisé ou avec de mauvais identifiants.
Votre plateforme doit ralentir sur les erreurs de throttling au lieu de réessayer immédiatement, ce qui ne fait qu'aggraver la situation. La liste complète est dans les codes d'erreur SMPP courants.
Garder des binds en bonne santé
- Envoyez un enquire_link toutes les 30 à 60 secondes (convenez de l'intervalle), et reconnectez-vous automatiquement en cas d'échec.
- Répartissez le trafic entre les binds avec un simple round-robin, et n'en ouvrez pas plus qu'autorisé.
- Utilisez la liste blanche d'IP et, si c'est proposé, TLS ou un VPN, car SMPP 3.4 envoie les identifiants en clair.
- Surveillez la latence des submit_sm_resp : une hausse précède souvent le throttling ou des problèmes de livraison. Voir taux de livraison et latence des SMS.
- Pour le trafic américain, rappelez-vous que les limites de débit des opérateurs par marque et par campagne peuvent être inférieures à votre TPS SMPP. Voir 10DLC et SMS toll-free.
Dimensionner une demande
Calculez votre pic par seconde, pas votre volume mensuel : le trafic OTP à 9:00 un lundi ou le lancement d'une campagne peut atteindre dix fois la moyenne. Quand vous demandez des routes SMS A2P via VoIPMatcher, indiquez le TPS et le nombre de binds dont vous avez besoin. Demandez une route SMPP.
Questions fréquentes
Pourquoi mon bind SMPP échoue-t-il ?
Les causes les plus fréquentes sont un system_id ou un mot de passe faux, une adresse IP non autorisée par le fournisseur, ou plus de binds ouverts que le compte n'en permet. Le fournisseur répond alors avec des erreurs comme ESME_RBINDFAIL (0x0D), ESME_RINVPASWD (0x0E) ou ESME_RALYBND (0x05). Vérifiez identifiants et IP autorisées, fermez les sessions orphelines et confirmez la limite de binds.
De combien de binds SMPP ai-je besoin ?
Divisez votre pic de messages par seconde par le TPS autorisé par bind, puis ajoutez un bind pour la redondance. Si le fournisseur fixe la limite par compte plutôt que par bind, des binds supplémentaires apportent de la résilience mais pas de débit. La plupart des connexions A2P utilisent des binds transceiver : une seule session porte à la fois les envois et les accusés de réception.
Quel est un bon TPS pour le SMS ?
Les comptes A2P normaux sont en général réglés entre 10 et 100 TPS par bind, davantage pour les gros expéditeurs. Le bon chiffre dépend de votre pic, pas de votre volume mensuel : 360,000 messages prennent une heure à 100 TPS et cinq heures à 20 TPS. N'oubliez pas que chaque segment d'un message long compte comme une transaction.
Qu'est-ce que enquire_link en SMPP ?
Enquire_link est une commande de maintien de session que chaque côté envoie pour vérifier que la session SMPP fonctionne toujours. La plupart des configurations l'envoient toutes les 30 à 60 secondes, à un intervalle convenu avec le fournisseur. Sans réponse, le client doit fermer le bind et se reconnecter automatiquement, pour que messages et accusés de réception ne s'accumulent pas.
Besoin d'une route ?
Indiquez la destination, le type de route et le tarif cible. Nous vous répondons avec ce que nous pouvons fournir.