Cloudflare는 NGINX에서 HTTP / 3를 지원하는 모듈을 제공합니다.

Cloudflare

Cloudflare는 NGINX에서 HTTP / 3 프로토콜을 지원하는 모듈을 준비했습니다.. 모듈이 완료되었습니다. 키시 라이브러리의 스냅 형태로 QUIC 및 HTTP / 3 전송 프로토콜의 구현으로 Cloudflare에서 개발되었습니다. 키시 코드는 Rust로 작성되었습니다.하지만 NGINX 용 모듈은 C로 작성되었으며 동적 링크를 통해 라이브러리에 액세스합니다. 운영 시간은 BSD 라이선스에 따라 개방됩니다.

클라이언트 소프트웨어에서 HTTP / 3 지원은 이미 Chrome Canary 실험용 빌드에 추가되었습니다. 및 curl 유틸리티. 서버 측에서는 지금까지 제한된 기능을 가진 격리 된 테스트 구현을 사용해야했습니다. nginx에서 HTTP / 3을 처리하는 기능 HTTP / 3 지원으로 서버 배포를 크게 단순화합니다. 새로운 프로토콜의 테스트 구현에보다 쉽게 ​​접근 할 수 있도록합니다.

HTTP / 3은 QUIC 프로토콜 사용을 표준화합니다. HTTP / 2.에 대한 전송으로. QUIC 프로토콜은 웹용 TCP + TLS의 대안으로 Google에서 개발했습니다. TCP에서 장시간의 설치 및 조정 화합물 문제를 해결하려고합니다. 데이터 전송 중 패킷 손실 제거를 지연시킵니다. QUIC는 다중 연결의 다중화를 지원하고 TLS / SSL과 동등한 암호화 방법을 제공하는 UDP 프로토콜에 대한 플러그인입니다.

눈에 띄는 QUIC의 주요 특징은 다음과 같습니다.

  • TLS와 유사한 높은 보안 성 (사실 QUIC은 UDP를 통해 TLS를 사용하는 기능을 제공합니다).
  • 패킷 손실을 방지하는 흐름 무결성 제어.
  • 즉시 연결을 설정하는 기능 (0-RTT, 약 75 %의 경우 연결 설정 패킷 전송 후 즉시 데이터 전송 가능) 및 요청 전송과 응답 수신 간의 지연 최소화 (RTT, 왕복 시간) .
  • 패킷을 재전송 할 때 동일한 시퀀스 번호를 사용하지 않음으로써 수신 된 패킷을 결정하는 모호함을 방지하고 시간 초과를 제거합니다.
  • 패킷 손실은 관련된 스트림의 전달에만 영향을 미치며 현재 연결을 통해 병렬로 전송되는 스트림의 데이터 전달을 중지하지 않습니다.
  • 손실 된 패킷의 재전송으로 인한 지연을 최소화하는 오류 수정 도구. 손실 된 패킷 데이터의 재전송이 필요한 상황을 줄이기 위해 특수 패킷 수준 오류 수정 코드를 사용합니다.
  • 암호화 블록 경계는 QUIC 패킷 경계와 정렬되어 후속 패킷의 콘텐츠 디코딩에 대한 패킷 손실의 영향을 줄입니다.
  • TCP 대기열 차단 문제 없음
  • 모바일 클라이언트에 대한 재 연결 설정 시간을 줄여주는 연결 식별자 지원
  • 고급 메커니즘을 연결하여 연결 과부하를 제어하는 ​​기능
  • 최적의 패킷 포워딩 강도를 보장하기 위해 각 방향의 대역폭을 예측하는 기술을 사용하여 패킷 손실이 관찰되는 혼잡 상태에 도달하지 않도록 방지
  • TCP를 통한 놀라운 성능 및 성능 향상. YouTube와 같은 동영상 서비스의 경우 QUIC는 동영상을 볼 때 리 버퍼링 작업이 30 % 감소한 것으로 나타났습니다.

NGINX에서 HTTP / 3를 지원하는 모듈을 구현하는 방법은 무엇입니까?

서버에서이 모듈을 구현하는 데 관심이있는 사용자를 위해 아래에서 공유하는 지침에 따라 수행 할 수 있습니다.

컴파일하려면 nginx 1.16 용 패치 만 다운로드하면됩니다. 그리고 키시 라이브러리 코드.

curl -O https://nginx.org/download/nginx-1.16.1.tar.gz

tar xzvf nginx-1.16.1.tar.gz

git clone --recursive https://github.com/cloudflare/quiche

cd nginx-1.16.1

patch -p01 < ../quiche/extras/nginx/nginx-1.16.patch

그리고 HTTP / 3 지원이 활성화 된 NGINX를 컴파일합니다.

 ./configure                                 \

--prefix=$PWD                           \

--with-http_ssl_module                  \

--with-http_v2_module                   \

--with-http_v3_module                   \

--with-openssl=../quiche/deps/boringssl \

--with-quiche=../quiche

make

컴파일 중에 TLS 지원은 BoringSSL 라이브러리 ( "–with-openssl = .. / quiche / deps / boringssl")를 기반으로해야하며 OpenSSL 사용은 아직 지원되지 않습니다.

구성에서 연결을 허용하려면 "quic"플래그와 함께 listener 지시문을 추가해야합니다.


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.