Nəzəri əsaslar və memarlıq
QoS trafik şərtləndirməsi iki mexanizmə - policing və shaping - və tıxacın qarşısını alma alqoritmlərinə əsaslanır. 1. Policing sürəti Committed Information Rate (CIR) səviyyəsinə məhdudlaşdırır: icazə verilən burst ölçülərini (Bc/Be) aşan trafik atılır və ya daha yüksək drop precedence ilə yenidən markalanır. Növbə istifadə olunmur, ona görə gecikmə əlavə olmur; policing adətən müqaviləni tətbiq etmək üçün müştəridən gələn girişdə istifadə olunur. 2. Shaping artıq paketləri yaddaşda buferləyir və konfiqurasiya olunmuş sürətlə buraxır. O, dəyişkən gecikmə və citter əlavə edir, lakin TCP itkilərini hamarlayır, ona görə daha aşağı sürətli interfeyslərə və abunəçilərə çıxışda istifadə olunur. 3. Tıxacın qarşısının alınması: WRED TCP-nin qlobal sinxronizasiyasını azaldır. Buferlər hədlərdən yuxarı dolduqca WRED növbə daşmazdan əvvəl aşağı prioritetli siniflərin paketlərini təsadüfi atır və göndəricilər tədricən yavaşlayır.
Tez-tez qarışdırılan üç müxtəlif mexanizm
Təsnifat və işarələmə paketin hansı sinifə aid olduğunu müəyyən edir (1-ci dərs). Kondisionerləmə (policing və shaping) sinfin və ya müştərinin sürətini məhdudlaşdırır. Planlaşdırma (scheduling) və atılmanın idarə olunması (drop) növbəti hansı paketin linkə çıxacağını və növbə dolanda hansının atılacağını müəyyən edir. Bunlar üç müstəqil emal mərhələsidir: çıxışda növbə konfiqurasiya edilməyənə qədər işarələmə nə zolaq, nə də prioritet yaradır, sürət məhdudiyyəti olmayan növbə isə digər müştəriləri həddən artıq yüklənmiş müştəridən qorumur.
Token bucket: policing və shaping-in ümumi modeli
Token bucket CIR (bit/s) doldurma sürəti və Bc (bayt) tutumu ilə təsvir olunur. Hər göndərilən bayt bir token başa gəlir; paket üçün tokenlər çatdıqca o profilə uyğundur (conform). Tc = Bc / CIR intervalı bucket-in tam dolduğu vaxtdır. Misal: CIR 50 Mbit/s = 6,25 MB/s; Bc 62 500 bayt olduqda Tc 10 ms-dir və müştəri port sürəti ilə 62 500 baytadək (təxminən 1500 baytlıq 41 paket) paket göndərə bilər, bundan sonra sürət CIR-ə düşür. Be (excess burst) üç rəngli model üçün ikinci tutum əlavə edir.
Policer tokenlər qurtaranda gözləmir: paket atılır və ya yenidən işarələnir. Bufer yoxdur, gecikmə əlavə olunmur, lakin TCP itkilərə reaksiya verir. TCP axını üçün Bc tutumu ən azı CIR x RTT olmalıdır: CIR 50 Mbit/s və RTT 20 ms-də bu 125 000 baytdır; Bc 62 500 bayt olsa, tək axın atılmalar səbəbindən CIR-ə çatmayacaq. Shaper tokenlər qurtaranda paketi növbəyə qoyur və tokenlər yığılanda buraxır: itki azdır, lakin növbənin dərinliyi / CIR-ə qədər gecikmə yaranır. 100 Mbit/s-də 1500 baytlıq 64 paketlik növbə ən çox 7,7 ms verir; növbəni 1000 pakete qədər artırmaq 120 ms verir və eyni sinifdə səsi pozur.
| Parametr | Policing | Shaping |
|---|---|---|
| Tokenlər qurtaranda | Drop və ya remark | Buferləmə və gecikmə |
| Gecikmə və jitter | Yoxdur (bufer yoxdur) | növbə / CIR-ə qədər |
| İstiqamət | Adətən ingress (birləşmədə müqavilə) | Adətən egress (link sürətinə qədər) |
| TCP-yə təsir | İtkilər və mişar dişi sürət | Hamarlaşdırma, daha çox gecikmə |
| Saxlanan vəziyyət | Yalnız tokenlər | Tokenlər və növbə |
İki rəngli və üç rəngli siyasətlər
Bir bucket iki nəticə verir: uyğundur və ya yox (two-color). RFC 2697 (srTCM, single-rate three-color) ikinci Be bucket-ini əlavə edir: paket Bc-yə sığırsa yaşıl, Be-yə sığırsa sarı, heç yerə sığmırsa qırmızıdır. RFC 2698 (trTCM, two-rate three-color) iki sürətdən istifadə edir: CIR/CBS və PIR/PBS; qırmızı PIR-in aşılması, sarı CIR-in aşılması (PIR-in yox), yaşıl isə qalan hər şeydir. Misal: CIR 50 Mbit/s, PIR 100 Mbit/s, müştəri 80 Mbit/s göndərir: 50 Mbit/s yaşıl, 30 Mbit/s sarıdır, qırmızı yoxdur. Tipik əməliyyatlar: yaşıl ilkin TC ilə göndərilir, sarı endirilmiş TC (və ya drop precedence) ilə göndərilir və sıxlıqda ilk atılır, qırmızı atılır. Color-blind rejimi əvvəlki qovşağın artıq qoyduğu rəngi nəzərə almır; color-aware onu nəzərə alır.
Planlaşdırıcılar
FIFO paketlərə daxil olma ardıcıllığı ilə xidmət edir, siniflər arasında fərq qoymur. Strict Priority (PQ) həmişə yuxarı növbəyə birinci xidmət edir: gecikmə aşağıdır, lakin zolaq məhdudlaşdırılmayanda səs qalan hər şeyi sıxışdırır (starvation). WFQ/DRR/DWRR zolağı çəkilərə mütənasib bölür: DWRR növbələrə dairəvi xidmət edir və müxtəlif ölçülü paketlərin nisbəti təhrif etməməsi üçün "deficit counter" saxlayır. CBWFQ (Cisco) sinifə zəmanətli bandwidth verir və qalığı çəkilərə görə bölür. LLQ = CBWFQ + bir strict priority növbə: Cisco-da priority policer ilə məhdudlaşdırılır, lakin yalnız sıxlıq zamanı (boş linkdə səs qoyulmuş sürəti aşa bilər), ona görə qorunma üçün yalnız növbə yox, giriş də məhdudlaşdırılır. Junos-da prioritet növbə priority strict-high ilə verilir, qalanları zolağı transmit-rate vasitəsilə bölür; prioritet növbənin məhdudlaşdırılması ayrıca konfiqurasiya tələb edir (rate-limit və ya giriş policer-i).
100 Mbit/s üçün tipik bölgü: səs 10% (10 Mbit/s) prioritet növbədə, video 20%, kritik data 30%, qalanı (Best Effort) istifadə olunmayan zolaqla birlikdə qalığı alır. Zəmanətlər yalnız sıxlıq zamanı işləyir: yüklənməmiş linkdə hər sinif boş zolaqdan istifadə edir.
Atılmanın idarə olunması: tail drop, RED və WRED
Növbə dolanda tail drop bütün axınların ən son gələn paketlərini eyni anda atır; bütün TCP sessiyaları pəncərəni eyni vaxtda azaldır, sonra eyni vaxtda artırır (qlobal sinxronlaşma) və link mişar kimi işləyir. RED paketləri əvvəlcədən təsadüfi atmağa başlayır: növbə uzunluğunun eksponensial orta qiymətinə görə avg = avg*(1 - 2^-n) + cari*2^-n (Cisco-da n susmaya görə 9-dur). avg min threshold-dan aşağıdırsa, atılma yoxdur; min və max arasında ehtimal 1/denominator-a qədər xətti artır; max threshold-dan yuxarı hamısı atılır. Misal: min 20, max 40 paket, denominator 10: avg 30 olduqda atılma ehtimalı 5%-dir. WRED hər drop precedence səviyyəsi və ya rəng üçün ayrıca profilə malikdir: AFx3 və sarı paketlər AFx1 və yaşıllardan əvvəl atılır. WRED yalnız TCP-yə bənzər siniflərə (data, Best Effort) tətbiq olunur; UDP üzərindəki səs və video atılmaya reaksiya vermir, onları prioritet və policer qoruyur.