Osnova:
-
Internet je revolucionaran jer je to
mreža za prenos paketa podataka ograničene veličine (standardno do 1500 bajtova po paketu), te na taj način
omogućava korišćenje istih linija prenosa od strane ogromnog broja korisnika istovremeno, i to je ono što je
revolucionarno u odnosu na stare telefonske mreže gde u toku poziva za svaki poziv postoji dodeljena linija od jedne do druge strane. Na internetu ništa nije garantovano.
Nekoliko koncepata.
1.
Bufferbloat: Proizvođači telekomunikacione opreme uglavnom ciljaju da po svaku cenu dobiju najveći protok. To u suštini nije loše dok zbog ispunjenja tog cilja
namerno ne ubace prevelik FIFO buffer (rezervoar paketa) kako bi u slučaju mikro prekida imali mogućnost da retransmituju pakete kako ne bi došlo do gubitaka paketa, te samim tim smanjenja TCP prozora, što za rezultat ima pad brzine prenosa kroz TCP konekcije. To za rezultat ima
nešto veći protok kroz TCP, ali i
ogromno kašnjenje (latency, ping) kada je takav buffer pun.
2.
Situacija bez buffera: dial-up kao primer. Dial-up modemi nemaju buffer jer je tad statički RAM bio skup, brzine su bile male, te ako nije kvalitetna dialup veza, dolazilo je do
momentalih prekida protoka u trenutcima kada modemi pokušavaju da uspostave data link, ali je
kašnjenje (kad postoji protok)
konstantno, nema skokova. Tu imamo situaciju da se zbog gubitaka paketa kroz dialup vezu TCP prozor
smanjivao često, pa su
brzine downloada i uploada
varirale, ali su
brzo dostizale
maksimalne vrednosti jer je veza i onako bila
spora. Zato su kasnih 90ih i ranih 2000ih godina bili popularni razni download akceleratori koji su fajlove skidali sa više paralelnih TCP konekcija, pa su varijacije bile manje vidljive, i fajlovi su se brže skidali.
Do gubitaka paketa na internetu dolazi zbog nekoliko razloga:
- Popunjenog kapaciteta prenosnog linka
- Smetnji pri modulaciji signala (kroz vazduh, žicu ...)
- Lošeg odnosa signala i šuma (kroz vazduh, žicu, optičko vlakno...) te nemogućnosti prijemne strane da zaključi koji je podatak poslat sa druge strane
- Hardverskih i softverskih problema u telekomunikacionoj opremi
Kod telekomunikacione opreme sa velikim bufferima ako dođe do gubitka paketa koji se šalje, isti se pokušava poslati više (desetina) puta ponovo dok konačno ne prođe, dok svi ostali čekaju "u redu", a to ne retko traje i čitavih par sekundi. Naročito kod ADSL, 3G, 4G pa i 5G konekcija.
Gubitak paketa nije nužno loša stvar, jer strana koja šalje podatke zna da ima zagušenja na linku, pa smanji svoje "apetite", to u stvari reguliše brzinu prenosa kroz TCP i omogućava "fer podelu" dostupnih resursa na mreži. Uvek je bolje izgubiti paket, pa da strana koja šalje podatke sama zbog tog gubitka uspori slanje, a onda polako povećava dok ne dođe do novog izgubljenog paketa, nego da dođe do potpunog zagušenja i kolapsa cele mreže.
Veliki gubitak paketa je svakako loš, jer protokoli za detekciju zagušenja kroz gubitak paketa (TCP) nekad agresivno smanjuju brzinu slanja ako detektuju uzastopno izgubljen veći broj paketa.
Sada dolazimo do pojma
AQM (Active Queue Management) /
SQM (Smart Queue Management), to su tehnike
namernog izazivanja gubitka paketa, kada protok dostigne definisanu granicu, te se time izazove strana koja šalje da smanji brzinu slanja, a onda polako i oprezno ponovo povećava dok ne dođe do limita, gde SQM namerno izgubi paket, pa se brzina uspori i ponovo polako povećava.
Na SQM možemo dodati algoritme kao što su
fq_codel ili moderniji, pomenuti
cake, koji u svojoj suštini dodaju namerni gubitak paketa čim primete zadržavanje paketa u bufferima telekomunikacione opreme duže od zadatog cilja (koji može biti od par ms do 10ak ms).
Kada se sve to "ušteluje", efekat je da protok bude par procenata manji od postavljenog limita (jer se nikad ne dostigne baš limit zbog samog TCP-a), ali jitter može da se smanji na izuzetno male vrednosti bez obzira koliko je opterećen link. Kod
ADSL-a na
+11ms (kad je upload zauzet do maksimuma), preko oko
1.5ms na
VDSL-u sa fast profilom i uploadom 8Mbps, do
delića milisekunde na
optici sa 100+Mbps uploadom i downloadom.
Kod
3G, 4G i 5G je sve to
malo nezahvalnije jer su
varijacije u dostupnoj brzini kroz mobilnu mrežu
ogromne. Sve dok imaš uvek tih 50 ili 100Mbps u downloadu i 10Mbps u uploadu dostupno na 4G strani, SQM/FQ_Codel odnosno napredniji SQM/Cake može da ti drži jitter na par milisekundi i kad je link potpuno opterećen. Kad DL recimo padne daleko ispod, jitter će biti veći, ali opet manji nego da nemaš ništa ovog tipa na linku.
Za konekcije sa izuzetno varijabilnim briznama, postoji nešto što se zove
Adaptive Cake, ali je to malo teže namestiti, ipak nije mnogo teško.
Za konkretne načine primene ovoga pisaću kasnije, a ako želite preporuku za konkretne rutere, pišite PP.