Page tree

Cloud Connect

Cloud Connect - это механизм, позволяющий установить соединение между двумя объектами в сервисе TRASSIR Cloud.

Варианты подключения: камера <-> сервер, клиент <-> сервер.

При установке соединения Cloud Connect все операции будут проходить через специальное UDP "соединение".

При попытке соединения запускается вспомогательный UPnP-механизм. Он проверяет в системе наличие роутеров, готовых работать по Internet Gateway Device (IGD).

При попытке соединения создается процесс Tube, который будет устанавливать и поддерживать соединения между конечными объектами.

Также запускается специальный механизм, предназначенный для нахождения оптимального способа соединения.

Как устанавливается соединение

Основное, что нужно понимать о установке соединения Cloud Connect, - это приоритет соединения.

Приоритет идет от наиболее оптимального P2P-соединения к соединению через реле (облачный сервер).

Понять, какое именно у вас соединение можно, открыв инженерное меню (F4) в конкретном сетевом подключении.

Эти данные заполняются по фактическому подключению. Самостоятельно сменить настройки можете только через данные параметры (исключить реле и DTUN).

Другими словами - вручную редактировать скрытые параметры нет смысла.

Ниже представлены режимы подключения от наивысшего приоритета к низшему.

Тропинки

Если облачный сервер может запустить UPnP-механизм, то он создает P2P-соединение.

При подключении сервер передает в базу данных облака данные о SHA-1-отпечатке, IP-адресе и портах.

При повторном подключении мы будем пробовать подключаться по этим данным, что позволит осуществлять наиболее быстрое подключение.

Требования для создания подключения по "Тропинкам":

  • Возможность прямого соединения с сервером в локальной сети
  • Доступность сервера через "белый" IP-адрес
  • Нахождение клиента и сервера в одной VPN

В инженерном меню trail_connection = 1

DTUN

Direct TUNnel - специальный протокол TRASSIR, позволяющий устанавливать соединение между двумя объектами за NAT.

DTUN может работать за NAT'ами, по аналогии с проколом STUN

В инженерном меню dtun_connection = 1

В отличии от p2p соединения, работает по UDP.

Direct TUNnel - это механизм в TRASSIR для установки надежных P2P (Peer-to-peer) соединений между клиентом, сервером, камерой и мобильным приложением.

DTUN может работать за NAT'ами, подобно тому, как это делает STUN. Однако, в отличие от STUN, DTUN может работать даже в том случае, когда один из NAT'ов в P2P соединении является симметричным.

Также DTUN позволяет устанавливать и поддерживать множество P2P соединений. Специальный механизм, называемый аллокатором портов, позволяет сделать так, чтобы NAT не рвал уже установившиеся соединения.

Есть два типа возможных механизмов создания и поддерживания сессии - "быстрая" рандеву-сессия и "симметричная" рандеву-сессия. Ниже описаны условия для их создания.

"Быстрая" рандеву сессия

Оба NAT'а не симметричны. Будем предполагать худший вариант - они оба port restricted.

Пусть есть хост A, хост B и хост R - рандеву сервер. Если A привязывается на порт x1 и отправляет датаграмму на порту x1 в R, то R увидит порт x1 как y1.

Однако, чтобы датаграмма хоста A была передана хосту B, B должен сначала отправить что-то хосту A на тот же порт, с которого A отправит свою датаграмму в B.

Грубо говоря, четвёрка A_ip:A_port - B_ip:B_port должна совпасть точно, чтобы всё заработало.

"Симметричная" рандеву сессия

Будем предполагать худший вариант: один из NAT'ов симметричный, а другой - port restricted.

Пусть есть хост A (за симметричным NAT'ом), хост B (за port restricted NAT'ом) и хост R - рандеву сервер. Если A привязывается на порт x1 и отправляет датаграмму на порту x1 в R, то R увидит порт x1 как y1.

Однако, если с этого же порта A отправит сообщение в B, то порт x1 будет виден в B как y2. Поэтому "быстрый" подход здесь не сработает.

Важно учитывать, что симметричные NAT'ы отличаются политикой аллокации портов:

  • последовательные (y2 = y1 + N), где y2 может быть предсказуемым, если известна "дельта" N. Однако таких NAT'ов не так много.
  • непредсказуемые, где y2 распределены по какому-то закону, чаще всего это просто равномерное распределение по диапазону 1024 - 65535. Таких NAT'ов гораздо больше.

Данная реализация обходит NAT с непредсказуемой аллокацией портов в случае, если порты распределены равномерно.

Простое p2p соединение

Если облачный сервер может запустить UPNP механизм, то он создает p2p соединение.

Визуально подключение не будет отличаться от двух методов выше. 

В инженерном меню все три типа _connection = 0

p2p соединение работает по протоколу TCP.

Relay (реле)

По сути подключение через ретранслятор, которым выступает облачный сервер TRASSIR.

При подобном подключении пользователь видит соответствующую плашку в соединении и получает соответствующие тарифу ограничения.

В инженерном меню relay_connection = 1

Поддержание стабильного соединения

В случае проблем с уже установившимся соединением P2P происходит следующее:

1. Если P2P соединение прожило более 1 минуты, то всё происходит как и раньше: мы снова идём на P2P.
2. Если P2P соединение прожило менее минуты, то оно считается нестабильным и мы сразу же идём на Relay.
3. Если вы сами отключите соединение и попытаетесь соединиться вновь, он НЕ пойдёт через Relay, а сначала попробует P2P.
4. По истечении 10 минут с момента последней проблемной P2P сессии, P2P вновь считается хорошим и мы будем пробовать идти через P2P снова.
5. Далее всё повторяется с шага "1".

Прописывание тропинок в личном кабинете облака

В ЛК облака, в разделе "Параметры" сервера есть поле "Доп. параметры Cloud Connect", для прописывания тропинок вручную.

Данное поле предназначено для указания нестандартных портов при асимметричном пробросе (3080 на 13080, например).

Это поле имеет смысл заполнять, если у вас соблюдены правила подключения по тропинкам (см. выше), но есть нестандартный проброс либо несколько способов подключиться (VPN и "белый" IP), и вы хотите прописать подключение по конкретному адресу из двух возможных.

Ограничения и особенности подключения Cloud Connect

Ограничения при передаче данных через Relay:

Ограничения при передаче данных через любое соединение:

  • Не работает функция синхронизации архива.
  • Не работают RTSP ссылки с сервера (для них требуется белый IP). Ссылки будут иметь вид rtsp://AsYX0ujf:554/qUedc0R7_m/ , где AsYX0ujf - guid сервера. В случае организации белого IP - вместо Guid укажите IP и ссылка будет рабочей.

Игорь Пешков