Команды OSPF

Вендор LSA1 LSA2 LSA5 Opaque-area (TE)
Cisco show ip ospf database router show ip ospf database network show ip ospf database external
Cisco NX-OS show ip ospf database router detail show ip ospf database network detail show ip ospf database external detail
Fortinet get router info ospf database router lsa get router info ospf database network lsa get router info ospf database external lsa
FRR/Quagga show ip ospf database router show ip ospf database network show ip ospf database external show ip ospf database opaque-area
Ruckus show ip ospf database link-state router show ip ospf database link-state network show ip ospf database external-link-state
Juniper show ospf database router extensive | no-more show ospf database network extensive | no-more show ospf database external extensive | no-more
Bird show ospf state all show ospf state all show ospf state all
Nokia show router ospf database type router detail show router ospf database type network detail show router ospf database type external detail
Mikrotik /routing ospf lsa print detail file=lsa.txt /routing ospf lsa print detail file=lsa.txt /routing ospf lsa print detail file=lsa.txt
Huawei display ospf lsdb router display ospf lsdb network display ospf lsdb ase
Paloalto show routing protocol ospf dumplsdb show routing protocol ospf dumplsdb show routing protocol ospf dumplsdb
HP show ip ospf link-state detail (Stub subnets without mask!) show ip ospf link-state detail show ip ospf external-link-state(LSA5 subnets without mask!)
Ubiquiti show ip ospf database router show ip ospf database network show ip ospf database external
Allied Telesis show ip ospf database router show ip ospf database network show ip ospf database external
Extreme show ospf lsdb detail lstype router show ospf lsdb detail lstype network show ospf lsdb detail lstype as-external
Ericsson show ospf database router detail show ospf database network detail show ospf database external detail
Обязательность YES YES NO Опционально (TE)

Команды OSPFv3

Визуализация топологии OSPFv3 (RFC 5340) LSDB. Сохраните вывод команды в файл с расширением .txt или .log и загрузите в Topolograph.

Вендор Команда Поддержка API
Arista show ipv6 ospf database detail YES

Сохраните вывод минимум двух команд OSPF (для получения LSA1 и LSA2) или одной команды IS-IS и загрузите в Topolograph с расширением .txt или .log.

Команды IS-IS

