В предыдущем посте "Home Rerouting" меня попросили рассказать о том, как работает смс переадресация. Эта статья должна ответить на вопросы: что такое смс-переадресация и как она работает.
Наверняка многим знакома услуга переадресации звонков (о ней я писал в статьях "Call forwarding" и "Основы переадресации вызовов в GSM"), которая позволяет смело выключить телефон и получать все вызовы на другой номер. Однако, рано или поздно возникнет проблема с получением входящих смс на выключенный номер. Поскольку переадресация вызовов работает только для голосовых (и data/fax) звонков, то смс так и не будут доставлены - они будут скапливаться на SMSC (SMS Centre).
Для решения этой проблемы некоторые операторы начали предоставлять дополнительную услугу - переадресация смс. Суть услуги в том, что абонент может переадресовывать все свои смс на другой номер. И хотя с виду услуга простая, тем не менее у разных операторов она реализована по-разному.
Например, часть операторов позволяют выполнять подобную переадресацию только для смс отправленных абонентами своей сети. Т.е. если абонент другой сети отправит Вам смс, то она переадресована не будет.
Другие же операторы предоставляют услугу переадресации для всех входящих смс, независимо от сети отправителя.
Почему так происходит и какие принципиальные отличия в реализации услуги? Читайте дальше.
Во-первых, необходимо разобраться как происходит доставка смс в сетях GSM.
В процессе отправки/доставки участвуют следующие элементы сети:
Статьи по теме:
Call forwarding
Основы переадресации вызовов в GSM
Home rerouting
В процессе отправки/доставки участвуют следующие элементы сети:
- MS (Mobile Station) - телефоны отправителя и получателя смс;
- MSC (Mobile Switching Centre) - коммутатор, который обслуживает подвижных абонентов - получателя и отправителя смс;
- SMSC (SMS Centre) - центр коротких сообщений. Находится в сети отправителя;
- HLR (Home Location Register) - узул сети GSM, коотрый среди прочего хранит информацию о текущем коммуаторе (MSC) получателя смс
В общем случае процесс выглядит так (некоторые детали не указаны, чтобы не усложнять схему):
Немного пояснений к рисунку:
- Абонент А отправляет смс абоненту B.
- В MS абонента А указан номер центра коротких сообщений (SMSC), через который и будет произведена доставка смс.
- Сообщение отправляется на коммутатор абонента А, оттуда на SMSC.
- SMSC не знает текущий коммутатор абонента B, поэтому запрашивает эту информацию у HLR. поскольку адрес HLR тоже не известен, то сообщение Send Routing Info for SM отправляется на адрес абонента B. Сеть получателя отвечает за то, что сообщение SRI-SM будет смаршрутизировано на соответсвующий HLR (в одной сети их может быть несколько).
- HLR возвращает в качестве ответа текущий MSC абонента, а также его мобильный номер - IMSI.
- SMSC отправляет смс на коммутатор абонента B, а тот в свою очередь на терминал получателя.
- Если абонент А запросил отчёт о доставке и доставка була успешной, то SMSC генерирует отчёт о доставке и отправляет его абоненту А.
Главный вывод из представленной схемы состоит в том, что за доставку смс отвечает SMSC абонента отправителя. Если отправитель и получатель смс обслуживаются одной сетью, то услугу переадресации смс можно реализовать непосредственно на SMSC своей сети.
Для этого в логике работы SMSC необходимо реализовать дополнительный интерфейс для связи с оборудованием услуги переадресации смс:
SMSC, перед отправкой смс абоненту из своей сети, запрашивает у внешнего приложения что делать с смс для абонента B. Вариантов 2 - продолжить доставку на номер B (если переадресация не установлена) или инициировать доставку на номер С (указанный при установке переадресации).
Главный минус такой реализации состоит в том, что все смс, отправленные из других сетей (а значит через другие SMSC), будут по-прежнему доставляться на номер B. Ведь другие сети ничего не знают о наличии платформы переадресации смс.
Другой способ реализации услуги переадресации смс состоит в использовании специального узла в сети SS7 - SMS Router. При этом процесс доставки смс будет выглядить так:
В задачи SMS Router входит:
- Обработать входящий запрос Send Routing Info for SM, определить фактического получателя смс (если установлена смс переадресация) и сделать запрос в HLR от своего имени.
- Если HLR вернул ошибку, то возвратить эту же ошибку для SMSC.
- Если от HLR был получен позитивный ответ, то в ответном сообщении для SMSC будет указан MT Correlation ID вместо реального IMSI и адрес SMS Router вместо MSC. При этом соответствие между адресами будет сохранено в памяти SMS Router.
- Обработать входящий запрос MT Forward SM и проверить валидность MT Correlation ID. Этот ID считается невалидным, если не найден в списке выданных (в этом случае нет возможности найти реальный IMSI и MSC получателя). Дополнительно ID может быть отклонён, если MT Forward SM отправлен не из той же сети, что и Send Routing Info for SM (подозрение на спам).
- Отправить смс на реальный адрес коммутатора, а отчёт о доставке на SMSC.
MT Correlation ID это специальный идентификатор, состоящий из трёх частей:
- Mobile Country Code (MCC) сети получателя.
- Mobile Network Code (MNC) сети получателя. Поскольку многие сети используют только 2х-значные MNC, то третья цифра берётся из MSIN (MSIN это часть IMSI).
- Sender ID. Уникальный случайный номер.
Фактически, MT-SMS Correlation ID содержит первые 6 цифр из IMSI получателя, а остальные 9 цифр это случайный номер, уникальный для каждого запроса.
Таким образом, благодаря использованию SMS Router появляется возможность переадресовывать смс, отправленные с любой сети.
P.S. SMS Router изначально был "придуман" для борьбы с смс спамом (см. статью "Home Rerouting"), однако "лёгким движением руки" может быть расширен для предоставления услуги смс переадресации.
Статьи по теме:
Call forwarding
Основы переадресации вызовов в GSM
Home rerouting