Tc

A Unix/Linux szerverek üzemeltetése wikiből
A lap korábbi változatát látod, amilyen PinterGusztav (vitalap | szerkesztései) 2006. november 24., 20:08-kor történt szerkesztése után volt.

1 tc

A hálózatunkba beérkező forgalmat nem tudjuk sajnos igazán jól formázni, mert nincs hatásunk rá. Kb. olyan mit a papíralapú levelezés, a postásnak nem mondhatjuk meg, hogy naponta csak 5 levelet tegyen a levélszekrényünkbe, mert különben gond lesz. Viszont az olyan forgalmat, aminek forrása az általunk felügyelt hálózatban van, azt már könnyen szabályozhatjuk. Erre jó a tc.


1.1 A traffic control architektúrája

1.1.1 Terminológia

Queueing Discipline (qdisc)

  • Egy eszköz feldolgozási sorának algoritmusa

root qdisc

  • Ez a qdisc kapcsolódik az eszközhöz, az a fa struktúra gyökere.

Classless qdisc

  • Osztályozás mentes viselkedés, a queue-ba kerüls csomagokat nem szórja szét osztályokba, csak újraütemezi, várakoztatja vagy eldobja. Semmit nem lehet rajta konfigurálni, egyszerüen csak van és lehet használni.

Classful qdisc

  • Osztályokra bontható qdisc. Az osztályokból egy fa struktúra építhető fel. Az ilyen qdisc-eknek már sok (rengeteg) paraméterét lehet beállítani.
    • pfifo_fast
    • Token Bucket Filter (TBF)
    • Stochastic Fairness Queueing (SFQ)
    • PRIO
    • Class Based Queueing (CBQ)
    • Hierarchical Token Bucket (HTB)

Class (osztály)

  • Egy qdisc-nek több osztálya is lehet, egy osztálynak lehet több gyermek osztálya. Minden osztályhoz tartozik egy qdisc.

Classifier (osztályozó)

  • Ez dönti el, hogy melyik csomag melyik osztályba kerül tovább.

Filter (szűrő)

  • Az osztályozás a szűrőkkel pontosítható, ha egy csomag paraméterei megfelel egy kondíciónak, akkor az osztályozó aképp fog eljárni vele.

Scheduling (ütemezés)

  • A csomagok ütemezését szolgálja a qdisc-eken keresztül az osztályozó segítségével.

Shaping (formázás)

  • Az határozza meg, hogy egy csomag mikor kerülhet ki a médiumra, hogy az adott paramétereket (sávszélesség, burstösség) teljesítse a csomagfolyam.

Policing (rendelkezés)

  • Meghatárzza, hogy mi történjen a csomaggal. Késleltetést szenvedjen, eldobásra kerüljön (a Linux csak eldobni tudja, mivel nincs bemeneti sor).

Work-Conserving

  • Ez olyan qdisc, ha van kiköldendő csomag, akkor azt kiküldi.

non-Work-Conserving

  • Ez olyan qdisc, hogy ha van kiküldendü csomag, akkor azt csak akkor küldi ki, ha belefér a paraméterek álatal meghatározott forgalmi mintába (pl. nem lesz túl burstös)

A tc hierarchiája a kernelben:

               Userspace programs
                    ^
                    |
    +---------------+-----------------------------------------+
    |               Y                                         |
    |    -------> IP Stack                                    |
    |   |              |                                      |
    |   |              Y                                      |
    |   |              Y                                      |
    |   ^              |                                      |
    |   |  / ----------> Forwarding ->                        |
    |   ^ /                           |                       |
    |   |/                            Y                       |
    |   |                             |                       |
    |   ^                             Y          /-qdisc1-\   |
    |   |                            Egress     /--qdisc2--\  |
 --->->Ingress                       Classifier ---qdisc3---- | ->
    |   Qdisc                                   \__qdisc4__/  |
    |                                            \-qdiscN_/   |
    |                                                         |
    +---------------------------------------------------------+
  • Az egész nagy doboz a kernel
  • Elvileg nincs bemeneti queue (azért meg lehet oldani)
  • Ha a gépnek szól egy csomag akkor az felfele megy, ha nem akkor jobbra
Személyes eszközök