Circuit Relay (Retransmissor de Circuito)

"O protocolo de retransmissão de circuito, ou "Circuit Relay", é um componente essencial da biblioteca libp2p, que facilita sistemas peer-to-peer (p2p). Ele permite que o tráfego seja roteado entre nós na rede através de um terceiro nó, chamado de nó de retransmissão. Isso é útil quando os nós não podem atravessar suas configurações NAT ou firewall, tornando-os inacessíveis publicamente ou incapazes de compartilhar protocolos de transporte comuns."

O protocolo de retransmissão de circuito, também conhecido como "Circuit Relay", é um componente essencial da biblioteca libp2p, um conjunto de protocolos de rede modulares que facilitam a criação de sistemas peer-to-peer (p2p, ou ponto a ponto). O retransmissor de circuito permite que o tráfego seja roteado entre dois nós na rede através de um terceiro nó, conhecido como "relay" ou nó de retransmissão.

Em muitos casos, os nós podem não ser capazes de atravessar suas configurações NAT (Network Address Translation) ou firewall de uma maneira que os tornem acessíveis publicamente. Além disso, eles podem não compartilhar protocolos de transporte comuns que permitiriam uma comunicação direta. Nessas situações, a arquitetura p2p é habilitada através do protocolo p2p-circuit definido pelo libp2p. Quando um nó não pode escutar em um endereço público, ele pode discar para um nó de retransmissão que manterá uma conexão de longa duração aberta. Outros nós serão capazes de discar através do nó de retransmissão usando um endereço p2p-circuit, que encaminhará o tráfego para seu destino.

Inspirado pelo protocolo TURN, que faz parte da coleção de técnicas de travessia NAT do Estabelecimento de Conectividade Interativa (ICE), o protocolo de retransmissão de circuito não é "transparente". Isso significa que tanto a fonte quanto o destino estão cientes de que o tráfego está sendo retransmitido. Esta é uma característica útil, pois o nó de destino pode ver o endereço de retransmissão usado para abrir a conexão e potencialmente usá-lo para construir um caminho de volta para a fonte. Todos os participantes são identificados usando seu ID de Peer, incluindo o nó de retransmissão.

Atualmente, existem duas versões do protocolo de retransmissão de circuito, v1 e v2, sendo a última a recomendada. Cada circuito de retransmissão é identificado usando um "multiaddr" que inclui o ID do Peer cujo tráfego está sendo retransmitido.

Para exemplificar o funcionamento do endereço de retransmissão, imagine um nó com o ID de Peer QmAlice. Alice deseja fornecer seu endereço para seu amigo QmBob, mas está atrás de um NAT que não permitirá que ninguém a chame diretamente. Alice pode então fornecer a Bob um endereço do tipo /p2p/QmRelay/p2p-circuit/p2p/QmAlice, que inclui a identidade de um nó de retransmissão específico, QmRelay. Se Bob já souber como abrir uma conexão com QmRelay, ele poderá alcançar Alice.

O processo de retransmissão de circuito envolve várias etapas. Primeiro, o nó A (que está atrás de um NAT e/ou firewall) solicita uma reserva com o nó de retransmissão R, pedindo a R para escutar as conexões que chegam em seu nome. Quando o nó B quer estabelecer uma conexão com o nó A, e sabendo que o nó A não anuncia nenhum endereço direto, apenas um endereço de retransmissão, o nó B se conecta ao nó de retransmissão R, pedindo a R para retransmitir uma conexão para A. O nó de retransmissão R, então, encaminha a solicitação de conexão para o nó A e, eventualmente, retransmite todos os dados enviados por A e B.

Em suma, o retransmissor de circuito é uma parte vital da infraestrutura do libp2p, fornecendo um meio de facilitar a comunicação entre nós em diferentes redes ou em situações onde as conexões diretas são difíceis ou impossíveis. Apesar dos desafios, como o potencial de sobrecarga de recursos e a dependência de nós de retransmissão, o protocolo de retransmissão de circuito continua sendo um elemento essencial para a resiliência e adaptabilidade do libp2p.

Last updated