CommuniGate Pro
Версия 6.4
 

Модуль SIP

В SIP Модуле CommuniGate Pro реализован протокол SIP, работающий в сетях IP.

Модуль используется для приёма Запросов с Сигналами от удалённых участников и отправки Сигналов удалённым участникам.

SIP протокол не включает в себя протоколы, необходимые для фактической передачи данных (протоколы передачи медиа). Вместо этого протокол SIP позволяет всем участвующим сторонам находить друг друга в сети, договариваться об использовании протоколов передачи медиа и о параметрах этих протоколов, устанавливать интерактивные сессии реального времени и управлять этими сессиями: добавлять новых участников, закрывать сессии, изменять параметры сессии и т.д.




Протокол Установления Сессии (SIP)

В Модуле SIP CommuniGate Pro реализована функциональность SIP протокола. Модуль использует TCP и UDP приёмники для приёма SIP запросов и ответов на них через эти сетевые протоколы. Он также отправляет пакеты с запросами и получает ответы через сетевые протоколы TCP и UDP.

Модуль SIP разбирает все получаемые SIP пакеты и использует субкомпоненты модуля для обработки разобранных пакетов. Пакеты с Запросами передаются в субкомпонент SIP Сервер, новой или существующей транзакции SIP Сервера.
Компонент SIP Сервер использует Модуль Signal для обработки запроса. Ответы, сгенерированные модулем Signal, поступают в транзакцию SIP Сервера и SIP Сервер отправляет их обратно источнику SIP запроса.

Модуль Signal может отправлять Запросы на удалённое SIP устройство или на удалённый SIP Сервер. Модуль использует субкомпонент SIP Клиент для создания транзакции SIP Клиента. Эта транзакция используется для отправки SIP Запроса через Интернет протокол и обработки посланного обратно Ответа.

Пакеты с SIP Запросом, получаемые SIP Модулем, поступают субкомпоненту SIP Сервер, а пакеты с SIP Ответами поступают субкомпоненту SIP Клиент; из этого правила есть два исключения:

  • если не может быть найдено никакой транзакции для пакета с Ответом, то пакет ретранслируется "вверх" инициатору звонка SIP Модулем самостоятельно, без использования модуля Signal.
  • если не может быть найдено никакой транзакции Сервера для Запроса ACK, то для дальнейшего ретранслирования от инициатора звонка "вниз" создаётся транзакция SIP Клиента.

Модуль SIP CommuniGate Pro поддерживает коммуникации через UDP и TCP, а также безопасные (TLS) коммуникации через протокол TCP.

SIP модуль CommuniGate Pro поддерживает технологию прохождения ближнего и дальнего NAT, что делает возможным осуществление SIP коммуникаций как для больших корпораций со множеством внутренних локальных сетей, так и для домашних пользователей, выходящих в Интернет через "простые" NAT устройства.

Схема установления сессии, описанная выше, работает корректно только если обе стороны осуществляют коммуникацию напрямую. Если между сторонами имеется межсетевой экран или NAT устройство, то прямое взаимодействие между ними невозможно. В этом случае, SIP модуль CommuniGate Pro осуществляет медиа проксирование, ретранслируя не только запросы и ответы протокола SIP, но также и медиа данные.


Настройки транспорта SIP

Для того, чтобы настроить параметры SIP модуля, используйте Веб Интерфейс Администратора. Откройте в разделе Установки страницу Real-Time, затем откройте страницу SIP.

Нажмите на ссылку Транспорт и откройте страницу с настройками Транспорта SIP.

Транспорт

На панели Транспортный Уровень вы можете настроить опции уровня сети для приёма SIP пакетов:
Транспортный Уровень
Уровень Журнала: UDP Приёмник Полные пакеты запросов в звонках:
Предварительные Обработчики: TCP Приёмник Каналы:
Ограничение на ждущих Обработки: Тайм-аут по неактивности:
Использовать короткие имена полей:  

   Ограничение размера Запросов для UDP: LAN:
UDP TOS Тэг: WAN:
Уровень Журнала
Используйте эту настройку для указания, какую информацию о SIP пакетах и транспортном уровне SIP модуль должен сохранять в Журнале работы Сервера. Обычно используется уровень Сбои (только неразрешимые проблемы), уровень Основные (отчёты об установлении сессий) или уровень Проблемы (сбои, отчёты об установлении сессий и не фатальные ошибки).
В случае, если в работе SIP модуля возникают проблемы, возможно, целесообразным будет увеличить детализацию до уровня Подробности или Всё: в этом случае в Журнал работы Сервера будут записываться содержимое пакетов и другие подробности. Когда проблема решена, верните настройку Уровень Журнала в её обычное значение, иначе Системный Журнал будет очень быстро увеличивать свой размер.
Записи транспортного уровня модуля SIP в Журнале работы Сервера имеют пометку SIPDATA.
Общие SIP записи имеют пометку SIP.
Полные пакеты запросов в звонках
Когда эта настройка включена, то все запросы и ответы, относящиеся к звонкам (INVITE, BYE и так далее) пишутся в Журнал полностью, как если бы Уровень Журнала был установлен в значение Всё.
UDP
Для того, чтобы настроить транспортный уровень UDP, нажмите на ссылку UDP Приёмник. Откроется страница UDP Приёмника. По умолчанию, номер порта SIP UDP имеет значение 5060.
TCP
Для того, чтобы настроить транспортный уровень TCP, нажмите на ссылку TCP Приёмник. Откроется страница TCP Приёмника. Вы можете задать как безопасные, так и незащищённые порты TCP. По умолчанию, незащищённый номер порта SIP TCP имеет значение 5060, а безопасный SIP TLS порт - 5061.
Каналы
Используйте эту опцию для указания максимального числа коммуникационных каналов TCP, которые может открывать модуль. При превышении этого числа, модуль будет отвергать все новые входящие TCP соединения.
Тайм-аут по неактивности
Используйте эту опцию для того, чтобы указать, когда SIP модуль должен закрывать коммуникационный канал TCP при отсутствии активности в этом канале. Это помогает сэкономить ресурсы, используемые для обслуживания коммуникационных каналов TCP на сильно загруженных серверах. С другой стороны, некоторые SIP клиенты могут работать неправильно в случае, если сервер закрывает TCP соединение по тайм-ауту.
Предварительные Обработчики
Если эта опция установлена в ненулевое значение, то получаемые пакеты не будут обрабатываться немедленно: они помещаются в специальную очередь и получающая нить немедленно становится готовой для получения новых пакетов. Эта опция задаёт число дополнительных нитей, который берут пакеты из очереди и обрабатывают их, отправляя из в SIP транзакции Сервер или Клиент.
Ограничение на ждущих Обработки
Если пакеты не обрабатываются немедленно, а помещаются сначала в специальную очередь (смотрите выше), то эта опция ограничивает размер этой очереди. При достижении числа пакетов в очереди заданного лимита, новые пакеты игнорируются. В этой ситуации, возможно, вам потребуется увеличить число Предварительных Обработчиков.
Использовать короткие имена полей
Если эта опция включена, то все SIP пакеты (запросы клиента и ответы сервера) Сервер будет генерировать с использованием альтернативных (односимвольных) имён полей заголовка пакета. Возможно вы захотите включить эту опцию для уменьшения размера пакетов.
Ограничение размера Запросов для UDP
Используйте эту опцию для того, чтобы указать максимальный размер UDP пакета, который может быть отправлен внутри вашей локальной сети и наружу. Если SIP модулю необходимо доставить пакет и протокол не указан явно, то SIP модуль, если размер пакета не превышает заданное ограничение, использует UDP протокол. TCP протокол используется в последнюю очередь.
UDP TOS Тэг
Используйте эту настройку для указания Тэга TOS для всех исходящих SIP UDP пакетов. Этот тэг может использоваться для задания приоритета SIP трафика в вашей локальной сети.

Настройки SIP Сервера

Для того, чтобы настроить параметры SIP модуля, используйте Веб Интерфейс Администратора. Откройте в разделе Установки страницу Real-Time, затем откройте страницу SIP.

Нажмите на ссылку Приём и откройте страницу с настройками SIP Сервера (UAS).

Серверные Транзакции

