Linux за българи: Форуми

Linux секция за начинаещи => Настройка на програми => Темата е започната от: PAIN1 в Nov 13, 2005, 17:50



Титла: HTB
Публикувано от: PAIN1 в Nov 13, 2005, 17:50
Така,ситуацията е следната, предстои да правя малък рутер в квартална мрежа, но нито машината е тука нито доставчика е докарал нета.Но искам да подготвя нещата предварителн оза да не държа останалите хора от тази мрежа без нета или с неказчествен такъв докато го настроя.
Та четах разглеждах прелиствах за HTB, това което искам да постигна е:
Да речем имам скорост за сваляне 512кбитс, искам тази скорост да се дели равномерно между потребитете в тази мрежа, тоест 10.3.0.1, 10.3.0.2, 10.3.0.3 и когато обаче някой потребител не ползва целия си канал, останалата му скорост да бъде разделена между заявките на другите 2-ма потребители.Примерно 3 ползва 50 от 170 възможни кбитс, останалите 120 да се разделят между 1 и 2, та това което си мисля че ще работи е


Примерен код


tc class add dev eth0 parent 1: classid 1:1 htb rate 512kbits ceil 512kbits
tc class add dev eth0 parent 1:1 classid 1:2 htb rate 170kbits ceil 512kbits
tc class add dev eth0 parent 1:1 classid 1:3 htb rate 170kbits ceil 512kbits
tc class add dev eth0 parent 1:1 classid 1:4 htb rate 170kbits ceil 512kbits

tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 \
   match ip src 10.3.0.1 flowid 1:2

tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 \
   match ip src 10.3.0.2 flowid 1:3

tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 \
   match ip src 10.3.0.3 flowid 1:4



Това мисля че описва исканията ми горе.
Или съм много близко до вярното решение или много далече, имам някои въпроси по допълнителни опции към това, но първо оносвното ме интресува да стане ?
Мисля да използвам слак10.2 и кернел 2.4.31 от слака.


Титла: HTB
Публикувано от: divak в Nov 13, 2005, 21:06
Здравей
Това  тук може би да ти помогне


Титла: HTB
Публикувано от: PAIN1 в Nov 13, 2005, 21:47
Ще го разгледам и все пак горните редове ?


Титла: HTB
Публикувано от: VladSun в Nov 13, 2005, 22:31
Или пробвай с htb.init (идеално за начинаещи)
След това може да видиш какви tc правила генерира с
htb.init compile и да продължиш с нещо повече :)


Титла: HTB
Публикувано от: в Nov 13, 2005, 22:49
Принципно е горе-долу така, но обърни внимане, че ограниченията се прилагат само на изходящ интерфейс, т.е. този, който е към клиента в случая за download. Следователно, трябва да промениш във филтрите src с dst, защото трафика е КЪМ клиента, а не от него.
"Src" би могъл да използваш, ако искаш да ограничаваш изходящия трафик от клиентите.
Освен това огледай как се задава default класа, за да не останеш неприятно изненадан от огранчаването на трафик, който не е за никой от клиентите ти (ако има такава възможност, разбира се).
Best wishes!
Alex


Титла: HTB
Публикувано от: PAIN1 в Nov 13, 2005, 23:09
Цитат (VladSun @ Ноември 14 2005,01:31)
Или пробвай с htb.init (идеално за начинаещи)
След това може да видиш какви tc правила генерира с
htb.init compile и да продължиш с нещо повече :)

То хубаво ама ......

Примерен код


bash-3.00# ./htb.init-v0.8.5
Usage: htb.init-v0.8.5 {start|compile|stop|restart|timecheck|list|stats}


Не ще да почва да генерира ? Що така ?


Титла: HTB
Публикувано от: VladSun в Nov 14, 2005, 00:10
Виж сорс-а на хтб.инит - вътре има достатъчно добре представен пример
.. и ... пусни го с някоя от командите ;)


Титла: HTB
Публикувано от: PAIN1 в Nov 14, 2005, 10:15
Цитат (Guest @ Ноември 14 2005,01:49)
Освен това огледай как се задава default класа, за да не останеш неприятно изненадан от огранчаването на трафик, който не е за никой от клиентите ти (ако има такава възможност, разбира се).
Best wishes!
Alex

Аз до колкото разбрах дефаулта е това което остава от целия ceil не разпределено към юзърите и той се разпределя между юзърите или грешно съм го схванал ?


Титла: HTB
Публикувано от: alex_c в Nov 14, 2005, 11:39
Не, в default класа отива това, което не е прихванато от филтрите, които си поставил. В твоя случай, ако имаш клиент с адрес, който не е описан в нито един филтър, той би трябвало да попадне в default класа (ако имаш такъв). По принцип е удачно да се ползва default клас, поне в началото докато си нагласиш нещата и се убедиш, че не ти е убягнало нещо. От друга страна, можеш да ползваш default класа като индикатор за трафик, който не знаеш какъв е, т.е. ако има нещо в default класа, значи си пропуснал да опишеш някой клиент или нещо друго ти смуче трафик и съответно трябва да вземеш мерки.
BTW, не съм привърженик на програми от рода на htb.init - предпочитам сам да си генерирам правилата за ограничаване на трафика, но все пак това си е само мое мнение - не го натрапвам на никого.
Best wishes!
Alex


