OpenFabric - протокол маршрутизации для ЦОД

OpenFabric - протокол маршрутизации для ЦОД

Обзор

OpenFabric - это протокол маршрутизации на основе состояния каналов, разработанный специально для современных архитектур центров обработки данных (ЦОД). Протокол является производным от IS-IS и оптимизирован для работы в топологиях Spine-Leaf (Clos) с большим количеством ECMP путей.

Основные характеристики

  • Основа на IS-IS: Использует проверенную технологию протокола IS-IS с оптимизациями для ЦОД
  • Плоская топология: Отсутствие уровней L1/L2, все маршрутизаторы находятся на одном уровне
  • Dual-stack: Нативная поддержка IPv4 и IPv6 одновременно
  • ECMP: Эффективная поддержка множественных равноценных путей
  • Масштабируемость: Оптимизирован для больших Spine-Leaf топологий
  • Быстрая сходимость: Минимальное время реакции на изменения топологии

Архитектура OpenFabric

OpenFabric предназначен для работы в топологии Clos (Spine-Leaf), которая стала стандартом де-факто для современных ЦОД:

┌─────────────────────────────────────────────────────────┐
│                    Leaf Layer (Tier 2)                   │
│  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐   │
│  │ Leaf 1  │  │ Leaf 2  │  │ Leaf 3  │  │ Leaf 4  │   │
│  └────┬────┘  └────┬────┘  └────┬────┘  └────┬────┘   │
└───────┼────────────┼────────────┼────────────┼─────────┘
        │            │            │            │
        └────┬───────┴─────┬──────┴─────┬──────┘
             │             │            │
┌────────────┼─────────────┼────────────┼────────────────┐
│            │             │            │                 │
│  ┌─────────▼──┐  ┌───────▼────┐  ┌───▼───────┐       │
│  │  Spine 1   │  │  Spine 2   │  │  Spine 3  │       │
│  └────────────┘  └────────────┘  └───────────┘       │
│                  Spine Layer (Tier 1)                  │
└────────────────────────────────────────────────────────┘

Отличия от традиционного IS-IS

ХарактеристикаIS-ISOpenFabric
Уровни иерархииL1, L2, L1/L2Плоская топология
Целевое применениеПровайдерские сетиЦентры обработки данных
ТопологияПроизвольнаяSpine-Leaf (Clos)
ОптимизацияОбщего назначенияДля ECMP и ЦОД
Flood оптимизацияСтандартнаяУлучшенная для fabric

Базовая конфигурация

Network Entity Title (NET)

NET - это уникальный идентификатор маршрутизатора в домене OpenFabric. Конфигурация NET является обязательной.

Формат NET:

49.AREA.SYSTEM-ID.SELECTOR

Компоненты:

  • AFI (Authority and Format Identifier): 49 - частная адресация
  • Area Identifier: Идентификатор зоны (обычно 0001)
  • System Identifier: Уникальный идентификатор системы (48 бит, обычно 12 шестнадцатеричных цифр)
  • NET Selector: Всегда 00

Примеры NET:

# NET из IP-адреса 192.168.100.2
49.0001.1921.6810.0002.00

# NET из MAC-адреса 00:50:56:00:10:02
49.0001.0050.5600.1002.00

# Произвольный NET
49.0001.0000.0000.0001.00

Конфигурация NET:

set protocols openfabric net 49.0001.1921.6810.0002.00

Создание домена OpenFabric

Домен - это логическая группировка маршрутизаторов и интерфейсов в OpenFabric.

# Создание домена с именем DATACENTER
set protocols openfabric domain DATACENTER

# Конфигурация NET для домена
set protocols openfabric net 49.0001.1921.6810.0001.00

Включение интерфейсов

Интерфейсы необходимо явно включить в домен OpenFabric с указанием семейств адресов.

# Включение интерфейса eth1 для IPv4
set protocols openfabric domain DATACENTER interface eth1 address-family ipv4

# Включение интерфейса eth2 для IPv4 и IPv6
set protocols openfabric domain DATACENTER interface eth2 address-family ipv4
set protocols openfabric domain DATACENTER interface eth2 address-family ipv6

# Включение loopback интерфейса
set protocols openfabric domain DATACENTER interface lo address-family ipv4

Минимальная рабочая конфигурация

# Конфигурация Spine маршрутизатора
set protocols openfabric net 49.0001.1921.6810.0001.00
set protocols openfabric domain DC interface eth1 address-family ipv4
set protocols openfabric domain DC interface eth2 address-family ipv4
set protocols openfabric domain DC interface eth3 address-family ipv4
set protocols openfabric domain DC interface eth4 address-family ipv4
set protocols openfabric domain DC interface lo address-family ipv4
commit
save

Конфигурация Fabric Tier

Fabric Tier - это уровень в иерархии Spine-Leaf, который определяет роль маршрутизатора.

Уровни Fabric

  • Tier 0: Зарезервировано для будущего использования
  • Tier 1: Spine уровень (агрегация)
  • Tier 2: Leaf уровень (доступ к серверам)

Конфигурация Tier

# Конфигурация Spine маршрутизатора (Tier 1)
set protocols openfabric domain DATACENTER fabric-tier 1

# Конфигурация Leaf маршрутизатора (Tier 2)
set protocols openfabric domain DATACENTER fabric-tier 2

Важно: Правильная конфигурация Tier критична для оптимальной работы flooding механизма и предотвращения петель.

Параметры интерфейсов

Hello интервал и multiplier

Hello пакеты используются для обнаружения соседей и поддержания смежности.

# Установка hello интервала (по умолчанию: 3 секунды)
set protocols openfabric domain DATACENTER interface eth1 hello-interval 5

# Установка hello multiplier (по умолчанию: 3)
# Dead интервал = hello-interval × hello-multiplier
set protocols openfabric domain DATACENTER interface eth1 hello-multiplier 3

Расчет Dead интервала:

