BroadNet
ЖурналИнженерия
Инженерия

Как на самом деле происходит маршрутизация SMS: объяснение принципов работы SMSC, ESME и пути доставки A2P.

Как работает SMSC? Проследите сквозное отслеживание SMS-сообщения A2P — привязка ESME через SMPP, submit_sm, сохранение и пересылка, поиск HLR, доставка MT на телефон и обратная отправка DLR.

10 мин чтения
Инженерия · Выпуск 12
10 мин чтения

2P SMS-сообщение проходит по заданному пути: ваше приложение подключается к SMSC или агрегатору по протоколу SMPP в качестве ESME и отправляет submit_sm; SMSC сохраняет сообщение, запрашивает HLR у оператора назначения, чтобы определить MSC обслуживающего абонента, доставляет его на мобильный телефон (MT) и возвращает подтверждение доставки по той же цепочке. Каждый переход может ухудшить доставку, идентификатор отправителя или подтверждение получения.

Хотите сначала прочитать версию в одном абзаце? См. наш ответ на вопрос что такое SMSC. Эта статья представляет собой пошаговое руководство по его использованию.

Состав действующих лиц

Прежде чем прокладывать путь, полезно назвать компоненты и объяснить, для чего каждый из них предназначен. Три аббревиатуры в основном описывают суть: SMSC, ESME и HLR. Важны два направления: MT и MO.

SMSC — механизм хранения и пересылки данных.

Центр обработки коротких сообщений (SMSC) — это сервер на стороне оператора, который принимает сообщение, сохраняет его и пересылает получателю — узлу, определенному в соответствии с протоколом передачи SMS в 3GPP TS 23.040. Это не простой ретранслятор: он удерживает сообщение до тех пор, пока телефон не станет доступен, повторяет попытку в течение срока действия и генерирует отчет о состоянии. Когда вы отправляете сообщение через агрегатор, вы взаимодействуете с его SMSC (или шлюзом перед ним); оператор-конечный пользователь запускает свой собственный SMSC, который выполняет окончательную доставку.

ESME — ваша заявка уже в сети

Внешнее устройство коротких сообщений (ESME) — это любое приложение, которое подключается к SMSC для отправки или получения SMS — например, ваша служба OTP, ваша платформа для проведения кампаний, ваша система оповещения. По протоколу SMPP (/developers/smpp) ESME открывает постоянную TCP-сессию с привязкой (передатчик, приемник или приемопередатчик), а затем отправляет submit_sm для отправки. SMSC отвечает submit_sm_resp, содержащим message_id, а затем отправляет deliver_sm обратно в ESME для получения входящих сообщений и подтверждения доставки. ESME является клиентом, SMSC — сервером.

MT против MO — в каком направлении передается сообщение.

Сообщение, завершающееся на мобильном устройстве (MT), — это сообщение, доставленное на мобильный телефон, — направление, по которому проходит почти весь A2P-трафик: одноразовый пароль (OTP), оповещение, обновление информации о доставке, поступающее на телефон. Сообщение, инициированное на мобильном устройстве (MO), — это сообщение, отправленное абонентом с мобильного телефона, — именно так двусторонние ответы, отказы от ключевых слов и запросы STOP достигают вашего ESME в качестве deliver_sm. Подтверждение доставки (DLR) передается по обратному пути MT, даже если оно возвращается к вам.

КомпонентРоль в процессе доставки
Приложение / ESMEВаше программное обеспечение подключается к SMSC по протоколу SMPP и отправляет команду submit_sm для отправки сообщений MT.
SMSC (сторона агрегатора)Принимает, проверяет и сохраняет сообщение; выбирает маршрут к оператору назначения; возвращает message_id, а затем и DLR.
Центр межсетевого взаимодействия / SMS-хабПередает сообщение между агрегатором и оператором-конечным звеном через один или несколько переходов.
Оператор завершения SMSCПолучает сообщение в сети оператора и обеспечивает его окончательную доставку абоненту.
HLRБаза данных абонентов, проживающих дома; ответы на вопрос «где сейчас обслуживается этот номер?» с указанием адреса MSC/VLR, предоставляющего услугу.
MSC / VLRКоммутатор, обслуживающий в данный момент абонента, отправляет оповещение на телефон и доставляет сообщение MT.
Телефон (MS)Получает сообщение и возвращает подтверждение, которое становится отчётом о доставке.

