Организация p2p-связности между конечным и MPLS-роутерами

Часто появляется задача, когда нужно прописать канал по оптике (раньше резерв, например, был по РРЛ). Есть следующая топология:

P80510-202510.jpg

Что нужно сделать:

  • на end_router:
    • Создать сабинтерфейс (или interface vlan)
    • На интерфейсе прописать соответствующий vrf (или использовать по-умолчанию)
    • Прописать дескрипшин
    • Настроить ip-адрес с сеткой
    • Настроить ospf:
      • area
      • network
      • no passive-interface
  • На sw A:
    • Проверить что создаваемого vlan’а нет в конфигурации
    • Создать нужный vlan с именем
    • Проверить фильтры в сторону uplink’а (как правило таких фильтров нет)
  • На sw 1-N, B:
    • Проверить что создаваемого vlan’а нет в конфигурации
    • Создать нужный vlan с именем
    • Проверить фильтры. Скорее всего они будут прописаны в сторону downlink-портов (в сторону site A)
  • на end_router:
    • Создать сабинтерфейс (или interface vlan)
    • На интерфейсе прописать соответствующий vrf (по умолчанию здесь vrf не используется, по любому будет какой-то)
    • Прописать дескрипшин
    • Настроить ip-адрес с сеткой
    • Настроить ospf:
      • area
      • network
      • no passive-interface

Добавить вланы на грядку свитчей достаточно просто. Но, как организовать проверку, где и на каких портах нужно добавлять влан? Так же можно всё вообще ушатать. Проблема в том, что фильтры на vlan прописаны только в сторону downlink-порта. Что надо сделать получается:

  • Найти down-link порт
  • Проверить, настроены ли там фильтры
  • Добавить вланы.

Надо подумать над логикой и реализовать. Может быть проще это сделать с помощью ansible?

 

Парсинг вывода sh int gi0/1 status с помощью TextFSM

Вывод команды:

cgs2520-1#sh int fa0/22 status

Port Name Status Vlan Duplex Speed Type
Fa0/22 AP connected 350 a-full a-100 10/100BaseTX

Задача – распарсить вывод и получить значения следующих полей – статус, скорость, дуплекс, имя и влан.

Результат TextFSM выводит в списке списков. Чтобы сделать из списка списков список:

flat_list = [item for sublist in result for item in sublist]

Собрать в словарь два списка одинаковой длины:

sw=dict(zip(header,flat_list))

Варианты шаблонов для TextFSM здесь

Скрипт здесь. Заходит на железку, смотрит статус интерфейса (переменная задана в скрипте). Вывод записывается в файл, который идентичен ip-адресу железки. Далее вывод парсится по шаблону TextFSM (descr.template). Выводятся порт и дескрипшен.

Cisco CGS2520 поддержка NETCONF

2520 с IOS Cisco IOS Software, CGS2520 Software (CGS2520-LANBASEK9-M), Version 15.2(4)EA5, RELEASE SOFTWARE (fc1) поддерживает netconf. Вроде как..

cgs2520-1#sh netconf schema
New Name Space ‘urn:ietf:params:xml:ns:netconf:base:1.0’
<VirtualRootTag> [0, 1] required
<rpc-reply> [0, 1] required
………………………………………………………………………….

Netconf включается так:

cgs2520-1(config)#netconf ssh

Подключиться к подсистеме netconf можно следующим образом:

ssh -2 -s tar@172.16.1.1 netconf

Что нужно сделать:

  • Разобраться с подключением.
  • Что можно делать (функционал)

Реализация netconf-клиента под python: ncclient

pip install ncclient

 

from ncclient import manager

cisco=manager.connect(host=’ip’, port=’22’, username=’admin’, password=’pass’, allow_agent=False, , look_for_keys=False)

cisco.get()

Выдаёт весь конфиг.

Взаимодействие с Cisco ASR1002x по API

Есть у нас парочка ASR1002x. В дальнейшем их будет ещё, правда не так много. Хочу здесь составить план или черновик, как с ними можно взаимодействовать и что можно автоматизировать. Какие для этого понадобятся инструменты и как это можно реализовать на практике.

Поддерживает REST API, но. Для этого надо скачать модуль поддержки REST. REST API Support for IOS XE – по факту виртуалка, которая устанавливается на ASR. Для того что бы скачать его, нужен сервисный контракт. Печалька..