2014-10-13 10 views
6

Odgałęzienie to pytanie WebRTC - How many STUN/TURN servers do I need to specify?Jak WebRTC zdecydować, które obracają Serwery korzystać

jaki sposób określić, które WebRTC Turn serwerów korzystać więcej niż jedna jest?

+0

Organizuje kandydatów ICE zgromadzonych przez każdego jednego okresu ich [Priorytet ustawiony na etapie zbierania lód] (http://tools.ietf.org/html/rfc5245#section-4.1.2) i jest to konkretna implementacja jest moim zdaniem (co oznacza, że ​​FF i Chrome preferują różne typy kandydatów). –

+0

@ BenjaminTrent, dziękuję bardzo, nie natknąłem się na tę wartość priorytetową w RFC. Jeśli chcesz, dodaj to jako odpowiedź, a ja to zaakceptuję. – Ternary

Odpowiedz

6

Każdy kandydat na Ice otrzymuje priorytet, gdy zostanie zebrany. Jest to mieszanka kilku rzeczy i wierzę, że każda platforma (Chrome, FireFox itp.) Ma swoje własne preferencje.

Oto link to the RFC wyjaśniające, jak należy generować priorytety. Każdy priorytet ma unikalny charakter, ponieważ identyfikator kandydata powinien być niepowtarzalny (jeśli przestrzegane są RFC). Więc nigdy nie powinieneś mieć powiązań w priorytetach. Osoby o wyższych priorytetach są najpierw testowane, jeśli nie można nawiązać z nimi połączenia, wówczas używany jest następny wiersz.

żądanie z RFC odniesieniu do pierwszeństwa:

Przy użyciu wzoru, środek oblicza się priorytet określenia preferencją dla każdego typu kandydata (serwera zwrotny peer
zwrotne, przekazywana i szereg), a gdy agent jest wieloadresowy, wybiera preferencje dla swoich adresów IP. Te dwie preferencje są następnie łączone w celu obliczenia priorytetu dla kandydata. To
priorytet jest obliczany za pomocą następującego wzoru:

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

Preferencja rodzaju musi być liczbą całkowitą od 0 do 126 włącznie, oznacza preferencję dla typu kandydata (gdzie
typy są lokalne, serwerowe, refleksyjne i przekazywane). A jest najwyższą preferencją, a 0 jest najniższą wartością. Ustawienie wartości 0 na 0 oznacza, że ​​kandydaci tego typu będą używani tylko w ostateczności. Preferencje typu MUSZĄ być identyczne dla wszystkich kandydatów tego samego typu i MUSZĄ być różne dla kandydatów o różnych typach. Preferencje typu dla kandydatów z oceną rówieśniczą muszą być wyższe niż kandydatów serwera refleksyjnego. Należy pamiętać, że kandydaci zgromadzeni na podstawie procedur określonych w Sekcji 4.1.1 będą zawsze kandydatami refleksyjnymi; kandydaci tego typu są uczyli się na podstawie testów łączności przeprowadzonych przez ICE.

Lokalna preferencja MUSI być liczbą całkowitą od 0 do 65535 włącznie. Reprezentuje preferencję dla konkretnego adresu IP, z którego otrzymano kandydata, w przypadku, gdy agent jest wieloadresowy.
65535 reprezentuje najwyższą preferencję, a zero, najniższą.
Jeśli istnieje tylko jeden adres IP, wartość ta powinna być ustawiona na 65535. Mówiąc ogólniej, jeśli istnieje wiele kandydatów na dany komponent dla określonego strumienia mediów, które mają ten sam typ , lokalne preferencje MUSZĄ być unikalne dla każdego. W tej specyfikacji
dzieje się tak tylko w przypadku hostów wieloadresowych.Jeśli host jest w trybie wieloadresowym, ponieważ jest to podwójny stos, lokalna preferencja powinien być ustawiona na wartość równą wartości priorytetu dla adresów IP opisanych w dokumencie RFC
[RFC3484].

Identyfikator komponentu jest identyfikatorem komponentu dla kandydata i MUSI być między 1 a 256 włącznie.

Możesz zobaczyć serwer i adres serwera zwrotnego, który jest wyświetlany jako kandydat na przekaźnik. Poniższe pochodzi z the RFC page 82 i 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

Wygląda na to, że Chrome (Mrugnięcie) modyfikuje również lokalne preferencje według odległości/opóźnienia. Podczas korzystania z wielu serwerów zwrotnych, bliższe mają zwykle znacznie wyższy priorytet. – Someone