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

BGBilling и Cisco ISG
http://forum.bitel.ru/viewtopic.php?f=22&t=2342
Страница 1 из 1

Автор:  tee [ 24 май 2009, 13:58 ]
Заголовок сообщения:  BGBilling и Cisco ISG

Хочу попробовать использовать BGbilling c Cisco ISG
почитал описание и отзывы, биллинг мне понравился, но вот не знаю будет ли работать в нужной конфигурации.

Не хочется использовать разного рода туннели (PPPoE, PPtP), но очень хочется нормально резать скорость и
управлять всем централизованно.


BG не поддерживает профили сервисов и аккаунгинг по сервисам, это я уже понял из документации,
но может выдавать фактически любые атрибуты в "AUTH ACCEPT", а аккаутинг по сервисам мне и не нужен,
сервис один - доступ в Интернет.

Что планируется, (абоненты подключены по L3, VLAN на пользователя)

1) авторизация по DHCP DISCOVER - оборудование доступа или агрегации добавляет OPT.82 в DHCP запросы
ISG собирает из субопций имя пользователя для авторизации и отправляет его в атрибуте "Username" в "AUTH REQ"

2) в случае ответа "AUTH REJ" на сессию навешивается только сервис разрешающий доступ к странице http://<адрес сервера биллинга>:8080/bgbilling/webexecuter
и сервис перенаправляющий туда все HTTP запросы

3) в случае ответа "AUTH ACCEPT" в зависимости от тарифа пользователю выдаются атрибуты ограничивающие скорость, атрибуты берутся из свойств
тарифа который назначен пользователю.

4) пакеты "ACCOUNTING" в не зависимости от доп. атрибутов типа Cisco-Service-Info и т.д. принимаются, (какие еще доп. атрибуты будут пока не знаю)
принадлежность пакета к сессии определяется полем NAS-Port, там будет уникальный код сессии

5) nas.inspector реализован в виде внешнего скрипта в котором клиент freeradius'а вызывается с нужными параметрами и дергает ISG по CoA
(ну или по SNMP но кажется в ISG нет SESSION MIB - это нужно проверить)

6) хотелось бы прицепить CoA чтобы BG пинал ISG, ессли абонент хочет заблокировать/разблокировать доступ в Интернет из своего интерфейса, но это опция


Реализуемо ли это в BG (4.5/4.6) ?

Автор:  tee [ 27 май 2009, 12:37 ]
Заголовок сообщения: 

как сделать группу атрибутов например с cisco-SSG-Account-Info

cisco-SSG-Account-Info=QU;128000;16000;32000;D;128000;16000;32000

там используются разделители ";" параметров, которые конфликтуют с резделителем списка атрибутов


хотя попробую определить сервис локально на NAS'е и отдать
A<service-name>

Автор:  Администратор [ 27 май 2009, 16:05 ]
Заголовок сообщения: 

Поддержку значений атрибутов с ; сделаем для 4.6 в ближайшее время.

Автор:  tee [ 06 июн 2009, 09:55 ]
Заголовок сообщения: 

Неделя тяжелого велосипедостроения показала что это реализовать трудно.

В итоге я присмотрелся более внимательно к модулю IPN, посмотрел на примеры скриптов на BeanShell в wiki
и за пару дней реализовал почти весь основной функционал немного подточив эти скрипты под себя.

Неплохобы какойнибудь класс чтобы парсил цискины конфиги, шлюзы типа Cisco2 при синхронизации
дергают все объекты конфига подряд а хотелось бы только те состояние которых нужно актуализировать,
при масштабных изменениях могут быть лаги.

Чтото вроде такого Cisco-Reconfig

Автор:  Администратор [ 08 июн 2009, 10:44 ]
Заголовок сообщения: 

Вы бы хоть описали поподробнее, что вы сделали в итоге. Хоть понятно было бы, какого вида конфиги и как парсить нужно.

Автор:  stark [ 08 июн 2009, 11:20 ]
Заголовок сообщения: 

tee писал(а):

Неплохобы какойнибудь класс чтобы парсил цискины конфиги, шлюзы типа Cisco2 при синхронизации
дергают все объекты конфига подряд а хотелось бы только те состояние которых нужно актуализировать,
при масштабных изменениях могут быть лаги.

Чтото вроде такого Cisco-Reconfig


не совсем понял, вы хотете чтобы шлюз прежде чем применял правила , вначале делал проверку нужно ли их применять ? ..У меня есть несколько примеров шлюзов где есть подобная проверка для циско .для каждого шлюза вызывается вначале show access-lists..и потом для каждого договора на этом шлюзе проверяется есть ли его ip в show access-lists (и наоброт если нет) и если ситуация неправильная , то она исправляется ..Т.е посылаются только изменения .. Т.е в большистве случаев вызываестя просто show access-lists и не посылается больше ни одной команды(если ничего не изменилось) . шлюзы могу в wiki выложить