Хранение и пересылка: зачем существует SMSC

SMS-сообщения по своей природе асинхронны. Получатель может быть выключен, находиться вне зоны действия сети или разговаривать по телефону без свободного окна для передачи сигнала. Вместо того чтобы завершиться неудачей, SMSC принимает сообщение, сохраняет его и берет на себя ответственность за доставку — это метод «хранение и пересылка». Он пытается доставить сообщение, и если абонент недоступен, он ставит сообщение в очередь и повторяет попытку по расписанию до тех пор, пока доставка не будет успешной или не истечет срок действия сообщения. Когда сеть позже сигнализирует о том, что телефон снова доступен, SMSC получает запрос на повторную попытку. Эта надежность — главная цель центра обработки сообщений, и именно поэтому SMS-сообщение, «отправленное», еще не «доставленное» — это два состояния, которые ваш канал DLR должен разделять.

Отслеживание A2P SMS-сообщения от приложения до мобильного телефона

Вот полный путь одного сообщения MT — например, одноразового пароля для входа в систему, отправленного банком в Эр-Рияде абоненту в сети стран Персидского залива — от вашего кода до телефона и обратно.

  1. Ваше приложение выполняет аутентификацию и устанавливает SMPP-соединение с агрегатором/SMSC в качестве ESME, а затем отправляет submit_sm, содержащий MSISDN получателя, идентификатор отправителя, кодировку и текст.
  2. SMSC проверяет и сохраняет сообщение, присваивает ему идентификатор сообщения (message_id) и возвращает его в функции submit_sm_resp. На этом этапе сообщение считается принятым, а не доставленным.
  3. SMSC выбирает маршрут к оператору назначения — в идеале это прямое соединение, в противном случае — путь через один или несколько узлов SMS.
  4. Сообщение достигает модуля SMSC оператора-получателя в сети назначения.
  5. Этот SMSC запрашивает у оператора HLR (MAP SendRoutingInfoForSM), чтобы определить, где в данный момент обслуживается абонент — адрес обслуживающего MSC/VLR.
  6. HLR возвращает информацию о маршрутизации; SMSC пересылает сообщение (MT-ForwardSM) этому MSC.
  7. Обслуживающий MSC отправляет оповещение на абонентский терминал по радиосети и доставляет сообщение (доставка MT).
  8. Телефон подтверждает получение; подтверждение распространяется обратно, и принимающий SMSC формирует отчет о доставке.
  9. Уведомление о доставке передается обратно по межсоединению к SMSC агрегатора, который отправляет его в ваш ESME в виде deliver_sm (или веб-хука), содержащего исходный message_id и окончательный статус.

Этапы сигнализации 5–7 — поиск HLR и пересылка MT-ForwardSM на обслуживающий коммутатор — происходят внутри ядра SS7/Diameter оператора с использованием операций MAP мобильной сети. Вы никогда не видите их напрямую, но именно они являются причиной того, что сообщение может быть «принято» за миллисекунды, но на его фактическую доставку может потребоваться больше времени: принимающая сеть должна обнаружить движущегося абонента, прежде чем сможет доставить сообщение.

HLR: определение местоположения перемещающегося абонента

