Перейти до

Пора менять железку?


Рекомендованные сообщения

  • Відповіді 107
  • Створено
  • Остання відповідь

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Поллинг убрать, ибо он есть жалкой програмной реализацией того, что em и igb умеют аппаратно.

+1   А также забыть как страшный про pfnat и пачки по два пайпа на юзера.

Мне кажется, Вам советуют люди, которые уже прошли Ваш путь и знают, о чём говорят.     У меня на 1-м брасе 2000 туннелей, при 10 тарифных планах всего около 40 правил ipfw с NAT'ом и пайпами вклю

Posted Images

Поллинг убрать, ибо он есть жалкой програмной реализацией того, что em и igb умеют аппаратно.

+1

 

А также забыть как страшный про pfnat и пачки по два пайпа на юзера.

Ссылка на сообщение
Поделиться на других сайтах

Блин, чем вам так pf не люб и pipe?

По-моему должно колбасить всё на такой машине, неужели так критично при 150 юзерах?

Ссылка на сообщение
Поделиться на других сайтах

Блин, чем вам так pf не люб и pipe?

 

Мне кажется, Вам советуют люди, которые уже прошли Ваш путь и знают, о чём говорят.

 

По-моему должно колбасить всё на такой машине, неужели так критично при 150 юзерах?

 

У меня на 1-м брасе 2000 туннелей, при 10 тарифных планах всего около 40 правил ipfw с NAT'ом и пайпами включительно (таблицы).

 

У Вас на 150 пользователей только пайпов будет 300 штук. Пока у Вас 10 мегабит траффика, допускаю, что падение производительности малозаметно. Но если бы я на своих 300 мегабитах нета наколбасил 350 правил, полагаю, потребовалось бы либо вдвое более мощный процессор, либо дополнительный BRAS.

 

pf не паралелится на несколько процессоров, посему в один прекрасный вечер умрёт на одном из ядер, при абсолютно простаивающих других.

Ссылка на сообщение
Поделиться на других сайтах
pf не паралелится на несколько процессоров, посему в один прекрасный вечер умрёт на одном из ядер, при абсолютно простаивающих других.

:lol: Чёрт. Почему мне никто этого не сказал, когда я переходил с чистого ipfw на связку ipfw+pf. :lol:

Ссылка на сообщение
Поделиться на других сайтах

Пайпы мы любим, только по маске :)

 

В онконнект-ондисконнект только переписать чуть логику из рассчета 1 скорость - 2 пайпа на весь тариф а не по 2 на каждого юзера. Разворачивание табличек автоматом даст вам прирост производительности около 15%.

pfnat ущербно работает на смп системах а прохождение пакетов по гибридной схеме ipfw-pf-ipfw ощутимо медленнее. Пробуйте ipfw nat - на дохлом тазике люди лупят в среднем по 450 мбит. Благо строиться минут за 10 даже в пяном состоянии.

 

http://habrahabr.ru/blogs/bsdelniki/102739/

 

Есть подозрение что переходили вы на связку ipfw+pfnat либо с ipfw+natd ("быстрое" переключение контекстов - ГЫ) либо во времена 7.х - когда c ipfwnat все было очень запущено.

Все изменилось. Теперь libalias довольно адекватен.

Ссылка на сообщение
Поделиться на других сайтах
Поллинг надо выкинуть из конфига ядра вообще.

Т.е. его обязательно надо выкинуть?

насколько я помню, есть некоторые особенности в реализации. если у вас нет других сетевушек, то лучше выкинуть из конфига ядра.

 

Откажитесь от pf в пользу ipfw nat.

Не хотелось бы, он мне нравится, к тому же у меня на нём завязано кое-что.

вам шашечки или ехать?

если ехать, то отказывайтесь.

у pf есть одна неприятная особенность: код содержит глобальную блокировку и не распараллеливается на несколько ядер, что весьма негативно сказывается на проходящем траффике.

 

Покажите systat -vm 1

Покажите sysctl dev.igb

судя по всему все в норме.

 

По файрволу - переходите на связку ipfw table + pipe по маске. В свое время это дало нам двукратное снижение нагрузки на проц.

 

Если возвращаться к начальному вопросу - виноват скорее всего был поллинг.

Відредаговано adeep
Ссылка на сообщение
Поделиться на других сайтах

/boot/loader.conf

 

hw.em.rx_process_limit="-1"

hw.em.rx_abs_int_delay="33"

hw.em.rxd="4096"

hw.em.txd="4096"

hw.em.rx_int_delay=800

hw.em.tx_int_delay=800

 

И живём без прерываний :)

Увы. Сейчас нагрузка 10-20Мбит где-то, а interrupt показывает 20%.

 

Огромное Вам всем спасибо за отзывчивость!

Буду разбираться в логике и переводить сервер на ipfw nat.

Ссылка на сообщение
Поделиться на других сайтах
Откажитесь от pf в пользу ipfw nat.

