6. diel - Siete - Internet Protocol - Differentiated Services
Cez Internet súbežne prúdi rôzne druhy dát - súbory, webové stránky, video, zvuk, telefónne hovory, živé videokonferencie, atď. Ak je na sieti veľká záťaž (congestion) - tzn. že routery nestíhajú odosielať prijaté pakety dostatočne rýchlo a musí si ich držať v pamäti (bufferu). V tejto chvíli je dôležité rôzne typy komunikácie odlíšiť - zatiaľ čo také sťahovanie filmu môže "počkať" pokojne aj niekoľko minút, tak 3 sekundy oneskorenie vo videokonferenciu alebo v hovoru sú dosť nepríjemné. Pri záťaži teda tieto delay-sensitive (citlivé na oneskorenie) pakety dostanú prednosť pred inými. Toto 8 bitové pole v IP hlavičke je rozdelené na 2 časti: Prvých 6 bitov je pre Differetiated services code point - práve tento kód určuje prioritu paketu. Posledné 2 bity sú pre Explicit congestion notification - tá Dáva routerům priestor na informovanie zariadení, že je na sieti preťaženie. Princípy sú navrhnuté nasledovne:
DSCP - Differentiated services code point
Táto šestibitová sekvencia odlišuje jednotlivé typy služieb. Lepšie povedané, hovorí routerům, ako majú s paketom zaobchádzať - akú má mať prioritu. Router si svoju medzipamäť (buffer) delí na logické fronty, a do každej "radí" prichádzajúce pakety podľa ich priorít. Môžeme to zakresliť takhle:
Odosielanie prebieha (zjednodušene) tak, že sa (napr.) Na každé 3 pakety z frontu najvyššia priorita odošle jeden z frontu Vysoká priorita. A na každé 4 pakety s vysokou prioritou sa odošle 1 s nízkou prioritou, atď. Ak je na Internete primeraná záťaž, a routre stíhajú ihneď spracovávať a odosielať pakety, rozdiel medzi prenosy s najvyššou as najnižšou prioritou nie je postrehnuteľný - čo router príjme, takmer ihneď zase odošle.
Pri "zápche", kedy si routery musí držať prichádzajúce dáta v bufferi dlhšiu dobu bude prenos s najvyššou prioritou prebiehať skoro tak plynule, ako obvykle. Avšak čím nižšia priorita paketov, tým dlhšie si počkáte:
S rovnakou prioritou, s akou sú pakety odosielané, sú taky Zahazování. To nastane v prípade, že je buffer úplne plný. Prvá sa začína "čistiť" front s najnižšou prioritou, zatiaľ čo pakety s najvyššou prioritou by, ak je to možné, nemali byť Zahazování vôbec.
Konkrétnej implementácie tohto "frontového" mechanizmu, preberanie, združovanie a zahadzovanie záleží na výrobcovi - samozrejme by sa mal (aspoň z časti) riadiť štandardy IETF, aby bol router použiteľný.
Priority všeobecne
DSCP najvyššej priority dostávajú pakety nesúci routovacie informácie (routovacie tabuľky) a telefónne hovory (zaujímavé je, že "vytáčanie" dostáva prioritu iba priemernú, až skutočný prenos hlasu má najvyššiu prioritu) alebo livestreaming videa.
Vysokú, stredná či nízku prioritu dostávajú rôzne ostatné služby - môže to byť videostreaming (YouTube), už spomínané vytáčanie u tel. Hovorov, multiplayerové hry, apod.
Najnižšia priorita náleží prenosom, ktorým nevadí ani veľké meškanie - čo je napr. Sťahovanie webových stránok alebo sťahovanie / zdieľanie súborov. Tento DSCP dostanú tiež prenosy, ktoré sa nepodarilo zaradiť do žiadnej z kategórií.
Hodnoty DSCP
Najpoužívanejšie hodnota je práve hodnota predvolené (default) - hodnota 000 000. Také pakety majú nulovú prioritu, a pri zaťažení je router zahodí ako prvý.
Najvyššia priorita sa volá Expedited forwarding (EF) - hodnota 101 110. Pakety označené ako EF majú naopak prioritu absolútnu, a router je drží v bufferu, kým to dá. Preto musí byť jeho používanie prísne kontrolované ISP. Navyše, ak prekročí počet paketov s EF určitý limit (limit by nemal prekročiť 30% všetkého dátového toku), tak routery takým paketom násilne zníži prioritu (a to aj keď je oprávnená).
Pre označenie ostatných paketov sa presadilo Assured forwarding (AF). Standard obsahuje 4 triedy, každú rozdelenú do 3 podtried - celkom teda 12 hodnôt DSCP:
prednosť | trieda I | trieda II | trieda III | trieda IV |
low drop | 001 010 | 010 010 | 011 010 | 100 010 |
Medium drop | 001 100 | 010 100 | 011 100 | 100 100 |
High drop | 001 110 | 010 110 | 011 110 | 100 110 |
Ako sa DSCP prideľuje a kontroluje
DSCP prideľuje odchádzajúcom paketom buď priamo aplikácie, alebo operačný systém - tí najlepšie vedia, čo za dáta posielajú, a klasifikácie je teda najľahšie práve tu. Prideľovanie DSCP je konfigurovateľné, takže ho môžete priamo ovplyvniť - ak by neexistovala žiadna kontrola, potom by si samozrejme všetci nastavili najvyššiu prioritu pre všetky typy služieb a podľa toho by to potom vyzeralo.
Kontrolu vykonáva lokálne ISP - ich routery majú právo prepísať DSCP, ak priorita nezodpovedá typu dát (router teda preskúma paket a pokúsi sa odhadnúť, čo za dáta nesie). Ak ISP ponúka rôzne rýchle (alebo skôr rôzne garantované) pripojenie (vyššia garancia za vyššiu cenu), tak si môže nakonfigurovať limity priorít podľa zdrojovej IP adresy klienta. Ponúka sa použítí Assured forwarding - podľa sumy, ktorú zaplatíte, dostanete maximálny AF triedu, a podľa typu dát sa ešte kontroluje pravdepodobnosť zahodenie (posledné 3 bity DSCP). Ak klient prekročí hodnotu, ktorú mu je ISP ochotný poskytnúť, router hodnotu zníži.
Hoci ISP musí dodržiavať nejaké pravidlá (obzvlášť ohľadom Expedited forwarding), je viacmenej na ňom, aké ponuky poskytne, a hlavne ako ich bude riešiť vo svojich routeroch. Druhý problém je podpora DSCP u routerov - ak jediný router po ceste postráda podporu DSCP (tzn. Že hodnotu v poli ignoruje), je v čase zaťaženia poľa viacmenej zbytočné.
Explicit congestion notification (ECN)
Čiže explicitné upozornenie na preťaženie. Toto pole neslúži na odlíšenie jednotlivých typov dát, ale dáva routerům (ktoré ECN podporujú) možnosť, ako upozorniť koncové zariadenie, že to momentálne "nezvládajú". Je tak šanca, že PC obmedzí posielanie dát alebo chvíľu počká, ale ide iba o upozornenie. Ako na neho to či ono zariadenie bude konkrétne reagovať, záleží na jeho konfiguráciu administrátorom (ECN podporujú snáď všetky súčasné operačné systémy, takže tu problém nie je).
Hodnoty
Ak zariadenie prijíma ECN, nastaví hodnotu ECN v každom IP paketu na 10. Router (podporujúce ECN) hodnotu poľa zmení na 11, ak je preťažený. - Prvý bit ECN teda značí podporu, druhý preťaženie. Ak zariadenie nevie s ECN pracovať (alebo skôr je nastavené, aby ho nepoužívalo), tak ECN bity v každom odchádzajúcom pakete budú 00. Router taký paket normálne pri preťažení zahadzuje, hodnotu v poli nemení. Zároveň je to signál pre cieľové zariadenie, že druhá strana ECN ignoruje - je teda zbytočné nastavovať ECN v odoslaných paketoch na 10, ponechá sa hodnota predvolená - 00.
Podpora
Podľa prieskumu v USA (2011) je webových serverov, ktoré pracujú s ECN niečo málo cez 10% - čo je dosť tragické. Čo sa týka routerov tak niektoré údajne prepisovali ECN vždy na 00, čiže opäť žiadna sláva. Aká je situácia u nás naozaj neviem, ale pri analýze siete môj PC vždy prvý paket odoslal s ECN 10, ale vrátil sa mi zakaždým paket s ECN 00. Dočítal som sa, že Apple oznámil (2015), že ECN v predvolenom nastavení zapne u všetkých svojich produktov. Nezostáva než dúfať v čo najrýchlejší rozšírenie tohto štandardu.
K ECN sa detailnejšie vrátim v článku o Transmission Control Protocol (TCP) - jeho hlavička je hneď za IP hlavičkou, a informácie v nej slúžia práve na kontrolu komunikácie. Teda koľko dát môže zariadenie odoslať, aké dáta má preposlať atď. Reagovať na ECN hodnotu 11 (preťaženie) znamená zmeniť určité hodnoty v TCP hlavičke a odoslať druhej strane paket s informáciou, že má očakávať menej dát.
To by bolo k hlavičke IP všetko, nabudúce sa už budeme venovať podšitím (subnets).