Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam,
ostatnio przekopuje sobie google i szukam czegos lepszego niz mam do podzialu lacza. Szukam bo samemu skryptow nie napisze.
Obecnie testuje shaperd'a i nie jestem zadowolony. Podczas odpalenia przezemnie dc i gdy ktos wysyla wg programu z predkoscia 20 - 22kb to pingi mam juz ogromne. Mam 1mbit/256kbit na 12 kompow i chcialbym jakos dobrze to skonfigurowac. Zalezy mi na tym aby bylo to dobrze bo nielugo serwerem zajmie sie druga osoba bo ja nie bede mial jak i chcialbym aby wszystko to sobie bezproblemowo chodzilo. Piszac sprawiedliwego podzialu mam na mysli dynamiczny oczywiscie. Odpada na stale przypisywanie prekosci tak samo podzial na uslugi ze np p2p ma max polowe lacza bo to tez lipa jak sie samemu siedzi to sie chce max.
Offline
U mnie w siecach jakos dynamiczny podzial lacza sie nie sprawdzil najlepiej jest podzielic statycznie na ilosc kompow w sieci, do to shaperd'a to kicha jestwogule ine spelnia swoich zadan...
ja napisalm sobie wlasny system podzialu lacza na HTB :] i mam statycznie a ludzie z sieci sa zadowoleni
Offline
Ehh statycznie to wg mnie marnotrastwo. Co z tego, że każdemu dam 128kb/s i potem 3/4 łącza leży niewykorzystane. Jak ktoś chce sobie coś ściągnąć to lepiej niech zassa w 15 minut zamiast w 3 godziny.
Offline
tak tylko przydzielasz np wedlug nizszego schematu
3 uzytkownikow
czyli po 33% maksymalnego pasma
kazdemu z userow przydzielasz maksymalny transfer na 50%
a minimalny na 33% czyli kazydy user moze wypozycczyc d innych jesi jest to nie uzywane 17% pasma
dla twojeje sieci lacze 1 megabit 12 userow
czyli powiedzmyserdnio 10% lazca na kazdego usera
zakladajac ze w sieci parcuje przewaznie cos kolo 60% userow ustalamy minimalny (gwarantowany) transfer dla usera na 12% a maksymalny transfer dajemy w tym przypadku na 40%
czyli np gdy siec nie jest obciazona i np siedzi 5 userow z tego 2 siedzi na gg 2 sprawdza poczte czy oglada strony to ty mozesz miec do wykozystania (wypozyczenia) od pozostalych pasmo tak abys mial 40% lacza dla siebie....
i asz ladnie po statiku z wypozyczaniem pasma...
Offline
tak tylko na dynamicznym to est promocja taka ze co jakis czas systemsprawdza ile userow jest w sieci, i przeladowywuje kolejkowanie co najczesciej po kilku takich pzrzeladowaniach najczesciej nie dziala poprawnie.... np wogule nic sie nie che kolejkowac....
mam np siec polpak 2 megabity a naim 180 userow w rozproszonej sieci i moja metoda kolejkowania sie tam sprawdza dosc ladnie....
ty masz mala siec na 1 megabicie i ja Ci mowie ze to co napisalm wyzej u Ciebie by sie sprawdzilo idealnie, oczywiscie ja mam troszeczke inne zasady przydzielania pasma bo mam wiecej userow....
Offline
Hmm wrzuce tu to co obecnie testuje:
#!/bin/bash # # rc.htb 1.4, (C)Lenthir 2oo4, GNU GPL # 2004-08-13 19:30 VER=1.4 MAX=3330 ####################### #Konfiguracja interfejsów: out="eth0" #wyjście na świat (modem) lan="`/root/kolejkowanie/lan100`" #adresy IP dla interfejsów lan, bez IP serwera srv="83.17.x.x" #IP zewnętrzny serwera srv_l="192.168.100.1" #echo ${lan} ile=`echo ${lan}|awk '{print NF}'` #ilości komputerów w podsieciach, bez serwera TC=/sbin/tc #ścieżka do tc MODPROBE=/sbin/modprobe #ścieżka do modprobe IP=/sbin/ip #ścieżka do ip IPTABLES=/sbin/iptables #ścieżka do iptables firewall="/etc/init.d/lfirewall restart" #jak zrestartować firewall u_r2q=1 #r2q u_quantum=2500 #default 1500 #quantum #220 443 993 143 195 65188 porty_tcp="20 21 22 23 25 53 80 55541 3128 110 27015 27016 33333 27018" porty_udp="53 80 55541 3128 53 27015 27016 27018 33333" pping=1 #(1Mbit = 1024kbit = 1048576bity = 0,125MB/s = 128kB/s = 131072B/s): wan_dwl=1000 #prędkość łacza na świat w kbit/s wan_upl=190 ratio_d=1 #prędkość maksymalna jaką mogą osiągać użytkownicy (1 = 100%) ratio_u=1 #Konfiguracja serwera srv_dwl=20 #minimalna prędkość downloadu z serwera srv_upl=20 #minimalna prędkość uploadu z serwera #Konfiguracja LAN lan_dwl[0]=100 #prędkość sieci LAN w Mbit/s (wartość rzeczywista!!) lan_upl[0]=100 lan_dwl[1]=100 lan_upl[1]=100 ####################### if [[ $ile -ge $MAX ]] then echo "Niedopuszczalnie dużo komputerów!" exit 1 fi ####################### stop() { $TC qdisc del root dev $out 2> /dev/null $TC qdisc del root dev imq 2> /dev/null $IP link set imq down } start() { stop # download tmp=$(echo "($wan_dwl-$srv_dwl)%$ile" | bc) srv_dwl=$(echo "$srv_dwl+$tmp" | bc) min=$(echo "($wan_dwl-$srv_dwl)/$ile" | bc) pri_min=$(echo "$min/2+$min%2" | bc) sec_min=$(echo "$min/2" | bc) max=$(echo "$wan_dwl*$ratio_d" | bc) echo " Ilość komputerów: $ile" echo "%===================================================================%" echo " Ustawianie kolejki downloadu." echo " Maksymalny download: $max kbit/s" echo " Minimalny download serwera: $srv_dwl kbit/s" echo " Minimalny download userów: $min kbit/s" echo " Primary: $pri_min kbit/s Secondary: $sec_min kbit/s" echo " " if [[ u_r2q=="" ]]; then $TC qdisc add dev imq root handle 1:0 htb else $TC qdisc add dev imq root handle 1:0 htb r2q $u_r2q fi $TC class add dev imq parent 1:0 classid 1:1 htb rate ${wan_dwl}kbit ceil ${wan_dwl}kbit # Serwer $TC class add dev imq parent 1:1 classid 1:2 htb rate ${srv_dwl}kbit ceil ${max}kbit quantum $u_quantum $TC qdisc add dev imq parent 1:2 sfq perturb 10 $TC filter add dev imq protocol ip parent 1:0 u32 match ip dst $srv flowid 1:2 j=3 for usr in $lan do $TC class add dev imq parent 1:1 classid 1:$j htb rate ${min}kbit ceil ${max}kbit quantum $u_quantum $TC class add dev imq parent 1:$j classid 1:$(($j+1)) htb rate ${pri_min}kbit ceil ${max}kbit quantum $u_quantum $TC class add dev imq parent 1:$j classid 1:$(($j+2)) htb rate ${sec_min}kbit ceil ${max}kbit quantum $u_quantum $TC qdisc add dev imq parent 1:$(($j+1)) sfq perturb 10 $TC qdisc add dev imq parent 1:$(($j+2)) sfq perturb 10 for prt in $porty_tcp do $TC filter add dev imq protocol ip parent 1:0 pref 2 u32 match ip dst $usr match ip protocol 6 0xff match ip sport $prt 0xffff flowid 1:$(($j+1)) done for prt in $porty_udp do $TC filter add dev imq protocol ip parent 1:0 pref 2 u32 match ip dst $usr match ip protocol 17 0xff match ip sport $prt 0xffff flowid 1:$(($j+1)) done if [[ $pping -eq 1 ]]; then $TC filter add dev imq protocol ip parent 1:0 pref 2 u32 match ip dst $usr match ip protocol 1 0xff flowid 1:$(($j+1)) fi $TC filter add dev imq protocol ip parent 1:0 pref 3 u32 match ip dst $usr flowid 1:$((j+2)) let "j=j+3" done i=0 for uvs in $srv_l do $TC class add dev imq parent 1:0 classid 1:$j htb rate ${lan_dwl[$i]}Mbit ceil ${lan_dwl[$i]}Mbit quantum $u_quantum $TC qdisc add dev imq parent 1:$j sfq perturb 10 $TC filter add dev imq protocol ip parent 1:0 pref 1 u32 match ip dst $uvs flowid 1:$j let "j=j+1" let "i=i+1" done $IP link set imq up # upload tmp=$(echo "($wan_upl-$srv_upl)%$ile" | bc) srv_upl=$(echo "$srv_upl+$tmp" | bc) min=$(echo "($wan_upl-$srv_upl)/$ile" | bc) pri_min=$(echo "$min/2+$min%2" | bc) sec_min=$(echo "$min/2" | bc) max=$(echo "$wan_upl*$ratio_u" | bc) echo " Ustawianie kolejki uploadu." echo " Maksymalny upload: $max kbit/s" echo " Minimalny upload serwera: $srv_upl kbit/s" echo " Minimalny upload userów: $min kbit/s" echo " Primary: $pri_min kbit/s Secondary: $sec_min kbit/s" echo "%===================================================================%" if [[ u_r2q=="" ]]; then $TC qdisc add dev $out root handle 2:0 htb else $TC qdisc add dev $out root handle 2:0 htb r2q $u_r2q fi $TC class add dev $out parent 2:0 classid 2:1 htb rate ${wan_upl}kbit ceil ${wan_upl}kbit $TC class add dev $out parent 2:1 classid 2:2 htb rate ${srv_upl}kbit ceil ${max}kbit quantum $u_quantum $TC qdisc add dev $out parent 2:2 sfq perturb 10 $IPTABLES -t mangle -A POSTROUTING -s $srv -j MARK --set-mark 1 $TC filter add dev $out protocol ip parent 2:0 handle 1 fw flowid 2:2 j=3 for usr in $lan do $TC class add dev $out parent 2:1 classid 2:$j htb rate ${min}kbit ceil ${max}kbit quantum $u_quantum $TC class add dev $out parent 2:$j classid 2:$(($j+1)) htb rate ${pri_min}kbit ceil ${max}kbit quantum $u_quantum $TC class add dev $out parent 2:$j classid 2:$(($j+2)) htb rate ${sec_min}kbit ceil ${max}kbit quantum $u_quantum $TC qdisc add dev $out parent 2:$(($j+1)) sfq perturb 10 $TC qdisc add dev $out parent 2:$(($j+2)) sfq perturb 10 $IPTABLES -t mangle -A POSTROUTING -s $usr -j MARK --set-mark $(($j+2)) for prt in $porty_tcp do $IPTABLES -t mangle -A POSTROUTING -p tcp -s $usr --dport $prt -j MARK --set-mark $(($j+1)) done for prt in $porty_udp do $IPTABLES -t mangle -A POSTROUTING -p udp -s $usr --dport $prt -j MARK --set-mark $(($j+1)) done if [[ $pping -eq 1 ]]; then $IPTABLES -t mangle -A POSTROUTING -p icmp -s $usr -j MARK --set-mark $(($j+1)) fi $TC filter add dev $out protocol ip parent 2:0 pref 2 handle $(($j+1)) fw flowid 2:$(($j+1)) $TC filter add dev $out protocol ip parent 2:0 pref 3 handle $(($j+2)) fw flowid 2:$(($j+2)) let "j=j+3" done i=0 for uvs in $srv_l do $TC class add dev $out parent 2:0 classid 2:$j htb rate ${lan_upl[$i]}Mbit ceil ${lan_upl[$i]}Mbit quantum $u_quantum $TC qdisc add dev $out parent 2:$j sfq perturb 10 $IPTABLES -t mangle -A POSTROUTING -s $uvs -j MARK --set-mark $j $TC filter add dev $out protocol ip parent 2:0 pref 1 handle $j fw flowid 2:$j let "j=j+1" let "i=i+1" done } echo "rc.htb 1.4, (C)Lenthir 2oo4, GNU GPL" echo "2004-08-13 19:30" case "$1" in 'start') echo "Uruchamianie kolejkowania..." start echo "Gotowe." exit 0 ;; 'stop') echo -n "Zatrzymywanie kolejkowania..." stop echo " wykonano." ;; 'restart') echo "Restartowanie kolejkowania..." $firewall start echo "Gotowe." ;; 'status') echo "Klasy na interfejsie imq!" echo "%====================================%" $TC class show dev imq | grep root $TC class show dev imq | grep -v root | sort | nl echo "Klasy na interfejsie ${out}!" echo "%====================================%" $TC class show dev $out | grep root $TC class show dev $out | grep -v root | sort | nl ;; 'stat') if [[ "$2" == "" ]]; then echo "Script need second argument - adress IP" exit 1 elif [[ "$2" == "server" ]]; then watch -d -n 1 "echo "Serwer:" && tc -s class show dev imq | grep -A 3 "htb 1:2 " && tc -s class show dev $out | grep -A 3 "htb 2:2 "" elif [[ "$2" == "lan" ]]; then j=3 for usr in $lan do let "j=j+3" done i=0;trs="echo "Transfer: klient -> serwer -> klient "" for uvs in $srv_l do trs="$trs && echo "Lan[$i]:" && tc -s class show dev imq | grep -A 3 "htb 1:$j " && tc -s class show dev $out | grep -A 3 "htb 2:$j "" let "j=j+1" let "i=i+1" done watch -d -n 1 "$trs" else j=3 for usr in $lan do if [[ "$2" == "$usr" ]]; then watch -d -n 1 "echo "Download: " && tc -s class show dev imq | grep -A 3 "htb 1:$j " && tc -s class show dev imq | grep -A 3 "1:$(($j+1)) " && tc -s class show dev imq | grep -A 3 "1:$(($j+2)) " && echo && echo "Upload: " && tc -s class show dev $out | grep -A 3 "htb 2:$j " && tc -s class show dev $out | grep -A 3 "2:$(($j+1)) " && tc -s class show dev $out | grep -A 3 "2:$(($j+2)) "" echo "Zakończono." exit 0 fi let "j=j+3" done fi ;; *) echo echo "Użycie: rc.htb start|stop|restart|status" echo "rc.htb stat <server|adress IP>" exit 1 ;; esac
To wykorzystuje IMQ i nie jest taki zły ten skrypt. Nie działa tak jak shaper jako program chyba, że sie myle. odatkowo jest jeszcze plik lan100 gdzie mam wypisane IP lokalne. Nic poza tym.
Offline
http://lms.rulez.pl
ale nie wiem, jak to skonfigurowac, zeby dzialalo..
a zalozenia ma rewelacyjne!!
Offline
jata to jest raczej do zarzadzania siecia jakies faktury oplaty no i cos tam ma chyba podpiecie na sztywno jak mi sie wydaje predkosci. Kiedys to uruchomilem laen ie do konca bo tylko czesc o faktur itp. W jakiekolwiek ustawianie predkosci juz sie nie bawilem stad nawet nie mam pewnosci czyt ak sie da.
Offline
faktury mozna pominac, mi wlasnie chodzi o modul zarzadzania laczem..:/
ale zeby zarzadzac, trzeba najpierw ustrojstwo uruchomic..
mi sie nie udalo..:(
Offline
LMS to jest wielka porazka uzywalam tego przez 2 miesiace i wes porazka !!!!!!!!!!
czesc parametrow ustawiasz z programu a reszte niestety recznie w plikach od lms'a
Offline
Wymiata? Czy to znaczy że testowałeś? Może byś opisał swoje wrażenia :)
Offline
Ja testowalem. Hmm nie jest zly ale lepiej sie sprawuje ten powyzej. Wprawdzie lekko troche go przerobilem tzn kilka linijek bo zle startowalo mi nowe IMQ ale zapewniam ze lepiej sie sprawowal niz niceshaper. Niceshaper ladnie mi moze cial tzn Troche za bardzo. W tym co ja uzywam malo tnie a wszystko dobrze chodzi. Pingi niskie choć wiadomo chciałoby się jeszcze niższe.
Offline
poprzez NS dziele ruch pomiedzy 274 osoby (na dzien dzisiejszy) pingi mam w szczycie po 200ms max (łącze: polpak 1mbit/s i dwa dsl 2mbit/s), poprawiłem NS zeby korzystal z esfq zamiast sfq, niceshaper nie współpracuje ze squidem (zadowalająco) ale delay polls w squidzie zdają egzamin... przy takiej liczbie userów potrzeba 2,5GHz i 1,5G RAM zeby to sie bujało :)
polecam NS
pozdro
Offline
wiesz.. cala przeróbka sprowadza sie do zrobienia "znajdz i zamien" ... :)
[url=http://ingram.com.pl/~przemekk/niceshaper.cpp] tutaj [/url] masz link do niego
Offline
Time (s) | Query |
---|---|
0.00013 | SET CHARSET latin2 |
0.00006 | SET NAMES latin2 |
0.00121 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.144.40.216' WHERE u.id=1 |
0.00085 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.144.40.216', 1732274541) |
0.00051 | SELECT * FROM punbb_online WHERE logged<1732274241 |
0.00074 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=514 AND t.moved_to IS NULL |
0.00005 | SELECT search_for, replace_with FROM punbb_censoring |
0.00255 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=514 ORDER BY p.id LIMIT 0,25 |
0.00087 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=514 |
Total query time: 0.00697 s |