4 puntos por GN⁺ 2026-03-21 | 1 comentarios | Compartir por WhatsApp
  • noq, desarrollado por el equipo de n0, es una implementación de QUIC de propósito general escrita en Rust que admite multipath y NAT traversal
  • Se desarrolló como una base de código independiente para resolver las limitaciones de la estructura basada en Quinn de iroh
  • Incluye diversas funciones como QUIC Multipath, NAT Traversal, Address Discovery, extensiones de QLog y WeakConnectionHandle
  • Se usa en producción desde iroh v0.96 y ya completó pruebas de interoperabilidad con picoquic
  • A futuro, seguirá colaborando con el grupo de trabajo de QUIC y el equipo de Quinn, con la meta de convertirse en una tecnología base para desarrolladores de aplicaciones de red basadas en Rust

Anuncio de noq

  • noq es una implementación de QUIC de propósito general desarrollada por el equipo de n0, con soporte para multipath y NAT traversal
  • Se utiliza como capa de transporte desde iroh v0.96 y puede usarse para fines generales, no solo dentro de iroh

Transición de Quinn a noq

  • iroh usaba QUIC sobre Quinn, pero había muchas funciones complejas, como NAT traversal y cambio de ruta, que debían manejarse fuera de QUIC
  • Debido a estas limitaciones estructurales, se decidió hacer un hard fork de Quinn porque era difícil aplicar modificaciones externas
  • Manteniendo la colaboración con Quinn, el proyecto cambió de rumbo hacia una base de código independiente para satisfacer los requisitos específicos de iroh

Funciones principales de noq

  • QUIC Multipath

    • Implementa por completo la especificación de QUIC Multipath, integrando las rutas de relay y directas de iroh (IPV4, IPV6) como conceptos de ruta de primera clase dentro de QUIC
    • Mantiene el estado de control de congestión para cada ruta y permite elegir la ruta óptima
    • Antes, iroh manipulaba las rutas por debajo de QUIC, pero ahora QUIC mismo las reconoce y las administra
    • Está diseñado como una implementación multipath de propósito general que también puede usarse fuera de iroh
  • QUIC NAT Traversal

    • Implementa, a partir de una interpretación propia, el borrador de QUIC NAT Traversal, y se menciona como el primer caso con estabilidad de nivel de producción
    • Ya fue probado en condiciones reales en cientos de miles de dispositivos con iroh
    • Realiza hole punching de NAT directamente en la capa QUIC, lo que permite un funcionamiento más preciso del controlador de congestión y la detección de pérdidas
  • QUIC Address Discovery

    • Usa QUIC Address Discovery (QAD) desde iroh v0.32
    • Aprende la dirección IP pública del cliente mediante una conexión QUIC en lugar de usar STUN
    • El envío de paquetes cifrados ayuda a evitar la rigidización del protocolo y refuerza la privacidad
  • Extensiones de QLog

    • Registra diversos eventos de conexiones QUIC con base en el borrador del estándar QLog
    • Admite muchos más eventos que antes e incorpora también eventos relacionados con multipath
    • Es compatible con herramientas de visualización como qvis y también ofrece un prototipo de visor para mostrar flujos de paquetes multirruta
  • WeakConnectionHandle

    • Un tipo que permite promover a un objeto Connection cuando sea necesario sin mantener viva la conexión
    • Es similar a std::sync::Weak, pero no requiere usar Arc
    • Puede resultar útil en componentes como un administrador de conexiones

Uso en producción e interoperabilidad

  • noq se usa en producción desde iroh v0.96
  • Además de su propia implementación multipath, ya completó pruebas de interoperabilidad con picoquic

Planes a futuro

  • noq seguirá evolucionando como una tecnología base de largo plazo
  • Se impulsarán mejoras en NAT traversal y optimizaciones de rendimiento basadas en multipath
  • Continuará la colaboración con el grupo de trabajo de QUIC y el equipo de Quinn
  • Se ampliará la colaboración con desarrolladores de implementaciones QUIC, transporte P2P y aplicaciones que operan en diversos entornos de red
  • Se ofrecerán documentación y código de ejemplo para que pueda probarse directamente esta implementación multipath de QUIC basada en Rust

Resumen de Iroh

  • Iroh es una biblioteca de networking “dial-any-device” que permite una configuración de red flexible mediante la combinación de protocolos
  • Ya está en operación en cientos de miles de dispositivos y se publica como código abierto
  • Es posible participar en el proyecto a través de su documentación, código y canal de Discord

1 comentarios

 
GN⁺ 2026-03-21
Comentarios en Hacker News
  • Fue agradable ver en este hilo cómo el equipo de Iroh discutía con respeto mutuo el proceso para decidir hacer un fork

    • Fue una interacción realmente genial. Antes era común que los mantenedores vieran un fork como un acto hostil o como si “les estuvieran robando el código”, pero esta vez fue distinto
      También deja claro lo difícil que es volver a subir cambios internos al upstream. Dijeron que no tenían tiempo para dividir sus cambios en cientos de PR pequeños para revisión. Desde la perspectiva de una empresa, es una inversión de tiempo demasiado grande
      Aun así, ojalá puedan mantener el proyecto original y los detalles de implementación relativamente cercanos. Una vez que esté lo bastante estabilizado, quizá también sea posible hacer integraciones en bloques grandes en vez de por unidades pequeñas
    • Fue bueno ver una conversación tan cortés, en contraste con el drama tan común en la comunidad de open source
  • iroh parece un producto bien posicionado en esta era de crear aplicaciones personales rápidamente
    Me gustaría usarlo para hacer un “app relay”. Estoy pensando en una solución OSS zero-config que permita a los usuarios acceder de forma remota a apps o datos dentro de su red sin configuración adicional. Esto es distinto de un relay de red como Tailscale

    • En la práctica, zero-config es difícil de implementar. Yo he hecho discovery basado en mDNS en varias redes domésticas, y muchas veces los routers bloquean o limitan el multicast. Al final tuve que apilar varias capas de fallback y escribir heurísticas para detectar qué ruta realmente funcionaba. Si QUIC hubiera traído multipath integrado por defecto, habría sido mucho más fácil
    • Si te interesan estos temas, vale la pena revisar la lista awesome-tunneling. En particular, OpenZiti tiene un enfoque parecido al de embeber túneles dentro de la aplicación
  • Me gusta mucho el equipo de n0. Uso seguido su CLI sendme para hacer transferencia de archivos P2P

    • A mí también. Su toolkit ofrece una experiencia de desarrollo rápida, estable y agradable. De verdad se siente como un game changer
    • Gracias por el dato. Yo normalmente uso magic wormhole, pero me pesaba instalarlo en servidores por la cantidad de módulos de Python. Por eso en servidores SQL de Windows usaba alternativas simples como toothpyk, o lo resolvía con wget. Definitivamente tengo que probar sendme
  • Me daba curiosidad cómo noq/iroh reenvía paquetes QUIC (relay). Como QUIC es difícil de inspeccionar, me preguntaba cómo sabe el relay a qué destino enviar cada paquete, o si encapsulan QUIC dentro de otro protocolo

    • noq en sí no implementa la lógica de relay. El relay de iroh simplemente funciona como otra subred IP
      En la práctica, encapsulan datagramas QUIC dentro de WebSocket para transportarlos. El encabezado incluye el EndpointId de destino (clave pública ed25519), y mediante el handshake también se autentica el EndpointId del remitente
      En otras palabras, están tunelizando datagramas QUIC como HTTPS sobre TCP. Es doble cifrado, pero está diseñado para funcionar incluso en entornos donde UDP está bloqueado y para parecer tráfico normal
  • El equipo de iroh sigue avanzando a gran velocidad
    Planeo sacar tiempo este fin de semana para intentar crear con iroh una red overlay tipo Nebula

    • Como proyectos relacionados mencionados en su Discord, vale la pena ver iroh-lan e iron
  • Un enfoque como QUIC sigue siendo una arquitectura que ata fuertemente la persistencia de la conexión al estado de transporte
    He estado pensando si sería posible separar por completo la identidad de sesión de la capa de transporte, para que una falla de transporte se vuelva simplemente un evento recuperable. Me pregunto si alguien ha visto un sistema práctico que vaya más allá de QUIC

  • Consulté este snippet de código de noq

  • También me pareció interesante la noticia reciente sobre la función de transportes personalizados de iroh
    Se puede ver en detalle en el post del blog de iroh 0.97.0

  • ¿Alguien ha revisado nQUIC? Integrar Noise en Noq podría ser interesante

    • De hecho hubo un experimento → proyecto nquinn
      noq (y Quinn, sobre el que se basa) permite implementar su propio trait de “Session”, así que puedes elegir entre TLS o nQUIC según prefieras
  • No hay que confundirlo con Noq de tsoding, cuyo nombre viene de “Not Coq”