Не хотелось бы, он мне нравится, к тому же у меня на нём завязано кое-что.

вам шашечки или ехать?

если ехать, то отказывайтесь.

у pf есть одна неприятная особенность: код содержит глобальную блокировку и не распараллеливается на несколько ядер, что весьма негативно сказывается на проходящем траффике.

Слава, а как быть в случае, когда надо натить в пул реальных ип? у пф это сделано очень красиво :)

Ссылка на сообщение
Поделиться на других сайтах

Слава, а как быть в случае, когда надо натить в пул реальных ип? у пф это сделано очень красиво :)

Пишите Theo слезные письма, что хотите гонять pf на smp системах. Или вешаться.

Ссылка на сообщение
Поделиться на других сайтах

Кстати, у меня пара машин в сети имеет реальные IP. В pf пробросить ip несложно, хотя с VPN внуть сети на нём я так ничего сделать и не смог.

В ipfw nat отдать юзеру реал ip получится норм? IP прописаны алиасами на внешнем ИФ сервера.

И таблицы эти для меня тёмный лес, если честно. Чувствую сегодня будет тяжёлая ночь. :)

Ссылка на сообщение
Поделиться на других сайтах
В ipfw nat отдать юзеру реал ip получится норм? IP прописаны алиасами на внешнем ИФ сервера.

да без проблем. Втыкаете пул реальных адресов в табличку и натите to not tablichka

Ссылка на сообщение
Поделиться на других сайтах

Простите за назойливость, может подкинете примерчик по типу: есть машина в сети 10.0.1.2.

Для неё надо выдать реал IP 1.2.3.4.

Как правильно написать для неё правила в скрипте ipfw, использую table?

Тяжеловато мне пока с синтаксисом. :)

Или бросьте ссылкой, чтоб было где почитать и вникнуть. На русском. :)

 

® Вы только не волнуйтесь, но ОНО к тому же ещё и глухое! :)

 

P.S. Я чего-то не понял, или перенаправление белого IP на клиента по прежнему делается через natd и требует включения в ядро

options IPDIVERT

?

И возможно ли шейпить такого юзера с белым IP?

Ссылка на сообщение
Поделиться на других сайтах

NatIP="aa.bb.cc.dd"

int0="em0"

fwcmd="/sbin/ipfw -q"

 

${fwcmd} nat 1 config ip $NatIP

${fwcmd} add 500 nat 1 ip from any to $NatIP in recv $int0

${fwcmd} add 501 nat 1 ip from 10.0.0.0/8 to any out xmit $int0

 

${fwcmd} table 1 add aa.bb.cc.ff/xx

${fwcmd} table 1 add 10.0.0.0/8

 

${fwcmd} add 600 pass all from any to table\(1\) in via $int0

${fwcmd} add 601 pass all from table\(1\) to any out via $int0

 

----------

10.0.0.0/8 - серая подсеть, всё остальное не натится.

aa.bb.cc.dd - IP для NAT'а

aa.bb.cc.ff/xx - одна из Ваших бел. подсетей

 

Дальше заполняете таблицы IP'шками клиентов (неважно белыми или серыми) и шейпите пайпами по ним с маской.

---------

 

${fwcmd} table 6 flush

${fwcmd} add 60006 pipe 60006 all from any to table\(6\) out

${fwcmd} add 60007 pipe 60007 all from table\(6\) to any in

${fwcmd} pipe 60006 config mask dst-ip 0xffffffff bw 128Kbit/s

${fwcmd} pipe 60007 config mask src-ip 0xffffffff bw 128Kbit/s

 

${fwcmd} table 6 add 1.2.3.4

${fwcmd} table 6 add 1.2.3.5

${fwcmd} table 6 add 10.20.30.40

 

и т.д., попутно изучая маны

Ссылка на сообщение
Поделиться на других сайтах

Ага, на счёт проброса IP надыбал инфу про ng_nat: http://www.opennet.ru/tips/info/1943.shtml

и ещё тут.

а так же: http://www.opennet.ru/tips/info/1782.shtml

 

Попробовал, получилось. Вкомпилил только ng_nat в ядро, чтоб не грузить модулем.

 

Пока просто отказался от pf, вернул ipfw и запустил чтоб хоть как-то работало. До таблиц пока не дошёл.

 

Всем искреннее спасибо, кто помог советом: у меня "плюсики" кончились на эти сутки. ^_^

Ссылка на сообщение
Поделиться на других сайтах

Не делал пока никаких таблиц, юзерам отпустил канал.

Народа щас правда человек 80 (а бывает больше сотни), трафик на закачку около 50Мбит - 4500pps, отдача 15Мбит 3000 pps. Картинка такая вот стала.

Пинг стабильно 1мс. Даже когда я tafshow на ИФ запускаю и нагрузка на проц поднимается, потерь пакетов практически нет. ^_^

