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

Потом было решено, что трафик в различных направлениях будет считаться по разным тарифам.
Чтобы не мешать пользователям, на тестовую машинку был установлен 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
Теперь для трафика выдаются следующие пары:
Код: Выделить всё
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
Проблема в том, что сумма трафика по направлениям меньше общего трафика.
3583708+326701694=330285402 - 330804344 = -518942
184372655+11923448=196296103 - 196578245 = -282142
Вопрос: куда девается трафик?
При большом объеме трафика разница может быть ощутимой.
Может кто-нибудь что-то дельное подскажет?
А то нет уверенности в том, что ты считаешь в своей программе...