Поиск по этому блогу

вторник, 16 ноября 2010 г.

Automatic generation policy-map part 2

 Надеюсь вы прочитали предыдущее сообщение. На самом деле в прошлой статье я не совсем провильно все описал(Переписывать очень лень, да и нет времени). Общий алгоритм остался такой же. Алгоритм работы:
  1. У нас из биллинга выгружается файл с клиентами, формат опишу позже, назовем его white list.
  2. Далее скрипт обрабатывает этот файл, генерит конфигурацию для оборудования Cisco.
Теперь более подробно 


Исходные файлы
Все данные будем генерировать из двух файлов:
1.      Файл с описанием сетей, к которым применяется policy'нг(file) .
2.      white list (Это файл, который генерирует биллинг).(whitelist)
3.      Файл с клиентами, а точнее с услугами клиентов.(networks)
Вот пример этих файлов, а точнее их маленькую часть:
whitelist
1244770,172.22.226.194,11264,0,0,,2,11264
Описание полей:
ЛС(а точнее ID услуги клиента)
IP
bandwidth to client
не используется
не используется
не используется
(SLA ID не используется)
не используется
networks
#cat networks
172.22.227.0,255.255.255.240,iap-1.example.com,vlan443,L3,p15hub,,
172.22.227.128,255.255.255.240,iap-1.example.com,Vlan 28,L3,a26-hub,,
172.22.227.240,255.255.255.240,iap-1.example.com,Vlan 28,L3,a26-hub,,
172.22.233.240,255.255.255.240,o2a-2.example.com,Gig 1/1,L2,R12-HUB,915,
172.22.236.192,255.255.255.240,o2a-2.example.com,Gig 1/1,L2,RS-OPTIC-HUB,71,
172.22.36.96,255.255.255.224,dust-1.example.com,vlan1212,L3,DUST-Clients-RealIP,,
172.22.36.128,255.255.255.224,dust-1.example.com,vlan1210,L3,DUST-lenina48-hub,,
172.22.36.48,255.255.255.240,iap-1.example.com,vlan194,L3,gor193b,,

Описание полей файла:
IP сети, маска сети, FQDN железки где будет полисинг, интерфейс где будет применяться политика, тип полисинга (L2 L3), имя политики, номер Vlan если выбран L2(Пустой если L3).
Т.к. на интерфейсе могут быть несколько IP адресов, то в 3-й и 4-й строке примера все одинаково, кроме адресов и масок сетей. У нас этот файл выгружается автоматически, но его можно обновлять и вручную, если у вас не так часто добавляются(меняются) эти данные.

File
Файл с клиентами я назвал тупо “file”. Он генерируется на основе из whitelist.


#cat file
172.22.227.251,255.255.255.255,600,1161551,2,a26-hub,
172.22.227.243,255.255.255.255,450,1172232,2,a26-hub,
172.22.36.98,255.255.255.255,450,1186542,2,DUST-Clients-RealIP,
172.22.36.99,255.255.255.255,450,1186544,2,DUST-Clients-RealIP,
172.22.227.4,255.255.255.255,128,1186725,2,p15hub,
172.22.227.6,255.255.255.255,128,1186725,2,p15hub,
172.22.227.14,255.255.255.255,128,1186725,2,p15hub,
172.22.36.101,255.255.255.255,450,1186979,2,DUST-Clients-RealIP,
172.22.36.130,255.255.255.255,450,1198550,2,DUST-lenina48-hub,
172.22.227.246,255.255.255.255,600,1199587,2,a26-hub,
172.22.227.244,255.255.255.255,600,1202267,2,a26-hub,
172.22.36.131,255.255.255.255,256,1202502,2,DUST-lenina48-hub,
172.22.233.245,255.255.255.255,600,1203711,2,R12-HUB,
172.22.227.247,255.255.255.255,1024,1206887,2,a26-hub,
172.22.36.100,255.255.255.255,600,1207848,2,DUST-Clients-RealIP,
172.22.227.139,255.255.255.255,600,1216106,2,a26-hub,
172.22.36.104,255.255.255.255,2048,1229229,2,DUST-Clients-RealIP,
172.22.36.105,255.255.255.255,1024,1229231,2,DUST-Clients-RealIP,
172.22.36.106,255.255.255.255,1024,1229795,2,DUST-Clients-RealIP,
172.22.36.107,255.255.255.255,4096,1229801,2,DUST-Clients-RealIP,
172.22.36.108,255.255.255.255,11264,1229803,2,DUST-Clients-RealIP,
172.22.36.109,255.255.255.255,2048,1229805,2,DUST-Clients-RealIP,
172.22.36.110,255.255.255.255,2048,1229807,2,DUST-Clients-RealIP,
172.22.36.112,255.255.255.255,11264,1230287,2,DUST-Clients-RealIP,
172.22.36.113,255.255.255.255,2048,1230327,2,DUST-Clients-RealIP,
172.22.227.133,255.255.255.255,2048,1230507,2,a26-hub,
172.22.227.11,255.255.255.255,11264,1242351,2,p15hub,
172.22.36.111,255.255.255.255,11264,1243695,2,DUST-Clients-RealIP,
172.22.233.246,255.255.255.255,1024,1245250,2,R12-HUB,
172.22.36.114,255.255.255.255,51200,1245309,2,DUST-Clients-RealIP,
172.22.227.249,255.255.255.255,11264,1246603,2,a26-hub,