Регистр домашнего местоположения (Home Location Register, HLR) — это основная база данных, содержащая информацию об идентификации абонента и его текущем местонахождении в домашней сети. Поскольку люди перемещаются между коммутаторами, принимающий SMSC не может предполагать, где обслуживается номер — он запрашивает HLR, который возвращает обслуживающий MSC/VLR, чтобы сообщение могло быть перенаправлено на нужный коммутатор. Это тот же самый поиск, который используется сам по себе для проверки номера: запрос HLR сообщает вам, является ли номер активным, перенесенным или находящимся в роуминге, еще до того, как вы его отправите. При корректной маршрутизации этот поиск представляет собой один внутренний обмен сигналами; когда сообщение сначала проходит через несколько промежуточных сетей, запрос происходит только после всех этих переходов, что увеличивает задержку и количество точек отказа.

Прямые маршруты против агрегации с несколькими переходами

Описанный выше путь — идеальный: ваш ESME до SMSC, который передает данные по прямому межсоединению конечному оператору. В реальности же путь часто оказывается длиннее. На многоступенчатом маршруте агрегации сообщение проходит через цепочку реселлеров и SMS-хабов, прежде чем достигнет целевой сети — и каждый узел является промежуточным звеном, которое может что-то перезаписать, задержать или отбросить. Три параметра ухудшаются по мере накопления промежуточных узлов:

  • Надежность: каждый посредник — это еще одна очередь, еще один межсетевой экран и еще одна сторона, чей маршрут к оператору может быть «серым» маршрутом, который блокируется без предупреждения. Чем больше переходов, тем больше вариативность скорости доставки.
  • Сохранение идентификатора отправителя: буквенно-цифровые идентификаторы отправителя и зарегистрированные заголовки могут быть перезаписаны или удалены посредником, поэтому сообщение, оставленное от имени вашего бренда, может прийти с общего длинного номера — это реальный риск на рынках стран Персидского залива, где операторы требуют предварительно зарегистрированных идентификаторов отправителя.
  • Точность DLR: подлинное подтверждение доставки оператором теряет смысл на разных этапах. Посредники могут возвращать сообщение «доставлено» на уровне шлюза, которое означает лишь «я передал его дальше», а не то, что телефон его получил, поэтому ваш отчет о состоянии перестает отражать реальную ситуацию.

Именно поэтому количество переходов между вашим API и оператором, завершающим соединение, является наиболее полезным вопросом, который следует задать провайдеру. Прямой маршрут сохраняет идентификатор отправителя, возвращает DLR на уровне оператора и завершает последовательность HLR до мобильного устройства без участия третьих сторон. Операторы и предприятия, которым необходимо видеть всю цепочку — принято, маршрутизировано, доставлено, получено — полагаются на представление ESME и CDR, которое сопоставляет каждый submit_sm с его конечным DLR, и на шлюз SMSC операторского класса, который завершает трафик напрямую, а не перепродает его дальше.

BroadNet обеспечивает прямые маршруты с 2003 года — 1000+ подключений операторов в 200+ странах (напрямую к оператору — в 86 из них) с уровнем доступности платформы 99,99%, поддерживая скорость передачи до 30 000 SMS/сек на узел. Если вы подключаетесь как ESME через SMPP или завершаете соединение через наш SMSC-шлюз, вы получаете прямую маршрутизацию с подтверждениями доставки на уровне оператора, а не многоступенчатую цепочку, которая незаметно перезаписывает ваш идентификатор отправителя.

Часто задаваемые вопросы

Как SMSC осуществляет доставку SMS?

SMSC использует метод «хранение и пересылка»: он принимает и сохраняет сообщение, затем запрашивает у оператора HLR информацию о MSC/VLR, обслуживающем абонента. Он пересылает сообщение (MT-ForwardSM) на этот коммутатор, который вызывает телефон и доставляет его. Если телефон недоступен, SMSC ставит сообщение в очередь и повторяет попытку в течение срока действия сообщения, после чего генерирует подтверждение доставки.

Что такое ESME?

