Перейти к содержимому
Калькуляторы

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

 

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

 

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

 

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.