Cómo funciona

Un paquete, cuatro relevos

PLY se conecta al sistema, no a la aplicación. macOS entrega un paquete IP entero al Packet Tunnel del sistema, y el servidor trae la respuesta por el mismo camino protegido.

  1. 01 · Cliente

    La aplicación usa la red de siempre

    Un navegador, un terminal, una llamada o un protocolo escrito por ti ven una interfaz del sistema y la tratan como siempre. PLY nunca inspecciona el contenido de TCP y UDP ni reescribe su semántica, así que no hay nada con lo que una aplicación pueda tropezar.

  2. 02 · Packet Tunnel

    El sistema entrega IP en bruto

    Una Network System Extension levanta utun y pasa paquetes IP enteros al cliente Rust por un puente local. El puente solo admite un proceso del mismo usuario.

  3. 03 · Transporte

    El planificador reparte los paquetes entre enlaces

    Los datagramas UDP cifrados viajan por los trayectos que el servidor confirmó con sondas. El planificador decide qué trayecto se lleva cada paquete y cuánta redundancia gastar en él. Las confirmaciones, el FEC y el control de congestión siguen funcionando mientras un enlace se degrada.

  4. 04 · Salida

    Linux enruta el tráfico o aplica NAT

    Un TUN persistente en el servidor suelta el tráfico permitido en una red enrutada, o por el enlace de salida elegido con MASQUERADE. Para el mundo exterior el tráfico sale desde la dirección del servidor, no desde la del Mac.

Dentro del camino de datos

Qué le pasa al paquete por el camino

  • MTU y fragmentación

    El cliente fija un MTU explícito en utun. Lo que sea más grande lo parte el propio transporte y lo reconstruye al otro lado, así que un enlace con MTU pequeño no tumba la conexión entera.

  • Cifrado

    Cada datagrama sale cifrado. Las claves viven en épocas y rotan con la sesión en marcha, un único contador emite todos los nonce del proyecto, y el receptor descarta un datagrama repetido contra su ventana antirreplay.

  • Elección de trayecto y redundancia

    La importancia sale solo de la cabecera del paquete: el DSCP que ya puso la aplicación o el router, y el papel de un paquete TCP, porque perder una confirmación simple cuesta un tiempo de espera entero mientras que perder un segmento de una transferencia masiva cuesta una sola retransmisión. Nadie mira la carga útil. La redundancia se calcula para cada mensaje a partir de esa importancia, las puntuaciones de los trayectos y el tiempo que queda.

  • El camino de vuelta

    La respuesta vuelve por donde vino. El servidor recuerda qué dispositivo tiene qué dirección y no entregará la respuesta de otro a un puerto que coincida.

Cuando un trayecto falla

Un trayecto cuenta como vivo cuando su salida está verificada

Atar un socket a una dirección no demuestra nada. El sistema todavía puede mover ese tráfico a otra interfaz, dejando dos filas en la interfaz que en realidad son un solo enlace físico y un multitrayecto que existe solo sobre el papel. PLY envía sondas y comprueba desde qué dirección pública llegan al servidor. Hasta que esa dirección se confirma, el trayecto no lleva tráfico real.

  • ACTIVESalida verificada; el trayecto transporta.
  • PROBINGLas sondas están en marcha; todavía sin tráfico real.
  • MUTEDApartado por ahora, se sigue comprobando.
  • DEADRetirado. Vuelve solo tras una comprobación nueva.