Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

...

...

...

При включении режима nat comedia-mode on/flexible Отправка отправка и получение сообщенийсигнализации  SIP осуществляется с/на IP-адрес и порт, с которого было получено сообщение от встречной стороныуказанные в настройках транка.

Оправка RTP будет осуществляться на IP-адрес и порт с которого был получен первый RTP-пакет от встречной стороны. До плучения RTP от встречной стороны, медиатрафик не будет передаваться от ESBC в эту сторону.

Настройка и принцип работы nat comedia-mode для абонентов (user-interface)

...

  • flexible — проверяет источник во входящем RTP-потоке и транслирует исходящий поток на IP-адрес и UDP-порт, с которого принимается медиапоток, в случае прерывания входящего RTP-потока более чем на 1 секунду, исходящий поток продолжает транслироваться;
  • on — проверяет источник во входящем RTP-потоке и транслирует исходящий поток на IP-адрес и UDP-порт, с которого принимается медиапоток, в случае прерывания входящего RTP-потока более чем на 1 секунду, исходящий поток перестает транслироваться.

Принцип работы.

При включении режима nat comedia-mode on/flexible отправка сообщений сигнализации  SIP осуществляется Также данная настройка позволяет передавать сообщения протокола SIP симметрично (на IP-адрес и  порт, с которого был принят запрос) в случае, если клиент в инициирующем запросе не использовал параметр RPORT.

Отправка сообщений сигнализации SIP на зарегистрированного абонента будет осуществляться на на IP-адрес и  порт, с которого был принят запрос REGISTER, а не на данные абонента, указанные в заголовке Contact.

Оправка RTP будет осуществляться на IP-адрес и порт с которого был получен первый RTP-пакет от встречной стороны. До плучения RTP от встречной стороны, медиатрафик не будет передаваться от ESBC в эту сторону.

Команда nat keep-alive-interval в настройках абонентского интерфейса используется для настройки интервала для поддержки соединения за NAT.  При включении опции, абоненту, с заданным интервалом будут отправляться пакеты с содержанием "0d0a"  для предотвращения разрушения сессии на NAT-маршрутизаторе.

Подмена атрибутов direction в SDP

...

Информация

В качестве публичного адреса можно использовать как IPv4, так и IPv6 (не поддерживается в текущей версии ПО) адрес.

При наличии Public IP, адреса в SDP, заголовках Via и Contact будут заменены на значение public-ip из конфигурации объекта. Media будет работать в режиме NAT-comedia.

...

Блок кода
languagec#
INVITE sip:23002@192.168.1.1:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.1.4:5061;rport;branch=z9hG4bK-1914230-1-1
From: "24001" <sip:24001@192.168.1.4:5061>;tag=1
To: "23002" <sip:23002@192.168.1.1:5060>
Call-ID: 1-1914230@192.168.1.4
Cseq: 1 INVITE
Contact: <sip:24001@192.168.1.4:5061>
Max-Forwards: 70
Allow: INVITE, ACK, BYE, CANCEL
Content-Type: application/sdp
Content-Length: 138

Session Description Protocol Version (v): 0
Owner/Creator, Session Id (o): user1 77755765 7773687637 IN IP4 192.168.1.4
Session Name (s): -
Time Description, active time (t): 0 0
Connection Information (c): IN IP4 192.168.1.4
Media Description, name and address (m): audio 10000 RTP/AVP 8
Media Attribute (a): rtpmap:8 PCMA/8000

ESBC пересылает INVITE в через транк TRUNK_PUBLIC_IP на встречное устройство.
В SDP, Via и Contact вместо адреса привязанного используемого SIP-транспорта (192.168.1.1)  используется указывается адрес Public IP транка (10.25.0.1): 

...

STUN – сетевой протокол, позволяющий клиенту, находящемуся за NAT, определить свой публичный (внешний) IP-адрес и порт для обеспечения установления и корректной передачи медиатрафика через NAT. Применяется в механизмах обхода NAT (например, ICE) для установления прямых медиасоединений.

ESBC поддерживает STUN в двух режимах работы:

  • взаимодействие с внешними STUN-серверами;
  • функционирование в качестве STUN-сервера для клиентов за NAT.

...

ESBC поддерживает взаимодействие с внешними STUN-серверами для определения собственного публичного адреса(например, если ESBC находится в частной сети за NAT-устройством). ESBC отправляет STUN Binding Request на указанный сервер и использует полученный в ответе IP-адрес и порт в качестве публичного, подставляя его в сигнальные сообщения протокола SIP. Для получения портов для RTP/RTCP также будут отправляться STUN Binding Request в момент установления вызова.

По умолчанию ESBC взаимодействует с внешними STUN-серверами в режиме согласно RFC 3489 (Simple Traversal of UDP through NATs или "classic STUN") – использует в качестве публичного адреса и порта значения, полученные в аттрибуте MAPPED-ADDRESS в Binding Response от STUN-сервера.
Доступна поддержка RFC 5389(Session Traversal Utilities for NAT) – в этом случае ESBC в Binding Request на STUN-сервер будет отправлять Cookie, с помощью которого сервер зашифрует адрес и порт и передаст их в Binding Response в аттрибуте XOR-MAPPED-ADDRESS, ESBC дешифрует полученные данные и использует в качестве публичного адреса и порта.

...

  • при наличии настроенного Public IP в SIP-сообщениях будет использоваться адрес из Public-IP;
  • если Public IP не настроен, то SIP запросы на это направление будут отбиваться отклонены ошибкой 503.

Подробное описание команд настройки внешних STUN-серверов на ESBC представлено в разделе Настройки STUN Cправочника команд CLI.

...

При исходящем вызове в транк TRUNK_B ESBC отправит запросы на STUN-сервер с RTP и RTCP порта для согласования обмена медиатрафиком.

При входящем вызове из транка TRUNK_B ESBC также отправит запросы на STUN-сервер с RTP и RTCP порта для согласования обмена медиатрафиком перед отправкой SDP-Answer инициатору.


Настройка локального STUN-сервера
Якорь
local stun
local stun

...