The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Раздел полезных советов: Использование xtables-модуля xt_bpf..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Использование xtables-модуля xt_bpf..."  +/
Сообщение от auto_tips (??) on 20-Мрт-13, 12:40 
В ядре Linux 3.9 добавили xt_bpf - аналог нетграф-ноды ng_bpf из  FreeBSD. Без использования правил iptables на платформе x86_64 BPF-правило демонстрирует производительность 40K (40 GBps) netperf TCP_STREAM, после вставки 100 BPF-правил производительность составляет 28K.

Используемое BPF-правило:

   iptables -A OUTPUT -m bpf --bytecode '6,40 0 0 14, 21 0 3 2048,48 0 0 25,21 0 1 20,6 0 0 96,6 0 0 0,' -j

При использовании 100 эквивалентных правил через u32  производительность составляет 21K:

   iptables -A OUTPUT -m u32 --u32 '6&0xFF=0x20' -j DROP

Т.е. для достаточно приличного числа ситуаций можно получить как упрощение правил, так и их ускорение (тем более, что на некоторых платформах доступен net.core.bpf_jit_enable и инструкции bpf преобразуются в нативный код).

Для желающих использовать в более старых ядрах, доступен [[http://marc.info/?l=netfilter-devel&m=135777734825595&w=3 патч]] для ядра
и [[http://patchwork.ozlabs.org/patch/215095/ патч]] для  iptables.

В оригинале, для формирования байткода BPF автор модуля использует компилятор (который просто вызывает libpcap), хотя всё что нужно можно получить от tcpdump, указав ему подходящий интерфейс с DLT_RAW (для чего прекрасно подходит создаваемый после загрузки модуля ipip.ko интерфейс tunl0).

Пример использования:

   modprobe ipip
   tcpdump -i tunl0 -ddd 'udp' > udp.bpf
   tcpdump -i tunl0 -ddd 'icmp' > icmp.bpf
   iptables -A INPUT -m bpf --bytecode-file udp.bpf  -j LOG --log-prefix "udp: "
   iptables -A INPUT -m bpf --bytecode-file icmp.bpf  -j LOG --log-prefix "icmp: "

В dmesg мы увидим:

   [17453.963938] udp: IN=eth0 OUT= MAC=00:15:17:14:c8:c3:00:30:4f:64:71:92:08:00 SRC=192.168.100.1 DST=192.168.100.2 LEN=237 TOS=0x00 PREC=0x00 TTL=64 ID=63634 PROTO=UDP SPT=53 DPT=8516 LEN=217
   [17460.203403] icmp: IN=eth0 OUT= MAC=00:15:17:14:c8:c3:00:30:4f:64:71:92:08:00 SRC=192.168.100.1 DST=192.168.100.2 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=ICMP TYPE=8 CODE=0 ID=18090 SEQ=1


URL:
Обсуждается: https://www.opennet.ru/tips/info/2746.shtml

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Использование xtables-модуля xt_bpf для фильтрации через BPF..."  +/
Сообщение от Аноним (??) on 20-Мрт-13, 12:40 
>    iptables -A OUTPUT -m bpf --bytecode '6,40 0 0 14, 21 0 3 2048,48 0 0 25,21 0 1 20,6 0 0 96,6 0 0 0,' -j

Весьма очевидное и человеко-читаемое правило, я бы сказал :)

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

11. "Использование xtables-модуля xt_bpf для фильтрации через BPF..."  +/
Сообщение от Нанобот on 19-Май-13, 00:24 
там в восьмом опкоде ошибка :)
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

5. "Использование xtables-модуля xt_bpf для фильтрации через BPF..."  +/
Сообщение от Ой on 22-Мрт-13, 12:50 
Он же однопоточный вроде как, этот самый бпф
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

6. "Использование xtables-модуля xt_bpf для фильтрации через BPF..."  +/
Сообщение от Anonim (??) on 24-Мрт-13, 10:09 
Переведите кто-нить. Чего делают эти правила?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

7. "Использование xtables-модуля xt_bpf для фильтрации через BPF..."  +/
Сообщение от Andrey Mitrofanov on 24-Мрт-13, 14:06 
> Переведите кто-нить. Чего делают эти правила?

правИла рулЯт

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "Использование xtables-модуля xt_bpf для фильтрации через BPF..."  +/
Сообщение от Клейстер on 24-Мрт-13, 18:16 
bpf однопоточный, а вот netfilter - нет.

вот тут:
tcpdump -i tunl0 -ddd 'udp' > udp.bpf

мы компилируем bpf-правило в байткод и сохраняем в udp.bpf

iptables -A INPUT -m bpf --bytecode-file udp.bpf  -j LOG --log-prefix "udp: "

(добавили правило вместе с байткодом).

Вообще, автор модуля планирует отдельную утилиту для компиляции байткода(трюк с tunl0 ему хоть и понравился, но он против).

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

9. "Использование xtables-модуля xt_bpf для фильтрации через BPF..."  +/
Сообщение от Аноним (??) on 10-Апр-13, 17:19 
> Вообще, автор модуля планирует отдельную утилиту для компиляции байткода

Уже: http://git.netfilter.org/iptables/commit/?id=1ac30c97c339957...

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "Использование xtables-модуля xt_bpf для фильтрации через BPF..."  +/
Сообщение от Аноним (??) on 03-Май-13, 05:51 
Я нечо не понял!!!!
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

12. "Использование xtables-модуля xt_bpf для фильтрации через BPF..."  +/
Сообщение от Нанобот on 19-Май-13, 00:27 
> Я нечо не понял!!!!

та да, новость состоит из слабосвязаных мыслей в перемешку с консольными командами

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

13. "Использование xtables-модуля xt_bpf для фильтрации через BPF..."  +/
Сообщение от Анонизмус on 19-Май-13, 21:09 
Кто знает, тот поймет. Большое спасибо за новость. Очень ждал! А то u32 ну совсем уж дубовый...
Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Слёрм
Inferno Solutions
Hosting by Ihor
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2019 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру