Статьи Галерея Форум Чат Файлы HowTo Ссылки Поиск
Текущее время: 20 июн 2019, 05:30




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
СообщениеДобавлено: 13 апр 2009, 12:55 
Неотъемлемая часть форума
Аватара пользователя

У нас с: 06.02.2002
Сообщения: 9760
Откуда: Менск
Добрый день.
В более-менее последних ядрах появилась альтернатива ESFQ в виде внешнего классификатора для SFQ.

Вот кусочек шейпера с ESFQ:

Код:
/opt/sbin/tc qdisc del dev eth2 root
/opt/sbin/tc qdisc add dev eth2 root handle 1 htb default 50 r2q 10
/opt/sbin/tc class add dev eth2 parent 1: classid 1:2 htb rate 100Mbit

/opt/sbin/tc class add dev eth2 parent 1:2 classid 1:20 htb rate 200Kbit ceil 100Mbit prio 10
/opt/sbin/tc qdisc add dev eth2 parent 1:20 handle 20 esfq perturb 10 hash dst
/opt/sbin/tc filter add dev eth2 parent 1:0 protocol ip prio 100 u32 match ip sport 22 0xffff classid 1:20

~skip~

/opt/sbin/tc class add dev eth2 parent 1:2 classid 1:50 htb rate 85Mbit ceil 100Mbit prio 50
/opt/sbin/tc qdisc add dev eth2 parent 1:50 handle 50 esfq perturb 10 hash dst


Вот аналог придуманный мною для SFQ/flow:

Код:
/sbin/tc qdisc del dev eth2 root
/sbin/tc qdisc add dev eth2 root handle 1 htb default 50 r2q 10

/sbin/tc class add dev eth2 parent 1: classid 1:2 htb rate 100Mbit

/sbin/tc class add dev eth2 parent 1:2 classid 1:20 htb rate 200Kbit ceil 100Mbit prio 10
/sbin/tc qdisc add dev eth2 parent 1:20 handle 20 sfq
/sbin/tc filter add dev eth2 parent 1:0 protocol ip prio 100 u32 match ip sport 22 0xffff classid 1:20
/sbin/tc filter add dev eth2 parent 20: protocol ip handle 20 flow hash keys nfct-dst divisor 1024


/sbin/tc class add dev eth2 parent 1:2 classid 1:50 htb rate 85Mbit ceil 100Mbit prio 50
/sbin/tc qdisc add dev eth2 parent 1:50 handle 50: sfq
/sbin/tc filter add dev eth2 parent 50: protocol ip handle 50 flow hash keys nfct-dst divisor 1024


Синтаксис верный, но - не работает. Через какое-то время пакеты теряются до полной непроходимости.
Документации по flow я не обнаружил и плохова-то понимаю как действует фильтр на дисциплину...

_________________
Опыт растет прямо пропорционально выведенному из строя оборудованию


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
СообщениеДобавлено: 21 сен 2010, 23:40 
Неотъемлемая часть форума
Аватара пользователя

У нас с: 25.08.2002
Сообщения: 425
Откуда: Minsk
Я, конечно, очень вовремя отвечаю, но пусть будет, в назидание потомкам и самому себе, когда забуду:

Проблема с пропаданием пакетов вызвана тем, что в дефолтный класс (в примере --- 1:50) направляются ВСЕ пакеты. ВСЕ --- в том числе и ARP. Затем, если мы повесили фильтр на дисциплину, но этот фильтр не пропускает ARP-пакеты, то имеем вышеописанное. Соответственно, надо либо выкинуть из определения корневой дисциплины класс по умолчанию (следя, чтобы ни один фильтр не сматчил ARP-пакеты, и чтобы на все нужные нам пакеты находился свой фильтр), либо высокоприоритетным фильтром направить их в какой-либо высокоскоростной класс. Второе мне не удалось, хотя вот здесь есть пример, который у меня не заработал: http://yesican.chsoft.biz/lartc/arp.html .

_________________
"Но в декабре я по ошибке позвонил вместо
модема на винчестер." (Linus Torvalds, "Just for fun")


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
СообщениеДобавлено: 05 фев 2011, 12:35 
Заглянувший

У нас с: 05.02.2011
Сообщения: 1
Тут дело в том что не поздно писать, действительно инфы мало по этому поводу в интернете , поэтому для все трудящихся выкладываю что у меня получилось :)

P.S
И было бы неплохо в этой теме о параметре делителя divisor 1024 поговорить

#! /bin/bash
# modprobe ifb
ipt=/sbin/iptables
ipr=/sbin/tc
$ipt -F -t mangle
dev_in=eth2
down=10mbit

$ipr qdisc del dev $dev_in root &> /dev/null

$ipr qdisc add dev $dev_in root handle 1: htb default 99
$ipr class add dev $dev_in parent 1: classid 1:1 htb rate $down burst 250k

################################## ARP ####################################################################################

$ipr class add dev $dev_in parent 1:1 classid 1:2 htb rate 100kbps ceil $down burst 150k prio 0
$ipr qdisc add dev $dev_in parent 1:2 handle 2: sfq perturb 10
$ipr filter add dev $dev_in protocol ip parent 1:0 prio 2 handle 2 fw flowid 1:2
$ipr filter add dev $dev_in parent 1:2 protocol all prio 2 u32 match u16 0x0806 0xffff at -2 flowid 1:2

########### Jek там в примере ошибка вместо protocol ip ------ protocol all надо поставить

################################# default 99 ################################################################################

$ipr class add dev $dev_in parent 1:1 classid 1:99 htb rate 56kbps ceil $down burst 150k prio 7
$ipr qdisc add dev $dev_in parent 1:99 handle 99: sfq perturb 5
$ipr filter add dev $dev_in protocol ip parent 1:0 prio 1 handle 99 fw flowid 1:99
$ipr filter add dev $dev_in parent 1:99 protocol ip handle 99 flow hash keys nfct-dst divisor 1024 baseclass 1:99

################################ dns SYN,RST,ACK - ICMP ##########################################################################

$ipt -t mangle -A POSTROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK ACK -m length --length :64 -j MARK --set-mark 3
$ipt -t mangle -A POSTROUTING -p tcp --syn -m length --length 40:68 -j MARK --set-mark 3
$ipt -t mangle -A POSTROUTING -p tcp --tcp-flags ALL SYN,ACK -m length --length 40:68 -j MARK --set-mark 3
$ipt -t mangle -A POSTROUTING -p tcp --tcp-flags ALL ACK -m length --length 40:100 -j MARK --set-mark 3
$ipt -t mangle -A POSTROUTING -p tcp --tcp-flags ALL RST -j MARK --set-mark 3
$ipt -t mangle -A POSTROUTING -p tcp --tcp-flags ALL ACK,RST -j MARK --set-mark 3
$ipt -t mangle -A POSTROUTING -p tcp --tcp-flags ALL ACK,FIN -j MARK --set-mark 3
$ipt -t mangle -A POSTROUTING -p icmp -m length --length 28:1500 -m limit --limit 2/s --limit-burst 5 -j MARK --set-mark 3
$ipt -t mangle -A POSTROUTING -p icmp -j MARK --set-mark 3
$ipt -t mangle -A POSTROUTING -p tcp --dport 53 -j MARK --set-mark 3
$ipt -t mangle -A POSTROUTING -p tcp --sport 53 -j MARK --set-mark 3
$ipt -t mangle -A POSTROUTING -p udp --dport 53 -j MARK --set-mark 3
$ipt -t mangle -A POSTROUTING -p udp --sport 53 -j MARK --set-mark 3

$ipr class add dev $dev_in parent 1:1 classid 1:3 htb rate 80kbps ceil 1mbit burst 1k prio 1
$ipr qdisc add dev $dev_in parent 1:3 handle 3: pfifo
$ipr filter add dev $dev_in protocol ip parent 1:0 prio 1 handle 3 fw flowid 1:3

################################## ssh ##################################################################################

$ipt -t mangle -A POSTROUTING -p tcp --sport 22 -j MARK --set-mark 4
$ipt -t mangle -A POSTROUTING -p tcp --dport 22 -j MARK --set-mark 4
$ipt -t mangle -A POSTROUTING -p tcp --sport 222 -j MARK --set-mark 4
$ipt -t mangle -A POSTROUTING -p tcp --dport 222 -j MARK --set-mark 4

$ipr class add dev $dev_in parent 1:1 classid 1:4 htb rate 30kbps ceil $down burst 15k prio 2
$ipr qdisc add dev $dev_in parent 1:4 handle 4: sfq perturb 10
$ipr filter add dev $dev_in protocol ip parent 1:0 prio 1 handle 4 fw flowid 1:4
$ipr filter add dev $dev_in parent 1:4 protocol ip handle 4 flow hash keys nfct-dst divisor 1024 baseclass 1:4

################################## CS ###################################################################################

$ipt -t mangle -A POSTROUTING -p udp --dport 27015 -j MARK --set-mark 5
$ipt -t mangle -A POSTROUTING -p udp --dport 27016 -j MARK --set-mark 5
$ipt -t mangle -A POSTROUTING -p tcp --dport 27018 -j MARK --set-mark 5

$ipr class add dev $dev_in parent 1:1 classid 1:5 htb rate 30kbps ceil $down burst 15k prio 3
$ipr qdisc add dev $dev_in parent 1:5 handle 5: sfq perturb 10
$ipr filter add dev $dev_in protocol ip parent 1:0 prio 1 handle 5 fw flowid 1:5
$ipr filter add dev $dev_in parent 1:5 protocol ip handle 5 flow hash keys nfct-dst divisor 1024 baseclass 1:5

################################## WEB VPN #####################################################################################

$ipt -t mangle -A POSTROUTING -p tcp -m tcp --sport 80 -j MARK --set-mark 6
$ipt -t mangle -A POSTROUTING -p tcp -m tcp --dport 80 -j MARK --set-mark 6
$ipt -t mangle -A POSTROUTING -p tcp --sport 443 -j MARK --set-mark 6 # https
$ipt -t mangle -A POSTROUTING -p tcp --dport 443 -j MARK --set-mark 6 # https
$ipt -t mangle -A POSTROUTING -p tcp -m tcp --dport 1723 -j MARK --set-mark 6
$ipt -t mangle -A POSTROUTING -p tcp -m tcp --dport 1722 -j MARK --set-mark 6

$ipr class add dev $dev_in parent 1:1 classid 1:6 htb rate 30kbps ceil $down burst 15k prio 4
$ipr qdisc add dev $dev_in parent 1:6 handle 6: sfq perturb 10
$ipr filter add dev $dev_in protocol ip parent 1:0 prio 1 handle 6 fw flowid 1:6
$ipr filter add dev $dev_in parent 1:6 protocol ip handle 6 flow hash keys nfct-dst divisor 1024 baseclass 1:6


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
СообщениеДобавлено: 02 мар 2011, 23:56 
Интересующийся
Аватара пользователя

У нас с: 22.09.2007
Сообщения: 40
Откуда: Minsk
Немного усложнил себе задачу:
на интерфейсе eth1 хочу порезать входящий инет (для eth1 это исходящий), а также и локальный траффик (ftp, samba, etc). RDP на VBox заметно притормаживает.

Как я делал: на корневую дисциплину поставил ограничение 200mbit, для интернет траффика создал отдельные классы, для них выставил 90% от ширины канала (ну это пока неважно), и этому траффику поставил повыше приоритет. Для RDP повесил:
Код:
$TC class add dev $DEV_OUT parent 1:1 classid 1:2 htb rate ${RATE_OUT}kbit ceil $[$RATE_OUT/100]mbit prio 0

или в статистике:
Код:
class htb 1:2 parent 1:1 leaf 2: prio 0 rate 200000bit ceil 2000Kbit burst 1599b cburst 1600b
 Sent 531864 bytes 403 pkt (dropped 0, overlimits 0 requeues 0)
 rate 227448bit 22pps backlog 0b 0p requeues 0
 lended: 100 borrowed: 303 giants: 0
 tokens: -277915 ctokens: -55091

Но задержки есть (хотя повышением приоритета добился их уменьшение).
Так вот, можно ли сделать так, чтобы некоторый локальный траффик шел с минимальными задержками (а лучше вообще без них), а другой ограничить?
Есть идеи?


Вернуться к началу
 Не в сети Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
[ All resources are available under GNU GPL ] [ Support ] [ Hosted by DataHata | MyCloud.by ] [ Powered by phpBB® Forum Software © phpBB Group ]

LVEE Winter LVEE Rambler's Top100