Showing posts with label SMS. Show all posts
Showing posts with label SMS. Show all posts

2.11.2011

SMS Forwarding

В предыдущем посте "Home Rerouting" меня попросили рассказать о том, как работает смс переадресация. Эта статья должна ответить на вопросы: что такое смс-переадресация и как она работает.


Наверняка многим знакома услуга переадресации звонков (о ней я писал в статьях "Call forwarding" и "Основы переадресации вызовов в GSM"), которая позволяет смело выключить телефон и получать все вызовы на другой номер. Однако, рано или поздно возникнет проблема с получением входящих смс на выключенный номер. Поскольку переадресация вызовов работает только для голосовых (и data/fax) звонков, то смс так и не будут доставлены - они будут скапливаться на SMSC (SMS Centre).
Для решения этой проблемы некоторые операторы начали предоставлять дополнительную услугу - переадресация смс. Суть услуги в том, что абонент может переадресовывать все свои смс на другой номер. И хотя с виду услуга простая, тем не менее у разных операторов она реализована по-разному.
Например, часть операторов позволяют выполнять подобную переадресацию только для смс отправленных абонентами своей сети. Т.е. если абонент другой сети отправит Вам смс, то она переадресована не будет.
Другие же операторы предоставляют услугу переадресации для всех входящих смс, независимо от сети отправителя.

Почему так происходит и какие принципиальные отличия в реализации услуги? Читайте дальше.
Во-первых, необходимо разобраться как происходит доставка смс в сетях GSM.
В процессе отправки/доставки участвуют следующие элементы сети:

  • MS (Mobile Station) - телефоны отправителя и получателя смс;
  • MSC (Mobile Switching Centre) - коммутатор, который обслуживает подвижных абонентов - получателя и отправителя смс;
  • SMSC (SMS Centre) - центр коротких сообщений. Находится в сети отправителя;
  • HLR (Home Location Register) - узул сети GSM, коотрый среди прочего хранит информацию о текущем коммуаторе (MSC) получателя смс
В общем случае процесс выглядит так (некоторые детали не указаны, чтобы не усложнять схему):


Немного пояснений к рисунку:
  1. Абонент А отправляет смс абоненту B.
  2. В MS абонента А указан номер центра коротких сообщений (SMSC), через который и будет произведена доставка смс.
  3. Сообщение отправляется на коммутатор абонента А, оттуда на SMSC.
  4. SMSC не знает текущий коммутатор абонента B, поэтому запрашивает эту информацию у HLR. поскольку адрес HLR тоже не известен, то сообщение Send Routing Info for SM отправляется на адрес абонента B. Сеть получателя отвечает за то, что сообщение SRI-SM будет смаршрутизировано на соответсвующий HLR (в одной сети их может быть несколько).
  5. HLR возвращает в качестве ответа текущий MSC абонента, а также его мобильный номер - IMSI.
  6. SMSC отправляет смс на коммутатор абонента B, а тот в свою очередь на терминал получателя.
  7. Если абонент А запросил отчёт о доставке и доставка була успешной, то 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

Read More..

1.27.2011

Home Rerouting

В данной статье я вкратце расскажу, что такое Home Rerouting для SMS. Если есть желание узнать о подобном сервисе для голосовых вызовов - дайте знать через комментарии.

Стандарт GSM определяет сеть отправителя SMS ответственной за за доставку сообщения получателю.Это означает, что SMSC (SMS-центр) в сети отправителя обязан "найти" местоположение получателя сообщения (фактически найти коммутатор, на котором зарегистрирован получатель) и доставить сообщение на этот коммутатор.


Получатель сообщения при этом может находиться либо в своей домашней сети (наиболее вероятное событие), либо в сети оператора-партнёра в той же стране (если между сетями разрешён национальный роуминг) или же в любой другой сети, с которой подписано роуминг-соглашение.
Для того, чтобы определить адрес коммутатора получателя сообщения, SMSC использует протокол MAP, а конкретно операцию sendRoutingInfoForSM (opCode 45). Операция представляет собой запрос от SMSC к домашнему HLR получателя SMS. В общем случае, SMSC не знает адрес HLR-а абонента, поэтому запрос посылается с использованием MSISDN получателя, в качестве адреса. Сеть получателя обязана транслировать MSISDN в адрес соответствующего HLR. В ответ на запрос, HLR обязан вернуть адрес текущего коммутатора абонента (MSC) и IMSI. Возможны варианты, когда HLR ответит, что такого абонента не существует, либо он не зарегистрирован в сети.
Следующий этап это отправка сообщения на коммутатор используя операцию mt-ForwardSM/mo-ForwardSM (opCode 44/46).
В чём проблема такого подхода? Во-первых, любая сеть, с которой есть соглашение об обмене SMS, может запросто получить данные о местоположении абонентов (с точностью до MSC). Информация о местоположении может быть использована при организации массовых санкционированных и несанкционированных рассылок. Поскольку каждый коммутатор отвечает за определённый географический регион, у организатора рассылки появляется возможность отправлять различные варианты рекламного текста в зависимости от местоположения абонента.
Также, если внимательно взглянуть на рисунок выше, то можно заметить, что абонент получит SMS даже в том случае, если mt-ForwardSM Ack (подтверждение о доставке SMS) не будет доставлен к SMSC. Это позволяет организовывать мошенничества, в которых адреса отправителя и SMSC заменяются на чужие и таким образом счёт за терминацию SMS будет выставлен совсем другому оператору.
Чтобы решить эти, а также ряд других проблем, организация 3GPP разработала спецификацию TR 23.840.
Основная идея этого документа состоит в том, чтобы именно домашняя сеть отвечала за доставку смс на текущий MSC абонента. Для минимизации изменений в существующих сетях, домашняя сеть должна отвечать адресом виртуального MSC на все запросы sendRoutingInfoForSM из других сетей. Таким образом все входящие сообщения будут поступать на этот виртуальный коммутатор, а с него уже на настоящий.

Такая схема позволяет решить все проблемы с минимальными изменениями в существующей инфраструктуре. При этом появляется возможность не только контролировать текст получаемых сообщений (борьба со спамом), но также и блокировать работу многих “хитрых” сервисов, использующих sendRoutingInfoForSM для получения информации об абоненте.

P.S. Хотя документ написан и утверждён довольно давно, мне не доводилось встречать его практических реализаций. Если Вы используете такие системы или есть сведения об их использовании другими операторами – оставляйте комментарии.


Статьи по теме:
Call forwarding
Основы переадресации вызовов в GSM
SMS Forwarding

Read More..