Есть канал от провайдера 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.