Cloudflare cung cấp một mô-đun để hỗ trợ HTTP / 3 trong NGINX

CloudFlare

Cloudflare đã chuẩn bị một mô-đun để cung cấp hỗ trợ cho giao thức HTTP / 3 trong NGINX. Mô-đun đã xong dưới dạng một cái búng tay trên thư viện bánh quiche được phát triển tại Cloudflare với việc triển khai giao thức truyền tải QUIC và HTTP / 3. Mã bánh quiche được viết bằng Rust, nhưng mô-đun cho NGINX được viết bằng C và truy cập thư viện thông qua các liên kết động. Giờ hoạt động được mở theo giấy phép BSD.

Từ phần mềm máy khách, Hỗ trợ HTTP / 3 đã được thêm vào các bản dựng thử nghiệm của Chrome Canary và tiện ích uốn tóc. Về phía máy chủ, cho đến nay việc sử dụng các triển khai thử nghiệm riêng biệt có khả năng hạn chế đã được yêu cầu. Khả năng xử lý HTTP / 3 trong nginx sẽ đơn giản hóa đáng kể việc triển khai các máy chủ có hỗ trợ HTTP / 3 và nó sẽ giúp việc triển khai thử nghiệm của giao thức mới dễ tiếp cận hơn.

HTTP / 3 chuẩn hóa việc sử dụng giao thức QUIC như một phương tiện truyền tải cho HTTP / 2. Giao thức QUIC được Google phát triển như một sự thay thế cho TCP + TLS dành cho Web, do đó dự định giải quyết các vấn đề với thời gian dài cài đặt và các hợp chất phối hợp trong TCP và trì hoãn việc loại bỏ mất gói trong quá trình truyền dữ liệu. QUIC là một trình cắm thêm vào giao thức UDP hỗ trợ ghép nhiều kết nối và cung cấp các phương pháp mã hóa tương đương với TLS / SSL.

Trong số các đặc điểm chính của QUIC nổi bật:

  • Bảo mật cao, tương tự như TLS (trên thực tế, QUIC cung cấp khả năng sử dụng TLS qua UDP).
  • Kiểm soát toàn vẹn luồng để ngăn chặn mất gói.
  • Khả năng thiết lập kết nối ngay lập tức (0-RTT, trong khoảng 75% trường hợp, dữ liệu có thể được truyền ngay sau khi gửi gói thiết lập kết nối) và đảm bảo độ trễ tối thiểu giữa việc gửi yêu cầu và nhận phản hồi (RTT, Thời gian khứ hồi) .
  • Không sử dụng cùng một số thứ tự khi truyền lại một gói, điều này giúp tránh sự mơ hồ trong việc xác định các gói đã nhận và loại bỏ thời gian chờ.
  • Việc mất gói chỉ ảnh hưởng đến việc phân phối luồng liên kết với nó và không dừng việc phân phối dữ liệu trong các luồng được truyền song song qua kết nối hiện tại.
  • Các công cụ sửa lỗi giảm thiểu sự chậm trễ do truyền lại các gói bị mất. Việc sử dụng các mã sửa lỗi cấp gói đặc biệt để giảm các tình huống yêu cầu truyền lại dữ liệu gói bị mất.
  • Ranh giới khối mật mã được căn chỉnh với ranh giới gói QUIC, giảm ảnh hưởng của việc mất gói đến việc giải mã nội dung của các gói tiếp theo
  • Không có vấn đề gì với việc chặn hàng đợi TCP
  • Hỗ trợ mã định danh kết nối, giúp giảm thời gian thiết lập kết nối lại cho các máy khách di động
  • Khả năng kết nối các cơ chế nâng cao để kiểm soát quá tải kết nối
  • Sử dụng kỹ thuật dự đoán băng thông theo từng hướng để đảm bảo cường độ chuyển tiếp gói tin tối ưu, ngăn không cho nó đạt đến trạng thái tắc nghẽn trong đó mất gói
  • Hiệu suất đáng kể và hiệu suất đạt được qua TCP. Đối với các dịch vụ video như YouTube, QUIC đã giảm 30% hoạt động lưu vào bộ đệm lại khi xem video.

Làm cách nào để triển khai mô-đun hỗ trợ HTTP / 3 trong NGINX?

Đối với những người quan tâm đến việc có thể triển khai mô-đun này trên máy chủ của họ, Họ có thể thực hiện theo hướng dẫn mà chúng tôi chia sẻ dưới đây.

Để biên dịch nó, họ chỉ cần tải xuống bản vá cho nginx 1.16 và mã thư viện quiche.

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

Và chúng tôi biên dịch NGINX với hỗ trợ HTTP / 3 được bật:

 ./configure                                 \

--prefix=$PWD                           \

--with-http_ssl_module                  \

--with-http_v2_module                   \

--with-http_v3_module                   \

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

--with-quiche=../quiche

make

Trong quá trình biên dịch, hỗ trợ TLS phải dựa trên thư viện BoringSSL ("–with-openssl = .. / quiche / deps / sadssl"), việc sử dụng OpenSSL chưa được hỗ trợ.

Để chấp nhận các kết nối trong cấu hình, họ sẽ cần thêm chỉ thị người nghe với cờ "quic".


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.