Хорошее обьяснение про настройку dummynet

Обсуждение всяких разных новостей.
Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Хорошее обьяснение про настройку dummynet

Непрочитанное сообщение terminus » 2010-02-25 14:09:49

http://freebsd-r16.narod.ru/freebsd/shaper.html

Код: Выделить всё

options DUMMYNET	;Шейпер
options HZ=1000		;Частота системного таймера, (1000=1ms,100=10ms,0=NO!)

net.inet.ip.fw.one_pass: 1	;Заставляет напрямую поток из dummynet идти в большой мир миную
				;последующие правилам фаирвола
net.inet.ip.fw.one_pass: 0	;Заставляет идти выходящий поток из dummynet по ниже стоящим правилам

ipfw pipe NNN config bw B delay D queue Q plr P

NNN		Номер полосы
bw		Ширина полосы					;{K | M}{bit/s | Bytes/s}
delay		Велечина задержки				;(ms)
queue		Размер очереди					;(slots,Bytes)
weight		Вес/приоритет очереди				;( [1..100], default =1! 1-min 100-max )
pipe		Канал для связи с очердью или очередями		;
plr		Доля потеряных пакетов случайным образом	;( 0,0..1,0] 0 =100%pass, 1 =100%reject)
mask		Группировка по маске				;(dst-ip, src-ip, dst-port, src-port, proto, all)
red | gred 	Выполняет алгоритм управления очередью RED	;(w_q/min_th/max_th/max_p)
								;w_q - вес очереди
								;min_th - минимальный порог
								;max_th - максимальный порог
								;max_p - максимальная вероятность отбрасывания пакета
								;w_q и max_p 		( !=0..1] )
								;min_th и max_th	(slots,Bytes)

При использовании алгоритма Random Early Detection (RED): Если уровень перегрузки* находится между 
порогами min_th и max_th, пакеты отбрасываются с линейно возрастающей вероятностью от 0 до max_p, 
которая достигается при достижении второго порога (max_th). Когда перегрузка выше второго порога, 
все пакеты отбрасываются.

При использовании алгоритма Gentle RED (GRED): Если уровень перегрузки* находится между порогами 
min_th и max_th, пакеты отбрасываются с линейно возрастающей вероятностью от 0 до max_p. Когда уровень 
перегрузки больше max_th, но меньше 2*max_th, то пакеты отбрасываются не все, как в случае с RED, а с 
линейно возрастающей вероятностью от max_th до 1. Все пакеты отбрасываются только после превышения 
значения уровня перегрузки канала 2*max_th.

Время заполнения очереди или время задержки при стандартном значении MTU (1500) определяется:

T=(MTU*byte*Q)/L (сек)

где:
MTU 	- значение MTU;
byte 	- 8 бит, чтобы перевести в биты, так как MTU в байтах
Q 	- размер очереди в слотах;
L 	- пробускная способность канала, бит/с.

Получаем что-то типа:
T=(1500*8*Q)/L

Далее, если мы хотим чтобы при канале шириной в 256Kbit/s задержки не привышали 100ms,
можем расчитать Q!

Мой канал 256Kbit/s -> 256*1024bit/s
PPPOE(MTU) 1500 -> 1492
100ms/1000c=0,1ms

Q=(T*L)/(MTU*byte)

Получаем, при <=100ms
Q=(0,1s*262144bit/s)/(1492*8)=26214,4/11936=~2,1=2слота

Получаем, при <=200ms
Q=(0,2s*262144bit/s)/(1492*8)=52428,8/11936=~4,3=4слота

Получаем, при <=500ms
Q=(0,5s*262144bit/s)/(1492*8)=131072/11936=~10,9=10слотов

Получаем, при <=1s
Q=(1s*262144bit/s)/(1492*8)=262144/11936=~21,9=21слот

DUMMYNET позволяет установить очередь до 100 слотов, но
округлем в меньшую сторону, дабы не вылазить за рамки и
не получать отбрасываемых пакетов.

При нашем расчёте время задержки, при <=0,1s:
T=(MTU*byte*Q)/L, при 0,1s;
T=(1492*8*2)/262144=23872/262144=0,091c
при 0,2s;
T=(1492*8*4)/262144=47744/262144=0,182c
при 0,5s;
T=(1492*8*10)/262144=119360/262144=0,455c
при 1s;
T=(1492*8*21)/262144=250656/262144=0,956c

Для алгоритма RED или GRED расчитаем нижний порог:
min_th=(T*L)/(MTU*byte) (слотов)
min_th=(0,1*262144)/(1492*8)=26214,4/11936=~2,1=2слота, как у нас уже расчитано выше.

Теперь расчитаем верхний порог:
max_th=(2..5)*min_th(слотов),возьмём среднее 3
max_th=3*2=6слотов, верхний порог, при задержки в 0,1s
max_th=3*4=12слотов, верхний порог, при задержки в 0,2s
max_th=3*10=30слотов, верхний порог, при задержки в 0,5s
max_th=3*21=63слотa, верхний порог, при задержки в 1s

Далее нам нужно уровень перегрузки канала, при котором все пакеты будут отбрасываться:
Q=2*max_th,
Q=2*6=12слотов, при задержки в 0,1s
Q=2*12=24слотов, при задержки в 0,2s
Q=2*30=60слотов, при задержки в 0,5s
Q=2*63=126слотов, при задержки в 1s - ???Получаем лажу! DUMMYNET способен только на 100слотов

Получаем следующие правила
ipfw pipe 1 config bw 256Kbit/s queue 12 gred 0.002/2/6/0.1
ipfw pipe 2 config bw 256Kbit/s queue 24 gred 0.002/4/12/0.1

ipfw pipe4 config bw 256Kbit/s queue 126 gred 0.002/21/63/0.1 - ?! Но попробовать стоит ж;)
#############################################################
ipfw: 2 <= queue size <= 100 ;Вот такая ругань получилась )))
#############################################################

И три трубы которые принял ipfw образовали:
###########################################################
00001: 256.000 Kbit/s    0 ms   12 sl. 0 queues (1 buckets) 	;Пакеты бьються
  GRED w_q 0.001999 min_th 2 max_th 6 max_p 0.099991
00002: 256.000 Kbit/s    0 ms   48 sl. 0 queues (1 buckets) 	;Средний вариант
  GRED w_q 0.001999 min_th 4 max_th 12 max_p 0.099991
00003: 256.000 Kbit/s    0 ms   60 sl. 0 queues (1 buckets) 	;Слишком большой pipe?!
  GRED w_q 0.001999 min_th 10 max_th 30 max_p 0.099991
###########################################################

Так же можно вполне задать очередь в KBytes не только в слотах
и очередь не должна привышать ширину канала, иначе будет куча
битых пакетов. По советам её бы уменьшить процентов на 5%-10%.
256/8=32Kbytes/s, (32/100%)*5%=3,2=~4Kbytes, 32-4=28Kbytes,
ipfw pipe 1 config bw 256Kbit/s queue 28Kbytes 

Так же окружающие советуют:
w_q=0.002/min_th=(queue/10)/max_th=(3*min_th)/max_p=0.1, при queue 30 слотах

Теперь к экспериментам!
... из всего что я понял и усвоил, я планирую:
1. создать 2 трубы pipe 1,2 и сделать честное деление канала по скорости между 
пользователям, типа: local->GW и GW<-local 

2. создать 2 трубы и сделать 2 очереди для входящего и исходящего траффика 
типа GW->inet и inet<-GW с алгоритмом GRED, для предотвращения перегрузок

Немного схем... ;)
###########################################
	--> in			--> out
[-Л-К-Л-А-]-pipe1-[-c-р-е--]-pipe3-[-И-Е--]
[--О-А-К--]-pipe2-[--e-в-р-]-pipe4-[--Н-Т-]
	<-- out			<-- in
###########################################

Результат при 256Kbit/s
pipe 10 config bw 256Kbit/s queue 12 0.002/2/6/0.1  ~23.29 Kbytes/sec
pipe 10 config bw 256Kbit/s queue 24 0.002/2/8/0.1  ~23.73 Kbytes/sec
pipe 10 config bw 256Kbit/s queue 24 0.002/3/12/0.1 ~26.37 Kbytes/sec
pipe 10 config bw 256Kbit/s queue 30 0.002/3/15/0.1 ~22.24 Kbytes/sec
pipe 10 config bw 256Kbit/s queue 48 0.002/8/24/0.1 ~26.66 Kbytes/sec
pipe 10 config bw 256Kbit/s queue 60 0.002/10/30/0.1 ~27.19 Kbytes/sec
pipe 10 config bw 256Kbit/s queue 100 0.002/33/50/0.1 ~22.99 Kbytes/sec
То что народ насоветовал ;) 
pipe 10 config bw 256Kbit/s queue 30 0.002/3/9/0.1  ~24.46 Kbytes/sec

