Отдаем Ptokax Гарантированную Часть Интернет Канала, HTB директива и с чем её едят. |
Здравствуйте, гость ( Вход | Регистрация )
Отдаем Ptokax Гарантированную Часть Интернет Канала, HTB директива и с чем её едят. |
26.1.2009, 18:34
Сообщение
#1
|
|
Местная ТехПоддержка Группа: Администраторы Сообщений: 1 875 Регистрация: 18.7.2008 Из: Моск. Обл, г. королев, район Болшево Пользователь №: 221 Спасибо сказали: 220 раз |
Есть такая отличная штука на линукс, как пакет IpRoute2 ->
Сейчас данный пакет входит в состав ядра (версия 2.6, в 2.4 его не было, необходимо было накатывать модулем). Так вот, с помошью этого пакета можно задать необходимую вам скорость отдачи данных и\или приема на каждый порт. Задача может быть жесткая (то бишь тока определенная скорость), либо динамическая. Ошишу свою ситуацию - есть хаб, кроме того сервер с хабом раздает файлы по dc++, torrent и http протоколу. И в результате траффик хаба перекрывался другим траффиком (в основном от вэбсервера, что вызывало дикие тормоза чата на хабе). Тогда решил озаботиться этой проблемой и начал "шэйпить" траффик. Для этого написал скрипт и добавил в автозапуск. Как это сделать не буду писать, ибо это проблемы каждого человека, что и как он будет автозапускать.... Код #!/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 Ну как, полезно? PPS обновил и кое-что добавил |
|
|
26.1.2009, 20:48
Сообщение
#2
|
|
Освоившийся участник Группа: Администраторы Сообщений: 344 Регистрация: 2.6.2008 Из: RB,Ufa Пользователь №: 8 Спасибо сказали: 106 раз |
Спасибо. Именно как раз то что мне надо!
|
|
|
26.1.2009, 21:15
Сообщение
#3
|
|
Местная ТехПоддержка Группа: Администраторы Сообщений: 1 875 Регистрация: 18.7.2008 Из: Моск. Обл, г. королев, район Болшево Пользователь №: 221 Спасибо сказали: 220 раз |
как бэ пиши, если чо надо подскажу ;)
|
|
|
27.1.2009, 7:46
Сообщение
#4
|
|
Продвинутый участник Группа: Пользователи Сообщений: 134 Регистрация: 18.6.2008 Из: подземелье Пользователь №: 41 Спасибо сказали: 7 раз |
А под Win2003 можно трафиком порулить?
|
|
|
27.1.2009, 12:30
Сообщение
#5
|
|
Местная ТехПоддержка Группа: Администраторы Сообщений: 1 875 Регистрация: 18.7.2008 Из: Моск. Обл, г. королев, район Болшево Пользователь №: 221 Спасибо сказали: 220 раз |
хз, под венду НИЧЕГО такого не видел. Если и есть программное решение - то скорее всего оно нехило грузит компа и оперативку есть.
|
|
|
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 |
|
|
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 мбита на дц. |
|
|
3.2.2009, 21:06
Сообщение
#8
|
|
Начинающий Группа: Пользователи Сообщений: 20 Регистрация: 17.11.2008 Пользователь №: 1 123 Спасибо сказали: 0 раз |
шота не работает...
rpm - q iproute2 iproute2-2.6.25-2.1 как иго включить ? |
|
|
3.2.2009, 21:46
Сообщение
#9
|
|
Местная ТехПоддержка Группа: Администраторы Сообщений: 1 875 Регистрация: 18.7.2008 Из: Моск. Обл, г. королев, район Болшево Пользователь №: 221 Спасибо сказали: 220 раз |
хм, это модуль ядра. посмотри в консоли команду
Код tc -help
|
|
|
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] } Модуль присутсвует |
|
|
4.2.2009, 1:13
Сообщение
#11
|
|
Местная ТехПоддержка Группа: Администраторы Сообщений: 1 875 Регистрация: 18.7.2008 Из: Моск. Обл, г. королев, район Болшево Пользователь №: 221 Спасибо сказали: 220 раз |
в таком случае я не знаю, почему не работает. PS а в чем нерабочесть выражается. Вы уж простите за глупый вопрос.
|
|
|
4.2.2009, 7:55
Сообщение
#12
|
|
Начинающий Группа: Пользователи Сообщений: 20 Регистрация: 17.11.2008 Пользователь №: 1 123 Спасибо сказали: 0 раз |
запустил тот скрипт, а скорость на 1699 порту (этот порт прописан в настройках дц клиента) не ограничивается. скачана с клиента достигает 8 мегабайт\с
|
|
|
4.2.2009, 8:37
Сообщение
#13
|
|
Местная ТехПоддержка Группа: Администраторы Сообщений: 1 875 Регистрация: 18.7.2008 Из: Моск. Обл, г. королев, район Болшево Пользователь №: 221 Спасибо сказали: 220 раз |
посмотрика в
и кроме того, почитай повнимательнее описание. думаю поймешь,что надо ceil вконце нужного правила убрать Кроме того дцшка может сама порты открывать случайные, если она в активе! |
|
|
20.4.2009, 12:35
Сообщение
#14
|
|
Местная ТехПоддержка Группа: Администраторы Сообщений: 1 875 Регистрация: 18.7.2008 Из: Моск. Обл, г. королев, район Болшево Пользователь №: 221 Спасибо сказали: 220 раз |
Прошу. Обновил статейку. Добавить приоритеты к классам. Сделал более мягкие переходы. (для этого в конец добавлены определения краевых классов)
|
|
|
Похожие темы
|
Сейчас: 27.11.2024, 2:03 |