Перейти к содержимому
Калькуляторы

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Изменено пользователем photon

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.