Страница 1 из 1

Dummynet

Добавлено: 2009-08-11 16:36:39
ivan__
Прочитал статью http://www.lissyara.su/?id=1967. Появился вопрос, анологична ли такая запись

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

pipe 1 config bw 10Mbit/s queue 60 gred 0.002/10/30/0.1
queue 1 config pipe 1 mask src-ip 0xffffffff queue 60 gred 0.002/10/30/0.1
с такой

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

pipe 1 config bw 10Mbit/s  mask src-ip 0xffffffff queue 60 gred 0.002/10/30/0.1 
И для чего одну очередь направляют в трубу?

Re: Dummynet

Добавлено: 2009-08-11 16:50:53
terminus
Не аналогично.

В первом примере создаются динамические очереди (для каждого IP отправителя своя), а потом все эти созданные очереди заводятся в одну 10 мбит трубу. Это дает возможность зарезать скорость на трубе в 10 мбит, и честно распределить трафик между очередями при конкуренции, так как у них одинаковый вес/приоритет.

Во втором примере для каждого IP отправителя будет создана труба в 10 мбит. Если у вас канал в интернет как раз и есть 10 мбит, то при таком разкладе никакого шейпинга не будет, а клиенты станут "драться" за пропускнею способность.

Re: Dummynet

Добавлено: 2009-08-11 16:59:06
ivan__
Спасибо, теперь понял.
А что означает первый параметр gred 0.002?

Re: Dummynet

Добавлено: 2009-08-11 17:20:08
terminus
http://forum.lissyara.su/viewtopic.php? ... 61&p=87941
http://www.icir.org/floyd/REDparameters.txt

При настройках gred присутсвует некоторый шаманизм. Параметры (w_q/min_th/max_th/max_p) 0.002/10/30/0.1 подбираются как:

0.002 - не трогать, он лучший
10 - "на глазок". это минимальный размер queue при котором еще не будет патерь пакетов
30 - выставляется как предыдуший*3: 10*3=30
0.1 - не трогать, он лучший

итоговый размер queue выставляется как max_th*2: 30*2=60

Фишка в том, что если выставить очень большой queue то будут сильные задержки на медленых каналах, а если слишком маленький то плохо будут обрабатываться краткосрочные всплески трафика...

Мне "на глазок" показалось, что queue=60 для 10 мбит вполне нормально, поэтому так пример составил.

Re: Dummynet

Добавлено: 2010-08-27 17:27:52
gonzo111
terminus пасиб за ссылку :drinks:

1)
а чем отличается

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

  ${fwcmd} pipe 1 config bw 1970Kbit/s queue 60 gred 0.002/10/30/0.1
    ${fwcmd} queue 2 config pipe 1 weight 70 mask src-port 0xffff queue 60 gred 0.002/10/30/0.1
от

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

${fwcmd} pipe 1 config bw 1970Kbit/s queue 60 gred 0.002/10/30/0.1
    ${fwcmd} queue 3 config pipe 1 weight 70 mask src-port 0xffff 
? :smile:

2)

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

00001:   1.970 Mbit/s    0 ms   64 sl. 0 queues (1 buckets)
          GRED w_q 0.001999 min_th 16 max_th 32 max_p 0.099991
q00001: weight 90 pipe 1   50 sl. 32 queues (64 buckets) droptail
    mask: 0x00 0x00000000/0x0000 -> 0x00000000/0xffff
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp
Pkt/Byte ? это что такое ?
нету тулзы видеть ipfw pipe list в динамике? :smile:

3)
buckets размер_хеш-таблицы
Задает размер хеш-таблицы, используемой для хранения различных очередей. Стандартное значение, 64, задается переменной sysctl(8) net.inet.ip.dummynet.hash_size, и может быть в диапазоне от 16 до 1024.

buckets для чего то используется? :smile:

Re: Dummynet

Добавлено: 2010-08-27 17:50:00
terminus
gonzo111 писал(а): 1)
а чем отличается
${fwcmd} pipe 1 config bw 1970Kbit/s queue 60 gred 0.002/10/30/0.1
${fwcmd} queue 2 config pipe 1 weight 70 mask src-port 0xffff queue 60 gred 0.002/10/30/0.1

от
${fwcmd} pipe 1 config bw 1970Kbit/s queue 60 gred 0.002/10/30/0.1
${fwcmd} queue 3 config pipe 1 weight 70 mask src-port 0xffff
red/gred это механизм управления очередью пакетов (буфером). он есть как у труб так и у очередей.
отличие в том, что во втором случае он будет с настройками по-умолчанию.
gonzo111 писал(а):
2)
00001: 1.970 Mbit/s 0 ms 64 sl. 0 queues (1 buckets)
GRED w_q 0.001999 min_th 16 max_th 32 max_p 0.099991
q00001: weight 90 pipe 1 50 sl. 32 queues (64 buckets) droptail
mask: 0x00 0x00000000/0x0000 -> 0x00000000/0xffff
BKT Prot ___Source IP/port____ ____Dest. IP/port____ Tot_pkt/bytes Pkt/Byte Drp

Pkt/Byte ? это что такое ?
нету тулзы видеть ipfw pipe list в динамике? :smile:

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

while true do
clear
ipfw pipe list
sleep 3
done
gonzo111 писал(а): 3)
buckets размер_хеш-таблицы
Задает размер хеш-таблицы, используемой для хранения различных очередей. Стандартное значение, 64, задается переменной sysctl(8) net.inet.ip.dummynet.hash_size, и может быть в диапазоне от 16 до 1024.

buckets для чего то используется? :smile:
шех-таблица используеься для быстрого поиска значения в списке. если очередей/труб очень много, то имеет смысл ее увеличить.
( http://ru.wikipedia.org/wiki/Хеш-таблица
http://www.codenet.ru/progr/alg/sort_search/has.php )

Re: Dummynet

Добавлено: 2010-08-28 16:17:19
gonzo111
пасибо

1)
по первому вопросу
я так понимаю gred/red это алгоритм при перегрузки какой то из конкурирующей очереди отброса пакетов
у меня предположение что
Ведь внутри одной очереди согласно маске по ip (или по порту) идет распределение канала равными частями
${fwcmd} queue 2 config pipe 1 weight 70 mask src-port 0xffff queue 60 gred 0.002/10/30/0.1
может это как раз и задается что применять red/gred для клиентов внутри очереди?

2)
а задать что у этого клиента с меньшим приоритетом будет канал минимум 128 кбит/с из 2мбит/с никак нельзя?*
только приблизительно подсчитав пропорции weigt относительно остальных очередей что ли ?

Re: Dummynet

Добавлено: 2010-08-30 15:51:01
gonzo111

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

#!/bin/sh
while (true) do
clear
ipfw queue show 1
#ipfw  pipe show 1
sleep 3
done
как юзать

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

 ipfw -s Tot_pkt pipe show  1 
что то не понял,
не пашет сортировка :(

Re: Dummynet

Добавлено: 2010-08-30 16:06:57
gonzo111
ipfw -t -d show 1-10
в динамике вах-вах :smile: