Неправильно считает MPD (или Radius)

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
kolossus
ефрейтор
Сообщения: 56
Зарегистрирован: 2009-04-08 13:28:51

Неправильно считает MPD (или Radius)

Непрочитанное сообщение kolossus » 2010-05-12 17:29:00

Установлен VPN-сервер mpd 5.3 + freeradius-1.1.7_3. + mysql 5.1.33
Написана биллинговая программа на Си для ext-acct.
В ней считываются radius-пары, обсчитывается трафик и т.д.
Для подсчета объема трафика используются следующие пары: "ACCT_INPUT_OCTETS" и "ACCT_OUTPUT_OCTETS".
MPD работает, биллинг считает. Все работает уже около года, все ок.
конфиг ядра, mpd не привожу, т.к. считаю что это неактуально :smile:

Потом было решено, что трафик в различных направлениях будет считаться по разным тарифам.
Чтобы не мешать пользователям, на тестовую машинку был установлен mpd 5.5(решил попробовать soa) + freeradius-2.1.8_1. + mysql 5.5.4.
Перенесен биллинг, все проверено, все работает как и на боевом сервере.

Для разделения трафика было введено следующее:

Код: Выделить всё

mpd-filter += 	1#1=match dst host 86.57.151.3
mpd-filter += 	2#1=match src host 86.57.151.3
mpd-limit  += 	in#1#Local=flt1 pass
mpd-limit  += 	in#2#Biz=all pass
mpd-limit  += 	out#1#Local=flt2 pass
mpd-limit  += 	out#2#Biz=all pass
адрес 86.57.151.3 введен для пробы - качались файлы с него и с других адресов (чтобы сработали два фильтра).
Теперь для трафика выдаются следующие пары:

Код: Выделить всё

ACCT_INPUT_OCTETS:330804344
ACCT_OUTPUT_OCTETS:196578245
и
MPD_INPUT_OCTETS:Local:3583708
MPD_INPUT_OCTETS:Biz:326701694
MPD_OUTPUT_OCTETS"Local:184372655
MPD_OUTPUT_OCTETS:Biz:11923448
Т.е общий трафик и трафик по направлениям (Local, Biz).
Проблема в том, что сумма трафика по направлениям меньше общего трафика.
3583708+326701694=330285402 - 330804344 = -518942
184372655+11923448=196296103 - 196578245 = -282142

Вопрос: куда девается трафик?
При большом объеме трафика разница может быть ощутимой.

Может кто-нибудь что-то дельное подскажет?
А то нет уверенности в том, что ты считаешь в своей программе...

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

kolossus
ефрейтор
Сообщения: 56
Зарегистрирован: 2009-04-08 13:28:51

Re: Неправильно считает MPD (или Radius)

Непрочитанное сообщение kolossus » 2010-05-12 17:37:14

Попробовал не качать с local:

Код: Выделить всё

ACCT_INPUT_OCTETS 	730810644
ACCT_OUTPUT_OCTETS 	23023305
MPD_INPUT_OCTETS 	Local 	0
MPD_INPUT_OCTETS 	Biz 	730014023
MPD_OUTPUT_OCTETS 	Local 	0
MPD_OUTPUT_OCTETS 	Biz 	22670530
Разница :
input: 796621
output:352775

Гость
проходил мимо

Re: Неправильно считает MPD (или Radius)

Непрочитанное сообщение Гость » 2010-05-12 21:18:11

а с чего вдруг оно должно сходиться?

вы сели на дырявую трубу и

Код: Выделить всё

ACCT_INPUT_OCTETS
ACCT_OUTPUT_OCTETS
капает с краника

а

Код: Выделить всё

MPD_INPUT_OCTETS
MPD_INPUT_OCTETS    Biz,Local 
со всех остальных прогнивших дырочек

kolossus
ефрейтор
Сообщения: 56
Зарегистрирован: 2009-04-08 13:28:51

Re: Неправильно считает MPD (или Radius)

Непрочитанное сообщение kolossus » 2010-05-13 9:05:02

Типа сострил...
Если не можешь помочь - лучше помолчи.
Мне нужна помощь а не приколы :bad:

Al
ст. прапорщик
Сообщения: 501
Зарегистрирован: 2007-10-18 13:42:48
Откуда: Тверь
Контактная информация:

Re: Неправильно считает MPD (или Radius)

Непрочитанное сообщение Al » 2010-05-13 10:32:52

Возможно, в первом случае считается только тсп-удп, а во втором все (+исмп и т.п.). Возможно, в первом случае считается по потокам, а во втором по пакетам.
Я думаю, проще будет отписаться разработчикам. Они либо объяснят, че к чему, либо занесут в баглист. Ну, или забьют)
Отпишись, чем закончится.

kolossus
ефрейтор
Сообщения: 56
Зарегистрирован: 2009-04-08 13:28:51

Re: Неправильно считает MPD (или Radius)

Непрочитанное сообщение kolossus » 2010-05-13 11:01:20

Al писал(а):Возможно, в первом случае считается только тсп-удп, а во втором все (+исмп и т.п.). Возможно, в первом случае считается по потокам, а во втором по пакетам.
Я думаю, проще будет отписаться разработчикам. Они либо объяснят, че к чему, либо занесут в баглист. Ну, или забьют)
Отпишись, чем закончится.
Нет, в первом случает также считает все.

Но, в любом случает, отписался разработчикам, как ответят - проинформирую...

kolossus
ефрейтор
Сообщения: 56
Зарегистрирован: 2009-04-08 13:28:51

Re: Неправильно считает MPD (или Radius)

Непрочитанное сообщение kolossus » 2010-05-21 11:03:09

kolossus писал(а):
Al писал(а):Возможно, в первом случае считается только тсп-удп, а во втором все (+исмп и т.п.). Возможно, в первом случае считается по потокам, а во втором по пакетам.
Я думаю, проще будет отписаться разработчикам. Они либо объяснят, че к чему, либо занесут в баглист. Ну, или забьют)
Отпишись, чем закончится.
Нет, в первом случает также считает все.

Но, в любом случает, отписался разработчикам, как ответят - проинформирую...
Motin написл:
Трафик по типам считается на уровне фильтра - на уровне IP. Общий трафик считается на физическом интерфейсе. Разница возможна за счет фрагментации и overhead'а - в плюс, или за счет сжатия - в минус.
. . .
Если вы продаете полезный трафик - используйте счетчики фильтров. Если продаете тунель - используйте общие счетчики.

В общем, ситуация понятна. Более правильно - считать фильтровый трафик (что скачано - за то и заплачено) :smile:

Al
ст. прапорщик
Сообщения: 501
Зарегистрирован: 2007-10-18 13:42:48
Откуда: Тверь
Контактная информация:

Re: Неправильно считает MPD (или Radius)

Непрочитанное сообщение Al » 2010-05-23 14:34:28

Слушай, если не затруднит, черкани в 2-х словах, как делал сбор по фильтрам.

kolossus
ефрейтор
Сообщения: 56
Зарегистрирован: 2009-04-08 13:28:51

Re: Неправильно считает MPD (или Radius)

Непрочитанное сообщение kolossus » 2010-05-24 9:11:27

Al писал(а):Слушай, если не затруднит, черкани в 2-х словах, как делал сбор по фильтрам.
Есть таблица radgroupreply:

Код: Выделить всё

CREATE TABLE IF NOT EXISTS `radgroupreply` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `GroupName` varchar(64) NOT NULL DEFAULT '',
  `Attribute` varchar(32) NOT NULL DEFAULT '',
  `op` char(2) NOT NULL DEFAULT '=',
  `Value` varchar(253) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  KEY `GroupName` (`GroupName`(32))
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=119 ;
Заносим в нее следующее (пример):

Код: Выделить всё

INSERT INTO `radgroupreply` (`id`, `GroupName`, `Attribute`, `op`, `Value`) VALUES
(105, 'admin_4m', 'mpd-filter', '+=', '1#1=match dst host 86.57.151.3'),
(106, 'admin_4m', 'mpd-filter', '+=', '2#1=match src host 86.57.151.3'),
(107, 'admin_4m', 'mpd-limit', '+=', 'in#1#Local=flt1 pass'),
(108, 'admin_4m', 'mpd-limit', '+=', 'in#2#Biz=all rate-limit 4194304 786432 1572864'),
(109, 'admin_4m', 'mpd-limit', '+=', 'out#1#Local=flt2 pass'),
(110, 'admin_4m', 'mpd-limit', '+=', 'out#2#Biz=all rate-limit 4194304 786432 1572864')
И назначаем пользователю группу admin_4m.
Теперь при вызове внешнего скрипта помимо пар:
ACCT_INPUT_OCTETS:значение
ACCT_OUTPUT_OCTETS:значение
имеем еще и
MPD_INPUT_OCTETS:Local:значение
MPD_INPUT_OCTETS:Biz:значение
MPD_OUTPUT_OCTETS:Local:значение
MPD_OUTPUT_OCTETS:Biz:значение

Соответственно парсишь входные строки и получаешь
MPD_INPUT_OCTETS:(ИМЯ ФИЛЬТРА - )Local : значение
и т.п.
А дальше в таблицу - и считай...

Al
ст. прапорщик
Сообщения: 501
Зарегистрирован: 2007-10-18 13:42:48
Откуда: Тверь
Контактная информация:

Re: Неправильно считает MPD (или Radius)

Непрочитанное сообщение Al » 2010-05-24 10:29:28

Меня вот как раз сбор в мускуль интересует.
Т.е. данные эти можно взять только из лога радиуса? Подобие радаккта на это дело не прикрутить без парсера?
ЗЫ. что есть внешний скрипт? Запрос клиента к радиусу?

kolossus
ефрейтор
Сообщения: 56
Зарегистрирован: 2009-04-08 13:28:51

Re: Неправильно считает MPD (или Radius)

Непрочитанное сообщение kolossus » 2010-05-24 11:32:07

Al писал(а):Меня вот как раз сбор в мускуль интересует.
Т.е. данные эти можно взять только из лога радиуса? Подобие радаккта на это дело не прикрутить без парсера?
ЗЫ. что есть внешний скрипт? Запрос клиента к радиусу?
в mpd.conf:

Код: Выделить всё

        set auth enable ext-acct
        set auth extacct-script /usr/local/etc/mpd5/account
где /usr/local/etc/mpd5/account - программа собственно аккаунтинга, написанная на си.

Al
ст. прапорщик
Сообщения: 501
Зарегистрирован: 2007-10-18 13:42:48
Откуда: Тверь
Контактная информация:

Re: Неправильно считает MPD (или Radius)

Непрочитанное сообщение Al » 2010-05-24 12:06:31

Ну, я имел ввиду средствами радиуса.
Т.е. вкратце
в групреплай добавляем фильтры
в логах парсим значения по этим фильтрам
?

kolossus
ефрейтор
Сообщения: 56
Зарегистрирован: 2009-04-08 13:28:51

Re: Неправильно считает MPD (или Radius)

Непрочитанное сообщение kolossus » 2010-05-24 12:14:56

Al писал(а):Ну, я имел ввиду средствами радиуса.
Т.е. вкратце
в групреплай добавляем фильтры
в логах парсим значения по этим фильтрам
?
Я делал через ext-acct, на мой взгляд реализация при помощи программы на Си будет более гибкой, что захочешь - то и будешь в ней делать.
Но это МОЕ мнение, а так - как кому удобнее и привычнее.. :smile:

Al
ст. прапорщик
Сообщения: 501
Зарегистрирован: 2007-10-18 13:42:48
Откуда: Тверь
Контактная информация:

Re: Неправильно считает MPD (или Radius)

Непрочитанное сообщение Al » 2010-05-24 12:31:52

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

Al
ст. прапорщик
Сообщения: 501
Зарегистрирован: 2007-10-18 13:42:48
Откуда: Тверь
Контактная информация:

Re: Неправильно считает MPD (или Radius)

Непрочитанное сообщение Al » 2010-05-24 13:07:18

Кстате, кому интересно..
В доках мпд написано, что эти параметры (трафик по фильтрам) мпд передает в радус. А в радиусе апдейт скульной базы выведен в прямом виде в конфиге. В виде sql-запроса. Я думаю, создав соотв. структуру базы и дописав в запрос апдейт интересующих параметров должно заработать. Т.е. информация по трафику по фильтрам должна складываться в радакте.
Единственный минус - введение новых фильтров будет предполагать апдейт структуры таблицы.
Может, кто-нть попробует, кому невпадлу?)

kolossus
ефрейтор
Сообщения: 56
Зарегистрирован: 2009-04-08 13:28:51

Re: Неправильно считает MPD (или Radius)

Непрочитанное сообщение kolossus » 2010-05-24 15:25:25

Al писал(а):Ну, я так понимаю, туда можно любой шеловский или перловый скрипт запузырить. Скорость -, правда. Возвращаемых значений в нем нет, наск. я понял?
В доках написано,что он альтернатива радаккаунтингу. Вместе не работают?
Отлично работают вместе.
Радиус сохраняет в radacct, мпд вызывает внешний скрипт и передает ему параметры.
Я, например, модифицировал radacct и сохраняю в дополнительные поля свои значения.

Al
ст. прапорщик
Сообщения: 501
Зарегистрирован: 2007-10-18 13:42:48
Откуда: Тверь
Контактная информация:

Re: Неправильно считает MPD (или Radius)

Непрочитанное сообщение Al » 2010-05-25 7:16:54

Т.е. идея с модификацией радакта работает?
Все можно писать сразу в него, в т.ч. и трафик по фильтрам?

kolossus
ефрейтор
Сообщения: 56
Зарегистрирован: 2009-04-08 13:28:51

Re: Неправильно считает MPD (или Radius)

Непрочитанное сообщение kolossus » 2010-05-25 9:27:19

Al писал(а):Т.е. идея с модификацией радакта работает?
Все можно писать сразу в него, в т.ч. и трафик по фильтрам?
Конечно, а почему бы и нет?
Не удаляй поля, которыми пользуется радиус, а в остальном - это обычная таблица (у меня - mysql).