post-3670-098938600 1288441739_thumb.jpg

Ссылка на сообщение
Поделиться на других сайтах

посмотрите по systat -vm или по vmstat -i кто у вас все таки кушает прерывания.

Похоже сетевые службы.

 

vmstat -i

interrupt                          total       rate
irq1: atkbd0                           6          0
irq19: atapci1                    188466          4
cpu0: timer                     90956035       1965
irq256: igb0                   134177020       2900
irq257: igb0                   100825356       2179
irq258: igb0                           2          0
irq259: igb1                   110771935       2394
irq260: igb1                   134295705       2902
irq261: igb1                           2          0
cpu1: timer                     90955905       1965
Total                          662170432      14312

 

Думаю таблицы ещё подмогнут, но в общем-то при хорошей загрузке... может такие показатели и приемлемы для такого железа как у меня.

Во всяком случае хочется верить, что стало лучше.

Сейчас народу прибавилось, 95 онлайн. Тут проскакивала мысль и она видимо верная - о кол-ве сессий.

Чем глянуть кол-во сессий? Мне кажется это они. ^_^

post-3670-063110500 1288448376_thumb.jpg

Ссылка на сообщение
Поделиться на других сайтах

Хорошо, попробую попозже. Не смог систематизировать всё, пришлось по-быстрому лепить из того что понял.

Метод проброса IP через ngctl мне понравился, хотелось бы оставить, он легко интегрируется в OnConnect для СТГ.

Однозначно могу сказать одно: с PF действительно работало всё медленнее, чем даже с natd.

У меня сейчас и страницы ощутимо быстрее открываются.

Ссылка на сообщение
Поделиться на других сайтах

Много прерываний кушают igb. При 100мбитах на systat у igb должно быть прерываний меньше тысячи (на два irq по 800-900 прерываний в секунду).

Покажите sysctl dev.igb

Пример настроек в /boot/loader.conf:

hw.igb.rxd=4096
hw.igb.txd=2048
hw.igb.enable_aim=0
hw.igb.low_latency=2000
hw.igb.ave_latency=4000
hw.igb.bulk_latency=8000
hw.igb.rx_process_limit=1000
hw.igb.fc_setting=0

Будьте внимательны на первых двух параметрах - некоторые сетевушки на значениях в 4096 вешаются.

Ссылка на сообщение
Поделиться на других сайтах

sysctl dev.igb

dev.igb.0.%desc: Intel(R) PRO/1000 Network Connection version - 1.7.3
dev.igb.0.%driver: igb
dev.igb.0.%location: slot=0 function=0
dev.igb.0.%pnpinfo: vendor=0x8086 device=0x10c9 subvendor=0x8086 subdevice=0xa03c class=0x020000
dev.igb.0.%parent: pci1
dev.igb.0.debug: -1
dev.igb.0.stats: -1
dev.igb.0.flow_control: 3
dev.igb.0.enable_aim: 1
dev.igb.0.low_latency: 128
dev.igb.0.ave_latency: 450
dev.igb.0.bulk_latency: 1200
dev.igb.0.rx_processing_limit: 100
dev.igb.1.%desc: Intel(R) PRO/1000 Network Connection version - 1.7.3
dev.igb.1.%driver: igb
dev.igb.1.%location: slot=0 function=1
dev.igb.1.%pnpinfo: vendor=0x8086 device=0x10c9 subvendor=0x8086 subdevice=0xa03c class=0x020000
dev.igb.1.%parent: pci1
dev.igb.1.debug: -1
dev.igb.1.stats: -1
dev.igb.1.flow_control: 3
dev.igb.1.enable_aim: 1
dev.igb.1.low_latency: 128
dev.igb.1.ave_latency: 450
dev.igb.1.bulk_latency: 1200
dev.igb.1.rx_processing_limit: 100

 

/boot/loader.conf подправлю позже: это ребут сервера нужен, меня съедят.

 

Спасибо за помошь. ^_^

Ссылка на сообщение
Поделиться на других сайтах

Запустил таки ipfw_nat. С табличками вроде тоже понятно. Действительно удобно.

 

Но самое главное - застрял я на пробросе белых IP. Кончились идеи, уже по всякому пробовал, не пойму почему не работает.

Принципиально не хочу мутить ng_nat или другой, должен же этот работать, если его придумали.

 

У меня реальники прописаны на внешнем ИФ.

Делал и not table и redirect_addr на адрес внутрь локалки и из этой темы примеры брал и крутил их по всякому - нифига. Получается либо полный затык, либо адрес просто не пробрасывется, буд-то и нет того redirect_addr. ^_^

 

Покажите пожалуйста рабочий конфиг или конкретный пример для моего случая - не могу найти развёрнутого объяснения, хотя надыбал несколько статей по настройке конкретно ipfw_nat.

Конечно по сравнению с natd эта тема пока бедновата.

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.


×
×
  • Створити нове...