С чем у нас едят MNP — часть вторая

Новости

Автор — kzayko

Судя по вопросам, основной интерес вызвали внутренние процессы мобильного оператора, реализующего MNP

Предупреждение

Перед прочтением текста ниже очень рекомендуется внимательно почитать статьи [info]_adept_ -а про и мобильную связь (лучше на pro-gsm)

Взгляд изнутри

Для начала, как обычно, попробуем определиться с участниками процесса:

  • абонент A — абонент, совершающий звонок, при этом совершенно неважно, принадлежит он своей сети изначально, или портирован в нее только вчера;
  • абонент B — абонент, принимающий звонок;
  • VMSCa — коммутатор (MSC+VLR), в зоне действия которого зарегистрирован абонент A;
  • VMSCb — коммутатор (MSC+VLR), в зоне действия которого зарегистрирован абонент B;
  • GMSC — Шлюзовой коммутатор (gateway MSC), выполняющий маршрутизации входящего звонка GSM-абоненту;
  • HLRa — Home Location Register, база данных оператора, в которой лежит вся информация об абоненте A;
  • HLRb — Home Location Register, база данных оператора, в которой лежит вся информация об абоненте B;
  • NPDB — Собственно, база портированных номеров.

И с некоторыми общими ограничениями:

  • сценарий звонка GSM рассматривается упрощенно;
  • операторы договорились до схемы "All Call Query" из предыдущего поста;
  • доля портированных номеров достаточно велика (10-20%), иначе оптимальными будут совсем другие решения;
  • рассматривается один из возможных вариантов реализации, он не для всех и не всегда оптимален;
  • Prepaid пока вообще не рассматривается (может быть, в следующем номере);
  • о нотификации абонента поговорим попозже;
  • информация о портированных абонентах уже есть в базах HLR и NPDB (опять же, тема отдельного разговора).

Схема первая, простая

Предположим что мы (абонент A) звоним товарищу (абонент B). При этом никто никуда не переезжал, мы с ним находимся в одной сети.
Схема прохождения звонка в таком случае изображена на рисунке.

Начинается все задолго до звонка, с того, что абонент А включил свой телефон в зоне действия базовой станции (для простоты не показана), подключенной к коммутатору VMSCa.
В ответ на это знаменательное событие, HLRa отправляет в VMSCa (в его VLR) информацию о доступных
ему сервисах (в данном случае — голосовых звонков), и его мобильном номере с помощью сообщения Insert Subscriber Data.

Когда абонент A решает позвонить (шаг 1, Mobile Originating Call, MOC), его VMSC проверяет, можно ли ему звонить и определяет, что абонент B — это мобильный абонент (по "простой" таблице маршрутизации, всего на несколько тысяч записей). Здесь есть одно отличие от сети, не поддерживающей MNP. До-MNPшная сеть звонки "чужим" мобильным абонентам сливает в ближаюшую точку интерконнекта, а в нашем случае — VMSC обрабатывает их так же, как и свои. То есть, звонок передается на следующий сетевой элемент,который называется GMSC и в большинстве современных сетей конструктивно объединен с VMSC (читай, собран в одном корпусе) (Шаг 2).

В этот момент звонок перестает быть MOC и начинает называться MTC (Mobile Terminating Call).
Основная цель GMSC — узнать, куда же отправить звонок дальше. Стандартное поведение мобильной сети до внедрения MNP — спросить у HLRb c помощью запроса Send Routing Info, SRI (Шаг 3).
Наша сеть будет поступать так же.

HLR, как элемент, хранящий информацию об абонентах сети, проверяет у себя в базе наличие абонента B. И, в случае успеха, определяет по ней же, в зоне действия какого коммутатора находится абонент B.

Лирическое отступление
HLR должен подготовить маршрутную информацию, подходящую для поиска этого коммутатора (VMSCb) где угодно, включая другие страны и дальние деревни. И вовсе не факт, что голосовой маршрут пройдет тем же путем, что и управляющий. На его пути может встретиться и аналоговый фрагмент и все,что угодно. Поэтому маршрутная инфрмация должна быть закодировано однозначно доступным для всех сетей, включая старые фиксированные, способом. Способ этот прост — считается, что любая транзитная сеть может пропустить звонок на "обычный" номер. Главное, чтобы в нем были правильно указаны код страны, код оператора и номер. В мобильной связи таким "общепонятным" номером выступает MSRN — Mobile Subscriber Roaming Number.

Он состоит из таких частей :

  • Country Code (для Украины — 380),
  • National Destination Code (для нашего "абстрактного" оператора, пускай будет 90 :)),
  • кода VMSC (например, 123),
  • и, наконец, временного номера абонента.

Этот временный номер должен быть достаточно коротким, чтобы не вылезать за пределы стандартной длины номера, и у нас состоит, как правило, из 4 цифр и является ключом, помогающим найти запись
об абоненте B в БД VMSCb (или, другими словами, его VLR).

Для выполнения этой своей функции HLR запрашивает у VMSCb MSRN для абонента B c помощью запроса "Provide Roaming Number" (PRN, Шаг 4). VMSCb генерирует этот номер и отправляет его в ответ (Шаг 5). HLR возвращает ответ GMSC (Шаг 6). В БД GMSC обязательно присутствуют все пути для маршрутизации звонков внутри сети.

