...
| Блок кода |
|---|
vesr# commit vesr# confirm |
В приведенной схеме описаны базовые настройки, описание всех команд приведено в разделе Настройка ESBC
Настройка ESBC для SIP-транков
Схема применения:
...
| Примечание |
|---|
Cоздание транков с одинаковым SIP-транспортом и IP:Port разрешено только в случае, если отличается домен. |
В приведенной схеме описаны базовые настройки, описание всех команд приведено в разделе Настройка ESBC
Scroll Pagebreak
Создание/конфигурирование медиаресурсов (media resources)
...
Медиапрофили служат для настройки общих параметров передачи и приёма медиаданных. Медиапрофили используются в user-interface, транках и транк-группах.
Разрешённые типы медиаданных
В медиапрофиле можно настроить разрешённые типы медиаданных для направления. Для выбора доступны 3 типа:
- audio
- image
- video
Если какой-то тип из представленных в SDP выключен в медиапрофиле, то он будет деактивирован.
...
Управление кодеками (codec)
Обработка медиа потоков осуществляется в двух режимах: проксирование и транскодирование. По умолчанию E-SBC работает в режиме проксирования.
При создании медиа-профиля, список кодеков доступных для проксирования добавляется автоматически.
| Блок кода | ||
|---|---|---|
| ||
vesr#vesbc# vesr# configure vesrvesbc(config)# esbc #Создание медиапрофиля NEW_MEDIA_PROFILE: vesrvesbc(config-esbc)# media-profile NEW_ vesbc(config-esbc)# media-profile MEDIA_PROFILE vesrvesbc(config-esbc-media-profile)# #Отключениеdo передачи image и video: vesrcommit vesbc(config-esbc-media-profile)# no media-type imagedo confirm vesrvesbc(config-esbc-media-profile)# nodo sh mediarunning-typeconfig video vesr(config-esbc-esbc media-profile)# vesr(config-esbc-media-profile)# exit vesr(config-esbc)# #Привязать медиапрофиль к user-interface NEW_USER_IFACE: vesr(config-esbc)# user-interface sip NEW_USER_IFACE vesr(config-esbc-user-interface-sip)# media profile NEW_MEDIA_PROFILE vesr(config-esbc-user-interface-sip)# #Применить и подтвердить изменения: vesr(config-esbc-user-interface-sip)# do commit Configuration has been successfully applied and saved to flash. Commit timer started, changes will be reverted in 600 seconds. vesr(config-esbc-user-interface-sip)# do confirm Configuration has been confirmed. Commit timer canceled. |
После внесения изменений любой тип медиаданных, пришедших на user-interface, кроме audio будет отключен.
| Scroll Pagebreak |
|---|
Таймаут ожидания RTP-пакетов
Это функция контроля состояния разговора по наличию RTP-трафика от встречного устройства. Контроль осуществляется следующим образом: если в течение заданного времени от встречного устройства не поступает ни одного RTP-пакета, то вызов завершается.
По умолчанию контроль выключен.
| Блок кода | ||
|---|---|---|
| ||
vesr#
vesr# configure
vesr(config)# esbc
#Создание медиапрофиля NEW_MEDIA_PROFILE:
vesr(config-esbc)# media-profile NEW_MEDIA_PROFILE
vesr(config-esbc-media-profile)#
#Включение таймера в медиапрофиле:
vesr(config-esbc-media-profile)# rtp-timeout 100
vesr(config-esbc-media-profile)#
vesr(config-esbc-media-profile)# exit
vesr(config-esbc)#
#Привязать медиапрофиль к транку NEW_TRUNK:
vesr(config-esbc)# trunk sip NEW_TRUNK
vesr(config-esbc-trunk-sip)# media profile NEW_MEDIA_PROFILE
vesr(config-esbc-trunk-sip)#
#Применить и подтвердить изменения:
vesr(config-esbc-trunk-sip)# do commit
Configuration has been successfully applied and saved to flash. Commit timer started, changes will be reverted in 600 seconds.
vesr(config-esbc-trunk-sip)# do confirm
Configuration has been confirmed. Commit timer canceled. |
Если после внесения изменений во время вызова с транка NEW_TRUNK в течение 100 секунд не будут приходить RTP-пакеты, то вызов будет принудительно завершён.
| Scroll Pagebreak |
|---|
SRTP
SRTP (Secure Real-time Transport Protocol) это расширенная версия протокола RTP с набором защитных механизмов. Протокол был опубликован организацией IETF в стандарте RFC 3711. SRTP обеспечивает конфиденциальность за счет шифрования RTP-нагрузки. Для шифрования медиа потока, SRTP стандартизирует использование только единственного шифра, AES, который может использоваться в двух режимах:
- Сегментированный целочисленный счётчик — типичный режим, который осуществляет произвольный доступ к любым блокам, что является существенным для трафика RTP, передающегося в публичных сетях с непредсказуемым уровнем надежности и возможной потерей пакетов. Но стандарт для шифрования данных RTP — только обычное целочисленное значение счётчика. AES, работающий в этом режиме, является алгоритмом шифрования по умолчанию, с длиной шифровального ключа в 128 бит и ключом сессии длиной в 112 бит.
- f8-режим — вариант режима способа обратной связи, расширенного, чтобы быть доступным с изменённой функцией инициализации. Значения по умолчанию для шифровального ключа и ключа сессии — то же, что и в AES в режиме, описанном выше.
SRTP использует функцию формирования ключа для создания ключей на основе мастер-ключа. Протокол управления ключами создает все ключи в сессии с помощью мастер-ключа. За счет того, что у каждой сессии свой уникальный ключ, все сессии защищены. Поэтому, если одна сессия была скомпрометирована, то остальные по-прежнему под защитой.
В конфигурации доступны 2 метода обмена ключами:
И 3 режима использования SRTP:
- disable – SRTP запрещён;
- optional – SRTP не обязателен, но ключи будут подставлены в offer SDP второго плеча, без изменения профиля транспорта в медиа секции SDP;
- mandatory – SRTP обязателен, профиль транспорта в медиа секции SDP будет изменён на соответствующий профиль SRTP.
Если выбран режим mandatory и включены оба метода, то на втором плече будет выбран DTLS-SRTP, как более приоритетный.
| Примечание |
|---|
По умолчанию поддержка SRTP выключена. |
Пример использования SRTP
Схема:
В конфигурации есть два транка, настроена маршрутизация. Вызов, который приходит из TRUNK_IN, уходит в TRUNK_OUT. На TRUNK_OUT включаем обязательное использование SRTP с методом обмена ключами – SDES.
MEDIA_PROFILE
codec allow AMR
codec allow CLEARMODE
codec allow CN
codec allow G72
codec allow G722/ 9
codec allow G728 15
codec allow G729/ 18
codec allow GSM 3
codec allow H26
codec allow H261 31
codec allow H263 34
codec allow ILBC
codec allow L16/44100 11
codec allow L16/44100/2 10
codec allow OPUS
codec allow PCMA 8
codec allow PCMU 0
codec allow SPEEX
codec allow T38 t38
codec allow VP
codec allow telephone-event
exit
|
Для очистки списка используется команда - no codec allow all. При использовании данной команды будут удалены кодеки добавленные автоматически при создании профиля и кодеки добавленные пользователем.
Список кодеков, разрешенных для проксирования можно изменять и добавлять любые кодеки, командой:
| Блок кода | ||
|---|---|---|
| ||
codec allow <full or partial codec name> [payload type] |
где:
<full or partial codec name> - часть или полное название кодека (в соответствии с SDP rtpmap);
[payload type] - номер payload type. Параметр опциональный.
Допускается указания части названия кодека, например: codec allow G72, в таком случае будет разрешено проксирование кодеков G726-16, G726-24, G726-32, G726-40.
| Предупреждение |
|---|
Для кодеков со статическим payload type рекомендуется указывать номер payload type, иначе, если в SDP не будет указан атрибут rtpmap, вызов будет отбиваться кодом 488. |
Транскодирование
Поддержка кодеков для транскодирования осуществляется командами:
- codec audio
- codec video
- codec image (в текущей версии ПО не поддержено, данная команда аналогична команде codec allow T38 t38)
Порядок обработки SDP для выбора режима работы:
1. Offer SDP фильтруется согласно разрешённым кодекам на плече A.
2. Offer SDP фильтруется согласно разрешённым кодекам на плече B.
3. В конец Offer SDP добавляются недостающие кодеки, транскодинг которых включен в media-profile на плече B.
4. Answer SDP фильтруется согласно разрешённым кодекам на плече B.
5. В конец Answer SDP добавляются недостающие кодеки, транскодинг которых включен в media-profile на плече A.
В результате, транскодирование включается, если, самые приоритетные кодеки из Offer и Answer SDP не совпадают.
Иначе, при совпадении приоритетных кодеков, будет использоваться проксирование.
Пример.
На плече A разрешён только кодек PCMA:
| Блок кода | ||
|---|---|---|
| ||
media-profile MP_A
codec audio PCMA
exit |
на плече B - PCMU:
| Блок кода | ||
|---|---|---|
| ||
media-profile MP_B
codec audio PCMU
exit |
В данном случае, на плечах А и B будут согласованы кодеки PCMA и PCMU соответственно и будет включено транскодирование.
Если на плече B включить поддержку PCMA:
| Блок кода | ||
|---|---|---|
| ||
media-profile MP_B
codec audio PCMU
codec audio PCMA
exit |
то выбор режима работы (проксирование/транскодирование) будет осуществляться в зависимости от кодека указаного в Answer SDP плеча B.
Если в ответе первым кодеком будет представлен PCMA, то будет выбран режим проксирования, если PCMU - транскодирования.
| Scroll Pagebreak |
|---|
Таймаут ожидания RTP-пакетов
Это функция контроля состояния разговора по наличию RTP-трафика от встречного устройства. Контроль осуществляется следующим образом: если в течение заданного времени от встречного устройства не поступает ни одного RTP-пакета, то вызов завершается.
По умолчанию контроль выключен.
| Блок кода | ||
|---|---|---|
| ||
vesr# | ||
| Блок кода | ||
| ||
vesr# vesr# configure vesr(config)# esbc #Создание медиапрофиля NEW_MEDIA_PROFILE: vesr(config-esbc)# media-profile NEW_MEDIA_PROFILE vesr(config-esbc-media-profile)# #Настройка#Включение SRTPтаймера (включили обязательный режим использования, метод обмена ключами – SDES): vesrв медиапрофиле: vesr(config-esbc-media-profile)# srtp keying dtls-srtp Enable DTLS-SRTP keying method sdes Enable SDES keying method rtp-timeout 100 vesr(config-esbc-media-profile)# srtp keying sdes vesr(config-esbc-media-profile)# srtp mode disable SRTP is disabled mandatory SRTP is mandatory optional SRTP is optional exit vesr(config-esbc)# #Привязать медиапрофиль к транку NEW_TRUNK: vesr(config-esbc)# trunk sip NEW_TRUNK vesr(config-esbc-mediatrunk-profilesip)# srtpmedia mode mandatoryprofile NEW_MEDIA_PROFILE vesr(config-esbc-media-profile)# vesr(config-esbc-media-profile)# exit vesr(config-esbc)# #Привязать медиапрофиль к транку TRUNK_OUT: vesr(config-esbc)# trunk sip TRUNK_OUT vesr(config-esbc-trunk-sip)# media profile NEW_MEDIA_PROFILE vesr(config-esbc-trunk-sip)# #Применить и подтвердить изменения: vesr(config-esbc-trunk-sip)# do commit Configuration has been successfully applied and saved to flash. Commit timer started, changes will be reverted in 600 seconds. vesr(config-esbc-trunk-sip)# do confirm Configuration has been confirmed. Commit timer canceled. |
Если после внесения изменений во время вызова с транка NEW_TRUNK в течение 100 секунд не будут приходить RTP-пакеты, то вызов будет принудительно завершён.
| Scroll Pagebreak |
|---|
| Блок кода | ||
|---|---|---|
| ||
Session Description Protocol
Session Description Protocol Version (v): 0
Owner/Creator, Session Id (o): 100 61 74 IN IP4 10.25.72.54
Session Name (s): Talk
Connection Information (c): IN IP4 10.25.72.54
Time Description, active time (t): 0 0
Session Attribute (a): rtcp-xr:rcvr-rtt=all:10000 stat-summary=loss,dup,jitt,TTL voip-metrics
Session Attribute (a): record:off
Media Description, name and address (m): audio 7078 RTP/AVP 96 97 98 0 8 18 101 99 100
Media Attribute (a): rtpmap:96 opus/48000/2
Media Attribute (a): fmtp:96 useinbandfec=1
Media Attribute (a): rtpmap:97 speex/16000
Media Attribute (a): fmtp:97 vbr=on
Media Attribute (a): rtpmap:98 speex/8000
Media Attribute (a): fmtp:98 vbr=on
Media Attribute (a): fmtp:18 annexb=yes
Media Attribute (a): rtpmap:101 telephone-event/48000
Media Attribute (a): rtpmap:99 telephone-event/16000
Media Attribute (a): rtpmap:100 telephone-event/8000
Media Attribute (a): rtcp-fb:* trr-int 5000
Media Attribute (a): rtcp-fb:* ccm tmmbr
[Generated Call-ID: l0XaoKkqav] |
| Scroll Pagebreak |
|---|
...
SRTP
SRTP (Secure Real-time Transport Protocol) это расширенная версия протокола RTP с набором защитных механизмов. Протокол был опубликован организацией IETF в стандарте RFC 3711. SRTP обеспечивает конфиденциальность за счет шифрования RTP-нагрузки. Для шифрования медиа потока, SRTP стандартизирует использование только единственного шифра, AES, который может использоваться в двух режимах:
- Сегментированный целочисленный счётчик — типичный режим, который осуществляет произвольный доступ к любым блокам, что является существенным для трафика RTP, передающегося в публичных сетях с непредсказуемым уровнем надежности и возможной потерей пакетов. Но стандарт для шифрования данных RTP — только обычное целочисленное значение счётчика. AES, работающий в этом режиме, является алгоритмом шифрования по умолчанию, с длиной шифровального ключа в 128 бит и ключом сессии длиной в 112 бит.
- f8-режим — вариант режима способа обратной связи, расширенного, чтобы быть доступным с изменённой функцией инициализации. Значения по умолчанию для шифровального ключа и ключа сессии — то же, что и в AES в режиме, описанном выше.
SRTP использует функцию формирования ключа для создания ключей на основе мастер-ключа. Протокол управления ключами создает все ключи в сессии с помощью мастер-ключа. За счет того, что у каждой сессии свой уникальный ключ, все сессии защищены. Поэтому, если одна сессия была скомпрометирована, то остальные по-прежнему под защитой.
В конфигурации доступны 2 метода обмена ключами:
И 3 режима использования SRTP:
- disable – SRTP запрещён;
- optional – SRTP не обязателен, но ключи будут подставлены в offer SDP второго плеча, без изменения профиля транспорта в медиа секции SDP;
- mandatory – SRTP обязателен, профиль транспорта в медиа секции SDP будет изменён на соответствующий профиль SRTP.
Если выбран режим mandatory и включены оба метода, то на втором плече будет выбран DTLS-SRTP, как более приоритетный.
| Примечание |
|---|
По умолчанию поддержка SRTP выключена. |
Пример использования SRTP
Схема:
В конфигурации есть два транка, настроена маршрутизация. Вызов, который приходит из TRUNK_IN, уходит в TRUNK_OUT. На TRUNK_OUT включаем обязательное использование SRTP с методом обмена ключами – SDES.
| Блок кода | ||
|---|---|---|
| ||
vesr#
vesr# configure
vesr(config)# esbc
#Создание медиапрофиля NEW_MEDIA_PROFILE:
vesr(config-esbc)# media-profile NEW_MEDIA_PROFILE
vesr(config-esbc-media-profile)#
#Настройка SRTP (включили обязательный режим использования, метод обмена ключами – SDES):
vesr(config-esbc-media-profile)# srtp keying
dtls-srtp Enable DTLS-SRTP keying method
sdes Enable SDES keying method
vesr(config-esbc-media-profile)# srtp keying sdes
vesr(config-esbc-media-profile)# srtp mode
disable SRTP is disabled
mandatory SRTP is mandatory
optional SRTP is optional
vesr(config-esbc-media-profile)# srtp mode mandatory
vesr(config-esbc-media-profile)#
vesr(config-esbc-media-profile)# exit
vesr(config-esbc)#
#Привязать медиапрофиль к транку TRUNK_OUT:
vesr(config-esbc)# trunk sip TRUNK_OUT
vesr(config-esbc-trunk-sip)# media profile NEW_MEDIA_PROFILE
vesr(config-esbc-trunk-sip)#
#Применить и подтвердить изменения:
vesr(config-esbc-trunk-sip)# do commit
Configuration has been successfully applied and saved to flash. Commit timer started, changes will be reverted in 600 seconds.
vesr(config-esbc-trunk-sip)# do confirm
Configuration has been confirmed. Commit timer canceled. |
| Scroll Pagebreak |
|---|
| Блок кода | ||
|---|---|---|
| ||
Session Description Protocol
Session Description Protocol Version (v): 0
Owner/Creator, Session Id (o): 100 393201891761 393201891774 IN IP4 19210.16825.2372.19954
Session Name (s): Talk
Connection Information (c): IN IP4 19210.16825.2372.19954
Time Description, active time (t): 0 0
Session Attribute (a): rtcp-xr:rcvr-rtt=all:10000 stat-summary=loss,dup,jitt,TTL voip-metrics
Session Attribute (a): record:off
Media Description, name and address (m): audio 80647078 RTP/SAVPAVP 96 97 98 0 8 18 101 99 100
Media Attribute (a): rtpmap:96 opus/48000/2
Media Attribute (a): fmtp:96 useinbandfec=1
Media Attribute (a): rtpmap:97 speex/16000
Media Attribute (a): fmtp:97 vbr=on
Media Attribute (a): rtpmap:98 speex/8000
Media Attribute (a): fmtp:98 vbr=on
Media Attribute (a): fmtp:18 annexb=yes
Media Attribute (a): rtpmap:101 telephone-event/48000
Media Attribute (a): rtpmap:99 telephone-event/16000
Media Attribute (a): rtpmap:100 telephone-event/8000
Media Attribute (a): rtcp-fb:* trr-int 5000
Media Attribute (a): rtcp-fb:* ccm tmmbr
[Generated Call-ID: l0XaoKkqav] |
| Scroll Pagebreak |
|---|
| Блок кода | ||
|---|---|---|
| ||
Session Description Protocol Session Description Protocol Version (v): 0Media Attribute (a): crypto:1 AES_256_CM_HMAC_SHA1_80 inline:FGdOolKfBlrQzUIedHcIqs9uauWEnUbqxXpop9PaI1dPIHVnO/vdb7JJHRLBLw== Media AttributeOwner/Creator, Session Id (ao): crypto:2 AES_256_CM_HMAC_SHA1_32 inline:Galc9UfOqBFNmr3ICc3Fiuc3HgEXlj+p1dRw85LavzjWR1sGZUr1nsLQjfaTQA==100 3932018917 3932018917 IN IP4 192.168.23.199 MediaSession AttributeName (as): crypto:3 AES_CM_128_HMAC_SHA1_80 inline:jEjWFKpqdf6d94g/ddSjj1i08dEWQA1tTI75Hqx3Talk Connection Information (c): IN IP4 192.168.23.199 Time Description, active time (t): 0 0 MediaSession Attribute (a): crypto:4 AES_CM_128_HMAC_SHA1_32 inline:uFYI2UDA/+woJJY4fWljfoxRROffXNtEO81bBnHJrtcp-xr:rcvr-rtt=all:10000 stat-summary=loss,dup,jitt,TTL voip-metrics [Generated Call-ID: 503d40e930910767a2dd95f88b483189] |
Создание/конфигурирование SIP-профилей (sip-profile)
SIP-профиль служит для конфигурации общих параметров SIP. Его можно привязать к транкам, транк-группам и user-interface.
В текущей версии поддержаны следующие настройки:
- Контроль доступности направления
- Список причин отбоя для перехода на следующее направление
Пример настройки контроля доступности направления
| Блок кода | ||
|---|---|---|
| ||
vesr#
vesr# configure
vesr(config)# esbc
#Создание sip-профиля NEW_SIP_PROFILE:
vesr(config-esbc)# sip-profile NEW_SIP_PROFILE
vesr(config-esbc-sip-profile)#
#Включить контроль доступности:
vesr(config-esbc-sip-profile)# keepalive enable
vesr(config-esbc-sip-profile)#
#Настроить интервалы контроля:
vesr(config-esbc-sip-profile)# keepalive success-interval 120
vesr(config-esbc-sip-profile)# keepalive failed-interval 30
vesr(config-esbc-sip-profile)#
vesr(config-esbc-sip-profile)# exit
vesr(config-esbc)#
#Привязать SIP-профиль к транку TRUNK_OUT:
vesr(config-esbc)# trunk sip NEW_TRUNK
vesr(config-esbc-trunk-sip)# sip-profile NEW_SIP_PROFILE
vesr(config-esbc-trunk-sip)#
#Применить и подтвердить изменения:
vesr(config-esbc-trunk-sip)# do commit
Configuration has been successfully applied and saved to flash. Commit timer started, changes will be reverted in 600 seconds.
vesr(config-esbc-trunk-sip)# do confirm
Configuration has been confirmed. Commit timer canceled. |
Если в течение 30 секунд (failed-interval) из TRUNK_OUT не будет получено ни одного сообщения, то он станет считаться недоступным, и ESBC будет отправлять в сторону TRUNK_OUT OPTIONS (пока поддержан только этот метод контроля) с интервалом 30 секунд (failed-interval).
Если из транка было получено какое-либо сообщение (в том числе ответ на OPTIONS), то транк считается доступным, следующий запрос OPTIONS отправится через 120 секунд (success-interval).
| Предупреждение |
|---|
Контроль доступности не работает для user-interface. |
Использование списка причин отбоя для перехода на следующее направление
На ESBC есть возможность создать список ответов, при получении которых происходит перемаршрутизация на следующее направление (следующий транк в транковой группе/следующее правило в таблице маршрутизации). Это работает как для вызовов, так и для регистраций.
При создании маски для списка можно использовать регулярные выражения PCRE. Scroll Pagebreak
Схема:
В таблице маршрутизации два правила, первое направляет вызов в TRUNK_GROUP, второе направляет вызов в TRUNK_3.
| Блок кода | ||
|---|---|---|
| ||
vesr#
vesr# configure
vesr(config)# esbc
#Создать список ответов:
vesr(config-esbc)# cause-list sip LIST
vesr(config-esbc-cause-list-sip)#
#Создать маску, по которой будут отбираться ответы для перемаршрутизации:
vesr(config-esbc-cause-list-sip)# cause-mask 404
vesr(config-esbc-cause-list-sip)# exit
#Создать SIP-профиль, привязать список к SIP-профилю:
vesr(config-esbc)# sip-profile SIP-PROFILE
vesr(config-esbc-sip-profile)# cause-list LIST
vesr(config-esbc-sip-profile)# exit
#Привязать к транковой группе TRUNK-GROUP SIP-профиль:
vesr(config-esbc)# trunk-group TRUNK-GROUP
vesr(config-esbc-trunk-group)# sip-profile SIP-PROFILE
vesr(config-esbc-trunk-group)#
#Применить и подтвердить изменения:
vesr(config-esbc-trunk-group)# do commit
Configuration has been successfully applied and saved to flash. Commit timer started, changes will be reverted in 600 seconds.
vesr(config-esbc-trunk-group)# do confirm
Configuration has been confirmed. Commit timer canceled. |
Приходит вызов и начинает маршрутизироваться по данной таблице маршрутизации. В результате вызов уходит на TRUNK_GROUP и оттуда в TRUNK_1, он недоступен, вызов отбивается по Timer B и происходит перемаршрутизация на TRUNK_2 (следующий транк в транковой группе), из TRUNK_2 приходит ответ 404 Not Found, код ответа совпадает с маской из списка, который привязан к TRUNK-GROUP, поэтому происходит маршрутизация на следующее направление, в транковой группе больше нет транков, поэтому ESBC переходит к RULE_2, и вызов маршрутизируется в TRUNK_3.
| Предупреждение |
|---|
Если нет привязанного списка, то перемаршрутизация происходит только по недоступности транка. |
| Предупреждение |
|---|
Если из user-interface пришёл ответ, совпадающий с маской, то перемаршрутизации не будет. |
Перемаршрутизация абонентовScroll Pagebreak
...
Session Attribute (a): record:off
Media Description, name and address (m): audio 8064 RTP/SAVP 96 97 98 0 8 18 101 99 100
Media Attribute (a): rtpmap:96 opus/48000/2
Media Attribute (a): fmtp:96 useinbandfec=1
Media Attribute (a): rtpmap:97 speex/16000
Media Attribute (a): fmtp:97 vbr=on
Media Attribute (a): rtpmap:98 speex/8000
Media Attribute (a): fmtp:98 vbr=on
Media Attribute (a): fmtp:18 annexb=yes
Media Attribute (a): rtpmap:101 telephone-event/48000
Media Attribute (a): rtpmap:99 telephone-event/16000
Media Attribute (a): rtpmap:100 telephone-event/8000
Media Attribute (a): rtcp-fb:* trr-int 5000
Media Attribute (a): rtcp-fb:* ccm tmmbr
Media Attribute (a): crypto:1 AES_256_CM_HMAC_SHA1_80 inline:FGdOolKfBlrQzUIedHcIqs9uauWEnUbqxXpop9PaI1dPIHVnO/vdb7JJHRLBLw==
Media Attribute (a): crypto:2 AES_256_CM_HMAC_SHA1_32 inline:Galc9UfOqBFNmr3ICc3Fiuc3HgEXlj+p1dRw85LavzjWR1sGZUr1nsLQjfaTQA==
Media Attribute (a): crypto:3 AES_CM_128_HMAC_SHA1_80 inline:jEjWFKpqdf6d94g/ddSjj1i08dEWQA1tTI75Hqx3
Media Attribute (a): crypto:4 AES_CM_128_HMAC_SHA1_32 inline:uFYI2UDA/+woJJY4fWljfoxRROffXNtEO81bBnHJ
[Generated Call-ID: 503d40e930910767a2dd95f88b483189] |
Создание/конфигурирование SIP-профилей (sip-profile)
SIP-профиль служит для конфигурации общих параметров SIP. Его можно привязать к транкам, транк-группам и user-interface.
В текущей версии поддержаны следующие настройки:
- Контроль доступности направления
- Список причин отбоя для перехода на следующее направление
Пример настройки контроля доступности направления
| Блок кода | ||
|---|---|---|
| ||
vesr#
vesr# configure
vesr(config)# esbc
#Создание sip-профиля NEW_SIP_PROFILE:
vesr(config-esbc)# sip-profile NEW_SIP_PROFILE
vesr(config-esbc-sip-profile)#
#Включить контроль доступности:
vesr(config-esbc-sip-profile)# keepalive enable
vesr(config-esbc-sip-profile)#
#Настроить интервалы контроля:
vesr(config-esbc-sip-profile)# keepalive success-interval 120
vesr(config-esbc-sip-profile)# keepalive failed-interval 30
vesr(config-esbc-sip-profile)#
vesr(config-esbc-sip-profile)# exit
vesr(config-esbc)#
#Привязать SIP-профиль к транку TRUNK_OUT:
vesr(config-esbc)# trunk sip NEW_TRUNK
vesr(config-esbc-trunk-sip)# sip-profile NEW_SIP_PROFILE
vesr(config-esbc-trunk-sip)#
#Применить и подтвердить изменения:
vesr(config-esbc-trunk-sip)# do commit
Configuration has been successfully applied and saved to flash. Commit timer started, changes will be reverted in 600 seconds.
vesr(config-esbc-trunk-sip)# do confirm
Configuration has been confirmed. Commit timer canceled. |
Если в течение 30 секунд (failed-interval) из TRUNK_OUT не будет получено ни одного сообщения, то он станет считаться недоступным, и ESBC будет отправлять в сторону TRUNK_OUT OPTIONS (пока поддержан только этот метод контроля) с интервалом 30 секунд (failed-interval).
Если из транка было получено какое-либо сообщение (в том числе ответ на OPTIONS), то транк считается доступным, следующий запрос OPTIONS отправится через 120 секунд (success-interval).
| Предупреждение |
|---|
Контроль доступности не работает для user-interface. |
Использование списка причин отбоя для перехода на следующее направление
На ESBC есть возможность создать список ответов, при получении которых происходит перемаршрутизация на следующее направление (следующий транк в транковой группе/следующее правило в таблице маршрутизации). Это работает как для вызовов, так и для регистраций.
При создании маски для списка можно использовать регулярные выражения PCRE. Scroll Pagebreak
Схема:
В таблице маршрутизации два правила, первое направляет вызов в TRUNK_GROUP, второе направляет вызов в TRUNK_3.
| Блок кода | ||
|---|---|---|
| ||
vesr#
vesr# configure
vesr(config)# esbc
#Создать список ответов:
vesr(config-esbc)# cause-list sip LIST
vesr(config-esbc-cause-list-sip)#
#Создать маску, по которой будут отбираться ответы для перемаршрутизации:
vesr(config-esbc-cause-list-sip)# cause-mask 404
vesr(config-esbc-cause-list-sip)# exit
#Создать SIP-профиль, привязать список к SIP-профилю:
vesr(config-esbc)# sip-profile SIP-PROFILE
vesr(config-esbc-sip-profile)# cause-list LIST
vesr(config-esbc-sip-profile)# exit
#Привязать к транковой группе TRUNK-GROUP SIP-профиль:
vesr(config-esbc)# trunk-group TRUNK-GROUP
vesr(config-esbc-trunk-group)# sip-profile SIP-PROFILE
vesr(config-esbc-trunk-group)#
#Применить и подтвердить изменения:
vesr(config-esbc-trunk-group)# do commit
Configuration has been successfully applied and saved to flash. Commit timer started, changes will be reverted in 600 seconds.
vesr(config-esbc-trunk-group)# do confirm
Configuration has been confirmed. Commit timer canceled. |
Приходит вызов и начинает маршрутизироваться по данной таблице маршрутизации. В результате вызов уходит на TRUNK_GROUP и оттуда в TRUNK_1, он недоступен, вызов отбивается по Timer B и происходит перемаршрутизация на TRUNK_2 (следующий транк в транковой группе), из TRUNK_2 приходит ответ 404 Not Found, код ответа совпадает с маской из списка, который привязан к TRUNK-GROUP, поэтому происходит маршрутизация на следующее направление, в транковой группе больше нет транков, поэтому ESBC переходит к RULE_2, и вызов маршрутизируется в TRUNK_3.
| Предупреждение |
|---|
Если нет привязанного списка, то перемаршрутизация происходит только по недоступности транка. |
| Предупреждение |
|---|
Если из user-interface пришёл ответ, совпадающий с маской, то перемаршрутизации не будет. |
Перемаршрутизация абонентовScroll Pagebreak
Вызов с зарегистрированного абонента будет направлен в тот транк, где он регистрировался. В случае неудачи перемаршрутизация запрещена.
При вызове с незарегистрированного абонента сначала идёт проверка, разрешены ли с этого user-interface вызовы без регистрации(allow_unreg_call), если проверка успешна, то вызов смаршрутизируется по привязанной таблице маршрутизации и в случае недоступности транка/совпадении ответа с маской из списка произойдёт маршрутизация на следующее направление.
Работа с NAT (nat comedia-mode)
С целью преодоления соединений через устройства NAT, в ESBC реализована поддержка nat comedia-mode для абонентов и транков.
Настройка и принцип работы nat comedia-mode для транков (trunk)
Включение режима nat comedia-mode осуществляется в настройках транка
| Блок кода | ||
|---|---|---|
| ||
vesbc# configure
vesbc(config)# esbc
vesbc(config-esbc)# trunk sip
vesbc(config-esbc-trunk-sip)# nat comedia-mode
Select NAT comedia mode for trunk:
off
on
flexible
vesbc(config-esbc-trunk-sip)# nat comedia-mode on |
Возможна работа в двух режимах:
flexible – проверяет источник во входящем RTP-потоке и транслирует исходящий поток на IP-адрес и UDP-порт, с которого принимается медиапоток, в случае прерывания входящего RTP-потока более чем на 1 секунду, исходящий поток продолжает транслироваться;
on – проверяет источник во входящем RTP-потоке и транслирует исходящий поток на IP-адрес и UDP-порт, с которого принимается медиапоток, в случае прерывания входящего RTP-потока более чем на 1 секунду, исходящий поток перестает транслироваться;
Настройка и принцип работы nat comedia-mode для абонентов (user-interface)
Включение режима nat comedia-mode осуществляется в настройках user-interface
| Блок кода | ||
|---|---|---|
| ||
vesbc#
vesbc# configure
vesbc(config)# esbc
vesbc(config-esbc)# user-interface sip USERS
vesbc(config-esbc-user-interface-sip)# nat comedia-mode
Select NAT comedia mode for user-interface:
off
on
flexible
vesbc(config-esbc-user-interface-sip)# nat comedia-mode on |
Возможна работа в двух режимах:
flexible – проверяет источник во входящем RTP-потоке и транслирует исходящий поток на IP-адрес и UDP-порт, с которого принимается медиапоток, в случае прерывания входящего RTP-потока более чем на 1 секунду, исходящий поток продолжает транслироваться;
on – проверяет источник во входящем RTP-потоке и транслирует исходящий поток на IP-адрес и UDP-порт, с которого принимается медиапоток, в случае прерывания входящего RTP-потока более чем на 1 секунду, исходящий поток перестает транслироваться;
Также данная настройка позволяет передавать сообщения протокола SIP симметрично (на порт, с которого был принят запрос) в случае, если клиент в инициирующем запросе не использовал параметр RPORT;
Команда nat keep-alive-interval ипользуется для поддержки соединения за NAT для сигнального трафика. (Не поддержана в текущей версии ПО)
Подмена атрибутов direction в SDP
При включении опции nat comedia-mode, все атрибуты direction в SDP, при отпавке offer sdp заменяются на sendrecv.
При отправке sdp answer в сторону транка/user-interface с включенной опцией, все атрибуты direction заменяются на максимально возможные, вне зависимости от того, какие атрибуты были в полученном answer на другом плече (в ответ на sendrecv - sendrecv, в ответ на sendonly - recvonly, в ответ на recvonly - sendonly).
Примеры:
1. Замена атрибутов direction в offer sdp
ЭТУ ТАБЛИЦУ НАДО СДЕЛАТЬ КРАСИВОЙ СХЕМОЙ
| Блок кода |
|---|
UAC ---------------trunk-------------------E-SBC-------trunk/user interface with nat comedia-mode---------UAS
--> INVITE (sendonly) --> INVITE (sendrecv)
<-- 200OK (recvonly) <-- 200OK(sendrecv)
--> INVITE (sendonly) --> INVITE (sendrecv)
<-- 200OK (recvonly) <-- 200OK(recvonly)
--> INVITE (recvonly) --> INVITE (sendrecv)
<-- 200OK (sendonly) <-- 200OK(sendrecv) |
2. Замена атрибутов direction в answer sdp
ЭТУ ТАБЛИЦУ НАДО СДЕЛАТЬ КРАСИВОЙ СХЕМОЙ
| Блок кода |
|---|
UAC ------------trunk/user interface with nat comedia-mode-------------E-SBC---------------------trunk--------------------UAS
--> INVITE (sendrecv) --> INVITE (sendrecv)
<-- 200OK (sendrecv) <-- 200OK(sendonly)
--> INVITE (sendrecv) --> INVITE (sendrecv)
<-- 200OK (sendrecv) <-- 200OK(recvonly)
--> INVITE (sendrecv) --> INVITE (sendrecv)
<-- 200OK (sendrecv) <-- 200OK(sendrecv) |
Создание/конфигурирование модификаторов (modification table)
...

