myDC.ru

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

 

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

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


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

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




Есть такая отличная штука на линукс, как пакет 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, 20:48
Сообщение #2


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

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




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


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

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




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


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

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




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


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

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




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


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

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




вроде как бы так... но, у тебя лишний фильтр.
Код
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, 21: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, 21:46
Сообщение #9


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

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




хм, это модуль ядра. посмотри в консоли команду
Код
tc -help
Go to the top of the page
+Quote Post
hkk
сообщение 4.2.2009, 0: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, 1:13
Сообщение #11


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

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




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


Начинающий
*

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




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


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

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




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

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


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

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




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

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

Collapse

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

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts Перехват выполнения бана(ов) PtokaX
Возможно ли?
0 MIKHAIL 861 1.8.2022, 10:31 Посл. сообщение: MIKHAIL
No new Topic has attachmentsУстановка хаба PtokaX 0.5.2.2 на роутер под прошивкой LEDE 2017
DC++ сервер в роутере
15 мамин_парень 16 673 29.1.2021, 8:02 Посл. сообщение: мамин_парень
No new ВАЖНО: Topic has attachmentsPtokaX 0.5.0.1 Mod
Модификация PtokaX от alex82
112 alex82 101 737 13.9.2019, 17:57 Посл. сообщение: CyberGhost404
No new Topic has attachmentsPtokaX 0.5.2.1 Mod
Модификация PtokaX от alex82
17 alex82 20 689 22.8.2019, 12:27 Посл. сообщение: SergSat
No New Posts Ptokax 0.5.0.2
Crash-14.11.2014-01.11.48.log
8 Drakula 12 406 6.6.2019, 15:09 Посл. сообщение: avalon
No New Posts Topic has attachmentsПрошивка LEDE 17.01.4 для 740n v4,v5 c PtokaX 0.5.0.1
Готовая прошивка с поддержкой сервера DC++, все влезло в 4мб ))
1 мамин_парень 5 893 10.3.2018, 15:29 Посл. сообщение: мамин_парень
No New Posts Ptokax, opendchub (DC++) - Сборка пакета для OpenWRT, LEDE 2017
Пакеты хабов для прошивки роутера
0 мамин_парень 5 163 29.8.2017, 7:00 Посл. сообщение: мамин_парень
No new Topic has attachmentsАнтиреклама для PtokaX
API1, API2 | Скрипт антирекламы для чата и лички
39 Damaks 54 115 9.8.2017, 14:26 Посл. сообщение: Ksan
No new ВАЖНО: Topic has attachmentsPtokaX
Описание. Публикация новых версий
94 Svyat 180 157 11.4.2017, 23:08 Посл. сообщение: Alexey
No new Topic has attachmentsPtokaX в OpenWrt (Linux)
Ребята как собрать под эту систему?
21 мамин_парень 27 706 10.4.2017, 15:19 Посл. сообщение: мамин_парень
No New Posts Автозапуск PtokaX на Rassberry Pi?
Не могу запустить
13 Sezam 14 347 7.11.2016, 9:14 Посл. сообщение: Saymon21
No New Posts Доска обьявлений для Ptokax 0.5.0.x
3 NightmareUA 7 944 11.8.2016, 16:22 Посл. сообщение: Ksan
No New Posts FreeBSD 11.0 & PtokaX
Проблема подключения в клиенте PtokaX по имени
5 nsd7 8 246 22.4.2016, 3:47 Посл. сообщение: Saymon21
No New Posts От: PtokaX 0.5.2.1 Mod
От темы с ID: 5784
0 Alexey 4 180 21.4.2016, 18:16 Посл. сообщение: Alexey
No New Posts Перенос базы пользователей с RusHub на PtokaX
3 Angel_D 8 263 5.12.2015, 2:11 Посл. сообщение: Saymon21

 



RSS Сейчас: 29.3.2024, 12:11