The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"linux, приоритизация трафика и шейпинг"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Квоты, ограничения, QoS / Linux)
Изначальное сообщение [ Отслеживать ]

"linux, приоритизация трафика и шейпинг"  +/
Сообщение от миха228 on 02-Июн-11, 14:26 
здравствуйте
стоит задача приоритизировать тафик для обеспечения бесперебойного показа 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, потому прошу помощи
спасибо

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "linux, приоритизация трафика и шейпинг"  +/
Сообщение от миха228 on 02-Июн-11, 14:49 
вот что говорит conntrack -
root@OpenWrt:~# cat /proc/net/nf_conntrack|grep 1234
ipv4     2 udp      17 59 src=82.193.97.163 dst=239.23.1.128 sport=37266 dport=1234 [UNREPLIED] src=239.23.1.128 dst=82.193.97.163 sport=1234 dport=37266 mark=0 use=2

вопрос открытым остается - почему они не маркируются и как это сделать

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "linux, приоритизация трафика и шейпинг"  +/
Сообщение от reader (ok) on 02-Июн-11, 15:38 
> вот что говорит conntrack -
> root@OpenWrt:~# cat /proc/net/nf_conntrack|grep 1234
> ipv4     2 udp      
> 17 59 src=82.193.97.163 dst=239.23.1.128 sport=37266 dport=1234 [UNREPLIED] src=239.23.1.128
> dst=82.193.97.163 sport=1234 dport=37266 mark=0 use=2
> вопрос открытым остается - почему они не маркируются и как это сделать

возможно из-за -o eth1 в:

iptables -t mangle -A OUTPUT -o eth1 -j Default
iptables -t mangle -A FORWARD -o eth1 -j Default

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "linux, приоритизация трафика и шейпинг"  +/
Сообщение от миха228 on 02-Июн-11, 16:22 
> возможно из-за -o eth1 в:
> iptables -t mangle -A OUTPUT -o eth1 -j Default
> iptables -t mangle -A FORWARD -o eth1 -j Default

не совсем понял почему, но это не так.
к тому же ssh-пакеты (исходящие) маркируются успешно.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "linux, приоритизация трафика и шейпинг"  +/
Сообщение от reader (ok) on 02-Июн-11, 17:00 
>> возможно из-за -o eth1 в:
>> iptables -t mangle -A OUTPUT -o eth1 -j Default
>> iptables -t mangle -A FORWARD -o eth1 -j Default
> не совсем понял почему, но это не так.
> к тому же ssh-пакеты (исходящие) маркируются успешно.

топология сети не понятна.

если за eth1 находится локалка, и пакет src=82.193.97.163 dst=239.23.1.128 входил через eth1, а уходил через другой интерфейс, то он в -j Default не будет отправлен и маркироваться не будет.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

6. "linux, приоритизация трафика и шейпинг"  +/
Сообщение от миха228 on 02-Июн-11, 17:02 
> топология сети не понятна.

eth1 wan
собственно я направил пакеты куда нужно, но от тормозов и заиканий это не спасло(

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

8. "linux, приоритизация трафика и шейпинг"  +/
Сообщение от LSTemp (ok) on 09-Июн-11, 03:55 
>> вот что говорит conntrack -
>> root@OpenWrt:~# cat /proc/net/nf_conntrack|grep 1234
>> ipv4     2 udp
>> 17 59 src=82.193.97.163 dst=239.23.1.128 sport=37266 dport=1234 [UNREPLIED] src=239.23.1.128
>> dst=82.193.97.163 sport=1234 dport=37266 mark=0 use=2
>> вопрос открытым остается - почему они не маркируются и как это сделать
> возможно из-за -o eth1 в:
> iptables -t mangle -A OUTPUT -o eth1 -j Default
> iptables -t mangle -A FORWARD -o eth1 -j Default

ну так изучите, какие таблицы (и соответственно правила, прописанные в них) обрабатывают пакеты по пути их прохождения для разного трафика.

а не порите (уж простите) херню с перенаправлением пакетов из других таблиц в mangle

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

9. "linux, приоритизация трафика и шейпинг"  +/
Сообщение от миха228 on 10-Июн-11, 11:27 
> ну так изучите, какие таблицы (и соответственно правила, прописанные в них) обрабатывают
> пакеты по пути их прохождения для разного трафика.
> а не порите (уж простите) херню с перенаправлением пакетов из других таблиц
> в mangle

изучил, разобрался, подчистил, все чин-чином
только делу это не помогло совершенно

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

5. "linux, приоритизация трафика и шейпинг"  +/
Сообщение от миха228 on 02-Июн-11, 17:01 
разобрался. там была каша в цепочках iptables, потому не сразу заметил..

однако это не помогло особо, все равно тормозит и заикается звук. может быть кто-то посоветует что еще тут можно сделать?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

7. "linux, приоритизация трафика и шейпинг"  +/
Сообщение от миха228 on 02-Июн-11, 17:05 
> разобрался. там была каша в цепочках iptables, потому не сразу заметил..
> однако это не помогло особо, все равно тормозит и заикается звук. может
> быть кто-то посоветует что еще тут можно сделать?

отправил куда нужно их вот таким правилом (влом разгребать все) -
iptables -t mangle -A INPUT -p udp -d 224.0.0.0/4 -j Default_ct

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру