QoS
Oqak
node.ch na centrum.cz
Neděle Leden 22 07:24:05 CET 2006
Pokud jsem si alespon otevrel SPA2100 manual (staci hledat na netu, je to
obsahle PDF, anglicky), tak port forwarding tam bezpochyby je. QoS
samozrejme bude resen s ohledem na VoIP (tj. priorizace packetu hlasovych
pred vsim ostatnim) a o to jde, vyresis to snadno bez nejakeho stresu. Cena
vč. DPH a dopravy: 3 000,00 Kč.
Akorat musis zahodit stavajici adapter a router, ale mas jistotu, ze sipura
je na voip nejlepsi.
Timhle treba take zjistits nejake info nastavenych parametrech (podledni
string nahrad svym rozhranim do internetu):
tc qdisc show dev ppp0
Tady je skript na ten uploud, dokazal by to nekdo rozsirit o download
(vyhrazeni linky v pripadne aktivity na voip napr.?):
#!/bin/sh
DEV=$1
# Kapacita uplinku u vasi linky v kbit/s - cokoliv mensiho, nez
nominal.kapacita ISP,
# pro DSL osobne doporucuji do 90%, pro CDMA do 85% nominalu
UPLINK=$2
# Set how much bandwidth to use for each class
UPLINK_10_R=$UPLINK
UPLINK_20_R=$UPLINK
UPLINK_30_R=$UPLINK
UPLINK_40_R=$(( 9*$UPLINK/10 ))
UPLINK_50_R=$(( 1*$UPLINK/10 ))
UPLINK_60_R=$(( 5*$UPLINK/10 ))
# The same as above, but here you set the ceiling, ie. how much a class is
allowed to borrow from another
UPLINK_10_C=$UPLINK
UPLINK_20_C=$UPLINK
UPLINK_30_C=$UPLINK
UPLINK_40_C=$(( 9*$UPLINK/10 ))
UPLINK_50_C=$(( 5*$UPLINK/10 ))
UPLINK_60_C=$(( 8*$UPLINK/10 ))
# DirectConnection port
# In newer versions of DC++ there is no default.
# Please set your port used in DC++ here.
PORT_DC=20000
# full path to TC command, unless it's in PATH
TC=tc
################### Nothing to change below this line unless you're
adventurous ###############
# Remove existing qdisc
$TC qdisc del dev $DEV root 2>&1 >/dev/null
################### QUEUE DISCIPLINES
# Add root qdisc
$TC qdisc add dev $DEV root handle 1: htb default 60
# Add master qdisc
$TC class add dev $DEV parent 1: classid 1:1 htb rate ${UPLINK}kbit
# Add prio 0 queue (highest)
$TC class add dev $DEV parent 1:1 classid 1:10 htb rate ${UPLINK_10_R}kbit
ceil ${UPLINK_10_C}kbit prio 0
$TC qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10
# Add prio 1 queue
$TC class add dev $DEV parent 1:1 classid 1:20 htb rate ${UPLINK_20_R}kbit
ceil ${UPLINK_20_C}kbit prio 1
$TC qdisc add dev $DEV parent 1:20 handle 20: sfq perturb 10
# Add prio 2 queue
$TC class add dev $DEV parent 1:1 classid 1:30 htb rate ${UPLINK_30_R}kbit
ceil ${UPLINK_30_C}kbit prio 2
$TC qdisc add dev $DEV parent 1:30 handle 30: sfq perturb 10
# Add prio 3 queue
$TC class add dev $DEV parent 1:1 classid 1:40 htb rate ${UPLINK_40_R}kbit
ceil ${UPLINK_40_C}kbit prio 3
$TC qdisc add dev $DEV parent 1:40 handle 40: sfq perturb 10
# Add prio 4 queue (lowest)
$TC class add dev $DEV parent 1:1 classid 1:50 htb rate ${UPLINK_50_R}kbit
ceil ${UPLINK_50_C}kbit prio 4
$TC qdisc add dev $DEV parent 1:50 handle 50: sfq perturb 10
# Add prio 5 queue (default queue)
$TC class add dev $DEV parent 1:1 classid 1:60 htb rate ${UPLINK_60_R}kbit
ceil ${UPLINK_60_C}kbit prio 5
$TC qdisc add dev $DEV parent 1:60 handle 60: sfq perturb 10
################### FILTERS
# CLASS 10: TCP/ACK
$TC filter add dev $DEV protocol ip parent 1: prio 1 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
# CLASS 20: VoIP (prio 1) (SIP/skinny packets)
$TC filter add dev $DEV parent 1: protocol ip prio 1 u32 match ip tos 0x68
0xff flowid 1:20
# CLASS 20: VoIP (prio 2) (RTP data)
$TC filter add dev $DEV parent 1: protocol ip prio 2 u32 match ip tos 0xb8
0xff flowid 1:20
# CLASS 30: IP TOS 0x10 (prio 1) (minimum delay)
$TC filter add dev $DEV parent 1: protocol ip prio 1 u32 match ip tos 0x10
0xff flowid 1:30
# CLASS 30: IP TOS 0x04 (prio 2) (maximum reliability)
$TC filter add dev $DEV parent 1: protocol ip prio 2 u32 match ip tos 0x04
0xff flowid 1:30
# CLASS 40: ICMP (prio 1)
$TC filter add dev $DEV parent 1: protocol ip prio 1 u32 match ip protocol 1
0xff flowid 1:40
# CLASS 40: DNS (prio 2)
$TC filter add dev $DEV parent 1: protocol ip prio 2 u32 match ip dport 53
0xffff flowid 1:40
# CLASS 40: Shoutcast (prio 3)
$TC filter add dev $DEV parent 1: protocol ip prio 3 u32 match ip dport 8000
0xffff flowid 1:40
# CLASS 40: IP TOS 0x02 (prio 4) (minimum cost)
$TC filter add dev $DEV parent 1: protocol ip prio 4 u32 match ip tos 0x02
0xff flowid 1:40
# CLASS 40: IMAP (prio 5) (with and without SSL)
$TC filter add dev $DEV parent 1: protocol ip prio 5 u32 match ip dport 143
0xffff flowid 1:40
$TC filter add dev $DEV parent 1: protocol ip prio 5 u32 match ip dport 220
0xffff flowid 1:40
$TC filter add dev $DEV parent 1: protocol ip prio 5 u32 match ip dport 993
0xffff flowid 1:40
# CLASS 40: SMTP (prio 6) (with and without SSL)
$TC filter add dev $DEV parent 1: protocol ip prio 6 u32 match ip dport 25
0xffff flowid 1:40
$TC filter add dev $DEV parent 1: protocol ip prio 6 u32 match ip dport 465
0xffff flowid 1:40
# CLASS 40: POP (prio 7) (with and without SSL)
$TC filter add dev $DEV parent 1: protocol ip prio 7 u32 match ip dport 106
0xffff flowid 1:40
$TC filter add dev $DEV parent 1: protocol ip prio 7 u32 match ip dport 109
0xffff flowid 1:40
$TC filter add dev $DEV parent 1: protocol ip prio 7 u32 match ip dport 110
0xffff flowid 1:40
$TC filter add dev $DEV parent 1: protocol ip prio 7 u32 match ip dport 995
0xffff flowid 1:40
$TC filter add dev $DEV parent 1: protocol ip prio 7 u32 match ip dport 1109
0xffff flowid 1:40
# CLASS 40: HTTP (prio 8) (with and without SSL)
$TC filter add dev $DEV parent 1: protocol ip prio 8 u32 match ip dport 80
0xffff flowid 1:40
$TC filter add dev $DEV parent 1: protocol ip prio 8 u32 match ip dport 443
0xffff flowid 1:40
# CLASS 40: FTP (prio 9) (with and without SSL)
$TC filter add dev $DEV parent 1: protocol ip prio 9 u32 match ip dport 20
0xffff flowid 1:40
$TC filter add dev $DEV parent 1: protocol ip prio 9 u32 match ip dport 21
0xffff flowid 1:40
$TC filter add dev $DEV parent 1: protocol ip prio 9 u32 match ip dport 115
0xffff flowid 1:40
$TC filter add dev $DEV parent 1: protocol ip prio 9 u32 match ip dport 2431
0xffff flowid 1:40
$TC filter add dev $DEV parent 1: protocol ip prio 9 u32 match ip dport 2433
0xffff flowid 1:40
# CLASS 40: SSH (prio 10) (without tos bit set, caters for buggy clients
like PuTTY and ssh.com windows client)
$TC filter add dev $DEV parent 1: protocol ip prio 10 u32 match ip dport 22
0xffff mat ip tos 0x00 0xff flowid 1:40
# CLASS 40: IP TOS 0x08 (prio 11) (maximum throughput)
$TC filter add dev $DEV parent 1: protocol ip prio 11 u32 match ip tos 0x08
0xff flowid 1:40
# CLASS 50: BitTorrent (prio 1)
$TC filter add dev $DEV parent 1: protocol ip prio 1 u32 match ip sport 6881
0xffff flowid 1:50
# CLASS 50: eMule (prio 2)
$TC filter add dev $DEV parent 1: protocol ip prio 2 u32 match ip sport 4661
0xffff flowid 1:50 # eMule TCP
$TC filter add dev $DEV parent 1: protocol ip prio 2 u32 match ip sport 4662
0xffff flowid 1:50 # eMule TCP
$TC filter add dev $DEV parent 1: protocol ip prio 2 u32 match ip sport 4663
0xffff flowid 1:50 # eMule TCP
$TC filter add dev $DEV parent 1: protocol ip prio 2 u32 match ip sport 4672
0xffff flowid 1:50 # eMule UDP
$TC filter add dev $DEV parent 1: protocol ip prio 2 u32 match ip sport 4711
0xffff flowid 1:50 # eMule Webserver
$TC filter add dev $DEV parent 1: protocol ip prio 2 u32 match ip sport 5768
0xffff flowid 1:50 # Overnet
# CLASS 50: DirectConnect (prio 3)
$TC filter add dev $DEV parent 1: protocol ip prio 3 u32 match ip dport 411
0xffff flowid 1:50 # Hub connection
$TC filter add dev $DEV parent 1: protocol ip prio 3 u32 match ip sport 1412
0xffff flowid 1:50 # Default transfer/search port
$TC filter add dev $DEV parent 1: protocol ip prio 3 u32 match ip sport
$PORT_DC 0xffff flowid 1:50 # Custom transfer/search port
# CLASS 50: Kazaa (prio 4)
$TC filter add dev $DEV parent 1: protocol ip prio 4 u32 match ip sport 6699
0xffff flowid 1:50
# CLASS 50: Gnutella (prio 5)
$TC filter add dev $DEV parent 1: protocol ip prio 5 u32 match ip sport 6346
0xffff flowid 1:50
Další informace o konferenci Linux