Идея отнюдь не нова - с конца девяностых годов FCC в штатах, Комиссия по Связи в Евросоюзе и Ofcom в Англии выдвигают подобные требования к операторам, работающим на территории их юрисдикции. В принципе понятно, что это нововведение означает для абонента - исчезает "барьер" по смене оператора, и т.п.
А вот что это означает для операторов? Об этом я и попробую рассказать.
Проблемы, возникающие с введение MNP
Для начала, я постараюсь дать максимально упрощенное описание проблемной области, постаравшись, тем не менее, не упустить существенных деталей.
Как я уже писал, в современных телефонных сетях сигнальный трафик полностью изолирован от голосового. Сигнальный трафик - это обмен информацией между элементами сети (сетей), в ходе которого они обмениваются информацией о звонке и абонентах. Например, процедура поиска вызываемого абонента и соединения с коммутатором, который его обслуживает происходит с помощью сигнального трафика. Таким образом обеспечивается корректная маршрутизация голосового канала через промежуточные элементы сети.
В свою очередь, сигнальный трафик (используемый для маршрутизации голоса) имеет свои правила маршрутизации и свои собственные маршрутизаторы.
В "классической" GSM сети (без MNP) таким маршрутизаторам постоянно приходится маршрутизировать сигнальные сообщения на правильную абонентскую базу (HLR) - это происходит, например, при поиске вызываемого абонента, т.к. только HLR "знает" его текущее местоположение (я уже описывал этот процесс).
Правильный маршрут при этом определяется по статической таблице маршрутизации, в которой для каждой 10000-ой группы номеров (типа 50469xxxx) указан "адрес" HLR-а, в котором хранятся данные абонентов с такими номерами телефонов.
Понятно, что с введением MNP эта стройная картина разрушается. Если абонент с номером 5556677 перешел из сети оператора Orange в сеть оператора Vodafone, его информация будет находится в одном из HLR-ов Vodafone и именно туда должны маршрутизироваться сигнальные сообщения "request_current_location".
Но кто же их туда смаршрутизирует?
И тут на сцену выходит 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 между наземными и мобильными операторами, но существенных отличий там нет - так, мелкие технические детали.
Давайте вопросы и замечания :)
Литература
- Дипломная работа, посвященная MNP в сетях третьего поколения. Содержит массу картинок и приличное введение в GSM вообще. Recommended
- Британский нормативный документ от Ofcom. Содержит кучу картинок и детальное описание того, как устроен роутинг в Англии. Recommended.
- RFC-3482. Number Portability in the Global Switched Telephone Network (GSTN): An Overview. Очень технический текст, рекомендуется только тем, кто уже "в материале". Подчеркнуты отличия между ситуацией в США и Европе.
- Статья "Number portability" в Wikipedia. Вводный текст можно прочесть. Техническое описание однобоко - оно описывает ситуацию в США.
- Tutorial от IEC, объясняющий local number portability. Опять-таки, все про США.