В разделе приведены описания команд управления транками, работающими по протоколу SIP.

Примечание. В командах предусмотрен флаг --force. Его применение позволяет выполнить команду без дополнительного подтверждения, что бывает удобно, например, в скриптах автоматизации. Если флаг "--force" не указывать, то система выведет сообщение, например:

[block] Trunk eltex will be blocked
Continue: yes/no ?> 

Если ввести команду "yes", то команда будет выполнена . Если ввести команду "no", то нет.

apply

Команда используется для применения к транку профиля настроек.

Примечание. Параметры профиля применяются к транку разово. Если в профиле были изменения, то по необходимости нужно снова выполнить его применение к транку.

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

/domain/<DOMAIN>/trunk/sip/apply

Синтаксис:

apply <GROUP> <IFACE> profile <PROFILE>

Параметры:

<GROUP> - название группы интерфейсов;
<TRUNK_INTERFACE> - логическое имя транка;
<PROFILE> - имя профиля настроек транков. Для применения доступны профили, которые соответствует локализованным спецификациям ISUP:

  • ISUP.ANSI;
  • ISUP.ETSI;
  • ISUP.RUS;
  • ISUP.TELCORDIA.

Профиль стандарта ISUP отличается от пользовательских профилей возможностью настраивать только определенные стандартом параметры.

Пример:

admin@mycelium1@ecss1:/$ domain/biysk.local/trunk/sip/apply smg.gr smg-4 profile ISUP.RUS              
Executed on the sip1@ecss1
profile 'ISUP.RUS' is applyed to trunk 'smg-4'.

[exec at: 24.02.2021 09:01:08, exec time: 34ms, nodes: sip1@ecss1 v.3.14.7.614]

block

Команда для блокировки определенного транка, всех транков одной группы.
Соответствующий интерфейс переводится в неактивное состояние.

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

/domain/<DOMAIN>/trunk/sip/block

Синтаксис:

block <GROUP> <TRUNK_INTERFACE> [--force]

Параметры:

<GROUP> - имя группы, интерфейс/интерфейсы которой нужно заблокировать;
<TRUNK_INTERFACE> - имя блокируемого интерфейса, при указании символа "*" будут заблокированы все транки заданной группы;
[--force] - опционально, при указании данного флага блокировка транка/транков будет производиться без дополнительного вопроса.

Пример:

/domain/test_domain/trunk/sip/block ssw.gr ems2
[block] Trunk ems2 will be blocked
continue: yes/no ?> yes
Executed on the sip1@ecss2
┌──────┬────┐
│ ems2 │ ok │
└──────┴────┘

call-list

Команда просмотра списка активных вызовов через транк.

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

/domain/<DOMAIN>/trunk/sip/call-list

Синтаксис:

сall-list [GROUP] [INTERFACE] [OPTIONS]

Параметры:

<GROUP> - название группы интерфейсов. Символ "*" указывается для экспорта всех групп интерфейсов;
<INTERFACE> - логическое имя транка;
OPTIONS:

  • <--complete> - установка данного флага позволяет отобразить все интерфейсы, на которые были приняты вызовы;
  • <--more T [sec|min|hour]> - установка данного флага позволяет отобразить все вызовы, длительность которых более установленного времени;
  • <--less T [sec|min|hour]> - установка данного флага позволяет отобразить все вызовы, длительность которых менее установленного времени.

Пример:

Executed on the sip1@ecss2
┌───────────────┬────────────────────────────────┬───────────┬──────────────────────────────────────────┬──────────────────────────────────────────────┐
│ Interface URI │           Direction            │   State   │                   Time                   │               Additional info                │
├───────────────┼────────────────────────────────┼───────────┼──────────────────────────────────────────┼──────────────────────────────────────────────┤
│ ems1          │ sip[245000] <- ssw[3854240466] │ outgoing  │ Start: Wed, 24 Feb 2021 09:03:53         │ Node: sip1@ecss2, <0.5153.0>                 │
│               │                                │           │ Last activity: Wed, 24 Feb 2021 09:03:58 │ CallRef: 575129842                           │
│               │                                │           │                                          │ Call-ID: "064e204899e1090f"                  │
│               │                                │           │                                          │ SessionID: <<"064e204899e1090f">>            │
│               │                                │           │                                          │ Session handler: {amqp_io_5,<0.5153.0>}      │
│ smg-4         │ sip[3854416977] -> ssw[240244] │ connected │ Start: Wed, 24 Feb 2021 09:03:41         │ Node: sip1@ecss1, <70694.14176.0>            │
│               │                                │           │ Last activity: Wed, 24 Feb 2021 09:03:58 │ CallRef: 524796025                           │
│               │                                │           │                                          │ Call-ID: "1614-132254-752677"                │
│               │                                │           │                                          │ SessionID: <<"064e2047d7c7d650">>            │
│               │                                │           │                                          │ Session handler: {amqp_io_7,<70694.14176.0>} │
└───────────────┴────────────────────────────────┴───────────┴──────────────────────────────────────────┴──────────────────────────────────────────────┘
┌────────────┐
│ 2 sessions │
└────────────┘

check

Команда проверки доступности направления. Выполняется посредством отправки запроса OPTIONS.
Тест может выполняться для определенного транка или для всех транков группы либо кластера.

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

/domain/<DOMAIN>/trunk/sip/check

Синтаксис:

check <GROUP> [<TRUNK_INTERFACE>] [timerF = <TIMEOUT>]

Параметры:

<GROUP> - название существующей группы интерфейсов. Символ "*" используется для указания всех групп транков;
<TRUNK_INTERFACE> - логическое имя транка. Символ "*" используется для указания всех интерфейсов группы.

Если ответ не получен (направление на данный транк не доступно), то выводится результат "timeout".

Примечание.
Если удаленный клиент не поддерживает запросы OPTIONS, и при этом не отвечает ответом 405, то результат будет таким же, хотя реально направление доступно для вызовов.
В таком случае периодический контроль доступности должен быть отключен (set options_control 0).

<TIMEOUT> - тайм-аут ожидания ответа, в пределах которого отправляются повторные запросы, если удаленная сторона не отвечает. Задается в миллисекундах. Для выключения контроля установите значение тайм-аута - 0.

Пример:

options
/domain/test_domain/trunk/sip/check sip sip options timerF = 5000         
Executed on the sip1@ecss1
Intermediate (incomplete) result:
Process to <<"sip">> check acros node sip1@ecss1 (my node is sip1@ecss1)
...
Executed on the sip1@ecss1
Intermediate (incomplete) result:
Process to <<"sip">> check is started: {<0.10445.4>,<0.10445.4>}
...
Executed on the sip1@ecss1
Intermediate (incomplete) result:
Try to send OPTIONS to <<"sip">> (timerF = 5000)
...
Executed on the sip1@ecss1
┌───────┬───────┬────────────┬────────────────────────────────────────────────────────────────────────────────┐
│ Group │ Trunk │ Accessible │                                   Check info                                   │
├───────┼───────┼────────────┼────────────────────────────────────────────────────────────────────────────────┤
│ sip   │ sip   │ true       │ OPTIONS to <sip:10.0.20.31>: 200 OK, cseq: 865280 OPTIONS. Request by node: sip│
│       │       │            │1@ecss1                                                                         │
└───────┴───────┴────────────┴────────────────────────────────────────────────────────────────────────────────┘
notify
/domain/test_domain/trunk/sip/check sip sip notify  timerF = 5000
Executed on the sip1@ecss1
Intermediate (incomplete) result:
Process to <<"sip">> check acros node sip1@ecss1 (my node is sip1@ecss1)
...
Executed on the sip1@ecss1
Intermediate (incomplete) result:
Process to <<"sip">> check is started: {<0.10455.4>,<0.10455.4>}
...
Executed on the sip1@ecss1
Intermediate (incomplete) result:
Try to send NOTIFY to <<"sip">> (timerF = 5000)
...
Executed on the sip1@ecss1
┌───────┬───────┬────────────┬────────────────────────────────────────────────────────────────────────────────┐
│ Group │ Trunk │ Accessible │                                   Check info                                   │
├───────┼───────┼────────────┼────────────────────────────────────────────────────────────────────────────────┤
│ sip   │ sip   │ true       │ NOTIFY to <sip:10.0.20.31>: 200 OK, cseq: 515942 NOTIFY. Request by node: sip1@│
│       │       │            │ecss1                                                                           │
└───────┴───────┴────────────┴────────────────────────────────────────────────────────────────────────────────┘

