/cluster/adapter/<PA_SIP>/sip/properties/ — команды настройки параметров кластера SIP
В данном разделе приводится описание команд, которые используются для настройки параметров кластера протокол-адаптера SIP, в таблице 1 приведено их описание.
Таблица 1 — Описание параметров кластера протокол-адаптера SIP
| Название параметра | Значение по умолчанию | Описание |
|---|---|---|
| alternative_server | undefined | Время перенаправления подписки в случае возникновения 302 ошибки по SIP. Если данная опция не указана, то 302 ошибка будет подменяться на 500. Для корректной работы опции, следует задать IP адрес. |
| critical_socket_workers_queue_limit | 175 | Порог очереди запросов. При достижении порога SSW будет отправлять ошибку 503 с Retry-After для каждого SIP-запроса. |
| dns_resolve_check_interval | 600 | Интервал периодического опроса DNS для оптимизации работы с именами хостов, в секундах. |
| dns_resolve_default_ttl | 3600 | TTL-адресов хостов, разрешенных DNS, в секундах. |
| expires_alternative_server | 10 | Время, в течении которого будет считаться alternative_server основным сервером, на который будут слаться подписки. |
| release_ind_ack | false | Включает/выключает требование подтверждения ядром доставки сообщения ReleaseInd: - false — выключить; - true — включить. |
| release_ind_ack_timeout | 2000 мс | Тайм-аут подтверждения ядром доставки сообщения ReleaseInd. |
| send_services_info | unavailable | Посылается INFO на съемник СОРМ, если при звонке активируются данные услуги: transfer; hold; hole; three_way; pickup. Можно включить, только если имеется дополнительная опция лицензии [system, sorm, extractor]. |
| setup_ind_ack_timeout | 5000 мс | Тайм-аут подтверждения ядром доставки сообщения SetupInd. |
| stat_info_to_log_interval | 0 | Периодичность вывода информации в log-сообщения об использовании системных ресурсов, в секундах. |
| tcp_connect_timeout | 20 мс | Тайм-аут TCP-соединение, мс. (Может принимать значения от 10 до 1000 мс). |
| tcp_connection_idle_elph_timeout | 1800 сек | Timeout of idle tcp connection для User-Agent = Elph. (90..3600 сек. | infinity). Выставляет время бездействия в секундах, для User-Agent = Elph, после которого tcp-соединение с клиентом отключается, если выставить infinity tcp-соединение будет установлено до тех пор, пока не разорвется со стороны клиента. |
| tcp_connection_idle_first_timeout | 5 сек | Таймер на первое TCP-соединение (значение указывается от 1 до 10 секунд). Если за указанное время не пришел правильно сформированный SIP-запрос для данного TCP-соединения, оно закрывается. |
| tcp_connection_idle_timeout | infinity | Timeout of idle tcp connection: (100..100000 сек. | infinity ). Выставляет время бездействия в секундах, после которого tcp-соединение с клиентом отключается, если выставить infinity tcp-соединение будет установлено до тех пор, пока не разорвется со стороны клиента. |
| tcp_keepalive | false | Включает/выключает keepalive при создании tcp-сокета: - false — выключить; - true — включить. |
| tcp_keepalive_count | 9 | Количество повторных запросов ACK TCP Keep-Alive packet. |
| tcp_keepalive_idle | 7200 с | Порог срабатывания события — «Канал между клиентом и сервером пассивен». |
| tcp_keepalive_interval | 75 с | Интервал времени между повторными запросами ACK TCP Keep-Alivepacket. |
Использование параметров 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:
- Клиент открывает TCP-соединение либо сервер принимает TCP-соединение.
- Если в соединении ничего не происходит в течение tcp_keepalive_idle секунд, то отправляется одиночный пустой ACK-пакет.
- Поступил ли нам ответ от принимающего пустой ACK пакет?
- Нет
- Ждать tcp_keepalive_interval секунд и отправляем еще один пустой ACK-пакет;
- Повторить до тех пор, пока количество отправленных ACK-пакетов не станет равным tcp_keepalive_count раз;
- Если в таком случае все еще никто не отвечает, то отправить RST и терминировать транзакцию.
- Да
- Возвратиться к шагу 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 │ └───────────────────────────────────┴───────────┘