QUIC 버전 1의 RFC 승인
IETF에서 지난 몇년간 진행하고 있던 UDP기반의 새 전송 프로토콜인 QUIC이 오랜 리뷰 기간을 거쳐서 정식으로 RFC가 되었습니다.
4개의 RFC로 나누어져 있습니다. 각각은 다음과 같습니다.
- RFC 8999 Version-Independent Properties of QUIC - 통칭 Invariants. 버전에 관계 없이 공통적인 사항에 대한 것입니다.
- RFC 9000 QUIC: A UDP-Based Multiplexed and Secure Transport - 통칭 Transport. 제일 중심이 되는 내용으로 패킷 포맷, 상태 머신, 기본적인 동작에 대해 다루고 있습니다. QUIC에 대해 알고 싶다면 여기부터 읽어 보세요.
- RFC 9001 Using TLS to Secure QUIC - 통칭 QUIC-TLS. QUIC은 기본적으로 암호화를 해야 하는데 TLS 1.3 기반으로 약간의 확장을 더하고 있습니다. TLS 1.3에 대해서 기본적으로 이해가 있어야 합니다.
- RFC 9002 QUIC Loss Detection and Congestion Control - 통칭 Recovery. Transport에 추가하여 손실 복구 및 혼잡 제어 알고리즘에 대해서 다룹니다.
아마 출력하면 수백 페이지 분량일 것입니다. 8999는 짧은 편이지만 나머지 3개 RFC는 내용이 방대하고 전송 프로토콜에 대한 내용이라 TCP와 TLS에 대한 사전 지식이 있다면 보다 읽기 쉬울 것입니다. 지금부터 읽고자 한다면 사전 지식 없어도 먼저 한번 읽어 보고, 필요한 부분을 추가적으로 다른 RFC를 읽어 가면서 보충하는 방법을 권장합니다.
개인적으로는 UDP기반 전송 프로토콜을 작성하는 것을 이전 스타트업(Neumob)에서 시작했고 지금 회사(Cloudflare)에서 QUIC관련 업무를 (quiche 기반 HTTP/3 서비스) 하고 있어 2019년부터 관련 활동에 일부 참여하였습니다. RFC9002에 몇줄 공헌한 것도 있고 해서 정식으로 RFC가 되다니 감회가 새롭네요.
회사 블로그에 관련된 기사를 올린적이 있고요.
- quiche의 CUBIC와 HyStart++ 지원
- A cost-effective and extensible testbed for transport protocol development
이 블로그에서도 기본적인 소개 글을 쓴적이 있습니다.
- QUIC과 HTTP/3 - 1. UDP기반 전송 프로토콜의 대두
- QUIC과 HTTP/3 - 2. 기존의 성능 개선 기법 및 한계
- QUIC과 HTTP/3 - 3. curl + quiche 로 HTTP3 요청해 보기
이번 RFC는 QUIC관련이고, 상위 레이어인 HTTP/3 관련은 다른 워킹 그룹에서 별도로 리뷰하는 것으로 알고 있으니 관련 스펙 (HTTP/3, QPACK)은 추후 RFC가 될 것으로 알고 있습니다.
HTTP/2가 2015년에 발표된 이후 HTTP와 전송 프로토콜 관련해서 제일 큰 변화라고 생각 됩니다. 향후 많은 분야에서 활용되지 않을까 싶습니다.