Автор Тема: tc  (Прочетена 1004 пъти)

st_dimitrov

  • Напреднали
  • *****
  • Публикации: 102
    • Профил
    • WWW
tc
« -: Nov 19, 2005, 14:15 »
Здравейте,

наскоро един познат си взема БИЗ пакет от бТК и се наложи аз да му правя рутер-а който да разпределя интернета. Всичко е топ, но ограничението на скоростта все още е със CBQ а аз искам да го подкарам със скрипт който да използва TC

Стигнах до тук:

Примерен код

#!/bin/bash
/sbin/tc qdisc del dev eth0 root 2>/dev/null
/sbin/tc qdisc add dev eth0 root handle 1: htb default 10
/sbin/tc class add dev eth0 parent 1: classid 1:1 htb rate 512Kbit burst 15k
/sbin/tc class add dev eth0 parent 1:1 classid 1:10 htb rate 1Kbit ceil 2Kbit
TCCAD="/sbin/tc class add dev eth0 parent 1:1 classid "
$TCCAD 1:20 htb rate 40Kbit ceil 45Kbit burst 10k
$TCCAD 1:30 htb rate 40Kbit ceil 45Kbit burst 10k
$TCCAD 1:40 htb rate 60Kbit ceil 65Kbit burst 10k
$TCCAD 1:50 htb rate 80Kbit ceil 85Kbit burst 10k
$TCCAD 1:60 htb rate 80Kbit ceil 85Kbit burst 10k
$TCCAD 1:70 htb rate 200Kbit ceil 205Kbit burst 10k
$TCCAD 1:80 htb rate 40Kbit ceil 512Kbit burst 10k
TC_DOWN_N="/sbin/tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip dst"
$TC_DOWN_N 192.168.0.3 flowid 1:20
$TC_DOWN_N 192.168.0.4 flowid 1:50
$TC_DOWN_N 192.168.0.5 flowid 1:70
$TC_DOWN_N 192.168.0.6 flowid 1:30
$TC_DOWN_N 192.168.0.7 flowid 1:40
$TC_DOWN_N 192.168.0.8 flowid 1:60
/sbin/tc filter add dev eth0 protocol ip parent 1: prio 5 u32 match ip dst 192.168.0.2 flowid 1:80


/sbin/tc qdisc del dev eth1 root 2>/dev/null
/sbin/tc qdisc add dev eth1 root handle 2: htb default 10
/sbin/tc class add dev eth1 parent 2: classid 2:1 htb rate 128Kbit burst 15k
/sbin/tc class add dev eth1 parent 2:1 classid 2:10 htb rate 1Kbit ceil 2Kbit
TCUPN="/sbin/tc class add dev eth1 parent 2:1 classid"
TCUPO="htb rate 15Kbit ceil 50Kbit burst 10k"
$TCUPN 2:20 $TCUPO
$TCUPN 2:30 $TCUPO
$TCUPN 2:40 $TCUPO
$TCUPN 2:50 $TCUPO
$TCUPN 2:60 $TCUPO
$TCUPN 2:70 $TCUPO
/sbin/tc class add dev eth1 parent 2:1 classid 2:80 htb rate 20Kbit ceil 100Kbit burst 10k

TCUP_N="/sbin/tc filter add dev eth1 protocol ip parent 2: prio 1 u32 match ip dst"
$TCUP_N 192.168.0.3 flowid 2:20
$TCUP_N 192.168.0.4 flowid 2:30
$TCUP_N 192.168.0.5 flowid 2:40
$TCUP_N 192.168.0.6 flowid 2:50
$TCUP_N 192.168.0.7 flowid 2:60
$TCUP_N 192.168.0.8 flowid 2:70
/sbin/tc filter add dev eth1 protocol ip parent 2: prio 5 match ip dst  192.168.0.2 flowid 2:80


пускам го този скрипт, зарежда се без грешки, но скоростта е толкова малка, че дори не може да се свържат клиентите със ДНС сървър-а след рутера да си ресолв-нат някой хостнейм примерно...

