ЛОГИКА/ОТЛАДОЧНАЯ ИНФОРМАЦИЯ

Сервер SIPMarket является сервером-свитчем. Это означает, что сервер обеспечивает взаимодействие клиентского вызывающего SIP-оборудования и принимающей стороны, которой может являться принимающий SIP-клиент или терминирующий шлюз, который в свою очередь обеспечивает коммутацию с мобильным, стационарными или другим телефонами. Таким образом, все отладочная информация - это информация принимаемая от SIP-клиента на сервер sipmarket.net и отправялемая SIP-клиенту сервером.

После входа в личный кабиент системы SIPMarket в меню доступна Отладочная информация, представялющая собой SIP-логи взаимодействия клиентского SIP-оборудования и proxy-сервера sipmarket.net.

Все SIP-логи представляют собой текстовые файлы, просмотреть каждый из которых можно кликнув на имя лога, например 14.11.2011 15:24:14-1982-Out-REGISTER-c2cb0045-1406-1910-89c7-c54985c39102-111111-111111.log. Имена могут отличаться в зависимости от того, что содержится в логе. В случае лога исходящего звонка в имени лога содержится фраза -Out-, входящего -In-, регистрации -REGISTER-. Лог-файл представляет собой содержимое пакетов обмена между SIP-клиентом и сервером. Пакеты делятся в свою очередь на  входящие и исходящие. Входящие пакеты имеют в заголовке ключевое слов Recieve, исходящие - Send. Данные определения всегда рассматриваются со стороны сервера sipmarket.net, т.е. в случае Recieve - пакет получен НА СЕРВЕР, в случае Send - пакет отправен ОТ СЕРВЕРА.

Принимаемые и передаваемые пакеты создают цепочку обмена СИГНАЛЬНОЙ ИНФОРМАЦИЕЙ (SIP-СИГНАЛИЗАЦИЯ), определяющую проводимую операцию, например телефонный вызов. Это означает, что в зависимости от содержимого приходящего пакета зависит содержимое исходящего пакета и ответ в нем. Сами пакеты содержат КОМАНДЫ или ОТВЕТЫ на команды, определяющие назначение пакета, например INVITE или 200OK. В каждой команде или ответе имеются различные параметры - авторизация звонящего, кодеки, работа за НАТом и проксирование, различные информационные параметры, DTMF и пр. 

Пример пакета с командой INVITE с параметрами:

14.02.2011 11:21:23-Receive from-95.211.216.165:34587
INVITE sip:888888@sipmarket.net SIP/2.0
Via: SIP/2.0/UDP 192.168.1.5:34587;rport;branch=z9hG4bK84530
Max-Forwards: 70
To: <sip:888888@sipmarket.net>
From: <sip:100000@sipmarket.net>;tag=z9hG4bK71515594
Call-ID: 615570798693@192.168.1.5
CSeq: 1 INVITE
Contact: <sip:100000@192.168.1.5:34587;transport=udp>
Expires: 3600
User-Agent: Sipdroid/2.4 beta/HTC Desire
Content-Length: 284
Content-Type: application/sdp

Общие схемы обмена представлены ниже.

Пункт меню Отладочная информация содержит SIP-логи с делением на три группы: Регистрации, Вызовы, Все. На сервере хранятся логи за 5 последних дней.

Регистрации

В разделе отображаются логи регистрации SIP-оборудования. В имени лога всегда присутсвует ключевое слов REGISTER. В общем случае логика регистрации выглядит следующим образом:

Recieve REGISTER
Send UNAUTHORIZED
Recieved REGISTRED with AUTHORIZATION DATA
Send OK


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

Вызовы

В разделе отображаются логи входящих и исходящих вызовов. В имени лога входящего вызова всегда содержатся ключевые слова In и INVITE, в имени исходящего вызова - ключевые слова Out и INVITE. В общем случае логика исходящего звонка выглядит следующим образом:

Recieve INVITE
Send UNAUTHORIZED
Recieved INVITE with AUTHORIZATION DATA
Send TRYING
Send SESSION PROGRESS
Send RINGING
Send 200OK
Recieved ACK
Recieved(Send) BYE
Send(Recieved) 200OK

В случае входящего звонка ключевые слова Recieved и Send меняются местами, авторизация на стороне SIP-клиента отсутствует.
В случае авторизации при исходящем вызове по IP авторизация отсутствует.
В случае занятости вызываемого номера вместо 200OK передается BUSY с ответом 200OK.
В случае отбоя до соединения передается CANCEL с ответом 200OK.
В любом случае любое финальное действие (соединение, окончание звонка, отказ от звонка) должен быть подтвержден либо SIP-клиентом, либо сервером. 
Ответ ACK передается только на 200OK с соединением или на ошибку
В случае вызовов на SIP-номера  авторизация принимающей стороной не запрашивается (бесплатыне звонки). Ответы Session Progress или Ringing не всегда имеют место - это зависит от политики терминирующего шлюза.