Автор:  max [ 08 июн 2009, 11:40 ]
Заголовок сообщения: 

stark писал(а):

шлюзы могу в wiki выложить
выложите!

Автор:  tee [ 08 июн 2009, 17:28 ]
Заголовок сообщения: 

Администратор писал(а):
Вы бы хоть описали поподробнее, что вы сделали в итоге. Хоть понятно было бы, какого вида конфиги и как парсить нужно.



если в трех словах, центральный роутер - отдает нетфлоу и режет скорость,
для него на базе Cisco2 реализовано такое поведение
кое что еще попрвлю но примерно так

Код:
[DEFAULT]

[REMOVEULIM]
   policy-map QOS-NET-IN
   no  class CM-{CID}
   exit
   policy-map QOS-NET-OUT
   no  class CM-{CID}
   exit
   no  class-map match-any CM-{CID}
   no  ip access-list extended ACL-{CID}-OUT
   no  ip access-list extended ACL-{CID}-IN
 <LOOP>
   no ip route {A} Null0
 </LOOP>
[/REMOVEULIM]
 
[OPENULIM]
   ip access-list extended ACL-{CID}-OUT
     <LOOP>
     permit ip host {A} any
     </LOOP>
   exit
   ip access-list extended ACL-{CID}-IN
     <LOOP>
     permit ip any  host {A}
     </LOOP>
   exit
   class-map match-any CM-{CID}
     match access-group name ACL-{CID}-OUT
     match access-group name ACL-{CID}-IN
   exit
   policy-map QOS-NET-IN
     class CM-{CID}
      bandwidth ${BW}   
     exit
   exit
   policy-map QOS-NET-OUT
     class CM-{CID}
      bandwidth ${BW}   
     exit
   exit
[/OPENULIM]
 
[CLOSEULIM]
   policy-map QOS-NET-IN
   no  class CM-{CID}
   exit
   policy-map QOS-NET-OUT
   no  class CM-{CID}
   exit
   no  class-map match-any CM-{CID}
   no  ip access-list extended ACL-{CID}-OUT
   no  ip access-list extended ACL-{CID}-IN
  <LOOP>
   ip route {A} Null0
  </LOOP>
[/CLOSEULIM]

[REMOVETRAF]
  <LOOP>
   no ip route {A} Null0
  </LOOP>
[/REMOVETRAF]
 
[OPENTRAF]
  <LOOP>
   no ip route {A} Null0
  </LOOP>
[/OPENTRAF]
 
[CLOSETRAF]
  <LOOP>
   ip route {A} Null0
  </LOOP>
[/CLOSETRAF]


[/DEFAULT]



*ULIM - это безлимитные тарифы для которых нужно резать скорость

*TRAF - тарифы по объему

Скорость выбирается типом правила, по нему же определяется
к какой группе тарифов принадлежит договор.

пара полису мапов режет скорость,

ip route {A} Null0 нужно чтобы на закрытый договор не шел трафик

У этого шлюза есть чилд тоже на базе Cisco2, это L3 свич (С3550)
почти стандартное поведение, только по закрытию делает интерфейсу не shutdown а прицепляет акцесс лист который дает доступ только к веб интерфейсу пользователя на биллинге.


У L3 свича тоже есть чилд, это L2 свич с 802.1q где нужно просто создавать и удалять виланы и добавлять их к портам как таггдед или антаггед пока не готово но сделаю на базе скрипта из вики.

примерно так, когда будет окончательно готово, выложу полностью

Автор:  tee [ 08 июн 2009, 17:37 ]
Заголовок сообщения: 

stark писал(а):
tee писал(а):

Неплохобы какойнибудь класс чтобы парсил цискины конфиги, шлюзы типа Cisco2 при синхронизации
дергают все объекты конфига подряд а хотелось бы только те состояние которых нужно актуализировать,
при масштабных изменениях могут быть лаги.

Чтото вроде такого Cisco-Reconfig


не совсем понял, вы хотете чтобы шлюз прежде чем применял правила , вначале делал проверку нужно ли их применять ? ..У меня есть несколько примеров шлюзов где есть подобная проверка для циско .для каждого шлюза вызывается вначале show access-lists..и потом для каждого договора на этом шлюзе проверяется есть ли его ip в show access-lists (и наоброт если нет) и если ситуация неправильная , то она исправляется ..Т.е посылаются только изменения .. Т.е в большистве случаев вызываестя просто show access-lists и не посылается больше ни одной команды(если ничего не изменилось) . шлюзы могу в wiki выложить



да именно , перед применением правила проверять нужно ли вносить изменения в конфигурацию

еще бы парсить не только результаты show access-lists а результаты show run, чтобы контролировать подобным образом интерфейсы и полиси.

Автор:  Jimson [ 08 июн 2009, 19:50 ]
Заголовок сообщения: 

stark писал(а):
У меня есть несколько примеров шлюзов где есть подобная проверка для циско .для каждого шлюза вызывается вначале show access-lists..и потом для каждого договора на этом шлюзе проверяется есть ли его ip в show access-lists (и наоброт если нет) и если ситуация неправильная , то она исправляется ..Т.е посылаются только изменения .. Т.е в большистве случаев вызываестя просто show access-lists и не посылается больше ни одной команды(если ничего не изменилось) . шлюзы могу в wiki выложить


так вроде они и выложены:
Код:
//  проход по ACL списку с отметкой какие договора открыты           
        markOpenFromRules( list, aclByNameMap );           
        System.out.println("33333333333333333333333");
        // подготовка списка корректирующих команд
        buildCommandsLists( aclMap );


или есть другие версии ? если да, то интересно посмотреть

Автор:  Jimson [ 08 июн 2009, 19:56 ]
Заголовок сообщения: 

tee писал(а):
Неплохобы какойнибудь класс чтобы парсил цискины конфиги, шлюзы типа Cisco2 при синхронизации

как бы это сформулировать.... )
у вас ведь не может быть одного и того же куска конфига который каким либо способом участвует в правилах "ограничения" договора, так ?
как бы шлюз работает по системе:
если состояние договора "изменилось", то что то сделать в конфиге (добавить правила или удалить их)

вот это самое "изменилось" можно узнать "погрепав" конфиг на кючевое слово, в примерах Cisco/Cisco2 это греп по ACL-ям, в вашем случае можно, как пример, погрепать определения класс-мапов что бы получить информацию о том по каким договорам в конфиге есть правила

или я не так понял задачу ?

Автор:  stark [ 09 июн 2009, 13:23 ]
Заголовок сообщения: 

1.
http://wiki.bgbilling.ru/index.php/%D0% ... %D0%BC_ssh

2.
http://wiki.bgbilling.ru/index.php/%D0% ... %BC_telnet

в обоих шлюзах есть проверка acl. во втором кроме проверки acl есть еще и проверка vlan

Автор:  tee [ 14 июн 2009, 13:34 ]
Заголовок сообщения: 

Jimson писал(а):
tee писал(а):
Неплохобы какойнибудь класс чтобы парсил цискины конфиги, шлюзы типа Cisco2 при синхронизации

как бы это сформулировать.... )
у вас ведь не может быть одного и того же куска конфига который каким либо способом участвует в правилах "ограничения" договора, так ?
как бы шлюз работает по системе:
если состояние договора "изменилось", то что то сделать в конфиге (добавить правила или удалить их)

вот это самое "изменилось" можно узнать "погрепав" конфиг на кючевое слово, в примерах Cisco/Cisco2 это греп по ACL-ям, в вашем случае можно, как пример, погрепать определения класс-мапов что бы получить информацию о том по каким договорам в конфиге есть правила

или я не так понял задачу ?


да, как то так и буду делать

Автор:  tee [ 14 июн 2009, 14:07 ]
Заголовок сообщения: 

На остнове этого примера

для Dlink

Пытаюсь сделать свой шлюз для Dlink L2 свича (Dlink DES-3028)

при этом когда делаю этот шлюз дочерним к шлюзу Cisco2

шлюз Cisco2 и вышестоящий шлюз Cisco вместо IP адресов получают 0.0.0.0

подозреваю что дело в том что функция в коде для Dlink
Код:
rule = status.rule.getRuleText();


в этом случае возвращает строку

10.100.101.79:6#174351695;

IP - 10.100.101.79
PORT - 6

хотя в примерах скриптов видно что порядок должен быть другим

Или я ошибаюсь ?

PS
Сервер 4.6 сборка 475
IPN 4.6 сборка 183

Автор:  stark [ 15 июн 2009, 17:32 ]
Заголовок сообщения: 

tee писал(а):
в этом случае возвращает строку

10.100.101.79:6#174351695;

IP - 10.100.101.79
PORT - 6

хотя в примерах скриптов видно что порядок должен быть другим



10.100.101.79:6 - ip и порт указанный на вклдке привзяка .
174351695 - это ip выбранный справа. это десятиричная запись адреса 10.100.101.79. у вас они совпадают с тем, который указан для порта, а может и не совпадать ..вот так

а вообще привзязка несколько нечетко сделана ..там фактичскеи есть только привязка ip-mac , она передется на dhcp(если его использовать) . а порты живут своей жизнью в цикле LOOP и не привязаны к ip если писать команды, т.к обвчно в командах используется только диапазон портов. т.е свзяь ip-порт есть в данных шлюза , но как связь не используется ..

Автор:  tee [ 15 июн 2009, 19:17 ]
Заголовок сообщения: 

stark писал(а):

10.100.101.79:6 - ip и порт указанный на вклдке привзяка .
174351695 - это ip выбранный справа. это десятиричная запись адреса 10.100.101.79. у вас они совпадают с тем, который указан для порта, а может и не совпадать ..вот так

а вообще привзязка несколько нечетко сделана ..там фактичскеи есть только привязка ip-mac , она передется на dhcp(если его использовать) . а порты живут своей жизнью в цикле LOOP и не привязаны к ip если писать команды, т.к обвчно в командах используется только диапазон портов. т.е свзяь ip-порт есть в данных шлюза , но как связь не используется ..


Спасибо становится понятней, то что возвращается функцией

Код:
status.rule.getRuleText();


должно интерпретироватся скриптами самостоятельно и только вытащив оттуда адреса и порты можно вызывать в скрипте

Код:
ManadUtils.generateRule(....)


Реализации шлюзов Cisco2 на bsh ожидают что status.rule.getRuleText(); вернет адрес в десятичном формате как например "174351695" а редактор свича

Код:
user_rule.editor.class=bitel.billing.module.services.ipn.editor.vlan.CiscoSSHSwitchRuleEditor


встовляют в строку свой адрес и порт в формате ip.ip.ip.ip:port
поэтому когда я добавляю этого потомка вышестоящие шлюзы типа Cisco2 на bsh перестают работать

Автор:  tee [ 15 июн 2009, 19:23 ]
Заголовок сообщения: 

однако остается непонятной функция из прмера


Код:
getPorts( ports )
{
      portList = new ArrayList<String>();
      parts  = ports.split( ";" );
 
      for (String part : parts )
      {
         parts2  = part.split( ":" );
         if ( parts2.length <  2)
         {
            continue;
         }
         port = parts2 [1];
         portList.add( port );
      }
 
      ports_[] = new String [portList.size()];
      for (int i = 0; i < ports_.length; i++)
      {
         ports_[i] = portList.get( i );
      }
      return ports_;
}



судя по коду там еще есть какието параметры разделенные ";"


и вообще интересно вот такого типа формат "10.100.101.79:6#174351695;" он не поменяется ?
нехочется получить нерабочие скрипты после обновления

Автор:  stark [ 15 июн 2009, 19:41 ]
Заголовок сообщения: 

там есть еще mac в общем случае..и в 4.6 еще добавились сети ..но совместимость осталась ..вот сейчас такой формат :


80.78.119.2:1:00-1f-c6-ac-c2-87;80.78.119.3:2:00-1f-c6-ac-c2-88;80.78.119.4:3#3232282636,3232282637;3232282672/30

ip1:port1:mac1;ip2:port2:mac2#ip1_, ip2_,ip3_;ip_net_1/mask1,ip_net_2/mask2

Автор:  tee [ 15 июн 2009, 19:44 ]
Заголовок сообщения: 

stark писал(а):
там есть еще mac в общем случае..и в 4.6 еще добавились сети ..но совместимость осталась ..вот сейчас такой формат :


80.78.119.2:1:00-1f-c6-ac-c2-87;80.78.119.3:2:00-1f-c6-ac-c2-88;80.78.119.4:3#3232282636,3232282637;3232282672/30

ip1:port1:mac1;ip2:port2:mac2#ip1_, ip2_,ip3_;ip_net_1/mask1,ip_net_2/mask2


Спасибо !

Автор:  tee [ 18 июн 2009, 09:52 ]
Заголовок сообщения: 

Отсюда
QoS Frequently Asked Questions

Цитата:
Q. How many classes does a Quality of Service (QoS) policy support?


A. In Cisco IOS versions earlier than 12.2 you could define a maximum of only 256 classes, and you could define up to 256 classes within each policy if the same classes are reused for different policies. If you have two policies, the total number of classes from both policies should not exceed 256. If a policy includes Class-Based Weighted Fair Queueing (CBWFQ) (meaning it contains a bandwidth [or priority] statement within any of the classes), the total number of classes supported is 64.

In Cisco IOS versions 12.2(12),12.2(12)T, and 12.2(12)S, this limitation of 256 global class-maps was changed, and it is now possible to configure up to 1024 global class-maps and to use 256 class-maps inside the same policy-map.


Вот засада всего 64 очереди CBWFQ. Значит прийдется отказатся от MQC и городить rate-limit .....

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