Supra 0 Опубликовано: 2004-11-08 08:46:03 Share Опубликовано: 2004-11-08 08:46:03 Сначала предыстория. Имеется сервер на Linux RH9, процессор P3-800, 256 оперативы. Стоит все это дело на 100МБит канале. У нас в городе такая ситуация - бесплатный трафик по городу и платный за пределы области, его тут называют "внешка". Выбор в свое время (2 года назад) был сделан в пользу stargazer - функционально законченная и очень удобная система. Навороты в плане тарифных планов не требовались - у нас на весь город один тарифный план Единственное, что насторожило сразу - довольно большая загрузка процессора. Однако с ростом количества пользователей и, соответственно, нагрузки, то что считал stargazer перестало совпадать со статистикой вышестоящего провайдера (они снимают статистику с цыски). После некоторых разборов оказалось, что используемый метод подсчета имеет недостаток - при большой нагрузке библиотека libpcap начинает пропускать пакеты (вобщем-то известный факт). А соответственно и наши деньги. А если на сервере чего-то запускалось и загружало процессор под завязку, stargazer оно вообще придавливало и он вообще ничего не считал. Вариантов было собственно два - либо отказаться от stargazer, либо его доработать. Я склонился ко второму, т.к. система все-таки очень удобная, и пользователям нравится, что трафик можно видеть практически в реальном времени. Для реализации подсчета трафика было решено использовать счетчики iptables. За основу был взят stargazer 1.1.4.2 beta 4. Вторую версию решил не трогать, т.к., во-первых, необкатанная, а во-вторых, как сказано выше, навороты в плане тарифных планов не требовались. Взаимодействие с ядром частично сделал с помощью libiptc, а частично вызовами собственно iptables, используя функцию system - как добавлять правила в цепочки с помощью libiptc, пока не разобрался, в будущем, надеюсь, получится Пришлось подновить авторизатор - старый почему-то не хотел коннектится, хотя тот код я вроде не трогал. С версией 1.0.0.16 все в порядке. Пока что все в стадии тестирования. Если будут какие-то изменения или баги - сообщу. Есть желание базу с юзверями запихать в MySQL. Непонятно, почему автор сделал все на текстовых файлах, может, чтобы упростить установку и настройку? Если кому интересно - пишите, кину код. P.S. Меня можно найти в IRC сети RUSNet, канал #ultranet Ссылка на сообщение Поделиться на других сайтах
stg-34 0 Опубліковано: 2004-11-08 10:36:31 Share Опубліковано: 2004-11-08 10:36:31 В ближайшем билде постараюсь сделать альтернативный вариант захвата пакетов. На выбор захват пакетов наподобие libcap (есть сейчас) и с помощью divert socets (т.е. с помощью файрвола). Второй вариант, как мне кажется, будет сложнее в настройке, но зато гарантированно не будет пропусков пакетов. Всё это отностися к стг-2. Ссылка на сообщение Поделиться на других сайтах
St@lker 0 Опубліковано: 2004-11-08 12:55:02 Share Опубліковано: 2004-11-08 12:55:02 Кстати, тут такой трабл может быть, если считать каунтеры iptables (Linux) то тогда прийдётся много переделывать для ipfw (FreeBSD) ... или я не прав? Ссылка на сообщение Поделиться на других сайтах
stg-34 0 Опубліковано: 2004-11-08 13:25:10 Share Опубліковано: 2004-11-08 13:25:10 Кстати, тут такой трабл может быть, если считать каунтеры iptables (Linux) то тогда прийдётся много переделывать для ipfw (FreeBSD) ... или я не прав? Divert sockets есть и под Линукс и под Фрю. Каунтеры считать никто не будет. Всё будет по старому, только изменится источник получения данных о проходящих пакетах. Ссылка на сообщение Поделиться на других сайтах
Гость Guest Опубліковано: 2004-11-08 20:10:51 Share Опубліковано: 2004-11-08 20:10:51 Да, ДА, скорей бы а то я тут уже 5 скриптов напсал которые статистику с каунтеров ipfw снимают и потом в файл stat для каждого пользователя добавляют, я писал уже пост на эту тему но никто не откликнулся.... пост: http://local.com.ua/forum/index.php?showtopic=963 Ссылка на сообщение Поделиться на других сайтах
XoRe 0 Опубліковано: 2004-11-09 09:23:31 Share Опубліковано: 2004-11-09 09:23:31 Divert sockets есть и под Линукс и под Фрю. Каунтеры считать никто не будет. Всё будет по старому, только изменится источник получения данных о проходящих пакетах. Т.е. на примере ipfw будет так: divert порт ip from тырыпыры to вот? Т.е. нужно будет дивертить или тиить(tee) пакеты старгазеру? Это, конечно, неплохо. Но я за bpf'ом ошибок в подсчете не замечал. Ссылка на сообщение Поделиться на других сайтах
Supra 0 Опубліковано: 2004-11-09 19:47:42 Автор Share Опубліковано: 2004-11-09 19:47:42 Divert sockets есть и под Линукс и под Фрю. Каунтеры считать никто не будет. Всё будет по старому, только изменится источник получения данных о проходящих пакетах. Т.е. также на каждом пакете будет поиск по массиву с юзверями и куча вычислений с плавающей точкой? А если не успеет? Будет пропускать пакеты или будет тормозить скорость передачи? Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас