andryas 1 059 Опубліковано: 2010-10-28 16:38:55 Share Опубліковано: 2010-10-28 16:38:55 Поллинг убрать, ибо он есть жалкой програмной реализацией того, что em и igb умеют аппаратно. Ссылка на сообщение Поделиться на других сайтах
nightfly 1 241 Опубліковано: 2010-10-28 18:08:30 Share Опубліковано: 2010-10-28 18:08:30 Поллинг убрать, ибо он есть жалкой програмной реализацией того, что em и igb умеют аппаратно. +1 А также забыть как страшный про pfnat и пачки по два пайпа на юзера. Ссылка на сообщение Поделиться на других сайтах
Kucher2 122 Опубліковано: 2010-10-28 18:36:18 Автор Share Опубліковано: 2010-10-28 18:36:18 Блин, чем вам так pf не люб и pipe? По-моему должно колбасить всё на такой машине, неужели так критично при 150 юзерах? Ссылка на сообщение Поделиться на других сайтах
andryas 1 059 Опубліковано: 2010-10-28 19:04:28 Share Опубліковано: 2010-10-28 19:04:28 Блин, чем вам так pf не люб и pipe? Мне кажется, Вам советуют люди, которые уже прошли Ваш путь и знают, о чём говорят. По-моему должно колбасить всё на такой машине, неужели так критично при 150 юзерах? У меня на 1-м брасе 2000 туннелей, при 10 тарифных планах всего около 40 правил ipfw с NAT'ом и пайпами включительно (таблицы). У Вас на 150 пользователей только пайпов будет 300 штук. Пока у Вас 10 мегабит траффика, допускаю, что падение производительности малозаметно. Но если бы я на своих 300 мегабитах нета наколбасил 350 правил, полагаю, потребовалось бы либо вдвое более мощный процессор, либо дополнительный BRAS. pf не паралелится на несколько процессоров, посему в один прекрасный вечер умрёт на одном из ядер, при абсолютно простаивающих других. Ссылка на сообщение Поделиться на других сайтах
Kucher2 122 Опубліковано: 2010-10-28 19:37:26 Автор Share Опубліковано: 2010-10-28 19:37:26 pf не паралелится на несколько процессоров, посему в один прекрасный вечер умрёт на одном из ядер, при абсолютно простаивающих других. Чёрт. Почему мне никто этого не сказал, когда я переходил с чистого ipfw на связку ipfw+pf. Ссылка на сообщение Поделиться на других сайтах
nightfly 1 241 Опубліковано: 2010-10-28 19:57:39 Share Опубліковано: 2010-10-28 19:57:39 Пайпы мы любим, только по маске В онконнект-ондисконнект только переписать чуть логику из рассчета 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 довольно адекватен. Ссылка на сообщение Поделиться на других сайтах
adeep 212 Опубліковано: 2010-10-28 21:48:49 Share Опубліковано: 2010-10-28 21:48:49 (відредаговано) Поллинг надо выкинуть из конфига ядра вообще. Т.е. его обязательно надо выкинуть? насколько я помню, есть некоторые особенности в реализации. если у вас нет других сетевушек, то лучше выкинуть из конфига ядра. Откажитесь от pf в пользу ipfw nat. Не хотелось бы, он мне нравится, к тому же у меня на нём завязано кое-что. вам шашечки или ехать? если ехать, то отказывайтесь. у pf есть одна неприятная особенность: код содержит глобальную блокировку и не распараллеливается на несколько ядер, что весьма негативно сказывается на проходящем траффике. Покажите systat -vm 1Покажите sysctl dev.igb судя по всему все в норме. По файрволу - переходите на связку ipfw table + pipe по маске. В свое время это дало нам двукратное снижение нагрузки на проц. Если возвращаться к начальному вопросу - виноват скорее всего был поллинг. Відредаговано 2010-10-28 21:51:29 adeep Ссылка на сообщение Поделиться на других сайтах
Kucher2 122 Опубліковано: 2010-10-29 05:13:45 Автор Share Опубліковано: 2010-10-29 05:13:45 /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. Ссылка на сообщение Поделиться на других сайтах
911 140 Опубліковано: 2010-10-29 06:09:52 Share Опубліковано: 2010-10-29 06:09:52 Откажитесь от pf в пользу ipfw nat. Не хотелось бы, он мне нравится, к тому же у меня на нём завязано кое-что. вам шашечки или ехать? если ехать, то отказывайтесь. у pf есть одна неприятная особенность: код содержит глобальную блокировку и не распараллеливается на несколько ядер, что весьма негативно сказывается на проходящем траффике. Слава, а как быть в случае, когда надо натить в пул реальных ип? у пф это сделано очень красиво Ссылка на сообщение Поделиться на других сайтах
adeep 212 Опубліковано: 2010-10-29 08:19:42 Share Опубліковано: 2010-10-29 08:19:42 Слава, а как быть в случае, когда надо натить в пул реальных ип? у пф это сделано очень красиво Пишите Theo слезные письма, что хотите гонять pf на smp системах. Или вешаться. Ссылка на сообщение Поделиться на других сайтах
nightfly 1 241 Опубліковано: 2010-10-29 12:33:24 Share Опубліковано: 2010-10-29 12:33:24 Theo рекомендует вешаться. Ссылка на сообщение Поделиться на других сайтах
Kucher2 122 Опубліковано: 2010-10-29 13:27:32 Автор Share Опубліковано: 2010-10-29 13:27:32 Кстати, у меня пара машин в сети имеет реальные IP. В pf пробросить ip несложно, хотя с VPN внуть сети на нём я так ничего сделать и не смог. В ipfw nat отдать юзеру реал ip получится норм? IP прописаны алиасами на внешнем ИФ сервера. И таблицы эти для меня тёмный лес, если честно. Чувствую сегодня будет тяжёлая ночь. Ссылка на сообщение Поделиться на других сайтах
nightfly 1 241 Опубліковано: 2010-10-29 15:23:49 Share Опубліковано: 2010-10-29 15:23:49 В ipfw nat отдать юзеру реал ip получится норм? IP прописаны алиасами на внешнем ИФ сервера. да без проблем. Втыкаете пул реальных адресов в табличку и натите to not tablichka Ссылка на сообщение Поделиться на других сайтах
Kucher2 122 Опубліковано: 2010-10-29 18:09:05 Автор Share Опубліковано: 2010-10-29 18:09:05 Простите за назойливость, может подкинете примерчик по типу: есть машина в сети 10.0.1.2. Для неё надо выдать реал IP 1.2.3.4. Как правильно написать для неё правила в скрипте ipfw, использую table? Тяжеловато мне пока с синтаксисом. Или бросьте ссылкой, чтоб было где почитать и вникнуть. На русском. ® Вы только не волнуйтесь, но ОНО к тому же ещё и глухое! P.S. Я чего-то не понял, или перенаправление белого IP на клиента по прежнему делается через natd и требует включения в ядро options IPDIVERT ? И возможно ли шейпить такого юзера с белым IP? Ссылка на сообщение Поделиться на других сайтах
andryas 1 059 Опубліковано: 2010-10-29 19:34:29 Share Опубліковано: 2010-10-29 19:34:29 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 и т.д., попутно изучая маны Ссылка на сообщение Поделиться на других сайтах
Kucher2 122 Опубліковано: 2010-10-29 22:35:49 Автор Share Опубліковано: 2010-10-29 22:35:49 Ага, на счёт проброса IP надыбал инфу про ng_nat: http://www.opennet.ru/tips/info/1943.shtml и ещё тут. а так же: http://www.opennet.ru/tips/info/1782.shtml Попробовал, получилось. Вкомпилил только ng_nat в ядро, чтоб не грузить модулем. Пока просто отказался от pf, вернул ipfw и запустил чтоб хоть как-то работало. До таблиц пока не дошёл. Всем искреннее спасибо, кто помог советом: у меня "плюсики" кончились на эти сутки. Ссылка на сообщение Поделиться на других сайтах
Kucher2 122 Опубліковано: 2010-10-30 12:29:32 Автор Share Опубліковано: 2010-10-30 12:29:32 Не делал пока никаких таблиц, юзерам отпустил канал. Народа щас правда человек 80 (а бывает больше сотни), трафик на закачку около 50Мбит - 4500pps, отдача 15Мбит 3000 pps. Картинка такая вот стала. Пинг стабильно 1мс. Даже когда я tafshow на ИФ запускаю и нагрузка на проц поднимается, потерь пакетов практически нет. Ссылка на сообщение Поделиться на других сайтах
adeep 212 Опубліковано: 2010-10-30 13:51:56 Share Опубліковано: 2010-10-30 13:51:56 посмотрите по systat -vm или по vmstat -i кто у вас все таки кушает прерывания. Ссылка на сообщение Поделиться на других сайтах
Kucher2 122 Опубліковано: 2010-10-30 14:19:48 Автор Share Опубліковано: 2010-10-30 14:19:48 посмотрите по 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 онлайн. Тут проскакивала мысль и она видимо верная - о кол-ве сессий. Чем глянуть кол-во сессий? Мне кажется это они. Ссылка на сообщение Поделиться на других сайтах
andryas 1 059 Опубліковано: 2010-10-30 14:35:53 Share Опубліковано: 2010-10-30 14:35:53 NATD выбросиь и натить ipfw'лом подгрузить модули и смотреть мой пример. kldload dummynet kldload ipfw kldload ipfw_nat Ссылка на сообщение Поделиться на других сайтах
Kucher2 122 Опубліковано: 2010-10-30 15:15:36 Автор Share Опубліковано: 2010-10-30 15:15:36 Хорошо, попробую попозже. Не смог систематизировать всё, пришлось по-быстрому лепить из того что понял. Метод проброса IP через ngctl мне понравился, хотелось бы оставить, он легко интегрируется в OnConnect для СТГ. Однозначно могу сказать одно: с PF действительно работало всё медленнее, чем даже с natd. У меня сейчас и страницы ощутимо быстрее открываются. Ссылка на сообщение Поделиться на других сайтах
adeep 212 Опубліковано: 2010-10-30 16:15:14 Share Опубліковано: 2010-10-30 16:15:14 Много прерываний кушают 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 вешаются. Ссылка на сообщение Поделиться на других сайтах
Kucher2 122 Опубліковано: 2010-10-30 17:42:27 Автор Share Опубліковано: 2010-10-30 17:42:27 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 подправлю позже: это ребут сервера нужен, меня съедят. Спасибо за помошь. Ссылка на сообщение Поделиться на других сайтах
Kucher2 122 Опубліковано: 2010-10-30 20:24:38 Автор Share Опубліковано: 2010-10-30 20:24:38 Удалено пока нафик. Читаю и разбираюсь. Ссылка на сообщение Поделиться на других сайтах
Kucher2 122 Опубліковано: 2010-11-02 02:46:28 Автор Share Опубліковано: 2010-11-02 02:46:28 Запустил таки ipfw_nat. С табличками вроде тоже понятно. Действительно удобно. Но самое главное - застрял я на пробросе белых IP. Кончились идеи, уже по всякому пробовал, не пойму почему не работает. Принципиально не хочу мутить ng_nat или другой, должен же этот работать, если его придумали. У меня реальники прописаны на внешнем ИФ. Делал и not table и redirect_addr на адрес внутрь локалки и из этой темы примеры брал и крутил их по всякому - нифига. Получается либо полный затык, либо адрес просто не пробрасывется, буд-то и нет того redirect_addr. Покажите пожалуйста рабочий конфиг или конкретный пример для моего случая - не могу найти развёрнутого объяснения, хотя надыбал несколько статей по настройке конкретно ipfw_nat. Конечно по сравнению с natd эта тема пока бедновата. Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас