# TCP tuning

Les tècniques d'ajust de TCP ajusten els paràmetres d'evitació de la congestió de la xarxa de les connexions del protocol de control de transmissió (TCP) en xarxes d'amplada de banda alta i latència elevada. Les xarxes ben ajustades poden funcionar fins a 10 vegades més ràpid en alguns casos. Tanmateix, seguir cegament instruccions sense comprendre les seves conseqüències reals també pot perjudicar el rendiment.

## Característiques de la xarxa i del sistema
### Producte amb retard d'ample de banda (BDP)

Producte de retard d'ample de banda (BDP) és un terme que s'utilitza principalment juntament amb TCP per referir-se al nombre de bytes necessaris per omplir un "camí" TCP, és a dir, és igual al nombre màxim de bits simultanis en trànsit entre el transmissor i el receptor.
Les xarxes d'alt rendiment tenen BDP molt grans. Per donar un exemple pràctic, dos nodes que es comuniquen mitjançant un enllaç per satèl·lit geoestacionari amb un temps de retard d'anada i tornada (o temps d'anada i tornada, RTT) de 0,5 segons i una amplada de banda de 10 Gbit/s poden tenir fins a 0,5 × 10$^{10}$ bits, és a dir, 5 Gbit = 625 MB de dades no reconegudes en vol. Tot i tenir latències molt més baixes que els enllaços per satèl·lit, fins i tot els enllaços de fibra terrestre poden tenir BDP molt elevats perquè la seva capacitat d'enllaç és molt gran. Els sistemes operatius i els protocols dissenyats fa pocs anys, quan les xarxes eren més lentes, es van ajustar per a BDP d'ordres de magnitud més petits, amb implicacions per a un rendiment assolible limitat.

### Buffers

Les configuracions TCP originals admetien TCP reben buffers de mida de finestra de fins a 65.535 (64 KiB - 1) bytes, que era adequat per a enllaços lents o enllaços amb RTT petits. Les opcions d'alt rendiment que es descriuen a continuació requereixen buffers més grans.
La memòria intermèdia s'utilitza als sistemes de xarxa d'alt rendiment per gestionar els retards del sistema. En general, la mida de la memòria intermèdia s'haurà d'escalar proporcionalment a la quantitat de dades "en vol" en qualsevol moment. Per a aplicacions de molt alt rendiment que no són sensibles als retards de la xarxa, és possible interposar retards de memòria intermèdia gran a extrem col·locant punts d'emmagatzematge de dades intermedis en un sistema d'extrem a extrem, i després utilitzar en temps real no automatitzat i programat. transferències de dades per portar les dades als seus punts finals.

## Límits de velocitat TCP

El rendiment màxim possible per a una única connexió TCP està determinat per diferents factors. Una limitació trivial és l'ample de banda màxim de l'enllaç més lent del camí. Però també hi ha altres límits menys evidents per al rendiment de TCP. Els errors de bits poden crear una limitació per a la connexió i també per a RTT.

### Mida de la finestra

En xarxes d'ordinadors, RWIN (TCP Receive Window) és la quantitat de dades que un ordinador pot acceptar sense reconèixer el remitent. Si l'emissor no ha rebut el reconeixement del primer paquet que va enviar, s'aturarà i esperarà i si aquesta espera supera un determinat límit, fins i tot pot retransmetre. Així és com TCP aconsegueix una transmissió de dades fiable.

## Opcions TCP per a un alt rendiment

Al llarg dels anys, s'han fet diverses extensions a TCP per augmentar el seu rendiment en enllaços ràpids d'alt RTT ("xarxes llargues de greix" o LFN).
Els segells de temps TCP (RFC 1323) tenen un doble paper: eviten ambigüitats a causa del camp de nombre de seqüència de 32 bits que s'envolta, i permeten una estimació RTT més precisa en presència de múltiples pèrdues per RTT. Amb aquestes millores, és raonable augmentar la finestra TCP més enllà dels 64 kB, cosa que es pot fer mitjançant l'opció d'escalat de la finestra (RFC 1323).

## Ajustant les connexions lentes

La longitud de la cua IP predeterminada és 1000, que en general és massa gran. Imagineu una estació base Wi-Fi amb una velocitat de 20 Mbit/s i una mida mitjana de paquet de 750 bytes. Quina mida hauria de ser la cua d'IP? Un client de veu sobre IP hauria de poder transmetre un paquet cada 20 ms. El nombre màxim estimat de paquets en trànsit seria:
Mida estimada de la memòria intermèdia = 20000000 * 0,020/8/750 = 66
Una millor longitud de la cua seria:
ifconfig wlan0 mtu 1492 txqueuelen 100

## Referències

* ↑ «High Performance SSH/SCP - HPN-SSH» (en anglès). Psc.edu. [Consulta: 23 gener 2020].
* ↑ «TCP — Performance Tuning on Linux» (en anglès). [Consulta: 11 novembre 2023].
* ↑ Shanley, Michael. «TCP/IP Tuning» (en anglès americà). [Consulta: 11 novembre 2023].
* ↑ «SpeedGuide.net :: TCP Optimizer / Downloads» (en anglès). [Consulta: 11 novembre 2023].