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

ISG, CoA и cisco-SSG-Command-Code аттрибут.
http://forum.bitel.ru/viewtopic.php?f=5&t=3811
Страница 1 из 1

Автор:  zzeka [ 06 апр 2010, 12:23 ]
Заголовок сообщения:  ISG, CoA и cisco-SSG-Command-Code аттрибут.

Добрый день, балуемся с ISG для pppoe сессий.
Пытаемся при помощи CoA настроить включение/выключение тарифных опций в виде сервисов ISG.
Со включением все в порядке, шлем
Код:
cisco-SSG-Account-Info=ASERVICE

и сервис включается, а вот с выключением есть проблема.

По цыскиным докам выключение сервиса при посощи CoA делается 2 методами:
1. ASCII Command Code - отсылаем 2 аттрибута:
Код:
cisco-avpair=subscriber:service-name=SERVICE
cisco-avpair=subscriber:command=deactivate-service

2. Binary Command Code - отсылается 1 аттрибут:
Код:
cisco-SSG-Command-Code=0xC SERVICE

Причем 0xC должны быть именно HEX, а остальное нет.

Разница между способами в том что первым можно активировать/деактивировать только 1 сервис за 1 CoA запрос, а вторым способом сразу несколько. Это полезно например для отмены сразу нескольких сервисов ISG.

Дак вот 2й способ не работает с радиусом биллинга, точнее никак не удается послать нужный код в HEX.
Вопрос как это можно сделать? Во freeradius например это делается символом \ .

Для примера логи обоих способов:
1й:
Код:
Apr  6 12:57:42.208 ISK: COA: 11.11.11.11 request queued
Apr  6 12:57:42.208 ISK: RADIUS:  User-Name           [1]   10  "login"
Apr  6 12:57:42.208 ISK: RADIUS:  Framed-IP-Address   [8]   6   10.10.10.10             
Apr  6 12:57:42.208 ISK: RADIUS:  Acct-Session-Id     [44]  18  "4B000000000A735A"
Apr  6 12:57:42.208 ISK: RADIUS:  Vendor, Cisco       [26]  38 
Apr  6 12:57:42.208 ISK: RADIUS:   Cisco AVpair       [1]   32  "subscriber:service-name=SERVICE"
Apr  6 12:57:42.208 ISK: RADIUS:  Vendor, Cisco       [26]  45 
Apr  6 12:57:42.208 ISK: RADIUS:   Cisco AVpair       [1]   39  "subscriber:command=deactivate-service"
Apr  6 12:57:42.208 ISK:  ++++++ CoA Attribute List ++++++
Apr  6 12:57:42.208 ISK: 06B73DF0 0 00000009 username(386) 8 login
Apr  6 12:57:42.208 ISK: 06B736C4 0 00000001 addr(8) 4 10.10.10.10
Apr  6 12:57:42.208 ISK: 06B736D4 0 00000001 session-id(353) 4 684890(A735A)
Apr  6 12:57:42.208 ISK: 06B73704 0 00000009 service-name(351) 6 SERVICE
Apr  6 12:57:42.208 ISK: 06B75544 0 00000009 ssg-command-code(420) 7 0C 53 45 52 56 49 43 45

2й:
Код:
Apr  6 12:28:59.522 ISK: COA: 11.11.11.11 request queued
Apr  6 12:28:59.522 ISK: RADIUS:  User-Name           [1]   10  "login"
Apr  6 12:28:59.522 ISK: RADIUS:  Framed-IP-Address   [8]   6   10.10.10.10             
Apr  6 12:28:59.522 ISK: RADIUS:  Acct-Session-Id     [44]  18  "4B000000000A733D"
Apr  6 12:28:59.522 ISK: RADIUS:  Vendor, Cisco       [26]  16 
Apr  6 12:28:59.522 ISK: RADIUS:   ssg-command-code   [252] 10 
Apr  6 12:28:59.522 ISK: RADIUS:   30 43 53 45 52 56 49 43 45          [Unknown 0CSERVICE]
Apr  6 12:28:59.526 ISK:  ++++++ CoA Attribute List ++++++
Apr  6 12:28:59.526 ISK: 16A3187C 0 00000009 username(386) 8 login
Apr  6 12:28:59.526 ISK: 16A26F50 0 00000001 addr(8) 4 10.10.10.10
Apr  6 12:28:59.526 ISK: 16A26F60 0 00000001 session-id(353) 4 684861(A733D)
Apr  6 12:28:59.526 ISK: 16A26F70 0 00000009 ssg-command-code(420) 8 30 43 53 45 52 56 49 43 45


PS, есть еще вот такая дока, в ней атрибут расписан вот так:
Код:
vsa cisco generic 252 binary 0b suffix " service1"
vsa cisco generic 252 binary 0b suffix " service2"
vsa cisco generic 252 binary 0c suffix " service3"
vsa cisco generic 252 binary 0b suffix " service4"


Версия БГ 5.0

Автор:  Cromeshnic [ 12 апр 2010, 13:54 ]
Заголовок сообщения:  Re: ISG, CoA и cisco-SSG-Command-Code аттрибут.

Проще говоря, нужна возможность указывать escape-коды для Unicode-символов в конфиге модуля dialup

Автор:  Администратор [ 07 май 2010, 12:30 ]
Заголовок сообщения:  Re: ISG, CoA и cisco-SSG-Command-Code аттрибут.

Цитата:
Вопрос как это можно сделать? Во freeradius например это делается символом \ .

Т.е. как-то так?
cisco-SSG-Command-Code=\0xC SERVICE
А какая магия вообще заключена в коде C? Т.е. 12..

Автор:  zzeka [ 07 май 2010, 12:36 ]
Заголовок сообщения:  Re: ISG, CoA и cisco-SSG-Command-Code аттрибут.

Цитата:
Т.е. как-то так?
cisco-SSG-Command-Code=\0xC SERVICE
А какая магия вообще заключена в коде C? Т.е. 12..

Да как-то так.
Есть еще команда с 0xB, которая активирует сервис, это не магия, это "hexadecimal command code format" у циски...

Тут они все в табличке : http://www.cisco.com/en/US/docs/ios/12_ ... #wp1118806

Автор:  Amir [ 16 авг 2010, 14:00 ]
Заголовок сообщения:  Re: ISG, CoA и cisco-SSG-Command-Code аттрибут.

Судя по докам, это все только для 252-ого атрибута и код - это только префикс в самом начале?

Автор:  zzeka [ 16 авг 2010, 14:16 ]
Заголовок сообщения:  Re: ISG, CoA и cisco-SSG-Command-Code аттрибут.

Да.

Автор:  Amir [ 16 авг 2010, 17:57 ]
Заголовок сообщения:  Re: ISG, CoA и cisco-SSG-Command-Code аттрибут.

Выложили для 5.1. А вот для предыдущих версий сложнее сделать...
\0xC aaa
или в 8-ричном
\077 aaa

В dictionary.xml нужно будет поменять еще
Код:
<attribute name="cisco-SSG-Command-Code" type="string" add="yes" code="252"/>
на
Код:
<attribute name="cisco-SSG-Command-Code" type="abinary" code="252"/>

Автор:  zzeka [ 18 авг 2010, 10:12 ]
Заголовок сообщения:  Re: ISG, CoA и cisco-SSG-Command-Code аттрибут.

До 5.1 пока что не дошли..
Может пачик для 5.0 можно всетаки?

Автор:  Администратор [ 19 авг 2010, 18:35 ]
Заголовок сообщения:  Re: ISG, CoA и cisco-SSG-Command-Code аттрибут.

Нет, там RADIUS API полностью поменялось. Двойная работа выйдет.

Автор:  zzeka [ 27 янв 2011, 09:03 ]
Заголовок сообщения:  Re: ISG, CoA и cisco-SSG-Command-Code аттрибут.

Проверили, работает. Спасибо!

Автор:  Cromeshnic [ 27 янв 2011, 10:09 ]
Заголовок сообщения:  Re: ISG, CoA и cisco-SSG-Command-Code аттрибут.

Олсо, когда приходит CoA-NAK, мы в нашем обработчике пытаемся дописать его в log_session_<mid>_<yyyymm> стандартным способом (через RadiusUtils.addToLog()):

Код:
ru.bitel.bgbilling.kernel.network.radius.RadiusUtils.addToLog(setup, setup.getModuleId(), response, ((Session)session).getStartTime().getTime(), ((Session)session).getRequestLogRecordId());


И на таком пакете ("???" - нераспознанные символы, там просто числа приходят, не могут преобразоваться в строку):
Код:
Packet type: CoA-NAK
Identifier: 70
Authenticator: {1C FA 03 0F 0A 38 23 27 E1 5F FF 43 69 A7 6E 36}
Attributes:
  cisco-SSG-Command-Code=\0x10 ??? 5J;nas-port:10.10.0.1:0/0/0/251;TURBO
  cisco-SSG-Account-Info=$IGigabitEthernet0/0.251


получаем ошибку:

Код:
script 01-27/11:48:56 ERROR [Thread-88] LoggingPrintStream - java.sql.SQLException: Illegal mix of collations (utf8_general_ci,IMPLICIT), (cp1251_general_ci,COERCIBLE), (cp1251_general_ci,COERCIBLE) for operation 'concat'
script 01-27/11:48:56 ERROR [Thread-88] LoggingPrintStream -    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
script 01-27/11:48:56 ERROR [Thread-88] LoggingPrintStream -    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
script 01-27/11:48:56 ERROR [Thread-88] LoggingPrintStream -    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3515)
script 01-27/11:48:56 ERROR [Thread-88] LoggingPrintStream -    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3447)
script 01-27/11:48:56 ERROR [Thread-88] LoggingPrintStream -    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1951)
script 01-27/11:48:56 ERROR [Thread-88] LoggingPrintStream -    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2101)
script 01-27/11:48:56 ERROR [Thread-88] LoggingPrintStream -    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2554)
script 01-27/11:48:56 ERROR [Thread-88] LoggingPrintStream -    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1761)
script 01-27/11:48:56 ERROR [Thread-88] LoggingPrintStream -    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2046)
script 01-27/11:48:56 ERROR [Thread-88] LoggingPrintStream -    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1964)
script 01-27/11:48:56 ERROR [Thread-88] LoggingPrintStream -    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1949)
script 01-27/11:48:56 ERROR [Thread-88] LoggingPrintStream -    at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:102)
script 01-27/11:48:56 ERROR [Thread-88] LoggingPrintStream -    at ru.bitel.bgbilling.kernel.network.radius.RadiusUtils.addToLog(RadiusUtils.java:544)
script 01-27/11:48:56 ERROR [Thread-88] LoggingPrintStream -    at ru.dsi.bgbilling.radius.RadiusPacketSender$1.onPacket(RadiusPacketSender.java:64)
script 01-27/11:48:56 ERROR [Thread-88] LoggingPrintStream -    at ru.bitel.common.io.DatagramChannelListener.select(DatagramChannelListener.java:145)
script 01-27/11:48:56 ERROR [Thread-88] LoggingPrintStream -    at ru.dsi.bgbilling.radius.RadiusPacketSender.run(RadiusPacketSender.java:148)


ru.dsi.bgbilling.radius.RadiusPacketSender - наш класс, позже выложим. Это неважно тут.

В cisco-SSG-Command-Code приходит код ошибки.

Т.е. циска стандартно присылает в cisco-SSG-Command-Code нечто, что радиус биллинга не может распарсить в рамках abinary.

Код:
<attribute name="cisco-SSG-Command-Code" type="abinary" code="252"/>

Автор:  Cromeshnic [ 27 янв 2011, 10:12 ]
Заголовок сообщения:  Re: ISG, CoA и cisco-SSG-Command-Code аттрибут.

Некритично, информация для размышления.

Автор:  Dmitri [ 02 мар 2012, 01:24 ]
Заголовок сообщения:  Re: ISG, CoA и cisco-SSG-Command-Code аттрибут.

Коллеги, сорри что вклиниваюсь. Но вот вы послали CoA, и сервисы активировались\деактивировались, неважно. Но ведь это как правило какя-то зона, которая рано или поздно перейдет в дефолтную опцию, суть дефолтную зону, верно?

А если так, то в дефолтной зоне установлены атрибуты немного другого вида, т.е. обычные AService, т.е. без всяких префиксов. У меня, например, в этот момент - все перестает нормально работать... Т.е. получается конфликт...

Автор:  Cromeshnic [ 02 мар 2012, 06:29 ]
Заголовок сообщения:  Re: ISG, CoA и cisco-SSG-Command-Code аттрибут.

Пилите лучше 5.2
У меня в 5.1 CoA отправляются собственным runnable-классом в контексте radius-сервера, с помощью инспектора у вас не получится сделать, даже если напишете свой.

Автор:  Dmitri [ 02 мар 2012, 10:00 ]
Заголовок сообщения:  Re: ISG, CoA и cisco-SSG-Command-Code аттрибут.

Cromeshnic писал(а):
Пилите лучше 5.2
У меня в 5.1 CoA отправляются собственным runnable-классом в контексте radius-сервера, с помощью инспектора у вас не получится сделать, даже если напишете свой.


Офигительные перспективы... А почему не получится? Скажите, а что за собственный runnable-класс. Какая логика?

Автор:  afedorov [ 20 мар 2012, 14:13 ]
Заголовок сообщения:  Re: ISG, CoA и cisco-SSG-Command-Code аттрибут.

Насколько я понял, тип атрибута abinary обрабатывает специальным образом лишь первый байт.
Почему только первый???
Применительно к cisco ISG CoA интерфейсу их там может быть несколько.
По хорошему нужно при переводе из строки во внутренний формат все ескейпы \NNN и \xNN восьмеричной и шестнадцатеричных систем переводить в байты независимо от их положения в строке. А в обратном направлении все непринтабл символы эскейпить в шестнадцатеричный вид.
Так будет правильнее.

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