Skype for Business Edge STUN против TURN

В ходе внедрения QoS для Skype for Business от коллег поступили вопросы касаемо прохождения трафика от клиента Skype for Business к клиенту Skype for Business внутри сети, к федеративному партнеру, к клиенту находящемуся за периметром локальной сети. В этой статье мы рассмотрим работу протокола Interactive Connectivity Establishment (ICE) применительно к  Skype for Business Server, а точнее к передаче аудио\видео трафика и предоставления общего доступа к рабочему столу. Данная статья будет очень полезна для понимания процессов передачи медиа трафика между клиентами, а соответственно для поиска решения проблем возникающих в ходе эксплуатации Skype for Business.

В Skype for Business почти каждый клиент или сервер может быть клиентом ICE (например Front-End AVMCU, Mediation Server, Windows Client) и использовать Edge Server для связи между собой(например сеанс аудио связи). При этом Edge Server определяется как ICE сервер обеспечивающий информацией ICE клиентов для инициализации сеанса связи.

Основы  Media Traversal

ICE  предоставляет два уровня решения, при этом каждый клиент Skype for Business и Skype for Business сервер могут использовать их для связи между собой.

  • Session Traversal Utilities for NAT (STUN) – это протокол, который позволяет клиенту, находящемуся за сервером трансляции адресов (или за несколькими такими серверами), определить свой внешний IP-адрес, способ трансляции адреса и порт во внешней сети, связанный с определённым внутренним номером порта. Эта информация используется для установления соединения UDP между двумя хостами в случае, если они оба находятся за маршрутизатором NAT.
  • Traversal Using Relays around NAT (TURN) — это протокол, который позволяет узлу за NAT или брандмауэром получать входящие данные через TCP или UDP соединения. Этот протокол позволяет определить ICE сервер на публичном адресе и использовать его как relay или proxy для медиа сессий.

ICE сервер (применительно к Skype for Business – это роль Edge) используется для настройки медиа сессии. Основное различие между этими двумя решениями — это то, что медиа трафик идет напрямую между клиентами в случае с STUN и ретранслируется через Edge Server в случае с TURN.

В любом сеансе связи Skype for Business с использованием аудио/видео, предоставление доступа к рабочему столу, либо при их комбинации существует три возможных маршрута для потока данных между двумя узлами. В независимости от того, создается  сеанс с двумя абонентами или это конференция между несколькими участниками, все равно существует только две точки в сессии (например клиент-клиент, либо клиент-сервер). Когда два клиента пытаются установить сеанс, то в этом случае каждый клиент посылает другому клиенту список возможных кандидатов на сеанс. Если Edge сервер не развернут или не доступен то список будет содержать только локальных кандидатов( т.е. каждого из клиентов) в противном случае список дополнится.

  • Host or Local Candidate – IP адрес хоста клиента. Может включать в себя несколько кандидатов: хост может содержать несколько физических или виртуальных сетевых адаптеров, клиенты VPN. Чаще всего это будет один IP – адрес интерфейса на рабочей станции клиента Skype for Business.
  • Reflexive or STUN Candidate – Публичный IP присвоенный брандмауэру выполняющему трансляцию сетевых адресов. В большинстве домашних сетей это будет публичный адрес присвоенный провайдером (статически или динамически) прописанный на модеме или роутере.
  • Relay or TURN Candidate – публичный ip адрес сервера ретранслятора(Skype for Business Edge) который выделяется клиенту. В Skype for Business Server это публичный ip адрес назначается на внешний A/V Edge интерфейс или публичный ip выделенный устройству NAT(например межсетевой экран) который выполняет статическую трансляцию сетевого адреса в частный адрес Edge сервера. Если развернут Edge пул то это будет ip адрес одного из серверов входящих в пул.

При установке сессии абоненты получают информацию: список IP адресов, портов и протоколов которую имеет абонент(хост) а также информацию которую использует Edge Server (ip адреса сервера и межсетевого экрана). При этом клиент будет выбирать лучший вариант (если доступно несколько вариантов) предпочитая более «прямые» пути чем ретрансляцию.

