CommuniGate Pro
Версия 5.1
Сигналы
 
 
 
SIP

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 модуль CommuniGate Pro поддерживает коммуникации через UDP и TCP, а также безопасные (TLS) коммуникации через TCP протокол.

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

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


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

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

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

Транспортный Уровень

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

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

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

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

Протокол

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

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

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

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


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

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

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

Транспортный Уровень

На панели Транспортный Уровень вы можете настроить опции уровня сети для передачи SIP пакетов:
Транспортный Уровень
Уровень Журнала: Ограничение размера Запросов для UDP: LAN:
WAN:
Уровень Журнала
Используйте эту настройку для того, что бы указать какую информацию о SIP пакетах и транспортном уровне SIP модуль должен сохранять в Журнале работы Сервера.
Эта то же настройка, что и отображаемая на странице настроек SIP Сервера Уровень Журнала Транспортного Уровня.
Ограничение размера Запроса
Используйте эту опцию для того, что бы указать максимальный размер UDP пакета, который может быть отправлен внутри вашей локальной сети и наружу. Если SIP модулю необходимо доставить пакет и протокол не указан явно, то SIP модуль, если размер пакета не превышает заданное ограничение, использует UDP протокол. TCP протокол используется в последнюю очередь.

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

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

Протокол

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

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

Посылать через
Включите эту опцию если вы хотите ретранслировать все исходящие пакеты через какой-либо внешний SIP сервер. Обратите внимание, что эта настройка не используется в случае адресов, которые были явным образом перенаправлены на внешние хосты с использованием суффикса .via или других методов маршрутизации.
Таймер B
Эта опция управляет значением "Таймер B" (согласно RFC3261). Она контролирует максимальное время, которое транзакция типа INVITE будет ожидать первого отклика от вызываемой стороны.
Хотя согласно стандарта она должна иметь значение 32 секунды, мы настоятельно рекомендуем понизить её до 5-10 секунд: если удалённый участник никак не отвечает в течении этого времени (не посылая даже отклик типа 100-Trying) то, вероятнее всего, он не функционирует и нет необходимости выжидать все 32 секунды для уведомления инициатора звонка.
Понижение этого значения позволяет транзакции SIP клиента попробовать использовать другую SRV запись (если она есть): если же этот таймер имеет значение 32 секунды, то вызывающий абонент, вероятнее всего, прекратит соединение до попытки использования следующей SRV записи.

Внешние Шлюзы

Возможно, вы захотите использовать Сервер CommuniGate Pro с внешними SIP Шлюзами. Внешние Шлюзы могут использоваться для ретранслирования звонков в телефонную сеть общего пользования (ТфОП) и для ретранслирования звонков из ТфОП на ваш Сервер. Эти услуги обычно предоставляются за плату и осуществление коммуникации с Внешними Шлюзами может требовать проведения аутентификации.
Вы также можете использовать Внешние Шлюзы если вам необходимо осуществлять коммуникацию с удалёнными SIP сетями, используя аутентификацию.

Обратите внимание: если вы используете собственный внутрифирменный шлюз в ТфОП, то обычно он настраивается на приём всех звонков из вашей локальной сети (так что ваш Сервер не должен использовать Аутентификацию для ретранслирования Сигналов на этот шлюз) и этот шлюз может быть настроен на направление входящих соединений на какого-либо Пользователя Сервера CommuniGate Pro (так что вам не надо регистрировать ваш Сервер на этом шлюзе). В таком случае вы можете задействовать шлюз в ТфОП не использую возможностей Внешних Шлюзов.