На панели Серверные Транзакции вы можете указать каким образом SIP Модуль должен обрабатывать транзакции SIP сервера (UAS).

Серверные Транзакции
Уровень Журнала: Процессоры: Ограничение на Объекты: Ограничение на События:
M/div>
Уровень Журнала
Используйте эту настройку для того, чтобы указать какую информацию субкомпонент SIP Сервер должен сохранять в Журнале работы Сервера. Обычно используется уровень Сбои (только неразрешимые проблемы), уровень Основные (отчёты об установлении сессий) или уровень Проблемы (сбои, отчёты об установлении сессий и не фатальные ошибки).
Записи, помещённые субкомпонентом SIP Сервер в Журнал работы Сервера, имеют пометку SIPS.
Процессоры
Используйте эту настройку для указания числа нитей, используемых для обработки транзакций SIP Сервера.
Ограничение на Объекты
Используйте эти настройки для задания максимального числа одновременно обслуживаемых серверных транзакций, которые может обрабатывать SIP модуль. При достижении этого числа, входящие SIP пакеты с новыми запросами будут игнорироваться.
Ограничение на События
Используйте эту настройку для задания максимального числа необработанных событий, отправленных во все активные SIP транзакции сервера. При достижении этого числа, компонент SIP Сервер входит в режим перегрузки: никакие новые SIP транзакции не создаются и все входящие SIP пакеты с новыми запросами будут игнорироваться.

Протокол

В компоненте сервер SIP Модуля реализована Аутентификация Запросов для удалённых клиентов. Если внутренний компонент Сервер отвергает Запрос по причине отсутствия данных аутентификации, то Модуль добавляет специальные поля в отправляемый ответ, помогающие проведению аутентификации.

Протокол
Объявлять 'Digest'-Аутентификацию Объявлять 'NTLM'-Аутентификацию
Посылать '100 Trying' для не-INVITE запросов Всегда Посылать '100 Trying' для INVITE запросов
Объявлять 'Digest'-Аутентификацию
Выберите эту опцию для информирования SIP клиентов о поддержке стандартного метода аутентификации DIGEST.
Объявлять 'NTLM'-Аутентификацию
Выберите эту опцию для информирования SIP клиентов о поддержке нестандартного метода аутентификации NTLM.

Имя пользователя, указанное в данных аутентификации, обрабатывается через компонент Маршрутизатор, так что в именах аутентификации могут использоваться Псевдонимы Пользователя, Переадресаторы и Псевдонимы Домена.
У указанного Пользователя и в его Домене Услуга SIP должна быть включена.

Для SIP аутентификации могут использоваться любые пароли Пользователей CommuniGate Pro.

Если для указанного Пользователя опция Пароль включена, то SIP модуль проверяет, задана ли для этого Пользователя настройка SIPPassword. Если она задана, то она будет использоваться вместо стандартной настройки Пароль. Это возможность позволяет Администратору устанавливать Пользователю дополнительный пароль, который будет использоваться только при проведении SIP аутентификации.

Посылать '100 Trying' для не-INVITE запросов
Если эта опция включена и клиент перепосылает запрос, то SIP Модуль отправляет отклик 100 ("Trying") даже в том случае, если INVITE не был методом запроса.
Всегда Посылать '100 Trying' для INVITE запросов
Если эта опция включена, то SIP модуль всегда отправляет отклик ответ ("Trying") до начала обработки запроса INVITE.

Защита

В компоненте сервер SIP Модуля реализованы некоторые механизмы защиты:

  • Пакеты UDP и запросы на соединение TCP с сетевых адресов IP, включённых в список Отвергаемые Сетевые Адреса, полностью игнорируются.
  • Когда количество неправильно сформированных пакетов SIP, полученных от некоторого сетевого адреса IP, превышает некоторый предел за установленное время, этот адрес помещается во Временно Блокированные Адреса.
  • Когда запрос SIP отвергается из-за ошибки аутентификации, ответ отправляется после некоторой задержки, а адрес помещается во Временно Блокированные Адреса - если частота таких ошибок превышает установленный предел.
  • Когда запрос SIP приходит с сетевого адреса IP, включённого в список Временно Блокированные Адреса, он полностью игнорируется.

Настройки SIP Клиента

