LINUX.ORG.RU

Erlang и ловля траффика

 ,


2

4

Здравствуйте, возможно ли реализовать каким-нибудь образом перехват всего траффика с сетевого интерфейса и передачу его приложению, в данном случае написанного на Erlang. Находил информацию, что можно сделать с помощью pcap, но при высокой нагрузке на интерфейс происходит потеря пакетов, чего не хотелось бы. Есть у кого опыт реализации подобных вещей?


Ответ на: комментарий от r

А как же Hipe? Он не даст хорошего прироста к обработке бинарных данных? Ну там тесты, конечно, тот ещё матан вычислительный, в который Эрл не может быстро. Мне нужно будет всего паттерн матчить, да получать значения из пакетов, что, думаю, будет ненамного медленнее, чем на C.

Demacr ()
Ответ на: комментарий от Demacr

А как же Hipe?

Да никак:
http://benchmarksgame.alioth.debian.org/u64q/benchmark.php?test=all&lang=...
http://benchmarksgame.alioth.debian.org/u64q/benchmark.php?test=all&lang=...


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

erlang vm очень медленный. Если ты обойдешься матчингом бинарей может что-то и успеешь - но если ты собираешься паттерн матчить траффик который pcap не успевает даже перехватывать....

И сложный и много ли ожидается матчинга?

r ★★★★★ ()
Ответ на: комментарий от r

Да думал в качестве хобби наваять NetFlow коллектор + Syslog + SNMP сервера + на закуску (Самое тяжелое для Эрла) анализатор траффика. Но чую, что туго потянет ВМ.

Demacr ()

Что бы не терять пакеты, используй pfring. Для erlang бери https://github.com/msantos/epcap, он поддерживает сборку с pfring.

Для декодинга трафика - https://github.com/msantos/pkt

Этого достаточно что бы получить netflow коллектор, snmp есть в OTP, а сислог не сложно.

По поводу медленности vm, не все так плохо, есть приложение которое занимается декодингом sigtran трафика в большом регионе одного оператора, справляется на отлично.

ates ()
Ответ на: комментарий от ates

Благодарю за ответ. Я как раз подумывал о создании подобия pkt. Будем копать и пробовать.

Demacr ()

помимо указанного pcap есть варианты:

1) iptables умеет отдавать пакеты внешним приложениям, гугли NFQUEUE и NFLOG; imho лучший вариант - на уровне фаервола отрулить правила, что считать что не считать

2) сокет можно открыть в RAW режиме и получить всё необходимое

MKuznetsov ★★★★★ ()
Ответ на: комментарий от MKuznetsov

2) RAW всё необходимое это даже протоколы 2 уровня? а-ля cdp. 1) тут как понимаю надо хук написать в виде модуля? Если да, то как потом без потери пакета передать в приложение?

Demacr ()
Ответ на: комментарий от Demacr

Да думал в качестве хобби наваять NetFlow коллектор

в дикой природе существует модуль ядра ipt-netflow (ну или как-то так)

можешь начать с него

geek ★★★ ()
Ответ на: комментарий от geek

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

Demacr ()
Ответ на: комментарий от Demacr

Raw сокет ловит все, включая фреймы ethernet. Собственно pcap использует его снизу, добавляя небольшую очередь и bpf фильтр. Если bpf вам не нужен и есть навык сетевого программирования, то под свои цели вы можете сделать свою прослойку более устойчивую к нпгрузкам

MKuznetsov ★★★★★ ()
Ответ на: комментарий от Demacr

Ты главное код потом выкладывай того что получилось, еще, если надумаешь делать аналог pkt, дай знать, сам собирался переделывать этот pkt.

ates ()

насчет pcap не скажу, а сервера для UDP, TCP в Erlang реализованы замечательно. Тем более, что на этой платформе реализовано ПО для работы с коммуникационным оборудованием...

swwwfactory ★★ ()

use FreeBSD, Luke

Там netflow в ядре искаропки. Копировать каждый пакет в юзерспейс никто не потянет.

anonymous ()
Ответ на: use FreeBSD, Luke от anonymous

Нет, спасибо. К тому же мне не только нетфлоу нужен, а еще и пакетики. Выше писали про pfring. Прочел о нем, должен потянуть.

Demacr ()
Ответ на: комментарий от vromanov

Спасибо. Интересно, даже очень, но кресты не знаю и программинг не основное ремесло.

Demacr ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.