ESME (External Short Messaging Entity) — это любое приложение, которое подключается к SMSC для отправки или получения SMS-сообщений — например, сервис OTP, платформа для проведения кампаний или система оповещений. Оно подключается к SMSC по протоколу SMPP в качестве клиента и отправляет submit_sm для отправки сообщений, отправленных на мобильные устройства, в то время как SMSC отправляет deliver_sm для получения входящих ответов и подтверждений доставки. Короче говоря: ESME — это ваше программное обеспечение в сети.

Какой путь проходит SMS-сообщение A2P от приложения до мобильного телефона?

Приложение подключается к агрегатору/SMSC в качестве ESME и отправляет submit_sm. SMSC сохраняет сообщение и направляет его — напрямую или через SMS-хабы — в SMSC оператора-заказчика. Этот SMSC запрашивает у HLR информацию о обслуживающем MSC, пересылает туда сообщение, и коммутатор отправляет оповещение на телефон (доставка MT). Подтверждение доставки возвращается на телефон в виде отчёта о доставке по той же цепочке.

Ссылки

Была ли эта информация полезна?

Как мы готовим и проверяем материалы

Автор:

Редакционная группа BroadNet

Редакционная группа публикует блог BroadNet. Статьи пишутся вместе с командами BroadNet по вопросам регулирования, продукту, инженерии, отраслевым исследованиям и решениям для операторов и проверяются по нашим редакционным стандартам.

Продолжайте читать

Ещё три статьи из журнала.

Посмотреть все эссе
Ч
Инженерия

Что такое SMS шлюз — и как выбрать тот, который обеспечит эффективную доставку SMS-сообщений.

SMS шлюз соединяет ваше приложение с мобильными сетями. Вот что он делает, и как оценить преимущества и недостатки SMPP и HTTP, хостинга и выделенного сервера, пропускной способности, маршрутизации и SLA.

BroadNet Engineering
5m
П
Инженерия

Прямые маршруты против серых маршрутов в A2P SMS — что вы на самом деле покупаете.

Прямой маршрут — это привязка SMPP к SMSC целевого оператора. Серый маршрут — это любой другой маршрут. Разница в стоимости, задержке, доставляемости и соответствии требованиям — всё в одном.

BroadNet Engineering
12m
П
Инженерия

Пояснение к подтверждениям доставки SMS-сообщений (DLR) и кодам ошибок.

Подтверждение доставки (DLR) — это окончательное решение оператора по вашему SMS-сообщению. Что означают DELIVRD, UNDELIV, EXPIRED и REJECTD, и как читать поля stat и err.

BroadNet Engineering
10m
Журнал, по электронной почте

Одно эссе в месяц. Больше ничего.

Подпишитесь, и мы вышлем вам следующий материал — по инженерии, регулированию или промышленности — в день его отправки. Никаких рассылок, никаких рекламных предложений, никакого обмена информацией с третьими лицами. Отписаться можно одним щелчком мыши.

Одно письмо в месяц. Отписаться можно в любой момент. См. нашу политику конфиденциальности.

Что вы получите
  • Подробный текст, а не призыв к действию.
    Шесть-одиннадцать минут сосредоточенного письма на одну тему.
  • Написано операторами
    В штате компании работают инженеры, специалисты по регулированию и разработчики продуктов.
  • Регионально-зависимый
    Взгляд со стороны региона MENA на регулирующие органы, операторов и структуру каналов сбыта.
  • Раз в месяц
    Никаких рассылок по частям. Одно эссе, когда есть чем поделиться.
Прекратите читать. Начинайте отправлять.

Большую часть того, что мы пишем, мы освоили в процессе производства.

Если эта статья вас заинтересовала, нам, вероятно, стоит поговорить. Расскажите о сценарии использования, объемах, рынках — мы предложим маршруты, цены и контактные данные клиента, которому вы сможете позвонить.

$ curl -X POST https://api.broadnet.me/sms/sendSms