Jump to content

Recommended Posts

Posted (edited)

Имеем:

FreeBSD unico-lego.vgg.ru 6.4-PRERELEASE

В ядре:

# IPFW OPTIONS
options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_FORWARD
options         IPSTEALTH
options         IPFIREWALL_VERBOSE_LIMIT=1000
options         IPDIVERT
options         DUMMYNET
options         IPFIREWALL_DEFAULT_TO_ACCEPT
options         DEVICE_POLLING
options         HZ=1000
options         INCLUDE_CONFIG_FILE

Собираю тестовую схему подключения абонентов - задача оттестировать безлимитные тарифы:

[PROV] <-> [uif (fxp1)] [FreeBSD][cif (fxp0)] <-> [CLI]

В sysctl:

net.inet.ip.forwarding=1
net.inet.ip.dummynet.io_fast=1
net.inet.ip.dummynet.hash_size=16384
net.inet.ip.fw.one_pass=0
net.inet.ip.dummynet.expire=0

 

В IPFW только правила, указанные ниже и ничего кроме них:

#!/bin/sh
# 1. Global variables
# 1.1 Interfaces
# 1.1.1 Uplink interface
uif="fxp1"
unet="194.128.23.252/30"
uip="194.128.23.253"

# 1.1.2 Client Interface
cif="fxp0"
cnet="172.16.2.252/30"
cip="172.16.2.253"

# 1.1.3 Contol Interface
mif="vr0"
mnet="192.168.23.0/24"
mip="192.168.23.71"

# 1.2 IPFW executable
fwcmd='/sbin/ipfw -q'

# 2. Functions (empty by now)

# 3. Default ruleset
# 3.1 Flushing all rules
echo "Flushing all rules."
${fwcmd} -f flush
${fwcmd} -f pipe flush

# 3.2 Shaper
# 3.2.1 Template :: Unlim 64Kbit/s
${fwcmd} pipe 101 config bw 64Kbit/s
${fwcmd} pipe 102 config bw 64Kbit/s

${fwcmd} queue 101 config pipe 101 mask dst-ip 0xfffffffc queue 7KBytes
${fwcmd} queue 102 config pipe 102 mask src-ip 0xfffffffc queue 7KBytes

# 3.2.2 Rules :: Shape IT
${fwcmd} add 101 queue 101 ip from any to ${cnet} out via ${cif}
${fwcmd} add 102 queue 102 ip from ${cnet} to any out via ${uif}

При такой конфигурации возникает, значительная задержка. Вот пример:

ping -s 1472 -i 0.2 -S 172.16.2.254 194.128.23.254
PING 194.128.23.254 (194.128.23.254) from 172.16.2.254: 1472 data bytes
1480 bytes from 194.128.23.254: icmp_seq=0 ttl=63 time=375.703 ms
1480 bytes from 194.128.23.254: icmp_seq=1 ttl=63 time=374.245 ms
1480 bytes from 194.128.23.254: icmp_seq=2 ttl=63 time=376.296 ms
1480 bytes from 194.128.23.254: icmp_seq=3 ttl=63 time=374.236 ms

Хотелось бы разобраться почему, ведь очередь я не перегружаю и, в таком случае, при net.inet.ip.dummynet.io_fast=1 - задержка эмулироваться не должна?

Или я принципиально неверно строю схему шейпинга?

 

P.S> Таблица использовать планируется, но пока хочется разобраться с текущей проблемой.

Edited by Dm1try
  • 6 months later...
Posted

тут приводили расчеты по перегрузу очереди. Считается оно чуть-ли не в битах за тик.

хм, интересно, а ссылка есть или ключ по которому искать?

Posted (edited)

Очевидно, что эмуляция низкой скорости 64 kbit/s поверх быстрой среды 100 mbit/s с пакетами по 1472 байта достижима только с помощью больших задержек. Уменьшаются ли задержки при уменьшении размера пакета?

 

queue 7KBytes -- это вообще зачем? Размер очереди лучше указывать в слотах, а не в байтах.

Edited by photon
Posted
Очевидно, что эмуляция низкой скорости 64 kbit/s поверх быстрой среды 100 mbit/s с пакетами по 1472 байта достижима только с помощью больших задержек. Уменьшаются ли задержки при уменьшении размера пакета?

 

queue 7KBytes -- это вообще зачем? Размер очереди лучше указывать в слотах, а не в байтах.

как например расчитать размер очереди для 70мбитного pipe при hz=1000 и при hz=4000?

Posted

Можно оставить и дефолтные 50 слотов, т.к. разница между 70 и 100 мбитами невелика. Главное не ставить слишком малый размер очереди, чтобы пакеты не терялись.

Posted (edited)
Можно оставить и дефолтные 50 слотов, т.к. разница между 70 и 100 мбитами невелика. Главное не ставить слишком малый размер очереди, чтобы пакеты не терялись.

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

 

собственно спрашиваю потому что случается так что на пайпах шириной в 5-70 и более мбит вижу до 15% дропов при недогруженном канале

смотрю при помощи

 

ipfw pipe <n> show;sleep 1;ipfw pipe <n> show

 

это глюк отображения или чего либо ещё? как это выяснить в какую сторону двигатся?

 

ЗЫ подобное наблюдаю на freebsd 6.x

Edited by t0ly
Posted

спасибо за ссылку, но тут ссылка на расчёт задержки, как задержка корелирует с размером очереди необходимой для настройки в pipe?

Posted
тут приводили расчеты по перегрузу очереди. Считается оно чуть-ли не в битах за тик.
хм, интересно, а ссылка есть или ключ по которому искать?

Я Вам отвечал вот на это.

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.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.