Tosh_dr Posted November 28, 2016 · Report post Доброго времени суток. Есть сетка из примерно 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) · Report post Не поможет. Либо расширяйте внешний канал, либо надо резать скорость наиболее активным качальщикам. Можно ловить их как в реальном времени, так и постфактум с помощью Netflow. Edited November 29, 2016 by photon Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...