Mój problem polega na tym, że mam dwa skrypty htb do upload i download są ustawione (myślę, że dobrze) pod moje łącze. Niby działają bo ucinają DL na komputerach ale niestety pingi są tak, duże, że nawet z tymi skryptami nie da się grać przy włączonym ściąganiu na którymś z komputerów.
£ącze które posiadam to 2mbit/256kbps. Linux na Debianie serwerem, a komputery w sieci na Windowsach

Oto skrypty z których korzystam:
Kod: Zaznacz cały
# Dane globalne skryptu:
#!/bin/sh
# download
# polecenie tc do manipulacji kolejkami...
TC="/sbin/tc"
# Interfejs wyjsciowy..np eth0 eth1 czy co tam... tutaj interfejs dla klientow sieci
IF="eth0"
#IF="bridge"
# pelna predkosc interfejsu
# tutaj mam 4190kbit (siec 802.11b - praktycznie uzyskiwane u mnie predkosci)
IFSPEED="100000kbit"
# predkosc sciagania z internetu, predkosc sieci lokalnej po odjeciu predkosci internetu
# ogolnie mamy (DSLSPEED + LANSPEED) ma sie rownac IFSPEED lub byc od niej mniejsze
DSLSPEED="1950kbit"
LANSPEED="98000kbit"
# Wyliczamy predkosc na uzytkownika
# USERPSEED=DSLSPEED/ilosc_uzytkownikow
USERSPEED="666kbit"
# ADRESY serwera i uzytkownikow:
SERVER="192.168.1.1"
USER1="192.168.1.2"
USER2="192.168.1.3"
USER3="192.168.1.4"
USER4="192.168.1.5"
USER5="192.168.1.6"
#################### koniec globalnych danych ######################
# sekcja skryptu
echo "$0 start"
# czyscimy pozostalosci
$TC qdisc del root dev $IF
$TC qdisc add dev $IF root handle 1:0 htb
# zakladamy glowna kolejke na interfejs
# rate = predkosc gwarantowana kolejki
# ceil = predkosc maksymalna kolejki (w przypadku dynamicznego przydzialu to granica predkosci dla kolejki)
# pelna predkosc interfejsu...
# classid = nazwa kolejki
$TC class add dev $IF parent 1:0 classid 1:1 htb rate $IFSPEED ceil $IFSPEED
# kolejka na internet - stala predkosc kolejki rate=ceil
# parent=ktora kolejke rozgaleziamy? w tym wypadku to podkolejki kolejki glownej, ktora wyzej zalozylismy..
$TC class add dev $IF parent 1:1 classid 1:2 htb rate $DSLSPEED ceil $DSLSPEED
#kolejka na lanowe polaczenia z serwera (klient sciaga po ftp z serwera etc..)
$TC class add dev $IF parent 1:1 classid 1:3 htb rate $LANSPEED ceil $LANSPEED
# kolejki uzytkownikow na internet
# wazne zauwazyc, ze rozgaleziaja kolejke internetu (1:2)
# kazdy user ma gwarantowane USERSPEED jednak jego maksymalna szybkosc jest limitowana do DSLSPEED
$TC class add dev $IF parent 1:2 classid 1:4 htb rate $USERSPEED ceil $DSLSPEED
$TC class add dev $IF parent 1:2 classid 1:5 htb rate $USERSPEED ceil $DSLSPEED
$TC class add dev $IF parent 1:2 classid 1:6 htb rate $USERSPEED ceil $DSLSPEED
$TC class add dev $IF parent 1:2 classid 1:7 htb rate $USERSPEED ceil $DSLSPEED
$TC class add dev $IF parent 1:2 classid 1:8 htb rate $USERSPEED ceil $DSLSPEED
### filtry - kieruja odpowiednie dane do kolejek ###
# wszystkie polaczenia, ktore nawiazano z serwerem (np z jego wlasnym FTP) powinny trafic do kolejki na lan
# priorytet = w htb ostatnia pasujaca regula wygrywa dlatego warto nadac wlasny priorytet regulom
# im mniejsza liczba tym lepszy priorytet i waznosc reguly
# wszystkie polaczenia, gdzie zrodlem jest adres IP serwera zostaja skierowane do kolejki o nazwie 1:3 <- kolejkna lan
$TC filter add dev $IF protocol ip prio 1 parent 1:0 u32 match ip src $SERVER flowid 1:3
# filtry uzytkownikow
# jesli nie serwer nawiazal polaczenie, to uznajemy, ze to polaczenie z internetu
# jesli adres docelowy to adres klienta1 to dane wrzucamy mu do jego wlasnej kolejki
# tutaj mozna grupowac ludzi, np kilka adresow IP wrzucic do jednej kolejki...
# w rozwiazaniu jest 1 IP jedna kolejka
$TC filter add dev $IF protocol ip prio 2 parent 1:0 u32 match ip dst $USER1 flowid 1:4
$TC filter add dev $IF protocol ip prio 2 parent 1:0 u32 match ip dst $USER2 flowid 1:5
$TC filter add dev $IF protocol ip prio 2 parent 1:0 u32 match ip dst $USER3 flowid 1:6
$TC filter add dev $IF protocol ip prio 2 parent 1:0 u32 match ip dst $USER4 flowid 1:7
$TC filter add dev $IF protocol ip prio 2 parent 1:0 u32 match ip dst $USER5 flowid 1:8
### sfq
# sfq zapewnia sprawiedliwe dzielenie kolejki przez wiele polaczen
# np gdy uzytkownik otworzy jedna sesje sciagania z netu to mialby max predkosc kolejki
# jesli uruchomi drugie to sfq sprawi, ze te pasmo zostanie rozdzielone na 2 sprawiedliwie
# takze uzytkownik ma sprawiedliwosc w tym co dostaje na wlasnych polaczeniach.
# na lan nalozona dyscyplina - przeciez kilka osob na raz moze sciagac - chcemy zeby mieli po rowno
$TC qdisc add dev $IF parent 1:3 handle 3:0 sfq perturb 10
# dyscypliny userow
$TC qdisc add dev $IF parent 1:4 handle 4:0 sfq perturb 10
$TC qdisc add dev $IF parent 1:5 handle 5:0 sfq perturb 10
$TC qdisc add dev $IF parent 1:6 handle 6:0 sfq perturb 10
$TC qdisc add dev $IF parent 1:7 handle 7:0 sfq perturb 10
$TC qdisc add dev $IF parent 1:8 handle 8:0 sfq perturb 10
#EOF#
Kod: Zaznacz cały
#!/bin/sh
# upload
TC="/sbin/tc"
#interfejs wyjsciowy serwera (ten od netu)
IF="ppp0"
IFSPEED="248kbit"
# kolejka glowna - predkosci i priorytet
MAINSPEED="60kbit"
MAINPRIO="prio 1"
# gry
GAMESSPEED="120kbit"
GAMESPRIO="prio 2"
# server
SERVSPEED="35kbit"
SERVMAX=${IFSPEED}
SERVPRIO="prio 3"
# pozostale UWAGA zmniejszona szybkosc dynamiczna kolejki - nie lubimy wysylac do innych, chcemy zapas lacza przynajmniej w dzien.
OTHERSPEED="40kbit"
OTHERMAX="220kbit"
OTHERPRIO="prio 4"
# porty zrodlowe i docelowe dla glownej kolejki
MAIN_DPORTS="22 25 53 80 110 443 1550 2796 8074 1911 4569 8000 5222 5223 5269 33434 11111 22222"
MAIN_SPORTS="22 53"
# dla gier...
GAMES_DPORTS="2796 3658 5003 27960 27961 27015 6112 6113 6114 6115 6116 6117 6118 6119 16567 17567 27015 27910 23400 28960 28961"
# i serwera
SERV_SPORTS="21 25 80 110 6667 49022"
#### skrypt #####
echo "$0 start"
$TC qdisc del root dev $IF
# r2q - rate to quantum - przelicznik dla htb, GDY MAMY MALY UPLOAD TRZEBA GO ZMNIEJSZYC do np 1. Standardowo jest 10 i pomija sie
# default 5 = wszystko co w filtrach nie zostanie skierowane do ktorejs kolejki zostanie automatycznie skierowane do kolejki 1:5
$TC qdisc add dev $IF root handle 1:0 htb r2q 1 default 5
$TC class add dev $IF parent 1:0 classid 1:1 htb rate $IFSPEED ceil $IFSPEED
# dodane tylko priorytety "sciagania nadmiarow niewykorzystanych przez inne kolejki"
$TC class add dev $IF parent 1:1 classid 1:2 htb rate $MAINSPEED ceil $IFSPEED $MAINPRIO
$TC class add dev $IF parent 1:1 classid 1:3 htb rate $SERVSPEED ceil $SERVMAX $SERVPRIO
$TC class add dev $IF parent 1:1 classid 1:4 htb rate $GAMESSPEED ceil $IFSPEED $GAMESPRIO
$TC class add dev $IF parent 1:1 classid 1:5 htb rate $OTHERSPEED ceil $OTHERMAX $OTHERPRIO
# kolejka glowna
# icmp chcemy takze tu wrzucac (male pingi=fajna rzecz)
$TC filter add dev $IF protocol ip parent 1:0 u32 match ip protocol 1 0xff flowid 1:2
# dport= destination port - port docelowy polaczenia
# 0xffff = nie patrzec na TOS pakietow...
for i in $MAIN_DPORTS; do
$TC filter add dev $IF protocol ip parent 1:0 u32 match ip dport $i 0xffff flowid 1:2
done
for i in $MAIN_SPORTS; do
$TC filter add dev $IF protocol ip parent 1:0 u32 match ip sport $i 0xffff flowid 1:2
done
# serwer
for i in $SERV_SPORTS; do
$TC filter add dev $IF protocol ip parent 1:0 u32 match ip sport $i 0xffff flowid 1:3
done
# gry
for i in $GAMES_DPORTS; do
$TC filter add dev $IF protocol ip parent 1:0 u32 match ip dport $i 0xffff flowid 1:4
done
# sfq dla kolejek
$TC qdisc add dev $IF parent 1:2 handle 2:0 sfq perturb 10
$TC qdisc add dev $IF parent 1:3 handle 3:0 sfq perturb 10
$TC qdisc add dev $IF parent 1:4 handle 4:0 sfq perturb 10
$TC qdisc add dev $IF parent 1:5 handle 5:0 sfq perturb 15
#EOF#
Byłbym wdzięczny, za jakąś wskazówkę dot zlikwidowania wysokich pingów przy włączonym ściąganiu na któryms z komputerów.
[ Dodano: 2007-10-15, 07:24 ]
No dzięki za przeanalizowanie

Może jednak ktoś jakoś mi pomoże