В итоге написал такие правила:
#################################################################
#BANDWISH (PIPE & QUEUE)

#NO_PASS_ALL_AFTER_BANDWISH
sysctl net.inet.ip.fw.one_pass=0

#FLUSH
ipfw -f flush
ipfw -f pipe flush
ipfw -f queue flush

#CONFIG & ADD RULES
ipfw add pass ip from localhost to localhost via lo0

ipfw pipe 1 config bw 256Kbit/s
ipfw queue 11 config pipe 1 mask src-ip 0xffffffff
ipfw add queue 11 ip from 192.168.0.0/16 to any in via bfe0
ipfw add pass ip from 192.168.0.0/16 to any in via bfe0

ipfw pipe 2 config bw 256Kbit/s
ipfw queue 22 config pipe 2 mask dst-ip 0xffffffff
ipfw add queue 22 ip from any to 192.168.0.0/16 out via bfe0
ipfw add pass ip from 192.168.0.0/16 to any out via bfe0

ipfw pipe 3 config bw 256Kbit/s #queue 60 gred 0.002/10/30/0.1
ipfw add pipe 3 ip from 92.255.254.17 to any out via tun0
ipfw add pass ip from 92.255.254.17 to any out via tun0

ipfw pipe 4 config bw 256Kbit/s #queue 60 gred 0.002/10/30/0.1
ipfw add pipe 4 ip from any to 92.255.254.17 in via tun0
ipfw add pass ip from any to 92.255.254.17 in via tun0
#################################################################

В случае чего можно расскоментировать #queue 60 gred 0.002/10/30/0.1
Для сглаживания шороховатостей, но а пока я не увидел битых пакетов.

gw2# ipfw pipe show
##############################################################################
00001: 256.000 Kbit/s    0 ms   50 sl. 0 queues (1 buckets) droptail
00002: 256.000 Kbit/s    0 ms   50 sl. 0 queues (1 buckets) droptail
00003: 256.000 Kbit/s    0 ms   50 sl. 1 queues (1 buckets) droptail
    mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
  0 udp    92.255.254.17/57095    91.144.152.3/53    5644   533762  0    0   0
00004: 256.000 Kbit/s    0 ms   50 sl. 1 queues (1 buckets) droptail
    mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
  0 udp     91.144.152.3/53      92.255.254.17/57095 6154  7809516  0    0   0
q00022: weight 1 pipe 2   50 sl. 5 queues (64 buckets) droptail
    mask: 0x00 0x00000000/0x0000 -> 0xffffffff/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
 23 ip           0.0.0.0/0       192.168.10.71/0       21     4136  0    0   0
 27 ip           0.0.0.0/0       192.168.1.203/0     7756  8079804  0    0   0
 44 ip           0.0.0.0/0       192.168.5.124/0      385   158515  0    0   0
 47 ip           0.0.0.0/0       192.168.1.255/0       11     1294  0    0   0
 56 ip           0.0.0.0/0       192.168.1.104/0      135    43137  0    0   0
q00011: weight 1 pipe 1   50 sl. 11 queues (64 buckets) droptail
    mask: 0x00 0xffffffff/0x0000 -> 0x00000000/0x0000
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
  4 ip      192.168.1.22/0             0.0.0.0/0        5      541  0    0   0
  8 ip     192.168.1.112/0             0.0.0.0/0        4      476  0    0   0
 12 ip      192.168.1.18/0             0.0.0.0/0        1      229  0    0   0
 16 ip     192.168.5.124/0             0.0.0.0/0      407    30272  0    0   0
 26 ip      192.168.1.25/0             0.0.0.0/0        1      229  0    0   0
 38 ip     192.168.1.103/0             0.0.0.0/0        3      404  0    0   0
 52 ip      192.168.1.14/0             0.0.0.0/0        1      229  0    0   0
 56 ip     192.168.1.104/0             0.0.0.0/0      147    65848  0    0   0
 58 ip       192.168.1.9/0             0.0.0.0/0      223    17556  0    0   0
 60 ip      192.168.1.10/0             0.0.0.0/0        1      234  0    0   0
 62 ip     192.168.1.203/0             0.0.0.0/0     5775   833667  0    0   0
##############################################################################

Продолжение с поправкой... с перемусоливанием выше изложенного.

http://rrv.jino-net.ru/wiki/index.php/QoS_FreeBSD
Для лучшего понимания что к чему... Взято по ссылке и отдельное спасибо 
Николаю Ананину за некое объяснение непонятных мною моментов в расчётах.

И так в моём случае с каналом в 256Kbit/s:
QUEUE_TOTA L= MTU*QUEUE_SIZE = (1492*8)*50 = 11936*50 = 596800 бит
где,
MTU = 1492 байт * 8 = 11936 бит
QUEUE_SIZE = количество слотов(пакетов) или байтах (по умолчанию 50)

Время задержки получаем из
T = QUEUE_SIZE/BANDWIDTH = 596800/262144 = ~2,276 секунды. 
где,
BANDWIDTH = 256 * 1024 = 262144 бит

НО! ~2 сек. слишком большая задержка, нам нужно хотябы 0,5 сек.
~2 сек / 0,5 сек = 4
Наш QUEUE_SIZE = 50 / 4 = 12,5 = ~12 слотов для задержки в 0,5 сек.

Можем даже больше. Можем расчитать gred:
max_th = 12/2 = 6
min_th = 6/3 = 2

Получаем правила:
ipfw pipe 1 config bw 256Kbit/s queue 12
ipfw queue 1 config pipe 1 mask dst-ip 0xffffffff
ipfw add queue 1 ip from any to 192.168.0.0/16 out via bfe0
ipfw add pass ip from 192.168.0.0/16 to any out via bfe0

Или правила с gred:
ipfw pipe 1 config bw 256Kbit/s queue 12 gred 0.002/2/6/0.1
ipfw queue 1 config pipe 1 mask dst-ip 0xffffffff
ipfw add queue 1 ip from any to 192.168.0.0/16 out via bfe0
ipfw add pass ip from 192.168.0.0/16 to any out via bfe0

Промежуточный вариант... плох... в нём нету pipe не умеет weight
ipfw pipe 1 config bw 256Kbit/s mask dst-ip 0xffffffff queue 12 gred 0.002/2/6/0.1
ipfw add pipe 1 ip from any to 192.168.0.0/16 out via bfe0

Остановился на этом. ж;)
ipfw pipe 1 config bw 256Kbit/s
ipfw queue 1 config pipe 1 weight 50 mask dst-ip 0xffffffff queue 12 gred 0.002/2/6/0.1
ipfw add queue 1 ip from any to 192.168.0.0/16 out via bfe0
ipfw add pass ip from any to 192.168.0.0/16 out via bfe0

Работает как часы!
Всё можно глядеть чрез iftop
sh# iftop -i bfe0
                                   195Kb                               391Kb                               586Kb                               781Kb                          977Kb
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
gw2.fortd.ru                                                                => 192.168.5.124                                                                 118Kb   128Kb   125Kb
gw2.fortd.ru                                                                => 192.168.5.38                                                                  127Kb   122Kb   125Kb
gw2.fortd.ru                                                                => blackhole.fortd.ru                                                              0b      0b    113b
gw2.fortd.ru                                                                => 192.168.5.85                                                                    0b      0b     58b
192.168.1.255                                                               => 192.168.1.203                                                                   0b      0b      0b
192.168.1.255                                                               => 192.168.1.9                                                                     0b      0b      0b
255.255.255.255                                                             => 169.254.2.2                                                                     0b      0b      0b

???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
TX:             cumm:  16.7MB   peak:    253Kb                                                                                                     rates:    245Kb   250Kb   250Kb
RX:                     953KB           13.1Kb                                                                                                              5.55Kb  5.91Kb  6.92Kb
TOTAL:                 17.6MB            263Kb                                                                                                               251Kb   256Kb   257Kb

Наконец-то канал поделился как хотелось!!!
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35456
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: Хорошее обьяснение про настройку dummynet

Непрочитанное сообщение Alex Keda » 2010-05-10 12:10:59

это типа на память или что?
Убей их всех! Бог потом рассортирует...


Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Хорошее обьяснение про настройку dummynet

Непрочитанное сообщение terminus » 2010-05-23 23:32:45

