ng_car+ipfw

Обсуждаем OS FreeBSD и сервисы на ней.

ng_car+ipfw

Сообщение Mechanic » 27 ноя 2009, 21:03

Доброго времени суток!
На NAS VPN mpd(pptp+l2tp) стоял шейпер с dummynet. Решил заменить его на ng_car.
Реализовал через ng_car+ipfw.
Но столкнулся с проблемой, что система нагружается на 100% cpu.
Код: Выделить всё
last pid: 56167;  load averages:  8.21,  7.98,  6.50                                                         up 0+00:40:44  19:58:31
134 processes: 9 running, 108 sleeping, 17 waiting
CPU: 17.2% user,  0.0% nice, 81.9% system,  0.9% interrupt,  0.0% idle
Mem: 159M Active, 234M Inact, 179M Wired, 192K Cache, 108M Buf, 391M Free
Swap: 5120M Total, 5120M Free

  PID USERNAME  THR PRI NICE   SIZE    RES STATE   C   TIME   WCPU COMMAND
    2 root        1 -68    -     0K     8K CPU0    0  17:50 57.47% ng_queue0
    3 root        1 -68    -     0K     8K RUN     0  18:01 49.37% ng_queue1
   30 root        1  43    -     0K     8K RUN     1   8:42 26.37% em0_rx_kthread_1
   29 root        1  43    -     0K     8K RUN     0   8:48 24.37% em0_rx_kthread_0
  766 root        5   8    0 40568K 21284K nanslp  1   0:00 12.60% mpd5
   14 root        1 -32    -     0K     8K WAIT    1   0:40  0.29% swi4: clock sio
   28 root        1 -68    -     0K     8K WAIT    1   0:27  0.20% em0_txcleaner
   12 root        1 171 ki31     0K     8K RUN     0   3:54  0.00% idle: cpu0
   11 root        1 171 ki31     0K     8K RUN     1   3:39  0.00% idle: cpu1
  691 bind        5   4    0   135M   110M kqread  1   0:08  0.00% named
  630 root        1  44    0  3200K  1248K select  1   0:05  0.00% syslogd
   16 root        1  44    -     0K     8K -       1   0:04  0.00% yarrow
   51 root        1 -68    -     0K     8K -       1   0:03  0.00% dummynet


причем убираю правила в ipfw . нагрузка не падает
система стоит :
Код: Выделить всё
uname -a
FreeBSD vpn1 7.2-STABLE FreeBSD 7.2-STABLE #0: Fri Nov 27 11:22:20 EET 2009     root@vpn1:/usr/obj/usr/src/sys/gen-smp-yandex_em  i386

дрова сетевушки Intel стоят от яндекса.
В онлайне более 1000 ng*.
трафик до 100кппс
До этого система стала произвольно ребутиться, была 7.2-PRERELEASE, вот проапдейтил да еще и шеупер обновил, теперь не знаю с чего начать разгребать.
Mechanic
посетитель
 
Сообщения: 101
Зарегистрирован: 17 фев 2009, 08:38

Re: ng_car+ipfw

Сообщение Mechanic » 27 ноя 2009, 22:12

на этой машине есть еще ng_nat
так вот поймал ситуацию, что нат отваливается
вернул конфигурацию dummynet+ng_nat - все относительно стабилизировалось
Код: Выделить всё
last pid: 14558;  load averages:  1.12,  0.99,  0.78                                                        up 0+00:33:55  21:10:42
111 processes: 3 running, 91 sleeping, 17 waiting
CPU:  0.9% user,  0.0% nice, 61.7% system,  1.3% interrupt, 36.1% idle
Mem: 135M Active, 11M Inact, 99M Wired, 80K Cache, 67M Buf, 718M Free
Swap: 5120M Total, 5120M Free

  PID USERNAME  THR PRI NICE   SIZE    RES STATE   C   TIME   WCPU COMMAND
   12 root        1 171 ki31     0K     8K CPU0    0  16:54 41.36% idle: cpu0
    3 root        1 -68    -     0K     8K sleep   0  10:06 40.19% ng_queue1
    2 root        1 -68    -     0K     8K sleep   0  10:05 38.18% ng_queue0
   27 root        1 -68    -     0K     8K -       1  10:20 34.38% em0 taskq
   11 root        1 171 ki31     0K     8K RUN     1  14:47 30.47% idle: cpu1
  764 root        2  96    0 37240K 23028K select  0   0:00  4.30% mpd5
   13 root        1 -32    -     0K     8K WAIT    1   0:34  1.76% swi4: clock sio
  689 bind        5   4    0   131M   105M kqread  0   0:07  0.00% named
   16 root        1 -16    -     0K     8K -       1   0:04  0.00% yarrow
  628 root        1  44    0  3200K  1248K select  0   0:03  0.00% syslogd
   48 root        1 -68    -     0K     8K -       1   0:03  0.00% dummynet
   42 root        1  -8    -     0K     8K -       0   0:02  0.00% fdc0
 9217 root        1  44    0  3548K  1956K CPU1    1   0:01  0.00% top


