myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 

> Отдаем Ptokax Гарантированную Часть Интернет Канала, HTB директива и с чем её едят.

Теги
Нет тегов для показа
mariner
сообщение 26.1.2009, 19:34
Сообщение #1


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 865
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 176 раз




Есть такая отличная штука на линукс, как пакет IpRoute2 -> Оффициальный сайт <-
Сейчас данный пакет входит в состав ядра (версия 2.6, в 2.4 его не было, необходимо было накатывать модулем). Так вот, с помошью этого пакета можно задать необходимую вам скорость отдачи данных и\или приема на каждый порт. Задача может быть жесткая (то бишь тока определенная скорость), либо динамическая. Ошишу свою ситуацию - есть хаб, кроме того сервер с хабом раздает файлы по dc++, torrent и http протоколу. И в результате траффик хаба перекрывался другим траффиком (в основном от вэбсервера, что вызывало дикие тормоза чата на хабе). Тогда решил озаботиться этой проблемой и начал "шэйпить" траффик.

Для этого написал скрипт и добавил в автозапуск. Как это сделать не буду писать, ибо это проблемы каждого человека, что и как он будет автозапускать.... bad_smile.gif

Код
#!/bin/bash
# переменные, меняем если надо.
ETHERNET_DEVICE="ppp0" # линк к провайдеру
LINK_SPEED_PROV="100000Kbit" # максимальная скорость по линку
UPLOAD_SPEED1="8000Kbit" # скорость первого типа траффика (это вэбсервер)
UPLOAD_SPEED2="3000Kbit" # скорость второго типа траффика (это хаб)
UPLOAD_SPEED3="9000Kbit" # скорость для остального траффика
PORT1="80" # порт для первого типа
PORT2="411" # порт для второго типа

# удаляем предыдущие фильтры
tc qdisc del dev $ETHERNET_DEVICE root

# создаем корневую маску интерфейса
tc qdisc add dev $ETHERNET_DEVICE root handle 1: htb default 12

# задаем максимальную скорость интерфейса
tc class add dev $ETHERNET_DEVICE parent 1: classid 1:1 htb rate $LINK_SPEED_PROV

# задаем классы "шейпинга"
# тут надо поподробней. Как мы видим, у классвов есть номера. К примеру [b]classid 1:10[/b]
# по ним в дальнейшем будут задаваться вильтры.
# Кроме того, у каждого класса есть rate - это скорость, минимальная для данного класса.
# То есть, при полной занятости канала,  эта скорость будет только у данного типа траффика.
# А вот ceil задает максимально возможную скорость. То есть представьте, что у вас вдруг вырос остальной траффик
#(3ий подвид), а траффика вэбсервера нет или он ниже 8ми мегабит. Тогда остатока канала будет отдан траффику 3его вида.
# И так везде. То есть канал будет максимально забит, но проблем с чатом хаба или отдачей не будет возникать :)
# Добавление: по умолчанию, , если ceil не задан, то ceil=rate! В классах задаются приоритеты - от 0 до 7 (7 - самый низкий)
tc class add dev $ETHERNET_DEVICE parent 1:1 classid 1:10 htb rate $UPLOAD_SPEED1 ceil $LINK_SPEED_PROV prio 1
tc class add dev $ETHERNET_DEVICE parent 1:1 classid 1:11 htb rate $UPLOAD_SPEED2 ceil $LINK_SPEED_PROV prio 0
# create our REST class for unutilized bandwidth
tc class add dev $ETHERNET_DEVICE parent 1:1 classid 1:12 htb rate $UPLOAD_SPEED3 ceil $LINK_SPEED_PROV prio 2

# Задание фильтров и привязка их к нужным портам. Так же здесь задается приоритеты траффика (это цифра после [b]prio[/b])
tc filter add dev $ETHERNET_DEVICE protocol ip parent 1:0 prio 1 u32 match ip sport $PORT1 0xffff flowid 1:10
tc filter add dev $ETHERNET_DEVICE protocol ip parent 1:0 prio 1 u32 match ip sport $PORT2 0xffff flowid 1:11

#Определяем краевые классы.
/sbin/tc qdisc add dev ppp0 parent 1:10 handle 10: pfifo limit 5
/sbin/tc qdisc add dev ppp0 parent 1:11 handle 20: pfifo limit 5
/sbin/tc qdisc add dev ppp0 parent 1:12 handle 30: sfq perturb 10

# Сообщение о завершении работы скрипта.
echo "Shaper loaded!"


Собственно все. Можно добавлять много фильтров. Заметно больше. Можно рулить траффиком компьютеров внутри локальной сети, находящейся за сервером. Но об этом нужно читать на -> Оффициальный сайт <- или тут (по русски)

PS Ну как, полезно? victory.gif

PPS обновил и кое-что добавил
Go to the top of the page
+Quote Post
 
Начать новую тему
Ответов
Jaska
сообщение 26.1.2009, 21:48
Сообщение #2


Освоившийся участник
*****

Группа: Администраторы
Сообщений: 370
Регистрация: 2.6.2008
Из: RB,Ufa
Пользователь №: 8
Спасибо сказали: 92 раза




Спасибо. Именно как раз то что мне надо!
Go to the top of the page
+Quote Post
mariner
сообщение 26.1.2009, 22:15
Сообщение #3


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 865
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 176 раз




как бэ пиши, если чо надо big_smile.gif подскажу ;)
Go to the top of the page
+Quote Post
intlive
сообщение 27.1.2009, 8:46
Сообщение #4


Продвинутый участник
****

Группа: Пользователи
Сообщений: 158
Регистрация: 18.6.2008
Из: подземелье
Пользователь №: 41
Спасибо сказали: 4 раза




А под Win2003 можно трафиком порулить? exciting.gif
Go to the top of the page
+Quote Post
mariner
сообщение 27.1.2009, 13:30
Сообщение #5


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 865
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 176 раз




хз, под венду НИЧЕГО такого не видел. Если и есть программное решение - то скорее всего оно нехило грузит компа и оперативку есть.
Go to the top of the page
+Quote Post
hkk
сообщение 3.2.2009, 18:44
Сообщение #6


Начинающий
*

Группа: Пользователи
Сообщений: 20
Регистрация: 17.11.2008
Пользователь №: 1 123
Спасибо сказали: 0 раз




добрый вечер
подскажите пожалуйста
мне надо ограничить скорость п2п клиента microdc2 порт 16099 - udp

#!/bin/bash
# переменные, меняем если надо.
ETHERNET_DEVICE="eth0" # линк к провайдеру
LINK_SPEED_PROV="1000000Kbit" # максимальная скорость по линку
UPLOAD_SPEED1="8000Kbit" # скорость первого типа траффика (это вэбсервер)
UPLOAD_SPEED2="2000Kbit" # скорость второго типа траффика (это хаб)
UPLOAD_SPEED3="9000Kbit" # скорость для остального траффика
PORT1="80" # порт для первого типа
PORT2="16099" # порт для второго типа

tc qdisc del dev $ETHERNET_DEVICE root

tc qdisc add dev $ETHERNET_DEVICE root handle 1: htb default 12

tc class add dev $ETHERNET_DEVICE parent 1: classid 1:1 htb rate $LINK_SPEED_PROV

tc class add dev $ETHERNET_DEVICE parent 1:1 classid 1:10 htb rate $UPLOAD_SPEED1 ceil $LINK_SPEED_PROV
tc class add dev $ETHERNET_DEVICE parent 1:1 classid 1:11 htb rate $UPLOAD_SPEED2 ceil $LINK_SPEED_PROV

tc class add dev $ETHERNET_DEVICE parent 1:1 classid 1:12 htb rate $UPLOAD_SPEED3 ceil $LINK_SPEED_PROV

tc filter add dev $ETHERNET_DEVICE protocol ip parent 1:0 prio 1 u32 match ip sport $PORT1 0xffff flowid 1:10
tc filter add dev $ETHERNET_DEVICE protocol ip parent 1:0 prio 1 u32 match ip dport $PORT2 0xffff flowid 1:11
tc filter add dev $ETHERNET_DEVICE protocol ip parent 1:0 prio 1 u32 match ip sport $PORT2 0xffff flowid 1:11

echo "Shaper loaded!"

Не работает почемуто..
Ось SLES 10 SP2

uname -a
Linux LuberNETX1 2.6.16.60-0.34-bigsmp #1 SMP Fri Jan 16 14:59:01 UTC 2009 i686 athlon i386 GNU/Linux
Go to the top of the page
+Quote Post
mariner
сообщение 3.2.2009, 19:42
Сообщение #7


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 865
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 176 раз




вроде как бы так... но, у тебя лишний фильтр.
Код
tc filter add dev $ETHERNET_DEVICE protocol ip parent 1:0 prio 1 u32 match ip sport $PORT2 0xffff flowid 1:11

PS а в слесе есть iproute2 ? точнее, он включен или нет? PPS у тя будет 2 мбита на дц.
Go to the top of the page
+Quote Post
hkk
сообщение 3.2.2009, 22:06
Сообщение #8


Начинающий
*

Группа: Пользователи
Сообщений: 20
Регистрация: 17.11.2008
Пользователь №: 1 123
Спасибо сказали: 0 раз




шота не работает...

rpm - q iproute2
iproute2-2.6.25-2.1

как иго включить ?
Go to the top of the page
+Quote Post
mariner
сообщение 3.2.2009, 22:46
Сообщение #9


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 865
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 176 раз




хм, это модуль ядра. посмотри в консоли команду
Код
tc -help
Go to the top of the page
+Quote Post
hkk
сообщение 4.2.2009, 1:48
Сообщение #10


Начинающий
*

Группа: Пользователи
Сообщений: 20
Регистрация: 17.11.2008
Пользователь №: 1 123
Спасибо сказали: 0 раз




Цитата
tc -help
Usage: tc [ OPTIONS ] OBJECT { COMMAND | help }
tc [-force] -batch file
where OBJECT := { qdisc | class | filter | action | monitor }
OPTIONS := { -s[tatistics] | -d[etails] | -r[aw] | -b[atch] [file] }


Модуль присутсвует
Go to the top of the page
+Quote Post
mariner
сообщение 4.2.2009, 2:13
Сообщение #11


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 865
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 176 раз




в таком случае я не знаю, почему не работает. PS а в чем нерабочесть выражается. Вы уж простите за глупый вопрос.
Go to the top of the page
+Quote Post
hkk
сообщение 4.2.2009, 8:55
Сообщение #12


Начинающий
*

Группа: Пользователи
Сообщений: 20
Регистрация: 17.11.2008
Пользователь №: 1 123
Спасибо сказали: 0 раз




запустил тот скрипт, а скорость на 1699 порту (этот порт прописан в настройках дц клиента) не ограничивается. скачана с клиента достигает 8 мегабайт\с
Go to the top of the page
+Quote Post
mariner
сообщение 4.2.2009, 9:37
Сообщение #13


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 865
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 176 раз




посмотрика в iotop iftop откуда реально оно качает. PS этот скрипт для tcp любого порта
и кроме того, почитай повнимательнее описание. думаю поймешь,что надо ceil вконце нужного правила убрать

Кроме того дцшка может сама порты открывать случайные, если она в активе!
Go to the top of the page
+Quote Post
mariner
сообщение 20.4.2009, 13:35
Сообщение #14


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 865
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 176 раз




Прошу. Обновил статейку. Добавить приоритеты к классам. Сделал более мягкие переходы. (для этого в конец добавлены определения краевых классов)
Go to the top of the page
+Quote Post

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No new Topic has attachmentsАтака Интернет канала! Нужна Помощь
17 forZejkee 1 917 20.5.2012, 14:38 Посл. сообщение: lunxTati
No new Topic has attachmentsКак включать скрипты в PtokaX 0.4.1.1
21 pleomax 6 013 13.5.2012, 23:44 Посл. сообщение: Slavich
No New Posts помогите переделать скрипт для Ptokax
7 N3RO 509 9.5.2012, 3:44 Посл. сообщение: Ksan
No new ВАЖНО: Topic has attachmentsPtokaX
Описание. Публикация новых версий
86 Svyat 36 842 8.5.2012, 20:17 Посл. сообщение: Alexey
No New Posts Ledokol for ptokax
12 ke(x)one 604 22.4.2012, 0:11 Посл. сообщение: Alexey
No new ВАЖНО: Topic has attachmentsPtokax Win Gui
Руководство по установке и настройке
70 Svyat 24 783 10.4.2012, 17:09 Посл. сообщение: Артём
No New Posts Topic has attachmentsPtokaX 0.4.2.0 - Падает Хаб! Помогите переделать скрипт...
6 Sergius` 544 3.4.2012, 21:15 Посл. сообщение: PunceR
No New Posts PtokaX на роутере
Установка Ptokax Hub на роутер d-link
5 Skivx 442 25.3.2012, 8:04 Посл. сообщение: mariner
No New Posts Запуск Ptokax от другого пользователя
8 roflDDDD 603 22.3.2012, 17:37 Посл. сообщение: roflDDDD
No New Posts скрыть PtokaX из списка пользователей
4 freman_ 449 7.3.2012, 19:46 Посл. сообщение: freman_
No New Posts PtokaX 0.4.2.0
Не пускает пользователей и даже администрацию
13 Ameet 1 567 27.2.2012, 21:14 Посл. сообщение: dag-m
No new ВАЖНО: Topic has attachmentsСборка Ptokax 0.4.1.1 В Debian & Ubuntu
Руководство по установке
218 mariner 61 062 8.2.2012, 19:50 Посл. сообщение: KT315
No new Topic has attachmentsАнтиреклама для PtokaX
API1, API2 | Скрипт антирекламы для чата и лички
35 Damaks 11 812 7.2.2012, 4:33 Посл. сообщение: Артём
No New Posts ВАЖНО: Сборка хаба PtokaX 0.4.1.2 с поддержкой Lua и luasocket в ОС Solaris 10 x86
Краткое описание сборки PtokaX 0.4.1.2 в ОС Solaris
7 Gatsu 896 2.2.2012, 20:49 Посл. сообщение: Gatsu
No New Posts PtokaX 0.4.2.0 server start failed
11 freman_ 762 1.2.2012, 16:42 Посл. сообщение: freman_

 



RSS Сейчас: 22.5.2012, 16:22