Всё, что стоит знать, и ничего лишнего.
Где накапливается задержка
Три места. Очередь для каждого SMSC (каждый SMSC имеет очередь отправки, обычно менее 100 мс, но при нагрузке она может достигать секунд). Транзит SS7/SMPP (каждый TCP-узел добавляет время кругового пути; межконтинентальные узлы добавляют 150-300 мс каждый). Встреча DLR (каждый промежуточный SMSC сопоставляет входящие DLR со своими исходящими запросами, что представляет собой поиск, ограниченный памятью и способный застревать при высокой нагрузке).
Как это измерить
Отправьте тестовое сообщение с меткой времени в теле и следите за полем `done_date` в DLR. Вычтите время отправки. Для большинства прямых маршрутов вы должны увидеть p50 менее 3 секунд, p95 менее 8 секунд. Все, что превышает 15 секунд, указывает на многошаговую маршрутизацию — обычно это серый маршрут. BroadNet ежедневно публикует данные о задержке p50/p95/p99 для каждого маршрута на /status.
Почему это важно для OTP
У сообщений с одноразовыми паролями (OTP) есть жесткий крайний срок для удобства использования: большинство пользователей отказываются от процесса подтверждения, если SMS не приходит в течение 30 секунд. Многошаговый маршрут с показателем p95 в 45 секунд означает, что более 5% ваших пользователей не смогут подтвердить свою личность и либо попытаются повторно (удвоив ваши затраты на SMS для этого пользователя), либо откажутся от услуг. Прямые маршруты окупаются только за счет объема отправленных OTP-сообщений.
Как выглядят прямые и серые линии в данных DLR.
Прямой режим: узкое распределение задержек, низкая дисперсия, коды ошибок DLR, которые четко соответствуют причинам MSC оператора. Серый режим: бимодальная задержка (один кластер быстрый, один кластер очень медленный), высокая дисперсия, общие коды ошибок (0x000000FF, UNKNOWN), сигналы DLR иногда вообще не поступают. Сигнал DLR — это способ аудита вашего агрегатора без его помощи.