PDA

Bekijk de volledige versie : Ustawianie priorytetów dla



Dark12
16-12-2008, 15:48
Witam, nie wiem czy tak się da, słyszałem że jest taka możliwość ustawianie tak aby dane urządzenie miało określoną część łącza.. Czyli np jak mamy dwa komputery w sieci plus jeden telefon internetowy podłączony przez bramkę do routera. Gdy te dwa komputery wykorzystują w trakcie pracy maksymalna prędkość internetu (zużywają całe pasmo.) To czy można tak ustawić aby telefon miał jakiś zapas łącza dla siebie i jego pakiety przechodziły w pierwszej kolejność? Próbowałem zrobić tak:
1) ustawiłem stały adres ip dla bramki po adresie mac
2) w opcji Bandwitch manager ustawiłem dla tego adresu ip aby miał min i max kbs dla siebie..
Jednak nie za bardzo to działa. Rozmówca mnie dobrze słyszy jednak ja słyszę lagujący głos (oczywiście podczas maksymalnego użycia łącza)

Szukam takiego rozwiązania aby nawet jak te dwa kompy ściągały coś z siec, to aby była możliwa rozmowy czyli ustawić jakoś priorytety tak aby pierwszeństwo miały pakiety od bramki.

sprzęt:
asus wl-500gp z soft oleg
linksy (bramka)

Z góry dziękuje za pomoc.



=====================



Wczoraj siedziałem nad tym chyba 6 godzin.. w necie znalazłem wzmiankę na temat QoS dla olega w postaci : Wondershaper
po przeglądnięciu wielu postów natrafiłem na coś takiego :



#!/bin/sh
# Wonder Shaper, last modified by Robert Koch (aka akbor)
#
# Set the following values to somewhat less than your actual download
# and uplink speed. In kilobits. Also set the device that is to be shaped.

DOWNLINK=$3
UPLINK=$4
DEV=$2

# low priority OUTGOING traffic - you can leave this blank if you want
# low priority source netmasks
NOPRIOHOSTSRC="$5"

# low priority destination netmasks
NOPRIOHOSTDST="$6"

# low priority source ports
NOPRIOPORTSRC="$7"

# low priority destination ports
NOPRIOPORTDST="$8"

if [ "$1" = "status" ]
then
tc -s qdisc ls dev $DEV
tc -s class ls dev $DEV
exit
fi

# clean existing down- and uplink qdiscs, hide errors
tc qdisc del dev $DEV root 2> /dev/null > /dev/null
tc qdisc del dev $DEV ingress 2> /dev/null > /dev/null

if [ "$1" = "stop" ]
then
exit
fi

########## uplink ##########

# install root HTB, point default traffic to 1:20:
tc qdisc add dev $DEV root handle 1: htb default 20

# shape everything at $UPLINK speed - this prevents huge queues in your
# DSL modem which destroy latency:
tc class add dev $DEV parent 1: classid 1:1 htb rate ${UPLINK}kbit \
ceil ${UPLINK}kbit burst 6k

# high prio class 1:10 - gets 50 to 100% traffic and highest priority:
tc class add dev $DEV parent 1:1 classid 1:10 htb rate $((5*$UPLINK/10))kbit \
ceil ${UPLINK}kbit burst 6k prio 1

# bulk & default class 1:20 - gets 40 to 100% traffic and lower priority:
tc class add dev $DEV parent 1:1 classid 1:20 htb rate $((4*$UPLINK/10))kbit \
ceil ${UPLINK}kbit burst 6k prio 2

# lowest priority class 1:30 - gets 10 to 100% traffic and lowest priority:
tc class add dev $DEV parent 1:1 classid 1:30 htb rate $((1*$UPLINK/10))kbit \
ceil ${UPLINK}kbit burst 6k prio 3

# all get Stochastic Fairness:
tc qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev $DEV parent 1:20 handle 20: sfq perturb 10
tc qdisc add dev $DEV parent 1:30 handle 30: sfq perturb 10

