LINUX.ORG.RU
 

NPF: новый пакетный фильтр в NetBSD


0

0

В NetBSD-current появился новый пакетный фильтр npf, написанный с нуля литовцем Миндаугасом Расюкевичиусом (Mindaugas Rasiukevičius). Основные возможности:

  • фильтр разработан с учётом многопроцессорных машин и без использования блокировок для получения масштабируемой производительности — теперь пакетный фильтр не является узким местом на многопроцессорном маршрутизаторе;
  • быстрый поиск по хеш-таблице и красно-чёрному дереву;
  • динамическая фильтрация пакетов (на основе информации о соединениях), преобразование сетевых адресов и портов (NAPT) и шлюзы уровня приложений (ALG);
  • новый "движок" N-Code, написанный по основным принципам BPF: N-Code использует для нахождения соответствия в пакетах основные RISC-подобные инструкции и несколько CISC-подобных инструкций для обычных шаблонов наподобие адресов IPv4;
  • уже знакомые синтаксис конфигурирования и утилиты;
  • модульность и расширяемость: пользователи могут расширить NPF путём загрузки модуля ядра; NPF предоставляет разработчикам API, а правила NPF могут использовать специальный метод для активизации расширения.

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

  • повторная сборка пакетов IPv4;
  • двунаправленные NAT и перенаправление портов;
  • поддержка прокси FTP;
  • чистка флагов в заголовке IP;
  • блокировка пакетов ICMP и TCP RST;
  • сохранение и восстановление состояния;
  • журналирование пакетов, настраиваемые правила фильтрации.

Стоит отметить, что в NPF ещё не реализована поддержка IPv6. Автор NPF согласился предоставить техническую поддержку разработчикам, которые будут этим заниматься. Поддержку IPv6 обещают в ближайшем будущем.

>>> Подробности