Для того, чтобы настроить параметры SIP модуля, используйте Веб Интерфейс Администратора. Откройте в разделе Установки страницу Real-Time, затем откройте страницу SIP.

Нажмите на ссылку Передача и откройте страницу с настройками SIP Клиента (UAC).

Клиентские Транзакции

На панели Клиентские Транзакции вы можете указать, каким образом SIP Модуль должен обрабатывать транзакции SIP клиента (UAC).
Клиентские Транзакции
Уровень Журнала: Процессоры: Ограничение на Объекты: Ограничение на События:
Уровень Журнала
Используйте эту настройку для того, чтобы указать какую информацию субкомпонент SIP Клиент должен сохранять в Журнале работы Сервера. Обычно используется уровень Сбои (только неразрешимые проблемы), уровень Основные (отчёты об установлении сессий) или уровень Проблемы (сбои, отчёты об установлении сессий и нефатальные ошибки).
Записи, помещённые субкомпонентом SIP Клиент в Журнал работы Сервера, имеют пометку SIPC.
Процессоры
Используйте эту настройку для указания числа нитей, используемых для обработки транзакций SIP Клиента.
Ограничение на Объекты
Используйте эти настройки для задания максимального числа одновременно обслуживаемых клиентских транзакций, которые может обрабатывать SIP Модуль.
Ограничение на События
Используйте эту настройку для задания максимального числа необработанных событий, отправленных во все активные SIP транзакции клиента. При достижении этого числа, компонент SIP Клиент входит в режим перегрузки и никакие новые SIP транзакции клиента не могут быть созданы.

Протокол

Протокол
Всегда оставаться в Диалогах Релеить на любой Сетевой Адрес:
Посылать через: Таймер B:
Посылать P-Asserted-Identity  
Всегда оставаться в Диалогах
Если эта опция выключена, то SIP Модуль участвует только в тех SIP диалогах, которые требуют его участия (например, для прохождения межсетевого экрана или NAT). Если эта опция включена, SIP модуль участвует во всех открываемых SIP диалогах. Эта возможность может использоваться для анализа и устранения неполадок, так как в Журнал работы Сервера записываются все подробности об транзакциях в диалогах.
Релеить на любой Сетевой Адрес
Если эта опция установлена в значение любой, то SIP Модуль функционирует как Открытый Релей: он ретранслирует все SIP запросы любым получателям.
Для предотвращения злоупотреблений вашим Сервером, разрешайте релеинг только для клиентов или установите эту опцию в значение никто.
SIP Модуль будет отправлять Запросы если выполняется как минимум одно из условий:
  • адрес получателя перечислен в списке Сетевые Адреса Клиентов.
  • Запрос ретранслируется на устройства, зарегистрированные за Пользователем вашего Сервера.
  • Запрос сгенерирован локальным Узлом (таким как Задача PBX).
  • отправитель Запроса аутентифицирован вашим сервером.
  • Запрос получен от сетевого адреса, имеющегося в списке Сетевые Адреса Клиентов (только если эта опция установлена в значение клиенты).

Если никакое из этих условий не выполняется, то запрос отвергается с кодом ошибки 401 ("Authentication required").

Посылать через
Включите эту опцию если вы хотите ретранслировать все исходящие пакеты через какой-либо внешний SIP сервер. Обратите внимание, что эта настройка не используется в случае адресов, которые были явным образом перенаправлены на внешние хосты с использованием суффикса ._via или других методов маршрутизации.
Таймер B
Эта опция управляет значением "Таймер B" (согласно RFC3261). Она контролирует максимальное время, которое транзакция типа INVITE будет ожидать первого ответа от вызываемой стороны.
Хотя согласно стандарту она должна иметь значение 32 секунды, мы настоятельно рекомендуем понизить её до 5-10 секунд: если удалённый участник никак не отвечает в течении этого времени (не посылая даже ответ типа 100-Trying) то, вероятнее всего, он не функционирует и нет необходимости выжидать все 32 секунды для уведомления инициатора звонка.
Понижение этого значения позволяет транзакции SIP клиента попробовать использовать другую SRV запись (если она есть): если же этот таймер имеет значение 32 секунды, то вызывающий абонент, вероятнее всего, прекратит соединение до попытки использования следующей SRV записи.
487-Wait Таймер
Когда транзакция SIP прерывается клиентом, то создаётся и отправляется запрос CANCEL. Эта настройка указывает, как долго должен Модуль ожидать ответа 487 для фактического завершения транзакции.
Если такого ответа не будет, Модуль создаст его самостоятельно.
Посылать P-Asserted-Identity
Если эта опция включена и отправитель запроса был аутентифицирован, то в SIP запрос добавляется поле P-Asserted-Identity. Поле содержит SIP URI с полным именем аутентифицированного Пользователя (accountName@domainName).

