Данный пример предполагает выдачу абоненту биллингом адреса по DHCP и управление Mikrotik'ом с помощью Mikrotik-API для назначения скорости и ограничений данному IP-адресу.
Настройка
- На вкладке Устройства и ресурсы - IP-ресурсы создайте категорию IP-ресурса, а затем IP-ресурс в этой категории. Можете также указать роутер, маску подсети и DNS - они будут выданы в DHCP (данные параметры можно также указывать в конфигурации устройства-коммутатора).
- На вкладке Устройства и ресурсы - VLAN-ресурсы создайте категорию VLAN-ресурса и VLAN-ресурс.
На вкладке Справочники - Опции создайте опцию-папку Скорость, создайте дочерние опции-скорости, укажите в их конфигурациях address list'ы Mikrotik'а, например:
list=512k_ip
На вкладке Устройства и ресурсы - Типы устройств создайте тип устройства с названием Access+Accounting.
Создайте тип устройства RouterOS, укажите в качестве Обработчика активации сервисов TerminalServiceActivator. Укажите в конфигурации данного типа устройства:
# Порт подключения (если не указан, то используется порт из поля Хост/порт) sa.terminal.port=8729 # протокол подключения (telnet/ssh/tcp/mikrotik-api/mikrotik-api-ssl/shell) sa.terminal.protocol=mikrotik-api-ssl # Команда выхода (отключения) sa.terminal.exit= # Команды, вызываемые при включении опции ID=x (и дочерних опций по отношению к ID=x) на соединении sa.terminal.connection.inetOption.1.enable.1=/ip/firewall/address-list/print .proplist=.id where address=${ip()} and comment=bgb${servId()} sa.terminal.connection.inetOption.1.enable.2=${skipIfEmpty(mikrotikLastIds())}/ip/firewall/address-list/remove .id=${mikrotikLastIds()} sa.terminal.connection.inetOption.1.enable.3=/ip/firewall/address-list/add address=${ip()} list=${param(option(1),'list','512k_ip')} comment=bgb${servId()} # команды, вызываемые при отключении опции ID=x (и дочерних опций по отношению к ID=x) на соединении sa.terminal.connection.inetOption.1.disable.1=/ip/firewall/address-list/print .proplist=.id where address=${ip()} and comment=bgb${servId()} sa.terminal.connection.inetOption.1.disable.2=${skipIfEmpty(mikrotikLastIds())}/ip/firewall/address-list/remove .id=${mikrotikLastIds()}
Обратите внимание на макрос ${param(option(1),'list','512k_ip')} - он берет текущую активную опцию, дочернюю по отношению к опции с ID=1 и получает значение параметра list из ее конфигурации (третий параметр - значение по умолчанию).
При работе через SSH настройки подключения будут такими (но также нужно будет поменять команды, т.к. в Mikrotik SSH и API синтаксис различается):Создайте тип устройства-relay, например, Cisco Catalyst, укажите в конфигурации параметры разбора Agent-Remote-Id из Option 82, например:
dhcp.option82.removeHeader=2 # Параметры для извлечения из пакета agentRemoteId # вид значения в опции agentRemoteId: 0 (по умолчанию) - байты, 1 - строка #dhcp.option82.agentRemoteId.type=0 # код субопции 82, содержащей идентификатор коммутатора клиента, позиция и длина последовательности идентификатора dhcp.option82.agentRemoteId.code=2 dhcp.option82.agentRemoteId.position=0 dhcp.option82.agentRemoteId.length=6 # код субопции 82, содержащей VLAN, позиция и длина в субопции #dhcp.option82.vlanId.code=1 #dhcp.option82.vlanId.position=0 #dhcp.option82.vlanId.length=2 # код субопции 82, содержащей SVLAN, позиция и длина в субопции #dhcp.option82.agentSvlanId.code=1 #dhcp.option82.agentSvlanId.position=0 #dhcp.option82.agentSvlanId.length=2
Создайте тип устройства с названием SA-Rerouting, с обработчиком активации сервисов RecipientListServiceActivator, в конфигурации укажите:
# При пересинхронизации вызываем onAccountingStart sa.device.sync.onAccountingStart=1
Устройство данного типа будут перенаправлять задания синхронизации на другу папку дерева устройств.
Создайте тип устройства коммутатора доступа, например DGS-1100-06/ME, на вкладке Интерфейсы создайте интерфейсы (порты) коммутатора.
В дереве устройств создайте устройство типа Access+Accounting, оно будет "корневым" для приложений InetAccess и InetAccounting. Укажите в нем конфигурацию:
# Идентификатор DHCP-сервера (IP-адрес InetAccess) dhcp.serverIdentifier=10.0.25.35 # Категория ресурсов VLAN для статического назначения абонентам vlan.resource.category=1 # Категория IP-ресурсов для динамической выдачи абонентам dhcp.ipCategories=1 # lease time, выдаваемый абоненту dhcp.option.leaseTime=1800 # Таймаут закрытия сессии по отсутствию DHCP(RADIUS/Netflow)-пакетов connection.suspend.timeout=1300 connection.close.timeout=1300 # Режим поиска сервиса договора, например, по VLAN dhcp.servSearchMode=4 # Параметры тарификации accounting.worker.1.thread.count=1 accounting.worker.1.tariffication.1.minDeltaAmount=0 accounting.worker.1.tariffication.1.delay=10 accounting.worker.1.tariffication.1.batchSize=500 accounting.worker.1.tracking.1.delay=10 accounting.worker.1.tracking.1.batchSize=500 accounting.worker.2.thread.count=1 accounting.worker.2.flushing.1.minDeltraAccount=0 accounting.worker.2.flushing.1.delay=20 accounting.worker.2.flushing.1.batchSize=500 accounting.worker.3.thead.count=1 accounting.worker.3.finishing.1.delay=20 accounting.worker.3.finishing.1.batchSize=500 # При выдаче Access-Accept заносим запись в БД connection.start.fromAccept=1
Создайте дочерние устройства-папки BRASы, Relay, Коммутаторы:
В папке BRASы создайте устройство типа RouterOS, укажите в поле Хост/порт IP-адрес данного BRAS'а, в полях Логин и Пароль - соответственно логин и пароль для управления данным устройством.
В конфигурации папки Relay укажите в конфигурации, что для всех устройств в данной папке агентскими устройствами будут устройства в папке Коммутаторы, указав ID папки Коммутаторы:
# Папка с агентскими устройствами (коммутаторами) device.agentDeviceRootId=14
В папке Relay создайте устройство типа Cisco Catalist, в поле Хост/порт укажите IP-адрес данного устройства.
В папке Коммутаторы создайте устройство типа SA-Rerouting и укажите в его конфигурации в параметре sa.recipientList.rootDeviceId ID папки BRASы, чтобы задания синхронизации дублировались на устройства данной папки:
# Дублируем запросы синхронизации на другую папку устройств (BRASы) sa.recipientList.rootDeviceId=12
- В устройстве SA-Rerouting создайте дочернюю папку (например, для группировки по районам).
- Дочерним к устройству типа SA-Rerouting создайте устройство типа DGS-1100-06/ME, укажите в поле идентификатор MAC-адрес коммутатора:
На вкладке Справочники - Типы сервисов создайте тип сервиса с названием, например IPoE, установите галочки устройство, интерфейс, интерфейс персонален, VLAN, VLAN персонален, MAC-адрес. Типа адреса: динамический или статический. В конфигурации:
# Шаблон имени сервиса в договоре title.pattern=(${deviceIdentifier})/(${interfaceId})
- В договоре создайте сервис данного типа, укажите коммутатор, порт, VLAN и MAC-адрес.
Примечание
Указание всех полей в типе сервиса не является обязательным - важны лишь те поля, по которым идет поиск. Например, при поиске по VLAN обязательно нужно лишь указать устройство-коммутатор (не обязательно коммутатор доступа, этом может быть коммутатор агрегации, если у вас VLAN-per-User) и VLAN. Остальные поля могут быть использованы при управлении устройствами (коммутаторами).
Дереву устройств не обязательно быть именно таким. Если у вас один BRAS (шейпер), то SA-Rerouting не нужен. Если релеи не дублируются (т.е. в папке Relay будет только одно устройство), то не обязательно делать отдельные папки: