Начало Вход/Регистрация Помощ Tazi stranica s latinski bukwi
Области
 Новини
 Актуална тема
 Linux портали
 Какво е Линукс?
 Въпроси-отговори
 Форуми
   •Трудова борса
   •Конкурс
 Статии
 Дистрибуции
   •Поръчка на CD
 Made In BG
 Файлове
 Връзки
 Галерия
 Конференции
Настройки
 Външен вид
 Предложения
 Направи си сам
И още ...
 За нас
 Линукс за българи ЕООД
 Линк към нас
 Предложения

Подкрепяно от:
TelePoint - Място за хора със свободни идеи

SiteGround

initLab

Adsys Group

SAP Bulgaria

Въпроси отговори
Въпрос: Traffic Control
[Търси: ]

ВНИМАНИЕ: Използвайте форумите на сайта за дa зададете вашите въпроси.

Към началото |Добави въпрос |Отговори
 
Въпрос
От: Kliment (kimby< at >abv[ точка ]bg) Дата: 07/12/2006
Имам следния проблем:
   Искам да разделя входящия трафик в една мрежа, като
 огранича за всяко IP да се използва точно определена
 скорост. Задачата е следната: доставчикът ми доставя
 определен bandwidth, който искам да разделя по равно между
 потребителите в тази мрежа. Проблемът е, че не всички IP-та
 са заети, а тези които са заети не винаги ще ползват
 максимума на заделения им трафик. Т.е искам неизползваният
 трафик от всички IP-та да се използва  за нуждите на
 другите, но при поискване за всеки потребител да има
определена мин. скорост.
 За момента съм се спрял на HTB, но ако има други решения ще
 Ви бъда благодарен да ги споделите! Мрежата е с маска /24.
Ето до къде съм я докарал, но не сработва както очаквам:
#!/bin/bash -x

tc qdisc add dev eth1 root handle 1: htb default 254
 tc class add dev eth1 parent 1: classid 1:1 htb rate
1000kbps ceil 1000kbps

A=4
while [ $A -lt 255 ];
do
        #echo $A
         tc class add dev eth1 parent 1:1 classid 1:$A htb
rate 100kbps ceil 1000kbps
         tc filter add dev eth1 protocol ip parent 1:0 prio 1
u32 match ip dst 192.168.0.$A flowid 1:$A
         tc qdisc add dev eth1 parent 1:$A handle $A: sfq
perturb 10
        let A=A+1
done

 Както се досещате вътрешната мрежа в случая е 192.168.0.х, а
eth1 е интерфейса към нея. Благодаря Ви за вниманието! :)


Отговор #1
От: Aminohus (hus< at >kubrat __точка__ bg) Дата: 07/12/2006
 Ами ако ти е толкова трудно по добре си сложи един Mikrotik

така ще ти е по лесно. 
 С Линукса също може ,ако маскираш адресите които да излизат

през един адрес (както в твоя случай) ползвай този шейпър: 
#!/bin/bash 
TC=/sbin/tc 
   $TC qdisc add dev eth0 root handle 1:0 cbq bandwidth 
10Mbit avpkt 1000 cell 8 
#User1 - Download 126Kbps 
${TC} class add dev eth0 parent 1:0 classid 1:1 cbq rate 
128KBit allot 1514 prio 5 avpkt 1000 $ 
${TC} filter add dev eth0 parent 1:0 protocol ip handle 1 
fw flowid 1:1 
iptables -A FORWARD -t mangle -d 192.168.0.1/32 -j MARK 
--set-mark 1 
#User 2  - Download 256kbps 
${TC} class add dev eth0 parent 1:0 classid 1:2 cbq rate 
256KBit allot 1514 prio 5 avpkt 1000 $ 
${TC} filter add dev eth0 parent 1:0 protocol ip handle 2 
fw flowid 1:2 
iptables -A FORWARD -t mangle -d 192.168.0.2/32 -j MARK 
--set-mark 2 
 
 По същия начин добавяш потребители надолу! 
Може също така и да ограничаваш изходящия трафик,като 
добавиш по още два реда към скрипта за другия интерфейс. 


