Företaget NGINX meddelar om påbörjan av testning av protokollen QUIC och HTTP/3 i HTTP-servern och proxynginx. Implementation baseras på av IETF-QUIC-specifikationen och är tillgänglig via , som är en avgrening av version 1.19.0. Koden sprids under BSD-licensen och överlappar inte med implementationen av HTTP/3 för nginx från Cloudflare, som är ett separat projekt.
Stödet för HTTP/3 i nginx är märkt som experimentellt, eftersom i protokollet är implementerade. Dock kan nginx redan användas för att skicka svar på enkla HTTP/3-förfrågningar över QUIC och ladda / överföra stora filer. Bland de saknade funktionerna i protokollet noteras protokollversionsförhandling, ECN och överbelastningskontroll, strukturerade loggar, återhämtningsläge (QUIC recovery, flödes- och överbelastningskontroll), NAT Rebinding, mobila adresser, Server push och anslutning av data (trailer). Dessutom erbjuds endast grundläggande stöd för behandling av ACK-paket och flödeskontroll, som kräver ytterligare arbete. Inte alla krav i standarden har beaktats.
För att aktivera HTTP/3 krävs det att kompilera nginx med modulen http_v3_module och lägga till ytterligare en direktiv
«listen» med flaggan «http3″ för att skapa en lyssnande UDP-socket. Till exempel:
server {
listen 443 ssl; # TCP-socket för HTTP/1.1
listen 443 http3 reuseport; # UDP-socket för QUIC+HTTP/3
ssl_protocols TLSv1.3; # TLS 1.3 krävs i QUIC
ssl_certificate ssl/www.example.com.crt;
ssl_certificate_key ssl/www.example.com.key;
add_header Alt-Svc ‘quic=»:443″‘; # indikator för tillgång till QUIC
add_header QUIC-Status $quic; # Header med status för användning av QUIC
}
Vi påminner om att HTTP/3 standardiserar användningen av protokollet QUIC som transport för HTTP/2. Protokollet (Quick UDP Internet Connections) har sedan 2013 utvecklats av Google som ett alternativ till TCP+TLS för webben, som löser problem med lång tid för etablering och förhandling av anslutningar i TCP och eliminerar fördröjningar vid paketförluster under datatransmission. QUIC är ett överliggande protokoll ovanpå UDP som stöder multiplexering av flera anslutningar och tillhandahåller krypteringsmetoder som motsvarar TLS/SSL. På klientsidan har experimentellt stöd för HTTP/3 redan lagts till i , och .
Huvud QUIC:
- Hög säkerhet, jämförbar med TLS (QUIC gör i grunden det möjligt att använda TLS 1.3 över UDP);
- Kontroll av strömmens integritet, vilket förhindrar pak förlust;
- Möjlighet att omedelbart upprätta en anslutning (0-RTT, i ungefär 75% av fallen kan data överföras omedelbart efter att anslutningsinstallationspaketet skickats) och säkerställa minimala fördröjningar mellan begäran och svar (RTT, Round Trip Time);
- Ingen användning av samma sekvensnummer vid återöverföring av paket som gör att man kan undvika tveksamhet vid identifieringen av mottagna paket och eliminera timeout-problem;
- Paketsförlust påverkar endast leveransen av den relaterade strömmen och stoppar inte dataöverföringen i parallella strömmar som sänds via den aktuella anslutningen;
- Felkorrekteringsmedel som minimerar förseningar på grund av återöverföring av förlorade paket. Användning av speciella felkorrekteringskoder på paketnivå för att minska situationer där återöverföring av förlorad data krävs.
- Gränserna för kryptografiska block överensstämmer med gränserna för QUIC-paketen, vilket minskar påverkan av paketförluster på avkodningen av innehållet i efterföljande paket;
- Ingen köblockering som uppstår i TCP;
- Stöd för anslutningsidentifierare som gör att tiden för att återansluta till mobila kunder minskar;
- Möjlighet att ansluta avancerade mekanismer för överbelastningskontroll;
- Användning av tekniker för kapacitetsprognoser i varje riktning för att säkerställa optimal paketöverföringstakt och förhindra att man hamnar i en överbelastad status där paketförluster observeras;
- Särskild i prestanda och kapacitet jämfört med TCP. För videotjänster som YouTube har användningen av QUIC visat på en minskning av buffran under videoavspelning med 30%.
Källa: opennet.ru