етх0 е картата към локалната мрежа а етх1 е картата към интернет. Клиентите са както се вижда 192.168.0.2-8 като идеята е те да имат постоянна скорост а 192.168.0.2 да взима всичко което не се използва.

Сигурно някъде греша, въпроса е че не си намирам грешката :/
Активен

st_dimitrov

  • Напреднали
  • *****
  • Публикации: 102
    • Профил
    • WWW
tc
« Отговор #1 -: Nov 19, 2005, 19:38 »
хмм странното е че всички пакети отиват в дефоулт класа който дава 1кбит до 2кбита скроост ... когато увеличих скоростта за дефоултския клас скоростта се промени .... значи въпроса е защо всички пакети отиват там  '<img'>
Активен

  • Гост
tc
« Отговор #2 -: Nov 19, 2005, 20:03 »
Цитат (st_dimitrov @ Ноември 19 2005,20:38)
хмм странното е че всички пакети отиват в дефоулт класа който дава 1кбит до 2кбита скроост ... когато увеличих скоростта за дефоултския клас скоростта се промени .... значи въпроса е защо всички пакети отиват там  '<img'>

Защо не пробваш с HTB ?
Активен

st_dimitrov

  • Напреднали
  • *****
  • Публикации: 102
    • Профил
    • WWW
tc
« Отговор #3 -: Nov 19, 2005, 21:08 »
вече пробвах и се оказа че трябва да използвам classid а не flowid и всичко потегли '<img'>
Активен

st_dimitrov

  • Напреднали
  • *****
  • Публикации: 102
    • Профил
    • WWW
tc
« Отговор #4 -: Nov 20, 2005, 23:37 »
ааа пичове здравейте пак ...

от както пуснах този скрипт със TC всичко се омаза ... един тегли със пълния канал друг почти не му стига скорост ... все едно няма шейпър '<img'> направо съм в тъч.... на някой случвало ли му се е, или ако може да дадете идея какво да променя по този скрипт че ми надуха главата тука '<img'>((

благодаря предварително на всички които ще се отзоват във  вас ми е надеждата '<img'>
Активен

  • Гост
tc
« Отговор #5 -: Nov 21, 2005, 19:48 »
айде бе хора никой ли не може да помогне ;(
Активен

zarhi

  • Напреднали
  • *****
  • Публикации: 81
    • Профил
tc
« Отговор #6 -: Nov 22, 2005, 09:00 »
http://lartc.org и четене му е майката. За да работи шейпъра към всеки class трябва да се закачи някакъв qdisc. Освен това default трябва да се закачи направо за root, не за 1:1. В default отива всичко което filter не е пратило в друг клас.

Т.е.:

#!/bin/bash
/sbin/tc qdisc del dev eth0 root 2>/dev/null
/sbin/tc qdisc add dev eth0 root handle 1: htb default 10
/sbin/tc class add dev eth0 parent 1: classid 1:1 htb rate 512Kbit burst 15k
/sbin/tc qdisc add dev eth0 parent 1:1 sfq perturb 10

/sbin/tc class add dev eth0 parent 1: classid 1:10 htb rate 1Kbit ceil 2Kbit
/sbin/tc qdisc add dev eth0 parent 1:10 sfq perturb 10

TCCAD="/sbin/tc class add dev eth0 parent 1:1 classid "
$TCCAD 1:20 htb rate 40Kbit ceil 45Kbit burst 10k
/sbin/tc qdisc add dev eth0 parent 1:20 sfq perturb 10

TC_DOWN_N="/sbin/tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip dst"
$TC_DOWN_N 192.168.0.3 flowid 1:20
Активен

http://www.skknet.net

CentOS 4.2 (Final) running on:
Epox EP-9NPA+ Ultra
Athlon64 3200+
GigaByte GF6600 PCI-Express x16
2Gb RAM, 2x80Gb Seagate SATA, 4x160Gb Seagate PATA, 2x120Gb Seagate PATA