Отговор #2
От: Kliment (kimby (a) abv __точка__ bg) Дата: 07/12/2006
   Относно Mikrotik, зная за този вид ОС, но въпросния сървър
 ми е нужен и за други цели (http, ftp и др), които не се
поддържат от чисто рутираща ОС, като гореспоменатата.
   Относно даденото решение - мисля, че чрез тези команди
 няма как отделните класове да споделят скоростта, която не
 се използва от някой от тях (което всъщност е основната
функционалност на скрипта, който съм се опитал да създам)!
   Какво ще кажете за грешката в използваните команди за HTB
 трафик контрола? Проблемът е, че отново един от
 потребителите консумира цялата скорост (особено когато се
 използват peer-to-peer програми). Същевременно искам да
 използвам целия наличен неизползван bandwidth, който да се
 преразпределя по равно между активните потребители, при
 положение че някои потребители не използват връзката в
момента. Очаквам съдействие. 


Отговор #3
От: no1 (dean__dot__iliev< at >abv__dot__bg) Дата: 07/12/2006
 Щом си се спрял на HTB , можеш да използваш опцията CEIL. За
повече информация прочети хтб.инит
 Колкото до това да разделяш интернета по равно - направи си
едно скриптче, което брои компютрите в локалната мрежа.

Успех



Отговор #4
От: vaa Дата: 07/13/2006
Ще ти споделя как се оправих аз с това.
Използвам Слак 10.0, 30 машини маскирани ползват нет.
С програмата "tc".
 Първо и играх да пиша самите правила с tc  то, после и
 iptables  и set-mark и т.н., обаче не се получаха нещата
както исках.
 Инсталирах си POM на iptabels  ти важните за мен модули (
connlimint, ipp2p, CLASSIFY).
и такааа:
пиша си първо tc  правила:
1. download from internet - eth1 e вътрешния интерфейс
    "tc qdisc add dev eth1 root handle 11: cbq bandwidth 100
Mbit avpkt 1000 mpu 64"
( 100 Mbit na lan card - затова)
после си пишеш трафик правила:
    "tc class add dev eth1 parent 11:0 classid 11:x cbq rate
128 Kbit wetght 1536 allot 1514 prio y avpkt 1000 bounded"
  x - ти е число което си задваш 1,2,3,4,5 и т.н. зависи
колко правила и трафици искаш да си правиш.
 y -  ти е приоритета на това правило.
 rate - гарантирана скорост.
 wetght - масксимална скорост.
и после идва iptables i CLASSIFY
  "iptables - t mangle -A POSTROUTING -o eth1 -d
192.168.0.XXX -j CLASSIFY --set-class 11:x"
 192.168.0.xxx - адрес който искаш да има трафик правило
според класа 11:x, може и група адреси или цял клас.
друг пример:
  "iptables - t mangle -A POSTROUTING -o eth1  -s
 192.149.248.0/24 -d 192.168.0.0/24 -j CLASSIFY --set-class
11:x"
 целия download  от data.bg  си го слагаш в трафик правило
което искаш.
 същото може да се направи и аз upload да към интернет само
се играе с другия интерфейс - eth0.
  s iptables  може да си правиш каквито си искаш правила и
 според тези правила да изпращаш ip  тата към класове от
 трафик който си си създал - и по mac,  по порт, с модула 
ipp2p -  и peer-to-peer  връзки, каквото се сетиш.
всичко работи супер.
с connlimit - ограниваш броя на конекциите.
 с това имаш вече абсолютно пълен контрол на всичко което
 минава, как минава м с каква скорост да отива при клиента и
да излиза от него към нета. т.н. през рутера.



<< SSH problem (3 ) | Surround 7+1 (1 ) >>

 
© 2011-... Асоциация "Линукс за българи"
© 2007-2010 Линукс за българи ЕООД
© 1999-2006 Slavej Karadjov
Ако искате да препечатате или цитирате информация от този сайт прочетете първо това
Външния вид е направен от MOMCHE
Code Version: 1.0.8 H (Revision: 23-09-2011)
 
Изпълнението отне: 0 wallclock secs ( 0.08 usr + 0.00 sys = 0.08 CPU)