PRIO(8)

NUME
PRIO - prioritate qdisc

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

DESCRIERE
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.

ALGORITM
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.

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

Din spațiul utilizatorului
    Un proces cu privilegii suficiente poate codifica clasa de destinație direct cu SO_PRIORITY, a se vedea socket(7).

cu un filtru tc
    Un filtru tc atașat la qdisc-ul rădăcină poate direcționa traficul direct către o clasă.

cu schema priorităților (priomap)
    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.

PARAMETRI QDISC

bands
    Numărul de benzi. Dacă se modifică valoarea implicită de 3, trebuie actualizat și priomap.

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)

CLASE
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.

ERORI
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.

AUTORI
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>

TRADUCERE
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 (https://www.gnu.org/licenses/gpl-3.0.html) 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.