gonzo111_ писал(а):+1000 terminus
пихай в статьи :smile:
Это не мое. По ссылке оригинал.
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
gonzo111
лейтенант
Сообщения: 648
Зарегистрирован: 2007-11-15 16:32:33
Откуда: China
Контактная информация:

Re: Хорошее обьяснение про настройку dummynet

Непрочитанное сообщение gonzo111 » 2010-05-25 9:48:16

тут она затеряется
в статье укать автора и источник и
вуаля :smile:
Тяжело в учении легко в РАЮ!
беру зарплату гречкой и сахаром...
Наша комната - lissyara.su@conference.jabber.ru

Аватара пользователя
gonzo111
лейтенант
Сообщения: 648
Зарегистрирован: 2007-11-15 16:32:33
Откуда: China
Контактная информация:

Re: Хорошее обьяснение про настройку dummynet

Непрочитанное сообщение gonzo111 » 2010-05-26 11:31:36

to terminus че то я не вкурил есть ли в DUMMYNET аналог ALTQ -

Код: Выделить всё

 borrow - эта очередь может заимствовать пропускную способность у других очереди. 
типа остальные могут юзать чужую ширину канала если она не используется

короче мне не надо ничего резать, а просто
зарезервировать канал под rdp с моего ip к удаленному хосту канал 128к с режимом borrow
....как сделать? :smile:
Тяжело в учении легко в РАЮ!
беру зарплату гречкой и сахаром...
Наша комната - lissyara.su@conference.jabber.ru

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Хорошее обьяснение про настройку dummynet

Непрочитанное сообщение terminus » 2010-05-26 11:37:22

Насколько я знаю Луиджи сейчас активно пилит это дело. Может в каренте уже есть...
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Хорошее обьяснение про настройку dummynet

Непрочитанное сообщение terminus » 2010-05-26 11:54:38

Во:
http://www.fosslc.org/drupal/content/ne ... re-freebsd
Historically, FreeBSD has had two packet scheduling options: AltQ, which can do output scheduling using the network card as a transmission clock, and "dummynet", which was born as a link emulator but also included one scheduling algorithm.

We have recently made an almost complete rewrite of dummynet to support multiple scheduling algorithms, so that users can pick the ones that fit best their needs. In the process, we also performed a thorough performance analysis of the tool, so now users can make more informed choices on how to configure their packet scheduling/shaping architecture and on which tradeoffs are involved.

In this talk we will make the following contributions:

1. describe the internal architecture of the new version of "dummynet", and the API used by the loadable packet schedulers;
2. give a "user view" of the new features made available by this updated version of dummynet;
3. briefly discuss the theory behind packet scheduling, and show how different solutions expose different tradeoffs betweeen service properties, guarantees and run-time complexity;
4. show a number of examples and experiments, running real code from the SVN tree, to demonstrate that the (apparently dry) theory discussed in #3 has actual implications in practice.
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
gonzo111
лейтенант
Сообщения: 648
Зарегистрирован: 2007-11-15 16:32:33
Откуда: China
Контактная информация:

Re: Хорошее обьяснение про настройку dummynet

Непрочитанное сообщение gonzo111 » 2010-05-26 11:55:36

жалко что нету плак-плак :sorry:
а юзать каррент можно только дома, на работе не поставишь же на шлюз

точно нету?... тут вот трут о чем то
Все это можно сделать с dummynet, там нет только приоритетов, которые, впрочем,
в altq использовать не рекомендуют (и небезосновательно).
Даже borrow можно сделать. :)
Этож обычные firewall-правила, как хочешь, так и верти. :)
http://www.opennet.ru/base/net/altq.txt.html

скриптом что ли..?... и приоритеты вроде есть...
Тяжело в учении легко в РАЮ!
беру зарплату гречкой и сахаром...
Наша комната - lissyara.su@conference.jabber.ru

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Хорошее обьяснение про настройку dummynet

Непрочитанное сообщение terminus » 2010-05-26 11:57:56

на pf знаю можно, но не знаю как - не использую.
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

Аватара пользователя
gonzo111
лейтенант
Сообщения: 648
Зарегистрирован: 2007-11-15 16:32:33
Откуда: China
Контактная информация:

Re: Хорошее обьяснение про настройку dummynet

Непрочитанное сообщение gonzo111 » 2010-05-26 12:09:32

понятно что если юзать pf то там уже можно настроить altq

я так понимаю dummynet есть только на ipfw
и в цитате речь ишла о том что можно именно его средствами
Тяжело в учении легко в РАЮ!
беру зарплату гречкой и сахаром...
Наша комната - lissyara.su@conference.jabber.ru

Аватара пользователя
freeman
лейтенант
Сообщения: 734
Зарегистрирован: 2007-03-18 5:13:25

Re: Хорошее обьяснение про настройку dummynet

Непрочитанное сообщение freeman » 2010-05-27 8:21:03

terminus писал(а):на pf знаю можно, но не знаю как - не использую.
Ну об этом наверху и написано же как :)
И все я так думаю используют, кому надо использовать всю оплаченную полосу пропускания, а не тупо резать 256 и выше низзя.
Остатся должен только один ...

Аватара пользователя
freeman
лейтенант
Сообщения: 734
Зарегистрирован: 2007-03-18 5:13:25

Re: Хорошее обьяснение про настройку dummynet

Непрочитанное сообщение freeman » 2010-05-27 8:32:01

gonzo111 писал(а):
Все это можно сделать с dummynet, там нет только приоритетов, которые, впрочем,
в altq использовать не рекомендуют (и небезосновательно).
.....
http://www.opennet.ru/base/net/altq.txt.html

скриптом что ли..?... и приоритеты вроде есть...
Не знаю что там небезосновательно, но они и есть и юзаются активно в PF активно даже с cbq очередями с borrow и т.д. Это в сумме даёт 3х уровневую вложенность правил с такой управляемостью, что даже не знаю чего PF не может сделать.

Вы обсуждаете разные фаерволы, IPFW для провов говнолокалок (потому что крупные у нас на CISCO по переводили), где надо клиенту зарезать скорость скажем согласно купленным 256кб/с. Максимум что там можно сделать, так скриптами смотреть кол-во клиентов и переписывать правила под конкретную ситуацию, скажем кол-во пользователей. С PF же это возможно будет гораздо больший геморрой, так как юзать правила ALTQ как якоря ;) админы/PF не умеет.
Ну а если заранее примерно известен хоть порядок цифр на задачу, то для офиса или домашней локалки гибче ALTQ в PF нет.
p.s. итого нефиг сравнивать ALTQ в PF с dummynet в IPFW, это разные вещи.
Остатся должен только один ...

Аватара пользователя
gonzo111
лейтенант
Сообщения: 648
Зарегистрирован: 2007-11-15 16:32:33
Откуда: China
Контактная информация:

Re: Хорошее обьяснение про настройку dummynet

Непрочитанное сообщение gonzo111 » 2010-08-27 12:00:03

to terminus
Далее нам нужно уровень перегрузки канала, при котором все пакеты будут отбрасываться:
Q=2*max_th,
Q=2*6=12слотов, при задержки в 0,1s
Q=2*12=24слотов, при задержки в 0,2s
Q=2*30=60слотов, при задержки в 0,5s
Q=2*63=126слотов, при задержки в 1s - ???Получаем лажу! DUMMYNET способен только на 100слотов

Получаем следующие правила
ipfw pipe 1 config bw 256Kbit/s queue 12 gred 0.002/2/6/0.1
ipfw pipe 2 config bw 256Kbit/s queue 24 gred 0.002/4/12/0.1

ipfw pipe4 config bw 256Kbit/s queue 126 gred 0.002/21/63/0.1 - ?! Но попробовать стоит ж;)
#############################################################
ipfw: 2 <= queue size <= 100 ;Вот такая ругань получилась )))
#############################################################
что то я не вкурил
ipfw pipe 1 config bw 256Kbit/s queue 12 gred 0.002/2/6/0.1
(w_q/min_th/max_th/max_p) где они взяли 0.002 и 0.1 ????
Тяжело в учении легко в РАЮ!
беру зарплату гречкой и сахаром...
Наша комната - lissyara.su@conference.jabber.ru

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Хорошее обьяснение про настройку dummynet

Непрочитанное сообщение terminus » 2010-08-27 14:42:57

(w_q/min_th/max_th/max_p) где они взяли 0.002 и 0.1 ????
http://forum.lissyara.su/viewtopic.php? ... et#p183402
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

mediamag
лейтенант
Сообщения: 693
Зарегистрирован: 2008-10-02 20:49:21

