2014-10-13 18 views
6

dirama questa domanda WebRTC - How many STUN/TURN servers do I need to specify?Come si fa a decidere che si trasformano WebRTC Server utilizzare

come si fa a determinare WebRTC che si trasformano i server da utilizzare quando più di uno è fornito?

+0

organizza i candidati ICE raccolti da ciascuno dato il loro [la priorità impostata durante la fase di raccolta del ghiaccio] (http://tools.ietf.org/html/rfc5245#section-4.1.2) e questo è specifica di implementazione credo (nel senso che FF e Chrome preferiscono diversi tipi di candidati). –

+0

@BenjaminTrent grazie mille, non mi sono imbattuto in quel valore prioritario nella RFC. Se ti piace, aggiungilo come risposta e lo accetterò. – Ternary

risposta

6

Ogni candidato Ice riceve una priorità quando viene raccolto. È un mix di un paio di cose e credo che ogni piattaforma (Chrome, FireFox, ecc.) Abbia le proprie preferenze.

Ecco uno link to the RFC che spiega come devono essere generate le priorità. Ogni priorità è garantita in modo univoco in quanto l'ID candidato deve essere univoco (se viene seguito l'RFC). Quindi, non dovresti mai avere un pareggio nelle priorità. Quelli con priorità più alte vengono provati per primi, se non è possibile stabilire una connessione con loro, viene utilizzato il successivo in linea.

citazione dalla RFC Riguardo priorità:

Quando si utilizza la formula, un agente calcola la priorità determinando una preferenza per ogni tipo di candidato (server riflessiva, scrutare
riflessiva, ritrasmesso, ed ospite) e, quando l'agente è multihomed,
, scegliere una preferenza per i relativi indirizzi IP. Queste due preferenze
vengono quindi combinate per calcolare la priorità per un candidato. Che
priorità viene calcolata utilizzando la seguente formula:

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

Il tipo preferenza deve essere un intero da 0 a 126 incluso e rappresenta la preferenza per il tipo del candidato (dove il
I tipi sono locali, riflessivi server, riflessivi peer e inoltrati). A
126 è la preferenza più alta e uno 0 è il più basso. L'impostazione del valore a 0 significa che i candidati di questo tipo verranno utilizzati solo come
l'ultima risorsa. La preferenza tipo DEVE essere identica per tutti i
candidati dello stesso tipo e DEVE essere diversa per i candidati di
tipi diversi. La preferenza di tipo per i candidati riflessivi peer
DEVE essere superiore a quella dei candidati riflessivi server. Si noti che
i candidati raccolti in base alle procedure della Sezione 4.1.1 saranno
non essere mai candidati peer riflessivi; i candidati di questo tipo sono
appreso dai controlli di connettività eseguiti da ICE.

La preferenza locale DEVE essere un numero intero compreso tra 0 e 65535 inclusi. Rappresenta una preferenza per il particolare indirizzo IP da cui è stato ottenuto il
candidato, nei casi in cui un agente è multihomed.
65535 rappresenta la preferenza più alta e uno zero il più basso.
Se esiste un solo indirizzo IP, questo valore DOVREBBE essere impostato su 65535. Più in generale, se ci sono più candidati per un particolare componente per un particolare flusso multimediale che hanno lo stesso tipo , la preferenza locale DEVE essere unica per ognuno. In questa specifica
, ciò si verifica solo per gli host multihomed.Se un host è multihomed perché è dual stack, la preferenza locale DOVREBBE essere
impostato uguale al valore di precedenza per gli indirizzi IP descritti in RFC
3484 [RFC3484].

L'ID componente è l'ID componente per il candidato e DEVE essere tra 1 e 256 inclusi.

È possibile visualizzare l'IP del server di svolta e la porta viene mostrata in un candidato di inoltro. Quanto segue è derivato da the RFC page 82 e 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

Sembra che Chrome (Blink) modifichi anche le preferenze locali per distanza/latenza. Quando si usano più server di turno, quelli più vicini hanno in genere una priorità molto più alta. – Someone