Dead Interval = Hello Interval × Hello Multiplier
Пример: 5 секунд × 3 = 15 секунд

Метрика интерфейса

Метрика влияет на выбор пути. Меньшая метрика предпочтительнее.

# Установка метрики интерфейса (по умолчанию: 10)
set protocols openfabric domain DATACENTER interface eth1 metric 100

# Разные метрики для разных интерфейсов
set protocols openfabric domain DATACENTER interface eth1 metric 10
set protocols openfabric domain DATACENTER interface eth2 metric 20

Диапазон метрики: 1 - 16,777,215

Passive интерфейс

Passive интерфейс анонсирует сети, но не формирует смежности.

# Полезно для loopback интерфейсов и интерфейсов к серверам
set protocols openfabric domain DATACENTER interface lo passive

# Интерфейс к серверам без OpenFabric
set protocols openfabric domain DATACENTER interface eth5 passive
set protocols openfabric domain DATACENTER interface eth5 address-family ipv4

CSNP и PSNP интервалы

CSNP (Complete Sequence Number PDU) и PSNP (Partial Sequence Number PDU) используются для синхронизации базы данных состояния каналов.

# Установка CSNP интервала (по умолчанию: 10 секунд)
set protocols openfabric domain DATACENTER interface eth1 csnp-interval 15

# Установка PSNP интервала (по умолчанию: 2 секунды)
set protocols openfabric domain DATACENTER interface eth1 psnp-interval 3

Параметры LSP (Link State PDU)

Генерация LSP

Контроль частоты генерации новых LSP для оптимизации нагрузки.

# Минимальный интервал между генерациями LSP (миллисекунды)
set protocols openfabric domain DATACENTER lsp-gen-interval 1

# Максимальный интервал между генерациями LSP (секунды)
set protocols openfabric domain DATACENTER lsp-mtu 1497

LSP Refresh интервал

LSP периодически обновляются для предотвращения истечения срока действия.

# Интервал обновления LSP (по умолчанию: 900 секунд)
set protocols openfabric domain DATACENTER lsp-refresh-interval 600

# Максимальное время жизни LSP (по умолчанию: 1200 секунд)
set protocols openfabric domain DATACENTER max-lsp-lifetime 1800

Рекомендация: max-lsp-lifetime должен быть больше lsp-refresh-interval.

Overload bit

Overload bit сигнализирует соседям, что маршрутизатор перегружен и не должен использоваться для транзитного трафика.

# Установка overload bit
set protocols openfabric domain DATACENTER overload

# Установка overload bit на определенное время (секунды)
set protocols openfabric domain DATACENTER overload on-startup 120

Применение:

  • Плановое обслуживание
  • Graceful restart
  • Временные проблемы с производительностью

Purge Originator

Идентификация источника удаления LSP в сети.

# Включение purge originator identification
set protocols openfabric domain DATACENTER purge-originator

Аутентификация

Аутентификация на уровне домена

# Plaintext аутентификация
set protocols openfabric domain DATACENTER domain-password plaintext-password MySecretPassword

# MD5 аутентификация
set protocols openfabric domain DATACENTER domain-password md5 MySecretPassword

Аутентификация на уровне интерфейса

# Plaintext аутентификация интерфейса
set protocols openfabric domain DATACENTER interface eth1 password plaintext-password InterfacePassword

# MD5 аутентификация интерфейса
set protocols openfabric domain DATACENTER interface eth1 password md5 InterfacePassword

Рекомендация: Используйте MD5 аутентификацию для повышения безопасности.

Редистрибуция маршрутов

Редистрибуция подключенных сетей

# Редистрибуция всех подключенных интерфейсов
set protocols openfabric domain DATACENTER redistribute ipv4 connected

# Редистрибуция с route-map фильтрацией
set protocols openfabric domain DATACENTER redistribute ipv4 connected route-map CONNECTED-TO-FABRIC

Редистрибуция статических маршрутов

# Редистрибуция статических маршрутов
set protocols openfabric domain DATACENTER redistribute ipv4 static

# Редистрибуция с метрикой
set protocols openfabric domain DATACENTER redistribute ipv4 static metric 50

Редистрибуция из других протоколов

# Редистрибуция из OSPF
set protocols openfabric domain DATACENTER redistribute ipv4 ospf

# Редистрибуция из BGP
set protocols openfabric domain DATACENTER redistribute ipv4 bgp

# Редистрибуция из Kernel
set protocols openfabric domain DATACENTER redistribute ipv4 kernel

Route-map для фильтрации

# Создание route-map для фильтрации
set policy route-map CONNECTED-TO-FABRIC rule 10 action permit
set policy route-map CONNECTED-TO-FABRIC rule 10 match interface eth5
set policy route-map CONNECTED-TO-FABRIC rule 10 set metric 20

set policy route-map CONNECTED-TO-FABRIC rule 20 action deny

# Применение route-map
set protocols openfabric domain DATACENTER redistribute ipv4 connected route-map CONNECTED-TO-FABRIC

IPv6 конфигурация

OpenFabric нативно поддерживает IPv6 одновременно с IPv4.

# Включение IPv6 на интерфейсах
set protocols openfabric domain DATACENTER interface eth1 address-family ipv6
set protocols openfabric domain DATACENTER interface eth2 address-family ipv6
set protocols openfabric domain DATACENTER interface lo address-family ipv6

# Редистрибуция IPv6 маршрутов
set protocols openfabric domain DATACENTER redistribute ipv6 connected
set protocols openfabric domain DATACENTER redistribute ipv6 static

# Dual-stack конфигурация
set protocols openfabric domain DATACENTER interface eth1 address-family ipv4
set protocols openfabric domain DATACENTER interface eth1 address-family ipv6

Оптимизация Flooding

OpenFabric включает механизмы оптимизации flooding для уменьшения избыточного трафика в Spine-Leaf топологиях.

Принцип работы

В традиционном IS-IS каждый маршрутизатор отправляет LSP всем соседям. В Spine-Leaf топологии это создает избыточность:

  • Leaf отправляет LSP всем Spine
  • Каждый Spine отправляет LSP обратно всем Leaf
  • Результат: многократная передача одних и тех же LSP

OpenFabric с правильно настроенными Tier оптимизирует этот процесс:

  • Leaf (Tier 2) отправляет LSP только одному Spine (Tier 1)
  • Spine распространяет LSP другим Spine и всем Leaf
  • Значительное снижение служебного трафика

Настройка для оптимизации

# Spine конфигурация
set protocols openfabric domain DATACENTER fabric-tier 1

# Leaf конфигурация
set protocols openfabric domain DATACENTER fabric-tier 2

Важно: Все маршрутизаторы на одном физическом уровне должны иметь одинаковый Fabric Tier.

Примеры конфигурации

Пример 1: Yandex Cloud - OpenFabric для Clos ЦОД

Архитектура: 3 Spine маршрутизатора и 4 Leaf маршрутизатора в Yandex Cloud.

Топология

                   Yandex Cloud VPC
┌────────────────────────────────────────────────────────┐
│                                                          │
│  Spine Layer (AS 64512)                                 │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐ │
│  │   Spine-1    │  │   Spine-2    │  │   Spine-3    │ │
│  │ 10.0.1.1/32  │  │ 10.0.1.2/32  │  │ 10.0.1.3/32  │ │
│  └──────┬───────┘  └──────┬───────┘  └──────┬───────┘ │
│         │                  │                  │          │
│         └─────────┬────────┴────────┬─────────┘         │
│                   │                 │                    │
│  Leaf Layer       │                 │                    │
│  ┌────────────────▼──┐  ┌──────────▼────────┐          │
│  │     Leaf-1        │  │      Leaf-2       │          │
│  │   10.0.2.1/32     │  │   10.0.2.2/32     │          │
│  └───────────────────┘  └───────────────────┘          │
│  ┌───────────────────┐  ┌───────────────────┐          │
│  │     Leaf-3        │  │      Leaf-4       │          │
│  │   10.0.2.3/32     │  │   10.0.2.4/32     │          │
│  └───────────────────┘  └───────────────────┘          │
│                                                          │
│  Subnet для Spine-Leaf линков: 10.0.100.0/24           │
│  Subnet для Server линков: 10.0.200.0/22               │
└────────────────────────────────────────────────────────┘

Spine-1 конфигурация

# Интерфейсы
set interfaces ethernet eth0 address 10.0.100.1/31
set interfaces ethernet eth1 address 10.0.100.9/31
set interfaces ethernet eth2 address 10.0.100.17/31
set interfaces ethernet eth3 address 10.0.100.25/31
set interfaces loopback lo address 10.0.1.1/32

# OpenFabric базовая конфигурация
set protocols openfabric net 49.0001.0100.0000.1001.00
set protocols openfabric domain YANDEX fabric-tier 1

# Включение интерфейсов в OpenFabric
set protocols openfabric domain YANDEX interface eth0 address-family ipv4
set protocols openfabric domain YANDEX interface eth1 address-family ipv4
set protocols openfabric domain YANDEX interface eth2 address-family ipv4
set protocols openfabric domain YANDEX interface eth3 address-family ipv4
set protocols openfabric domain YANDEX interface lo address-family ipv4
set protocols openfabric domain YANDEX interface lo passive

# Оптимизация таймеров для ЦОД
set protocols openfabric domain YANDEX interface eth0 hello-interval 3
set protocols openfabric domain YANDEX interface eth0 hello-multiplier 3
set protocols openfabric domain YANDEX interface eth1 hello-interval 3
set protocols openfabric domain YANDEX interface eth1 hello-multiplier 3
set protocols openfabric domain YANDEX interface eth2 hello-interval 3
set protocols openfabric domain YANDEX interface eth2 hello-multiplier 3
set protocols openfabric domain YANDEX interface eth3 hello-interval 3
set protocols openfabric domain YANDEX interface eth3 hello-multiplier 3

# Метрики (одинаковые для ECMP)
set protocols openfabric domain YANDEX interface eth0 metric 10
set protocols openfabric domain YANDEX interface eth1 metric 10
set protocols openfabric domain YANDEX interface eth2 metric 10
set protocols openfabric domain YANDEX interface eth3 metric 10

# LSP параметры
set protocols openfabric domain YANDEX lsp-gen-interval 1
set protocols openfabric domain YANDEX lsp-refresh-interval 600
set protocols openfabric domain YANDEX max-lsp-lifetime 1200

# Аутентификация
set protocols openfabric domain YANDEX domain-password md5 YandexCloudSecret2024

commit
save

Spine-2 конфигурация

# Интерфейсы
set interfaces ethernet eth0 address 10.0.100.3/31
set interfaces ethernet eth1 address 10.0.100.11/31
set interfaces ethernet eth2 address 10.0.100.19/31
set interfaces ethernet eth3 address 10.0.100.27/31
set interfaces loopback lo address 10.0.1.2/32

# OpenFabric базовая конфигурация
set protocols openfabric net 49.0001.0100.0000.1002.00
set protocols openfabric domain YANDEX fabric-tier 1

# Включение интерфейсов
set protocols openfabric domain YANDEX interface eth0 address-family ipv4
set protocols openfabric domain YANDEX interface eth1 address-family ipv4
set protocols openfabric domain YANDEX interface eth2 address-family ipv4
set protocols openfabric domain YANDEX interface eth3 address-family ipv4
set protocols openfabric domain YANDEX interface lo address-family ipv4
set protocols openfabric domain YANDEX interface lo passive

# Таймеры и метрики (идентично Spine-1)
set protocols openfabric domain YANDEX interface eth0 hello-interval 3
set protocols openfabric domain YANDEX interface eth0 hello-multiplier 3
set protocols openfabric domain YANDEX interface eth0 metric 10
set protocols openfabric domain YANDEX interface eth1 hello-interval 3
set protocols openfabric domain YANDEX interface eth1 hello-multiplier 3
set protocols openfabric domain YANDEX interface eth1 metric 10
set protocols openfabric domain YANDEX interface eth2 hello-interval 3
set protocols openfabric domain YANDEX interface eth2 hello-multiplier 3
set protocols openfabric domain YANDEX interface eth2 metric 10
set protocols openfabric domain YANDEX interface eth3 hello-interval 3
set protocols openfabric domain YANDEX interface eth3 hello-multiplier 3
set protocols openfabric domain YANDEX interface eth3 metric 10

# LSP параметры
set protocols openfabric domain YANDEX lsp-gen-interval 1
set protocols openfabric domain YANDEX lsp-refresh-interval 600
set protocols openfabric domain YANDEX max-lsp-lifetime 1200

# Аутентификация
set protocols openfabric domain YANDEX domain-password md5 YandexCloudSecret2024

commit
save

Spine-3 конфигурация

# Интерфейсы
set interfaces ethernet eth0 address 10.0.100.5/31
set interfaces ethernet eth1 address 10.0.100.13/31
set interfaces ethernet eth2 address 10.0.100.21/31
set interfaces ethernet eth3 address 10.0.100.29/31
set interfaces loopback lo address 10.0.1.3/32

# OpenFabric базовая конфигурация
set protocols openfabric net 49.0001.0100.0000.1003.00
set protocols openfabric domain YANDEX fabric-tier 1

# Включение интерфейсов
set protocols openfabric domain YANDEX interface eth0 address-family ipv4
set protocols openfabric domain YANDEX interface eth1 address-family ipv4
set protocols openfabric domain YANDEX interface eth2 address-family ipv4
set protocols openfabric domain YANDEX interface eth3 address-family ipv4
set protocols openfabric domain YANDEX interface lo address-family ipv4
set protocols openfabric domain YANDEX interface lo passive

# Таймеры и метрики
set protocols openfabric domain YANDEX interface eth0 hello-interval 3
set protocols openfabric domain YANDEX interface eth0 hello-multiplier 3
set protocols openfabric domain YANDEX interface eth0 metric 10
set protocols openfabric domain YANDEX interface eth1 hello-interval 3
set protocols openfabric domain YANDEX interface eth1 hello-multiplier 3
set protocols openfabric domain YANDEX interface eth1 metric 10
set protocols openfabric domain YANDEX interface eth2 hello-interval 3
set protocols openfabric domain YANDEX interface eth2 hello-multiplier 3
set protocols openfabric domain YANDEX interface eth2 metric 10
set protocols openfabric domain YANDEX interface eth3 hello-interval 3
set protocols openfabric domain YANDEX interface eth3 hello-multiplier 3
set protocols openfabric domain YANDEX interface eth3 metric 10

# LSP параметры
set protocols openfabric domain YANDEX lsp-gen-interval 1
set protocols openfabric domain YANDEX lsp-refresh-interval 600
set protocols openfabric domain YANDEX max-lsp-lifetime 1200

# Аутентификация
set protocols openfabric domain YANDEX domain-password md5 YandexCloudSecret2024

commit
save

Leaf-1 конфигурация

# Интерфейсы к Spine
set interfaces ethernet eth0 address 10.0.100.0/31
set interfaces ethernet eth1 address 10.0.100.2/31
set interfaces ethernet eth2 address 10.0.100.4/31

# Интерфейс к серверам
set interfaces ethernet eth3 address 10.0.200.1/24

# Loopback
set interfaces loopback lo address 10.0.2.1/32

# OpenFabric базовая конфигурация
set protocols openfabric net 49.0001.0100.0000.2001.00
set protocols openfabric domain YANDEX fabric-tier 2

# Включение uplink интерфейсов
set protocols openfabric domain YANDEX interface eth0 address-family ipv4
set protocols openfabric domain YANDEX interface eth1 address-family ipv4
set protocols openfabric domain YANDEX interface eth2 address-family ipv4
set protocols openfabric domain YANDEX interface lo address-family ipv4
set protocols openfabric domain YANDEX interface lo passive

# Таймеры и метрики для uplinks
set protocols openfabric domain YANDEX interface eth0 hello-interval 3
set protocols openfabric domain YANDEX interface eth0 hello-multiplier 3
set protocols openfabric domain YANDEX interface eth0 metric 10
set protocols openfabric domain YANDEX interface eth1 hello-interval 3
set protocols openfabric domain YANDEX interface eth1 hello-multiplier 3
set protocols openfabric domain YANDEX interface eth1 metric 10
set protocols openfabric domain YANDEX interface eth2 hello-interval 3
set protocols openfabric domain YANDEX interface eth2 hello-multiplier 3
set protocols openfabric domain YANDEX interface eth2 metric 10

# Редистрибуция подключенной серверной сети
set protocols openfabric domain YANDEX redistribute ipv4 connected route-map SERVER-NETWORKS

# Route-map для фильтрации
set policy route-map SERVER-NETWORKS rule 10 action permit
set policy route-map SERVER-NETWORKS rule 10 match interface eth3

# LSP параметры
set protocols openfabric domain YANDEX lsp-gen-interval 1
set protocols openfabric domain YANDEX lsp-refresh-interval 600
set protocols openfabric domain YANDEX max-lsp-lifetime 1200

# Аутентификация
set protocols openfabric domain YANDEX domain-password md5 YandexCloudSecret2024

commit
save

Leaf-2 конфигурация

# Интерфейсы к Spine
set interfaces ethernet eth0 address 10.0.100.8/31
set interfaces ethernet eth1 address 10.0.100.10/31
set interfaces ethernet eth2 address 10.0.100.12/31

# Интерфейс к серверам
set interfaces ethernet eth3 address 10.0.201.1/24

# Loopback
set interfaces loopback lo address 10.0.2.2/32

# OpenFabric базовая конфигурация
set protocols openfabric net 49.0001.0100.0000.2002.00
set protocols openfabric domain YANDEX fabric-tier 2

# Включение интерфейсов (аналогично Leaf-1)
set protocols openfabric domain YANDEX interface eth0 address-family ipv4
set protocols openfabric domain YANDEX interface eth1 address-family ipv4
set protocols openfabric domain YANDEX interface eth2 address-family ipv4
set protocols openfabric domain YANDEX interface lo address-family ipv4
set protocols openfabric domain YANDEX interface lo passive

# Таймеры и метрики
set protocols openfabric domain YANDEX interface eth0 hello-interval 3
set protocols openfabric domain YANDEX interface eth0 hello-multiplier 3
set protocols openfabric domain YANDEX interface eth0 metric 10
set protocols openfabric domain YANDEX interface eth1 hello-interval 3
set protocols openfabric domain YANDEX interface eth1 hello-multiplier 3
set protocols openfabric domain YANDEX interface eth1 metric 10
set protocols openfabric domain YANDEX interface eth2 hello-interval 3
set protocols openfabric domain YANDEX interface eth2 hello-multiplier 3
set protocols openfabric domain YANDEX interface eth2 metric 10

# Редистрибуция серверных сетей
set protocols openfabric domain YANDEX redistribute ipv4 connected route-map SERVER-NETWORKS
set policy route-map SERVER-NETWORKS rule 10 action permit
set policy route-map SERVER-NETWORKS rule 10 match interface eth3

# LSP параметры
set protocols openfabric domain YANDEX lsp-gen-interval 1
set protocols openfabric domain YANDEX lsp-refresh-interval 600
set protocols openfabric domain YANDEX max-lsp-lifetime 1200

# Аутентификация
set protocols openfabric domain YANDEX domain-password md5 YandexCloudSecret2024

commit
save

Leaf-3 и Leaf-4 конфигурация

Конфигурация аналогична Leaf-1 и Leaf-2 с соответствующими изменениями:

  • Leaf-3: NET 49.0001.0100.0000.2003.00, Loopback 10.0.2.3/32, Server subnet 10.0.202.0/24
  • Leaf-4: NET 49.0001.0100.0000.2004.00, Loopback 10.0.2.4/32, Server subnet 10.0.203.0/24

Пример 2: VK Cloud - Spine-Leaf Fabric с OpenFabric

Архитектура: 2 Spine и 2 Leaf для VK Cloud с поддержкой IPv4 и IPv6.

Топология

                   VK Cloud VPC
┌─────────────────────────────────────────────────────┐
│                                                       │
│  Spine Layer                                         │
│  ┌─────────────────┐       ┌─────────────────┐     │
│  │    Spine-A      │       │    Spine-B      │     │
│  │  10.10.0.1/32   │       │  10.10.0.2/32   │     │
│  │  2001:db8::1/128│       │  2001:db8::2/128│     │
│  └────────┬────────┘       └────────┬────────┘     │
│           │                          │               │
│           └──────────┬───────────────┘              │
│                      │                               │
│  Leaf Layer          │                               │
│  ┌──────────────────▼───┐   ┌──────────────────┐   │
│  │      Leaf-A          │   │      Leaf-B      │   │
│  │   10.10.1.1/32       │   │   10.10.1.2/32   │   │
│  │   2001:db8::11/128   │   │   2001:db8::12/128│  │
│  └──────────────────────┘   └──────────────────┘   │
│                                                      │
│  P2P Links: 10.10.100.0/24, 2001:db8:100::/64      │
│  Server Networks: 10.10.200.0/22, 2001:db8:200::/56│
└─────────────────────────────────────────────────────┘

Spine-A конфигурация (VK Cloud)

# Интерфейсы
set interfaces ethernet eth0 address 10.10.100.1/31
set interfaces ethernet eth0 address 2001:db8:100::1/127
set interfaces ethernet eth1 address 10.10.100.3/31
set interfaces ethernet eth1 address 2001:db8:100::3/127
set interfaces loopback lo address 10.10.0.1/32
set interfaces loopback lo address 2001:db8::1/128

# OpenFabric базовая конфигурация
set protocols openfabric net 49.0001.0101.0000.0001.00
set protocols openfabric domain VKCLOUD fabric-tier 1

# Включение интерфейсов с dual-stack
set protocols openfabric domain VKCLOUD interface eth0 address-family ipv4
set protocols openfabric domain VKCLOUD interface eth0 address-family ipv6
set protocols openfabric domain VKCLOUD interface eth1 address-family ipv4
set protocols openfabric domain VKCLOUD interface eth1 address-family ipv6
set protocols openfabric domain VKCLOUD interface lo address-family ipv4
set protocols openfabric domain VKCLOUD interface lo address-family ipv6
set protocols openfabric domain VKCLOUD interface lo passive

# Оптимизация для низкой задержки
set protocols openfabric domain VKCLOUD interface eth0 hello-interval 2
set protocols openfabric domain VKCLOUD interface eth0 hello-multiplier 3
set protocols openfabric domain VKCLOUD interface eth0 metric 10
set protocols openfabric domain VKCLOUD interface eth1 hello-interval 2
set protocols openfabric domain VKCLOUD interface eth1 hello-multiplier 3
set protocols openfabric domain VKCLOUD interface eth1 metric 10

# LSP параметры
set protocols openfabric domain VKCLOUD lsp-gen-interval 1
set protocols openfabric domain VKCLOUD lsp-refresh-interval 900
set protocols openfabric domain VKCLOUD max-lsp-lifetime 1200

# Аутентификация
set protocols openfabric domain VKCLOUD domain-password md5 VKCloudFabric2024

commit
save

Spine-B конфигурация (VK Cloud)

# Интерфейсы
set interfaces ethernet eth0 address 10.10.100.5/31
set interfaces ethernet eth0 address 2001:db8:100::5/127
set interfaces ethernet eth1 address 10.10.100.7/31
set interfaces ethernet eth1 address 2001:db8:100::7/127
set interfaces loopback lo address 10.10.0.2/32
set interfaces loopback lo address 2001:db8::2/128

# OpenFabric конфигурация (аналогично Spine-A)
set protocols openfabric net 49.0001.0101.0000.0002.00
set protocols openfabric domain VKCLOUD fabric-tier 1

# Dual-stack интерфейсы
set protocols openfabric domain VKCLOUD interface eth0 address-family ipv4
set protocols openfabric domain VKCLOUD interface eth0 address-family ipv6
set protocols openfabric domain VKCLOUD interface eth1 address-family ipv4
set protocols openfabric domain VKCLOUD interface eth1 address-family ipv6
set protocols openfabric domain VKCLOUD interface lo address-family ipv4
set protocols openfabric domain VKCLOUD interface lo address-family ipv6
set protocols openfabric domain VKCLOUD interface lo passive

# Таймеры
set protocols openfabric domain VKCLOUD interface eth0 hello-interval 2
set protocols openfabric domain VKCLOUD interface eth0 hello-multiplier 3
set protocols openfabric domain VKCLOUD interface eth0 metric 10
set protocols openfabric domain VKCLOUD interface eth1 hello-interval 2
set protocols openfabric domain VKCLOUD interface eth1 hello-multiplier 3
set protocols openfabric domain VKCLOUD interface eth1 metric 10

# LSP параметры
set protocols openfabric domain VKCLOUD lsp-gen-interval 1
set protocols openfabric domain VKCLOUD lsp-refresh-interval 900
set protocols openfabric domain VKCLOUD max-lsp-lifetime 1200

# Аутентификация
set protocols openfabric domain VKCLOUD domain-password md5 VKCloudFabric2024

commit
save

Leaf-A конфигурация (VK Cloud)

# Uplink интерфейсы
set interfaces ethernet eth0 address 10.10.100.0/31
set interfaces ethernet eth0 address 2001:db8:100::0/127
set interfaces ethernet eth1 address 10.10.100.4/31
set interfaces ethernet eth1 address 2001:db8:100::4/127

# Server-facing интерфейс
set interfaces ethernet eth2 address 10.10.200.1/24
set interfaces ethernet eth2 address 2001:db8:200:1::1/64

# Loopback
set interfaces loopback lo address 10.10.1.1/32
set interfaces loopback lo address 2001:db8::11/128

# OpenFabric базовая конфигурация
set protocols openfabric net 49.0001.0101.0000.1001.00
set protocols openfabric domain VKCLOUD fabric-tier 2

# Uplink интерфейсы в OpenFabric
set protocols openfabric domain VKCLOUD interface eth0 address-family ipv4
set protocols openfabric domain VKCLOUD interface eth0 address-family ipv6
set protocols openfabric domain VKCLOUD interface eth1 address-family ipv4
set protocols openfabric domain VKCLOUD interface eth1 address-family ipv6
set protocols openfabric domain VKCLOUD interface lo address-family ipv4
set protocols openfabric domain VKCLOUD interface lo address-family ipv6
set protocols openfabric domain VKCLOUD interface lo passive

# Таймеры и метрики
set protocols openfabric domain VKCLOUD interface eth0 hello-interval 2
set protocols openfabric domain VKCLOUD interface eth0 hello-multiplier 3
set protocols openfabric domain VKCLOUD interface eth0 metric 10
set protocols openfabric domain VKCLOUD interface eth1 hello-interval 2
set protocols openfabric domain VKCLOUD interface eth1 hello-multiplier 3
set protocols openfabric domain VKCLOUD interface eth1 metric 10

# Редистрибуция серверных сетей (IPv4 и IPv6)
set protocols openfabric domain VKCLOUD redistribute ipv4 connected route-map SERVERS
set protocols openfabric domain VKCLOUD redistribute ipv6 connected route-map SERVERS

# Route-map для серверных интерфейсов
set policy route-map SERVERS rule 10 action permit
set policy route-map SERVERS rule 10 match interface eth2

# LSP параметры
set protocols openfabric domain VKCLOUD lsp-gen-interval 1
set protocols openfabric domain VKCLOUD lsp-refresh-interval 900
set protocols openfabric domain VKCLOUD max-lsp-lifetime 1200

# Аутентификация
set protocols openfabric domain VKCLOUD domain-password md5 VKCloudFabric2024

commit
save

Leaf-B конфигурация (VK Cloud)

# Uplink интерфейсы
set interfaces ethernet eth0 address 10.10.100.2/31
set interfaces ethernet eth0 address 2001:db8:100::2/127
set interfaces ethernet eth1 address 10.10.100.6/31
set interfaces ethernet eth1 address 2001:db8:100::6/127

# Server-facing интерфейс
set interfaces ethernet eth2 address 10.10.201.1/24
set interfaces ethernet eth2 address 2001:db8:200:2::1/64

# Loopback
set interfaces loopback lo address 10.10.1.2/32
set interfaces loopback lo address 2001:db8::12/128

# OpenFabric конфигурация (аналогично Leaf-A)
set protocols openfabric net 49.0001.0101.0000.1002.00
set protocols openfabric domain VKCLOUD fabric-tier 2

# Dual-stack uplinks
set protocols openfabric domain VKCLOUD interface eth0 address-family ipv4
set protocols openfabric domain VKCLOUD interface eth0 address-family ipv6
set protocols openfabric domain VKCLOUD interface eth1 address-family ipv4
set protocols openfabric domain VKCLOUD interface eth1 address-family ipv6
set protocols openfabric domain VKCLOUD interface lo address-family ipv4
set protocols openfabric domain VKCLOUD interface lo address-family ipv6
set protocols openfabric domain VKCLOUD interface lo passive

