Jump to content
Калькуляторы

ipfw traffic shaping

Здравствуйте всем!

имеется FreeBSD 13.3

Столкнулся с такой проблемой при нарезке скорости, что скорость больше 200Mbit/s уже режется не так точно, и если выставить например 600Mbit/s то скорость не поднимается с примерно 440Mbit/s до указанных 600Mbit/s
Хорошо скорость нарезается при 100Mbit/s

Подскажите, куда копать, в чем может быть причина такого "поведения" ?

вот ipfw правило которое я использую.

#!/bin/sh

set -ex

fw="/sbin/ipfw -q"
if ! kldstat -q -m dummynet; then
        kldload dummynet
fi


if_ext=bce0
if_int=bce1

$fw -f flush
$fw -f pipe flush
$fw -f queue flush
$fw -f nat flush


bwu=650Mbit/s
bwd=600Mbit/s

$fw pipe 1 config bw $bwu
$fw pipe 2 config bw $bwd

$fw queue 1 config pipe 1 mask src-ip 0xffffffff
$fw queue 2 config pipe 2 mask dst-ip 0xffffffff

$fw add queue 1 ip from any to any xmit $if_int out
$fw add queue 2 ip from any to any recv $if_int in

${fw} nat 1 config log if $if_ext reset same_ports unreg_only deny_in reset
${fw} 00080 add nat 1 ip from 10.10.0.0/16 to any out via $if_ext
${fw} 00081 add nat 1 ip from any to $(ifconfig $if_ext|grep inet|awk '{print $2}') in via $if_ext

$fw add 3000 allow ip from any to any

 

Edited by Цап-Царапыч

Share this post


Link to post
Share on other sites

В 27.03.2024 в 10:51, Цап-Царапыч сказал:

Подскажите, куда копать, в чем может быть причина такого "поведения" ?

Попробуйте увеличить queue, стандартного значения для больших скоростей маловато. + бёрсты иногда полезно

Edited by ixi

Share this post


Link to post
Share on other sites

Quote

Мне кажется там влияние HZ (kern.hz) есть

НЕ кажется. Там гарантированно частота клока влияет. Рекомендуют ставить 10КГц, я ставлю 1000Гц и для моего PPS (SOHO) этого хватает, реально ОЧЕНЬ точно нарезает.

Дефолтовые там вообще 100Гц, что конечно совершенно недостаточно и режет ужасно грубо и задержку аж до 10мс еще может легко добавлять просто отфонарно, конечно до 100% теоритического максимума интерфейс не разгонится.

Share this post


Link to post
Share on other sites

3 hours ago, zyxman said:

Дефолтовые там вообще 100Гц, что конечно совершенно недостаточно

Вовсе нет.

 

Quote

# CLOCK OPTIONS

# The granularity of operation is controlled by the kernel option HZ (default
# frequency of 1000 Hz or a period 1ms between calls). Virtual machine guests
# use a value of 100. Lower values may lower overhead at the expense of accuracy
# of scheduling, though the adaptive tick code reduces that overhead.

options     HZ=100

 

# sysctl kern.hz
kern.hz: 1000

 

# grep -rsp "HZ" /usr/src/sys/ | grep 'options'
/usr/src/sys/arm/conf/std.armv6:options 	HZ=1000
/usr/src/sys/arm/conf/std.armv7:options 	HZ=1000
/usr/src/sys/conf/options:HZ		opt_param.h
/usr/src/sys/dev/e1000/README:  options HZ=1000
/usr/src/sys/riscv/conf/QEMU:options 	HZ=100

Share this post


Link to post
Share on other sites

Quote

Вовсе нет.

Значит уже поменяли. Хорошо. Раньше было 100. Ну короче, надо попробовать сделать больше, и я бы начал с того что везде поставил 5000 и посмотрел что изменится.

 

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

Share this post


Link to post
Share on other sites

Нужно читать в направлении влияния размеров очередей queue и тонкой настройки дропов gred

 

Мы вот так выставляем 110мбит/с
bw 112640Kbit/s queue 2048 gred 0.002/572/1700/0.1

 

там будет еще, с чем побороться - но это уже сами.

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.