4 pontos por GN⁺ 2026-03-21 | 1 comentários | Compartilhar no WhatsApp
  • noq, desenvolvido pela equipe da n0, é uma implementação genérica de QUIC escrita em Rust com suporte a multipath e NAT traversal
  • Foi desenvolvido como uma base de código independente para resolver as limitações da estrutura baseada em Quinn do iroh
  • Inclui diversos recursos, como QUIC Multipath, NAT Traversal, Address Discovery, extensões de QLog e WeakConnectionHandle
  • Está em uso em produção desde o iroh v0.96 e já concluiu testes de interoperabilidade com o picoquic
  • No futuro, a equipe pretende continuar a colaborar com o grupo de trabalho do QUIC e com a equipe do Quinn, desenvolvendo-o como uma tecnologia-base para desenvolvedores de aplicações de rede em Rust

Anúncio do noq

  • noq é uma implementação genérica de QUIC desenvolvida pela equipe da n0, com suporte a multipath e NAT traversal
  • Está sendo usado como camada de transporte desde o iroh v0.96 e pode ser utilizado para fins gerais, não se limitando ao iroh

Transição de Quinn para noq

  • O iroh anteriormente usava QUIC com base no Quinn, mas havia muitos recursos complexos, como NAT traversal e troca de rota, que precisavam ser tratados fora do QUIC
  • Devido a essas limitações estruturais, foi decidido fazer um hard fork do Quinn, já que modificações externas eram difíceis
  • Mantendo a colaboração com o Quinn, a equipe mudou para uma base de código independente para atender aos requisitos específicos do iroh

Principais recursos do noq

  • QUIC Multipath

    • Implementa completamente a especificação QUIC Multipath, integrando os caminhos de relay e diretos do iroh (IPV4, IPV6) como conceitos de caminho de primeira classe do QUIC
    • Mantém o estado de controle de congestionamento para cada caminho, permitindo selecionar a rota ideal
    • Antes, o iroh manipulava caminhos abaixo do QUIC; agora, o próprio QUIC reconhece e gerencia isso
    • Foi projetado como uma implementação genérica de multipath que também pode ser usada fora do iroh
  • QUIC NAT Traversal

    • Implementa, com interpretação própria, o rascunho de NAT traversal para QUIC, sendo citado como o primeiro caso com estabilidade de nível de produção
    • Já passou por testes em produção com centenas de milhares de dispositivos iroh
    • Faz NAT hole punching diretamente na camada QUIC, permitindo que o controlador de congestionamento e a detecção de perdas funcionem com mais precisão
  • QUIC Address Discovery

    • Desde o iroh v0.32, usa QUIC Address Discovery (QAD)
    • Aprende o endereço IP público do cliente por meio de uma conexão QUIC, em vez de usar STUN
    • Transmissão de pacotes criptografados para evitar a ossificação do protocolo e reforçar a privacidade
  • QLog estendido

    • Registra vários eventos de conexões QUIC com base no rascunho do padrão QLog
    • Suporta muito mais eventos do que antes e adiciona eventos relacionados a multipath
    • É compatível com ferramentas de visualização como qvis e também oferece um protótipo de visualizador que mostra o fluxo de pacotes em múltiplos caminhos
  • WeakConnectionHandle

    • Um tipo que permite promover para um objeto Connection quando necessário, sem manter a conexão viva
    • É semelhante a std::sync::Weak, mas não exige o uso de Arc
    • Pode ser útil em casos como gerenciadores de conexão

Aplicação em produção e interoperabilidade

  • O noq está em uso em produção desde o iroh v0.96
  • Além da implementação própria de multipath, também já concluiu testes de interoperabilidade com o picoquic

Planos futuros

  • O objetivo é evoluir o noq como uma tecnologia-base de longo prazo
  • Avançar em melhorias de NAT traversal e em otimização de desempenho com base em multipath
  • Manter a colaboração com o grupo de trabalho do QUIC e com a equipe do Quinn
  • Ampliar a colaboração com desenvolvedores de implementação de QUIC, transporte P2P e aplicações que funcionam em diversos ambientes de rede
  • Fornecer documentação e exemplos de código para que seja possível usar diretamente a implementação Rust de QUIC multipath

Visão geral do Iroh

  • Iroh é uma biblioteca de rede “dial-any-device” que oferece configuração de rede flexível por meio da combinação de protocolos
  • Já está em operação em centenas de milhares de dispositivos e é open source
  • É possível participar do projeto por meio da documentação, do código e do canal no Discord

1 comentários

 
GN⁺ 2026-03-21
Comentários no Hacker News
  • Foi bom ver, nesta thread, a equipe do Iroh discutindo com respeito mútuo o processo que levou à decisão de fazer um fork

    • Foi uma interação realmente ótima. No passado, era comum mantenedores encararem forks como um ato hostil ou como se alguém estivesse “roubando nosso código”, mas desta vez foi diferente
      Isso também deixa bem claro como é difícil reenviar mudanças internas para o upstream. Eles disseram que não tinham tempo para dividir suas mudanças em centenas de PRs pequenos para revisão. Do ponto de vista da empresa, isso representa um investimento de tempo grande demais
      Ainda assim, espero que mantenham o projeto original e os detalhes de implementação próximos. Depois que tudo estiver suficientemente estabilizado, talvez até seja possível fazer mesclagens em blocos grandes, em vez de unidades pequenas
    • Foi bom ver esse tipo de conversa educada, em contraste com o drama comum em comunidades open source
  • O iroh parece um produto bem posicionado para esta era de criação rápida de aplicações pessoais
    Eu queria usar isso para criar um “app relay”. Estou pensando em uma solução OSS zero-config que permita ao usuário acessar remotamente apps ou dados dentro da própria rede sem configuração separada. Isso é diferente de relés de rede como o Tailscale

    • Na prática, zero-config é difícil de implementar. Já implementei discovery baseado em mDNS em várias redes domésticas, e muitos roteadores bloqueiam ou limitam multicast. No fim, tive de empilhar várias camadas de fallback e criar heurísticas para descobrir qual caminho realmente funciona. Se o QUIC tivesse multipath embutido por padrão, teria sido muito mais fácil
    • Se você se interessa por esse tema, vale consultar a lista awesome-tunneling. Em especial, o OpenZiti segue uma abordagem semelhante, embutindo túneis dentro da aplicação
  • Gosto muito da equipe da n0. Eu uso bastante o sendme CLI deles para transferência de arquivos P2P

    • Eu também. O toolkit deles proporciona uma experiência de desenvolvimento rápida, estável e prazerosa. Parece realmente um divisor de águas
    • Obrigado pela dica. Eu normalmente uso magic wormhole, mas ele tem módulos Python demais, então era incômodo instalar no servidor. Por isso, em um servidor SQL Windows eu usava alternativas simples como o toothpyk ou resolvia com wget. Vou experimentar o sendme com certeza
  • Fiquei curioso sobre como noq/iroh retransmite (relay) pacotes QUIC. Como o QUIC é difícil de inspecionar, fiquei pensando como o relay sabe quais pacotes mandar para onde, ou se ele encapsula o QUIC em outro protocolo

    • O próprio noq não implementa a lógica de relay. O relay do iroh simplesmente funciona como mais uma sub-rede IP
      Na prática, ele encapsula datagramas QUIC em WebSocket para transporte. O cabeçalho inclui o EndpointId de destino (chave pública ed25519), e o handshake também autentica o EndpointId do remetente
      Em outras palavras, é como tunelar datagramas QUIC por HTTPS over TCP. Há criptografia dupla, mas foi projetado para funcionar mesmo em ambientes com bloqueio de UDP e para parecer tráfego comum
  • A equipe do iroh ainda está avançando em ritmo acelerado
    Pretendo reservar um tempo no fim de semana para tentar construir uma rede overlay no estilo do Nebula com iroh

    • Como projetos relacionados mencionados no Discord deles, vale olhar o iroh-lan e o iron
  • Uma abordagem como QUIC ainda mantém a persistência da conexão fortemente acoplada ao estado de transporte
    Estou pensando se seria possível separar completamente a identidade da sessão da camada de transporte, de modo que uma falha de transporte vire apenas um evento recuperável. Queria saber se alguém já viu um sistema prático que vá além do QUIC nesse aspecto

  • Consultei este trecho de código do noq

  • Também achei interessante a notícia recente sobre o recurso de transporte customizado do iroh
    Dá para ver mais detalhes no post do blog do iroh 0.97.0

  • Alguém já conferiu o nQUIC? Integrar Noise ao Noq parece algo interessante

    • Na verdade, já houve um experimento → projeto nquinn
      O noq (e o Quinn, sobre o qual ele é construído) permite implementar seu próprio trait “Session”, então dá para escolher entre TLS ou nQUIC
  • Não confundir com o Noq do tsoding, cujo nome vem de “Not Coq”