Автор Тема: Kernel 2.4 shaping  (Прочетена 1165 пъти)

nucleus

  • Напреднали
  • *****
  • Публикации: 21
    • Профил
Kernel 2.4 shaping
« -: Apr 14, 2007, 14:29 »
100% има подобни запитвания, но неможах да ги намеря за което се извинявам.
 Въпросът ми е следния:
Как мога да разделя bandwidth-a м/у потребителите на дадена мрежа по равно- trafic shaping:)
Става дума за slackware 4.2 ядро.
благодаря предварително.
Активен

PERMANENT

  • Напреднали
  • *****
  • Публикации: 94
    • Профил
Kernel 2.4 shaping
« Отговор #1 -: Apr 15, 2007, 00:13 »
Потърси в търсачката за flat_tc на 1000% съм сигурен че ще намериш нещо интересно защото теми свързани с него са пускани доста.
Трябва да ти оточня само че на оригиналното ядро(предполагам че това 2.4.2 е такова) абсурд да тръгне.За да го поткараш ще трябва да компилираш ipset(за целта ще трябва да patch-ваш) и не помня още какво.Потърси малко и за IPCLASSIFY това трябва да е пакет за контрол на трафика които е по-добър от flat tc-то защото ползвал някакъв друг метод(пак почнах да пиша на аба).В it-place.org имаше статия на български как точно става само с tc и ip но беше доста стара и ползваше ядро 2.2.xx но вече it place го няма (нищо не е вечно за съжаление).
Имаш късмет че навремето се сетих да save-на ето един цитат от нея

Цитат
Linux Traffic Control-а е базиран на три основни блока:
Queueing-дисциплина
 Класове
 Филтри
 1. Queueing (опашки)
     Всеки интерфейс има начин за обработване на опашките, асоциирани към него. Най-простата е FIFO. Има няколко типа на queueing, които се поддържат в момента:
 Class Based Queue
 Token Bucket Flow
 CSZ
 First In First Out (FIFO)
 Priority
 TEQL
 SFQ
 ATM
 RED
     Някои от тези дисциплини използват филтри, за да се квалифицират пакетите в различни класове, и да ги обработват спрямо това. Това позволява даден пакет да има приоритет над друг. Такива са например FIFO, CBQ.  Queueing-дисциплините и класовете са вързани едно с друго. Присъствието на класове е фундаментална опция за queueing-дисциплината. Също така, филтрите могат да бъдат комбинирани със queueing-дисциплини и класове.
 2. Класове
     Опашките и класовете са тясно свързани. Всеки клас има опашка. Класовете се индетифицират спрямо class ID и internal ID. Class ID-то се задава от потребителя, докато internal ID-то се задава от queueing-дисциплината. Class ID-то има структура "major:minor". Major-номера сочи инстанцията в queueing-дисциплината, от която зависи. Minor-номера идентифицира тоя клас в дадена дисциплина.
     За повече подробности може да се види include/net/pkt_sched.h.
 "tc (Traffic Controller)"
Traffic Controller (tc) е потребителска програма, която е грубо казано frontend към създаването и асоциирането на опашки към дадени изходни интерфейси. Тя се използва за създаването на различни видове опашки и асоцииране на класове към всяка от тези опашки. Също така може да се използва за слагане на филтри базирани на  routing-таблицата, u32-класификаторите, както и RSVP-класификаторите. Тя използва netlink socket-ите като механизъм за комуникиране с мрежовите функции на кернела.
tc се използва по следния начин:
 tc [-s[tatistics]] [-d[etails]] [-r[aw]] < qdiscp | class | filter > { COMMAND | help }
 , където:
-s[tatistics]    статистика
  -d[etails]    детйлна информация
  -r[aw]    говори само за себе си
  qdiscp   queueing-дисциплина
  class    клас
  filter    филтър
  Queuing-дисциплина:
     Синтаксиса за задаване на queueing-дисциплина е следния:
tc qdisc [ add | del | replace | change | get ] dev STRING [ handle QHANDLE ] [ root | parent CLASSID ] [ estimator INTERVAL TIME_CONSTANT ] [ [ QDISC_KIND ] [ help | OPTIONS ] ]
 tc qdisc show [ dev STRING ]
 , където:
QDISC_KIND    може да има стойност pfifo, bfifo, tbf,  prio, cbq, red или т.н., т.е. име на  queueing-дисциплината
  hande    уникален handle, даден на дадената дисциплина от създателя. Не може да има две дисциплини с еднакъв handle.
  root    показва, че дадената дисциплина е root в  sharing-йерархията.
  parent    показва родителя на дадената дисциплина.
       За да се създаде "class based queue (CBQ)":
tc qdisc [ add | del | replace | change | get ] dev STRING \
 cbq bandwidth BPS [ avpkt BYTES ] [ mpu BYTES ] [ cell BYTES ] [ ewma LOG ]
 , където:  
bandwidth    максимална скорост на дадения интерфейс
  mpu    минимални байтове, които да се изпращат в даден пакет
   Пример:
    tc qdisc add dev eth0 root handle 1: cbq bandwidth 10Mbit allot 1514 cell 8 avpkt 1000 mpu 64
     В дадения пример, Class Based Queue (CBQ) се създава и се връзва към eth0. handle-ът е 1: (което е 1:0). Общата възможна скорост е 10Mbit.
     Класове:
 Синтаксисът за създаване на класове е следния:
tc class [ add | del | change | get ] dev STRING [ classid CLASSID ] [ root | parent CLASSID ] [ [ QDISC_KIND ] [ help | OPTIONS ] ]
 tc class show [ dev STRING ] [ root | parent CLASSID ]
 , където:  
