LINUX.ORG.RU
ФорумAdmin

QoS для IPTV на скоростном канале


0

1

Есть канал от провайдера 100Мбит. По нему идет IPTV, также по нему идет все остальное. Провайдер со своей стороны QoS не настраивает, считает что и так нормально.

По факту IPTV жрет ~3,8Мбит. Но при параллельной активности каналожрущих приложений типа torrent или speedtest рассыпается на артефакты.

Я решил настроить QoS у себя на роутере (OS BusyBox v1.20.2) Вот упрощеный скрипт, чтобы продемонстрировать проблему:

int="br0"
# Сужаем канал до 80Мбит, чтобы быть увереным, что все затыки будут у нас.
DL=80Mbit

# Удаляем существующую приоритезацию 
tc qdisc del dev $int root > /dev/null 2>&1
# Создаем корневой handle, с указанием подкласса по умолчанию (10)
tc qdisc add dev $int root handle 1: htb r2q 100 default 10
# Задаем ширину канала в верхнем классе
tc class add dev $int parent 1: classid 1:1 htb rate $DL ceil $DL
# Класс куда пойдет IPTV имеет высокий приоритет
tc class add dev $int parent 1:1 classid 1:10 htb rate 2Mbit ceil $DL prio 2
# Класс куда пойдет speedtest - имеет низкий приоритет и дополнительно ограничение скорости 60Мбит
tc class add dev $int parent 1:1 classid 1:20 htb rate 2Mbit ceil 60Mbit prio 3
tc qdisc add dev $int parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev $int parent 1:20 handle 20: sfq perturb 10

# Направляем трафик от speedtest-сервера(85.94.0.83) в класс с низким приоритетом, остальное (включая IPTV) само идет в класс с высоким приоритетом, по умолчанию
tc filter add dev $int parent 1: protocol ip prio 1 u32 match ip src 85.94.0.83/32 flowid 1:20

Что получается, IPTV трафик даже имея более высокий приоритет и свободный канал в 20Мбит (speedtest не может взять больше 60Mbit из выделеных 80Мбит) Все равно сыплет картинку в артефакты на время работы speedtest.

Вопрос чего ему (трафику IPTV) нехватает, каких еще приоритетов?!, Как ему это дать? Хочу чтобы speedtest не мог влиять на IPTV.

Два варианта:

- роутер не тянет. таких полно, которые 100мбит на больше кол-во соединений тормозят. Проверить это можно путём выкидывания роутера и включения компьютера вместо него. С компа качать и смотреть IPTV. Если IPTV будет сыпаться(и CPU на компе не будет перегружен), значит провайдер не настроил QoS

- провайдер и в самом деле не настроил QoS для IPTV(что странно, обычно это делают. и большинство филиалов Ростелеком в центральной части и на юге это тоже делают). Если это так, то всплески трафика от торрентов и прочего будут рассыпать картинку. Довольно эффективный механизм зарезки скорости есть в самих торрент-клиентах - виндовый uTorrent, ktorrent(и прочее на libtorrent), transmission. uTP рекомендую выключить, он очень агрессивен по отношению к каналу и создаёт всплески

srg666
()
Ответ на: комментарий от srg666

Во время работы IPTV+speedtest загрузка ЦП роутера в ~70% Если понизить скорость канала до 60Мбит и скорость speedtest до 40Мбит, то загрузка ~35%, но IPTV трафик тоже рассыпается.

Может дело не в ресурсах процессора, а в недостаточной настройки потоков, может можно задать задержку или длину очереди IPTV, чтобы добиться ровности потока IPTV.

samson_b
() автор топика
Ответ на: комментарий от samson_b

Всё же проверьте напрямую через комп. Если на IPTV есть нешифрованные каналы, то проверка не составит проблем. Гадать на кофейной гуще не вижу смысла

srg666
()
Ответ на: комментарий от Pinkbyte

Прикрутил HFSC Вот уже второй день бьюсь с его настройкой, синтаксис воспринимается очень тяжело, русскоязычной инфы минимум.

Помогите задать правила, чтобы хотя бы убедиться что HFSC решает мои задачи. Коротко - есть канал 80Мбит, по нему идет IPTV и HTTP (speedtest) Нужно чтобы IPTV не рассыпался в артефакты при большой нагрузке на канал трафиком HTTP.

int="br0"
DL="80Mbit"
tc qdisc del dev $int root > /dev/null 2>&1
tc qdisc add dev $int root handle 1: hfsc default 10
tc class add dev $int parent 1: classid 1:1 hfsc sc rate $DL ul rate $DL
tc class add dev $int parent 1:1 classid 1:10 hfsc ??????
tc class add dev $int parent 1:1 classid 1:20 hfsc ??????

# Направляем трафик от speedtest-сервера(85.94.0.83) в класс с низким приоритетом, остальное (включая IPTV) само идет в класс с высоким приоритетом, по умолчанию
tc filter add dev $int parent 1: protocol ip prio 1 u32 match ip src 85.94.0.83/32 flowid 1:20

Что должно быть вместо вопросительных знаков?

samson_b
() автор топика
Ответ на: комментарий от Pinkbyte

На уровне понимания нюансов qos действительно туго.

samson_b
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.