Още една публикация за контрол на трафика с tc в Linux - Rascal - s
Още една публикация за контрол на трафика с помощта на tc в Linux
Много дистрибуции, ориентирани към рутер (openwrt, dd-wrt, ipcop и т.н.) имат собствена поддръжка на QoS. Въпреки това, такова QoS "извън кутията" не е гъвкаво и е адаптирано към интернет тарифите на "цивилизованите" страни, с постоянна скорост на достъп. В нашата социалистическа реалност скоростта през нощта може да бъде 2 пъти повече от тази през деня и е жалко да загубите този бонус.
В тази публикация ще се опитам да дам пример за работещо решение за приоритизиране на трафика на Linux с помощта на tc и iptables.
Първо, нека дефинираме променливите:
Създаваме основни планировчици на пакети и класове за входящ трафик:
Време е за изходящ трафик:
Сега създаваме 6 класа трафик с различен приоритет:
И така, имаме 6 класа трафик, от 1 (максимален приоритет) до 6 (минимален приоритет). По подразбиране целият трафик има 6-ти минимален приоритет.
Използвайки iptables, ще разложим трафика на класове, за това ще създадем специална верига -qos_tc :
С такова оформяне на трафика можете безболезнено да използвате IM, SSH и да сърфирате в интернет, докато имате десетки активни торенти. Честотната лента ще бъде автоматично разпределена към класове трафик с по-висок приоритет, ако е необходимо.
В някои вградени дистрибуции (например openwrt), за да работи скриптът, може да се наложи ръчно да заредите подходящите модули на ядрото: