Не смог придумать краткое описание проблемы для названия топика, так что получилось как получилось.
Проблема заключается в следующем: Абонент "А" запрашивает настройки по DHCP к NAS Juniper Mx80 (используем модуль Mx80.pm). Джунипер запрашивает у радиуса, радиус в базе, возвращает джуниперу, а джунипер пытается отдать абоненту, но он по какой-то причине не выдаётся.
Причина эта на текущий момент неважна, а важны два момента:
- в джунипере эта сессия по какой-то причине висит бесконечно. Можно на железяке увидеть нечто вроде:
(да-да, отрицательный Expires)
Код: Выделить всё
> show dhcp server binding | except BOUND IP address Session Id Hardware address Expires State Interface *.*.*.36 1027097 c8:3a:35:1b:58:d8 -619 SELECTING xe-0/0/1.1073741970
- в базе абиллса из dv_calls эта сессия удаляется через рандомное время (наблюдалось от 45 секунд до 4 минут). Отмечу, что lease time равно 1200 секундам, т.е. 20 минут.
Мы не смогли разобраться какой скрипт удаляет сессию из dv_calls (не похоже на billd - он запускается раз в 5 минут, а сбросы сессии почти никогда не совпадают с его запусками, да и в его логах ничего).
Вижу пару решений проблемы, но реализацию не знаю. Либо сделать чтобы такие сессии не удалялись из dv_calls пока они есть на джунипере, либо удалять также на джунипере когда удаляется из dv_calls.
p.s. abills у нас не обновлялся с декабря, если эта проблема уже была выявлена и исправлена в более новой версии - сообщите, пожалуйста.