Optimizarea latenţei reţelei
Scurt rezumat
Latență = sumă de mici întârzieri de-a lungul lanțului. Îmbunătățirea se realizează sistemic: reducerea „hameiului” (Anycast/CDN), reducerea RTT (rute/QoS), reducerea „șurubului” (DNS/TLS/TCP), menținerea cozilor scurte (AQM/ECN), minimizarea octeților (compresie/cache) și măsoară continuu p95/p99. Orice optimizare fără măsurători este ghicitoare.
Bugetul de latență: în ce constă întârzierea
Să simplificăm descompunerea TTFB (Time To First Byte):
TTFB ≈ t_DNS + t_connect + t_TLS + t_queue + t_routing + t_app + t_first_byte
Ubi:
- t_DNS - rezoluția numelui.
- t_connect - înființarea L4 (TCP/QUIC).
- t_TLS - Strângere de mână TLS.
- t_queue/t_routing - cozi/tranziții (tamponare, supraîncărcare, NAT).
- t_app - procesarea serverului până la primul octet.
Scopul este de a stabili un SLO pentru fiecare termen și verificați în mod regulat.
SLO/metrica
DNS p95: local ≤ 20-30 ms, la nivel global ≤ 80-120 ms.
TCP conecta p95: ≤ 80-120 ms regional, ≤ 200-250 ms interregional.
TLS strângere de mână p95: ≤ 80-120 мс (с capsare OCSP, reluare).
TTFB p95 (static): ≤ 120-150 ms regional.
TTFB p95 (API): ≤ 200-300 ms.
Jitter p95 (UDP/RT): ≤ 15-30 мс; pierdere ≤ 0. 1–0. 3%.
Alerte: creșterea p95/p99, creșterea „SYN reia”, căderea „reluării”, creșterea „ECN CE” sau „pierderea pachetelor”.
Pornire rapidă DNS
Autoritățile Anycast + recursuri strânse (DoH/DoT, dacă este necesar).
Scurt TTL (60-300 s) pentru nume dinamice; TTL negativ sub control.
cache DNS lângă aplicație; „Prefetch” înregistrări fierbinți.
Excludeți mișcările inutile CNAME → CNAME → A/AAAA.
TLS/HTTP: mai puține strângeri de mână, sesiuni mai rapide
Activați TLS 1. 3, capsare OCSP, lanțuri scurte CA.
Reluarea sesiunii (bilete/ID-uri) и ALPN („h2”, „h3”).
HTTP/2: multiplexare, mai puține conexiuni → mai mici decât p95.
HTTP/3 (QUIC): 0-RTT (numai idempotent), o mai bună rezistență la pierderi/bruiaj.
Preconnect/Prewarm (edge/client): conexiuni deschise pentru domenii fierbinți în avans.
Transport: TCP vs QUIC și kernel stack
TCP
Controlul modern al congestiei: BBR v2 (sau CUBIC dacă este conservator).
RACK/TLP pentru retransmiterea rapidă; activați SACK.
ECN + AQM (CoDel/FQ_CoDel): reduce blocul tampon și jitter.
TCP Fast Open - evitați cererile în schimbare de stat; beneficiul este controversat.
QUIC (HTTP/3)
Mai puțin „blocare cap” în comparație cu TCP + TLS + HTTP/2.
Rezistent la reordonare/pierderi; Actualizați implementarea (de exemplu, Envoy/HAProxy cu H3).
Monitorizați UDP/443 și MTU/fragmentare.
MTU/PMTUD și fragmentare
Un singur MTU end-to-end; pentru tuneluri (IPsec/WireGuard/VXLAN), luați în considerare deasupra capului.
Activați PMTUD și ICMP „Fragmentarea necesară”.
Pentru QUIC - monitor max datagram și nu se taie ICMP pe perimetru.
Fizica rutării și a căii
Anycast pentru public IP API/margine fronturi.
Geo/Latency routing (GSLB) + controale de sănătate.
ECMP și BFD în fabrică (Leaf-Spine) pentru a elimina traseele proaste în <1 s.
Aliniați aplicațiile/sărbătorile (IX) în regiunile de concentrare ale utilizatorilor.
Cozi și QoS: Țineți tampoanele scurte
Clase: în timp real (RT/VoIP), interactiv (API), în vrac (backup/ETL).
LLQ/WRR, prioritizarea API/plăți peste vrac.
ECN (marcaj CE) + AQM (CoDel/FQ_CoDel) la cozile de margine.
Tăiați/transferați backup-uri și vânătăi mari de la „minute de vârf”.
NAT, proxy și middleboxes
Minimizați cascada NAT/filtru.
Statful middlebox este esențial pentru asimetria căii: echilibru peste 5-tuple, fire pin-ning.
Suport Keepalive și termene rezonabile pentru conexiuni de lungă durată (gRPC/WebSocket).
Cache și plasarea datelor
CDN/scut de origine/memorie cache pe niveluri - mai puține călătorii la origine.
Active versionate (imuabile, 1 an).
Scurt TTL + „vechi-în timp ce-revalidate” pentru semi-dinamică.
Geo-plasare: datele fierbinți sunt mai aproape de utilizator (read-replica/edge-KV) și scrierea la „sursa adevărului”.
Optimizarea nivelului aplicației
Reducerea numărului de cereri (push bundling/HTTP/2 nu mai sunt în vogă - prefetch/preconnect este mai bine).
Reducerea sarcinii utile: compresie (Brotli), formate de imagini web, protocoale binare (gRPC).
Solicitați idempotență → retribuții sigure și timeout-uri agresive.
Async/streaming (SSE/gRPC streaming) pentru a reduce TTFB.
Observabilitate: ce se măsoară
Telemetrie client (RUM): DNS/connect/TLS/TTFB, Geo/ASN, dispozitiv.
Rețea: RTT, pierdere, jitter, ECN CE/ECT (0/1), cozi de interfață, erori/depășiri.
Транспорт: retransmiteri, out-of-order, stare cwnd/BBR, statistici de strângere de mână, reluare.
L7: p50/p95/p99, rata de eroare, dimensiunea sarcinii utile, histogramele traseului/PoP.
Metrica segmentului în funcție de regiune/ASN/transportator - aici se ascund punctele fierbinți.
Mini playbook-uri
1) Audit rapid p95
1. Construiți un buget de latență (DNS/TLS/connect/TTFB) de la RUM.
2. Map to network metrics (RTT/loss/ECN) by PoP/ASN.
3. Dacă „connect” și „TLS” domina → permite preconnect/resumption/HTTP/3.
4. Dacă „TTFB” este de înaltă → cache/edge/replica și optimizarea aplicației.
2) Pierdere/jitter spike
1. Verificați uplink/interfețe (picături/cozi).
2. Activați/modificați AQM (FQ_CoDel), reduceți clasa în vrac.
3. Verificați calea BFD/ECMP, excludeți legătura clapetă.
4. Pentru clienți, ridicați temporar retraiele și reduceți timpul între ele.
3) Degradarea regională
1. Comutați GSLB la PoP vecin; retragerea Anycast/32 pe degradate.
2. Reduceți TTL, activați 'stale-în timp ce-revalidate'.
3. Trimite starea la pagina de stare, începe RCA.
4) Migrarea la HTTP/3
1. Deschideți UDP/443, activați H3/ALPN „h3”.
2. Conduita A/B: comparați p95 TTFB și rata de eroare.
3. Observa 'udp loss'/clienti activi/oscilatii cwnd.
Pătuț config
Nginx (HTTP/2, OCSP, TLS 1. 3, Brotli)
nginx server {
listen 443 ssl http2 reuseport;
ssl_protocols TLSv1. 2 TLSv1. 3;
ssl_stapling on; ssl_stapling_verify on;
add_header Strict-Transport-Security "max-age=31536000" always;
Compression brotli on; brotli_comp_level 5; gzip on;
Cache static location/static/{
add_header Cache-Control "public, max-age=31536000, immutable" always;
try_files $uri =404;
}
Proxy to API location/api/{
proxy_set_header Connection "";
proxy_http_version 1. 1;
proxy_read_timeout 5s;
proxy_connect_timeout 1s;
proxy_pass https://backend;
}
}
sysctl (rețea Linux: ECN/SACK/RACK subsistem kernel - parametri aproximativi)
bash
SACK/RACK/TLP are typically included in modern cores; specify sysctl -w net for your distribution. ipv4. tcp_sack=1 sysctl -w net. ipv4. tcp_ecn=1 sysctl -w net. ipv4. tcp_fastopen=0 # carefully with TFO sysctl -w net. core. default_qdisc=fq_codel sysctl -w net. ipv4. tcp_congestion_control=bbr
QoS (stil Cisco, concept)
class-map match-any REALTIME match dscp ef class-map match-any INTERACTIVE match dscp af31 af21 class-map match-any BULK match dscp cs1 policy-map WAN-QOS class REALTIME priority percent 10 class INTERACTIVE bandwidth percent 50 class BULK bandwidth percent 20 random-detect ecn
Procese și practici operaționale
Planificarea capacității: marja de capacitate ≥ de 30% în timpul orelor de vârf.
Schimbare-control: modificări canare ale rutelor/PoR/gateway-uri.
Testul PMTUD regulat și controlul ICMP.
Documentație cale: în cazul în care este NAT/proxy/AQM/QoS, care MTU, care este proprietarul.
Timeout acord între L7 și rețea reface.
iGaming/fintech specific
Ora evenimentului (meciuri/turnee): încălzirea CDN/PoP, preconectarea la domeniile critice, creșterea temporară a bazinului de reluare, rutele „gri” pentru roboți.
Pași de plată: clasă QoS dedicată, puncte finale Anycast, lanțuri TLS scurte și versiuni/cifre stricte; retragerile sunt doar idempotente.
Restricții regionale/PSP: geo-rutare + liste albe ASN/IP; piscine de ieșire fixe.
Rețele mobile: preferință pentru ChaCha20-Poly1305 (cu AES-NI slab în clienți), compresie agresivă și HTTP/3.
Lista de verificare a implementării
- Bugetul de latență (DNS/TLS/connect/TTFB) și SLO per link.
- Anycast/Geo-rutare pentru API-uri publice/margine, PoPs de backup.
- TLS 1. 3, capsare OCSP, reluare ≥ 70%, HTTP/2/3 incluse.
- BBR + FQ_CoDel, ECN, SACK; PMTUD funcționează, ICMP nu este blocat.
- Un singur MTU de-a lungul lanțului, reprezentând pentru partea de sus a tunelurilor.
- QoS: în timp real/interactive/vrac, clase AQM pe interfețe de suprasarcină.
- CDN/memorie cache pe niveluri/scut de origine; active versionate și SWR.
- RUM + Geo/ASN metrici de rețea; alerte la p95/p99/ECN/losses.
- Cărți de joacă: degradarea regiunii, creșterea pierderilor, transferul de trafic.
Erori comune
Blocarea ICMP/PMTUD → fragmentarea/retransmiterea și p95 ridicat.
Tampoane „groase” fără AQM → bloc tampon și jitter.
Lanțuri lungi CA și fără capsare OCSP → TLS scumpe.
Etape NAT și asimetrie pentru filtre statale → retroys/timeout.
Active „Vary ”/non-versioning excesive → CDN cu raport de succes scăzut.
Nicio segmentare QoS → API nu concurează cu copii de rezervă la vârf.
Total
Optimizarea întârzierii este o combinație de inginerie de rețea, transport adecvat și economii „șurub” pe DNS/TLS/cache. Implementați Anycast/Geo-routing, TLS 1. 3 + reluare, HTTP/3, BBR + FQ_CoDel/ECN, negociază MTU, setează QoS și SLO, măsoară p95/p99 și automatizează cărțile de redare. Apoi, utilizatorii vor primi un răspuns rapid chiar și în cele mai „arde” minute, iar platforma - predictibilitate și marja de siguranță.