откл временно шейпер, сейчас бегает:
Код: Выделить всё
vpn1# netstat -w1
            input        (Total)           output
   packets  errs      bytes    packets  errs      bytes colls
    130592     0   90734211     132015     0   90841707     0
    132203     0   91599428     133731     0   91663785     0
    130024     0   90800204     131290     0   90837860     0
    125840     0   87113880     127498     0   87303760     0
    125461     0   88141178     126697     0   88232477     0
    127179     0   88676451     128590     0   88738068     0
    127280     0   89136112     129079     0   89130974     0
    127784     0   88578707     129344     0   88456203     0
    130944     0   90406014     132488     0   90452344     0
    129169     0   88765529     130778     0   88978309     0
    130173     0   87954757     131748     0   88030188     0

получается идет какое-то наложение ng_nat и ng_car
Mechanic
посетитель
 
Сообщения: 101
Зарегистрирован: 17 фев 2009, 08:38

Re: ng_car+ipfw

Сообщение Андрей » 28 ноя 2009, 09:57

А характеристики машины не опобликуете?
Просто у меня почти аналогичная ситуация - хотел перейти на ipfw+ng_nat, но по ряду сомнений решил остаться на pf+ng_nat.
.ı|ı..ı|ı.
Андрей
местный житель
 
Сообщения: 1028
Зарегистрирован: 14 янв 2009, 13:37
Откуда: Оренбургская область

Re: ng_car+ipfw

Сообщение root » 28 ноя 2009, 13:02

Mechanic

покажи конфиги
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1894
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

Re: ng_car+ipfw

Сообщение Mechanic » 30 ноя 2009, 17:29

ng_nat
Код: Выделить всё
name="ngnat"
rcvar=`set_rcvar`
start_cmd="ngnat_start"
stop_cmd="ngnat_stop"
load_rc_config $name
eval "${rcvar}=\${${rcvar}:-'NO'}"
ngnat_aliasaddr1=${ngnat_aliasaddr1:-"0.0.0.0"}
 
ngnat_start() {
  echo "Setup ng_nat "
  /usr/sbin/ngctl -f- <<-SEQ
      mkpeer ipfw: nat 60 out
      name ipfw:60 nat1
      connect ipfw: nat1: 61 in
      msg nat1: setaliasaddr $ngnat_aliasaddr1
SEQ
}
 
ngnat_stop() {
  /usr/sbin/ngctl -f- <<-SEQ
    shutdown nat1:
SEQ
}
 
run_rc_command "$1"


в мпд up.sh для установки скорости на интерфейс
Код: Выделить всё
#add node ng_car with shape cir= bit/s
shape=`/usr/sbin/ngctl -f- <<-EOF
mkpeer ipfw: car $nom upper
name ipfw:$nom $login
connect $login: ipfw: lower $noml
msg $login: setconf { upstream={ cbs=$cbsup ebs=$ebsup cir=$cirup greenAction=1 yellowAction=1 redAction=2 mode=$modeup } downstream={ cbs=$cbsdn ebs=$ebsdn cir=$cirdn greenAction=1 yellowAction=1 redAction=2 mode=$modedn} } EOF>>`

