Перейти к содержанию

Топологии на основе YAML

Обычно Topolograph строит граф из LSDB OSPF/IS-IS - но начиная с v2.32 он может строить его и из описания в YAML. Это значит, что вы можете спроектировать произвольную топологию с нуля (это даже не обязательно должен быть домен IGP), поддерживать её актуальной через REST API и запускать на ней весь тот же анализ.

Network Diagram as a Service

LSDB ⇄ YAML взаимозаменяемы в обе стороны. Вы можете спроектировать домен IGP с нуля или экспортировать загруженную LSDB в YAML, затем добавить линки, изменить метрики и заново проверить реакцию сети на ваши правки.

Базовая диаграмма

Диаграмма в YAML - это просто nodes и edges:

nodes:
  10.10.10.1:
    label: Router1
  10.10.10.2:
    label: Router2
edges:
  - src: 10.10.10.1
    dst: 10.10.10.2
    cost: 10

Загрузите её через REST API:

import requests

yaml_diagram = """
nodes:
  10.10.10.1:
    label: Router1
  10.10.10.2:
    label: Router2
edges:
  - src: 10.10.10.1
    dst: 10.10.10.2
    cost: 10
"""

requests.post(
    'http://<topolograph-host>/api/diagram',
    auth=('', ''),
    json={'yaml_diagram_str': yaml_diagram},
)

…или с помощью Python SDK:

from topolograph import Topolograph

topo = Topolograph(url="topolograph-url", token="your-token")
graph = topo.graphs.upload_diagram(yaml_diagram)
print(f"Diagram uploaded: {graph.graph_time}")

Атрибуты и теги узлов

  • Имя узла обязательно и должно быть в формате IP-адреса. Чтобы показать что-то более понятное, задайте label.
  • Теги необязательны. Прикрепляйте любые пары key: value (значения могут быть строками, числами, словарями или списками) - например, location, ha_role или что угодно, значимое для вас.

Теги делают узлы доступными для запросов. На графе из 6 узлов вы можете выбрать, скажем, все первичные узлы в DC1:

query_params = {'location': 'dc1', 'ha_role': 'primary'}
r = requests.get(
    f'http://{HOST}:{PORT}/api/diagram/{graph_time}/nodes',
    auth=('', ''),
    params=query_params,
)
# -> [{'ha_role': 'primary', 'id': 1, 'label': '10.10.10.2',
#      'location': 'dc1', 'name': '10.10.10.2', 'size': 15}]

Атрибуты линков

У каждого линка есть как минимум src, dst и cost. Линки также могут нести атрибуты Traffic Engineering (пропускная способность, TE-метрика, административная группа), по которым затем можно фильтровать через API линков диаграммы.

Атрибуты сетей

Подсети, терминируемые на узле, находятся в секции верхнего уровня stub_networks:. Это метаданные терминации - точно так же, как когда подсеть разбирается из реальной LSDB - для них не создаётся узел графа, поэтому они учитываются в покрытии резервированием и в оценке сети, а не в счётчике узлов. Подсеть, анонсируемая двумя или более узлами, считается зарезервированной.

stub_networks:
  192.168.1.0/24:
    - node: 10.10.10.1
      cost: 10
      area: 0
    - node: 10.10.10.2
      cost: 20
      area: 0
ключ значения/формат значение
subnet CIDR, например 192.168.1.0/24 ключ каждой записи; его значение - список анонсирующих узлов
node имя узла, должно существовать в nodes узел, анонсирующий подсеть
cost int метрика от этого узла до подсети
area int область, в которой анонсируется подсеть
metric_type int стиль метрики IS-IS
isnarrow, isextended bool кодировка метрики IS-IS

Экспорт топологии обратно в YAML сохраняет эту секцию, так что круговой путь LSDB → YAML → LSDB не теряет подсети.

Туннели MPLS TE

Диаграмма также может объявлять туннели RSVP-TE/SR-TE в секции верхнего уровня lsps:, рядом с nodes/edges. Topolograph выполняет для них размещение CSPF (пропускная способность, affinity, SRLG) и позволяет запрашивать результат или проверять, поместился бы гипотетический новый туннель, не затрагивая граф.

lsps:
  TUN_R1_R3:
    src: 10.10.10.1
    dst: 10.10.10.3
    bandwidth: 2G

Туннели MPLS TE

Зачем это использовать

  • Проверка гипотезы до постройки - запланируйте новый линк или LSP, смоделируйте его в YAML-диаграмме и проверьте, как перестроится сеть.
  • Отображение сетевой диаграммы - постройте граф из узлов и линков, в том числе с метаданными: наличие провайдера, роль провайдера, роль узла и т. д. Это Network Diagram as a Service.

Далее: Атрибуты Traffic Engineering →