Для того чтобы установить соединение по одному из этих путей клиент должен проверить список кандидатов, открыв соединения со всеми из списка одновременно. Хотя есть предпочтительный порядок проверки кандидатов, но клиенты будут пытаться открыть соединения со всеми сразу. Это явление зачастую приводит к ошибкам при устранении проблем если клиентский трафик захватывается во время установки сеанса между двумя клиентами находящимися в той же сети и не нуждаются в ретрансляции трафика Edge сервером. В этом случае будут видны попытки подключения к каждому IP адресу представленных в списке кандидатов. Такое поведение связано с поддержкой в Skype for Business Server — EarlyMedia (SIP 183 Session Progress) сообщений, которые позволяют Skype for Business установить соединение до того как вызываемый абонент ответит. Это сделано для уменьшения или устранения задержек при установке соединения с абонентами.

Следует понимать, что иногда выбранный путь не может быть лучшим выбором в течении всей сессии. Поэтому Skype for Business поддерживает механизм Candidate Promotion (через SIP – Re-INVITE), который обеспечивает изменение пути медиа трафика во время сеанса без потерь медиа данных или сигнализации. На практике подобный сценарий встречается редко, так как первый кандидат является лучшим (а зачастую и единственным).

Сценарии установки медиа сеанса

Рассмотрим сценарии, когда клиент Skype for Business попытается установить различные типы сессий с другим клиентом Skype for Business. Это может быть аудио/видео звонок, либо предоставление доступа к рабочему столу клиента. В этих сценариях будут рассмотрены основные моменты и различия в:  локальных, reflexive (STUN), relay (TURN) сессиях.

Сценарий External Peer-to-Peer

Skype for Business Edge STUN против TURN

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

  1. Наиболее предпочтительный путь всегда является локальным (на рисунке он обозначен красным цветом) поэтому при нахождении клиентов в одной сети они никогда не будут использовать Edge. Но в этом сценарии два клиента находятся в разных сетях, поэтому напрямую соединится у них не получится.
  2. Следующим предпочтительным вариантом является использование «reflexive candidate» — обеспечивается Edge сервером (используя STUN). В большинстве случаев такое соединение будет разрешено брандмауэром сети вызываемого абонента. Как это работает описано в следующем разделе.
  3. Когда все остальные варианты будут недоступны, Skype for Business будет использовать Edge Server в качестве релея.

В итоге можно описать ситуацию таким образом: после определения невозможности соединится напрямую выбирается путь через брандмауэры этих сетей, и если это невозможно то используется Edge Server в качестве ретранслятора медиа трафика.

Сценарий Mixed Peer-to-Peer

Skype for Business Edge STUN против TURN

В этом сценарии один абонент находится в своей домашней сети(т.е внешний клиент) а другой находится в корпоративной сети (т.е внутренний клиент).

  1. Так же как и в предыдущем сценарии, прямой путь невозможен, поскольку внешний клиент не сможет найти локальный ip внутреннего клиента
  2. Сервер reflexive кандидата внутреннего клиента имеет публичный ip корпоративного брандмауэра, и зачастую корпоративный брандмауэр не позволяет STUN трафик на внутреннего клиента с целью его защиты, поэтому проверка доступности узла в этом случае не пройдет. В этом случае Skype for Business будет использовать следующий способ связи.
  3. Так как все остальные способы недоступны Skype for Business будет использовать Edge Server в качестве релея.

В этом сценарии корпоративный брандмауэр не позволит использовать STUN так как необходимо будет создавать отдельные правила для каждого клиента в корпоративной сети что абсолютно недопустимо, поэтому будет использоваться Edge Server в качестве релея.

Сценарий Client-to-Server

Skype for Business Edge STUN против TURN

В этом сценарии присутствуют несколько клиентов и серверных ролей Skype for Business.

Исходные данные: внешний клиент(допустим из дома) подключается к конференции и отправляет свои медиа данные на Front End Server.

  • В случае с конференцией внутренние абоненты транслируют трафик на Front End.
  • FE в случае с внешними клиентами ведет себя также как и внутренние клиенты Skype for Business в предыдущем примере, т.е транслирует медиа трафик через Edge Server.
  • Edge Server является ICE сервером, поскольку он обеспечивает связь между клиентами путем предоставления информации о кандидатах в начале, и ретрансляции данных в течении всей конференции.
  • Внутренние клиенты передают данные, игнорируя Edge Server. Edge будут использовать только внешние клиенты(например федеративные Skype for Business клиенты).

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *