2014-10-13 4 views
6

ответвляющегося этого вопрос WebRTC - How many STUN/TURN servers do I need to specify?Как WebRTC решить, какой Turn серверов использовать

Как делает WebRTC определить, какой Turn серверов для использования при более чем один предусмотрен?

+0

Он организует кандидат ICE, собранные каждым из одного заданных их [приоритета, установленного на этапе сбора льда] (http://tools.ietf.org/html/rfc5245#section-4.1.2), и это (я имею в виду, что FF и Chrome предпочитают разные типы кандидатов). –

+0

@BenjaminTrent большое спасибо, я не наткнулся на это значение приоритета в RFC. Если хотите, добавьте это как ответ, и я приму это. – Ternary

ответ

6

Каждому кандидату на получение льда присваивается приоритет, когда он собирается. Это смесь нескольких вещей, и я считаю, что каждая платформа (Chrome, FireFox и т. Д.) Имеет свои собственные предпочтения.

Вот link to the RFC, объясняющий, как должны быть сгенерированы приоритеты. Каждый приоритет гарантированно будет уникальным, поскольку идентификатор кандидата должен быть уникальным (если соблюдается RFC). Таким образом, у вас никогда не должно быть привязки к приоритетам. Те, кто имеет более высокие приоритеты, сначала проверяются, если с ними невозможно установить соединение, тогда используется следующая строка.

Цитата из RFC Относительно приоритета:

При использовании формулы, агент вычисляет приоритет путем определения предпочтения для каждого типа кандидата (сервер рефлексивного, равный
рефлексивных, ретранслируются, и хост), и, когда агент многомодовый,
выбирает предпочтение для его IP-адресов. Эти два параметра
затем объединяются для вычисления приоритета для кандидата. Это
приоритет вычисляется по следующей формуле:

priority = (2^24)*(type preference) + 
       (2^8)*(local preference) + 
       (2^0)*(256 - component ID) 

Предпочтение типа должно быть целым числом от 0 до 126 включительно, и представляет предпочтение типа кандидата (где
типы являются локальными, сервер рефлексивными, рефлексивными и ретранслированными). A
126 является наивысшим приоритетом, а 0 является самым низким. Значение
значение 0 означает, что кандидаты этого типа будут использоваться только как
в последней инстанции. Предпочтение типа ДОЛЖНО быть одинаковым для всех
кандидатов одного типа и ДОЛЖНО быть другим для кандидатов
различных типов. Предпочтение типа для кандидатов-рефлексивников-сверстников
ДОЛЖНО быть выше, чем у рефлексивных кандидатов. Заметим, что
кандидаты, собранные на основании процедур раздела 4.1.1, будут
никогда не будут равными кандидатами; кандидаты этого типа:
узнали из проверок подключения, выполненных ICE.

Местное предпочтение ДОЛЖНО быть целым числом от 0 до 65535 включительно. Он представляет собой предпочтение для конкретного IP-адреса, из которого
был получен кандидат в случаях, когда агент является многотомным.
65535 представляет собой наивысший приоритет, а нуль - самый низкий.
При наличии только одного IP-адреса это значение ДОЛЖНО быть установлено на 65535. В более общем плане, если имеется несколько кандидатов для конкретного компонента для определенного медиапотока, который имеет тот же тип , местные предпочтения ДОЛЖНЫ быть уникальными для каждого. В этой спецификации
это происходит только для многоходовых хостов.Если хост
многосетевым, потому что это двойной стек, локальное предпочтение следует
устанавливается равным значению приоритета для IP-адресов, описанным в RFC
3484 [RFC3484].

Идентификатор компонента - это идентификатор компонента для кандидата, и ДОЛЖЕН быть между 1 и 256 включительно.

Вы можете видеть, что IP-адрес очереди и порт показаны в кандидате реле. Ниже приводятся значения the RFC page 82 и webrtc hacks.

a=candidate:2157334355<ID> 2<Component> udp<NetType> 33562367<Prioirty> 180.6.6.6<NAT pub IP> 54278<NAT pub Port> typ relay<Means it needs to be relayed through Turn> raddr 46.2.2.2<Relay address of turn> rport 38135<relay port of turn> generation 0 
+1

Кажется, что Chrome (Blink) также изменяет локальные предпочтения по расстоянию/задержке. При использовании серверов с несколькими оборотами более близкие, как правило, имеют гораздо более высокий приоритет. – Someone

Смежные вопросы