clean

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

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

/domain/<DOMAIN>/trunk/sip/clean

Синтаксис:

clean --profile <PROFILE> <PARAMETER> [--force]

Параметры:

<PROFILE> - имя профиля;
<PARAMETER> - параметр, для которого устанавливается значение по умолчанию.

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

Пример:

/domain/test_domain/trunk/sip/clean ssw.gr ems3 req100rel 
[clean] Set parameters to default value
continue: yes/no ?> yes
clean to 1 interfaces ...
[**********************************************************************] 5ms      
Executed on the sip1@ecss2
complete

declare

Команда декларации транка SIP.
Декларация нового транка возможна только в существующем контексте маршрутизации.
Может быть выбрана существующая группа или задекларирована новая.
При декларации выполняется проверка на существование имени интерфейса (одинаковые имена запрещены, о чем будет сразу выдано предупреждение "trunk already exists") и связки IP:Порт:Слушающий_порт (в случае совпадения с существующим именем будет выдано предупреждение, декларация может быть выполнена, а в дальнейшем параметры могут быть изменены).
При успешной операции выполняется проверка доступности заданного направления посредством запроса OPTIONS (см. команду check).

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

/domain/<DOMAIN>/trunk/sip/declare

Синтаксис:

declare <ROUTING_CONTEXT> <GROUP> <TRUNK_INTERFACE> <IP_SET>[--registration | <DEST_HOST> <DEST_PORT> <MODE> <LISTEN_PORT>]

Параметры:

<ROUTING_CONTEXT> - название существующего контекста маршрутизации;
<GROUP> - название группы интерфейсов (может быть задана существующая или новая группа);
<TRUNK_INTERFACE> - имя системного интерфейса, описывающего данное направление. Имя интерфейса является внутрисистемным идентификатором, участвующем в маршрутизации, отображении статистики и другое;
<IP_SET> - набор IP-адресов;
--registration - декларация динамического транка (с регистрацией);

Примечание:
При декларации динамического транка операторская регистрация должна выполнятся для пользователя <TRUNK_INTERFACE>@<GROUP>.
Параметры <DEST_HOST>, <DEST_PORT>, <MODE>, <LISTEN_PORT> не задаются.
Режим для динамических транков устанавливается sip-proxy, регистрация для транков с инкапсуляцией ISUP использоваться не должна.

<DEST_HOST> - хост, назначаемый для транка (IP-адрес или доменное имя);
<DEST_PORT> - порт, назначаемый для транка;
<MODE> - режим инкапсуляции ISUP:

  • sip-proxy - направление работает только по протоколу SIP (RFC 3261);
  • sip-t - направление работает по SIP с инкапсуляцией ISUP по протоколу SIP-T (RFC 3372);
  • sip-i - направление работает по SIP с инкапсуляцией ISUP по протоколу SIP-I (Q.1912-5);
  • sip-q - направление работает по SIP с инкапсуляцией QSIG по протоколу SIP-Q(Q.931).

Примечание.

Работа в режимах sip-t, sip-i в основном отличается при кодировании/декодировании инкапсулированного ISUP и при маппинге статусов ответов о завершении. В дальнейшем режим может быть изменен.

