Jump to content
Калькуляторы

tc и балансировка скоростей в загруженном канале

Доброго времени суток.

Есть сетка из примерно 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

 

Хватит ли выставления приоритетов, что бы абоненты с большими скоростями не задавили других абонентов при загрузке канала, и не останутся ли они без скорости, или возможен еще какой-либо вариант решения данной задачи?

Share this post


Link to post
Share on other sites

Не поможет. Либо расширяйте внешний канал, либо надо резать скорость наиболее активным качальщикам. Можно ловить их как в реальном времени, так и постфактум с помощью Netflow.

Edited by photon

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.