> я бы для начала убрал бы flow classifier. если пакеты будут по
> прежнему пропадать,
> то есть еще мысли.Z0termaNN, спасибо за твой ответ...
У меня мысли вот какие... В моих правилах идентификаторы классов, хендлеров и остального пересекаются. Нигде не сказано, что этого делать нельзя, к тому же интерфейсы разные.
Я изменил идентификаторы так, что они не пересекаются. Добавил приоритеты.. После 5 дней все в норме. Перезагрузка правил не приводит к неверной работе. Также я опустил некоторые параметры, которые являются дополнительными - пусть система сама думает, какие идентификаторы выбрать... Плюс - сделал вместо скрипта на up интерфейса, скрипт, который пускается как сервис.
(Собственно, правила в первоначальном варианте и были такими, какие они сейчас... Просто я решил сделать более эстетично или академически, что-ли... :)
/etc/init.d/hi-me-lo
#! /bin/sh
### BEGIN INIT INFO
# Provides: hilo-tc-shaper
# Required-Start: $network $syslog
# Required-Stop: $network $syslog
# Should-Start:
# Should-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start and stop hilo-tc-shaper
# Description: hilo-tc-shaper
### END INIT INFO
PATH=/sbin:/bin
. /lib/init/vars.sh
. /lib/lsb/init-functions
# Reads config file (will override defaults above)
[ -r /etc/default/hilo-tc-shaper ] && . /etc/default/hilo-tc-shaper
case "$1" in
start|"")
log_daemon_msg "Starting hilo-tc-shaper" "ok"
################################################################################################
# Load used modules
################################################################################################
modprobe ifb
modprobe act_mirred
modprobe cls_flow
modprobe cls_u32
modprobe sch_ingress
modprobe sch_sfq
modprobe sch_htb
ifconfig ifb0 txqueuelen 1000 2>/dev/null
ifconfig ifb0 up 2>/dev/null
################################################################################################
# Create discuiplines for network interface
################################################################################################
$cmdTC qdisc add dev $devNIF root handle 1:0 htb default 12
# Create classes for network interface
$cmdTC class add dev $devNIF parent 1:0 classid 1:1 htb rate ${rateLANDl} ceil ${ceilLANDl} quantum ${quantLAN}
$cmdTC class add dev $devNIF parent 1:1 classid 1:11 htb prio 1 rate ${rateHiDl} ceil ${ceilHiDl} quantum ${quantHi}
$cmdTC class add dev $devNIF parent 1:1 classid 1:12 htb prio 2 rate ${rateLoDl} ceil ${ceilLoDl} quantum ${quantLo}
$cmdTC qdisc add dev $devNIF parent 1:11 sfq perturb 10
$cmdTC qdisc add dev $devNIF parent 1:12 sfq perturb 10
# Create filters for network interface
$cmdTC filter add dev $devNIF protocol all prio 1 parent 1:0 u32 match ip dst 10.252.2.0/24 flowid 1:11
$cmdTC filter add dev $devNIF protocol all prio 1 parent 1:11 handle 111 flow hash keys dst divisor 1024
$cmdTC filter add dev $devNIF protocol all prio 2 parent 1:0 u32 match ip dst 0/0 flowid 1:12
$cmdTC filter add dev $devNIF protocol all prio 2 parent 1:12 handle 112 flow hash keys dst divisor 1024
################################################################################################
# Create discuiplines for fake interface
################################################################################################
$cmdTC qdisc add dev $devFIF root handle 2:0 htb default 22
# Create classes for network interface
$cmdTC class add dev $devFIF parent 2:0 classid 2:2 htb rate ${rateLANUl} ceil ${ceilLANUl} quantum ${quantLAN}
$cmdTC class add dev $devFIF parent 2:2 classid 2:21 htb prio 1 rate ${rateHiUl} ceil ${ceilHiUl} quantum ${quantHi}
$cmdTC class add dev $devFIF parent 2:2 classid 2:22 htb prio 2 rate ${rateLoUl} ceil ${ceilLoUl} quantum ${quantLo}
$cmdTC qdisc add dev $devFIF parent 2:21 sfq perturb 10
$cmdTC qdisc add dev $devFIF parent 2:22 sfq perturb 10
# Create filters for network interface
$cmdTC filter add dev $devFIF protocol all prio 1 parent 2:0 u32 match ip src 10.252.2.0/24 flowid 2:21
$cmdTC filter add dev $devFIF protocol all prio 1 parent 2:21 handle 221 flow hash keys src divisor 1024
$cmdTC filter add dev $devFIF protocol all prio 2 parent 2:0 u32 match ip src 0/0 flowid 2:22
$cmdTC filter add dev $devFIF protocol all prio 2 parent 2:22 handle 222 flow hash keys src divisor 1024
################################################################################################
# Create redirect discuiplines from network to fake interface
################################################################################################
$cmdTC qdisc add dev $devNIF ingress
$cmdTC filter add dev $devNIF parent ffff: protocol all u32 match u32 0 0 action mirred egress redirect dev $devFIF
log_end_msg 0
;;
stop)
log_daemon_msg "Stopping hilo-tc-shaper" "ok"
################################################################################################
# Remove discuiplines from network and fake interfaces
################################################################################################
$cmdTC qdisc del dev $devNIF root 2>/dev/null
$cmdTC qdisc del dev $devFIF root 2>/dev/null
$cmdTC qdisc del dev $devNIF ingress 2>/dev/null
#ifconfig ifb0 down 2>/dev/null
log_end_msg 0
;;
restart|force-reload)
$0 stop
sleep 1
$0 start
;;
*)
echo "Usage: hilo-tc-shaper [start|stop|restart|force-reload]" >&2
exit 3
;;
esac
:
/etc/default/hi-me-lo
cmdTC=/sbin/tc
rateLANDl="60mbit"
ceilLANDl="60mbit"
rateLANUl="40mbit"
ceilLANUl="40mbit"
quantLAN="1514"
# Nowaday bandwidth limit set to 100mbit.
# We divide it with 60mbit download and 40mbit upload bandthes.
rateHiDl="30mbit"
ceilHiDl="60mbit"
rateHiUl="20mbit"
ceilHiUl="40mbit"
quantHi="1514"
rateLoDl="30mbit"
ceilLoDl="60mbit"
rateLoUl="20mbit"
ceilLoUl="40mbit"
quantLo="1514"
devNIF=eth0
devFIF=ifb0
P.S. Возможно, из-за одинаковых идентификаторов, пакеты мешались в очередях..