使用mina监听1812和1813端口实现radius pap认证计费,出现了计费请求走到了认证处理类的情况
/**
* Radius 认证服务配置
*/
@Bean( destroyMethod = "unbind")
public NioDatagramAcceptor nioAuthAcceptor(RadiusAuthHandlerMina radiusAuthHandler) throws IOException {
if(!authEnabled){
logger.info("====== RadiusAuthServer not running =======");
return null;
}
NioDatagramAcceptor nioAuthAcceptor = new NioDatagramAcceptor();
nioAuthAcceptor.setDefaultLocalAddress(new InetSocketAddress(1812));
DatagramSessionConfig dcfg = nioAuthAcceptor.getSessionConfig();
dcfg.setReceiveBufferSize(1024);
dcfg.setSendBufferSize(1024);
dcfg.setReadBufferSize(1024);
dcfg.setBothIdleTime(0);
dcfg.setReuseAddress(false);
Executor threadPool = Executors.newFixedThreadPool(1500);//建立线程池
nioAuthAcceptor.getFilterChain().addLast("threadPool", new ExecutorFilter(threadPool));
nioAuthAcceptor.getFilterChain().addLast("logger", new LoggingFilter());
nioAuthAcceptor.setHandler(radiusAuthHandler);
nioAuthAcceptor.bind();
logger.info(String.format("====== RadiusAuthServer listen %s ======", 1812));
return nioAuthAcceptor;
}
/**
* Radius 记账服务配置
*/
@Bean(destroyMethod = "unbind")
public NioDatagramAcceptor nioAcctAcceptor(RadiusAcctHandlerMina radiusAcctHandler) throws IOException {
if(!acctEnabled){
logger.info("====== RadiusAcctServer not running ======");
return null;
}
NioDatagramAcceptor nioAcctAcceptor = new NioDatagramAcceptor();
nioAcctAcceptor.setDefaultLocalAddress(new InetSocketAddress(1813));
DatagramSessionConfig dcfg = nioAcctAcceptor.getSessionConfig();
dcfg.setReceiveBufferSize(1024);
dcfg.setSendBufferSize(1024);
dcfg.setReadBufferSize(1024);
dcfg.setBothIdleTime(0);
dcfg.setReuseAddress(false);
Executor threadPool = Executors.newFixedThreadPool(1500);//建立线程池
nioAcctAcceptor.getFilterChain().addLast("threadPool", new ExecutorFilter(threadPool));
nioAcctAcceptor.getFilterChain().addLast("logger", new LoggingFilter());
nioAcctAcceptor.setHandler(radiusAcctHandler);
nioAcctAcceptor.bind();
logger.info(String.format("====== RadiusAcctServer listen %s ======", 1813));
return nioAcctAcceptor;
}
radiusAuthHandler 为认证处理类
radiusAcctHandler 为计费处理类
当收到认证请求Access-request时候 进入到radiusAuthHandler 处理类,并且进行响应,紧接着会收到交换机的accounting-request 此时的数据报文被radiusAuthHandler 接收到了,并没有被radiusAcctHandler接收到
但是,使用工具单发accounting-request报文时候,会进入到radiusAcctHandler处理类,只有在先认证再计费时候,计费报文会走到radiusAuthHandler
请教什么愿意呢,急