Поддержка Продуктов Microsoft® Windows

В продуктах Microsoft "RTC" (включая Windows Messenger) используется стандартный SIP протокол для аудио и видео сессий.
Эти клиенты используют собственные расширения SIP протокола для Мгновенных Сообщений, Статуса Присутствия, Удалённого Помощника и других сервисов. Для поддержки этих приложений в CommuniGate Pro также реализованы необходимые расширения.

Windows Messenger поддерживается, начиная с версии 5.0.

В SIP модуле CommuniGate Pro опция "Объявлять 'NTLM'-Аутентификацию" должна быть включена.

В Windows Messenger для аудио и видео сессий используются стандартные RTP медиа протоколы и эти сессии могут устанавливаться через межсетевые экраны и/или NAT.
В Windows Messenger для обмена Мгновенными Сообщениями используется SIP протокол для передачи медиа и сессии по обмену Мгновенными Сообщениями также могут устанавливаться через межсетевые экраны и/или NAT.
В сессиях Windows Messenger "Общая доска", Общие Приложения и Удалённый Помощник используется T.120 и другие нестандартные протоколы, и эти сессии могут устанавливаться через межсетевые экраны и/или NAT.
В сессиях передачи файлов Windows Messenger используется нестандартный протокол и в настоящее время такие сессии не могут устанавливаться через межсетевые экраны и/или NAT.


Поддержка работы Устройств SIP и Компенсации

Во многих из имеющихся в настоящее время SIP устройств и SIP приложений неверно реализованы различные аспекты SIP протокола.
SIP Модуль CommuniGate Pro пытается скомпенсировать некоторые из таких недоработок и ошибок, основываясь на типе соединённого с ним SIP устройства.

Для того, чтобы настроить Компенсации SIP, используйте Веб Интерфейс Администратора. Откройте в разделе Установки страницу Real-Time, затем откройте страницу SIP. Нажмите на ссылку Компенсации. Появится таблица Компенсации:

Проблемы/Ошибки
Имя Программы MicrosoftSubPresenceFixContactsNoTCPNoMaddrNoPathBadByeAuthNeedsEpidNoSubMWIActiveHoldTCPPing

Для того, чтобы задать компенсации для конкретных продуктов, введите имя продукта в последний пустой элемент Таблицы, выберите требуемые компенсации и нажмите на кнопку Модифицировать.

Для того, чтобы удалить конкретный продукт, удалите его имя из таблицы и нажмите на кнопку Модифицировать.

Подобная таблица реализована и для удалённых сайтов:
Проблемы/Ошибки
Имя Программы MicrosoftSubPresenceFixContactsNoTCPNoMaddrNoPathBadByeAuthNeedsEpidNoSubMWIActiveHoldTCPPing

Когда SIP Модуль должен ретранслировать запрос с Сигналом удалённому адресату, он применяет методы компенсации, заданные для URI домена из запроса наряду с методами, заданными для URI домена - получателя.