На панели Шлюзы вы можете задать настройки Шлюза:
Имя Шлюза: Звонки: Аутентификация:
Домен: Через: Проксировать:
Имя пользователя: Заменять: From To
AUTH-Имя: Поле 'Contact':
Пароль: Регистрироваться раз в:
Имя Шлюза
Используйте эту настройку для присвоения внутреннего имени этому Внешнему Шлюзу. Вы сможете использовать это имя в записях Маршрутизатора для переадресации определённых звонков на этот Шлюз. Присвойте уникальное алфавитно-цифровое имя каждому используемому вами Внешнему Шлюзу.
Домен
Используйте эту настройку для указания имени домена Внешнего Шлюза.
Через
Используйте эту настройку если запросы для этого Внешнего Шлюза не должны отправляться на сетевые адреса, связанные с именем Домена Шлюза (например, запросы, посылаемые в этот Шлюз, должны быть отправлены через какой-либо прокси).
Эта настройка позволяет вам указать альтернативное имя домена (DNS), IP адрес или полный SIP URI.
Имя пользователя
Используйте эту настройку для указания имени, которое будет использоваться для регистрации и (дополнительно) для звонков через этот Внешний Шлюз.
Если значение не содержит символа @, то к нему будет добавлено значение из настройки Домен для формирования полного имени пользователя.
Пароль
Используйте эту настройку для указания пароля, используемого при работе с Внешним Шлюзом.
AUTH-Имя
Указывайте эту настройку только имя аутентификации Внешнего Шлюзе не совпадает с Именем Пользователя.
Регистрироваться раз в
Используйте эту настройку для указания частоты отправления SIP Модулем Запросов REGISTER на этот Внешний Шлюз.
Поле 'Contact'
Используйте эту настройку для указания адреса, зарегистрированного на Внешнем Шлюзе. Когда шлюз получает входящий звонок, он отправляет Сигнал с Запросом звонка на указанный адрес.
Этот адрес Contact обычно является Пользователем на вашем Сервере, от имени которого запущено Приложение Реального Времени "авто-секретарь", отвечающее на эти звонки и направляющее их на других Пользователей вашего Сервера.
Звонки: Аутентификация
Если эта опция не выключена, то ко всем запросам звонка INVITE, отправляемых на этот Внешний Шлюз, добавляется поле заголовка аутентификации (Authorization или Proxy-Authorization). Модуль использует тот же "код" ("nonce") для проведения аутентификации, что фигурировал в последнем запросе REGISTER, отправленном Шлюзу, так что убедитесь, что период времени, заданный в опции "Регистрироваться раз в" короче "времени жизни" "кода" для этого Внешнего Шлюза.
Звонки: Заменять From
Когда выбрана эта опция, то адреса From (имя и адрес вызывающего абонента) в запросах звонка (INVITE) заменяется на Имя Пользователя (маскировка вызывающего абонента).
Звонки: Заменять To
Когда выбрана эта опция, то адреса To (имя и адрес вызываемого абонента) в запросах звонка (INVITE) заменяется на URI Сигнала запроса (после удаления номера порта URI и параметров URI).

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

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

Для того, что бы отправлять запросы с Сигналами на Внешний Шлюз, вам нужно задать записи в Маршрутизаторе.

Пример 1.
Все звонки на 1number@main_domain должны перенаправляться на Шлюз Provider1 как запросы на вызов number
Все звонки на +1number@main_domain должны перенаправляться на Шлюз Provider1 как запросы на вызов number
все звонки на +number@main_domain (где number не начинается с 1) должны перенаправляться на Шлюз IntlProvider как запросы на вызов 011number
все звонки на 011number@main_domain должны перенаправляться на Шлюз IntlProvider как запросы на вызов 011number
все звонки на 9number@main_domain должны перенаправляться на Шлюз LocProvider1 как запросы на вызов 415number

Используйте следующие записи Маршрутизаторе:

NoRelay:Signal:<1*>   = *@Provider1.sipgw
NoRelay:Signal:<+1*>  = *@Provider1.sipgw
NoRelay:Signal:<+*>   = 011*@IntlProvider.sipgw
NoRelay:Signal:<011*> = 011*@IntlProvider.sipgw
NoRelay:Signal:<9*>   = 415*@LocProvider.sipgw

Обратите внимание: вы должны использовать префикс NoRelay: для того что бы избежать превращения вашего Сервера в открытый релей, который позволяет любым внешним пользователям ретранслировать звонки на Внешние Шлюзы, используя полномочия вашего Сервера.


Поддержка Продуктов 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. Нажмите на ссылку Компенсации. Появится таблица Компенсации:

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

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

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

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

Когда 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 для активации этого сервиса.
Сервер будет подписывать такого клиента при регистрации.

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


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

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

SIP модуль сразу же принимает все адреса сигналов с именами доменов, оканчивающимися на суффикс .sipgw. Остальные имена доменов должны указывать имя Внешнего Шлюза и тогда Сигналы будут направляться на этот Внешний Шлюз.

В финальном вызове, 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.com
38994waiting (7s) 0completedtcp[10.0.14.193:24777]SIGNAL-40734MESSAGE sips:user@communigate.com

На странице 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.com

Руководство CommuniGate® Pro. Copyright © 1998-2007, Stalker Software, Inc.