здравствуйте
стоит задача приоритизировать тафик для обеспечения бесперебойного показа iptv (мультикаст)
сеть - 100/100, роутер tp-link WR841ND (openwrt) - локалка 100/100 с несколькими ноутбуками и одним SetTop-BOXом.проблема в том, что когда кто-то начинает качать из интернетов на полную катушку, то iptv лагает жутко. достаточно качать со скоростью 2-3 мегабайта/сек, чтобы начались лаги, не говоря уже о 11.5 Мб.
прошил openwrt из транка. пытаюсь настроить QoS посредством встроенного скрипта, но что-то не очень получается
вот что генерируется скриптом -
-----------------------------------------------------
root@OpenWrt:~# /usr/lib/qos/generate.sh all
insmod cls_u32 >&- 2>&-
insmod em_u32 >&- 2>&-
insmod act_connmark >&- 2>&-
insmod act_mirred >&- 2>&-
insmod sch_ingress >&- 2>&-
insmod cls_fw >&- 2>&-
insmod sch_hfsc >&- 2>&-
insmod sch_sfq >&- 2>&-
insmod sch_red >&- 2>&-
ifconfig eth1 up txqueuelen 5 >&- 2>&-
tc qdisc del dev eth1 root >&- 2>&-
tc qdisc add dev eth1 root handle 1: hfsc default 30
tc class add dev eth1 parent 1: classid 1:1 hfsc sc rate 82400kbit ul rate 82400kbit
tc class add dev eth1 parent 1:1 classid 1:10 hfsc rt m1 48066kbit d 9us m2 8240kbit ls m1 48066kbit d 9us m2 45777kbit ul rate 82400kbit
tc class add dev eth1 parent 1:1 classid 1:20 hfsc rt m1 43855kbit d 23us m2 41200kbit ls m1 43855kbit d 23us m2 22888kbit ul rate 82400kbit
tc class add dev eth1 parent 1:1 classid 1:30 hfsc ls m1 0kbit d 100000us m2 11444kbit ul rate 82400kbit
tc class add dev eth1 parent 1:1 classid 1:40 hfsc ls m1 0kbit d 200000us m2 2288kbit ul rate 82400kbit
tc qdisc add dev eth1 parent 1:10 handle 100: sfq perturb 2 limit 6328320
tc qdisc add dev eth1 parent 1:20 handle 200: sfq perturb 2 limit 6328320
tc qdisc add dev eth1 parent 1:30 handle 300: red min 527360 max 1582080 burst 585 avpkt 1500 limit 6328320 probability 0.12 ecn
tc qdisc add dev eth1 parent 1:40 handle 400: red min 527360 max 1582080 burst 585 avpkt 1500 limit 6328320 probability 0.12 ecn
tc filter add dev eth1 parent 1: prio 1 protocol ip handle 1 fw flowid 1:10
tc filter add dev eth1 parent 1: prio 2 protocol ip handle 2 fw flowid 1:20
tc filter add dev eth1 parent 1: prio 3 protocol ip handle 3 fw flowid 1:30
tc filter add dev eth1 parent 1: prio 4 protocol ip handle 4 fw flowid 1:40
ifconfig ifb0 up txqueuelen 5 >&- 2>&-
tc qdisc del dev ifb0 root >&- 2>&-
tc qdisc add dev ifb0 root handle 1: hfsc default 30
tc class add dev ifb0 parent 1: classid 1:1 hfsc sc rate 82400kbit ul rate 82400kbit
tc qdisc del dev eth1 ingress >&- 2>&-
tc qdisc add dev eth1 ingress
tc filter add dev eth1 parent ffff: protocol ip prio 1 u32 match u32 0 0 flowid 1:1 action connmark action mirred egress redirect dev ifb0
tc class add dev ifb0 parent 1:1 classid 1:10 hfsc rt m1 18677kbit d 23us m2 8240kbit ls m1 18677kbit d 23us m2 45777kbit ul rate 82400kbit
tc class add dev ifb0 parent 1:1 classid 1:20 hfsc rt m1 42939kbit d 23us m2 41200kbit ls m1 42939kbit d 23us m2 22888kbit ul rate 82400kbit
tc class add dev ifb0 parent 1:1 classid 1:30 hfsc ls m1 0kbit d 100000us m2 11444kbit ul rate 82400kbit
tc class add dev ifb0 parent 1:1 classid 1:40 hfsc ls m1 0kbit d 200000us m2 2288kbit ul rate 82400kbit
tc qdisc add dev ifb0 parent 1:10 handle 100: sfq perturb 2 limit 6328320
tc qdisc add dev ifb0 parent 1:20 handle 200: sfq perturb 2 limit 6328320
tc qdisc add dev ifb0 parent 1:30 handle 300: red min 527360 max 1582080 burst 585 avpkt 1500 limit 6328320 probability 0.12 ecn
tc qdisc add dev ifb0 parent 1:40 handle 400: red min 527360 max 1582080 burst 585 avpkt 1500 limit 6328320 probability 0.12 ecn
tc filter add dev ifb0 parent 1: prio 1 protocol ip handle 1 fw flowid 1:10
tc filter add dev ifb0 parent 1: prio 2 protocol ip handle 2 fw flowid 1:20
tc filter add dev ifb0 parent 1: prio 3 protocol ip handle 3 fw flowid 1:30
tc filter add dev ifb0 parent 1: prio 4 protocol ip handle 4 fw flowid 1:40
iptables -t mangle -F
iptables -t mangle -X
insmod ipt_multiport >&- 2>&-
insmod ipt_CONNMARK >&- 2>&-
insmod ipt_length >&- 2>&-
iptables -t mangle -N Default >&- 2>&-
iptables -t mangle -N Default_ct >&- 2>&-
iptables -t mangle -A Default_ct -m mark --mark 0 -m tcp -p tcp -m multiport --ports 22,53 -j MARK --set-mark 1
iptables -t mangle -A Default_ct -m mark --mark 0 -p udp -m udp -m multiport --ports 22,53 -j MARK --set-mark 1
iptables -t mangle -A Default_ct -m mark --mark 0 -p tcp -m tcp -m multiport --ports 20,21,25,80,110,443,993,995 -j MARK --set-mark 3
iptables -t mangle -A Default_ct -m mark --mark 0 -m tcp -p tcp -m multiport --ports 5190 -j MARK --set-mark 2
iptables -t mangle -A Default_ct -m mark --mark 0 -p udp -m udp -m multiport --ports 5190 -j MARK --set-mark 2
iptables -t mangle -A Default_ct -m mark --mark 0 -p udp -s 82.193.96.0/19 -j MARK --set-mark 1
iptables -t mangle -A Default_ct -m mark --mark 0 -p udp -s 172.16.0.0/12 -j MARK --set-mark 1
iptables -t mangle -A Default_ct -j CONNMARK --save-mark
iptables -t mangle -A Default -j CONNMARK --restore-mark
iptables -t mangle -A Default -m mark --mark 0 -j Default_ct
iptables -t mangle -A Default -m mark --mark 1 -m length --length 400: -j MARK --set-mark 0
iptables -t mangle -A Default -m mark --mark 2 -m length --length 800: -j MARK --set-mark 0
iptables -t mangle -A Default -m mark --mark 0 -p udp -m length --length :500 -j MARK --set-mark 2
iptables -t mangle -A Default -p icmp -j MARK --set-mark 1
iptables -t mangle -A Default -m mark --mark 0 -m tcp -p tcp --sport 1024:65535 --dport 1024:65535 -j MARK --set-mark 4
iptables -t mangle -A Default -m mark --mark 0 -p udp -m udp --sport 1024:65535 --dport 1024:65535 -j MARK --set-mark 4
iptables -t mangle -A Default -p tcp -m length --length :128 -m mark ! --mark 4 -m tcp --tcp-flags ALL SYN -j MARK --set-mark 1
iptables -t mangle -A Default -p tcp -m length --length :128 -m mark ! --mark 4 -m tcp --tcp-flags ALL ACK -j MARK --set-mark 1
iptables -t mangle -A OUTPUT -o eth1 -j Default
iptables -t mangle -A FORWARD -o eth1 -j Default
-----------------------------------------------------
проверяем на ssh-трафике (закачка большого файла), работает -
-----------------------------------------------------
class hfsc 1: root
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
period 0 level 2
class hfsc 1:1 parent 1: sc m1 0bit d 0us m2 82400Kbit ul m1 0bit d 0us m2 82400Kbit
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
period 43282 work 716071940 bytes level 1
class hfsc 1:10 parent 1:1 leaf 100: rt m1 18677Kbit d 23us m2 8240Kbit ls m1 18677Kbit d 23us m2 45777Kbit ul m1 0bit d 0us m2 82400Kbit
Sent 716069479 bytes 473970 pkt (dropped 360, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
period 43271 work 716069479 bytes rtwork 85564903 bytes level 0
class hfsc 1:20 parent 1:1 leaf 200: rt m1 42939Kbit d 23us m2 41200Kbit ls m1 42939Kbit d 23us m2 22888Kbit ul m1 0bit d 0us m2 82400Kbit
Sent 180 bytes 3 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
period 3 work 180 bytes rtwork 180 bytes level 0
class hfsc 1:30 parent 1:1 leaf 300: ls m1 0bit d 100.0ms m2 11444Kbit ul m1 0bit d 0us m2 82400Kbit
Sent 2281 bytes 23 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
period 23 work 2281 bytes level 0
class hfsc 1:40 parent 1:1 leaf 400: ls m1 0bit d 200.0ms m2 2288Kbit ul m1 0bit d 0us m2 82400Kbit
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
period 0 level 0
class red 300:1 parent 300:
class red 400:1 parent 400:
-----------------------------------------------------
то есть трафик попадает в нужную цепочку.
включаем телек, не работает -
-----------------------------------------------------
class hfsc 1:30 parent 1:1 leaf 300: ls m1 0bit d 100.0ms m2 11444Kbit ul m1 0bit d 0us m2 82400Kbit
Sent 63325345 bytes 46672 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
period 46671 work 63325345 bytes level 0
-----------------------------------------------------
то есть попадает не в ту цепочку.
собственно вопрос: почему правила для ssh срабатывают -
iptables -t mangle -A Default_ct -m mark --mark 0 -m tcp -p tcp -m multiport --ports 22,53 -j MARK --set-mark 1
а для мультикаста не работают -
iptables -t mangle -A Default_ct -m mark --mark 0 -p udp -s 82.193.96.0/19 -j MARK --set-mark 1
iptables -t mangle -A Default_ct -m mark --mark 0 -p udp -s 172.16.0.0/12 -j MARK --set-mark 1
пакеты мультикаста выглядят таким образом -
13:19:57.921982 IP (tos 0x68, ttl 59, id 36747, offset 0, flags [none], proto UDP (17), length 1344) 82.193.97.163.37266 > 239.23.1.128.1234: [no cksum] UDP, length 1316
мое знакомство со всем этим делом ограничивается получасовым чтением lartc, потому прошу помощи
спасибо