Помогите выяснить причину. no buffer space available

Технические вопросы по UTM 5.0
Ответить
Kristian
Сообщения: 95
Зарегистрирован: Ср мар 04, 2009 21:32

Помогите выяснить причину. no buffer space available

Сообщение Kristian »

Добрый день.
Для шейпинга использую связку
netgraph + ipfw

Кусок конфига который позволяет нарезать скорость пользователям в зависимости от тарифного плана:

$fwcmd pipe 1024 config bw 1024Kbit/s mask src-ip 0xffffffff # in
$fwcmd pipe 2024 config bw 512Kbit/s mask dst-ip 0xffffffff # out


$cmd pipe tablearg ip from table\(1\) to not table\(100\) out #
$cmd pipe tablearg ip from table\(4\) to not table\(0,100\) out #

$cmd pipe tablearg ip from not table\(100\) to table\(2\) in #
$cmd pipe tablearg ip from not table\(0\) to table\(5\) in #

В чем собственно вопрос.
Если возрастает нагрузка на сервер, получаю ошибку:

no buffer space available

У части людей ложится инет ......

В чем может быть причина ? Сетевухи менять пробовал.

Если я не использую очереди в трубах, может ли это привести к подобной ошибке ?

Система FreeBsd 7.1 Core 2 Duo + 2 Gb

Что прописать в sysctl ?

MPD, pppoe не использую ....

CarTer
Сообщения: 62
Зарегистрирован: Пн май 26, 2008 09:18

Сообщение CarTer »

добавь в /boot/defaults/loader.conf:

kern.ipc.nmbclusters=16384
kern.ipc.maxsockets=16384
net.graph.maxalloc=2048
kern.maxusers=512
kern.ipc.maxpipekva=32000000

в /etc/sysctl.conf:

net.graph.maxdgram=128000
net.graph.recvspace=128000

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

первый вопрос: а где здесь нетграф?

Kristian
Сообщения: 95
Зарегистрирован: Ср мар 04, 2009 21:32

Сообщение Kristian »

Полный ipfw скрипт выглядит как:

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

#!/bin/sh
NatIP="Внешний IP"
oif="msk0"
iif="msk1"
NFlow_coll="IP коллектора "
/sbin/ipfw -q -f flush
/sbin/ipfw -f pipe flush
/etc/ipfw/tableflush
cmd="/sbin/ipfw add"
fwcmd="/sbin/ipfw"
##nat -- nat for table 1
##natA -- nat for unlim speed users
##natB -- nat for only UA-IX unlim speed users
/usr/sbin/ngctl mkpeer ipfw: nat 60 out
/usr/sbin/ngctl mkpeer ipfw: nat 80 out
/usr/sbin/ngctl mkpeer ipfw: nat 100 out
/usr/sbin/ngctl name ipfw:60 nat
/usr/sbin/ngctl name ipfw:80 natA
/usr/sbin/ngctl name ipfw:100 natB
/usr/sbin/ngctl connect ipfw: nat: 61 in
/usr/sbin/ngctl connect ipfw: natA: 81 in
/usr/sbin/ngctl connect ipfw: natB: 101 in
/usr/sbin/ngctl msg nat: setaliasaddr $NatIP
/usr/sbin/ngctl msg natA: setaliasaddr $NatIP
/usr/sbin/ngctl msg natB: setaliasaddr $NatIP

$cmd allow ip from any to any via lo0
$cmd deny ip from any to 127.0.0.0/8
$cmd deny log ip from 127.0.0.0/8 to any

$cmd allow tcp from any to any 88 in via $iif
$cmd allow tcp from any to any 22

#Deny rules
### table 101 deny in world side nets
### table 102 deny nets
#$fwcmd table 101 add 192.168.0.0/16
$fwcmd table 101 add 10.0.0.0/8
$fwcmd table 101 add 172.16.0.0/16
$fwcmd table 101 add 0.0.0.0/8
$fwcmd table 101 add 127.0.0.0/8
$fwcmd table 101 add 169.254.0.0/16
$fwcmd table 101 add 204.152.64.0/23
$fwcmd table 101 add 224.0.0.0/3

$cmd deny all from table\(101\) to any in via $oif

$cmd deny ip from any to any 137 in
$cmd deny ip from any to any 138 in
$cmd deny ip from any to any 139 in
$cmd deny ip from any to any 81 in

$fwcmd table 102 add 72.0.0.0/16
$fwcmd table 102 add 202.97.238.0/16
$fwcmd table 102 add 192.38.38.0/24

$cmd deny all from any to table\(102\)
$cmd deny all from table\(102\) to any

#Allow rules
#$cmd allow all from me to any
#$cmd allow all from any to me
###
## table 0 - table with UA-IX networks

#### Identical speed for World and UA-IX
## table 1 - table with allowed clients IP - OUT to (world+UA-IX)
## table 2 - table with allowed clients IP - IN from (world+UA-IX)

#### Unlim speed for World and UA-IX
## table 3 - table with unlimkbit/s allowed clients

$fwcmd pipe 1024 config bw 1024Kbit/s mask src-ip 0xffffffff # in

$fwcmd pipe 2024 config bw 512Kbit/s mask dst-ip 0xffffffff # out

### 512/256 world tarif
$fwcmd pipe 512 config bw 512Kbit/s mask src-ip 0xffffffff # in

$fwcmd pipe 612 config bw 256Kbit/s mask dst-ip 0xffffffff # out from client

### 512/256 world tarif for "only UA-IX unlim speed clients"
$fwcmd pipe 712 config bw 512Kbit/s mask src-ip 0xffffffff # in

$fwcmd pipe 812 config bw 256Kbit/s mask dst-ip 0xffffffff # out

$cmd pipe tablearg ip from table\(1\) to not table\(100\) out #Traffic to any from 1024/512 clients OUT
$cmd pipe tablearg ip from table\(4\) to not table\(0,100\) out #Traffic to world from 512/256 world speed clients OUT

$cmd netgraph 60 ipv4 from table\(1\) to not table\(100\) out via $oif
$cmd netgraph 80 ipv4 from table\(3\) to not table\(100\) out via $oif
$cmd netgraph 100 ipv4 from table\(6\) to not table\(100\) out via $oif
$cmd netgraph 61 ipv4 from not table\(100\) to $NatIP in via $oif
$cmd netgraph 81 ipv4 from not table\(100\) to $NatIP in via $oif
$cmd netgraph 101 ipv4 from not table\(100\) to $NatIP in via $oif

$cmd netgraph 71 ip from any to any in

$cmd pipe tablearg ip from not table\(100\) to table\(2\) in #Traffic to  1024/512 clients from any (IN)
$cmd pipe tablearg ip from not table\(0\) to table\(5\) in #Traffic from World to 512/256 clients (IN)


$cmd allow ip from any to table\(1\) limit src-addr 30
$cmd allow ip from any to table\(2\) limit src-addr 30
$cmd allow ip from table\(1\) to any limit src-addr 30
$cmd allow ip from table\(2\) to any limit src-addr 30
$cmd allow ip from any to table\(3\) limit src-addr 30
$cmd allow ip from table\(3\) to any limit src-addr 30
$cmd allow ip from any to table\(4\) limit src-addr 30
$cmd allow ip from any to table\(5\) limit src-addr 30
$cmd allow ip from table\(4\) to any limit src-addr 30
$cmd allow ip from table\(5\) to any limit src-addr 30
$cmd allow ip from any to table\(6\) limit src-addr 30
$cmd allow ip from table\(6\) to any limit src-addr 30

$cmd allow all from $NatIP to any out via $oif
$cmd allow all from me to any
$cmd allow all from any to me
$cmd fwd IPhttpserver,88 log logamount 10000 tcp from table\(100\) to any 80
$cmd allow ip from any to table\(100\) src-port 80
$cmd 65534 deny log logamount 100000 ip from any to any

/sbin/sysctl net.inet.ip.fw.one_pass=0
/usr/sbin/ngctl mkpeer ipfw: netflow 71 iface0
/usr/sbin/ngctl name ipfw:71 netflow
/usr/sbin/ngctl connect ipfw: netflow: 70 out0
/usr/sbin/ngctl mkpeer netflow: ksocket export inet/dgram/udp
/usr/sbin/ngctl msg netflow:export connect inet/IP kollektora:9996
/usr/sbin/ngctl msg netflow: setdlt { iface=0 dlt=12 }
/usr/sbin/ngctl msg netflow: setifindex { iface=0 index=5 }
Как видите здесь нет очередей. Чем это чревато при высоких нагрузках ?
Может имеет смысл переносить гейт на Фрю 6.4 ?
По поводу опций sysctl + loader - перепроверю - отпишусь.

В нете нарыл что 7.1 как то криво с DUMMYNET работает .... (все чаще задумываюсь про FC .... ) :roll:
Памагите люди добрые :) :D

Anton
Сообщения: 339
Зарегистрирован: Пт июл 01, 2005 10:57

Сообщение Anton »

нетграф и дамминет вещи не совместимые
в семерке полностью переписали нетграф и дамминет и они устраивают переполнения стека
да и вообще дамминет ведет себя по странному при нагрузке
ip может в любой пай влететь, не подчиняясь никакой логике
сегодня прислали по рассылке 75 ошибок в ipfw

вообщем либо откатывайся до 6.2
либо шейпь ng_car

Blackmore
Сообщения: 365
Зарегистрирован: Вс фев 06, 2005 09:24
Откуда: подмосковье

Сообщение Blackmore »

dummynet фтопку - ng_car наше все и нет смысла уползать на 6.х

Kristian
Сообщения: 95
Зарегистрирован: Ср мар 04, 2009 21:32

Сообщение Kristian »

Если не тяжело - покажите пример хотя бы на одном любом тарифном плане с ng_car.
Имеется ввиду - сам пример + реализация передачи параметров через rfw ....

Blackmore
Сообщения: 365
Зарегистрирован: Вс фев 06, 2005 09:24
Откуда: подмосковье

Сообщение Blackmore »

услуга как предоставляется пользователю ?
параметры в ng_car передаются при помощи радиуса
а у rfw имхо несколько другое назначение

Kristian
Сообщения: 95
Зарегистрирован: Ср мар 04, 2009 21:32

Сообщение Kristian »

У меня есть Ядро (стоит отдельно) и отдельно сервер занимающийся натом и ограничением полосы (шлюз для клиентов). Связь между ядром и этим фаерволом организована посредством rfw клиента.
Передаю переменные (unlim, unlim1,unlim2) через правило включения выключения, а на входе rfw клиента в зависимости от тарифного плана (переменной) Ип шник запихивается в ту или иную таблицу.

Может я что то не так делаю ? :(

Blackmore
Сообщения: 365
Зарегистрирован: Вс фев 06, 2005 09:24
Откуда: подмосковье

Сообщение Blackmore »

т.е. никакого vpn в сети нет ?

Kristian
Сообщения: 95
Зарегистрирован: Ср мар 04, 2009 21:32

Сообщение Kristian »

Нет никакого ВПН. Пока что .... :)

Anton
Сообщения: 339
Зарегистрирован: Пт июл 01, 2005 10:57

Сообщение Anton »

тогда перейди на ядрерный нат
а не нетграфовский

Kristian
Сообщения: 95
Зарегистрирован: Ср мар 04, 2009 21:32

Сообщение Kristian »

Для того что бы ?


Кстати реализовал данный функционал на 6.4 + поменял сетевухи на интел - 2,4 часа под нагрузкой - полет нормальный ;)

Anton
Сообщения: 339
Зарегистрирован: Пт июл 01, 2005 10:57

Сообщение Anton »

6-ка более стабильная в этом плане
+ еще драйвера от интела за март 2009 года кочни

ядерный нат компилится с этой опцией
options IPFIREWALL_NAT

и никакого нетграфа

Ответить