Всем снова привет.
Продолжаем борьбу с БГБиллинг (6.0, inet) + ASR1001X.
Возникла очередная трудность. Пытаемся разобраться, как изменить IPoE+opt82 подключение в зависимости от состояния счета абонента.
Клиента (на данном этапе) аутентифицируем по мак-адресу.
Клиент подключается, получает адрес и настройки по тарифу. Здесь все хорошо. Дальше, делаем ему отрицательный баланс (правим лимит счета). На ASR ловим следующее:
Код:
COA: 10.63.9.105 request queued
RADIUS: authenticator 0F CC 57 78 B0 86 2B 6B - 59 11 E6 80 8B 31 BF 45
RADIUS: User-Name [1] 16 "0015.f904.a0c0"
RADIUS: Nas-Identifier [32] 8 "ASR-01"
RADIUS: NAS-IP-Address [4] 6 10.63.7.250
RADIUS: Framed-IP-Address [8] 6 145.255.xxx.xxx
RADIUS: Acct-Session-Id [44] 29 "0/0/0/3882_0A3F07FA0000001A"
RADIUS: Vendor, Cisco [26] 41
RADIUS: Cisco AVpair [1] 35 "subscriber:command=account-logoff"
COA: Message Authenticator missing or failed decode
++++++ CoA Attribute List ++++++
7FA7AB1A9490 0 00000081 username(450) 14 0015.f904.a0c0
7FA7AB1A9CA0 0 00000081 nas-identifier(167) 6 ASR-01
7FA7AB1A9CE0 0 00000001 nas-ip-address(600) 4 10.63.7.250
7FA7AB1A9D20 0 00000001 addr(8) 4 145.255.xxx.xxx
7FA7AB1A9D60 0 00000001 session-id(408) 4 26(1A)
7FA7AB1A9DA0 0 00000081 ssg-command-code(490) 15 02 30 30 31 35 2E 66 39 30 34 2E 61 30 63 30
++++++ Received CoA response Attribute List ++++++
7FA7AB1ABE38 0 00000081 ssg-command-code(490) 15 02 30 30 31 35 2E 66 39 30 34 2E 61 30 63 30
7FA7AB1ABE78 0 00000001 session-id(408) 4 26(1A)
Сессия дропается, дальше где-то секунды через 3-4 поднимается снова. По радиус.логу, вроде бы, все штатно:
Код:
RadiusListenerWorker - REQUEST:
Packet type: Access-Request
Identifier: 25
Authenticator: {A4 EE 09 0A B8 2A 3C 26 A5 7D 7A 46 67 29 41 D6}
Attributes:
User-Name=0015.f904.a0c0
NAS-Identifier=ASR-01
NAS-Port-Id=0/0/0/3882
User-Password=cisco123
Event-Timestamp=1476688687
NAS-IP-Address=10.63.7.250
NAS-Port=27
Service-Type=5
Acct-Session-Id=0/0/0/3882_0A3F07FA0000001B
NAS-Port-Type=15
Calling-Station-Id=0015.f904.a0c0
cisco-avpair=circuit-id-tag=00040f2a010d
cisco-avpair=remote-id-tag=00060023ea650d80
Packet type: Access-Accept
Identifier: 25
Authenticator: {}
Attributes:
Reply-Message=12
cisco-SSG-Account-Info=ATRUST-IPOE-SERVICE
cisco-SSG-Account-Info=ARDR-IPOE-SERVICE
cisco-SSG-Service-Info=NTRUST-IPOE-SERVICE
cisco-SSG-Service-Info=NRDR-IPOE-SERVICE
Т.е. отрабатывает строка в конфигурации БГ - radius.disable.attributes=cisco-ssg-account-info=ATRUST-IPOE-SERVICE;cisco-ssg-account-info=ARDR-IPOE-SERVICE;cisco-ssg-service-info=NTRUST-IPOE-SERVICE;cisco-ssg-service-info=NRDR-IPOE-SERVICE;
При этом, в активных сессиях сесси нет, она в ошибках. В error.log при этом такое:
Код:
radius 10-17/11:16:34 ERROR [main] InetConnectionKeyMap - InetServRuntime not found with id=1
connection 10-17/11:18:04 ERROR [sa-p-14-t-1] AcknowledgeConsumer - Error on device:14 - java.lang.NullPointerException
ru.bitel.bgbilling.common.BGException: Error on device:14 - java.lang.NullPointerException
at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.doTask(ServiceActivatorDeviceWorker.java:495)
at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.internalDoTaskImpl(AsyncEventWorker.java:211)
at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.notify(AsyncEventWorker.java:201)
at ru.bitel.bgbilling.kernel.event.AcknowledgeConsumer.onMessage0(AcknowledgeConsumer.java:83)
at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.internalDoTask(AsyncEventWorker.java:176)
at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.doTasks(AsyncEventWorker.java:109)
at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.runWorker(ServiceActivatorDeviceWorker.java:245)
at ru.bitel.bgbilling.kernel.event.EventWorker.internalRunWorker(EventWorker.java:139)
at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.runImpl(ServiceActivatorDeviceWorker.java:151)
at ru.bitel.common.worker.WorkerTask.run(WorkerTask.java:86)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:204)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:662)
at ru.bitel.common.worker.WorkerThread.run(WorkerThread.java:40)
Caused by: java.lang.NullPointerException
at java.nio.CharBuffer.wrap(CharBuffer.java:464)
at java.nio.charset.Charset.encode(Charset.java:830)
at ru.bitel.bgbilling.kernel.network.radius.info.StringInfo.wrapValue(StringInfo.java:56)
at ru.bitel.bgbilling.kernel.network.radius.info.StringInfo.wrapValue(StringInfo.java:1)
at ru.bitel.bgbilling.kernel.network.tlv.Tlv.<init>(Tlv.java:36)
at ru.bitel.bgbilling.kernel.network.radius.RadiusAttribute.<init>(RadiusAttribute.java:39)
at ru.bitel.bgbilling.kernel.network.radius.RadiusAttribute.<init>(RadiusAttribute.java:51)
at ru.bitel.bgbilling.modules.inet.dyn.device.radius.AbstractRadiusServiceActivator.prepareRequest(AbstractRadiusServiceActivator.java:332)
at ru.bitel.bgbilling.modules.inet.dyn.device.cisco.ISGServiceActivator.connectionClose(ISGServiceActivator.java:359)
at ru.bitel.bgbilling.modules.inet.dyn.device.cisco.ISGServiceActivator.connectionClose(ISGServiceActivator.java:314)
at ru.bitel.bgbilling.modules.inet.dyn.device.cisco.ISGServiceActivator.connectionModify(ISGServiceActivator.java:228)
at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorSet.connectionModify(ServiceActivatorSet.java:278)
at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.doCommand(ServiceActivatorDeviceWorker.java:528)
at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.doTask(ServiceActivatorDeviceWorker.java:491)
... 19 more
connection 10-17/11:19:04 ERROR [sa-p-14-t-4] InetSaStateModifyEvent - Connection not found with id=5933
И соответственно, когда мы правим баланс обратно на положительный (меняем лимит) - ничего не происходит. Нет СоА пакетов, статус соединение не меняется, на ASR вообще ничего не летит, т.к. (как я понимаю) - нет активной сессии.
Подскажите пожалуйста, где у нас косяк?