Saltar para o conteúdo principal
Tempo real e peer-to-peer

Desenvolvimento WebRTC e peer-to-peer

Construímos sistemas em tempo real e peer-to-peer: ligar duas máquinas diretamente através de redes hostis, manter a latência baixa o suficiente para interação ao vivo e recorrer a um relay autenticado quando não é possível estabelecer um percurso direto.

O que está incluído

O que significa aqui tempo real e peer-to-peer

Ligar dois dispositivos diretamente é mais difícil do que parece: a maioria está atrás de NAT e firewalls que recusam tráfego não solicitado. Construímos o percurso completo: o NAT traversal, a coordenação que o estabelece e um relay autenticado para os casos em que a ligação direta não é possível.

No âmbito
  • Ligações peer-to-peer diretas através de NAT e firewalls
  • Coordenação de sessões: quem liga a quem, e quando
  • Relay autenticado de recurso para redes restritivas
  • Transporte cifrado entre pares, com identidade verificada
  • Canais de áudio, vídeo e dados de baixa latência
  • Bitrate adaptativo que reage às condições de rede em direto
Como trabalhamos

Como construímos sistemas em tempo real

Projetamos para a rede que realmente tem, e não para a do diagrama. Essa rede perde pacotes, é assimétrica e está cheia de middleboxes. Cada camada é medida em condições reais.

  1. 1

    Modelo de conectividade

    Analisamos as condições reais da sua rede (classes de NAT, firewalls, a fração de utilizadores que vai precisar de um relay) e desenhamos a estratégia de ligação a partir delas.

  2. 2

    Coordenação e transporte

    Um serviço de sinalização coordena os pares; o transporte é cifrado e a identidade verificada, com um relay autenticado como recurso.

  3. 3

    Pipeline de multimédia

    Onde há multimédia ao vivo em jogo, codificação e descodificação que adaptam a qualidade à largura de banda e à latência da ligação.

  4. 4

    Testes de resiliência

    Testamos nas classes de NAT mais comuns e em ligações degradadas, confirmando que o relay de recurso entra de forma limpa quando um percurso direto falha.

  5. 5

    Operar e observar

    Métricas sobre o sucesso das ligações, a taxa de recurso ao relay e a qualidade do stream, para que veja como o sistema se comporta no mundo real, e não apenas no laboratório.

Entregáveis

O que recebe

Uma camada de conectividade que funciona na internet real, com a observabilidade para o comprovar e a documentação para a assumir.

O que recebe
  • Uma camada de ligação peer-to-peer com NAT traversal e relay de recurso
  • Um serviço de sinalização para a coordenação de sessões e pares
  • Transporte cifrado entre pares, com identidade verificada
  • Um percurso de multimédia com bitrate adaptativo, onde for necessário áudio/vídeo ao vivo
  • Métricas de sucesso de ligação e de taxa de recurso ao relay integradas
  • Documentação de arquitetura e uma transição para a sua equipa
Stack e abordagem

Como construímos a camada de conectividade

RustNAT traversalSinalizaçãoRelay autenticadoTransporte cifradoMultimédia com bitrate adaptativo

Desenhamos a camada de conectividade à medida das condições reais da sua rede: direta sempre que a rede o permite e, quando não permite, através de um relay autenticado. Cada sessão é cifrada e cada identidade verificada.

Perguntas

Perguntas sobre tempo real e P2P

Todas as ligações passam a peer-to-peer?

A maioria consegue, mas nem todas as redes permitem um percurso direto. Um design fiável liga diretamente sempre que a rede o permite e, quando não permite, através de um relay autenticado. Assim a ligação mantém-se mesmo quando o verdadeiro peer-to-peer não é possível.

Isto é o mesmo que usar um serviço WebRTC alojado?

O WebRTC é um conjunto de blocos de construção; um serviço alojado envolve-os com a sinalização, os relays e os preços de outra pessoa. Podemos construir sobre WebRTC onde se adequa, ou implementar a camada de conectividade diretamente quando precisa de controlo sobre o transporte, o relay e o local por onde os dados fluem. Recomendamos o que servir as suas necessidades de latência, custo e residência de dados.

Como mantêm as ligações entre pares seguras?

O transporte é cifrado e a identidade verificada, por isso os pares sabem exatamente com quem estão a falar antes de circular qualquer dado, e um ataque man-in-the-middle não passa despercebido. Quando é usado, o relay é autenticado; não é um canal aberto.

Conseguem manter a multimédia fluida numa ligação fraca?

Sim. Construímos uma escala de bitrate adaptativa que responde à largura de banda e ao tempo de ida e volta em direto, sacrificando detalhe em favor da fluidez apenas quando é necessário. O stream escolhe o codec e o bitrate adequados à ligação em tempo real.

Ligar dispositivos é o nosso território.

Diga-nos o que precisa de comunicar com o quê, através de quaisquer redes que se interponham, e desenhamos uma ligação que aguenta.