- n0 팀이 개발한 noq는 Rust로 작성된 범용 QUIC 구현체로, 멀티패스와 NAT 트래버설을 지원
- 기존 iroh의 Quinn 기반 구조 한계를 해결하기 위해 독립 코드베이스로 전환해 개발됨
-
QUIC Multipath, NAT Traversal, Address Discovery, QLog 확장, WeakConnectionHandle 등 다양한 기능을 포함
- iroh v0.96부터 프로덕션 환경에서 사용 중이며, picoquic과의 상호운용성 테스트도 완료
- 향후 QUIC 워킹그룹 및 Quinn 팀과 협력을 지속하며, Rust 기반 네트워크 애플리케이션 개발자를 위한 기반 기술로 발전 예정
noq 발표
-
noq는 n0 팀이 개발한 범용 QUIC 구현체로, 멀티패스(multipath) 및 NAT 트래버설 기능을 지원
- iroh v0.96부터 전송 계층으로 사용되고 있으며, iroh에 한정되지 않고 일반적인 용도로 활용 가능
Quinn에서 noq로의 전환
- iroh는 기존에 Quinn을 기반으로 QUIC을 사용했으나, NAT 트래버설과 경로 전환 등 QUIC 외부에서 처리해야 하는 복잡한 기능이 많았음
- 이러한 구조적 제약으로 인해 외부 수정이 어려워 Quinn의 하드 포크를 결정
- Quinn과의 협력은 유지하면서, 독립 코드베이스를 통해 iroh의 특수한 요구사항을 충족시키는 방향으로 전환
noq의 주요 기능
-
QUIC Multipath
-
QUIC Multipath 사양을 완전 구현해, iroh의 릴레이 및 직접 경로(IPV4, IPV6)를 QUIC의 1급 경로 개념으로 통합
- 각 경로별 혼잡 제어 상태를 유지하며 최적의 경로 선택 가능
- 기존에는 iroh가 QUIC 아래에서 경로를 조작했으나, 이제는 QUIC 자체가 이를 인식하고 관리
- iroh 외의 일반적인 용도에도 사용할 수 있는 범용 멀티패스 구현체로 설계
-
QUIC NAT Traversal
-
QUIC NAT 트래버설 초안을 자체 해석해 구현했으며, 프로덕션 수준의 안정성을 갖춘 최초 사례로 언급
- 수십만 대의 iroh 장치에서 실전 테스트를 거침
- NAT 홀펀칭을 QUIC 계층에서 직접 수행해 혼잡 제어기와 손실 감지가 더 정확하게 작동
-
QUIC Address Discovery
- iroh v0.32부터 QUIC Address Discovery(QAD) 를 사용
- STUN 대신 QUIC 연결을 통해 클라이언트의 공인 IP 주소를 학습
-
암호화된 패킷 전송으로 프로토콜 경직화 방지 및 개인정보 보호 강화
-
QLog 확장
-
QLog 표준 초안 기반으로 QUIC 연결의 다양한 이벤트를 기록
- 기존보다 훨씬 많은 이벤트를 지원하며, 멀티패스 관련 이벤트도 추가
-
qvis와 같은 시각화 도구와 호환되며, 다중 경로 패킷 흐름을 표시하는 뷰어 프로토타입도 제공
-
WeakConnectionHandle
- 연결을 유지하지 않으면서 필요 시 Connection 객체로 승격할 수 있는 타입
-
std::sync::Weak과 유사하지만 Arc를 사용하지 않아도 됨
-
연결 관리자 등에서 유용하게 활용 가능
프로덕션 적용 및 상호운용성
- noq는 iroh v0.96부터 프로덕션 환경에서 사용 중
- 자체 멀티패스 구현뿐 아니라 picoquic과의 상호운용성 테스트도 완료
향후 계획
- noq를 장기 기반 기술로 발전시킬 예정
- NAT 트래버설 개선 및 멀티패스 기반 성능 최적화 추진
-
QUIC 워킹그룹 및 Quinn 팀과의 협력 지속
- QUIC 구현, P2P 전송, 다양한 네트워크 환경에서 동작하는 애플리케이션 개발자와의 협업 확대
- Rust 기반 QUIC 멀티패스 구현을 직접 사용해볼 수 있도록 문서 및 예제 코드 제공
Iroh 개요
-
Iroh는 “dial-any-device” 네트워킹 라이브러리로, 프로토콜 조합을 통한 유연한 네트워크 구성을 지원
- 수십만 대의 장치에서 이미 운영 중이며, 오픈소스로 공개
- 문서, 코드, Discord 채널을 통해 프로젝트 참여 가능