[#]  
dimqua

Велосипед?

* ()
[#]  

и чем оно лучше pf?

anonymous ()
[#]  
post-factum

> рутеров

Молодец, правильно написал. Но нетрадиционно.

***** ()
[#]  

> Фильтр заточен

Какое-то просторечное выражение. Или в прямом смысле "заточен напильником"?

* ()
[#] Ответ на: комментарий от irq 14.09.2010 2:51:50  

прошу для эстетов сделать s/заточен/притален/g

***** ()
[#]  
registrant

>использование всей мощи многопроцессорных рутеров.

аж в дрожь бросает

***** ()
[#]  

Фильтрацию по содержимому пакета (не обертки ether/ip) оно умеет? Что-то по npf_ncode.9 не понятно.

()
[#] Ответ на: комментарий от registrant 14.09.2010 4:09:05  
helios

>> использование всей мощи многопроцессорных рутеров.

> аж в дрожь бросает


Так рабы закона Мура же!

*** ()
[#]  
helios

Ещё чуть-чуть и тегов было бы больше, чем самого текста :)

*** ()
[#] Ответ на: комментарий от dimqua 13.09.2010 21:06:27  

Не велосипед, просто литовец начал писать его еще до выхода первой версии obsd с pf, литовские программисты, такие литовские :D

anonymous ()
[#] Ответ на: комментарий от irq 14.09.2010 2:51:50  

>Какое-то просторечное выражение. Или в прямом смысле "заточен напильником"?
что можно заточить напильником?

*** ()
[#]  

Представил себе роутер с i7 внутри, порвал шаблон.

anonymous ()
[#]  
sf

> Миндаугасом Разикевичем
> Mindaugas Rasiukevicius


Итого, предположительно Миндаугасом Разюкевичиусом

* ()
[#]  

Раз уж bytecode в виде тэга, то добавьте ещё: N-Code, ipv4, lack of ipv6, nat, napt, ALGs, port forwarding, ftp proxy, ip header flags cleansing, rst blocking, save state, restore state, packet logging

anonymous ()
[#]  
MuZHiK-2

Я немного дописал новость, не пугайтесь.

*** ()
[#] Ответ на: комментарий от anonymous 14.09.2010 8:09:46  
dogbert

>Представил себе роутер с i7 внутри, порвал шаблон.
>многопроцессорных

А теперь представь, что там этих i7 несколько. И у каждого свой здоровенный кулер.

**** ()
[#] Ответ на: комментарий от MuZHiK-2 14.09.2010 9:12:00  
registrant

>Я немного дописал новость, не пугайтесь.

хорошо, что ты хоть комменты редактировать не можешь

***** ()
[#]  
CKPbIT_HUK

В принципе круто. Ждём в FreeBSD =) Хотя зачем, если есть IPFW? Он вроде тоже масштабироваться может на SMP.

ЗЫ: В мире бсд с файерволами скоро будет такой же зоопарк как в мире линукс с менеджерами пакетов и ФС...

()
[#] Ответ на: комментарий от dogbert 14.09.2010 9:26:33  

У меня реально такая проблема вставала, что грузит 1 горшок, а остальные 7 простаивают, а пакеты виснут.

()
[#]  
mikhalich

Хрена новость выросла. Это мужик-2 постарался? Молодцом, будешь в наших краях - пивом угостим

** ()
[#]  

> написанный с нуля литовцем

Спасибо, но не нужно

** ()
[#] Ответ на: комментарий от anonymous 13.09.2010 21:21:02  
yurkis

>и чем оно лучше pf?

Ну вроде как изначально заточено под SMP.

"фильтр разработан с учётом многопроцессорных машин и без использования блокировок для получения масштабируемой производительности — теперь пакетный фильтр не является узким местом на многопроцессорном маршрутизаторе;"

* ()
[#]  

netbsd еще живо? или автор перелючился с os/2 на свежачок?

***** ()
[#]  
cruxish

Казалось бы, при чём тут Linux?..

*** ()
[#] Ответ на: комментарий от CKPbIT_HUK 14.09.2010 9:47:26  
annulen

>ЗЫ: В мире бсд с файерволами скоро будет такой же зоопарк как в мире линукс с менеджерами пакетов и ФС...

значит, bsd-файрволлы более востребованы, чем файлохранилища

** ()
[#] Ответ на: комментарий от cruxish 14.09.2010 12:33:51  
ventilator

Теперь команда netfilter из спортивного интереса должна наконец-то выпилить из своего продукта блокировки и сделать netfilter быстрым на smp.

** ()
[#]  

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

anonymous ()
[#] Ответ на: комментарий от anonymous 14.09.2010 13:22:55  
ventilator

Бывают. У провайдеров к примеру. В случае домашнего роутера конечно никакого смысла в куче i7 ядер нету, а вот провайдеры такое используют.

** ()
[#] Ответ на: комментарий от anonymous 14.09.2010 13:22:55  

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

на что их хватает? стандартный роутер даже 100мбит не маршрутизирует. Не успевает.

***** ()
[#]  
gns

А чем не устраивает штшатный IPFilter?

** ()
[#]  
eR

>Rasiukevičius

я думал окончания только -ускас есть, как у меня.

**** ()
[#] Ответ на: комментарий от ventilator 14.09.2010 13:34:35  

И не обязательно куча i7. К примеру, несколько низкочастотных mips ядер могут быть лучше чем одно высокочатотное. Я о энергопотреблении.

* ()
[#] Ответ на: комментарий от anonymous 14.09.2010 13:22:55  
yurkis

>А многопроцессорные роутеры вообще бывают? Интересно, на какую нагрузку расчитаны? Ведь в обычных роутерах процы порядка 300 мгц если я не ошибаюсь, и ничего, хватает.

Еще как бывают. Как роутить терабит да еще и с большим правил?

* ()
[#] Ответ на: комментарий от madcore 14.09.2010 14:27:06  
registrant

ты б еще размер нормальный сделал :) (<31кбайт)

***** ()
[#] Ответ на: комментарий от yurkis 14.09.2010 15:32:22  

> Еще как бывают. Как роутить терабит да еще и с большим правил?

Ну да, 4-головым роутером. И всенепременно с фряхой на борту, в крайнем случае - gentoo.

()
[#] Ответ на: комментарий от exst 14.09.2010 14:27:47  
vertexua

А кусок бетона имеет еще меньшее энергопотребление

*** ()
[#] Ответ на: комментарий от nicolnx 14.09.2010 16:01:57  
yurkis

>> Еще как бывают. Как роутить терабит да еще и с большим правил?

>Ну да, 4-головым роутером. И всенепременно с фряхой на борту, в крайнем случае - gentoo

А если 2xMIPS? Или любым многоголовым девайсом с JunOS. Или да, 2-х головым роутером с фряхой.

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

* ()
[#] Ответ на: комментарий от yurkis 14.09.2010 16:57:07  
ventilator

а нужно правила писать уметь, а то понапишут over9000 линейных правил, ни ipset, ни хештаблиц при шейпинге и потом оказывается что укакиваются. Старый атлон 1.8 влегкую делает 300 мегабит при правильной настройке. Да и дело чаще в pps, а не в мегабитах.

А джунос сам не роутит, а только управляет железными асиками обычно.

** ()
[#] Ответ на: комментарий от ventilator 14.09.2010 17:59:13  

> а нужно правила писать уметь, а то понапишут over9000 линейных правил

А должны быть юзерлэнд утилиты, умеющие эффективно компилировать правила, написанные неоптимально.

***** ()
[#] Ответ на: комментарий от dilmah 14.09.2010 18:23:34  
ventilator

Мне кажется что если берешься роутить что-то не в домашних условиях, и еще нужно много правил, стоит понимать что делаешь, а не пользоваться юзерленд утилитами. Это только в виндовсе у файрвола две кнопки - "cцуко фильтруй" и "погодь фильтровать"

** ()
[#] Ответ на: комментарий от anonymous 14.09.2010 13:22:55  

> А многопроцессорные роутеры вообще бывают?

Не слышал о таких. У T1600 с самым навороченным route engine RE-TXP-DUO-2600-16G-BB - один dual core celeron 2,66 внутри, если верить официальному даташиту. Практически все маршрутизирующие функции давно уже выгружены на ASIC'и.

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

anonymous ()
[#] Ответ на: комментарий от anonymous 14.09.2010 18:43:59  
ventilator

Если роутером считать только то на чем наклеена надпись cisco/juniper/etc то бывают, но сабж вряд ли там будет использоваться.

Если считать роутером все что выполняет такие функции в том числе x86 машины с линуксом/фрибсд то бывает тем более

** ()
[#] Ответ на: комментарий от ventilator 14.09.2010 18:58:08  

>Если роутером считать только то на чем наклеена надпись cisco/juniper/etc то бывают, но сабж вряд ли там будет использоваться.

Если говорить о JUNOS (который и на роутерах и на тех же SRX, например), то он основан на фряхе и можно предположить, что там используется bpf. Проблема в том, что предположить можно, а так фиг его знает, коды-то закрыты. Могли и свое что-то написать, захотят и n-code запихают. И никому об этом не расскажут. Что поделаешь, вендор. И это еще не самый скрытный вендор. =)

А насчет "бывают", было бы здорово, если бы подтвердили свои слова чем-нибудь, например ссылкой. Я узнаю для себя что-то новое, да и другим участникам ветки, думаю, будет интересно. Имею в виду конечные продукты на JUNOS, IOS и тому подобных ОС.

anonymous ()
[#] Ответ на: комментарий от anonymous 14.09.2010 19:25:56  
ventilator

Предположить конечно можно, только джунос - это контрол-плейн, он форвардингом пакетов не занимается, а только получением роутов/etc и заливкой результатов в pfe(packet forwarding engine).

Любой серьезный железный роутер имеет дублирование управляющих плат, соотвественно процессор там не один. Я думаю это можно без проблем загуглить. Но только форвардинг делают асики - тоже процессоры, не общего назначения. И сабж вряд ли применим к ним.

** ()
[#] Ответ на: комментарий от anonymous 14.09.2010 19:25:56  

Косвенно, подтверждением использования bpf Жунипером являются понатыканные там и сям в bpf.h комментарии вида:

* Juniper-private data link type, as per request from Hannes Gredler <hannes@juniper.net>.

http://fxr.watson.org/fxr/source/net/bpf.h?v=FREEBSD8

Слухи, разоблачения на линуксоргру. =)

anonymous ()
[#]  

facepalm

Два раза уже фамилию исправляли, исправьте, что-ли, и еще разок — «Расюкявичюс».

Совсем братьев-литовцев забыли, господа.

()