4 điểm bởi GN⁺ 2026-03-21 | 1 bình luận | Chia sẻ qua WhatsApp
  • noq do đội ngũ n0 phát triển là một triển khai QUIC đa dụng được viết bằng Rust, hỗ trợ multipathNAT traversal
  • Được phát triển bằng cách chuyển sang codebase độc lập để giải quyết các giới hạn của kiến trúc dựa trên Quinn trước đây trong iroh
  • Bao gồm nhiều tính năng như QUIC Multipath, NAT Traversal, Address Discovery, mở rộng QLog, WeakConnectionHandle
  • Đã được sử dụng trong môi trường production từ iroh v0.96, đồng thời đã hoàn tất kiểm thử khả năng tương tác với picoquic
  • Trong tương lai, dự án sẽ tiếp tục hợp tác với QUIC Working Group và đội ngũ Quinn, đồng thời phát triển thành công nghệ nền tảng cho các nhà phát triển ứng dụng mạng dựa trên Rust

Công bố noq

  • noq là một triển khai QUIC đa dụng do đội ngũ n0 phát triển, hỗ trợ multipathNAT traversal
  • Từ iroh v0.96, nó được dùng làm tầng truyền tải và có thể được sử dụng cho mục đích chung chứ không chỉ giới hạn trong iroh

Chuyển từ Quinn sang noq

  • Trước đây iroh sử dụng QUIC dựa trên Quinn, nhưng có nhiều tính năng phức tạp như NAT traversal và chuyển đổi đường đi phải được xử lý bên ngoài QUIC
  • Do các ràng buộc về cấu trúc này khiến việc sửa đổi từ bên ngoài trở nên khó khăn, nhóm đã quyết định thực hiện hard fork của Quinn
  • Trong khi vẫn duy trì hợp tác với Quinn, nhóm đã chuyển sang hướng đáp ứng các yêu cầu đặc thù của iroh thông qua codebase độc lập

Các tính năng chính của noq

  • QUIC Multipath

    • Triển khai đầy đủ đặc tả QUIC Multipath, tích hợp đường relay và đường trực tiếp (IPV4, IPV6) của iroh thành khái niệm đường đi hạng nhất trong QUIC
    • Duy trì trạng thái kiểm soát tắc nghẽn cho từng đường đi để có thể chọn đường tối ưu
    • Trước đây iroh thao tác đường đi ở bên dưới QUIC, nhưng giờ QUIC tự nhận biết và quản lý việc này
    • Được thiết kế như một triển khai multipath đa dụng có thể dùng cho cả các mục đích ngoài iroh
  • QUIC NAT Traversal

    • Tự diễn giải và triển khai bản thảo QUIC NAT traversal, được nhắc tới như trường hợp đầu tiên đạt độ ổn định ở mức production
    • Đã trải qua kiểm thử thực tế trên hàng trăm nghìn thiết bị iroh
    • Thực hiện NAT hole punching trực tiếp ở tầng QUIC để bộ điều khiển tắc nghẽn và phát hiện mất gói hoạt động chính xác hơn
  • QUIC Address Discovery

    • Từ iroh v0.32 đã sử dụng QUIC Address Discovery (QAD)
    • Thay vì STUN, hệ thống học địa chỉ IP công cộng của client thông qua kết nối QUIC
    • Truyền gói tin được mã hóa giúp tránh protocol ossification và tăng cường bảo vệ quyền riêng tư
  • QLog mở rộng

    • Ghi lại nhiều sự kiện khác nhau của kết nối QUIC dựa trên bản thảo tiêu chuẩn QLog
    • Hỗ trợ nhiều sự kiện hơn trước rất nhiều, đồng thời bổ sung cả các sự kiện liên quan đến multipath
    • Tương thích với các công cụ trực quan hóa như qvis, đồng thời cũng cung cấp nguyên mẫu trình xem hiển thị luồng gói tin đa đường
  • WeakConnectionHandle

    • Một kiểu dữ liệu có thể nâng cấp thành đối tượng Connection khi cần mà không phải giữ kết nối sống
    • Tương tự std::sync::Weak nhưng không cần dùng Arc
    • Có thể được sử dụng hữu ích trong trình quản lý kết nối và các thành phần tương tự

Áp dụng trong production và khả năng tương tác

  • noq đã được sử dụng trong môi trường production từ iroh v0.96
  • Không chỉ có triển khai multipath nội bộ, dự án còn hoàn tất kiểm thử khả năng tương tác với picoquic

Kế hoạch sắp tới

  • Dự kiến phát triển noq thành công nghệ nền tảng dài hạn
  • Thúc đẩy cải tiến NAT traversal và tối ưu hiệu năng dựa trên multipath
  • Tiếp tục hợp tác với QUIC Working Group và đội ngũ Quinn
  • Mở rộng hợp tác với các nhà phát triển triển khai QUIC, truyền tải P2P và ứng dụng hoạt động trong nhiều môi trường mạng khác nhau
  • Cung cấp tài liệu và mã ví dụ để có thể trực tiếp sử dụng triển khai QUIC multipath dựa trên Rust

Tổng quan về Iroh

  • Iroh là thư viện mạng “dial-any-device”, hỗ trợ cấu hình mạng linh hoạt thông qua việc kết hợp các giao thức
  • Đã được vận hành trên hàng trăm nghìn thiết bị và được phát hành dưới dạng mã nguồn mở
  • Có thể tham gia dự án thông qua tài liệu, mã nguồn và kênh Discord

