The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Анализатор трафика"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [ Отслеживать ]

"Анализатор трафика"  
Сообщение от Анатолий email(??) on 02-Янв-09, 04:25 
реализовал представленое по ссылке
https://www.opennet.ru/base/dev/traffic_analyze.txt.
c маленькими изменениями
грубо говоря фиксирует объемы входящего трафика на каждую подсеть
раз в секунду отправляет данные на другую машину.

do {
        rec = recvfrom(eth0_if, (__u8 *)buff, ifp.mtu + 18, 0, NULL, NULL);
        if(rec < 0 || rec > ETH_FRAME_LEN) {
            perror("recvfrom\n");
            return -1;
        }
            eth=buff;
            ip=buff + ETH_HLEN;
                __u8 net;
                    net=(__u8)((ip->daddr & 0x00fe0000)>>16);
                    counter_net[net]+=rec;
                }
                counter_proto[ip->protocol]++;
                t=time(NULL);
                    et=t;
                    counter_net[256]=0;
                    counter_proto[256]=1;
                    counter_packet_size[256]=2;
                    counter_packet_size[(rec>>6)&0x00ff]++;
                    int i=0;
                    for (i=0;i<256;i++){
                            counter_net=0;
                            counter_proto=0;
                            counter_packet_size=0;
                    }
                }
        }
    } while(1);


проблема в том, что это я запускаю на гигабитном интерфейсе и данный цикл грузит проц на 90-95 процентов

как окозалось, даже вот такое упрощение
do {
        rec = recvfrom(eth0_if, (__u8 *)buff, ifp.mtu + 18, 0, NULL, NULL);
        if(rec < 0 || rec > ETH_FRAME_LEN) {
            perror("recvfrom\n");
            return -1;
        }
   } while(1);

грузит проц на 80%

зато iptables на 3000 правил, практически не грузит процессор, хотя через него пролетает гигабит/с в обоих направлениях
шейпер с использованием хеша, также не грузит

ктонибудь подскажет как реализовать более производительную схему?
обрабатывать мне нужно каждый пакет проходящий через интерфейс

ЗЫ: и ipcad грузит процесор поменьше

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

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


1. "Анализатор трафика"  
Сообщение от vic (??) on 02-Янв-09, 05:03 
м.б. дело в promiscuous mode?

и это, режим часом не O_NONBLOCK ?)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Анализатор трафика"  
Сообщение от Анатолий email(??) on 02-Янв-09, 19:27 
>м.б. дело в promiscuous mode?
>
>и это, режим часом не O_NONBLOCK ?)

promiscuous mode
проверю

а можно подробнее про O_NONBLOCK


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Анализатор трафика"  
Сообщение от vic (??) on 02-Янв-09, 20:55 
>>м.б. дело в promiscuous mode?
>>
>>и это, режим часом не O_NONBLOCK ?)
>
>promiscuous mode
>проверю
>
>а можно подробнее про O_NONBLOCK

ну-у, мы не знаем какие опции у вас на сокет проставлены.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Анализатор трафика"  
Сообщение от Анатолий email(??) on 02-Янв-09, 19:37 
>м.б. дело в promiscuous mode?
>
>и это, режим часом не O_NONBLOCK ?)

promiscuous mode отключил, результата практически нету!


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Анализатор трафика"  
Сообщение от v.i.t (??) on 02-Янв-09, 08:39 
а это для чего ? ( непонятно ;-) )
                    int i=0;
                    for (i=0;i<256;i++){
                            counter_net=0;
                            counter_proto=0;
                            counter_packet_size=0;
                    }
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Анализатор трафика"  
Сообщение от Анатолий email(??) on 02-Янв-09, 19:28 
>[оверквотинг удален]
>          
>     counter_net=0;
>            
>          
>     counter_proto=0;
>            
>          
>     counter_packet_size=0;
>            
>        }

ошибка при копировании
counter_net=0;
                            counter_proto=0;
                            counter_packet_size=0;

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Анализатор трафика"  
Сообщение от NuINu (??) on 02-Янв-09, 14:19 
>[оверквотинг удален]
>
>
>зато iptables на 3000 правил, практически не грузит процессор, хотя через него
>пролетает гигабит/с в обоих направлениях
>шейпер с использованием хеша, также не грузит
>
>ктонибудь подскажет как реализовать более производительную схему?
>обрабатывать мне нужно каждый пакет проходящий через интерфейс
>
>ЗЫ: и ipcad грузит процесор поменьше

почитайте книжку Вани Склярова Программирование боевого софта под Linux
там все понятно объяснено в 9 главе почему iptables не грузит проц.

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

у вас же валиться весь трафик в юзерское пространство. что достаточно накладно.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Анализатор трафика"  
Сообщение от Анатолий email(??) on 02-Янв-09, 19:31 
>[оверквотинг удален]
>почитайте книжку Вани Склярова Программирование боевого софта под Linux
>там все понятно объяснено в 9 главе почему iptables не грузит проц.
>
>
>если коротко, то все действия iptables осуществляются в ядре, и копирование данных
>в юзерское пространство не выполняется. при этом работают фильтры, которые быстренько
>отсекает ненужные данные.
>
>у вас же валиться весь трафик в юзерское пространство. что достаточно накладно.
>

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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Анализатор трафика"  
Сообщение от Аноним (??) on 03-Янв-09, 17:49 
>так то оно так, вот только ipcad не являющийся частью ядра, не
>грузит так проц,
>к томуже , сама процедура выборки без кода обработки грузит проц не
>намного меньше, вот я и скланяюсь к мысли, что выборку можно
>делать както под другому, вот только не пойму как

pcap
или ULOG (в этом случае и фильтровать можешь предварительно)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

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

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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