PRIO(8) Linux PRIO(8)

PRIO - prioritate qdisc

tc qdisc ... dev dev ( parent id-clasă | root) [ handle major: ] prio [ bands bands ] [ priomap banda banda banda... ] [ estimator interval timeconstant ]

PRIO qdisc este o disciplină simplă de coadă cu clase care conține un număr arbitrar de clase cu priorități diferite. Clasele sunt scoase din coadă în ordine descrescătoare numerică a priorității. PRIO este un planificator și nu întârzie niciodată pachetele - este un qdisc care conservă munca, deși qdisc-urile conținute în clase pot să nu fie.

Foarte util pentru reducerea latenței atunci când nu este necesară încetinirea traficului.

La crearea cu „tc qdisc add”, se creează un număr fix de benzi. Fiecare bandă este o clasă, deși nu este posibil să se adauge clase cu „tc qdisc add”, numărul de benzi care trebuie create trebuie specificat în linia de comandă, atașând PRIO la rădăcina sa.

La scoaterea din coadă, se încearcă mai întâi banda 0 și numai dacă aceasta nu a livrat un pachet, PRIO încearcă banda 1 și așa mai departe. Prin urmare, pachetele cu fiabilitate maximă ar trebui să meargă la banda 0, cele cu întârziere minimă la banda 1, iar restul la banda 2.

Deoarece qdisc-ul PRIO în sine va avea numărul minor 0, banda 0 este de fapt major:1, banda 1 este major:2, etc. Pentru major, înlocuiți numărul major atribuit qdisc-ului în „tc qdisc add” cu parametrul handle.

PRIO dispune de trei metode pentru a determina în ce bandă va fi pus în coadă un pachet.

Un proces cu privilegii suficiente poate codifica clasa de destinație direct cu SO_PRIORITY, a se vedea socket(7).
Un filtru tc atașat la qdisc-ul rădăcină poate direcționa traficul direct către o clasă.
Pe baza priorității pachetului, care la rândul său este derivată din tipul de serviciu atribuit pachetului.

Numai priomap este specific pentru acest qdisc.

Numărul de benzi. Dacă se modifică valoarea implicită de 3, trebuie actualizat și priomap.
Priomap atribuie prioritatea unui pachet unei clase. Prioritatea poate fi definită direct din spațiul utilizatorului sau poate fi derivată din tipul de serviciu al pachetului.

Determină modul în care prioritățile pachetelor, atribuite de nucleu, sunt atribuite benzilor. Atribuirea se face pe baza octetului TOS al pachetului, care arată astfel:

0   1   2   3   4   5   6   7
+---+---+---+---+---+---+---+---+
|           |               |   |
|PRECEDENCE |      TOS      |MBZ|
|           |               |   |
+---+---+---+---+---+---+---+---+

Cei patru biți TOS (câmpul „TOS”) sunt definiți astfel:

Binar  Zecimal  Semnificație
-----------------------------------------
1000   8         Minimize delay (md) - Minimizează întârzierea
0100   4         Maximize throughput (mt) - Maximizează randamentul
0010   2         Maximize reliability (mr) - Maximizează fiabilitatea
0001   1         Minimize monetary cost (mmc) - Minimizează costurile monetare
0000   0         Normal Service - Serviciu normal

Deoarece există 1 bit la dreapta acestor patru biți, valoarea reală a câmpului TOS este dublul valorii biților TOS. Tcpdump -v -v vă arată valoarea întregului câmp TOS, nu doar a celor patru biți. Este valoarea pe care o vedeți în prima coloană a acestui tabel:

TOS     Biți  Semnifică                        Prioritate Linux           Bandă
--------------------------------------------------------------------------------
0x0     0     Serviciu normal                  0 Cel mai bun efort        1
0x2     1     Minimizează costurile monetare   0 Cel mai bun efort        1
0x4     2     Maximizează fiabilitatea         0 Cel mai bun efort        1
0x6     3     mcm+mf                           0 Cel mai bun efort        1
0x8     4     Maximizează randamentul          2 Voluminos                2
0xa     5     mcm+mr                           2 Voluminos                2
0xc     6     mf+mr                            2 Voluminos                2
0xe     7     mcm+mf+rt                        2 Voluminos                2
0x10    8     Minimizează întârzierea          6 Interactiv               0
0x12    9     mcm+md                           6 Interactiv               0
0x14    10    mr+mî                            6 Interactiv               0
0x16    11    mcm+mr+mî                        6 Interactiv               0
0x18    12    mr+mî                            4 Voluminos interactiv     1
0x1a    13    mcm+mr+mî                        4 Voluminos interactiv     1
0x1c    14    mf+mr+md                         4 Voluminos interactiv     1
0x1e    15    mcm+mf+mr+mî                     4 Voluminos interactiv     1

A doua coloană conține valoarea celor patru biți TOS relevanți, urmată de semnificația lor tradusă. De exemplu, 15 reprezintă un pachet care dorește cost monetar minim, fiabilitate maximă, randamenit maxim ȘI întârziere minimă.

A patra coloană listează modul în care nucleul Linux interpretează biții TOS, arătând prioritatea la care sunt asociați.

Ultima coloană arată rezultatul priomap-ului implicit. În linia de comandă, priomap-ul implicit arată astfel:


1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1

Aceasta înseamnă că prioritatea 4, de exemplu, este asociată benzii numărul 1. Priomap vă permite, de asemenea, să listați priorități mai mari (> 7) care nu corespund asocierilor TOS, dar care sunt stabilite prin alte mijloace.

Acest tabel din RFC 1349 (citiți-l pentru mai multe detalii) explică modul în care aplicațiile ar putea foarte bine să își definească biții TOS:

TELNET                   1000           (minimize delay)
FTP
        Control          1000           (minimize delay)
        Data             0100           (maximize throughput)
TFTP                     1000           (minimize delay)
SMTP
        Command phase    1000           (minimize delay)
        DATA phase       0100           (maximize throughput)
Domain Name Service
        UDP Query        1000           (minimize delay)
        TCP Query        0000
        Zone Transfer    0100           (maximize throughput)
NNTP                     0001           (minimize monetary cost)
ICMP
        Errors           0000
        Requests         0000 (cel mai adesea)
        Responses        <la fel ca request> (cel mai adesea)

Clasele PRIO nu pot fi configurate în continuare - ele sunt create automat atunci când qdisc PRIO este atașat. Fiecare clasă poate conține însă un qdisc suplimentar.

Traficul intens în benzile inferioare poate cauza saturarea benzilor superioare. Acest lucru poate fi prevenit prin atașarea unui dispozitiv de modelare (de exemplu, tc-tbf(8) la aceste benzi, pentru a se asigura că acestea nu pot domina legătura.

Alexey N. Kuznetsov, <kuznet@ms2.inr.ac.ru>, J Hadi Salim <hadi@cyberus.ca>. Această pagină de manual este întreținută de bert hubert <ahu@ds9a.nl>

Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.

16 decembrie 2001 iproute2