# high priority for VoIP traffic (by TOS)
tc filter add dev $DEV parent 1:0 protocol ip prio 1 u32 \
match ip tos 0x68 0xff \
match ip protocol 0x11 0xff \
flowid 1:10
tc filter add dev $DEV parent 1:0 protocol ip prio 1 u32 \
match ip tos 0xb8 0xff \
match ip protocol 0x11 0xff \
flowid 1:10

# high priority for VoIP traffic (by source port)
tc filter add dev $DEV parent 1:0 protocol ip prio 1 u32 \
match ip sport 5004 0xffff \
match ip protocol 0x11 0xff \
flowid 1:10
tc filter add dev $DEV parent 1:0 protocol ip prio 1 u32 \
match ip sport 5060 0xffff \
match ip protocol 0x11 0xff \
flowid 1:10

# TOS Minimum Delay (ssh, NOT scp) in 1:10:
tc filter add dev $DEV parent 1:0 protocol ip prio 3 u32 \
match ip tos 0x10 0xff \
flowid 1:10

# ICMP (ip protocol 1) in the interactive class 1:10 so we
# can do measurements & impress our friends:
tc filter add dev $DEV parent 1:0 protocol ip prio 1 u32 \
match ip protocol 1 0xff \
flowid 1:10

# To speed up downloads while an upload is going on, put ACK packets in
# the interactive class:
tc filter add dev $DEV parent 1: protocol ip prio 2 u32 \
match ip protocol 6 0xff \
match u8 0x05 0x0f at 0 \
match u16 0x0000 0xffc0 at 2 \
match u8 0x10 0xff at 33 \
flowid 1:10

# some traffic however suffers a worse fate
for a in $NOPRIOPORTDST
do
tc filter add dev $DEV parent 1: protocol ip prio 14 u32 \
match ip dport $a 0xffff flowid 1:30
done

for a in $NOPRIOPORTSRC
do
tc filter add dev $DEV parent 1: protocol ip prio 15 u32 \
match ip sport $a 0xffff flowid 1:30
done

for a in $NOPRIOHOSTSRC
do
tc filter add dev $DEV parent 1: protocol ip prio 16 u32 \
match ip src $a flowid 1:30
done

for a in $NOPRIOHOSTDST
do
tc filter add dev $DEV parent 1: protocol ip prio 17 u32 \
match ip dst $a flowid 1:30
done

# rest is 'non-interactive' ie 'bulk' and ends up in 1:20
tc filter add dev $DEV parent 1: protocol ip prio 1 u32 \
match ip dst 0.0.0.0/0 flowid 1:20

########## downlink ##########

# slow downloads down to somewhat less than the real speed to prevent
# queuing at our ISP. Tune to see how high you can set it.
# ISPs tend to have *huge* queues to make sure big downloads are fast
#
# attach ingress policer:
tc qdisc add dev $DEV handle ffff: ingress

# filter *everything* to it (0.0.0.0/0), drop everything that's
# coming in too fast:
tc filter add dev $DEV parent ffff: protocol ip prio 50 u32 match ip src \
0.0.0.0/0 police rate ${DOWNLINK}kbit burst 10k drop flowid :1


z strony : http://wiki.wl500g.info/index.php/PackageWondershaper jest tam instrukcja jak go uruchomić.

Jest to skrypt który ustawia priorytet dla voipa..
Uruchomiłem go i moje obserwacje:
gdy komputery sciagaj tylko z neta a nie upladuja nic to jest możliwe rozmawianie. jednak gdy pasmo upladu jest zajęte w całości to jakość rozmowy jest bardzo słaba..

pomocne linki:

- http://wl500g.info/showthread.php?t=752
- http://www.docum.org/docum.org/docs/BB/BB.php
- http://lartc.org/lartc.html


Jak ktoś się zna na pisaniu skryptów pod wondershapera to proszę się podzielić wiedzą . Pozdr