table of contents
- trixie-backports 4.29.1-1~bpo13+1
- testing 4.29.1-1
- unstable 4.29.1-1
| PRIO(8) | Linux | 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 1Aceasta î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 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 |