Для учета трафика используются:
• | Пакеты, снятые сетевым драйвером на внутренних интерфейсах; |
• | Данные, идущие через HTTP прокси-сервер или SOCKS; |
• | Сообщения, принятые SMTP-шлюзом и переданные на е-mail адрес клиента, прописанный в его настройках. |
Трафик в байтах измеряется подсчетом длины Ethernet-пакетов. Есть возможность вести учет только по длине IP- пакета, при этом не учитывается длина заголовка Ethernet - 14 байт на пакет. Эту опцию следует использовать, если вышестоящий провайдер ведет учет по чистому IP-трафику. Если провайдер ведет учет трафика по WAN- протоколам (PPP, Frame Relay, HDLC и др.), то целесообразно учет Ethernet-заголовков включить - размер заголовков Ethernet-пакета и большинства WAN-протоколов примерно сопоставим, и сходимость данных с провайдером будет более полной.
HTTP прокси-сервер, SOCKS и SMTP-шлюз работают на уровне приложения ОС и фиксируют данные TCP-протокола без учета заголовков пакетов. Для точного учета такого трафика имеется механизм учета на уровне драйвера программы. Подробнее об этом смотрите в описании работы прокси-сервера.
По умолчанию весь трафик считается платным, исключая:
• | Трафик на сам сервер: под ним понимается трафик на все IP-адреса всех интерфейсов сервера. |
• | Внутрисетевой транзитный трафик: трафик между всеми IP-сетями всех внутренних интерфейсов. Данные о сетях берутся на основании таблицы маршрутизации. |
Учет трафика в программе производится в рамках счета. Счет - это набор внутренних счетчиков, где суммируются данные в байтах и пакетах, начиная с момента старта сессии биллинга. В других системах сессия биллинга называется и как биллинговый период.
Счет имеет каждый клиент программы. Плюс есть групповые счета, которые объединяют несколько клиентов. Каждая порция трафика, отправляемая для тарификации, идет на счет клиента и все групповые счета, в которые входит данный клиент.
Существуют счетчики, на основании данных которых производится тарификация:
• | Входящий и исходящий трафик в байтах. |
• | Трафик, считанный клиентом из кэша прокси-сервера. |
• | Почтовый трафик. |
Кроме того, есть дополнительные счетчики, которые для тарификации не используются. Их данные необходимы для вывода различной диагностической информации.
Тарификация производится на основании данных тарифа. Тариф - это набор правил для начисления денежных средств. Помимо правил тарификации трафика, в настройках тарифа есть параметры тарификации по времени работы (абонентская плата), лимиты и другие. Об этом смотрите далее.
В настройках тарифа имеется единица стоимости. Это могут быть мегабайты, рубли, доллары, у.е и другая произвольная единица. На тарификацию никакого действия этот параметр не оказывает - используется только для отображения единицы измерения.
В программе есть возможность произвести тарификацию разного типа трафика по разным тарифам. Условия выборочной тарификации задаются в фильтрах - смотрите предыдущий раздел.
Для каждого тарифа у счета предусмотрен отдельный набор счетчиков. Есть основной - для тарифа, заданного в настройках клиента, и дополнительные - для разного типа трафика, заданного в фильтрах.
При тарификации трафика у тарифа используются параметры:
• | Тип учета трафика: только входящий, только исходящий, по сумме и по максимальному значению. |
• | Скидка (наценка) на исходящий трафик: используется для реализации тарифа с отдельной стоимостью входящего и исходящего трафика. |
• | Цена трафика: по умолчанию 1, т.е. подразумевается тарификация в мегабайтах. |
• | Предоплаченный трафик. |
• | Стоимость трафика из кэша, в %: по умолчанию бесплатный (0%). |
• | Стоимость почтового трафика, в %: по умолчанию полностью платный (100%). |
При расчете стоимости трафика сначала вычисляется общий входящий и общий исходящий трафик клиента. Для общего входящего трафика суммируются данные счетчика входящего трафика, данные из кэша (с учетом стоимости, в %) и данные почтового трафика (также с учетом стоимости, в %). Для общего исходящего трафика суммируются данные счетчика исходящего трафика с учетом скидки (наценки) за исходящий, а также исходящая составляющая обмена в рамках SMTP-протокола, зафиксированная при приеме сообщения через SMTP-шлюз.
Далее из полученного общего входящего и исходящего трафика вычисляется начисленный трафик исходя из типа учета трафика и предоплаченного трафика. Если значение предоплаченного трафика задано, то, пока клиент не израсходует его, трафик начисляться не будет. Если в тарифе задан учет только исходящего трафика - в начисленный трафик значение трафика из кэша не попадет. Начисленный трафик тарифицируется в мегабайтах. Вычисляемые значения трафика отображаются с точностью до трех знаков, хотя при расчетах никаких округлений не производится.
Сумма за трафик вычисляется на основании начисленного трафика и цены. Далее сумма за трафик суммируется по всем наборам счетчиков - основному и дополнительным тарифам.
Следует отметить, что у основного и дополнительных тарифов могут быть разные единицы стоимости. Так как в процессе тарификации эта единица никак не учитывается, такое "перемешивание" единиц остается полностью на усмотрении администратора. При отображении всех данных счета всегда используется единица стоимости основного тарифа.
Для каждого набора счетчиков - основному и дополнительным - ведется учет лимитов. Имеются суточные, недельные и месячные лимиты, которые задаются в настройках тарифа. Лимит может задаваться как в трафике (мегабайт), так и в единицах тарификации. Если лимиты задаются в данных трафика, то учитывается начисленный трафик - иначе берется сумма за трафик. В случае переполнения лимита клиент будет заблокирован.
Есть возможность тарифицировать время работы клиента, настройки тарификации для этого берутся из основного тарифа. Предусмотрено два режима начисления абонентской платы:
• | Начисляется плата за реальное время работы: учитывается посекундно только то время, когда клиент активен, т.е. авторизован. В тарифе задается стоимость за час работы. |
• | Начисляется посуточная абонентская плата за все рабочее время сессии, независимо от состояния клиента. Для временного приостановления начисления абонентской платы можно перевести клиента в состояние "пауза". В тарифе задается стоимость за сутки работы. |
Следует отметить, что начисление абонентской платы можно реализовать также заданиями.
У каждого счета есть значение оплаты. Баланс счета определяется как оплата минус сумма за трафик и начисленная сумма за время работы.
Если счет имеет безлимитный доступ, то наличие отрицательного баланса на его работу не влияет. Иначе счет будет заблокирован по балансу. Для счета клиента возможна работа в кредит. Для этого в основном тарифе необходимо задать размер кредита. Счет не будет блокироваться, пока его баланс не будет меньше размера кредита. Можно настроить клиенту отдельные политики доступа, в зависимости от того, работает клиент в кредит или нет:
• | В фильтрах имеется условие его применения в зависимости от этого состояния клиента. |
• | Для группы можно отдельно запретить весь трафик по умолчанию для клиента, работающего в кредит. |
• | У клиента в его настройках при работе в кредит можно отдельно выставить ограничения по скорости. |
Программа производит полный пересчет всех данных тарификации по каждой новой порции трафика, поступающих на счет. Работает принцип: изменились счетчики трафика в счете - и сразу все пересчиталось. Этим она отличается от других биллинговых систем. Такой подход имеет свои особенности:
• | Любое изменение данных тарифов приведет к немедленному пересчету всех данных биллинга. В других системах биллинга для корректировки тарифов задним числом надо запускать сложную процедуру пересчета. |
• | Если пересчет тарификации задним числом не нужен, то можно закрыть текущую сессию биллинга, переключить тариф и запустить новую. Это называется рестарт сессии биллинга. Реализуется как с переносом остатков, так и без. В программе для упрощения описанных операций имеется специальный мастер. |
• | Если изменение тарификации было произведено задним числом в рамках одной сессии биллинга, то работа с отчетами несколько усложняется. |
Для каждого счета имеется три состояния работы:
• | Работа разрешена: он может работать. Если клиент авторизуется по имени, то для начала работы счет должен еще авторизоваться. |
• | Пауза: работа клиента приостановлена, данные его счета сохраняются. Начисление абонентской платы приостанавливается. Почтовые сообщения при этом могут приниматься/не приниматься - в зависимости от настроек почтового шлюза. |
• | Стоп: работа остановлена. Данные счета полностью очищаются, но баланс запоминается в оплаченной сумме и может быть использован для переноса при старте следующей сессии биллинга. |
Настройки счетов (клиентов и групповых счетов) и данные биллинга хранятся в программе отдельно. Для настроек используются XML-файлы конфигурации, а текущие данные хранятся в базе данных встроенного SQL-сервера main.db3 (используется SQLite). Потеря или порча файла базы данных приведет к потери данных биллинга - файл будет создан заново, все счета будут обнулены и их работа по умолчанию остановлена.
Данные биллинга периодически записываются в базу данных журнала - файл log.db3. Они используются для формирования отчетов. Потеря или порча этого файла приведет к невозможности формирования отчетов за определенный период времени.
Запись данных биллинга в журнал обязательно производится по изменению состояния настроек счета, а также раз в сутки. Данные счетчиков записываются только по необходимости, когда их значение изменяется. В настройках счета можно также задать периодичность записи данных в журнал - данные в этом случае будут писаться с заданным периодом, если есть изменение счетчиков трафика. Чем чаще пишутся данные, тем с большей детализацией можно построить отчет. По умолчанию задается интервал 10 минут.
Изменение списка дополнительных тарифов
Есть ряд важных вопросов, связанных с изменением списка дополнительных тарифов у счета, который работает, т.е.не остановлен. Список дополнительных тарифов счета строится на основании фильтров, имеющих соответствующие настройки. Учитываются все фильтры - как общие, так и для группы, которые не запрещены. Для каждого дополнительного тарифа имеется отдельный набор счетчиков, которые учитывают данные с начала сессии биллинга. Данные счетчика находятся в памяти программы и хранятся в базе данных биллинга.
Если меняются настройки фильтров, которые приводят к изменению списка дополнительных тарифов счета, то логика работы программы в этом случае следующая:
• | Если тариф удаляется, то данные набора счетчиков запоминаются в базе данных, после чего тариф исключается из списка дополнительных тарифов. Данные тарификации будут пересчитаны без учета начисленного трафика удаленного тарифа. |
• | Если появляется новый тариф, то создается новый набор счетчиков и делается попытка загрузить его данные из базы данных. При наличии данных тарификации будут пересчитаны с учетом начисленного трафика ранее удаленного тарифа. |
Таким образом, если дополнительный тариф был удален в результате ошибочных действий, то можно без последствий вернуть все назад. Все сохраненные "скрытые" данные дополнительных тарифов будут полностью очищены только при старте новой сессии.
В текущей версии консоли не предусмотрено механизмов контроля этих действий при изменении настроек фильтров. Администратор программы должен это учитывать при работе с фильтрами. Если требуется перестройка настроек тарификации в фильтрах и пересчет нежелателен, то плюсом будет перевести все счета из состояния "стоп".
Текущая страница справки: http://help.smart-soft.ru/doc20/index.html?howworkbill.htm