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

Множественная вложенность сервисов
http://forum.bitel.ru/viewtopic.php?f=44&t=6894
Страница 1 из 1

Автор:  borisk [ 24 июн 2012, 19:51 ]
Заголовок сообщения:  Множественная вложенность сервисов

Добрый день!

Вот решил попробовать реализовать такую схему сервисов:
A: Сервис "шейпер" (учитывается только устройство на котором шейпируем)
B: Сервис "ресурсы" (учитывается порт и vlan на коммутаторе клиента)
C: Сервис IP (учитывается статически назначенный ip клиенту)

Делаем такую вложенность:
A -> B -> C1, C2, CN

После этого в serviceModify пытаюсь следующим кодом добраться до C1..Cn
Код:
      if(service.getTypeId() == LL_SHAPER_SID) {
         logger.error("Service: " + service.getId() + " iface: " + service.getInterfaceTitle() + " vlan: " + service.getVlan());
         List<InetServ> shaperChildren = service.getChildren();
         Iterator<InetServ> shaperIterator = shaperChildren.iterator();
         while(shaperIterator.hasNext()) {
            InetServ    shaperService = shaperIterator.next();
            logger.info("has shaperService ID: " + shaperService.getId());
            if(shaperService.getTypeId() == LL_RESOURCE_SID) {
               List<InetServ> resourceChildren = shaperService.getChildren();
               if(resourceChildren == null)
                  logger.info("resourceChildren is null: ");
               Iterator<InetServ> resourceIterator = resourceChildren.iterator();
               while(resourceIterator.hasNext()) {
                  InetServ   ipService = resourceIterator.next();

                  logger.info("has ipService ID: " + ipService.getId());
                  iplist.append( SPACE );
                  iplist.append( IpNet.toString(ipService.getAddressFrom(), IpNet.getMask(ipService.getAddressFrom(), ipService.getAddressTo())) );
               }
            }
         }

      }


так вот resourceChildren всегда null :( Если вложенность сервисов одинарная, то есть A убираем, и только B и C используем, то все замечательно работает.

Автор:  Amir [ 26 июн 2012, 13:32 ]
Заголовок сообщения:  Re: Множественная вложенность сервисов

Так не будет работать, возможна только двойная вложенность (A и B), т.к. необходимо, чтобы порт/vlan были прописаны на сервисе A.

Автор:  borisk [ 26 июн 2012, 17:35 ]
Заголовок сообщения:  Re: Множественная вложенность сервисов

Именно порт + vlan? Или достаточно одного из них? Или в принципе такая вложенность невозможна при любых условиях?

Автор:  Amir [ 26 июн 2012, 17:40 ]
Заголовок сообщения:  Re: Множественная вложенность сервисов

Сейчас - при любых, т.е. на родительском должны быть устройство + порт и/или vlan, на дочернем - адреса.
БОльшие вложенности не планировались, поэтому вряд ли будет работать нормально.

Автор:  borisk [ 26 июн 2012, 17:49 ]
Заголовок сообщения:  Re: Множественная вложенность сервисов

Жаль. Тогда остается только снова предложить вам подумать :) Область применения следующая: у провайдера большая распределенная сеть L3. Клиент имеет несколько точек подключения на разных маршрутизаторах. VLAN точек тоже разные. А вот точка шейпирования - одна.

Автор:  Amir [ 26 июн 2012, 17:56 ]
Заголовок сообщения:  Re: Множественная вложенность сервисов

Ну это будет нормально работать, если в дереве устройств заведено устройство шейпирования, которое является родительским ко всем коммутаторам, которые через него шейпируют. А в договоре просто привязать к коммутатору.
Классы ServiceActivator вызываются на всех устройствах, начиная с корневого до исходного.

Автор:  borisk [ 26 июн 2012, 21:40 ]
Заголовок сообщения:  Re: Множественная вложенность сервисов

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

Автор:  Amir [ 26 июн 2012, 21:46 ]
Заголовок сообщения:  Re: Множественная вложенность сервисов

А для чего этот номер шейпера нужен? Вот, например, дерево устройств.
Или мы о разном?

Автор:  borisk [ 27 июн 2012, 09:10 ]
Заголовок сообщения:  Re: Множественная вложенность сервисов

Да, дерево у меня выглядит примерно так же. У меня система такая. Есть виртуальный шейпер для юрлиц и виртуальный шейпер для физлиц. У физлиц все просто - 1 ip - 1 сессия, потому на FreeBSD заранее конфигурируются необходимые pipe, куда потом пользователи загоняются через tablearg. С юрлицами сложнее - у них может быть несколько IP и конфигурация pipe может быть произвольной. Я сейчас реализовал на python аналог manad из 5.1, ему сейчас на вход передается SID и конфигурация pipe. Он сам вычисляет номер свободного pipe, запоминает его у себя, конфигурирует и так же через tablearg загоняет ip. Вроде задача решена, но не полностью, как я уже писал - в одном договоре на самом деле могут быть несколько SID, а pipe для всех должен быть один. И вот как эту схему реализовать - пока не придумал.

P.S. Пока писал похоже догадался - надо не SID как ключ использовать, а CID. Сейчас прикину :)

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