В том числе, там должен быть и путь, ведущий к диапазну MSRN-ов, выдаваемых VMSCb (старшие 8 цифр номера, в нашем примере — 38090123хххх). GMSC отправляет звонок VMSCb (шаг 7), который производит поиск абонента в своей сети и доставку ему звонка (Шаг 8).

Абонент решил "переехать"

Итак, наш товарищ B решил, что другой оператор предложил ему более привлекательные условия (цены ниже, мелодии в гудках прикольнее, в офисах девочки симпатичнее)  и решил его сменить. Он приходит куда? Правильно, к самой симпатичной девочке в офисе нового оператора и просит — возьми меня, обязуюсь платить тебе вечно (ну, или, по крайней мере, месяц). Девочка скрепляет кровью товарища это его обязательство, торжественнно вручает ему новую карточку (это важно!) и заносит информацию в систему обслуживания абонентов.

Далее эта система должна:

  • убедиться, что предыдущий оператор не имеет претензий к абоненту (например, товарищ ему задолжал);
  • обновить HLR в сети нового оператора для активации новой карточки;
  • сообщить старому оператору о необходимости приостановки сервиса по старой карточке;
  • открыть услуги для этой карточки на разных сетевых платформах;
  • сообщить всем остальным операторам, что данный номер будет обслуживаться в этой сети.

На последнем пункте следует остановиться поподробнее. Стратегии хранения данных о мигрировавших абонентах может быть три (хранить только своих, хранить всех, не хранить никого — обращаться в "центр"). Соответственно, для первого варианта нужно обновить свою БД, БД оператора — владельца номера и БД предыдущего оператора. Для второго — БД всех операторов (или, что точнее, мастер-копию, располагающуюся в "центре"), для третьего — опять же, только БД "центра". Учитывая то, что я говорил в предыдущем посте, в мире операторы предпочитают пользоваться вторым способом, реплицируя мастер-копию с определенным интервалом.

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

Схема вторая, посложнее


Чем же отличается звонок на портированнный номер от обычного ?

Первое отличие возникает после шага 3, а именно тогда, когда HLR оператора А пытается найти абонента.
Шаг 4. Карточка, естестенно, уже удалена, о чем HLR успешно сообщает .
Шаг 5. GMSC оператора в этом случае лезет в базу портированных номеров с запросом — а что же ему делать с этим абонентом ?
Шаг 6. NPDB отвечает, что абонент B уже давно портирован в другую сеть — и выдает номер для маршрутизации звонков .

Как известно, в телефонных сетях маршрутизация вызовов построена на префиксах (условно говоря,
весь мир знает, что 380 — это Украина и как туда отправить звонок, вся Украина знает, что +38090 — это сеть нашего оператора A. Соответственно, база портированных номеров добавляет свой маленький префикс к номеру абонента B. Если наш товарищ в примере выше мигрировал в сеть оператора с сетевым кодом ’80′, префикс может выглядеть как "D80" (да, букву D нельзя набрать с телефона, но — открою маленький секрет — внутри сети оператора все цифры 16-ричные, и именно поэтому в префиксе лучше использовать именно буквы, ведь их нельзя набрать и, следовательно, навредить).

GMSC знает (у него есть таблица маршрутизации по префиксам), что звонки с таким префиксом нужно отправлять в определенную точку взаимосоединения (шаг 7). Там их и ждет GMSC нового оператора B. При этом он уже знает, что проверка в базе была произведена предыдущим оператором (по тому же префиксу) и можно идти прямо в HLR, как при обычном звонке, за MSRN-ом (Шаги 9-12) и доставлять звонок абоненту (шаги 13-14). Все.

Еще можно обратить внимание, что при таком сценарии неважно, какому оператору принадлежал изначально номер B. Да и вообще, портирован ли он или это просто номер, принадлежащий этому оператору.

Биллинг

Итак, теперь у нас стоит задача правильно посчитать, сколько же стоит звонок абонента A абоненту B. Опять же, пока считаем что оба этих абонента — контрактные, и для них Prepaid-система не работает. Таких абонентов операторы тарифицируют в "оффлайн" режиме, по записям о звонках, которые сгенерированы коммутатором.

Так где же нам найти информацию о том, какой выставить счет абоненту? На выручку нам приходят стандарты 3gpp. Как правило, оборудование мобильного оператора пишет записи о звонках (Call Detail Record, CDR) согласно TS 32.205 . Согласно этой спецификации, в записи о событии "Mobile originated call attempt" должны присутствовать следующие поля:

  • Called Number — номер, который набрал абонент;
  • Translated Number — номер, на который реально произведено соединение;
  • Roaming Number — MSRN.

Биллинговой системе, которая получает эти поля сразу ясно, что звонок был на номер "090 B", а соединен на номер "D80 090 B". А тариф на направление ‘D80′ прописать по аналогии с тарифом на ’080′ — совсем не проблема.

Взаиморасчеты

Взаиморасчеты также не представляют особой сложности. Как правило они проводятся по принципу:
Через данную точку соединения прошло столько-то минут трафика по таким-то направлениям и столько-то по другим. Опять же, записи о событиях содержат всю информацию, в частности, о номере для маршрутизации, который был использован. Поэтому посчитать, сколько минут трафика прошло от оператора А на направление D80 оператору B ничуть не сложнее чем раньше было посчитать на направление 080. Разве что про тарифы надо передоговариваться :).

Все, конец второй части. Пишите вопросы, продолжим.

Источник

С чем у нас едят MNP - часть вторая by

Возможно, вас также заинтересует:

При копировании материалов ссылка обязательна.