Portál AbcLinuxu, 5. května 2025 05:23

Dotaz: Problem s shapingem

23.4.2008 08:50 Pavel Záruba
Problem s shapingem
Přečteno: 383×
Odpovědět | Admin
Zdravím, mám menší problém se skriptem pro omezování rychlosti. Skript jako takový funguje dobre, ze souboru nacitam informace o uzivateli a shapuju, ale pokud chci ,aby IP které nejsou v daném souboru měli nejakou minimální rychlost, tak mi na Lanu vzroste ping a vyskytne se několika procentní loss. Mohli byste mi poradit, co tam mám špatně (Sekce OSTATNÍ IP-úplně dole)
#! /bin/sh

# umisteni klienskych ip
IP_PATH="/etc/users/users.txt"

DOWNLOAD=2000kbit
UPLOAD=2000kbit
GARANTDOWN=50kbit
GARANTUPLOAD=50kbit

shaping_up() {

echo ""
echo "Mazu predchozi nastaveni"

 tc qdisc del dev eth0 root &> /dev/null
 tc qdisc del dev eth1 root &> /dev/null
 tc qdisc add dev eth0 root handle 1: htb default 9999 r2q 100
 tc qdisc add dev eth1 root handle 1: htb default 9999 r2q 100

# propustnost internetu
 tc class add dev eth0 parent 1:0 classid 1:1 htb rate ${UPLOAD} prio 1
 tc class add dev eth1 parent 1:0 classid 1:1 htb rate ${DOWNLOAD} prio 1

# QOS
line=` wc -l $IP_PATH | awk '{print $1}'`
x=1
while [ "$x" -le $line ]; do
        a=`sed -n $x\p $IP_PATH | awk '{print $1}'`
        if [ $a = \# ]; then
        false
        else
        ip=`sed -n $x\p $IP_PATH | awk '{print $2}'`
        upload=`sed -n $x\p $IP_PATH | awk '{print $4}'`
        download=`sed -n $x\p $IP_PATH | awk '{print $3}'`
        data="$(expr $x + 1000) $base"

        # Level 1 subclases (HTB)
        tc class add dev eth1 parent 1:1 classid 1:1${x} htb rate ${GARANTDOWN} ceil ${download}
        tc filter add dev eth1 parent 1: protocol ip prio 10 u32 match ip dst ${ip} flowid 1:1${x}

        tc class add dev eth0 parent 1:1 classid 1:1${x} htb rate ${GARANTUPLOAD} ceil ${upload}
        tc filter add dev eth0 parent 1: protocol ip prio 10 u32 match ip src ${ip} flowid 1:1${x}

        fi
        x=$(expr $x + 1)
done

# P2P shaping
tc class add dev eth0 parent 1:1 classid 1:8999 htb rate 500kbit ceil 1000kbit
tc class add dev eth1 parent 1:1 classid 1:8999 htb rate 500kbit ceil 1000kbit

i=1
for i in $(seq  9);do

tc filter add dev eth0 parent 1:0 protocol ip prio 2 handle $i fw classid 1:8999
tc filter add dev eth1 parent 1:0 protocol ip prio 2 handle $i fw classid 1:8999

done

#P2P konec

##################################################################
# Ostatni IP 
     tc class add dev eth0 parent 1:1 classid 1:9999 htb rate 50kbit
     tc class add dev eth1 parent 1:1 classid 1:9999 htb rate 50kbit
     tc filter add dev eth0 parent 1: protocol ip prio 10 u32 match ip src 0.0.0.0/0 flowid 1:9999
     tc filter add dev eth1 parent 1: protocol ip prio 10 u32 match ip dst 0.0.0.0/0 flowid 1:9999


echo ""
echo "Vse nastaveno :)"
echo ""

}

shaping_down() {
  echo -e "Zastavuji shapovani klientu ... "
  tc qdisc del dev eth0 root &> /dev/null
  tc qdisc del dev eth1 root &> /dev/null
  echo -e "Shapov▒n▒ zastaveno ... "
}

case "$1" in
'start')
  shaping_up
  ;;
'stop')
  shaping_down
  ;;
'--help')
  echo -e "\nPouziti: $0 start|stop\n"
  echo -e "$0 start     => zapne shaping"
  echo -e "$0 stop      => vypne shaping"
  echo -e "$0 --help    => vypise tuto napovedu\n"
 ;;
* )
  echo -e "\nPouziti: $0 start|stop\n"
  echo -e "Napoveda: $0 --help\n"
esac
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

23.4.2008 08:57 pht
Rozbalit Rozbalit vše Re: Problem s shapingem
Odpovědět | | Sbalit | Link | Blokovat | Admin
co si pamatuju, tak ping a packet loss souvisi s nejakym nastavenim htb (ci jine metody) ohledne delky fronty, do ktere kernel schovava packety nez je vypusti. jsem linej to ted hledat presne ale myslim ze se to da najit snadno. minimalne v "lartc" o tom zminka bude.
23.4.2008 10:03 Pavel Záruba
Rozbalit Rozbalit vše Re: Problem s shapingem
Hledám, hledám, nenacházím :(
24.4.2008 06:51 pht
Rozbalit Rozbalit vše Re: Problem s shapingem
no, jeste me napadlo, jestli to neni tim, ze aplikujete 50 kbit na oba ethernety a masku 0.0.0.0/0 a tudiz na veskery lan provoz. mozna by to chtelo nejak osetrit lokalni IP, nebo pomoci iptables markovat pakety ktere se routuji.
24.4.2008 08:05 Pavel Záruba
Rozbalit Rozbalit vše Re: Problem s shapingem
Rychlost pro vsechny IP, které jsou na Lanu nastavené mám, i pro samotný router.
24.4.2008 06:55 pht
Rozbalit Rozbalit vše Re: Problem s shapingem
jinak, ten cyklus na nacteni souboru mate hroznej, ctete ten soubor extra pro kazdy radek zvlast. zkuste neco takoveho:
sed 's/#.*$//;s/^ *//;s/ *$//;/^$/d' < $input_file | \
        while read parametr1 parametr2 parametr3 parametr4; do

        echo "1=$parametr1"
        echo "2=$parametr2"
        echo "3=$parametr3"
        echo "4=$parametr4"
done
24.4.2008 08:01 Pavel Záruba
Rozbalit Rozbalit vše Re: Problem s shapingem
Díky za optimalizaci :)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.