Описание полей файла:
IP,MASK,speed Kbps, ЛС(а точнее ID услуги клиента), SLA ID (Данное поле пока не используется), имя сети к которой принадлежит клиент(берется из файла networks).

Описание директорий и файлов
./
./Makefile
./dust-1.sci-nnov.ru.shaper
./iap-1.sci-nnov.ru.shaper
./main.depend
./o2a-2.sci-nnov.ru.shaper
./shapers.depend



./bin/
class-map.pl
gen_acl_cm.pl
gen_data.pl
gen_policy.pl
get_nets.pl
mkdepend.pl
mkshapersdep.pl



./data/
SC-1156114.data
SC-1161551.data
SC-1172232.data
SC-1186542.data
SC-1186544.data
SC-1186725.data
SC-1186979.data
SC-1198550.data
SC-1199587.data
SC-1202267.data
SC-1202502.data
SC-1203711.data
SC-1206887.data
SC-1207848.data
SC-1216106.data
SC-1229227.data
SC-1229229.data
SC-1229231.data
SC-1229795.data
SC-1229801.data
SC-1229803.data
SC-1229805.data
SC-1229807.data
SC-1230287.data
SC-1230327.data
SC-1230507.data
SC-1242351.data
SC-1243695.data
SC-1245250.data
SC-1245309.data
SC-1246603.data



./files/
Makefile
file
fileprev
loaded
networks



./gen/
DUST-Clients-RealIP.policy-map
DUST-lenina48-hub.policy-map
R12-HUB.policy-map
RS-OPTIC-HUB.policy-map
SC-1156114.class-map
SC-1161551.class-map
SC-1172232.class-map
SC-1186542.class-map
SC-1186544.class-map
SC-1186725.class-map
SC-1186979.class-map
SC-1198550.class-map
SC-1199587.class-map
SC-1202267.class-map
SC-1202502.class-map
SC-1203711.class-map
SC-1206887.class-map
SC-1207848.class-map
SC-1216106.class-map
SC-1229227.class-map
SC-1229229.class-map
SC-1229231.class-map
SC-1229795.class-map
SC-1229801.class-map
SC-1229803.class-map
SC-1229805.class-map
SC-1229807.class-map
SC-1230287.class-map
SC-1230327.class-map
SC-1230507.class-map
SC-1242351.class-map
SC-1243695.class-map
SC-1245250.class-map
SC-1245309.class-map
SC-1246603.class-map
a26-hub.policy-map
gor193b.policy-map
p15hub.policy-map



./tmp/
file
file.del


./*.shaper – конечные файлы для погрузки на киски.
./*.depend – вспомогательные файлы для gmake (генерируются автоматически)
./Makefile – вспомогательный файл gmake.
./bin/ - папка для скриптов
./bin/gen_acl_cm.pl – гененерирует файлы ./gen/*class-map
./bin/gen_data.pl – генерирует файлы ./data/*.data
./bin/gen_policy.pl – генерирует файлы ./gen/*.policy-map
./bin/getclients.pl – генерирует файл ./file/file (берет на STDIN whitelist, выплевывает на STD OUT результат, короый есть в файле ./file/file (file, формат которого описан выше))
./bin/get_nets.pl – генерирует файл ./file/networks (networks). Этот скрипт делает селект из биллинга и вываливает это все в файл networks(можете написать свой скрипт, т.к. у вас нашего биллинга точно не окажется J).
./bin/mkshapersdep.pl – генерирует файл ./shapers.depend
./bin/mkdepend.pl - – генерирует файл ./main.depend
./data/ - директория для *.data файлов
./data/* - сами data файлы
Пример одного из них:
[root@myserver /shapers/data]# cat ./SC-1156114.data
a26-hub,2048,172.22.227.242/32
./files/Makefile – основной (Top level) файл для gmake
./file/file – текущий файл выгрузки из биллинга(генерируются )
./file/fileprev – предыдущий файл ./file/file (для отслеживания изменений)
./file/loaded – конечная цель для ./Makefile, это всего лишь пустой файл.
./file/networks – файл с сетями, который был описан выше, генерируется скриптом ./bin/get_nets.pl
./gen/ - папка с файлами генерации.
./gen/*.class-map – файл с class-map. Генерируется на основе файлов ./*.data. Вот его пример:
[root@myserver /shapers]# cat ./gen//SC-1156114.class-map
no ip access-list extended SC-1156114
ip access-list extended SC-1156114
 permit ip 172.22.227.242 0.0.0.0 any
 permit ip any 172.22.227.242 0.0.0.0

no class-map match-any SC-1156114
class-map match-any SC-1156114
 match access-group name SC-1156114
./gen/*.policy-map – файл с policy-map ./*.shapers состоят из этих файлов, в свою очередь он состоит из файлов ./gen/*.class-map + policyn’g генерируется скриптом bin/gen_policy.pl
Вот его пример:
[root@myserver shapers]# cat  ./gen/a26-hub.policy-map
!
interface Vlan 28
  no service-policy input a26-hub
  no service-policy output a26-hub
!
!
policy-map a26-hub
  no class SC-1156114



no ip access-list extended SC-1156114
ip access-list extended SC-1156114
 permit ip 172.22.227.242 0.0.0.0 any
 permit ip any 172.22.227.242 0.0.0.0

no class-map match-any SC-1156114
class-map match-any SC-1156114
 match access-group name SC-1156114



policy-map a26-hub
 class SC-1156114                                                                                                                                           
 police 2097152 393216 conform-action transmit exceed-action drop                                                                                           
!
interface Vlan 28
  service-policy input a26-hub
  service-policy output a26-hub
!
!
./tmp/ - папка для временных файлов
./tmp/file – временный файл
./tmp/file.del – временный файл
Пример ./*.shaper(В данном примере он такой же как и пример с policy-map, но стоит учитывать то, что в этом файо может состоять из нескольких policy-map)
[root@myserver shapers]# cat  ./iap-1.example.com
!
interface Vlan 28
  no service-policy input a26-hub
  no service-policy output a26-hub
!
!
policy-map a26-hub
  no class SC-1156114



no ip access-list extended SC-1156114
ip access-list extended SC-1156114
 permit ip 172.22.227.242 0.0.0.0 any
 permit ip any 172.22.227.242 0.0.0.0

no class-map match-any SC-1156114
class-map match-any SC-1156114
 match access-group name SC-1156114



policy-map a26-hub
 class SC-1156114                                                                                                                                          
 police 2097152 393216 conform-action transmit exceed-action drop                                                                                          
!
interface Vlan 28
  service-policy input a26-hub
  service-policy output a26-hub
!
!

Вот пока и все, скрипты и Makefile выложу позже.

Комментариев нет:

Отправить комментарий