Вендор Команда Поддержка API
Cisco show isis database detail YES
Juniper show isis database extensive YES
Nokia show router isis database detail YES
Huawei display isis lsdb verbose YES
FRR show isis database detail* (router-isis#no hostname dynamic) YES

*FRR смешивает LSPID и динамические имена хостов в IS-IS LSDB, поэтому поддерживается построение топологии IS-IS только без имён хостов. «no hostname dynamic» отключает динамические имена хостов в локальной IS-IS LSDB.

Поддержка TLV IS-IS

Название TLV Номер TLV Cisco Juniper Nokia FRR Huawei ZTE
IS Reachability 2 YES YES YES YES YES
Extended IS Reachability (new) 22 YES YES YES YES YES YES
IPv4 Internal Reachability (old) 128 YES YES YES YES YES
IPv4 External Reachability (old) 130
Extended IPv4 Reachability (new) 135 YES YES YES YES YES YES
IPv6 Reachability 2 YES YES YES YES YES YES

Общий вид (GeneralView)

Демо-граф уже загружен для всех пользователей. Нажмите «Load dynamic graph», чтобы его загрузить. После загрузки вы увидите топологию, жирные линии - ECMP-линки. Демо-граф в Topolograph

Нажмите на жирную линию, чтобы развернуть ECMP и увидеть все вложенные линки. Topolograph: нажмите на жирную линию для разворота ECMP

Кратчайший путь. Как построить.

Кратчайший путь можно построить от любого узла. Кликните правой кнопкой по узлу. Описание со всеми узлами и стоимостью пути отображается над топологией. Topolograph: построение кратчайшего пути от узла

После выбора источника и назначения - кратчайший путь будет подсвечен. Topolograph: кратчайшие пути OSPF

Все кратчайшие пути ко всем узлам. Минимальное дерево кратчайших путей.

Новая функция релиза v2.11. MST показывает все кратчайшие пути К узлу или ОТ узла. Активируйте через переключатель. Topolograph MST: все кратчайшие пути к узлу или от него

Новая функция v2.11. Все входящие кратчайшие пути построены к узлу. Topolograph: все входящие кратчайшие пути

Новая функция v2.11. Все исходящие кратчайшие пути построены от узла. Topolograph: все исходящие кратчайшие пути

Новая функция v2.13. Разница между входящие и исходящие кратчайшими путями выбранного узла. Topolograph: разница между входящими и исходящими кратчайшими путями

Поиск устройства терминации сети

Как узнать, какие сети терминированы на конкретном узле. Есть два способа. Первый - начните вводить ID узла в поле «Find node by RID/IP. Find network» - вы увидите все терминированные на нём сети. Терминированные сети на узле

Второй способ - нажать на узел. Появится форма со списком всех зарезервированных и незарезервированных сетей. Сеть считается зарезервированной, если она терминирована минимум на двух узлах. Терминированные сети со статусом резервирования

Резервные пути. Эмуляция отказа линка.

Чтобы найти резервный путь - нажмите на подсвеченное ребро. Вы эмулируете отказ линка, и кратчайший путь будет перестроен в обход «упавшего» ребра. Topolograph: резервный путь OSPF

Перестроение кратчайшего пути изменением OSPF cost на лету

Можно изменить стоимость OSPF любого линка. Кликните правой кнопкой по ребру - появится форма. Введите новое значение cost. Представьте, что нужно перенаправить трафик с линка 123.10.10.10 - 123.30.30.30 на другой линк. Topolograph: подготовка к изменению OSPF cost

Кликните правой кнопкой по подсвеченному ребру и установите 12. Получим новый поток трафика с новой стоимостью OSPF. Topolograph: результат изменения OSPF cost

Сравнение состояния сети в разное время

При внесении изменений в конфигурацию (добавление новой сети, редистрибуция другого протокола в OSPF или изменение фильтров в route-map) важно убедиться, что результат соответствует ожиданиям. Загрузите состояние сети до и после изменений и сравните. Будет показано:

Topolograph: сравнение состояний OSPF-сети

Реакция сети на отказ

В этом режиме можно эмулировать отказ линка или маршрутизатора. Топология будет перерисована с ожидаемым изменением потоков трафика в обход упавшего элемента.

Загрузите граф (если ещё не сделали) и нажмите на NetworkReactionOnFailure.

Topolograph: эмуляция отказа OSPF-линка

Как видно, скорость снижения трафика от узла 123.30.30.30 к 123.123.30.30 и 123.123.31.31 отличается от обратного направления [от 123.123.30.30 к 123.30.30.30] примерно в 2 раза. Это происходит из-за асимметричного пути трафика. Topolograph: эмуляция отказа OSPF-линка со статистикой

Также видим ожидаемый рост трафика на синем ребре. Topolograph: результат эмуляции отказа OSPF-линка

Topolograph строит топологию на основе смежности OSPF, физическая связность скрыта. Но в ряде случаев можно предположить, что соседи используют общую среду. Например, если у соседей есть общий DR - предполагается подключение через общую физическую среду, и при эмуляции отказа одного ребра - все рёбра между такими соседями считаются упавшими.

Пометить все линки с общей средой (общий DR) как включённые Topolograph: эмуляция отказа линка с общей средой

Если у соседей нет DR или их только два на линке, при эмуляции отказа ребра удаляется только один линк между двумя конкретными соседями.

Пометить все линки с общей средой (общий DR) как отключённые Topolograph: эмуляция отказа линка на выделенной среде

Реакция сети при отказе устройства. Эмуляция отказа устройства.

Кликните правой кнопкой по узлу и выберите «shutdown this node». Алгоритм исключит этот узел. Topolograph: реакция сети при отказе устройства

Реакция сети на отказ узла 123.123.101.101. Topolograph: реакция сети при отказе устройства

Во вкладке NetworkReactionOnFailure можно увидеть реакцию сети на изменение стоимости OSPF на лету. Задайте новую стоимость OSPF в контекстном меню ребра (правая кнопка мыши). Topolograph: реакция сети на изменение стоимости OSPF

Режим проектирования сети

OSPF/IS-IS LSDB <-> YAML взаимозаменяемы в обоих направлениях: можно проектировать домен IGP с нуля или на основе загруженной LSDB, добавлять новые линки или изменять стоимости и затем проверять реакцию сети.

Базовая топология на основе YAML.

Постройте граф с заданными узлами и рёбрами. Базовая топология на основе YAML

Атрибуты узла

Имя узла обязательно. Должно быть в формате IP-адреса. Чтобы изменить отображаемое имя - используйте label

Теги узла опциональны. Любые пары ключ (строка): значение (str, int, float, словарь, список).

Атрибуты узла и REST API запрос на получение узлов

Граф содержит 6 узлов. Выберите все основные узлы (ha_role: primary) в первом DC (dc1)

Атрибуты ребра

src, dst обязательны.

cost опционален. По умолчанию 1. Соответствует стоимости OSPF/IS-IS.

directed опционален. По умолчанию false.

Теги ребра опциональны. Любые пары ключ (строка): значение (str, int, float, словарь, список).

Атрибуты ребра и REST API запрос на получение рёбер

Выберите все рёбра через verizon ISP между 10.10.10.2 и 10.10.10.4

Добавим новый линк со стоимостью стоимостью 1 между устройствами R3 (10.10.10.3) и R4 (10.10.10.4) и посмотрим на реакцию сети. Topolograph: реакция сети на добавление нового линка

Очевидно, трафик на прямом линке R3<->R4 вырастет, а к R2 (10.10.10.2) и R5 (10.10.10.5) - снизится.

Аналитика

В этом режиме можно запускать алгоритмы для проверки OSPF-сети.

Вывод всех однонаправленных линков (число входящих и исходящих линков между двумя соседями не совпадает) Topolograph: однонаправленные и асимметричные OSPF-линки

Ребро помечено красным из-за разных метрик OSPF: cost 1 и cost 10 Topolograph: отчёт по однонаправленным и асимметричным линкам

Асимметричные пути.

Вывод всех асимметричных путей с разных точек зрения. Topolograph: меню асимметричных OSPF-путей

Получаем список узлов с асимметричными путями. При проверке видна разница между входящими и исходящими путями. Topolograph: отчёт по асимметричным OSPF-путям

Основные и резервные пути через один ECMP.

Если несколько линков объединены в ECMP и основной линк падает - резервный путь должен пройти через второй линк того же ECMP.

Проверка пройдена

Topolograph: пути OSPF через ECMP

Если резервный путь не идёт через ECMP и выбирает другой маршрут - отчёт считается непройденным.

Проверка не пройдена

Topolograph: пути OSPF не через второй линк ECMP

Резервные пути через третьи площадки.

Отчёт проверяет: если два местоположения напрямую связаны, резервные пути должны проходить только между ними и не использовать третье местоположение как транзит. Перед запуском создайте группы (~названия сайтов/локаций) и назначьте устройства на группы. Например, два офиса во Франции: главный (EU_FRA) и удалённый (EU_FRA1). Аналогичная схема в Италии. Главные офисы соединены основным (OSPF cost 10) и резервным (OSPF cost 20) линком.

Удалённые офисы имеют основной линк (OSPF cost 1) к своим главным офисам и резервный (OSPF cost 10) к иностранному офису.

Topolograph: маршрутизация OSPF внутри площадки

При падении основного линка между главными офисами - резервный путь уходит через удалённые офисы!

Проверка не пройдена

Topolograph: резервные OSPF-пути через третьи площадки

Тепловая карта сети

Во вкладке Analytics можно увидеть, сколько терминированных подсетей зарезервированы путём терминации той же подсети на разных устройствах. Topolograph: тепловая карта OSPF-сети

Нажмите на узел, чтобы узнать, какие сети зарезервированы, а какие нет. Topolograph: тепловая карта с сетями

Как видно, только лупбэк самого устройства не зарезервирован - это нормально. Topolograph: тепловая карта с лупбэком

Дублирующиеся сети [MPLS]

"Аналитика/Дублированные терминированные сети. Проблема влияния IP-дублирований на MPLS обусловлена тем, что метки генерируются на основе IP-блоков, которые могут дублироваться. В результате один и тот же IP-блок может быть сопоставлен с разными метками. Это приводит к тому, что один блок с разными метками распространяется на другие маршрутизаторы, в том числе с дублированным IP. Особенно критично это при внедрении MPLS Traffic Engineering (MPLS-TE) или RSVP-TE: производительность снижается, возникают ошибки маршрутизации. Таким образом, дублирование блоков критично для MPLS-сред, прежде всего из-за генерации дублирующихся меток для одного и того же блока. На маршрутизаторах это вызывает проблемы при пересчёте путей TE или RSVP-TE."

Feature request. #issues/6
Сеть Количество терминирующих узлов Имена узлов
10.0.0.0/24 4 [172.16.1.2, 172.26.1.2], [172.30.2.1, 178.20.3.1]

Сеть 10.0.0.0/24 терминирована на четырёх узлах: 172.16.1.2 и 172.26.1.2 напрямую связаны, 172.30.2.1 и 178.20.3.1 напрямую связаны, но не между собой.

API

Вы можете использовать любимый NetDevOps-инструмент (Ansible, netmiko, Nornir, Topolograph SDK и др.) для загрузки OSPF-графа в Topolograph через POST-запрос. После загрузки вы получаете разницу с ранее загруженными графами, а именно:

Получить учётные данные.

Создайте аккаунт с email/паролем на странице Login/Registration, а также добавьте ваш исходный IP/сеть в список авторизованных сетей во вкладке API.

Загрузить топологию OSPF через API

Сохраните вывод команд с LSA1, LSA2, LSA5 в один файл - cisco_lsdb_output.txt

      import requests
      from pprint import pprint as pp
      with open('cisco_lsdb_output.txt') as f:
        lsdb_output = f.read()
        r_post = requests.post('https://topolograph.com/api/graph', auth=('youraccount@domain.com', 'your-pass'),
                                json={'lsdb_output': lsdb_output, 'vendor_device': 'Cisco'})
        pp(r_post.json())
      

С помощью Python читаем содержимое файла и отправляем (POST-запрос) в Topolograph.

Ответ содержит:

  • разницу с ранее загруженными графами
  • ссылку для получения всех сетей
  • статус выполненных проверок
  •         >>> pp(r_post.json())
            {'diff': {'compared_with_graph_time': '02Jun2021_21h18m04s_13_hosts',
                      'graphs_diff': {'all_edges_stats_ll': [{'dst_node': '123.123.110.110',
                                                              'link_cost': 10,
                                                              'link_status': 'old',
                                                              'src_node': '123.123.100.100'},
                                                             {'dst_node': '123.123.111.111',
                                                              'link_cost': 10,
                                                              'link_status': 'old',
                                                              'src_node': '123.123.101.101'},
                                                             {'dst_node': '123.123.100.100',
                                                              'link_cost': 10,
                                                              'link_status': 'old',
                                                              'src_node': '123.123.110.110'},
                                                             {'dst_node': '123.123.101.101',
                                                              'link_cost': 10,
                                                              'link_status': 'old',
                                                              'src_node': '123.123.111.111'}],
                                      'new_nodes': [],
                                      'old_nodes': []},
                      'networks_diff': {'new_subnets_attr_dd_ll': [{'rid': '123.30.30.30',
                                                                    'subnet': '30.30.30.30/32'}],
                                        'old_subnets_attr_dd_ll': [{'rid': '123.10.10.10',
                                                                    'subnet': '1.2.3.0/30'}]}},
            'graph_time': '08Jun2021_20h15m26s_13_hosts',
            'hosts': {'count': 12},
            'networks': {'backuped': 14,
                          'count': 38,
                          'notbackuped': 24,
                          'url_link': 'https://topolograph.com/api/network/08Jun2021_20h15m26s_13_hosts'},
            'reports': {'asym_edges_pass_status': False},
            'timestamp': '2021-06-8T20:15:26.265000'}
          

    Визуальная разница между состояниями OSPF. Topolograph: разница состояний OSPF

            >>> pp(r_post.json())
            {'diff': {'compared_with_graph_time': '02Jun2021_21h18m04s_13_hosts',
                      'graphs_diff': {'all_edges_stats_ll': [{'dst_node': '123.123.110.110',
                                                              'link_cost': 10,
                                                              'link_status': 'old',
                                                              'src_node': '123.123.100.100'},
                                                             {'dst_node': '123.123.111.111',
                                                              'link_cost': 10,
                                                              'link_status': 'old',
                                                              'src_node': '123.123.101.101'},
                                                             {'dst_node': '123.123.100.100',
                                                              'link_cost': 10,
                                                              'link_status': 'old',
                                                              'src_node': '123.123.110.110'},
                                                             {'dst_node': '123.123.101.101',
                                                              'link_cost': 10,
                                                              'link_status': 'old',
                                                              'src_node': '123.123.111.111'}],
                                      'new_nodes': [],
                                      'old_nodes': []},
                      'networks_diff': {'new_subnets_attr_dd_ll': [{'rid': '123.30.30.30',
                                                                    'subnet': '30.30.30.30/32'}],
                                        'old_subnets_attr_dd_ll': [{'rid': '123.10.10.10',
                                                                    'subnet': '1.2.3.0/30'}]}},
            'graph_time': '08Jun2021_20h15m26s_13_hosts',
            'hosts': {'count': 12},
            'networks': {'backuped': 14,
                          'count': 38,
                          'notbackuped': 24,
                          'url_link': 'https://topolograph.com/api/network/08Jun2021_20h15m26s_13_hosts'},
            'reports': {'asym_edges_pass_status': False},
            'timestamp': '2021-06-8T20:15:26.265000'}
          
    Загрузить несколько OSPF LSDB через API

    Топология строится на основе LSA1 и LSA2, которые привязаны к конкретной зоне. Для многозональной сети нужно сохранить вывод LSDB с нескольких устройств в отдельные файлы в формате Имя вендора_имя протокола.txt

    Например, два LSDB: Cisco_ospf.txt, Juniper_ospf.txt

    LSDB сохраняются в папку lsdb_samples , затем оборачиваются в словарь атрибутов LSDB

          {'lsdb_output': '...lsdb output...', 'vendor_device': 'Cisco, Juniper...', 'igp_protocol': 'ospf|isis'}
          

    Полный пример:

          import requests
          TOPOLOGRAPH_HOST="127.0.0.1"
          TOPOLOGRAPH_PORT=5000
          TOPOLOGRAPH_WEB_API_USERNAME_EMAIL="your login"
          TOPOLOGRAPH_WEB_API_PASSWORD="your password"
          from pprint import pprint as pp
    
          lsdbs_attr_ll = []
          lsdb_dir = os.path.join(os.getcwd(), 'lsdb_samples')
          for vendor_name, protocol_name in [('Cisco', 'ospf'), ('Juniper', 'ospf')]:
            f_name = os.path.join(lsdb_dir, f"{vendor_name}_{protocol_name}.txt")
            with open(f_name) as f:
              lsdbs_attr_ll.append({'lsdb_output': f.read(), 'vendor_device': vendor_name, 'igp_protocol': protocol_name})
          r_post = requests.post(f'http://{TOPOLOGRAPH_HOST}:{TOPOLOGRAPH_PORT}/api/graphs', auth=(TOPOLOGRAPH_WEB_API_USERNAME_EMAIL, TOPOLOGRAPH_WEB_API_PASSWORD),  json=lsdbs_attr_ll, timeout=(5, 30))
          pp(r_post.json())
          

    Ответ содержит:

  • разницу с ранее загруженными графами
  • ссылку для получения всех сетей
  • статус выполненных проверок
  • Группы & VRF

    На одном устройстве может существовать несколько экземпляров OSPF в разных VRF. Это приводит к дублированию узлов на графе. Вкладка VRF позволяет объединить несколько экземпляров OSPF в один и избежать дублирования.

    На маршрутизаторе три VRF и три экземпляра OSPF. Чтобы избежать дублирования - создайте VRF (или импортируйте через CSV), свяжите узел с VRF и укажите дублирующиеся экземпляры к основному OSPF RID.

    Topolograph: экземпляры OSPF VRF

    
            
     
            
    Topolograph 2.61 📣 Присоединиться к сообществу!