ates Опубликовано 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 интерфейса, но он в процессе. Если кого то заинтерисует - с радостью помогу с установкой и настройкой. Спасибо. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alex_001 Опубликовано 29 ноября, 2011 · Жалоба Интересно с виду - очень странно что нет ответов.. Наткнулся кстати случайно - искал примеры использования SNMP и Netflow для erlang. Кстати , отдельное спасибо автору за snmpcl - вроде мальнкий примерчик , но крайне полезный , но я например весьма долго доходил сам как snmp в erlang юзать.. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
shicoy Опубликовано 30 ноября, 2011 · Жалоба Интерес к биллингу равно такой, какой и к erlang, т.е. чуть более чем ноль. Был бы написан на том же, питоне-php, коммунити бы подтянулось. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alex_001 Опубликовано 30 ноября, 2011 · Жалоба Интерес к биллингу равно такой, какой и к erlang, т.е. чуть более чем ноль. Был бы написан на том же, питоне-php, коммунити бы подтянулось. Странно. Erlang весьма хорошо приспособлен к сетевым задачам (вернее OTP - собственно под это и создавался) и не сильно сложен в освоении (необычно конечно после императивных языков , но и не полный вынос мозга как haskell тот-же). Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ates Опубликовано 30 ноября, 2011 · Жалоба Интерес к биллингу равно такой, какой и к erlang, т.е. чуть более чем ноль. Был бы написан на том же, питоне-php, коммунити бы подтянулось. Erlang для подобного вида софта отлично подходит. К тому же, никто ж не говорить что абсолютно все компоненты должны быть написаны на нем, есть моменты когда лучше использовать другой язык и в итоге совместить в готовый продукт. На питоне-php и так хватает реализаций - это не интересно. В erlang есть некоторое возможности(горячая замена кода, легкие нити да и весь OTP way в целом), которые как раз для подходят для софта типа биллинг. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alex_001 Опубликовано 30 ноября, 2011 · Жалоба А насколько сильно оно завязано на сессионный доступ? Чтото я не понял сходу как например сделать модуль для IPoE например (понятно что тут dhcp видимо надо будет еще приделывать).. Видимо только с костыликами типа ISG? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ates Опубликовано 1 декабря, 2011 · Жалоба А насколько сильно оно завязано на сессионный доступ? Чтото я не понял сходу как например сделать модуль для IPoE например (понятно что тут dhcp видимо надо будет еще приделывать).. Видимо только с костыликами типа ISG? Расскажите как у вас IPoE сделан. Адреса абонентов статические? Привязка по mac/port на свитчах? Изначально Netspire задумывался как конструктор для написания конкретных систем под конкретные задачи, так как на 100% всем не угодишь. Поэтому скорее всего придется писать модуль на подобие модуля iptraffic и там закладывать логику работы. В любом случае, вот мой jid - ates@ipv6.dp.ua, дайти больше информации, я попробую реализовать такой модуль. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alex_001 Опубликовано 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 , крайне обрадовался :) , поискал по нику здесь , вот и поднял тему. Сейчас мне интереснее всего было бы понять архитектуру системы в общем виде и понять насколько это совпадает с моим представлением о том как все должно быть. Ну или "пример из жизни" - т.е как у вас оно используется. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ates Опубликовано 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 должен быть не много проще в реализации, так как не обязательно иметь понятие сессий и связаной с сессиями рутины. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ates Опубликовано 9 декабря, 2011 · Жалоба А насколько сильно оно завязано на сессионный доступ? Чтото я не понял сходу как например сделать модуль для IPoE например (понятно что тут dhcp видимо надо будет еще приделывать).. Видимо только с костыликами типа ISG? Я сейчас начал рефакторить и переделывать код системы в более правильный вид. Пока кодовая база не большая - легко будет понять что как сделано. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alex_001 Опубликовано 9 декабря, 2011 · Жалоба На гитхабе нет? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ates Опубликовано 9 декабря, 2011 · Жалоба На гитхабе нет? Пока нет, выложу когда соберу готовую систему. Глянь личные сообщения. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...