forum.bitel.ru
http://forum.bitel.ru/

5.1 Radius Netflow + AAA accounting delay-start
http://forum.bitel.ru/viewtopic.php?f=5&t=5877
Страница 1 из 1

Автор:  Cromeshnic [ 13 сен 2011, 13:34 ]
Заголовок сообщения:  5.1 Radius Netflow + AAA accounting delay-start

Пилим ISG в 5.1

Возникла необходимость выключать команду AAA accounting delay-start - иначе в определенных случаях не работает.

Без этой команды NAS шлёт accounting start не дожидаясь определения IP-адреса для сессии -> в start пакете нет атрибута Framed-IP-Address (он приходит позже, в следующем update-пакете) -> встроенный коллектор не создаёт мэппинг ip-сессия -> нетфлоу в реальном времени не считается.

ip для сессии назначается при первом апдейте, содержащем Framed-IP-Address, а вот коллектор хочет делать это только при старте.
При этом при пересчете сессии по сохраненным логам netflow наработка появляется.

Можете реализовать биндинг ip коллектором радиуса по апдейт-пакету?

Автор:  skyb [ 13 сен 2011, 21:37 ]
Заголовок сообщения:  Re: 5.1 Radius Netflow + AAA accounting delay-start

вот тут даже писать нечего неохото ибо не девлопер )))))))))

Автор:  snark [ 14 сен 2011, 03:04 ]
Заголовок сообщения:  Re: 5.1 Radius Netflow + AAA accounting delay-start

skyb писал(а):
вот тут даже писать нечего неохото ибо не девлопер

Я ж не зря говорил тебе про кашу в голове ;)



Cromeshnic писал(а):
Возникла необходимость выключать команду AAA accounting delay-start

М.б. как страаашный костыль юзать telnet API и через него говорить коту:
Код:
conf t
no aaa accounting delay-start
end

но чревато так это шо пипец :(

Автор:  Cromeshnic [ 14 сен 2011, 06:22 ]
Заголовок сообщения:  Re: 5.1 Radius Netflow + AAA accounting delay-start

Да не, delay-start отключен. Проблема всплыла как раз из-за этого.

Автор:  stark [ 15 сен 2011, 13:24 ]
Заголовок сообщения:  Re: 5.1 Radius Netflow + AAA accounting delay-start

Cromeshnic писал(а):

Можете реализовать биндинг ip коллектором радиуса по апдейт-пакету?


В 5.2 в inet такое вроде бы есть

Автор:  Cromeshnic [ 16 сен 2011, 08:42 ]
Заголовок сообщения:  Re: 5.1 Radius Netflow + AAA accounting delay-start

А в 5.1?

Автор:  Администратор [ 19 сен 2011, 13:21 ]
Заголовок сообщения:  Re: 5.1 Radius Netflow + AAA accounting delay-start

Только если как платную доработку. Пишите в хелпдеск.

Автор:  Cromeshnic [ 28 сен 2011, 14:22 ]
Заголовок сообщения:  Re: 5.1 Radius Netflow + AAA accounting delay-start

Workaround - пробегаем раз в 4 секунды по всем сессиям на всех насах и мэппим ip->session , если отсутствует:

Код:
package ru.dsi.bgbilling.radius;

import org.apache.log4j.Logger;

import bitel.billing.common.IPUtils;
import bitel.billing.server.processor.dialup.DialUpSessionRealtime;
import ru.bitel.bgbilling.kernel.network.radius.nas.Nas;
import ru.bitel.bgbilling.kernel.network.radius.nas.NasList;
import ru.bitel.bgbilling.modules.dialup.radius.DialUpNas;
import ru.bitel.bgbilling.modules.dialup.radius.DialUpNasConnection;
import ru.bitel.bgbilling.modules.dialup.radius.TrafficInspector;
import ru.bitel.common.StopableThread;

public class SessionIpMapper extends StopableThread {
   private static final Logger log = Logger.getLogger(SessionIpMapper.class.getName());
   private static SessionIpMapper instance = null;

   public SessionIpMapper(){
       if (instance != null)
       {
          throw new IllegalStateException("Current implementation doesn't support more than one SessionIpMapper instance. Use getInstance().");
       }
      
       instance = this;
      
      start();
   }
   
   public static SessionIpMapper getInstance(){
      return instance;
   }

   public void run()
   {
      log.info("Starting SessionIpMapper");

      while (this.working)
       {
         try{
            for(Nas<?,?,?> nas : NasList.getInstance().nases()){
               for(DialUpNasConnection nasCon : ((DialUpNas)nas).connections()){
                  DialUpSessionRealtime session = nasCon.getSession();
                  if(session!=null){
                     if(!session.isFakeSession()){
                        TrafficInspector ti = ((DialUpNas)nas).getTrafficInspector();
                        if(ti!=null){
                           if(ti.getSession(session.getIpAddress())==null){
                              ti.startSession(session, true);
                              session.addLogInfo("IP address register on collector by SessionIpMapper");
                              if(log.isDebugEnabled()){
                                 log.debug("put "+IPUtils.convertLongIpToString(session.getIpAddress()));
                              }
                           }
                        }
                     }
                  }
               }
            }
         }catch (Exception e){
            log.error(e.getMessage(), e);
         }

         try{
            sleep(4000L);
         }catch (Exception e){
            log.error(e.getMessage(), e);
         }
       }
      log.info("Stopping SessionIpMapper");
   }
}


Запускаем наш тред в любом евенте в контексте радиуса:
Код:
import bitel.billing.server.util.*;
import ru.dsi.bgbilling.radius.SessionIpMapper;

public void onEvent( event, setup, con, conSlave )
{
   if(SessionIpMapper.getInstance()==null){
      SessionIpMapper mapper = new SessionIpMapper();
   }
}

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/