- Gnum
Gnum
Модуль Gnum предназначен для переадресации приглашения (INVITE) на сервер (SIP Express Router (SER)) оператора который обслуживает в данный момент вызываемый номер.
В модуле реализованы несколько типов проверки:
Проверка на принадлежность набираемого номера, к глобальным номерам, а именно:
* номер должен быть больше 9 цифр и меньше 15.
* первая цифра не должна быть нулём
* в номере не должно встречаться не каких символов кроме цифр.Проверка входящего номера, на соответствия IP-адреса сервера с которого был послан данный запрос, IP-адресу оператора который на данный момент обслуживает данный номер.
Краткое описание работы модуля
При поступлении запроса приглашения (INVITE) модуль (gnum), выполняет проверку на соответствие входящего IP-адреса, с IP-адресом сервера на котором обслуживается вызывающий абонент, в противном случае модуль завершает свою работу.После проверки номера, следующим шагом, выполняется попытка нахождения, в кеше, соответствия номера и IP-адреса сервера на котором обслуживается данный абонент, если такое соответствие находится, выполняется перезапись URI, с новым IP-адресом, и завершением работы модуля. Если соответствие номера и IP не найдено, то выполняется запрос к базе данных "db.globalnum.net ", для определения IP оператора который сей час обслуживает данный номер, в случае нахождения соответствия, данные заносятся в кеш (время жизни соответствия номера и IP — 6 часов), после перезаписывается URI, и модуль завершает свою работу.
Пакеты взаимодействия с базой данных "db.globalnum.net ".
Пакеты запросов:
[F] [Num] — Find — посылается для выполнения поиска соответствия номера в базе данных глобальных номеров. ['F'] [N5] [N4] [N3] [N2] [N1] [N0]
Пакеты ответов:
Ответы на запрос [F] : [L] [Num] [IP] - Location — приходит в результате удачного поиска соответствия в ДБ глобальных номеров. Результатом есть: номер вызываемого пользователя, и IP-адрес сервера на котором этот номер обслуживается. ['L'] [N5] [N4] [N3] [N2] [N1] [N0] [A0] [A1] [A2] [A3]
[T] [Num] [IP] [Port] — Temporary redirection — приходит в случае когда база данных глобальных номеров не может выполнить обработку запроса для данного номера, в результате пакет [T] в себе содержит номер который не может быть обработан, а также IP адрес и порт сервера, куда необходимо сделать повторное обращения для получение номера и IP адреса сервера обслуживающего пользователя (см. пакет [L] ).
['T'] [N5] [N4] [N3] [N2] [N1] [N0] [A0] [A1] [A2] [A3] [P0] [P1]
[P] [IP] [Port] — Permanent redirection — присылается в результате, если сервер глобальных номеров не может выдать, не на один из запрашиваемых номеров, номер и IP-адрес обслуживающего пользователя оператора, в этом случае все следующие запросы следует адресовать на IP-адрес и порт полученные в теле пакета [P] .
['P'] [A0] [A1] [A2] [A3] [P0] [P1]
[N] [num] — Not Found — приход в результате если в базе данных номеров не найдено соответствие с запрашиваемым номером.
['N'] [N5] [N4] [N3] [N2] [N1] [N0]
[E] — Error — возникает в следствие неправильного формирование запроса на поиск.
Wikimedia Foundation. 2010.