<LISTEN_PORT> - слушающий порт. На адаптере может быть открыто несколько слушающих портов.
Используя слушающие порты, можно детектировать запросы с разных транков одного удаленного хоста, которые имеют одинаковые IP-адрес и номер порта.

Пример:

/domain/test_domain/trunk/sip/declare default_routing sip sip_trunk_test test_set static 10.0.20.32 5060 sip-i 5060 --options_check 
Executed on the sip1@ecss1
Intermediate (incomplete) result:
Process to <<"sip_trunk_test">> check is started: {<0.11445.4>,<0.11445.4>}
...
Executed on the sip1@ecss1
Intermediate (incomplete) result:
Try to send OPTIONS to <<"sip_trunk_test">> (timerF = 5000)
...
Executed on the sip1@ecss1
Accessible: OPTIONS to <sip:10.0.20.32>: 200 OK, cseq: 305877 OPTIONS. Request by node: sip1@ecss1

info

Команда для просмотра информации о настройках параметров транка и профилей транка.
Дополнительное описание параметров интерфейсов (транков) приведено в Приложении Б. Набор параметров интерфейса SIP.

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

/domain/<DOMAIN>/trunk/sip/info

Синтаксис:

info <GROUP> [<TRUNK_INTERFACE>] [--profile <PROFILE>]

Параметры:

<GROUP> - название существующей группы интерфейсов, символ "*" используется для указания всех групп транков;
<TRUNK_INTERFACE> - логическое имя транка, символ "*" используется для указания всех интерфейсов группы.
Для просмотра свойств группы имя интерфейса транка (символ "*") не указывается.
--profile - флаг используется для просмотра информации о конфигурации профилей транка;
<PROFILE> - имя профиля, символ "*" используется для указания всех профилей транков.

Если в профиле безопасности (/system/security/profile/) параметр show_password_at_cli = off, то в выводе пароль скрывается, и вместо него показываются ********.  В режиме on_request пароль показывается автоматически


Активность транка (параметр Is Active) определяется по его регистрации (успешной или не успешной) и не зависит от блокировки транка.

При блокировке транка Is Accessible становится false и запросы register/options/notify на него отправляться не будут.

Пример:

Свойства определенного транка:

/domain/test_domain/trunk/sip/info sip domain_b     
Executed on the sip1@ecss1
┌───────┬──────────┬───────────┬────────────┬───────────────┬────────────┬───────────────────────────────────────────────────────────────────────┐
│ Group │   Uri    │ Is active │ Is blocked │ Type of trunk │ Is dynamic │                              Parameters                               │
├───────┼──────────┼───────────┼────────────┼───────────────┼────────────┼───────────────────────────────────────────────────────────────────────┤
│ sip   │ domain_b │ true      │ false      │ static        │ false      │  remote-end-point               = 10.0.20.31:5061                     │
│       │          │           │            │               │            │  local-end-point                = test_set:5062                       │
│       │          │           │            │               │            │  mode                           = sip-proxy                           │
│       │          │           │            │               │            │  connect time                   = 19.02.2026 10:38:05                 │
│       │          │           │            │               │            │  uptime                         = 6h 8m                               │
│       │          │           │            │               │            │  disconnections number          = 0                                   │
│       │          │           │            │               │            │  - - - - - - - - - - - - - -    = - - - - - - - - - - - - - -         │
│       │          │           │            │               │            │  access_group                   = all                                 │
│       │          │           │            │               │            │  alarm_enable                   = false                               │
│       │          │           │            │               │            │  category_to_sip                = default                             │
│       │          │           │            │               │            │  cdpn-transformation            = none                                │
│       │          │           │            │               │            │  cgpn_to_displayname            = false                               │
│       │          │           │            │               │            │  channel-contact-map            = []                                  │
│       │          │           │            │               │            │  content_encoding               = none                                │
│       │          │           │            │               │            │  disable-remote-port-control    = false                               │
│       │          │           │            │               │            │  display-name-encoding          = default                             │
│       │          │           │            │               │            │  dtmf-duration                  = 100                                 │
│       │          │           │            │               │            │  dtmf-relay                     = false                               │
│       │          │           │            │               │            │  external_id                    = 75067749                            │
│       │          │           │            │               │            │  external_uuid                  = undefined                           │
│       │          │           │            │               │            │  external_vsn                   = undefined                           │
│       │          │           │            │               │            │  history-info                   = false                               │
│       │          │           │            │               │            │  inc-authentication             = none                                │
│       │          │           │            │               │            │  inc-authentication_type        = user                                │
│       │          │           │            │               │            │  inc-login                      = none                                │
│       │          │           │            │               │            │  inc-password                   = none                                │
│       │          │           │            │               │            │  invite-transaction-timeout     = 32000                               │
│       │          │           │            │               │            │  keep_alive_control             = disable (options)                   │
│       │          │           │            │               │            │  maddr                          = none                                │
│       │          │           │            │               │            │  my_from                        = test_domain /use number             │
│       │          │           │            │               │            │  original-cdpn-to               = true                                │
│       │          │           │            │               │            │  original_cdpn_uri              = false                               │
│       │          │           │            │               │            │  out-login                      = none                                │
│       │          │           │            │               │            │  out-password                   = none                                │
│       │          │           │            │               │            │  out-registration               = disable                             │
│       │          │           │            │               │            │  referred-by-as-cgpn            = false                               │
│       │          │           │            │               │            │  remote-client                  = default                             │
│       │          │           │            │               │            │  remote-ctr-indication          = rpi                                 │
│       │          │           │            │               │            │  remote-network-type            = local                               │
│       │          │           │            │               │            │  rfc-4028-control               = force                               │
│       │          │           │            │               │            │  routing.context                = default_routing                     │
│       │          │           │            │               │            │  sip-domain                     = 10.0.20.31 (use-address)            │
│       │          │           │            │               │            │  sip-modifications              =                                     │
│       │          │           │            │               │            │  sip-transit                    =                                     │
│       │          │           │            │               │            │  sip_transport                  = udp_prefer                          │
│       │          │           │            │               │            │  symbol_hash_as_is              = false                               │
│       │          │           │            │               │            │  tel-uri-in-diversion           = false                               │
│       │          │           │            │               │            │  transmit-global-call-reference = false                               │
│       │          │           │            │               │            │  trunk (trunk name)             = test_domain.sip.trunk.autoname      │
│       │          │           │            │               │            │  user-name                      = domain_b /default                   │
└───────┴──────────┴───────────┴────────────┴───────────────┴────────────┴───────────────────────────────────────────────────────────────────────┘

Просмотр конфигурации профилей транков:

/domain/test_domain/trunk/sip/info --profile *
Executed on the sip1@ecss2
┌───────────┬───────────────────────────┐
│  Profile  │        Parameters         │
├───────────┼───────────────────────────┤
│ ISUP.RUS  │ isup_r_ccl_send = true    │
│ ISUP.ETSI │ network-node-id = 0       │
│           │ network-id = 0            │
│           │ use-global-callref = true │
│           │ country-code = 250        │
└───────────┴───────────────────────────┘

remove

Команда для удаления определенного транка, всех транков одной группы или профиля транка.

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

/domain/<DOMAIN>/trunk/sip/remove

Синтаксис:

remove <GROUP> <TRUNK_INTERFACE>|--profile <PROFILE> [--force]

Параметры:

<GROUP> - название существующей группы интерфейсов;
<TRUNK_INTERFACE> - имя интерфейса, который нужно удалить. Символ "*" используется для указания всех интерфейсов группы. При удалении всех интерфейсов группы также удаляется сама группа.

<PROFILE> - имя профиля, символ "*" используется для указания всех профилей транков.

  • --profile - флаг используется для удаления профиля транка;
  • --force - опционально, при указании данного флага удаление транка/транков будет производиться без дополнительного вопроса.

