Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • процесс биллинга (включает в себя сбор сырых данных, обработку тарифными планами, и их сброс в хранилище)
  • интерфейсная часть (сервер), выполняющаяся сервером приложений jetty. она же отвечает за взаимодействие с платежными системами.
  • интерфейсная часть администратор администратора (клиент), выполняющаяся в веб-браузере
  • интерфейсная часть пользователя (клиент), выполняющаяся в веб-браузере
  • процесс генерации отчетов (реализованы встроенный в биллинг, и как внешний модуль)
  • процесс RADIUS-сервера
  • процесс сбора данных на удаленном хосте (посредством библиотеки libpcap) с возможностью блокировки (FreeBSD /(pf, ipfw), Linux (ipset))

Вопрос: Под какой операционкой операционной системой это работает?
Ответ: Поскольку все написано на Java, код одинаково хорошо работает и под Windows, и под Linux, и под FreeBSD (кроме мелочей), сокрее скорее всего без проблем заработает под *BSD, Solaris и MacOS . Лишь бы в системе был установлен JRE(не тестировано). Достаточно лишь наличия в системе Java Runtime (JRE) и некоторого минимального набора native java библиотек (sigar, опционально jnetpcap).

Опишем работу каждого из компонентов в деталях.

Процесс биллинга

Запускается как standalone стационарное java приложение, и является "ядром" системы NETAMS4. Если он не работает - фактически не работает ничего.

Биллинг обеспечивает получение данных от источников данных. Это могут быть внешние источники, которые написаны на С и общаются с операционной системой (ipq/ipfw/netflow/radius/pam/libpcap), или внутренние источники данных, реализованные на Java. На настоящий момент внешний источник реализован для Linux/FreeBSD (RemoteAgent), а из внутренних источников написано два три - коллектор Cisco Netflow, и обработчик пакетов с локального сетевого интерфейса, посредством  посредством библиотеки PCAP, и источник опрома коммутаторов по протоколу SNMP для съёма статистики счетчиков интерфейсов
Netflow позволяет собирать данные о проходящем трафике с устройства, выдающего поток статистики в определенном формате. Это может быть стоящий рядом маршрутизатор Cisco, или любой Windows/Linux/FreeBSD сервер с соответствующим программным обеспечением (например ipfw2netflow из комплекта NeTAMS 3.4).
Pcap позволяет "смотреть" на проходящие мимо (или через) локального интерфейса Ethernet пакеты даных. Подходит, если сервер, на котором работает NETAMS, является ещё и маршрутизатором локальной сети, или же имеет дополнительну сетевую карту, на которую настроен вывод трафика SPAN-порта. 

SNMP является старым промышленным протоколом управления телекоммуникационным оборудованием. С его помощью можно получить рзличные параметры работы удалённого устройства, в нашем случае - счетчики байт и пакетов, проходящих через Ethernet-интерфейсы коммутатора доступа.  

Биллинг обеспечивает хранение (загрузку, обновление и сохранение обратно) конфигурационной информации, а также данных о статистике по трафику. Конфигурация хранится в формате XML (используется библиотека XStream), а "тяжелая" статистика - в MySQL (используется JDBC через Mysql Connector/J). Для работы необходимо иметь настроенный сервер MySQL версии 5 или выше. Подержка других СУБД реализуема легко (обращайтесь на support@netams.com).

...

Группа контрактов (contract group) дает возможность объединять записи о контрактах в группы (для удобства работы) - например, сделав группы по подразделениям предприятия.

Лицевой счет (account) описывает валюту и баланс счета.

...

Учетный элемент (acctunit) является аналогом unit из NeTAMS 3.4 и описывает объект, по которому ведется непосредственный учет (биллинг). В текущем случае - это IP адрес (подсеть) некоего устройства (абонента, клиента), или же физический порт коммутатора. Потенциально один клиент может иметь несколько закрепленных за ним учетных объектов, в том числе не-IP объекты (а, например, домены или почтовые ящики, за которые надо брать периодическую абонентскую плату).

...