Re: Хорошее обьяснение про настройку dummynet

Непрочитанное сообщение mediamag » 2010-09-22 11:09:38

на самом деле есть непонятки из статьи выше, я так понял там 2 человека рассказывают про очереди. Первый чел приводит пример

Код: Выделить всё

ipfw pipe 3 config bw 256Kbit/s queue 60 gred 0.002/10/30/0.1
и считает его наилучшим, второй чел приводит пример

Код: Выделить всё

ipfw queue 1 config pipe 1 weight 50 mask dst-ip 0xffffffff queue 12 gred 0.002/2/6/0.1
и считает его лучшим. Так кто же верно расчитал gred и queue для 256 канала????

daemon
рядовой
Сообщения: 34
Зарегистрирован: 2009-12-21 11:49:15

Re: Хорошее обьяснение про настройку dummynet

Непрочитанное сообщение daemon » 2010-10-13 13:06:36

А если канал более толстый, например 4000Kbit, получаем:
Q при <=100ms
Q=34 слота
...
T при <=0.1s
T=0,099
...
min_th= также 34 слота
max_th= при значении 3 при 0.1с равняется 102 слота
если брать задержки 200мс 500мс 1с получаем max_th= 204 513 1029
Q=2*63=126слотов, при задержки в 1s - ???Получаем лажу! DUMMYNET способен только на 100слотов
тут вобщем при минимуме уже лажа, в примере лажа только на 1с задержках, как быть?
В данном примере можно конечно max_th= посчитать как 2х34=68 слотов при 0.1с
при 0.2 получим 136 слотов, что тоже лажа, из цитаты DUMMYNET способен только на 100слотов
Не очень понятный момент с толстым каналом.

mediamag
лейтенант
Сообщения: 693
Зарегистрирован: 2008-10-02 20:49:21

Re: Хорошее обьяснение про настройку dummynet

Непрочитанное сообщение mediamag » 2010-10-13 14:58:09

вот нарыл еще пояснение про расчет gred http://osboy.blog.ru/tag/gred там немного рассказывается про "толстый" и "тонкий" канал

ivan__
сержант
Сообщения: 234
Зарегистрирован: 2009-08-11 15:48:32
Откуда: Питер

Re: Хорошее обьяснение про настройку dummynet

Непрочитанное сообщение ivan__ » 2010-10-21 15:44:16

А почему в расчетах не учитывается частота системного таймера HZ? Она же должна каким то образом влиять на задержку?

mediamag
лейтенант
Сообщения: 693
Зарегистрирован: 2008-10-02 20:49:21

Re: Хорошее обьяснение про настройку dummynet

Непрочитанное сообщение mediamag » 2010-10-21 16:43:26

про HZ где то читал, что 1000 это рекомендуемое значение по умолчанию (встречал в примерах 2000, не помню правда по какому поводу). На фрез 8,0 и 8,1 рекомендуют 2000-4000, там какой то косяк нашли с dummynet...вообщем если погуглить, то всего немеряно можно найти. Я кстати остановился вот на таких очередях

Код: Выделить всё

$fwcmd pipe 1 config bw 3840Kbit/s queue 300kbytes
$fwcmd pipe 2 config bw 930Kbit/s queue 110kbytes

$fwcmd queue 1 config pipe 1 queue 300Kbytes gred 0.002/50Kbytes/150Kbytes/0.1 mask dst-ip 0xffffffff
$fwcmd queue 2 config pipe 2 queue 110Kbytes gred 0.002/18Kbytes/55Kbytes/0.1 mask src-ip 0xffffffff

$fwcmd add 1 queue 1 ip from any to "table(7)" out
$fwcmd add 2 queue 2 ip from "table(7)" to not me in
в килобайтах, мне лично, считать лучше и к тому же если писать очереди в килобайтах, то они становятся независимы от MTU сетевой

mediamag
лейтенант
Сообщения: 693
Зарегистрирован: 2008-10-02 20:49:21

Re: Хорошее обьяснение про настройку dummynet

Непрочитанное сообщение mediamag » 2010-11-09 14:48:37

ну всё понял по статье, кроме одного..как чел расчитал вот это:

Код: Выделить всё

pipe 10 config bw 256Kbit/s queue 60 0.002/10/30/0.1 ~27.19 Kbytes/sec
Откуда он взял 27,19 ?????