3.08.2008

GSM numbering plans

English version of the article
Вот уж не подумал бы, что стоит написать статью о планах нумерации, применяемых в сетях GSM. Как оказалось, такая простая вещь (ну, сравнительно простая) практически не описана в Интернет, и это натолкнуло моего знакомого на мысль расспросить меня подробнее.

В отличие от всяческих учебников по SS7, я не собираюсь загружать теорией. Лучше расскажу, как дело обстоит на практике. Итак, у вас есть SIM-карта. Для непосвящённых открою тайну - ваш абонентский номер (MSISDN) на SIM-карте не хранится. Хранится там только IMSI, специальный мобильный номер. Как абонент, вы свой IMSI никогда не узнаете (скажу больше, я как инженер, не знаю IMSI своего мобильного номера), да он вам и не нужен. IMSI и MSISDN ставятся в соответствие на HLR в вашей родной сети (домашней сети, HPMN).
Так вот, IMSI строятся на основании E.212 плана нумерации (land mobile). Структуру номера можно посмотреть здесь. Самое главное на что стоит обратить внимание - это фиксированная длина номера (15 цифр) и поля MCC, MNC.
MSISDN это E.164 (ISDN Telephony). В своей жизни мы постоянно сталкиваемся именно с E.164 планом нумерации. Cтруктуру номера в этом плане смотрите здесь. Обращаем внимание на переменную длину номера и поля CC и NDC.
Если забыть о существовании Северной Америки, то для передачи сообщений внутри сети и между сетями используется E.164. Фактически, чтобы достичь какую-то внешнюю сеть достаточно проанализировать первые цифры номера (вы же не поленились и зашли на Википедию, где описан формат номера в E.164? :). Так вот, зная country code и national destination code можно точно определить - куда дальше отправить сообщение. Для примера, коммутатор в Германии пытается отправить сигнальное сообщение на номер 380671234567. Если у этого коммутатора есть выход на международную SS7-сеть, то он проанализирует первые цифры номера и определит:
CC=380 - Украина
NDC=67 - Kyivstar GSM
Всё, дело сделано. Дальше дело техники и MTP3.
А теперь давайте представим, что вы в первый раз (или после длительного перерыва) включаете мобильный телефон. Телефон, если не находит "родную" базовую станцию (BS), пытается зарегистрироваться используя BS с максимальным уровнем сигнала. В любом случае, всё что телефон может передать в сеть GSM, это запрос на регистрацию и... свой IMSI! Потому как других данных на SIM-карте просто нет. BS через контроллер базовых станций (BSC) передаст запрос на регистрацию на коммутатор (MSC), который должен принять какое-то решение. Обычно, MSC запрашивает данные у VLR, но как я указал выше это первая регистрация в сети, а значит, VLR о вас просто ничего не знает. Что же делать? Нужно как-то получить данные абонента (его профиль, содержащий MSISDN, услуги, переадресации, ограничения по звонкам и смс, прочее) из HLR. Но чтобы получить данные из HLR, до него надо как-то добраться, а у нас кроме IMSI абонента ничего нет. Вот тут-то и появляется гибридная нумерация E.214. Почему гибридная? Потому что она позволяет получить из IMSI (E.212) номер, который может быть передан по сетям, использующим E.164 для маршрутизации. Как это делается? Очень просто. На коммутаторе есть таблица соответствия, по которой происходит следующая замена:
MCC на CC
MNC на NDC
В итоге из IMSI 255031234567890 получается MGT (Mobile Global Title) 380671234567890.
Анализируя первые цифры из MGT уже можно достичь домашнюю сеть, где на основании первых цифр после 38067 можно будет определить на какой именно HLR отправить запрос (если в сети более одного HLR, конечно).
Весь дальнейший обмен уже будет вестись с использованием E.164.
Вот и всё, теперь у вас не должно быть никаких сомнений относительно того, где какой план нумерации используется. А если сомнения всё же остались, то задавайте вопросы и я обязательно отвечу.
P.S. Список MAP сообщений передаваемых в E.214 (возможно не полный):
1. sendAuthenticationInfo (opCode 56)
2. updateLocation (opCode 2)
3. updateGprsLocation (opCode 23)
4. restoreData (opCode 57)
5. purgeMS (opCode 67)