The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Прошу посмотреть правильно ли написан шейпер"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Квоты, ограничения, QoS)
Изначальное сообщение [ Отслеживать ]

"Прошу посмотреть правильно ли написан шейпер"  +/
Сообщение от gard (ok) on 27-Янв-14, 20:56 
Здравствуйте!
Решил немного переделать на работе простой шейпер, подскажите верно ли все сделано?

Для начала опишу условия. Есть два интернет-канала: gw1 (12Мбит/с) и gw2 (3Мбит/с). Один канал запасной. Есть интернет-адреса головной организации, трафик от которых не должен быть выдавлен прочим трафиком, идущим через канал. Назову эти адреса "важные адреса". В iptables на трафик ставятся метки:
- 51 - трафик по каналу gw1 от диапазона "важных адресов"
- 52 - весь остальной трафик по каналу gw1 (все кроме трафика с меткой 51)
- 61 - трафик по каналу gw2 от диапазона "важных адресов"
- 62 - весь остальной трафик по каналу gw2 (все кроме трафика с меткой 61)

Кроме раздачи Интернета компьютер выполняет роль файлового хранилища, включенного в локалку гигабитным интерфейсом "lan". Трафик, идущий с интерфейса lan в локальную сеть я и ограничиваю. Сам скрипт шейпера получился такой:

#!/bin/bash

lan_if="lan"
lan_ip="192.168.2.1"
lan_ips="192.168.2.0/24"

gw1_rate="12000"
gw2_rate="3000"

#Удаление имеющихся дисциплин
tc qdisc del dev $lan_if root  > /dev/null 2>&1
tc qdisc del dev $lan_if ingress  > /dev/null 2>&1

#В дефолтный класс в 99% случаев пойдет трафик только через crp-интерфейс
tc qdisc add dev $lan_if root handle 1: htb default 90:
tc class add dev $lan_if parent 1: classid 1:1 htb rate 500mbit

tc class add dev $lan_if parent 1:1 classid 10: htb rate 480mbit ceil 500mbit
tc class add dev $lan_if parent 1:1 classid 20: htb rate ${gw1_rate}kbit
tc class add dev $lan_if parent 1:1 classid 30: htb rate ${gw2_rate}kbit
tc class add dev $lan_if parent 1:1 classid 90: htb rate 5mbit

tc class add dev $lan_if parent 20: classid 20:1 htb rate $[6*$gw1_rate/10]kbit ceil ${gw1_rate}kbit
tc class add dev $lan_if parent 20: classid 20:2 htb rate $[4*$gw1_rate/10]kbit ceil ${gw1_rate}kbit
tc class add dev $lan_if parent 30: classid 30:1 htb rate $[7*$gw2_rate/10]kbit ceil ${gw2_rate}kbit
tc class add dev $lan_if parent 30: classid 30:2 htb rate $[3*$gw2_rate/10]kbit ceil ${gw2_rate}kbit

#На концы классов помещаем sfq-листы
tc qdisc add dev $lan_if parent 20:1 handle 201: sfq perturb 10
tc qdisc add dev $lan_if parent 20:2 handle 202: sfq perturb 10
tc qdisc add dev $lan_if parent 30:1 handle 301: sfq perturb 10
tc qdisc add dev $lan_if parent 30:2 handle 302: sfq perturb 10

#Описание классификаторов
tc filter add dev $lan_if parent 1:1 protocol ip prio 1 u32 match ip src $lan_ip match ip dst $lan_ips flowid 1:10
tc filter add dev $lan_if parent 20: protocol ip prio 2 handle 51 fw flowid 20:1
tc filter add dev $lan_if parent 20: protocol ip prio 4 handle 52 fw flowid 20:2
tc filter add dev $lan_if parent 30: protocol ip prio 3 handle 61 fw flowid 30:1
tc filter add dev $lan_if parent 30: protocol ip prio 5 handle 62 fw flowid 30:2

Верно ли все сделано? Я не очень уверен, что верно задал родителей для фильтров. Протестировать работу пока что не могу, но наваять - наваял.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Прошу посмотреть правильно ли написан шейпер"  +/
Сообщение от gard (ok) on 27-Янв-14, 21:34 
Все таки неправильно я классификаторы написал, их же нужно подсоединять к дисциплине. Получилось так:

#Описание классификаторов
tc filter add dev $lan_if parent 1: protocol ip prio 1 u32 match ip src $lan_ip match ip dst $lan_ips flowid 1:10
tc filter add dev $lan_if parent 1: protocol ip prio 2 handle 51 fw flowid 20:1
tc filter add dev $lan_if parent 1: protocol ip prio 4 handle 52 fw flowid 20:2
tc filter add dev $lan_if parent 1: protocol ip prio 3 handle 61 fw flowid 30:1
tc filter add dev $lan_if parent 1: protocol ip prio 5 handle 62 fw flowid 30:2

Похоже сам на свой вопрос ответил )
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Слёрм
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2020 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру