QoS w rc-scriptach
Arkadiusz Miskiewicz
misiek w pld.ORG.PL
Śro, 21 Sie 2002, 23:26:40 CEST
Blues <blues w ds6.pg.gda.pl> writes:
> Konfiguracja ich by była w postaci kolejkowanie,przepustowosc,priorytet:
> QOS=sfq,115000,1
>
> albo wręcz:
> QoS=115000
Ok, plan wygląda tak - ustawiane parametry w np. ifcfg-eth0:
QDISC=[sfq|teql0|prio|...]
QDISC_CLASS=[htb|cbq|none]
BANDWIDTH_IN=[w kilobitach]
BANDWIDTH_OUT=[w kilobitach]
A skrypt robił by to: jeśli podano limit na out to sprawdzamy czy
podano której klasowej kolejki używać (cbq czy htb), gdy jakaś podano
to tej używamy, gdy nie podano żadnej to jedziemy via tbf. W przypadku
gdy nie podano limitu na out to po prostu dodajemy dane QDISC jako root.
Limit na incoming traffic robiony jest poprzez ingress oraz police rate
w filtrze (działa tylko na 2.4 afaik, na 2.2 tym samym nie ma możliwości
limitowania incoming trafficu poza imq ale to akurat odpada).
Ów skrypt byłby odpalany w ifup-post.
if [ -n "${BANDWIDTH_OUT}" ]; then
if [ "${QDISC_CLASS}" = "htb" -o "${QDISC_CLASS}" = "cbq" ]; then
case "${QDISC_CLASS}" in
htb)
tc qdisc add dev ${DEVICE} root handle 1: htb default 10
tc class add dev ${DEVICE} parent 1: classid 1:10 htb rate \
${BANDWIDTH_OUT}kbit ceil ${BANDWIDTH_OUT}kbit
[ -n "${QDISC}" ] && tc qdisc add dev ${DEVICE} parent 1:10 ${QDISC}
;;
cbq)
tc qdisc add dev ${DEVICE} root handle 1: cbq bandwidth \
${BANDWIDTH_OUT} cell 8 avpkt 1000 mpu 64
tc class add dev ${DEVICE} parent 1 classid 1:10 cbq \
bandwidth ${BANDWIDTH_OUT} rate ${BANDWIDTH_OUT} \
maxburst 5 avpkt 1000 allot 1514 bounded
[ -n "${QDISC}" ] && tc qdisc add dev ${DEVICE} parent 1:10 ${QDISC}
;;
esac
else if [ -z "${QDISC}" -o "${QDISC}" = "tbf" ]; then
# net schedulers that are able to limit traffic
tc qdisc add dev ${DEVICE} root tbf rate ${BANDWIDTH_OUT}kbit \
latency 50ms burst 1540
fi
else
if [ -n "${QDISC}" ]; then
tc qdisc add dev ${DEVICE} root ${QDISC}
fi
fi
if [ -n "${BANDWIDTH_IN}" ]; then
tc qdisc add dev ${DEVICE} handle ffff: ingress
tc filter add dev ${DEVICE} parent ffff: protocol ip prio 50 u32 match \
ip src 0.0.0.0/0 police rate ${BANDWIDTH_IN}kbit \
burst 10k drop flowid :3
fi
Pytania itp
- jeśli ktoś widzi gdzieś błąd lub możliwość ulepszenia to niech da znać
- jeśli ktoś zna inne sposoby limitowania trafficu poza
cbq/htb i tbf to poproszę o info
- jeśli ktoś zna sposób limitowania incoming traffic
na jajkach 2.2 to również poproszę o info (imq odpada)
> pozdr. Paweł Gołaszewski
--
Arkadiusz Miśkiewicz IPv6 ready PLD Linux at http://www.pld.org.pl
misiek(at)pld.org.pl AM2-6BONE, 1024/3DB19BBD, arekm(at)ircnet, PWr
Więcej informacji o liście dyskusyjnej pld-devel-pl