Tosh_dr Posted November 28, 2016 Доброго времени суток. Есть сетка из примерно 1000 абонентов, сервер на CentOS. В последнее время стал забиваться канал на 2-4 часа в день. Было принято решение - задать приоритеты абонентскими классам: с небольшой скоростью - высокий приоритет, средней - средний приоритет, с большой - низкий приоритет. Часть скрипта для tc: #!/bin/bash ipset -N blocked iphash # tc qdisc del dev em2 root # tc qdisc add dev em2 root handle 1: htb default 100 # tc class add dev em2 parent 1: classid 1:1 htb rate 1000mbit # Дефолтный класс//100//=============================================================== tc class add dev em2 parent 1:1 classid 1:100 htb rate 512Kbit ceil 600mbit prio 10 #====================================================================================== tc class add dev em2 parent 1:1 classid 1:10 htb rate 1mbit ceil 200mbit prio 1 # Интернет //20//====================================================================== tc class add dev em2 parent 1:1 classid 1:20 htb rate 100mbit ceil 600mbit prio 1 # Управление оборудованием //30//====================================================== tc class add dev em2 parent 1:1 classid 1:30 htb rate 1mbit ceil 20mbit prio 0 # ТВ //40//============================================================================ tc class add dev em2 parent 1:1 classid 1:40 htb rate 10mbit ceil 300mbit prio 0 #==============ФИЛЬТРЫ================================================================= # Корневой фильтр====================================================================== tc filter add dev em2 parent 1:0 pref 10 protocol ip u32 # ===========внутренние ресурсы======================================================= tc filter add dev em2 protocol ip parent 1: pref 10 u32 match ip src 1.2.3.4 flowid 1:10 tc filter add dev em2 protocol ip parent 1: pref 10 u32 match ip src 10.10.0.0/16 match ip dst 1.2.3.5 flowid 1:10 # сетка управления оборудованием======================================================= tc filter add dev em2 protocol ip parent 1: pref 10 u32 match ip dst 9.8.7.6/24 flowid 1:30 # тв в 40 класс======================================================================== tc filter add dev em2 protocol ip parent 1: pref 10 u32 match ip src 88.22.6.222/27 flowid 1:40 tc filter add dev em2 protocol ip parent 1: pref 10 u32 match ip src 99.111.66.55/28 flowid 1:40 # ========хэш-таблица 10: для абонентов================================================ tc filter add dev em2 parent 1:0 pref 10 handle 10: protocol ip u32 divisor 256 tc filter add dev em2 parent 1:0 protocol ip pref 10 u32 match ip dst 0.0.0.0/0 hashkey mask 0xff at 16 link 10: часть скрипта, который создает класс абонента: if [[ $speed<20000000&&$speed!=0 ]] then cprio=0 elif [[ $speed>=20000000&&$speed!=0&&$speed<50000000 ]] then cprio=1 elif [[ $speed>=50000000&&$speed!=0&&$ ]] then cprio=2 fi class_num=`cat $scr_dir/ip/$ip.sh|grep '#class='|sed 's/#class=//'` tc class change dev em2 parent 1:20 classid 1:$class_num htb rate 256kbit ceil $speed prio $cprio echo "#class=$class_num" > $scr_dir/ip/$ip.sh echo "tc class add dev em2 parent 1:20 classid 1:$class_num htb rate 256kbit ceil $speed" >> $scr_dir/ip/$ip.sh echo "tc filter replace dev em2 protocol ip parent 1:0 pref 10 u32 ht 10:$hexip: match ip dst $ip/32 flowid 1:$class_num" >> $scr_dir/ip/$ip.sh Хватит ли выставления приоритетов, что бы абоненты с большими скоростями не задавили других абонентов при загрузке канала, и не останутся ли они без скорости, или возможен еще какой-либо вариант решения данной задачи? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
photon Posted November 28, 2016 (edited) Не поможет. Либо расширяйте внешний канал, либо надо резать скорость наиболее активным качальщикам. Можно ловить их как в реальном времени, так и постфактум с помощью Netflow. Edited November 29, 2016 by photon Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...