URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 50418
[ Назад ]

Исходное сообщение
"(ipfw pipe queue) Приоритет трафика "

Отправлено IntenT , 12-Ноя-04 00:08 
Здравствуйте.
Пытаюсь довольно длительное время настроить ipfw таким образом, чтобы трафик из инета на определенные хосты в локальной сети имел более высокий приоритет. получается отвратительно.
вот мои настройки:

### rc.conf
# network settings
# это внутренний интерфейс, в локальную сеть
ifconfig_rl0="inet 192.168.0.1  netmask 255.255.255.0"

# это "внешний" - к роутеру провайдера
ifconfig_rl1="inet 192.168.1.33  netmask 255.255.255.0"

# IP роутера
defaultrouter="192.168.1.1"
hostname="proxy"
gateway_enable="YES"
router_enable="YES"

# daemons
inetd_enable="YES"
sshd_enable="YES"
usbd_enable="YES"


kern_securelevel="3"
kern_securelevel_enable="YES"
tcp_extensions="YES"


# ipfw
firewall_enable="YES"
firewall_script="/etc/rc.firewall"
firewall_type="open"
firewall_quiet="NO"
firewall_flags=""


# natd
natd_enable="YES"
natd_interface="rl1"
natd_flags="-s -m -u"

###################################

### rc.firewall (знаю что править его не приветсвуется, исправлюсь)
        fwcmd="/sbin/ipfw"

# loopback
        ${fwcmd} add 10 pass all from 192.168.0.15 to me
        ${fwcmd} add 100 pass all from any to any via lo0
        ${fwcmd} add 200 deny all from any to 127.0.0.0/8
        ${fwcmd} add 300 deny ip from 127.0.0.0/8 to any

        ${fwcmd} pipe 1 config bw 128Kbit/s
        ${fwcmd} queue 1 config pipe 1 weight 1 mask dst-ip 0x00000000
        ${fwcmd} queue 2 config pipe 1 weight 99 mask dst-ip 0x00000000
        ${fwcmd} queue 3 config pipe 1 weight 1 mask src-ip 0x00000000
        ${fwcmd} queue 4 config pipe 1 weight 99 mask src-ip 0x00000000

        ${fwcmd} 50100 add queue 1 ip from not 192.168.0.1/24 to 192.168.0.1/24{72,83,91,93}
        ${fwcmd} 50200 add queue 2 ip from not 192.168.0.1/24 to 192.168.0.1/24{1,15,20}
        ${fwcmd} 50300 add queue 3 ip from 192.168.0.1/24{72,83,91,93} to not 192.168.0.1/24
        ${fwcmd} 50400 add queue 4 ip from 192.168.0.1/24{1,15,20} to not 192.168.0.1/24


        ${fwcmd} add 20000 deny all from not 192.168.0.1/24{1,15,20,72,83,91,93} to 192.168.0.1

        ${fwcmd} add 20072 deny all from 192.168.0.72/24{72} to not 192.168.0.1/24

        # Это для ipacct подсчета трафика
        ${fwcmd} add 50000 tee 11111 all from any to any via rl0
        ${fwcmd} add 60000 divert natd all from any to any via ${natd_interface}
        ${fwcmd} add 65000 pass all from any to any

#########################

Все это делалось с такой целью: сделать трафик с хостов/на хосты 192.168.0.1/24{1,15,20} более приоритетным, по сравнению с остальными.
Результат не тот, что ожидается. Если кто-то с хостов 192.168.0.1/24{83,91,93} подсядет на закачку файлов - забирает весь канал на себя, и серфить веб с "VIP" хостов становится практически невозможно.
Изменение значения net.inet.ip.fw.one_pass c 0 на 1 и обратно глобальных изменений не приносит, но пакеты в очереди попадают по-разному.

вот что выдает ipfw show:
00010   301    15751 allow ip from 192.168.0.15 to me
00100     8      400 allow ip from any to any via lo0
00200     0        0 deny ip from any to 127.0.0.0/8
00300     0        0 deny ip from 127.0.0.0/8 to any
20000     0        0 deny ip from not 192.168.0.0/24{1,15,20,72,83,91,93} to 192.168.0.1
20072     0        0 deny ip from 192.168.0.0/24{72} to not 192.168.0.0/24
50000 40283 31143305 tee 11111 ip from any to any via rl0
50100     0        0 queue 1 ip from not 192.168.0.0/24 to 192.168.0.0/24{72,83,91,93}
50200     0        0 queue 2 ip from not 192.168.0.0/24 to 192.168.0.0/24{1,15,20}
50300 14749   647111 queue 3 ip from 192.168.0.0/24{72,83,91,93} to not 192.168.0.0/24
50400  2150   237889 queue 4 ip from 192.168.0.0/24{1,15,20} to not 192.168.0.0/24
60000 39905 31039342 divert 8668 ip from any to any via rl1
65000 39905 31039342 allow ip from any to any
65535    10     3744 allow ip from any to any


а вот что ipfw pipe show
00001: 128.000 Kbit/s    0 ms   50 sl. 0 queues (1 buckets) droptail
    mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
q00001: weight 1 pipe 1   50 sl. 0 queues (1 buckets) droptail
    mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
q00002: weight 99 pipe 1   50 sl. 0 queues (1 buckets) droptail
    mask: 0x00 0x00000000/0x0000 -> 0x00000000/0x0000
q00003: weight 1 pipe 1   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 tcp     192.168.0.91/3344   82.193.101.221/80    15269   674472  0    0   0
q00004: weight 99 pipe 1   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 icmp    192.168.0.15/0        194.67.57.26/0     2215   242220  0    0   0


Буду благодарен, если ткнете в косяки, и поможете от них избавиться


Содержание

Сообщения в этом обсуждении
"(ipfw pipe queue) Приоритет трафика "
Отправлено IntenT , 12-Ноя-04 00:18 
>Все это делалось с такой целью: сделать трафик с хостов/на хосты 192.168.0.1/24{1,15,20}
>более приоритетным, по сравнению с остальными.
Имеется в виду интернет-трафик.

"(ipfw pipe queue) Приоритет трафика "
Отправлено dead.root , 12-Ноя-04 01:47 
Ошибка здесь: dst-ip 0x00000000 - в результате не создастся отдельной очереди для каждого dst-ip. А вся проблема кроется в том, что в инете гуляет статья некого Кузьмича (такой ник у него на hub.ru), где он ошибочно не ту маску написал, а никто так и не исправил.


"(ipfw pipe queue) Приоритет трафика "
Отправлено alk , 12-Ноя-04 09:48 
>Ошибка здесь: dst-ip 0x00000000 - в результате не создастся отдельной очереди для
>каждого dst-ip. А вся проблема кроется в том, что в инете
>гуляет статья некого Кузьмича (такой ник у него на hub.ru), где
>он ошибочно не ту маску написал, а никто так и не
>исправил.

+плюс к выше сказанному
можешь ограничить кол-во сессий для
не приоритетных хостов, для того чтобы при использовании программ закачек они не "душили" друг друга



"(ipfw pipe queue) Приоритет трафика "
Отправлено IntenT , 12-Ноя-04 11:33 
>Ошибка здесь: dst-ip 0x00000000 - в результате не создастся отдельной очереди для
>каждого dst-ip. А вся проблема кроется в том, что в инете
>гуляет статья некого Кузьмича (такой ник у него на hub.ru), где
>он ошибочно не ту маску написал, а никто так и не
>исправил.
Какая маска будет правильной в этом случае?
(кстати статейка, с которой я писал это лежит на опеннете
http://www.opennet.me/base/net/ipfw_guide.txt.html
)