Klasifikácia sieťového prenosu

Štefan Miklošovič, miklosovic@gmail.com

Obsah

Teória

Úvod

Internet bol vybudovaný s cieľom poskytnúť prenosovú službu, bez zabezpečenia parametrov spojenia, ako je napríklad doručenie paketov do určitej doby (s minimalizáciou oneskorenia spôsobeného prenosom v sieti) prípadne zabezpečenia predom definovanej šírky pásma po celú dobu trvania prenosu a podobne. Pritom v dnešných sieťach je stále častejšie potrebné rozlišovať rôzne požiadavky na kvalitu služieb, tzv. QoS.

QoS

QoS je skratka pre Quality of Service. Je definovaná ako výsledok výkonnosti služby, ktorá určuje stupeň spokojnosti užívateľa. Pojem ako "spokojnosť užívateľa" je dosť ťažko definovateľný. Kvalita služby v IP sieťach charakterizuje výkonnosť toku paketov jednou alebo viacerými sieťami. Snahou je doručiť pakety medzi koncovými užívateľmi podľa určitých kritérii. Už v dobe zrodu Internetu sa definovali pravidlá:

  • žiadnemu typu sieťovej prevádzky nebude odmietnutý prístup do siete
  • s akýmkoľvek sieťovým prenosom sa bude zaobchádzať rovnako
  • jediná garancia pre určitý sieťový prenos bude, že z celkového hladiska bude prenesený čo najlepším spôsobom, tzv. Best Effort, samozrejme v závislosti na dostupných prostriedkoch. V praxi to znamená, že nebude umelo dochádzať k oneskoreniu alebo ku stratám paketov.
  • Tieto zásady sú z dnešného poľadu prekonané a sú prežitkom. Existujú rôzne typy sieťového prenosu, ktorých aplikácie požadujú pre svoj korektný beh kvalitatívne rôzne požiadavky. Napríklad IP telefónia, multimediálne prenosy, videokonferencie a komunikácia interkatívneho charakteru.

    Triedy služieb

    Sieťový prenos sa kategorizuje do tried. Kategorizácia sa deje pomocou tzv. Behavior Aggregate a MultiField. Pre sieťový prenos sú bežne definované nasledujúce triedy:

    Typ služby
    Best effortReal-timeBusiness
    wwwIP telefóniawww
    komunikačné programy (icq,msn,aim,irc ... )on-line web kameryvzdialená správa pc (vnc ...)
    e-mailon-line TV
    ftp,p2p

    Základné parametre prenosu

    Kvalita služby je ovplyvnená kombináciou rôznych parametrov:

  • Implementácia QoS

    Ku otázke QoS môžeme pristupovať troma spôsobmi:

  • TOS smerovanie
  • Integrované služby
  • Diferencované služby
  • Hlavný rozdiel medzi integrovanými a diferencovanými službami je ten, že integrované služby zaisťujú požadovanú kvalitu pre konkrétny užívateľský prúd dát, kdežto diferencované služby naopak globálne znevýhodňujú dané triedy prúdov dát, takže môžeme povedať, že integrované služby sa správajú ako dynamické, ale diferencované služby sa správajú ako statické.

    Obmedzovanie šírky pásma

    Najjednoduchším prístupom, ako sa vyhnúť zahlteniu linky, je pakety proste zahodiť. Toto ale nie je vo všeobecnosti dobrý prístup, pretože to vedie k nežiadúcim efektom najmä pri spojovaných službách. Existujú lepšie metódy ako napríklad:

    Referenčný model diffserv

    classification conditioning

    Prax

    Konfigurácia vo FreeBSD

    Možnosť jednoduchého obmedzenia prenosu ponúka akcia "probability" v príkaze ipfw. napr.:
    ipfw add prob 0.8 allow icmp from any to any in icmptypes 8
    Týmto zahadzujeme 20% ICMP paketov. Omnoho pokročilejším riešením je dummynet, bol prvotne navrhnutý pre testovanie sieťových protokolov. K obmedzeniu prenosu sú určené dve štruktúry, pipe a queue. Pipe emuluje linku s určitou šírkou pásma, queue implementuje tzv. WF2Q+ (Worst-case Fair Weighted Fair Queueing). Fronty sú napojené na rúru, každá fronta má svoju váhu, vyššia váha má väčšiu prioritu. Každá váha má svoju veľkosť a stratovosť, fronty sa môžu tvoriť dynamicky podľa zdrojových prípadne cieľových adries. Pakety sa presúvajú z queue do pipe až keď je v pipe miesto, rýchlosť, akou sa pakety v pipe prenášajú je dané jej konfiguráciou.

    Začlenenie dummynet-u do systému

    # kldload dummynet // zavedieme modul do jadra
    # kldload dummynet && ipfw add allow all from any to any
    
    Ak nemáme v jadre zapnutú podporu dummynet-u, spravíme tak nesledovne:
    # cd /usr/src/sys/i386/conf && vim KERNEL
    tam
    options IPFIREWALL
    options DUMMYNET
    
    a potom jadro preložíme. výpis rúr a front
    # ipfw pipe show
    # ipfw queue show
    
    zmazanie rúr/front
    # ipfw pipe delete cislo_rury
    # ipfw queue delete cislo_fronty
    
    zmazanie všetkých rúr/front
    # ipfw pipe flush
    # ipfw queue flush
    

    príklady

    Obmedzenie linky na 128Kbit/s full-duplex a rovnomerné rozdelenie rúry na pásmo 128Kbit/s s dĺžkou fronty 16KB obojsmerne
    # ipfw pipe 1 config bw 128Kbps queue 16Kbytes
    # ipfw pipe 2 config bw 128Kbps queue 16Kbytes
    
    rovnomerné rozdelenie pásma rúr podľa zdrojovej a cieľovej IP adresy
    # ipfw queue 1 config pipe 1 mask src-ip 0xffffffff queue 16Kbytes
    # ipfw queue 2 config pipe 2 mask dst-ip 0xffffffff queue 16Kbytes
    # ipfw add queue 1 ip from ... to ....
    # ipfw add queue 2 ip from ... to ....
    
    Obmedzenie linky na 256Kbit/s half-duplex a jej delenie v pomere 2/3, rúra o šířke pásma 256Kbit/s s dĺžkou fronty 32KB.
    # ipfw pipe 1 config bw 256Kbit/s queue 32Kbytes
    # ipfw queue 1 config pipe 1 weight 40 queue 32Kbytes
    # ipfw queue 2 config pipe 1 weight 60 queue 32Kbytes
    # ipfw add queue 1 ip from ... to ....
    # ipfw add queue 2 ip from ... to ....
    

    Monitorovanie okamžitého prietoku dát

    užitočné, nielen sieťové, monitorovacie nástroje

    Literatúra