Como o Chrome / webRTC seleciona qual servidor TURN usar se várias opções forem fornecidas?

2

Ao passar várias opções de TURN para RTCPeerConnection, e assumindo que várias delas são tecnicamente utilizáveis, como o servidor real é selecionado?

O desempenho da rede desempenha algum papel?

    
por Someone 28.04.2014 / 21:17

1 resposta

0

O RFC do ICE não especifica o que acontece quando vários servidores TURN estão disponíveis:

This specification only considers usage of a single STUN or TURN server. When there are multiple choices for that single STUN or TURN server (when, for example, they are learned through DNS records and multiple results are returned), an agent SHOULD use a single STUN or TURN server (based on its IP address) for all candidates for a particular session. This improves the performance of ICE. The result is a set of pairs of host candidates with STUN or TURN servers. The agent then chooses one pair, and sends a Binding or Allocate request to the server from that host candidate.

Portanto, qualquer comportamento em particular não deve ser esperado.

Atualmente, o WebRTC escolhe o primeiro servidor que corresponde aos critérios fornecidos. Por exemplo. primeiro servidor que suporta UDP para conexão UDP.

basicportallocator.cc :

void AllocationSequence::CreateUDPPorts() {
...
  // If STUN is not disabled, setting stun server address to port.
  if (!IsFlagSet(PORTALLOCATOR_DISABLE_STUN)) {
    // If config has stun_address, use it to get server reflexive candidate
    // otherwise use first TURN server which supports UDP.
    if (config_ && !config_->stun_address.IsNil()) {
      LOG(LS_INFO) << "AllocationSequence: UDPPort will be handling the "
                   <<  "STUN candidate generation.";
      port->set_server_addr(config_->stun_address);
    } else if (config_ &&
               config_->SupportsProtocol(RELAY_TURN, PROTO_UDP)) {
      port->set_server_addr(config_->GetFirstRelayServerAddress(
          RELAY_TURN, PROTO_UDP));
      LOG(LS_INFO) << "AllocationSequence: TURN Server address will be "
                   << " used for generating STUN candidate.";
    }
  }
...
    
por 27.06.2014 / 15:31

Tags