|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Igor Blagodetelev 2:5000/104.54 26 Oct 2003 16:22:50 To : Aleksey Barabanov Subject : Re: [linux] Модуль сбора трафика -------------------------------------------------------------------------------- 24 Oct 03 21:46, you wrote to me: >> ppp, vlan, ipip, ...? AB> Точно. Понятно, тут буду думать - пока не знаю. Первая задача у меня - сделать ethernet. >> AB> Hо это не "недостаток", а "условие". >> Тогда надо думать чем-же отслеживать появление нового устройства. AB> Когда устройство регистрируется оно вписывается в ряд системных AB> таблиц. Я специально это еще не копал, но думаю можно найти вызовы AB> которые можно перехватывать. AB> В крайнем случае как обычно - делается утилитка , которая из AB> юзерспейса заставляет переинитить включение перехватов на отправку AB> пакетов и далее этот вызов прописывается в скрипты инициализации AB> динамических устройств. Hаверное сделаю так: в любом случае у меня будет тред, который будет проверять полноту заполнения буфера с данными, отвечать за своевременный запуск сброса данных на диск, вот он то и будет перечитывать список устройств и смотреть, на кого еще hook не прописан :) >> А вот тут по-подробнее, plz. Куда сдублировать и какие поля, >> например? AB> Поскольку подсчет траффика идет по ip то достаточно в точке AB> инициализации просто сохранить исходное значение ip-хедера. Эту точку AB> я еще не искал. Думаю что так или иначе в каждом драйвере. Hо можно AB> так как у вас сделать - подключиться N1 к хуку на прероутинг. Через AB> этот хук проходят все пакеты в исходном виде и в обязательном порядке. AB> Т.е. надо зарезервировать место в ядерном инклюде и при прохождении AB> этого хука как у вас и сделано сохранить ip хедер. Так не хотелось кернел патчить, а, похоже, придется... Тут у меня всплыл еще один вариант инициализации хука: добавить переменную netdevice.h, содержащую указатель на функцию инициализации хуков или NULL, если модуль учета трафика не загружен; в register_netdevice() вызывать (если не NULL) функцию для установки хука с передачей ссылки на вновь регистрируемый девайс. >> В идеале нужно добиться точности netflow цискиного, ну а по >> функциональности (учет AS, задержек в обработке...) - как получится. AB> Imho надо сделать максимально безглючный вывод сырых данных но с AB> минимальными издержками и в ascii виде. AB> Собственно этот добавочный дизайн и может быть отличием AB> коммерческого продукта от общеиспользуемого модуля и/или кернельного AB> патча. Похоже так и нужно сделать - и GNU Linux модуль есть и мне будет чего продавать :) AB> Главное как мне кажется если подсчет статистики проводить на выходе AB> девайса, то все импрувности типа файрвола, шейпинга, шедуйлинга с AB> полисингом и проч. роутинги с балансингами на реальные цифры ни как не AB> повлияют. И если за таким хостом поставить циску со счетчиком, то AB> циска намереет теже цифры. Если за - так и будет, если перед - нет. Шейпер может дропать пакеты - это я точно знаю и проверял на практике :) Тут как раз убытки будет провайдер нести, но как мне кажется несущественные при обычной работе пользователя. А вот если случится форс-мажор, скажем зарезано на 1Mbit/s, а со скоростью 100MBit/s прилетают UDP пакеты с любимым эксплоитом для MSSQL, то будет неприкольно. Hо в любом случае хочется добиться максимальной близости цифр насчитаных в случае "юзерской циски и провайдерского Linux-box" со 100% честностью. Igor --- GoldED+/LNX 1.1.4.7 * Origin: Кошка, которая гуляет сама по себе - кошка Мебиуса (2:5000/104.54) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/38843f9b9e27.html, оценка из 5, голосов 10
|