# Таймеры
set protocols openfabric domain VKCLOUD interface eth0 hello-interval 2
set protocols openfabric domain VKCLOUD interface eth0 hello-multiplier 3
set protocols openfabric domain VKCLOUD interface eth0 metric 10
set protocols openfabric domain VKCLOUD interface eth1 hello-interval 2
set protocols openfabric domain VKCLOUD interface eth1 hello-multiplier 3
set protocols openfabric domain VKCLOUD interface eth1 metric 10

# Редистрибуция серверных сетей
set protocols openfabric domain VKCLOUD redistribute ipv4 connected route-map SERVERS
set protocols openfabric domain VKCLOUD redistribute ipv6 connected route-map SERVERS
set policy route-map SERVERS rule 10 action permit
set policy route-map SERVERS rule 10 match interface eth2

# LSP параметры
set protocols openfabric domain VKCLOUD lsp-gen-interval 1
set protocols openfabric domain VKCLOUD lsp-refresh-interval 900
set protocols openfabric domain VKCLOUD max-lsp-lifetime 1200

# Аутентификация
set protocols openfabric domain VKCLOUD domain-password md5 VKCloudFabric2024

commit
save

Верификация и мониторинг

Проверка соседей OpenFabric

# Показать всех соседей OpenFabric
show openfabric neighbor

# Показать соседей для конкретного домена
show openfabric domain DATACENTER neighbor

# Детальная информация о конкретном соседе
show openfabric neighbor detail

Пример вывода:

Area DATACENTER:
 System Id           Interface   L  State        Holdtime SNPA
 0100.0000.1002      eth0        2  Up           27       2020.2020.2020
 0100.0000.1003      eth1        2  Up           25       2020.2020.2021

Проверка базы данных топологии

# Показать базу данных LSP
show openfabric database

# Детальная база данных
show openfabric database detail

# База данных для конкретного домена
show openfabric domain DATACENTER database

Проверка маршрутов

# Показать маршруты, изученные через OpenFabric
show ip route openfabric

# Показать IPv6 маршруты OpenFabric
show ipv6 route openfabric

# Показать всю таблицу маршрутизации
show ip route

Пример вывода:

Codes: K - kernel route, C - connected, S - static, R - RIP,
       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, F - OpenFabric,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup

F>* 10.0.2.1/32 [115/20] via 10.0.100.0, eth0, weight 1, 00:15:23
  *                      via 10.0.100.2, eth1, weight 1, 00:15:23
  *                      via 10.0.100.4, eth2, weight 1, 00:15:23
F>* 10.0.200.0/24 [115/20] via 10.0.100.0, eth0, weight 1, 00:15:23

Проверка интерфейсов

# Показать информацию об интерфейсах OpenFabric
show openfabric interface

# Детальная информация об интерфейсе
show openfabric interface eth0

# Показать статус интерфейсов домена
show openfabric domain DATACENTER interface

Проверка топологии

# Показать SPF статистику
show openfabric spf-delay-ietf

# Показать hostname mapping (если настроено)
show openfabric hostname

# Показать summary информацию
show openfabric summary

Мониторинг Fabric Tier

# Проверить fabric tier маршрутизатора
show openfabric domain DATACENTER summary | grep Tier

# Проверить tier информацию в базе данных
show openfabric database detail | grep -A 5 "Fabric Tier"

Troubleshooting

Проблема: Соседи не устанавливаются

Диагностика:

# Проверить конфигурацию интерфейсов
show configuration commands | grep openfabric

# Проверить состояние интерфейсов
show interfaces

# Проверить аутентификацию
show openfabric database detail | grep Authentication

# Отладка соседства
monitor log

Типичные причины:

  1. Несовпадение аутентификации
  2. Неправильная конфигурация интерфейса
  3. MTU mismatch
  4. Физические проблемы с линком

Решение:

# Проверить MTU
show interfaces ethernet eth0

# Временно отключить аутентификацию для теста
delete protocols openfabric domain DATACENTER domain-password
commit

# Проверить hello пакеты
sudo tcpdump -i eth0 -vv proto 124

Проблема: Маршруты не появляются в таблице

Диагностика:

# Проверить базу данных LSP
show openfabric database

# Проверить редистрибуцию
show configuration commands | grep redistribute

# Проверить route-map
show route-map

# Проверить таблицу маршрутизации
show ip route openfabric

Типичные причины:

  1. Неправильная редистрибуция
  2. Route-map блокирует маршруты
  3. Проблемы с NET конфигурацией
  4. Интерфейс не включен в passive mode

Решение:

# Проверить, что подключенные сети редистрибутируются
set protocols openfabric domain DATACENTER redistribute ipv4 connected

# Проверить passive интерфейс для loopback
set protocols openfabric domain DATACENTER interface lo passive

# Проверить route-map
show policy route-map SERVERS

Проблема: ECMP пути не используются

Диагностика:

# Проверить метрики интерфейсов
show openfabric interface

# Проверить FIB
show ip route 10.0.2.1

# Проверить kernel routing table
ip route show

Типичные причины:

  1. Разные метрики на интерфейсах
  2. Неправильная конфигурация Fabric Tier
  3. Ядро не поддерживает multipath

Решение:

# Убедиться, что метрики одинаковые
set protocols openfabric domain DATACENTER interface eth0 metric 10
set protocols openfabric domain DATACENTER interface eth1 metric 10
set protocols openfabric domain DATACENTER interface eth2 metric 10

# Проверить Fabric Tier
set protocols openfabric domain DATACENTER fabric-tier 2

Проблема: Высокая загрузка CPU из-за LSP flooding

Диагностика:

# Мониторинг CPU
top

# Проверить частоту генерации LSP
show openfabric database detail | grep "Generated"

# Проверить Fabric Tier конфигурацию
show configuration commands | grep fabric-tier

Решение:

# Увеличить LSP generation interval
set protocols openfabric domain DATACENTER lsp-gen-interval 5

# Увеличить refresh interval
set protocols openfabric domain DATACENTER lsp-refresh-interval 900

# Правильно настроить Fabric Tier
# Spine
set protocols openfabric domain DATACENTER fabric-tier 1
# Leaf
set protocols openfabric domain DATACENTER fabric-tier 2

Проблема: Частые flapping соседей

Диагностика:

# Мониторинг логов
monitor log | match openfabric

# Проверить hello параметры
show openfabric interface eth0

# Проверить качество линка
ping 10.0.100.1 size 1400 count 100

Решение:

# Увеличить hello interval и multiplier
set protocols openfabric domain DATACENTER interface eth0 hello-interval 5
set protocols openfabric domain DATACENTER interface eth0 hello-multiplier 5

# Уменьшить MTU если есть фрагментация
set interfaces ethernet eth0 mtu 1400

Отладочные команды

# Включить debug для OpenFabric
# Внимание: генерирует много логов
sudo vtysh -c "debug openfabric events"
sudo vtysh -c "debug openfabric adj-packets"
sudo vtysh -c "debug openfabric lsp-gen"
sudo vtysh -c "debug openfabric update-packets"

# Просмотр логов FRR
tail -f /var/log/frr/frr.log

# Выключить debug
sudo vtysh -c "no debug openfabric events"
sudo vtysh -c "no debug openfabric adj-packets"

Best Practices

Проектирование сети

  1. Fabric Tier конфигурация

    • Всегда конфигурируйте Fabric Tier для оптимизации flooding
    • Spine: Tier 1, Leaf: Tier 2
    • Все маршрутизаторы на одном физическом уровне должны иметь одинаковый Tier
  2. NET адресация

    • Используйте консистентную схему для System ID
    • Рекомендуется: последние 6 байт IP-адреса loopback
    • Документируйте схему NET адресации
  3. Метрики

    • Используйте одинаковые метрики для всех uplink для ECMP
    • Изменяйте метрику только для traffic engineering
  4. Loopback интерфейсы

    • Всегда включайте loopback в OpenFabric
    • Всегда используйте passive mode для loopback
    • Используйте /32 (IPv4) или /128 (IPv6) для loopback

Таймеры и оптимизация

  1. Hello параметры для ЦОД

    • Hello interval: 2-3 секунды
    • Hello multiplier: 3
    • Dead interval: 6-9 секунд (быстрое обнаружение сбоев)
  2. LSP параметры

    • lsp-gen-interval: 1-2 миллисекунды (быстрая реакция)
    • lsp-refresh-interval: 600-900 секунд
    • max-lsp-lifetime: 1200-1800 секунд
  3. CSNP/PSNP

    • Используйте значения по умолчанию
    • Изменяйте только при конкретных проблемах

Безопасность

  1. Аутентификация

    • Всегда используйте MD5 аутентификацию
    • Используйте сложные пароли
    • Периодически меняйте пароли
    • Можно использовать разные пароли на domain и interface уровне
  2. Ограничение протокола

    • Включайте OpenFabric только на необходимых интерфейсах
    • Используйте passive mode для non-fabric интерфейсов

Масштабируемость

  1. Размер fabric

    • Рекомендуется: до 512 Leaf на 3-4 Spine
    • Для больших deployment рассмотрите Multi-POD архитектуру
  2. Количество маршрутов

    • OpenFabric эффективен до десятков тысяч маршрутов
    • Для очень больших таблиц рассмотрите суммаризацию
  3. ECMP пути

    • Стандартно: 4-8 ECMP путей от Leaf к Spine
    • Можно масштабировать до 16-32 путей

Операционные процедуры

  1. Обслуживание маршрутизатора

    # Установить overload bit перед обслуживанием
    set protocols openfabric domain DATACENTER overload
    commit
    
    # Выполнить обслуживание
    
    # Снять overload bit
    delete protocols openfabric domain DATACENTER overload
    commit
  2. Graceful restart

    # Overload на определенное время
    set protocols openfabric domain DATACENTER overload on-startup 300
    commit
  3. Мониторинг

    • Мониторьте количество соседей
    • Мониторьте количество маршрутов
    • Настройте alerts на flapping соседей
    • Мониторьте CPU utilization на Spine

Интеграция с BGP

Для подключения fabric к внешним сетям используйте BGP на Leaf или Spine:

# Border Leaf конфигурация
set protocols bgp system-as 65000
set protocols bgp neighbor 192.0.2.1 remote-as 65001
set protocols bgp neighbor 192.0.2.1 address-family ipv4-unicast

# Редистрибуция OpenFabric в BGP
set protocols bgp address-family ipv4-unicast redistribute openfabric

# Редистрибуция BGP в OpenFabric
set protocols openfabric domain DATACENTER redistribute ipv4 bgp route-map BGP-TO-FABRIC

Dual-stack рекомендации

  1. Включайте IPv4 и IPv6 на всех интерфейсах одновременно
  2. Используйте одинаковые метрики для IPv4 и IPv6
  3. Применяйте одинаковые route-map для обоих семейств
  4. Тестируйте failover для обоих протоколов

Заключение

OpenFabric - это эффективный протокол маршрутизации для современных ЦОД, оптимизированный для архитектуры Spine-Leaf. Правильная конфигурация Fabric Tier, метрик и таймеров обеспечивает быструю сходимость, оптимальное использование ECMP путей и минимальные накладные расходы на служебный трафик.

Ключевые моменты для успешного внедрения:

  • Правильная конфигурация Fabric Tier (Spine = Tier 1, Leaf = Tier 2)
  • Одинаковые метрики на всех uplink для ECMP
  • Агрессивные таймеры для быстрого обнаружения сбоев
  • Использование MD5 аутентификации
  • Регулярный мониторинг соседей и маршрутов

OpenFabric в VyOS предоставляет enterprise-grade функциональность для построения отказоустойчивых и масштабируемых сетей ЦОД в облачных средах Yandex Cloud и VK Cloud.

Проверено OpenNix LLC · Обновлено