Jump to content
Калькуляторы

Billing: Netspire Прошу помочь в тестировании

Прошу посмотреть на проект биллинговой системы.

 

Система модульная, разделена на несколько основных частей:

 

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 интерфейса, но он в процессе.

 

Если кого то заинтерисует - с радостью помогу с установкой и настройкой. Спасибо.

Share this post


Link to post
Share on other sites

Интересно с виду - очень странно что нет ответов.. Наткнулся кстати случайно - искал примеры использования SNMP и Netflow для erlang.

Кстати , отдельное спасибо автору за snmpcl - вроде мальнкий примерчик , но крайне полезный , но я например весьма долго доходил сам как snmp в erlang юзать..

Share this post


Link to post
Share on other sites

Интерес к биллингу равно такой, какой и к erlang, т.е. чуть более чем ноль.

Был бы написан на том же, питоне-php, коммунити бы подтянулось.

Share this post


Link to post
Share on other sites

Интерес к биллингу равно такой, какой и к erlang, т.е. чуть более чем ноль.

Был бы написан на том же, питоне-php, коммунити бы подтянулось.

Странно. Erlang весьма хорошо приспособлен к сетевым задачам (вернее OTP - собственно под это и создавался) и не сильно сложен в освоении (необычно конечно после императивных языков , но и не полный вынос мозга как haskell тот-же).

Share this post


Link to post
Share on other sites

Интерес к биллингу равно такой, какой и к erlang, т.е. чуть более чем ноль.

Был бы написан на том же, питоне-php, коммунити бы подтянулось.

 

Erlang для подобного вида софта отлично подходит.

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

На питоне-php и так хватает реализаций - это не интересно.

В erlang есть некоторое возможности(горячая замена кода, легкие нити да и весь OTP way в целом), которые как раз для подходят для софта типа биллинг.

Share this post


Link to post
Share on other sites

А насколько сильно оно завязано на сессионный доступ? Чтото я не понял сходу как например сделать модуль для IPoE например (понятно что тут dhcp видимо надо будет еще приделывать)..

Видимо только с костыликами типа ISG?

Share this post


Link to post
Share on other sites

А насколько сильно оно завязано на сессионный доступ? Чтото я не понял сходу как например сделать модуль для IPoE например (понятно что тут dhcp видимо надо будет еще приделывать)..

Видимо только с костыликами типа ISG?

 

Расскажите как у вас IPoE сделан. Адреса абонентов статические? Привязка по mac/port на свитчах?

 

Изначально Netspire задумывался как конструктор для написания конкретных систем под конкретные задачи, так как на 100% всем не угодишь.

Поэтому скорее всего придется писать модуль на подобие модуля iptraffic и там закладывать логику работы.

В любом случае, вот мой jid - ates@ipv6.dp.ua, дайти больше информации, я попробую реализовать такой модуль.

Share this post


Link to post
Share on other sites

А насколько сильно оно завязано на сессионный доступ? Чтото я не понял сходу как например сделать модуль для 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 , крайне обрадовался :) , поискал по нику здесь , вот и поднял тему.

 

Сейчас мне интереснее всего было бы понять архитектуру системы в общем виде и понять насколько это совпадает с моим представлением о том как все должно быть.

Ну или "пример из жизни" - т.е как у вас оно используется.

Share this post


Link to post
Share on other sites

Что сейчас реализовано:

 

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 должен быть не много проще в реализации, так как не обязательно иметь понятие сессий и связаной с сессиями рутины.

Share this post


Link to post
Share on other sites

А насколько сильно оно завязано на сессионный доступ? Чтото я не понял сходу как например сделать модуль для IPoE например (понятно что тут dhcp видимо надо будет еще приделывать)..

Видимо только с костыликами типа ISG?

 

Я сейчас начал рефакторить и переделывать код системы в более правильный вид. Пока кодовая база не большая - легко будет понять что как сделано.

Share this post


Link to post
Share on other sites

На гитхабе нет?

Пока нет, выложу когда соберу готовую систему. Глянь личные сообщения.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this