В данном разделе приводится описание команд, которые используются для настройки параметров кластера протокол-адаптера SIP, в таблице 1 приведено их описание.

Таблица 1 — Описание параметров кластера протокол-адаптера SIP

Название параметраЗначение по умолчаниюОписание
alternative_serverundefinedВремя перенаправления подписки в случае возникновения 302 ошибки по SIP. Если данная опция не указана, то 302 ошибка будет подменяться на 500. Для корректной работы опции, следует задать IP адрес.
critical_socket_workers_queue_limit175Порог очереди запросов. При достижении порога SSW будет отправлять ошибку 503 с Retry-After для каждого SIP-запроса.
dns_resolve_check_interval600Интервал периодического опроса DNS для оптимизации работы с именами хостов, в секундах.
dns_resolve_default_ttl3600TTL-адресов хостов, разрешенных DNS, в секундах.
expires_alternative_server10Время, в течении которого будет считаться alternative_server основным сервером, на который будут слаться подписки.
release_ind_ackfalseВключает/выключает требование подтверждения ядром доставки сообщения ReleaseInd:
- false — выключить;
- true — включить.
release_ind_ack_timeout2000 мсТайм-аут подтверждения ядром доставки сообщения ReleaseInd.
send_services_infounavailable

Посылается INFO на съемник СОРМ, если при звонке активируются данные услуги: transfer; hold; hole; three_way; pickup. Можно включить, только если имеется дополнительная опция лицензии [system, sorm, extractor].

setup_ind_ack_timeout5000 мсТайм-аут подтверждения ядром доставки сообщения SetupInd.
stat_info_to_log_interval0Периодичность вывода информации в log-сообщения об использовании системных ресурсов, в секундах.
tcp_connect_timeout20 мсТайм-аут TCP-соединение, мс. (Может принимать значения от 10 до 1000 мс).
tcp_connection_idle_elph_timeout1800 секTimeout of idle tcp connection для User-Agent = Elph. (90..3600 сек. | infinity). Выставляет время бездействия в секундах, для User-Agent = Elph, после которого tcp-соединение с клиентом отключается, если выставить infinity tcp-соединение будет установлено до тех пор, пока не разорвется со стороны клиента.
tcp_connection_idle_first_timeout5 сек
Таймер на первое TCP-соединение (значение указывается от 1 до 10 секунд). Если за указанное время не пришел правильно сформированный SIP-запрос для данного TCP-соединения, оно закрывается.
tcp_connection_idle_timeoutinfinity
Timeout of idle tcp connection: (100..100000 сек. | infinity ). Выставляет время бездействия в секундах, после которого tcp-соединение с клиентом отключается, если выставить infinity tcp-соединение будет установлено до тех пор, пока не разорвется со стороны клиента.
tcp_keepalivefalseВключает/выключает keepalive при создании tcp-сокета:
- false — выключить;
- true — включить.
tcp_keepalive_count9Количество повторных запросов ACK TCP Keep-Alive packet.
tcp_keepalive_idle7200 сПорог срабатывания события — «Канал между клиентом и сервером пассивен».
tcp_keepalive_interval75 сИнтервал времени между повторными запросами ACK TCP Keep-Alivepacket. 
Не рекомендуется без необходимости изменять параметры, описанные в таблице 1.

Использование параметров dns_resolve_check_interval, dns_resolve_default_ttl, stat_info_to_log_interval в ECSS-10

При получении инициирующего запроса, такого как INVITE, REGISTER, SUBSCRIBER, SIP-адаптер проверяет RURI на соответствие своему хосту.
Доменное имя хоста в RURI может быть не прописано явным образом. Для проверки соответствия имени хоста IP-адресу протокол-адаптера SIP выполняется DNS-запрос. Процедура обращения к DNS-серверу вносит задержки, что в свою очередь ведет к задержке ответа, повторной отправке запросов и дополнительной нагрузки на сеть и хосты.
Для оптимизации работы на SIP-адаптере реализована локальная таблица соответствия адресов. В таблицу заносятся результаты запросов IP-адресов по доменным именам, прописанным на адаптере, и доменных имен по IP-адресам. Также вносятся результаты по адресам из входящих SIP-запросов.

Алгоритм работы:

Если при получении запроса адрес в RURI не соответствует списку разрешенных, то выполняется поиск соответствия в локальной таблице. См. /cluster/adapter/<PA_SIP>/sip/ — команды управления кластером протокола адаптера SIP

Если соответствие не установлено, то выполняется стандартный DNS-запрос.
Если получен полноценный ответ с указанием TTL, то он сохраняется в локальную таблицу. Если нет, то используется настроенный на SIP-адаптере TTL (dns_resolve_default_ttl).
При последующих обращениях по данному адресу время последнего запроса обновляется.
Периодически таблица проверятся с интервалом "dns_resolve_check_interval". При этом сначала определяется время с последнего обращения к записи. Если период времени превысил TTL, то запись из таблицы удаляется. Если нет, выполняется новый DNS-запрос (в отдельном процессе, на рабочие запросы не влияет).
При смене периода перепроверки выполняется внеочередной DNS-запрос, от которого начинается новый отсчет времени.

Использование параметров tcp_keepalive, tcp_keepalive_count, tcp_keepalive_idle, tcp_keepalive_interval в ECSS-10

TCP keeplive используется для определения и закрытия устаревших TCP-соединений. Keepalive включается при создании TCP-сокета на уровне приложения, но настраивается уже на уровне системы. После того как сработал tcp_keepalive_idle (значение по умолчанию 7200 секунд) в TCP отправляется ACK TCP Keep-Alive packet, на что получивший его должен ответить TCP Keep-Alvie ACK. Если же ответа не было, то происходит повторная передача данного пакета tcp_keepalive_count, до 9 (значение по умолчанию) раз через каждые tcp_keepalive_interval (значение по умолчанию 75 секунд) секунд. Если и после этого ответа не поступило, то соединение закрывается.

Более подробный механизм действия TCP Keepalive:

  1. Клиент открывает TCP-соединение либо сервер принимает TCP-соединение.
  2. Если в соединении ничего не происходит в течение tcp_keepalive_idle секунд, то отправляется одиночный пустой ACK-пакет.
  3. Поступил ли нам ответ от принимающего пустой ACK пакет?
    1. Нет
      • Ждать tcp_keepalive_interval секунд и отправляем еще один пустой ACK-пакет;
      • Повторить до тех пор, пока количество отправленных ACK-пакетов не станет равным tcp_keepalive_count раз;
      • Если в таком случае все еще никто не отвечает, то отправить RST и терминировать транзакцию.
    2. Да
      • Возвратиться к шагу 2.

Этот процесс включен по умолчанию в большинстве операционных систем, и поэтому неработающие TCP-соединения закрываются, если другая сторона не отвечает в течение 2 часов 11 минут (7200 секунд + 75 * 9 секунд).


set

Настройка свойств кластера протокол-адаптера SIP.

Путь команды:

/cluster/adapter/<CLUSTER>/sip/properties/set

Синтаксис:

set <FIELD> <VALUE>

Параметры:

<CLUSTER> — имя кластера протокол-адаптера SIP;
<FIELD> — имя параметра, значение которого необходимо изменить. Описание свойств приведено в таблице 1;
<VALUE> — новое значение параметра, возможные значения приведены в таблице 1.

Пример:

/cluster/adapter/sip1/sip/properties/set dns_resolve_check_interval 900
Property "dns_resolve_check_interval" successfully changed from: 
600
   to
900.

clean

Командой устанавливается значение по умолчанию для заданного параметра кластера протокол-адаптера SIP.

Путь команды:

/cluster/adapter/<CLUSTER>/sip/properties/clean

Синтаксис:

clean [<FIELD>][--force]

Параметры:

<CLUSTER> — имя кластера протокол адаптера SIP;
<FIELD> — свойство, для которого устанавливается значение по умолчанию. Опциональный параметр. Если не указывать данный параметр, то значения по умолчанию будут восстановлены для всех свойств кластера протокол адаптера SIP;

force — запуск команды без подтверждения.

Пример:

/cluster/adapter/sip1/sip/properties/clean dns_resolve_check_interval 
Property "dns_resolve_check_interval" values successfully restored

info

Команда просмотра настроек свойств кластера протокол адаптера SIP.

Путь команды:

/cluster/adapter/<CLUSTER>/sip/properties/info

Синтаксис:

info [<FIELD>]

Параметры:

<CLUSTER> — имя кластера протокол адаптера SIP;
<FIELD> — имя параметра, опциональный параметр. Если параметр не указывать, будет показана информация по всем параметрам кластера протокол адаптера SIP.

Пример:

/cluster/adapter/sip1/sip/properties/info 
┌───────────────────────────────────┬───────────┐
│             Property              │   Value   │
├───────────────────────────────────┼───────────┤
│alternative_server                 │undefined  │
│critical_socket_workers_queue_limit│175        │
│dns_resolve_check_interval         │600        │
│dns_resolve_default_ttl            │3600       │
│expires_alternative_server         │10         │
│release_ind_ack                    │false      │
│release_ind_ack_timeout            │2000       │
│send_services_info                 │unavailable│
│setup_ind_ack_timeout              │5000       │
│socket_queue_limit                 │500        │
│socket_workers_queue_limit         │250        │
│stat_info_to_log_interval          │0          │
│tcp_connect_timeout                │20         │
│tcp_connection_idle_timeout        │infinity   │
│tcp_keepalive                      │false      │
│tcp_keepalive_count                │9          │
│tcp_keepalive_idle                 │7200       │
│tcp_keepalive_interval             │75         │
└───────────────────────────────────┴───────────┘