Титла: HTB
Публикувано от: PAIN1 в Nov 14, 2005, 13:21
До тук добре, още няколко питанки.

1.Опитах се да въведа на сегашното ми пц примерен код на tc просто да видя какъв изход ще изкара, като в кернела имам подръжка на htb и QOS
Примерен код

bash-3.00# tc class add dev eth0 parent 1: classid 1:1 htb rate 100kbps ceil 100kbps
RTNETLINK answers: No such file or directory

какво е това RTNETLINK и къде го иска ?

2.В кернела всичко от QoS ми е като модули, никъде не видях някой да си ги лоадва по отделно или програмата си ги лоадва ако и трябват или аз трябва да лоадна предварително каквото ми трябва ?

3.
Примерен код

match u8 0x05 0x0f at 0 \

какво тука значат u8 , 0x0f щото никъде не срещанах свястно инфо.
Ясно ми е че класифицира пакетите, по u8 и 0x05 ама какво са тия неща ?


Титла: HTB
Публикувано от: alex_c в Nov 14, 2005, 14:16
Виж един прост пример:

#!/bin/bash
/sbin/insmod sch_htb 2>/dev/null
/sbin/insmod sch_sfq 2>/dev/null
/sbin/insmod cls_u32 2>/dev/null

/sbin/tc qdisc del dev eth3 root 2>/dev/null

/sbin/tc qdisc add dev eth3 root handle 1: htb default 10
/sbin/tc class add dev eth3 parent 1: classid 1:1 htb rate 60Mbit burst 15k

#default
/sbin/tc class add dev eth3 parent 1:1 classid 1:10 htb rate 512kbit burst 10k quantum 1500

#I/national
/sbin/tc class add dev eth3 parent 1:1 classid 1:20 htb rate 1300kbit burst 10k quantum 1500
/sbin/tc qdisc add dev eth3 parent 1:20 handle 20: sfq perturb 10

#Peering
/sbin/tc class add dev eth3 parent 1:1 classid 1:30 htb rate 3600kbit burst 10k quantum 1500
/sbin/tc qdisc add dev eth3 parent 1:30 handle 30: sfq perturb 10

/sbin/tc filter add dev eth3 protocol ip parent 1: prio 1 u32 match ip dst XXXX.XXXX.XXXX.XXXX/24 match ip tos 0x20 0xff flowid 1:20
/sbin/tc filter add dev eth3 protocol ip parent 1: prio 1 u32 match ip dst XXXX.XXXX.XXXX.XXXX/24 flowid 1:30

Просто не си създал кореновата qdsic, за която да закачиш класовете.
Бих те посъветвал да погледнеш:
http://luxik.cdi.cz/~devik/qos/htb/
ако смяташ сериозно да се занимаваш с това. Иначе просто ще пишеш разни числа и никога няма да знаеш какво точно става.
Best wishes!
Alex


Титла: HTB
Публикувано от: PAIN1 в Nov 14, 2005, 15:18
И аз него сайт преглеждам .... отивам до вуза после ще прегледам какво си писал.


Титла: HTB
Публикувано от: PAIN1 в Nov 14, 2005, 22:51
Никъде не срещнах как да си преценя колко да е burst-a който да сложа ..... като процент ли го изчисляват или как ?
До колкото разбрах и да не сложа бърст по-новите версии си го преценявали сами ?


Титла: HTB
Публикувано от: в Nov 14, 2005, 23:44
burst-a ти дава възможност да позволяваш на потребителя първоначално да развие някаква по-голяма скорост от зададената за него, даже и общия клас да е запълнен, т.е. по този начин ще могже сравнително бързо да зарежда страници, малки картинки и т.н., дори и когато каналът е пълен. Това разбира, се става, ако на машината над теб има по-голям канал, предназначен за теб - иначе ако и там си ударил чертата, ефект няма да има. Практически, ако ограничаваш юзера на 128 kbit/s, това се изразява в стартиране на download-a с 200 kbit/s, например, а след това скоростта пада до нормалното ниво (в зависимост от зададеното ограничение на потребителя и общото използване на канала).
Best wishes!
Alex


Титла: HTB
Публикувано от: PAIN1 в Nov 15, 2005, 00:12
Да вземем твоят пример.

Примерен код

/sbin/tc class add dev eth3 parent 1:1 classid 1:10 htb rate 512kbit burst 10k quantum 1500


тука тези 10к бърст какво означават, че пуска 15к над ограничението ли ?


Титла: HTB
Публикувано от: VladSun в Nov 15, 2005, 01:19
Аз доколкото знам,  burst e количеството информация, а не скорост.
Google it! ;)


Титла: HTB
Публикувано от: PAIN1 в Nov 15, 2005, 21:30
Само нещото което ми остана неясно, как си преценявам колко голям бърст да направя ?
Каква е страгетията ?Каква част от възможната скорост да го оставя или си преценявам?И въз основа на какво преценявам?