ates Posted December 16, 2010 Posted December 16, 2010 Прошу посмотреть на проект биллинговой системы. Система модульная, разделена на несколько основных частей: 1. netspire-core - основная часть, включает в себя основные блоки для построения модулей для обслуживание разного рода сервисов: * RADIUS сервер * Netflow коллектор (v5 и v9) * Реализацию основных протоколов аунтификации (PAP, CHAP, MSCHAPv2, Digest) * RPC модуль * IPPool модуль 2. netspire-iptraffic - модуль для обслуживания VPN клиентов. Поддерживает тарификацию по src/dst ip, src/dst port, protocol и времени суток. 3. netspire-postgresql - драйвер к postgresql 4. netspire-modules - пока включает только два модуля: для отключения клиентов посылкой DM на NAS и выполнением внешнего скрипта/программы. Лицензия: GPL. Система написана на языке Erlang. Работает везде где работает Erlang, тестировалась на linux, bsd, osx. Основная база данных - postgresql, но прикрутить другую довольно легко. Тут лежат исходники: https://github.com/ates/netspire-core https://github.com/ates/netspire-iptraffic https://github.com/ates/netspire-postgresql https://github.com/ates/netspire-modules Документация, сейчас не совсем готова, но кое что есть: https://github.com/ates/netspire-core/wiki В данный момент биллинг работает в связке с accel-pptp. Пытаюсь тестировать на сколько могу. Если есть у кого то возможность/время потестировать - буду благодарен за сообщения об ошибках. Пока что нет web интерфейса, но он в процессе. Если кого то заинтерисует - с радостью помогу с установкой и настройкой. Спасибо. Вставить ник Quote
alex_001 Posted November 29, 2011 Posted November 29, 2011 Интересно с виду - очень странно что нет ответов.. Наткнулся кстати случайно - искал примеры использования SNMP и Netflow для erlang. Кстати , отдельное спасибо автору за snmpcl - вроде мальнкий примерчик , но крайне полезный , но я например весьма долго доходил сам как snmp в erlang юзать.. Вставить ник Quote
shicoy Posted November 30, 2011 Posted November 30, 2011 Интерес к биллингу равно такой, какой и к erlang, т.е. чуть более чем ноль. Был бы написан на том же, питоне-php, коммунити бы подтянулось. Вставить ник Quote
alex_001 Posted November 30, 2011 Posted November 30, 2011 Интерес к биллингу равно такой, какой и к erlang, т.е. чуть более чем ноль. Был бы написан на том же, питоне-php, коммунити бы подтянулось. Странно. Erlang весьма хорошо приспособлен к сетевым задачам (вернее OTP - собственно под это и создавался) и не сильно сложен в освоении (необычно конечно после императивных языков , но и не полный вынос мозга как haskell тот-же). Вставить ник Quote
ates Posted November 30, 2011 Author Posted November 30, 2011 Интерес к биллингу равно такой, какой и к erlang, т.е. чуть более чем ноль. Был бы написан на том же, питоне-php, коммунити бы подтянулось. Erlang для подобного вида софта отлично подходит. К тому же, никто ж не говорить что абсолютно все компоненты должны быть написаны на нем, есть моменты когда лучше использовать другой язык и в итоге совместить в готовый продукт. На питоне-php и так хватает реализаций - это не интересно. В erlang есть некоторое возможности(горячая замена кода, легкие нити да и весь OTP way в целом), которые как раз для подходят для софта типа биллинг. Вставить ник Quote
alex_001 Posted November 30, 2011 Posted November 30, 2011 А насколько сильно оно завязано на сессионный доступ? Чтото я не понял сходу как например сделать модуль для IPoE например (понятно что тут dhcp видимо надо будет еще приделывать).. Видимо только с костыликами типа ISG? Вставить ник Quote
ates Posted December 1, 2011 Author Posted December 1, 2011 А насколько сильно оно завязано на сессионный доступ? Чтото я не понял сходу как например сделать модуль для IPoE например (понятно что тут dhcp видимо надо будет еще приделывать).. Видимо только с костыликами типа ISG? Расскажите как у вас IPoE сделан. Адреса абонентов статические? Привязка по mac/port на свитчах? Изначально Netspire задумывался как конструктор для написания конкретных систем под конкретные задачи, так как на 100% всем не угодишь. Поэтому скорее всего придется писать модуль на подобие модуля iptraffic и там закладывать логику работы. В любом случае, вот мой jid - ates@ipv6.dp.ua, дайти больше информации, я попробую реализовать такой модуль. Вставить ник Quote
alex_001 Posted December 1, 2011 Posted December 1, 2011 А насколько сильно оно завязано на сессионный доступ? Чтото я не понял сходу как например сделать модуль для IPoE например (понятно что тут dhcp видимо надо будет еще приделывать).. Видимо только с костыликами типа ISG? Расскажите как у вас IPoE сделан. Адреса абонентов статические? Привязка по mac/port на свитчах? Изначально Netspire задумывался как конструктор для написания конкретных систем под конкретные задачи, так как на 100% всем не угодишь. Поэтому скорее всего придется писать модуль на подобие модуля iptraffic и там закладывать логику работы. В любом случае, вот мой jid - ates@ipv6.dp.ua, дайти больше информации, я попробую реализовать такой модуль. Либо ipmacport либо авторизация на FW клиентом с компа (+static arp , вернее фильтрация arp). Есть еще вариант с Opt82. Адреса статические. Хотя большая часть клиентов через туннели (pptp,l2tp) - но постепенно отказываемся. Собственно заинтересовался т.к собирался делать примерно тоже самое на Erlang'e , разбирался с snmp , нашел модуль snmpc на гитхабе , посмотрел что еще лежит рядом , нашел Netspire , крайне обрадовался :) , поискал по нику здесь , вот и поднял тему. Сейчас мне интереснее всего было бы понять архитектуру системы в общем виде и понять насколько это совпадает с моим представлением о том как все должно быть. Ну или "пример из жизни" - т.е как у вас оно используется. Вставить ник Quote
ates Posted December 1, 2011 Author Posted December 1, 2011 Что сейчас реализовано: 1. netspire-core: * Функции для работы с IP адресами (не все совместимы с IPv6) * Функции для работы с динамическими модулями, хуками * Работа с конфиг файлом, логами * RADIUS сервер (не поддерживает radius-proxy) * Netflow коллектор (v5, v9) * Модули аунтификации для радиуса * PAP * CHAP * MSCHAPv2 c MPPE * Digest (делалось для VoIP SIP) * EAP-MD5 * Модуль RPC для вызова функций из сторонних приложений (протокол сериализации BERT) * Модуль IPPool - для выдачи динамических ip адресов и работы с пулами адресов * Простой RADIUS клиент 2. netspire-iptraffic: * Управляет сессиями пользователей(create/interim/close) на основе Access-Request, Accounting-Start/Stop от RADIUS * Поддержка RADIUS accounting * Принимает netflow поток от коллектора, обсчитывает сумму денег на основе класса трафика * Работа с классами трафика по след. критериям: * Время суток * Дни недели * Тип протокола и номер порта * Src/Dst адрес/сети * Авто подъем сессий случае аварийного завершения биллинга * Отключения клиентов при отрицательном балансе 3. netspire-postgresql: * Использует драйвер для postgres (https://github.com/wg/epgsql) * Пул подключений 4. netspire-modules: * Модуль для отправки DM сообщения на NAS (используется для отключения клиентов) * Модуля для выполнения внешней скрипта/программы, тоже используется для отключения клиентов * Модуля для работы с GeoIP базой Логика работы реализуется в отдельных модулях, по аналогии с iptraffic, доступ к событиям из ядра системы (netspire-core) через хуки либо через добавления handler модулей (netflow) Для IPoE нужно будет писано новый dynamic module. Сейчас система работает в такой конфигурации: Есть N клиентов, подключаются они по PPP - сервер используется accel-ppp. Тарифы помегабайтные и безлимитные, установка скоростей через RADIUS атрибуты. Отключение клиентов посылкой DM на accel-ppp. В вашем случае модуль для IPoE должен быть не много проще в реализации, так как не обязательно иметь понятие сессий и связаной с сессиями рутины. Вставить ник Quote
ates Posted December 9, 2011 Author Posted December 9, 2011 А насколько сильно оно завязано на сессионный доступ? Чтото я не понял сходу как например сделать модуль для IPoE например (понятно что тут dhcp видимо надо будет еще приделывать).. Видимо только с костыликами типа ISG? Я сейчас начал рефакторить и переделывать код системы в более правильный вид. Пока кодовая база не большая - легко будет понять что как сделано. Вставить ник Quote
ates Posted December 9, 2011 Author Posted December 9, 2011 На гитхабе нет? Пока нет, выложу когда соберу готовую систему. Глянь личные сообщения. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.