Предыстория
Исторически так сложилось, что в нашей сети на старых узлах доступа, которые остались еще с одной из первых компаний-провайдеров Нижнего Новгорода, скорость у клиентов резалась на портах доступа. (Обычно это был Dlink DES-3028). Беда в том, что 3028 как то глючно режет скорость аплода, плюс ко всему это не автоматизировано. Когда клиент меняет тариф, продажники пишут письмо, админы правят скорость на порту. Эта цепь могла в любой момент прерваться по разным причинам (все мы люди….). В один прекрасный момент ко мне подошел мой начальник со словами, ну что, Тимур….при слове perl все уже ассоциируется с тобой, я сразу почувствовал что он задумал что-то плохое))). Короче я понял, что мне придется участвовать в разработке сервиса, который будет автоматизировано менять скорость доступа к СПД у абонентов.
Было решено, что скорость теперь будем резать на оборудовании Cisco, т.к. в любой момент может прийти инженер из ремонта, и заменить порт доступа абонента по различным причинам(например он выгорел), ничего не сказав нам, следовательно привязка к порту была бы неверной, и скорость обновлялась бы на выгоревшем порту. Да и в любой момент времени сверху могут спустить, что на уровне доступа теперь не Dlink а например ZTE, а агрегацию и ядро сети вряд ли будут менять на китайское оборудование.
Поехали
Что мы имеем:
· Каждый такой узел имеет свою выделенную для него подсеть, клиентам адреса выделяются из нее.
· Будем использовать perl, gmake.
· Файлы для обработки будут формироваться отдельно, нашим биллингом.
· Policy-map можно применять как на L2, так и на L3 интерфейсе.(Это нужно учитывать при генерации конфигурации)
· Будем генерить конфиг, потом загружать его на Киску по snmp.
Так как используем Gmake, опишем зависимости
SpeeedConf,10240000,172.22.227.253,172.22.227.240/29
На основе вержнего файла генерится IP access lists, class-map
[SC-000003.class-map] from [SC-000003.data]
no ip acess list extended SC-000003
ip acess list extended SC-000003
permit ip host 172.22.227.253
permit ip 172.22.227.240 0.0.0.7
no class map match-any SC-000003
class map match-any SC-000003
match access-group name SC-000003
[SpeedConf.depend]
SpeedConf.policy-map:SC-000003.data
Тут генерится вся policy-map
[SpeedConf.policy-map] from [SC-000003.data]
interface Vlan28
no service-policy input SpeedConf
no service-policy output SpeedConf
no policy-map SpeedConf
no ip acess list extended SC-000003
ip acess list extended SC-000003
permit ip host 172.22.227.243
permit ip 172.22.227.240 0.0.0.7
no class map match-any SC-000003
class map match-any SC-000003
match access-group name SC-000003
policy-map SpeedConf
class SC-000003
police 10 mbps 2 mbyte conform-action transmit exceed-action drop
interface Vlan28
service-policy input SpeedConf
service-policy output SpeedConf
[iap-1.shapers.depend]
iap-1.shapers:SpeedConf.policy-map
Тут речь идет уже о конкретном устройстве. Ведь на одном устройсве может термитироваться и ограничиваться любое количество сетей. Это уже конечный конфиг для устройства.
[iap-1.shapers] from [SpeedConf.policy-map]
interface Vlan28
no service-policy input SpeedConf
no service-policy output SpeedConf
no policy-map SpeedConf
no ip acess list extended SC-000003
ip acess list extended SC-000003
permit ip host 172.22.227.243
permit ip 172.22.227.240 0.0.0.7
no class map match-any SC-000003
class map match-any SC-000003
match access-group name SC-000003
policy-map SpeedConf
class SC-000003
police 10 mbps 2 mbyte conform-action transmit exceed-action drop
interface Vlan28
service-policy input SpeedConf
service-policy output SpeedConf
Пока все. В следующей статье буду описывать реализацию более подробно.
Если кому интересен данный материал. Пишите сюда либо на мыло мне.
ОтветитьУдалить