EttevÔte NGINX teatab testimise algusest QUIC ja HTTP/3 protokollide rakendamisest HTTP-serveris ja proxy nginx. Rakendamine pÔhineb IETF-QUIC spetsifikatsioonist ja on saadaval lÀbi , mis on vÀlja töötatud versioonist 1.19.0. Kood on levitatud BSD litsentsi alusel ja ei langenud kokku HTTP/3 rakendusega nginxilt Cloudflareilt, mis on eraldi projekt.
HTTP/3 tugi nginxis on mĂ€rgitud kui eksperimenteerne, kuna protokollist ei ole rakendatud. Sellegipoolest saab nginxit juba kasutada lihtsate HTTP/3 pĂ€ringute vastamiseks, mis toimuvad QUIC-i kaudu ja suurte failide ĂŒleslaadimiseks/edastamiseks. Puuduvatest protokolli funktsioonidest mainitakse protokolli versiooni kokkuleppimisvahendeid, ECN-i ja ĂŒlekande juhtimist, struktureeritud logisid, taastumisreĆŸiimi (QUIC recovery, voogude ja ĂŒlekande haldamine), NAT Rebinding, mobiilseid aadresse, Server push ja andmete lisamine (trailer). Samuti on pakutud vaid pĂ”hiline tugi ACK-pakettide töötlemiseks ja voogude haldamiseks, mis vajab tĂ€iendavat tööd. KĂ”iki standardi nĂ”udeid ei ole arvesse vĂ”etud.
HTTP/3 aktiveerimiseks on vajalik nginxi kokku kogumine http_v3_module mooduliga ning lisada tÀiendav direktiiv
«listen» koos âhttp3âł lipuga, et luua kuulav UDP-sokett. NĂ€iteks:
server {
listen 443 ssl; # TCP-sokett HTTP/1.1 jaoks
listen 443 http3 reuseport; # UDP-sokett QUIC+HTTP/3 jaoks
ssl_protocols TLSv1.3; # QUIC-i puhul on TLS 1.3 kohustuslik
ssl_certificate ssl/www.example.com.crt;
ssl_certificate_key ssl/www.example.com.key;
add_header Alt-Svc âquic=»:443âłâ; # QUIC-i kĂ€ttesaadavuse mĂ€rk
add_header QUIC-Status $quic; # QUIC-i kasutusoleku staatuse pealkiri
}
Tuletame meelde, et HTTP/3 standardiseerib QUIC protokolli kasutamise transpordina HTTP/2 jaoks. Protokoll (Quick UDP Internet Connections) on alates 2013. aastast vĂ€lja töötanud ettevĂ”te Google alternatiivina TCP+TLS ĂŒhendusele, mis lahendab TCP-s suurte ĂŒhenduste loomise ja lepingute ajakulu probleemid ning kĂ”rvaldab viivitused andmete edastamise kĂ€igus paketikaotuste korral. QUIC on UDP protokolli pealisehituseks, mis toetab mitme ĂŒhenduse multiplexerimist ja tagab ĆĄifreerimismeetodid, mis on sarnased TLS/SSL-iga. Klientide tarkvara poolel on HTTP/3 eksperimentaalne toetus juba lisatud , ja .
Peamised QUIC:
- KĂ”rge turvalisus, mis on sarnane TLS-iga (sisuliselt vĂ”imaldab QUIC kasutada TLS 1.3 ĂŒle UDP);
- Voolu terviklikkuse jÀlgimine, mis takistab pakettide kaotust;
- VĂ”ime koheselt ĂŒhendust luua (0-RTT, umbes 75% juhtudest saab andmeid edastada kohe pĂ€rast ĂŒhenduse loomise paketi saatmist) ja tagada minimaalne viivitus kĂŒsimise ja vastuse saamise vahel (RTT, Round Trip Time);
- Paketi sama jÀrjestuse numbri uuesti edastamisel mittekasutamine, mis vÔimaldab vÀltida segadust vastuvÔetud pakettide mÀÀratlemisel ja kaotada aegumised;
- Paketi kaotus mĂ”jutab ainult selle kaasnevat voolu ja ei peata andmete edastamist samaaegselt praeguse ĂŒhenduse kaudu edastatavatest voogudest;
- Vigade parandusmeetmed, mis minimeerivad viivitusi kadunud pakettide uuesti edastamise tÔttu. Eriliste vigade parandamise koodide kasutamine paketi tasemel, et vÀhendada olukordi, mis nÔuavad kadunud paketi andmete uuesti edastamist.
- KrĂŒptograafiliste plokkide piirid on joondatud QUIC pakettide piiridega, mis vĂ€hendab pakettide kaotuse mĂ”ju jĂ€rgmiste pakettide sisu dekodeerimisele;
- TCP jÀrjekorra ummistumise probleemide puudumine;
- Ăhenduse identifikaatori tugi, mis vĂ”imaldab vĂ€hendada mobiilsete klientide uuesti ĂŒhendamise aega;
- VĂ”ime ĂŒhendada laienevaid ĂŒhenduse ĂŒlekande kontrolli mehhanisme;
- Igas suunas lĂ€bilaskevĂ”ime ennustamise tehnika kasutamine, et tagada pakkide edastamise optimaalne intensiivsus, vĂ€ltides ĂŒleminekuid koormuse seisundisse, kus esineb pakettide kaotust;
- TÀhtis tÔhususes ja lÀbilaskevÔimes vÔrreldes TCP-ga. Videoteenuste, nagu YouTube, puhul nÀitas QUIC kasutamine video vaatamise jooksul uuesti vahepealsete operatsioonide vÀhenemist 30% vÔrra.
Allikas: opennet.ru