QDISC_KIND    QDISC_KIND може да бъде някоя от queueing-дисциплините, които поддържат класове (prio, cbq и т.н.).
  classid    представлява handle-ът, който е даден на тоя клас от създателя.
  root    показва, че тоя клас е root-клас в sharing-йерархията.
  parent    показва handle-ът на родителя на дадената   queueing-дисциплина.
   3. Class Based Queue
     За да се създаде CBQ, синтаксисът е следния:
cbq bandwidth BPS rate BPS maxburst PKTS [ avpkt BYTES ] \
 [ minburst PKTS ] [ bounded ] [ isolated ] \
 [ allot BYTES ] [ mpu BYTES ] [ weight RATE ] \
 [ prio NUMBER ] [ cell BYTES ] [ ewma LOG ] \
 [ estimator INTERVAL TIME_CONSTANT ] \
 [ split CLASSID ] [ defmap MASK/CHANGE ]
 , където:
bandwidth    показва максималната скорост, която е възможна за  queueing-дисциплината от тоя клас.
  rate    представлява скоростта, която се дава на тоя клас.
  avpkt    представлява средния брой байтове в пакет, за тоя клас.
  bounded    показва, че тоя клас не може да "всзина назаем" неизползвана скорост от "parent"-класа си.
  isolated    показва, че класа няма да дели скорост с някой друг клас.
       В дадения пример се създава CBQ клас с handle - 1:2. Неговият родител се индентифицира с handle - 1:1. Средният размер на пакета е 1000 байта. Split-точката е 1:0, което показва  root-а на sharing-процедурата.
tc class add dev eth1 parent 1:1 classid 1:2 cbq bandwidth 10Mbit \
 rate 1Mbit allot 1514 cell 8 weight 100Kbit prio 3 maxburst 20 \
 avpkt 1000 split 1:0 defmap c0
 4. Филтри:
 Синтаксисът за създаване на филтри е:
tc filter [ add | del | change | get ] dev STRING \
 [ prio PRIO ] [ protocol PROTO ] [ root | classid CLASSID ] \
 [ handle FILTERID ] [ [ FILTER_TYPE ] [ help | OPTIONS ] ] \
 tc filter show [ dev STRING ] [ root | parent CLASSID ]
 , където: FILTER_TYPE е типа на филтъра (rsvp, u32, fw, route и т.н.}, а форматът на FILTERID зависи от класификатора. prio показва приоритет на дадения филтер. Останалите опции бяха разгледани по-горе.
Route-класификаторите класифицират пакетите спрямо  routing-таблицата. Синтаксисът е следния:
tc filter [add | del | change | get] dev STRING \
 [parent PARENTID] [protocol PROTO] [prio PRIORITY] route
 , където: PROTO е low-level протокола {ip,  icmp или някой друг}
     Ето и един пример:
 tc filter add dev eth0 parent 1:0 protocol ip prio 100 route
     За да се зададат правила към филтъра:
 ip route add 129.237.125.150 via 129.237.125.146 dev eth0 flow 1:2
     Тук се зададе правило за IP 129.237.125.150 с Gateway 129.237.125.146, като целия трафик принадлежи към клас, чийто handle е 1:2.


не искам да пускам цялата статия по този начин за това ако ти се стори интересно ще измислим как да фенеш всичко

успех въреки че съм почти сигурен че ще направиш толкова колкото направих аз навремето(преди 2 месеца) а то е едно голямо НИЩО
Активен

smelkomar

  • Напреднали
  • *****
  • Публикации: 429
    • Профил
Kernel 2.4 shaping
« Отговор #2 -: Apr 15, 2007, 00:31 »
Freesco като рутер-дистрибуция e базирано на Slackware и използва ядро 2.4.x
Активен

Ползвам т'ва, к'вот ме кефи

PERMANENT

  • Напреднали
  • *****
  • Публикации: 94
    • Профил
Kernel 2.4 shaping
« Отговор #3 -: Apr 15, 2007, 00:41 »
За Coyote съм чувал доста хубави работи '<img'>
но за тези дистра ти трябва отделен комп(защото под тези ос нищо друго не може да се прави) с които не всеки разполага
Активен

VladSun

  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Kernel 2.4 shaping
« Отговор #4 -: Apr 15, 2007, 04:02 »
Цитат (PERMANENT @ Април 15 2007,00:13)
Потърси в търсачката за flat_tc на 1000% съм сигурен че ще намериш нещо интересно защото теми свързани с него са пускани доста.
Трябва да ти оточня само че на оригиналното ядро(предполагам че това 2.4.2 е такова) абсурд да тръгне.За да го поткараш ще трябва да компилираш ipset(за целта ще трябва да patch-ваш) и не помня още какво.Потърси малко и за IPCLASSIFY това трябва да е пакет за контрол на трафика които е по-добър от flat tc-то защото ползвал някакъв друг метод(пак почнах да пиша на аба).

Де факто с flat_tc нищо няма да намери '<img'>
директен линк:
FlatTC

А IPCLASSIFY е допълнение към iptables и част от проекта FlatTC - чрез него отпада нуждата от маркиране на пакети и използване на ТС филтри.



Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
Shaping на локална мрежа и рутер
Настройка на програми
smg 3 1802 Последна публикация Aug 24, 2005, 15:54
от vic_semionov
shaping
Настройка на програми
rrman 7 2007 Последна публикация Oct 05, 2005, 19:44
от rrman
shaping на 2 интерфейса
Хардуерни и софтуерни проблеми
Hapkoc 21 5446 Последна публикация Dec 12, 2005, 12:23
от Hapkoc
Shaping за определено IP в локална мрежа
Настройка на програми
spritable 2 1618 Последна публикация Nov 02, 2005, 17:21
от
Cbq shaping
Настройка на програми
Zajo_ 0 736 Последна публикация May 13, 2006, 22:05
от Zajo_