Важно: обработчик тарифного плана сделан по шаблону (в терминах Java - реализует некий стандартный интерфейс), и позволяет один раз закодировать, и потом многократно использовать одну и ту же логику работы для нескольких схожих тарифных планов. Например, можно иметь линейку тарифных планов, которые имеют общий обработчик, но отличаются величиной абонентской платы и стоимостью превышения объема включенного в нее неё трафика.

В настоящий момент реализованы три обработчика "FlatRate2", который обсчитывает трафик линейно (тариф за килобайт отдельно на вход и выход), "PolicyBasedEngine", который позволяет создавать гибкие политики учета на базе настраиваемых критериев (при аналогичном линейном обсчете), и "PeriodicFeeIncludedVolume", который позволяет назначать фиксированную абонентскую плату за период, объем включенного в неё трафика, стоимость перерасхода. 

Важно-важно: обработчик тарифного плана можно будет:

  • добавлять-удалять на лету, без остановки программы
  • редактировать или писать самостоятельно (обладая соответствующими знаниями)
  • заказывать для разработки авторам NETAMS
  • организовывать любую, *абсолютно* любую фантазию в логике его работы

...

Интерфейсная часть (сервер)

Запускается как standalone java стационарное java приложение, при этом стартует встроенный web/application сервер Jetty. Отвечает на запросы web-клиента (ниже), перенаправляя их в сторону сервиса биллинга. Реализация такова, что вебсервер , сервис и сервис биллинга могут исполняться на разных физических серверах, хотя обычно всё запускают или же возможен запуск всех компонентов на одном сервере. "Слушает" Jetty на порту 8080 (настраивается в netams.properties). Серверная часть интерфейса фактически занимается проброской данных между "толстым клиентом" веб-интерфейса, и процессом биллинга.

...

Запускается из веб-браузера при обращении к серверу http://localhost:8080/webadmin/webadmin.html
Написана с использованием библиотеки Google Web Toolkit, то есть является тяжеловесным AJAX/JavaScript приложением.
Интерфейс интуитивно понятен, обеспечивает в настоящий момент следующие функции:

  • настройку параметров источников данных (откуда принимать netflow-поток, на каком интерфейсе слушает pcap)
  • бэкап/восстановление/просмотр конфигурации биллинга
  • редактирование элементов конфигурации биллинга
  • работу с абонентом
  • "мастера" для удобного пополнения лицевого счета, создания нового абонента и т.д.
  • просмотр простейшей статистики (Quick Reporting)
  • создание, редактирование и запуск отчетов через Сервер Отчетов
  • работу с системами приема платежей
  • вызов подсказки

Интерфейсная часть пользователя

Предоставляет пользователям (абонентам, клиентам) системы биллинга доступ в свой "рабочий кабинет". Написана Доступна при ображении по ссылке http://localhost:8080/ Написана как простой сервлет (исполняется там же, где и серверная часть интерфейса  администратора). Использует HTML-шаблоны, то есть допускает настройку внешнего вида кабинета (контактная информация, логотипы, расположение блоков). Обеспечивает работу с объектами (лицевыми счетами, услугами, статистикой) данного абонента, дает возможность выписать квитанцию для оплаты и т.д. Предусмотрена возможность выбора одного из нескольких типов веб-интерфейсов (тестируется).

Процесс генерации отчетов

Standalone Java Стационарное java-приложение, которое общается с веб-интерфейсом администратора, и процессом биллинга, и служит для генерации "тяжеловесных" отчетов, в основном посредством SQL-запросов к базе данных. Вынесен в отдельный процесс для возможного выноса на другой физический сервер, чтобы не нагружать сервер биллинга.

Процесс RADIUS-сервера

Стационарное java-приложение, реализующее функционал сервера протокола RADIUS. Вынесен в отдельный процесс для возможного выноса на другой физический сервер, чтобы не нагружать сервер биллинга. При использовании соответствующего источника данных позволяет предоставлять и контролировать услугу VPN-доступа посредством управления серверами доступа (NAS).