10.14.2010

Основы переадресации вызовов в GSM

Вкратце о том, как работает переадресация, я уже рассказал в статье Call forwarding. В этой же статье речь пойдёт о тонких технических моментах реализации этого дополнительного сервиса.

Предварительно необходимо ответить на вопрос:
Что такое переадресация вызова?
Определимся с терминологией.
Абонент А: это инициатор вызова - вызывающий абонент
Абонент B: получатель вызова - вызываемый абонент
Абонент С: получатель вызова после срабатывания переадресации. В частном случае это может быть ящик голосовой почты абонента В.

Сервис переадресации предоставляет возможность по условию (занято, нет ответа в течении Х секунд, абонент вне сети) или безусловно (т.е. всегда) преобразовать вызов А->B в вызов A->C. При этом все остаются довольны:
А - всё таки куда-то дозвонился :)
В - рано или поздно узнает от абонента С, что ему был вызов (например, прослушает голосовую почту). А в случае с переадресацией по неответу дополнительно увидит пропущенный вызов.
С - поговорит с абонентом А.

Как это происходит?
Если не вдаваться в подоробности, то коммутатор просто делает исходящий вызов от абонента В к абоненту С, а затем соединяет 2 вызова в конференцию.
Далее с подоробностями.

Кто и за что платит?
Абонент А всегда платит только за исходящий вызов абоненту В независимо от того - была переадресация или нет. Началом тарификации является ответ абонента С.
Абонент С платит только за входящий вызов от абонента В. Обычно такие вызовы бесплатны.
С абонентом В сложнее всего. Всё зависит от того, какой именно коммутатор выполнит переадресацию.


Какой именно коммутатор выполняет переадресацию?
Для начала хотел бы отметить, что всё рассмотрение будет происходить относительно номера В. Это входящий вызов и он обслуживается так, как изображено на рисунке ниже (взят из 23.018):


В GSM входящие вызовы обслуживает GMSC (Gateway Mobile Switching Centre), либо MSC с функционалом GMSC. Задача GMSC при поступлении вызова - определить текущее положение абонента (с точностью до коммутатора) и отправить вызов далее. Информация о местоположении хранится на HLR, поэтому туда и отправляется запрос (MAP sendRoutingInformation). HLR хранит у себя данные о текущем VLR абонента и его "доступности". Возможны такие варианты (с последствиями):
  • у абонента установлена безусловная переадресация. HLR без выяснения прочих подробностей "попросит" GMSC сделать переадресацию;
  • абонент давно не в сети, его профиль удалён из VLR, а номер VLR удалён из HLR. Если установлена (и активна) переадресация по событию "не в сети", то вывод напрашивается сам собой - HLR "попросит" GMSC сделать переадресацию;
  • номер VLR указан в профиле абонента. HLR инициирует запрос к текущему VLR абонента с целью получить временный номер для дозвона (MAP provideRoamingNumber). VLR проверяет в своём локальном профиле статус абонента. Статусов всего 2 - активный (imsiAttached) и неактивный (imsiDetached). Если статус активный, то VLR выделяет временный номер (MSRN) из пула и возвращает его на HLR. Если же статус неактивный (например, абонент выключил свой телефон), то возвращается ошибка - Absent Subscriber. Здесь важно отметить, что телефон должен быть именно выключен. Только в такой ситуации терминал обязан отправить в сеть сообщение, что он выключается. Если из телефона вынута батарея или она разряжена, то, естественно, никаких сообщений в сеть терминал не отправляет и VLR считает такого абонента зарегистрированным в сети. В случае ошибки Absent Subscriber, HLR обновит профиль абонента (выставит флаг imsiDetached) и "попросит" GMSC сделать переадресацию (естественно, если установлена переадресация по событию "не в сети");
  • номер VLR указан в профиле абонента, но дополнительно установлен флаг imsiDetached. Это означает, что предыдущая попытка дозвониться до абонента не увенчалась успехом т.к. он был вне сети. Запроса на VLR не будет, а HLR сразу же "попросит" GMSC сделать переадресацию (опять же, если установлена переадресация по событию "не в сети").

В результате, HLR ответит на GMSC либо временным номером абонента В (MSRN), либо номером С, с указанием причины переадресации.
Во втором случае всё просто - GMSC в домашней сети совершит исходящий вызов на номер С из профиля абонента, а затем соединит оба вызова в конференцию. Как указано выше, подобный сценарий возможен в следующих случаях:
  • у абонента В установлена безусловная переадрссация;
  • абонент В правильно выключил свой телефон;
  • абонент В недоступен (разрядилась батарея, вне покрытия сети) НО ему уже поступали входящие вызовы, а значит HLR уведомлен о его недоступности.
Все 3 описанных случая принято назвать одним термином - early call forwarding (ECF).

Вернемся к случаю, когда HLR возвращает временный номер абонента В. GMSC ничего не остаётся как начать процедуру установления вызова к коммутатору абонента В (VMSCB). Получив MSRN, коммутатор спрашивает у VLR о том, какому абоненту назначен этот номер и в каком состоянии сейчас этот абонент. Состояния абонента могут быть такими:
  • абонент зарегистрирован в сети (imsiAttached), активных голосовых вызовов в данный момент у него либо нет, либо вызов уже установлен и активирован сервис ожидания вызова (Call waiting). Теоретически абонент может принять вызов;
  • у абонента В сейчас активный голосовой вызов, но вызов в процессе установления или установлен и при этом сервис ожидания не активирован. Таким образом принять второй вызов абонент не может
Во втором случае VLR укажет коммутатору на необходимость установления нового вызова - от абонента В к абоненту С, а затем 2 вызова будут соединены в конференцию.
В первом случае VLR попросит коммутатор "поискать" абонента в группе сот (LAC). Поиск осуществляется с помощью широковещательного запроса (paging). Если терминал абонента "отозвётся", то абоненту А в голосовом канале будет отправлен сигнал КПВ (контроль посылки вызова, гудок 1 сек, пауза 3 сек, повтор), а коммутатор начнёт подсчёт времени до состояния неответа. В случае, если абонент В не ответит в течении заданного периода времени, коммутатор отправит запрос в VLR и тот укажет на необходимость установить связь с номером С и соединить оба вызова в конференцию.
Для первого случая также возможен вариант, когда терминал абонента В не ответит на paging. И вновь коммутатор отправит запрос в VLR и получит команду установить вызов с номером С.
Если переадресацию осуществляет текущий коммутатор абонента В, то такой вид переадресации называется late call forwarding (LCF).

Как это активировать/деактивировать?
Активация и деактивация переадресации может быть выполнена либо через меню телефона, либо с помощью комманд MMI (Man Machine Interface).

Почему нельзя поставить переадресацию на на номера с префиксом и платить меньше?
Во многих сетях есть возможность с помощью специальных префиксов совершать международные звонки по сниженным тарифам. Например, украинский оператор Kyivstar GSM предлагает использовать для таких вызовов префикс 015. Логично предположить, что может возникнуть идея установить в качестве номера переадресации что-то вида 015-код страны-код сети-номер абонента. Однако любопытных ждёт разочарование - сеть не примет такой номер и не установит переадресацию. Детальное обьяснение Вы можете найти в статье Call forwarding.
Если кратко - подобные правила набора номера работают только в домашней сети. Если абонент В будет в роуминге, то гостевая сеть не сможет осуществить переадресацию на такой номер. Почему так важно сохранить возможность переадресации в роуминге? Читайте дальше.

Как всё это происходит, когда абонент в роуминге?
В том случае, когда абонент В зарегистрирован в гостевой сети (роуминг-партнёре), схема вызова не меняется. В общем случае, домашней сети всё равно где сейчас зарегистрирован абонент - на домашнем или гостевом VLR. Но в случае, если необходимо произвести переадресацию, вопрос роуминга становится важным. В зависимости от типа переадрессации - late или early call forwarding, существенно меняется стоимость. В случае ECF, абонент В будет протарифицирован только за один вызов - от В к С по местным тарифам связи.
Если же имела место "поздняя" переадресация (LCF), то оплатить придётся как входящий вызов (А-В), так и исхоящий (В-С), причём оба по роуминг-тарифам. Самоё обидное для абонента это то, что в большинстве случаев о факте переадресации он узнает только при получении счёта об оплате услуг (или из смс от голосовой почты, если переадресация на ящик голосовой почты).

Инициатива EU, или почему европейцы не платят за переадресации в роуминге.
Подобное положение дел с LCF долго не давало покоя Европейской комиссии. Поэтому с 01.07.2010 всем европейским операторам мобильной связи запрещено взымать дополнительную плату за переадресацию в роуминге по Европе. Т.е. если произошло событие поздней переадресации при роуминге в европейской сети, то вместо оплаты 2х роуминг-звонков европеец оплатит только вызов от В к С по местным тарифам. Если же европейский абонент зарегистрировался в не-европейской сети, то платить придётся за всё. Аналогично, не-евпропейские абоненты по-прежнему будут оплачивать два роуминг-вызова при срабатывании переадресации в в европейской сети.
Думаете мобильные операторы при этом терпят огромные убытки? Как бы не так - некоторые на этом ещё и зарабатывают! Если Вам интересно каким образом, то оставляйте комментарии - я обязательно напишу о том, как я провёл это лето :)

Статьи по теме:
Call forwarding
SMS Forwarding
Home rerouting