Modern tarayıcılarda sıfır gecikmeli (0-RTT) el sıkışma sağlayan HTTP/3 protokolünü yapılandırın; Linux çekirdeğindeki yetersiz UDP tamponu kaynaklı sessiz paket kayıplarını (RcvbufErrors) engelleyin.
Streaming ve yüksek hacimde UDP tampon tavanı 32-64 MB seviyesine çıkartılarak paket düşmesi engellenir.
TCP'de akış ve tıkanıklık kontrolü çekirdek (kernel) seviyesinde yönetilirken, HTTP/3 (QUIC) mimarisinde tıkanıklık yönetimi kullanıcı alanında (userspace Nginx/Caddy) çalışır. Linux varsayılan UDP tamponu (rmem_default 212 KB) yüksek hızlı isteklerde anında dolar ve çekirdek paketleri sessizce düşürür (RcvbufErrors). Tamponun 16-32 MB seviyesine çıkarılması paket kaybını sıfıra indirir.
Linux varsayılan 212 KB tavanını aşarak paket düşmesini engeller
UFW veya bulut güvenlik gruplarında UDP açık olmalıdır
Tarayıcılara HTTP/3 desteğini anons eden zorunlu başlık
Paketleri kümeleyerek çekirdek CPU yükünü %40 azaltır
# Nginx 1.25+ HTTP/3 ve QUIC Yapılandırması
# /etc/nginx/sites-available/siteniz.conf
server {
# Standart TCP Bağlantıları (HTTP/1.1 ve HTTP/2)
listen 443 ssl;
listen [::]:443 ssl;
# QUIC ve HTTP/3 Dinleyicisi (UDP Üzerinde)
listen 443 quic reuseport;
listen [::]:443 quic reuseport;
server_name example.com www.example.com;
# SSL / TLS 1.3 Yapılandırması (QUIC Yalnızca TLS 1.3 ile Çalışır)
ssl_protocols TLSv1.3 TLSv1.2;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# HTTP/3 ve QUIC Performans Ayarları
http2 on;
http3 on;
http3_max_concurrent_streams 256;
http3_stream_buffer_size 128k;
quic_gso on;
quic_retry on;
# Tarayıcılara HTTP/3 Desteğini Bildiren Kritik Alt-Svc Başlığı
add_header Alt-Svc 'h3=":443"; ma=86400; persist=1' always;
add_header QUIC-Status $http3 always;
location / {
try_files $uri $uri/ =404;
}
}
HTTP/2 protokolü tek bir TCP bağlantısı üzerinde akışları (streams) çoklayarak (multiplexing) büyük bir hız kazandırmıştı. Ancak TCP'nin doğası gereği, ağda tek bir paket kaybolduğunda (Head-of-Line Blocking), tüm diğer akışlar da o paket yeniden iletilene kadar beklemek zorunda kalıyordu. HTTP/3, TCP yerine UDP tabanlı QUIC protokolünü kullanarak akışları birbirinden tamamen bağımsız kılar; paket kaybında yalnızca ilgili akış etkilenir, web siteniz kesintisiz yüklenmeye devam eder.
Geleneksel Linux dağıtımlarında net.core.rmem_default venet.core.rmem_max değerleri yaklaşık 212 KB olarak gelir. QUIC protokolünde güvenilirlik ve yeniden iletim mantığı işletim sistemi çekirdeğinde değil, kullanıcı alanında (Nginx/Caddy) çalıştığından, yoğun bir dosya veya resim aktarımında 212 KB'lık tampon milisaniyeler içinde dolar. Linux çekirdeği gelen UDP paketlerini sessizce çöpe atar (RcvbufErrors). Tampon boyutunun 16 MB veya 32 MBseviyesine yükseltilmesi bu kaybı tamamen engeller.
Tarayıcılar bir web sitesine ilk bağlandıklarında varsayılan olarak TCP 443 üzerinden HTTP/1.1 veya HTTP/2 konuşur. Sunucunun yanıtta Alt-Svc: h3=":443"; ma=86400 başlığını göndermesi şarttır. Tarayıcı bu başlığı gördükten sonra bir sonraki isteklerinde arka planda UDP 443 üzerinden QUIC el sıkışması başlatır ve HTTP/3'e terfi eder.
Nginx 1.25+ ile gelen quic_gso on; direktifi, ağ kartı (NIC) donanım desteğinden faydalanarak çekirdeğin paketleri tek tek göndermek yerine büyük bloklar halinde ağ kartına teslim etmesini sağlar. Bu optimizasyon, yüksek bant genişliğinde sunucu işlemcisinin (CPU) harcadığı yükü %30 ila %50 oranında düşürür.