Про GSM из первых рук

Как работает "сохранение номера" (mobile number portability)

Создано: 2007-09-03

На днях украинская Верховная Рада приняла (пока - в первом чтении) ряд поправок к закону о телекоммуникациях. В их числе - требование к операторам мобильной связи обеспечить сохранение телефонного номера за абонентом в случае перехода к другому оператору (т.н. mobile number protability или MNP).

Идея отнюдь не нова - с конца девяностых годов FCC в штатах, Комиссия по Связи в Евросоюзе и Ofcom в Англии выдвигают подобные требования к операторам, работающим на территории их юрисдикции. В принципе понятно, что это нововведение означает для абонента - исчезает “барьер” по смене оператора, и т.п.

А вот что это означает для операторов? Об этом я и попробую рассказать.

Проблемы, возникающие с введение MNP

Для начала, я постараюсь дать максимально упрощенное описание проблемной области, постаравшись, тем не менее, не упустить существенных деталей.

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

В свою очередь, сигнальный трафик (используемый для маршрутизации голоса) имеет свои правила маршрутизации и свои собственные маршрутизаторы.

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

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

Понятно, что с введением MNP эта стройная картина разрушается. Если абонент с номером 5556677 перешел из сети оператора Orange в сеть оператора Vodafone, его информация будет находится в одном из HLR-ов Vodafone и именно туда должны маршрутизироваться сигнальные сообщения “request_current_location” протокола MAP.

Но кто же их туда смаршрутизирует?

И тут на сцену выходит SRF …

А давайте сделаем так - будет загонять весь (ну, или почти весь) сигнальный трафик в волшебный черный ящик, который будет его правильно маршрутизировать :)

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

SRF должен позволять:

  1. Определять, для каких номеров делать перенаправление маршрутизации (для этого нужна база таких номеров)
  2. Знать, в какую конкретно сеть надо делать перенаправление для такого-то номера телефона (для этого, опять же, нужна база).
  3. Уметь “подменять” SCCP-адреса(*) в сигнальном трафике (что-то вроде NAT-а в TCP/IP, с или без connection tracking)

*)SCCP - Signalling Connection Control Part, часть стэка протоколов SS7.

Тот, кто читал книжки/документацию/стандарты по GSM, наверняка заметил, что вещи, называемые “blah-blah-blah function” - это концепции, детали реализации которых обычно остаются “за кадром”.

Однако в данном случае нас интересуют именно детали: какой элемент сети выполняет функцию SRF, где находится пресловутая база “уехавших” номеров, когда происходит перенаправление сигнального трафика и т.п.

Поехали по порядку.

Прямая vs косвенная маршрутизация vs N-1 маршрутизация

Сначала немного терминологии. Сетью-донором (donor network) будем называть сеть, “отдающую” свой мобильный номер вмесе с уходящим абонентом. Соответственно, сеть-получатель (recipient network) - это сеть, в которую этот номер “пришел” вместе с абонентом.

Итак, где же расположить SRF и как его использовать (когда к нему обращаться)?

Поскольку номера могут перемещаться между сетями произвольным образом, очевидно, что все сети (в рамках страны) должны иметь реализацию SRF. Полагаться на Единый Центральный SRF - глупо, т.к. он лопнет от нагрузки и будет служить single point of failure, рискующей оставить без связи пол-страны :)

ОК, договорились. Допустим, у каждого оператора есть волшебный черный ящик с надписью SRF, в функции которого входит отловить сигнальный трафик вроде “request_current_location for MSISDN” и перенаправить его на нужный HLR в сети-получателе. Кто и когда будет к этму черному ящику обращаться?

Как всегда, пусть у нас абонент А (обслуживаемый опертором Life) звонит на номер B (8050*). Этот номер изначально принадлежал UMC, но абонент B перешел с ним в KyivStar (KS).

Возможны три варианта:

  1. Коммутатор сети Life, обслуживающий A, обращается к SRF, который перенаправляет запрос на HLR KyivStar-а. Этот HLR возвращает коммутатору Life информацию о том, на какой именно коммутатор сети KS надо маршрутизировать звонок. Это так называемая “прямая маршрутизация”, которая, если я не ошибаюсь, принята в Евросоюзе. При этом база, в которой хранится информация об “одолженых” номерах - централизована, и все операторы общаются с ней с помощью набора стандартизированых протоколов.
  2. Коммутатор сети Life, обслуживающий А, видит, что номер B - из “национального кода” (NDC) 50, принадлежащего UMC, и отправляет звонок в UMC. Коммутатор UMC обращается к SRF, узнает, что номер уехал в KS, и перенаправляет звонок на нужный коммутатор сети KS. Это так называемая “косвенная маршрутизация”, принятая в Англии. При этом UMC, в принципе, может иметь свою собственную базу SRF, следящую только за статусом номеров, принадлежащих UMC. На практике, в той же Англии используется централизованная база.
  3. Развитие предыдущих двух способов. Договоримся, что по умолчанию работает “прямая маршрутизация”, но если коммутатор сети Life, из которой исходит звонок, по каким-то причинам не обратился к SRF (например, сеть в процессе модернизации), то запрос уедет в сеть-донор, которая осуществит “косвенную маршрутизацию”. При этом сеть-донор (UMC) выставит счет сети Life за “нарушение протокола” и дополнительную сигнальную нагрузку. Такая схема принята в США и называется “N-1 маршрутизация

На самом деле, все три схемы немного сложнее, чем я описал (в основном по причине того, что необходимо обеспечить корректную генерацию CDR-ов и учет денег во всех возможных случаях, включая роуминг). Для примера, можете почитать про “Direct routeing override” в Английских нормативных документах (см. Литературу).

Какой вариант лучше?

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

Как номера попадают в базу MNP, к которой обращается SRF?

С технической точки зрения тут нет ничего интересного - сплошная бюрократия. Сеть-реципиент посылает запрос на выделение номера, сеть-донор его обслуживает. Для этого создается (или берется готовый) набор протоколов, который реализуется всеми операторами. Всего и делов-то :)

А почему без картинок?

А я ленивый :)

Берите первые две ссылки из литературы - там полно картинок.

О чем я не рассказал?

Я не рассказал, как делается number portability между наземными и мобильными операторами, но существенных отличий там нет - так, мелкие технические детали.

Литература:

Комментировать в LiveJournal

blog comments powered by Disqus