Страница 1 из 1

Проблема выдачи IP, который заглючил у другого абонента

Добавлено: Пн июл 25, 2016 12:10 pm
Makioro
Доброе время суток
Не смог придумать краткое описание проблемы для названия топика, так что получилось как получилось.
Проблема заключается в следующем: Абонент "А" запрашивает настройки по DHCP к NAS Juniper Mx80 (используем модуль Mx80.pm). Джунипер запрашивает у радиуса, радиус в базе, возвращает джуниперу, а джунипер пытается отдать абоненту, но он по какой-то причине не выдаётся.
Причина эта на текущий момент неважна, а важны два момента:
  1. в джунипере эта сессия по какой-то причине висит бесконечно. Можно на железяке увидеть нечто вроде:

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

    > 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 
    (да-да, отрицательный Expires)
  2. в базе абиллса из dv_calls эта сессия удаляется через рандомное время (наблюдалось от 45 секунд до 4 минут). Отмечу, что lease time равно 1200 секундам, т.е. 20 минут.
В связи с чем когда этот IP пытается получить другой абонент, в абиллсе он появляется, но джунипер не принимает - у него же есть уже этот айпи в dhcp server binding.

Мы не смогли разобраться какой скрипт удаляет сессию из dv_calls (не похоже на billd - он запускается раз в 5 минут, а сбросы сессии почти никогда не совпадают с его запусками, да и в его логах ничего).

Вижу пару решений проблемы, но реализацию не знаю. Либо сделать чтобы такие сессии не удалялись из dv_calls пока они есть на джунипере, либо удалять также на джунипере когда удаляется из dv_calls.

p.s. abills у нас не обновлялся с декабря, если эта проблема уже была выявлена и исправлена в более новой версии - сообщите, пожалуйста.

Re: Проблема выдачи IP, который заглючил у другого абонента

Добавлено: Пн июл 25, 2016 12:28 pm
~AsmodeuS~
Makioro писал(а):Доброе время суток
Не смог придумать краткое описание проблемы для названия топика, так что получилось как получилось.
Проблема заключается в следующем: Абонент "А" запрашивает настройки по DHCP к NAS Juniper Mx80 (используем модуль Mx80.pm). Джунипер запрашивает у радиуса, радиус в базе, возвращает джуниперу, а джунипер пытается отдать абоненту, но он по какой-то причине не выдаётся.
Причина эта на текущий момент неважна, а важны два момента:
  1. в джунипере эта сессия по какой-то причине висит бесконечно. Можно на железяке увидеть нечто вроде:

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

    > 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 
    (да-да, отрицательный Expires)
  2. в базе абиллса из dv_calls эта сессия удаляется через рандомное время (наблюдалось от 45 секунд до 4 минут). Отмечу, что lease time равно 1200 секундам, т.е. 20 минут.
В связи с чем когда этот IP пытается получить другой абонент, в абиллсе он появляется, но джунипер не принимает - у него же есть уже этот айпи в dhcp server binding.

Мы не смогли разобраться какой скрипт удаляет сессию из dv_calls (не похоже на billd - он запускается раз в 5 минут, а сбросы сессии почти никогда не совпадают с его запусками, да и в его логах ничего).

Вижу пару решений проблемы, но реализацию не знаю. Либо сделать чтобы такие сессии не удалялись из dv_calls пока они есть на джунипере, либо удалять также на джунипере когда удаляется из dv_calls.

p.s. abills у нас не обновлялся с декабря, если эта проблема уже была выявлена и исправлена в более новой версии - сообщите, пожалуйста.

когда билинг выдаёт сессию посмотрите статус сессии. Скорее всего это 11 - зарезирвирован для выдачи, но акаунтинг таки не проходит соответсвенно система елси адрес больше 10 секунд в резерве старается его удалить

Re: Проблема выдачи IP, который заглючил у другого абонента

Добавлено: Пн июл 25, 2016 12:32 pm
Makioro
Да, именно так. Статус сессии в абиллсе 11ый.
После написания первого поста заметили, что это всё-таки billd удаляет эту сессию из dv_calls. Правда в лог /tmp/billd.log почему-то ничего не записывает
Есть подозрение, что он не сбрасывает эту сессию на джунипере по следующей причине:

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

> show dhcp server binding | except BOUND    
IP address        Session Id  Hardware address   Expires     State      Interface
46.175.65.132     1027235     c8:3a:35:1b:58:d8  -167        SELECTING  xe-0/0/1.1073741970 

> show subscribers address 46.175.65.132 
Total subscribers: 0, Active Subscribers: 0
подписчика такого нет, соответственно команды для изменения подписки не работают. А сбросить её можно с помощью "clear dhcp server binding 46.175.65.132"

Re: Проблема выдачи IP, который заглючил у другого абонента

Добавлено: Пн июл 25, 2016 12:55 pm
~AsmodeuS~
Makioro писал(а):Да, именно так. Статус сессии в абиллсе 11ый.
После написания первого поста заметили, что это всё-таки billd удаляет эту сессию из dv_calls. Правда в лог /tmp/billd.log почему-то ничего не записывает
Есть подозрение, что он не сбрасывает эту сессию на джунипере по следующей причине:

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

> show dhcp server binding | except BOUND    
IP address        Session Id  Hardware address   Expires     State      Interface
46.175.65.132     1027235     c8:3a:35:1b:58:d8  -167        SELECTING  xe-0/0/1.1073741970 

> show subscribers address 46.175.65.132 
Total subscribers: 0, Active Subscribers: 0
подписчика такого нет, соответственно команды для изменения подписки не работают. А сбросить её можно с помощью "clear dhcp server binding 46.175.65.132"

Re: Проблема выдачи IP, который заглючил у другого абонента

Добавлено: Пн июл 25, 2016 12:56 pm
~AsmodeuS~
Makioro писал(а):Да, именно так. Статус сессии в абиллсе 11ый.
После написания первого поста заметили, что это всё-таки billd удаляет эту сессию из dv_calls. Правда в лог /tmp/billd.log почему-то ничего не записывает
Есть подозрение, что он не сбрасывает эту сессию на джунипере по следующей причине:

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

> show dhcp server binding | except BOUND    
IP address        Session Id  Hardware address   Expires     State      Interface
46.175.65.132     1027235     c8:3a:35:1b:58:d8  -167        SELECTING  xe-0/0/1.1073741970 

> show subscribers address 46.175.65.132 
Total subscribers: 0, Active Subscribers: 0
подписчика такого нет, соответственно команды для изменения подписки не работают. А сбросить её можно с помощью "clear dhcp server binding 46.175.65.132"

для биллинга записи с статусом 11 не являются полноценными сессиями по этому идёт только чистка базы

Re: Проблема выдачи IP, который заглючил у другого абонента

Добавлено: Пн июл 25, 2016 1:55 pm
Makioro
Информация в биллинге и на джунипере должна быть синхронизирована, иначе это приводит к подобным коллизиям.

Re: Проблема выдачи IP, который заглючил у другого абонента

Добавлено: Пн июл 25, 2016 2:13 pm
~AsmodeuS~
Makioro писал(а):Информация в биллинге и на джунипере должна быть синхронизирована, иначе это приводит к подобным коллизиям.
с такой ситуацией не встречались еще, попробуйте автосинхронизатор

Re: Проблема выдачи IP, который заглючил у другого абонента

Добавлено: Пн июл 25, 2016 2:24 pm
Makioro
Скиньте пожалуйста ссылку на описание этого автосинхронизатора - я о таком никогда не слышал ранее

Re: Проблема выдачи IP, который заглючил у другого абонента

Добавлено: Пн июл 25, 2016 3:32 pm
~AsmodeuS~
Makioro писал(а):Скиньте пожалуйста ссылку на описание этого автосинхронизатора - я о таком никогда не слышал ранее

http://abills.net.ua/wiki/doku.php/abil ... nij_sessij

Re: Проблема выдачи IP, который заглючил у другого абонента

Добавлено: Вт июл 26, 2016 7:17 am
Makioro
Ну просто посмотреть какие сессии расходятся, мы и сами можем
А вот я в коде вижу помимо SHOW есть ещё HANGUP. Что именно эта команда делает? Сбрасывает расходящиеся сессии? Или вообще все?
В вики почему-то не упоминается эта команда

Re: Проблема выдачи IP, который заглючил у другого абонента

Добавлено: Вт июл 26, 2016 8:18 am
~AsmodeuS~
Makioro писал(а):Ну просто посмотреть какие сессии расходятся, мы и сами можем
А вот я в коде вижу помимо SHOW есть ещё HANGUP. Что именно эта команда делает? Сбрасывает расходящиеся сессии? Или вообще все?
В вики почему-то не упоминается эта команда

должна скидывать различия

Re: Проблема выдачи IP, который заглючил у другого абонента

Добавлено: Вт июн 20, 2017 12:08 pm
KROLb