호우동의 개발일지

Today :

article thumbnail

QUIC(Quick UDP Internet Connections) 란?

  • QUIC → 빠른 UDP 인터넷 연결 프로토콜
  • 애플리케이션 설계자는 애플리케이션 계층에 항상 자신의 프로토콜을 확장할 수 있다.
  • 신뢰적인 데이터 전송, 혼잡 제어 및 연결 관리를 위한 많은 접근 방식을 사용

 


QUIC의 특징

프로토콜 스택 비교
프로토콜 스택 비교

 

  • QUIC는 UDP를 하위 트랜스포트 계층 프로토콜로 사용하는 애플리케이션 계층 프로토콜
    • 특히 단순하지만 발전된 HTTP/2 버전 위에서 인터페이스 되도록 설계됨
    • 가까운 장래에 HTTP/3은 기본적으로 QUIC을 통합할 것

 


QUIC의 주요 기능

연결지향적이고 안전함

  • TCP와 마찬가지로 QUIC은 두 종단 간의 연결지향 프로토콜
  • 이를 위해 QUIC 연결 상태를 설정하기 위해 종단 간에 핸드셰이크가 필요
    • 연결 상태의 두 부분은 출발지와 목적지 연결 ID

  • 연결 상태 설정을 위해 필요한 핸드셰이크와 인증 및 암호화에 필요한 핸드셰이크를 결합
    1. TCP 연결을 설정
    2. TCP 연결을 통해 TLS 연결을 설정하여 여러 RTT가 필요한 그림 3.58(a)의
      프로토콜 스택보다 더 빠른 설정을 제공

  • 모든 QUIC 패킷은 암호화됨

 

스트림

  • 스트림 : 2개의 QUIC 종단 간에 데이터를 순서대로 안정적으로 전달하기 위한 추상화
  • QUIC을 사용하면 단일 QUIC 연결을 통해 여러 애플리케이션 레벨의 스트림을 다중화 가능
  • QUIC 연결이 설정되면 새 스트림을 빠르게 추가할 수 있다.
  • HTTP/3의 콘텍스트에는 웹 페이지의 각 개체에 대해 다른 스트림이 있음
  • 각 연결에는 연결 ID가 있고 연결 내의 각 스트림에는 스트림 ID가 존재
    • ID는 모두 QUIC 패킷 헤더에 포함된다.

  • 여러 스트림의 데이터는 UDP를 통해 전달되는 단일 QUIC 세그먼트 내에 포함될 수 있다.
  • 스트림 재전송 프로토콜(Stream Control Transmission Protocol)
    • 단일 SCTP 연결을 통해 여러 애플리케이션 레벨의 스트림을 다중화하는 개념을 개척한
      초기의 안정적인 메시지 지향 프로토콜
      • 4G/5G 셀룰러 무선 네트워크의 제어 평면 프로토콜에 사용됨

 


신뢰적이고 TCP 친화적인 혼잡 제어 데이터 전송

HTTP1.1
HTTP/3
HTTP/3

  • QUIC는 각 QUIC 스트림에 대해 독립적으로 신뢰적인 데이터 전송을 제공
    • 위 그림에서 HTTP/3

  • HTTP/1.1이 단일 TCP 연결을 통해 여러 HTTP 요청을 보내는 경우를 보여줌
    → TCP는 신뢰적이고 순서대로 바이트 전달을 제공
    → 여러 HTTP 요청이 목적지 HTTP 서버에서 순서대로 전달되어야 함을 의미

  • 한 HTTP 요청의 바이트가 손실되면 나머지 HTTP 요청들은 손실된 바이트가 재전송
    HTTP 서버에서 TCP가 올바르게 수신할 때까지 전달될 수 없다.
    • 이 문제는 HOL 차단 문제라고 불린다.

  • QUIC는 스트림별로 신뢰적이고 순서대로 전달
    → 손실된 UDP 세그먼트는 해당 세그먼트에서 데이터가 전달된 스트림에만 영향을 줌
    • 다른 스트림의 HTTP 메시지는 계속 수신되어 애플리케이션에 전달될 수 있다.

  • QUIC는 TCP와 유사한 확인응답 메커니즘을 사용하여 신뢰적인 데이터 전송을 제공함