1 bình luận

 
GN⁺ 2026-03-21
Ý kiến trên Hacker News
  • Thật vui khi thấy trong chuỗi này đội ngũ Iroh thảo luận về quá trình quyết định fork theo cách tôn trọng lẫn nhau

    • Đó thực sự là một tương tác rất tuyệt. Trước đây, không ít maintainer thường xem fork là một hành động thù địch hoặc kiểu như “đang ăn cắp code của chúng tôi”, nhưng lần này thì khác
      Điều đó cũng cho thấy việc đưa các thay đổi nội bộ trở lại upstream khó đến mức nào. Họ nói rằng họ không có thời gian để tách các thay đổi của mình thành hàng trăm PR nhỏ để được review. Từ góc độ công ty, đó là một khoản đầu tư thời gian quá lớn
      Dù vậy, vẫn mong họ giữ dự án gốc và chi tiết triển khai gần nhau. Sau khi đủ ổn định, có lẽ cũng sẽ có thể gộp theo từng khối lớn thay vì từng phần nhỏ
    • Thật dễ chịu khi thấy một cuộc trò chuyện lịch sự như vậy, trái ngược với những màn drama thường thấy trong cộng đồng mã nguồn mở
  • iroh có vẻ là một sản phẩm được định vị rất tốt cho thời đại xây dựng ứng dụng cá nhân thật nhanh
    Tôi muốn thử dùng nó để tạo một “app relay”. Tôi đang hình dung một giải pháp OSS zero-config cho phép người dùng truy cập từ xa vào ứng dụng hoặc dữ liệu trong mạng riêng của họ mà không cần thiết lập riêng. Nó khác với các network relay như Tailscale

    • Trên thực tế, zero-config khá khó triển khai. Tôi từng triển khai discovery dựa trên mDNS trên nhiều mạng gia đình khác nhau, và router thường chặn hoặc hạn chế multicast. Cuối cùng tôi phải xếp nhiều lớp fallback và viết heuristic để đoán xem đường nào thực sự hoạt động. Nếu QUIC có sẵn multipath tích hợp thì mọi thứ hẳn đã dễ hơn nhiều
    • Nếu quan tâm đến chủ đề này, có thể tham khảo danh sách awesome-tunneling. Đặc biệt, OpenZiti đang theo đuổi cách tiếp cận tương tự là nhúng tunnel ngay bên trong ứng dụng
  • Tôi thực sự thích đội ngũ n0. Tôi hay dùng sendme CLI của họ để chuyển file P2P

    • Tôi cũng vậy. Bộ công cụ của họ mang lại trải nghiệm phát triển nhanh, ổn định và thú vị. Cảm giác đúng là game changer
    • Cảm ơn vì thông tin hay. Tôi thường dùng magic wormhole, nhưng có quá nhiều module Python nên hơi ngại cài trên server. Vì thế trên Windows SQL server tôi hay dùng các lựa chọn đơn giản hơn như toothpyk hoặc giải quyết bằng wget. Chắc chắn tôi sẽ thử sendme
  • Tôi tò mò noq/iroh relay các gói QUIC như thế nào. QUIC vốn khó theo dõi, vậy relay làm sao biết phải gửi gói nào đi đâu, hay là họ bọc QUIC trong một giao thức khác

    • Bản thân noq không triển khai logic relay. Relay của iroh chỉ hoạt động như một subnet IP khác
      Trên thực tế, nó truyền các QUIC datagram được bọc trong WebSocket. Header có chứa EndpointId đích (public key ed25519), và thông qua handshake, EndpointId của phía gửi cũng được xác thực
      Nói cách khác, đây là kiểu tunnel QUIC datagram qua HTTPS over TCP. Dù bị mã hóa hai lớp, nó vẫn hoạt động trong môi trường chặn UDP và được thiết kế để trông giống lưu lượng thông thường
  • Đội ngũ iroh vẫn đang phát triển với tốc độ rất nhanh
    Tôi định dành thời gian cuối tuần để thử dựng một mạng overlay kiểu Nebula bằng iroh

    • Có thể tham khảo iroh-laniron, là các dự án liên quan từng được nhắc đến trên Discord của họ
  • Những cách tiếp cận như QUIC vẫn là kiểu cấu trúc gắn chặt tính liên tục của kết nối vào trạng thái truyền tải
    Tôi đang suy nghĩ liệu có thể tách hoàn toàn session identity khỏi transport layer để việc transport thất bại chỉ còn là một sự kiện có thể phục hồi hay không. Không biết có ai từng thấy hệ thống thực tế nào đi xa hơn QUIC chưa

  • Tham khảo đoạn mã noq

  • Tin tức gần đây về tính năng custom transport mới công bố của iroh cũng rất thú vị
    Có thể xem chi tiết trong bài blog iroh 0.97.0

  • Có ai đã xem qua nQUIC chưa? Tích hợp Noise vào Noq có vẻ sẽ khá thú vị

    • Thực ra đã có thử nghiệm rồi → dự án nquinn
      noq (và Quinn, nền tảng của nó) có thể triển khai trait “Session” riêng, nên có thể chọn TLS hoặc nQUIC tùy ý
  • Không nên nhầm với Noq của tsoding, cái tên đó lấy từ “Not Coq”