Пример:

Удаление транка:

/domain/test_domain/trunk/sip/remove sbc.gr brn.sbc --force
Executed on the sip1@ecss2

set

Данной командой выполняется настройка параметров группы транков.

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

domain/<DOMAIN>/trunk/sip/set

Синтаксис:

set <GROUP> <TRUNK_INTERFACE> <PARAMETER> <VALUE> | --profile <PROFILE>

Параметры:

<GROUP> - название существующей группы интерфейса. Символ "*" используется для указания всех групп транков;
<TRUNK_INTERFACE> - имя интерфейса. Символ "*" используется для указания всех интерфейсов группы;
<PARAMETER> - название параметра, список параметров приведен в Приложении Б. Набор параметров интерфейса SIP.
<VALUE> - значение параметра, список значений параметров приведен в Приложении Б. Набор параметров интерфейса SIP.

--profile - флаг используется для создания/настройки профиля транков;
<PROFILE> - имя профиля.

Пароли проверяются на соответствие требованиям, установленным в профиле безопасности (/system/security/profile/), параметр restrictions.

Примеры:

Установка периода контроля по keep_alive_control:
options
/domain/test_domain/trunk/sip/set sip sip keep_alive_control options 32   
complete
notify
/domain/test_domain/trunk/sip/set sip sip keep_alive_control notify  32
complete

Установка  options_check:

local-end-point
/domain/test_domain/trunk/sip/set sip sip local-end-point test_set 5060 sip1@ecss1 (10.0.20.31) --options_check 
Executed on the sip1@ecss1
Intermediate (incomplete) result:
Process to <<"sip">> check is started: {<0.10759.4>,<0.10759.4>}
...
Executed on the sip1@ecss1
Intermediate (incomplete) result:
Try to send OPTIONS to <<"sip">> (timerF = 5000)
...
Executed on the sip1@ecss1
Intermediate (incomplete) result:
Accessible: OPTIONS to <sip:10.0.20.31>: 200 OK, cseq: 298092 OPTIONS. Request by node: sip1@ecss1
...
complete
remote-end-point
/domain/test_domain/trunk/sip/set sip sip remote-end-point 10.0.20.136 5060 --options_check 
Executed on the sip1@ecss1
Intermediate (incomplete) result:
Process to <<"sip">> check is started: {<0.11256.4>,<0.11256.4>}
...
Executed on the sip1@ecss1
Intermediate (incomplete) result:
Try to send OPTIONS to <<"sip">> (timerF = 5000)
...
Executed on the sip1@ecss1
Intermediate (incomplete) result:
Accessible: OPTIONS to <sip:10.0.20.136>: 200 OK, cseq: 691763 OPTIONS. Request by node: sip1@ecss1
...
complete

Установка контекста маршрутизации:

/domain/test_domain/trunk/sip/set sbc.gr nsk_sbc routing.context ctx_from_local
change context for 1 users ...
[**********************************************************************] 4ms      
complete

unblock

Команда для разблокировки определенного транка, всех транков одной группы.
Соответствующий интерфейс переводится в активное состояние.

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

/domain/<DOMAIN>/trunk/sip/unblock

Синтаксис:

unblock <GROUP> <TRUNK_INTERFACE>[--force]

Параметры:

<GROUP> - имя группы, интерфейс/интерфейсы которой нужно разблокировать;
<TRUNK_INTERFACE> - имя интерфейса, символ "*" используется для указания всех интерфейсов группы;
[--force] - опционально, при указании данного флага разблокировка транка/транков будет производиться без дополнительного вопроса.

Пример:

/domain/test_domain/trunk/sip/unblock ssw.gr * --force
Executed on the sip1@ecss1
┌──────┬────┐
│ bsk1 │ ok │
│ bsk2 │ ok │
│ ems1 │ ok │
│ ems2 │ ok │
└──────┴────┘