echo "msg $login: setconf { upstream={ cbs=$cbsup ebs=$ebsup cir=$cirup greenAction=1 yellowAction=1 redAction=2 mode=$modeup } downstream={ cbs=$cbsdn ebs=$ebsdn cir=$cirdn greenAction=1 yellowAction=1 redAction=2 mode=$modedn} } " >> /var/log/mpd.ifaces/$5.$1



ПС Кто какие ип выдает для абона: белый/серый, статик/динамик ?
Mechanic
посетитель
 
Сообщения: 101
Зарегистрирован: 17 фев 2009, 08:38

Re: ng_car+ipfw

Сообщение root » 30 ноя 2009, 19:43

1. в мпд up.sh откуда берутся переменные, которые там испозьются и чему они равны ? (т.е. покажи вывод от echo)
2. покажи
Код: Выделить всё
ipfw show

3. чему равняется переменная в sysctl "net.inet.ip.fw.one_pass" ?
4. покажи вывод:
Код: Выделить всё
kldstat
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1894
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

Re: ng_car+ipfw

Сообщение Mechanic » 06 дек 2009, 17:53

root писал(а):1. в мпд up.sh откуда берутся переменные, которые там испозьются и чему они равны ? (т.е. покажи вывод от echo)

Код: Выделить всё
ng0
91.199.x.x
setup ng_car for: timon tariff=234 for 91.199.x.x nom=0 noml=10000
msg timon: setconf { upstream={ cbs=1048576 ebs=1048576 cir=8388608 greenAction=1 yellowAction=1 redAction=2 mode=2 } downstream={ cbs=1048576 ebs=1048576 cir=8388608 greenAction=1 yellowAction=1 redAction=2 mode=2} }

root писал(а):3. чему равняется переменная в sysctl "net.inet.ip.fw.one_pass" ?

0

пп 2,4 показать не удастся, систему вернул на ipfw+pipe ибо рабочая машинка была

подозрение, что как-то пересекаются ng_nat и ng_car
пока убрать серые адреса- нельзя, нету свободных белых ипов
Mechanic
посетитель
 
Сообщения: 101
Зарегистрирован: 17 фев 2009, 08:38

Re: ng_car+ipfw

Сообщение root » 07 дек 2009, 17:08

Mechanic писал(а):
root писал(а):
root писал(а):3. чему равняется переменная в sysctl "net.inet.ip.fw.one_pass" ?

0

а почему не 1-це ? Зачем выставил ноль ?
М.б. в этом и есть корень проблемы в большой нагрузке. Сколько суммарно правил на сервере получается (в штуках) ?
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1894
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

Re: ng_car+ipfw

Сообщение Mechanic » 08 дек 2009, 22:50

так сложилось исторически, когда нужно было разбрасать ипы по разным нат и в разные каналы, еще небыло as+pi
надо будет поправить эту опцию, переписав правила ipfw
PS стоит ли использовать дрова яндекса для intel ?
По их описания . они оптимизированы на больше кол-во вх запросов, но nas сервер нагружается в обе стороны.
Mechanic
посетитель
 
Сообщения: 101
Зарегистрирован: 17 фев 2009, 08:38

Re: ng_car+ipfw

Сообщение root » 09 дек 2009, 10:27

Mechanic писал(а):надо будет поправить эту опцию, переписав правила ipfw

вот это правильный подход ;) историю нужно менять :) раз она уже изменилась

Mechanic писал(а):PS стоит ли использовать дрова яндекса для intel ?

а у тебя есть какие то траблы со штатными ?
мы юзали вот эти: em-6.9.20.tar.gz о чем lehisnoe писал в статье Сетевые карты INTEL на чипсетах 82574L, 82578DM и FreeBSD 7.2
никаких проблем с ними не было

Mechanic писал(а):но nas сервер нагружается в обе стороны.

какой процесс ? что видно по
Код: Выделить всё
top
и
Код: Выделить всё
systat -v 1
?
С уважением, root

Изображение
------------
www.mega-net.ru - IT аутсорсинг
Аватара пользователя
root
Site Admin
 
Сообщения: 1894
Зарегистрирован: 11 июн 2008, 13:05
Откуда: Moscow, Russia

След.

Вернуться в FreeBSD

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 41

cron