Como funciona

Um pacote, quatro passagens

O PLY liga-se ao sistema, não à aplicação. O macOS entrega um pacote IP inteiro ao Packet Tunnel do sistema, e o servidor traz a resposta pelo mesmo caminho protegido.

  1. 01 · Cliente

    A aplicação usa a rede de sempre

    Um navegador, um terminal, uma chamada ou um protocolo escrito por ti veem uma interface do sistema e tratam-na como sempre. O PLY nunca inspeciona o conteúdo de TCP e UDP nem reescreve a sua semântica, por isso não há nada em que uma aplicação possa tropeçar.

  2. 02 · Packet Tunnel

    O sistema entrega IP em bruto

    Uma Network System Extension levanta o utun e passa pacotes IP inteiros ao cliente Rust por uma ponte local. A ponte só admite um processo do mesmo utilizador.

  3. 03 · Transporte

    O escalonador distribui os pacotes pelas ligações

    Os datagramas UDP cifrados viajam pelos trajetos que o servidor confirmou por sonda. O escalonador decide que trajeto leva cada pacote e quanta redundância gastar nele. As confirmações, o FEC e o controlo de congestão continuam a funcionar enquanto uma ligação se degrada.

  4. 04 · Saída

    O Linux encaminha o tráfego ou aplica NAT

    Um TUN persistente no servidor solta o tráfego permitido numa rede encaminhada, ou pela ligação de saída escolhida com MASQUERADE. Para o mundo lá fora o tráfego sai do endereço do servidor, não do endereço do Mac.

Dentro do caminho de dados

O que acontece ao pacote pelo caminho

  • MTU e fragmentação

    O cliente define um MTU explícito no utun. O que for maior é o próprio transporte que parte e volta a juntar do outro lado, por isso uma ligação com MTU pequeno não deita abaixo a ligação inteira.

  • Cifragem

    Cada datagrama sai cifrado. As chaves vivem em épocas e rodam com a sessão a correr, um único contador emite todos os nonce do projeto, e o recetor descarta um datagrama repetido contra a sua janela anti-repetição.

  • Escolha de trajeto e redundância

    A importância vem só do cabeçalho do pacote: o DSCP que a aplicação ou o router já colocou, e o papel de um pacote TCP, porque perder uma confirmação simples custa um tempo de espera inteiro enquanto perder um segmento de uma transferência em massa custa uma única retransmissão. Ninguém olha para a carga útil. A redundância é calculada para cada mensagem a partir dessa importância, das pontuações dos trajetos e do tempo que resta.

  • O caminho de volta

    A resposta volta pelo mesmo sítio. O servidor lembra-se de que dispositivo tem que endereço e não entrega a resposta de outro a uma porta que calhe coincidir.

Quando um trajeto falha

Um trajeto conta como vivo quando a saída está verificada

Ligar um socket a um endereço não prova nada. O sistema ainda pode mover esse tráfego para outra interface, deixando duas linhas na interface que na verdade são uma só ligação física e um multitrajeto que existe apenas no papel. O PLY envia sondas e verifica de que endereço público chegam ao servidor. Até esse endereço estar confirmado, o trajeto não leva tráfego real.

  • ACTIVESaída verificada; o trajeto está a transportar.
  • PROBINGAs sondas estão a correr; ainda sem tráfego real.
  • MUTEDPosto de lado por agora, continua a ser verificado.
  • DEADRetirado. Só regressa depois de nova verificação.