В настоящее время реализованы следующие методы компенсаций:
Microsoft
Участник использует клиент Microsoft. Сообщения протокола подписывается, а также обрабатываются другие отклонения от SIP протокола.
SubPresence
Клиент поддерживает Статус Присутствия, но в нём не реализован "проталкивающий" Агент Статуса Присутствия (Publish). Сервер будет отправлять запросы SUBSCRIBE для мониторинга статуса Присутствия.
noTCP, noMaddr
Клиент не поддерживает параметры заголовка Contact: transport и/или maddr. Сервер будет изменять данные Contact, отправляемые такому клиенту.
noPath
Клиент не поддерживает RFC3327 (поле Path).
Сервер будет изменять данные Contact, отправляемые такому клиенту.
badByeAuth
Клиент неверно вычисляет дайджест Аутентификации для non-INVITE запросов (BYE, NOTIFY, REFER).
needsEpid
Клиент использует нестандартный параметр epid= в полях From/To URI и не может работать, если кто-либо из участников диалога не сохраняет эти нестандартные параметры.
NoSubMWI
Клиент поддерживает набор Событий "Сводка о Сообщениях" (в нём реализована MWI - Индикация Ожидающих Сообщений), но он не умеет отправлять запросы SUBSCRIBE для активации этого сервиса.
Сервер будет подписывать такого клиента при регистрации.
ActiveHold
Клиент испытывает проблемы с переключением режима медиапотока с обычного двунаправленного (sendRecv) в любой другой или обратно.
Сервер оставит режим медиапотока двунаправленным (sendRecv), даже если PBX приложение или удалённый коммутируемый клиент объявили режим медиапотока выключенным (inactive) или однонаправленным (sendOnly, recvOnly).
TCPPing
Когда такой клиент присылает запрос REGISTER через соединение по протоколу TCP из-за NAT файрвола, сервер не будет посылать PING пакеты такому клиенту. Вместо этого, для TCP соединения включается опция "Keep Alive".
Обратите внимание: большинство ОС используют довольно большие значения для тайм-аутов при использовании опции "Keep Alive". Если вы планируете использовать эту компенсацию, то рекомендуется сократить значение тайм-аута в настройках ОС до 1-3 минут.
badUpdate
Клиент объявляет о поддержке метода SIP UPDATE, но ошибается при обработке запросов SIP UPDATE.

На этом Веб Сайте находится периодически обновляемый документ, в которым перечислены протестированные SIP клиенты, обнаруженные проблемы и известные способы их решения.


Маршрутизация

SIP модуль сразу же (при первом вызове Маршрутизатора) принимает все адреса сигналов с IP адресами вместо доменов, то есть с именами домена типа [xx.yy.zz.tt]. Пожалуйста, обратите внимание, что Маршрутизатор добавляет квадратные скобки к IP тех адресов имён домена, которые не имеют их, а также изменяет IP адреса локальных доменов на их имена. Маршрутизатор выполняет эти операции до вызова модулей.

В финальном вызове, SIP модуль принимает сигналы для любого домена, если в имени этого домена содержится как минимум один символ точка (.). Если выбрана опция Посылать через, то все эти адреса перенаправляются на заданный в этой опции домен.

До принятия адреса SIP модуль проверяет, не содержит ли адрес вместо символа @ один или несколько символов %. В этом случае меняется самый правый символ % изменяется на символ @.

Если имя домена назначения содержит суффикс ._udp, ._tcp или ._tls, то используется соответствующий транспортный протокол, а сам суффикс удаляется из имени этого домена.


Мониторинг Активности SIP

В разделе Наблюдение через Веб Интерфейс Администратора можно наблюдать за активностью SIP модуля. Страница Наблюдения за SIP модулем имеет две части: страница, отвечающая за приём (Сервер) и страница, отвечающая за передачу (Клиент).

На странице SIP Приём отображаются активные транзакции SIP Сервера:

Показано 2 из 2

ID Состояние Соб. Фаза От кого Кому  
38984waiting (15s)0completedudp[10.10.0.226:59645]SIGNAL-40726OPTIONS sip:ns.communigate.ru
38994waiting (7s) 0completedtcp[10.0.14.193:24777]SIGNAL-40734MESSAGE sips:user@communigate.ru

На странице SIP Передача отображаются активные транзакции SIP Клиента:

Показано 2 из 2

ID Состояние Соб. Фаза От кого Кому  
35184waiting (2m)0provisionedSIGNAL-40726udp[10.0.1.34:5060]INVITE sip:user@10.0.1.34:5060
35188waiting (7s)0request sentSIGNAL-40732udp[10.0.1.34:5060]MESSAGE sips:user@communigate.ru

Руководство CommuniGate Pro. Copyright © 2020-2023, АО СталкерСофт