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/.
Sprawdźcie mi poprawność działania kolejek wygenerowanych przez ten skrypt (narazie drukuje je na ekran) :
#!/usr/bin/perl use warnings; print "Podaj interfejs od połączenia z Internetemn"; chomp($net=<STDIN>); print "Podaj interfejs do swojej sieci LANn"; chomp($lan=<STDIN>); print "Podaj prędkość łącza(DOWNLOAD) w kbpsn"; chomp($snet=<STDIN>); print "Podaj prędkość łącza(UPLOAD)w kbpsn"; chomp($unet=<STDIN>); print "Podaj prędkość sieci lokalnej w kbpsn"; chomp($slan=<STDIN>); print "Podaj liczbę użytkownikówn"; chomp($user=<STDIN>); print "Podaj minimalną prędkość(DOWNLOAD) dla użytkownika w kbpsn"; chomp($min=<STDIN>); print "Podaj maksymalną prędkość(DOWNLOAD) dla użytkownika w kbpsn"; chomp($max=<STDIN>); print "Podaj minimalną prędkość(UPLOAD) dla użytkownika w kbpsn"; chomp($gup=<STDIN>); print "Podaj maksymalną prędkość(UPLOAD) dla użytkownika w kbpsn"; chomp($mup=<STDIN>); # Czyszczenie print "tc qdisc del root dev $lan 2>/dev/nulln"; print "tc qdisc del root dev $net 2>/dev/nulln"; print "iptables -t mangle -D POSTROUTING -o $net -j upload 2>/dev/nulln"; print "iptables -t mangle -F upload 2>/dev/nulln"; print "iptables -t mangle -X upload 2>/dev/nulln"; # Główna kolejka print "tc qdisc add dev $lan root handle 1:0 htbn"; print "tc class add dev $lan parent 1:0 classid 1:1 htb rate " . $slan . "kbit ceil " . $slan . "kbitn"; print "tc class add dev $lan parent 1:1 classid 1:2 htb rate " . $snet . "kbit ceil " . $snet . "kbitn"; print "tc class add dev $lan parent 1:1 classid 1:3 htb rate " . $slan . "kbit ceil " . $slan . "kbitn"; print "tc qdisc add dev $net root handle 1:0 htbn"; print "tc class add dev $net parent 1:0 classid 1:1 htb rate " . $unet . "kbit ceil " . $unet . "kbitn"; # Kolejki dla userów :) $ip="2"; $id="4"; $p="3"; $handle="24"; print "tc filter add dev $lan protocol ip preference 2 parent 1:0 u32 match ip src 192.168.1.1 flowid 1:3n"; for ($ile="0"; $ile<$user;++$ile){ print "tc class a dev $lan parent 1:2 classid 1:" . $id . " htb rate " . $min . "kbit ceil " . $max . "kbitn"; print "tc filter add dev $lan protocol ip preference 2 parent 1:0 u32 match ip dst 192.168.1." . $ip . " flowid 1:" . $id ."n"; print "tc qdisc add dev $lan parent 1:" . $id . " handle " . $id . ":0 sfq perturb 10n"; print "tc class add dev $net parent 1:1 classid 1:" . $p . " htb rate " . $gup . "kbit ceil " . $mup . "kbitn"; print "tc qdisc add dev $net parent 1:" . $p . " handle " .$p . ":0 sfq perturb 10n"; print "tc filter add dev $net protocol ip preference 2 parent 1:0 handle $handle fw flowid 1:" . $p . "n"; ++$id; ++$ip; ++$p; ++$handle; } print "iptables -t mangle -N uploadn"; print "iptables -t mangle -I POSTROUTING -o $net -j uploadn"; $ip2="2"; $mark="25"; for ($ile2="0"; $ile2<$user;++$ile2){ print "iptables -t mangle -A upload -s 192.168.1." . $ip2 . " -j MARK --set-mark $markn"; ++$mark; ++$ip2; } print "iptables -t mangle -A upload -m mark --mark 0 -j MARK --set-mark 24n";
Offline
Pierwsze spostrzeżenia ... rate to sobie przekalkuluj na podstawie szybkości łącza i ilości userów , inaczej będziesz miał kłopoty.
//edit
Sprawia wrażenie działającego
PS gratuluję podejścia , więcej osób powinno zaczynac od pisania własnych skryptów, zamiast dopieszczać padalsko napisane gotowce .
Offline
Dzięki za odpowiedź i za przetestowanie, a z tym rate to chyba zrobie tak : rate łącza/liczbe userów
Pozdro
Offline
Time (s) | Query |
---|---|
0.00014 | SET CHARSET latin2 |
0.00006 | SET NAMES latin2 |
0.00134 | 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='13.59.135.139' WHERE u.id=1 |
0.00103 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '13.59.135.139', 1738396321) |
0.00086 | SELECT * FROM punbb_online WHERE logged<1738396021 |
0.00069 | SELECT topic_id FROM punbb_posts WHERE id=32334 |
0.00091 | SELECT id FROM punbb_posts WHERE topic_id=4122 ORDER BY posted |
0.00092 | 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=4122 AND t.moved_to IS NULL |
0.00019 | SELECT search_for, replace_with FROM punbb_censoring |
0.00079 | 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=4122 ORDER BY p.id LIMIT 0,25 |
0.00130 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=4122 |
Total query time: 0.00823 s |