Динамічна маршрутизація для початківців

Ця стаття пояснює навіщо потрібна динамічна маршрутизація, чим відрізняються OSPF, BGP і RIP, та коли що використовувати.

Проблема статичної маршрутизації

Уявіть ситуацію

У вас є 3 роутери, з'єднані в трикутник:

         ┌─────┐
         │  A  │
         └──┬──┘
           /│\
          / │ \
         /  │  \
        /   │   \
       /    │    \
      /     │     \
   ┌──▼──┐  │  ┌──▼──┐
   │  B  │◄─┴─▶│  C  │
   └─────┘     └─────┘

Зі статичними маршрутами вам потрібно:

  1. На A: додати маршрути до мереж B і C
  2. На B: додати маршрути до мереж A і C
  3. На C: додати маршрути до мереж A і B

6 маршрутів вручну. А якщо 10 роутерів? 90 маршрутів!

А що якщо зв'язок падає?

         ┌─────┐
         │  A  │
         └──┬──┘
           /│\
          / │ \
         /  │  \  ← Цей лінк впав!
        /   │   ✗
       /    │    
      /     │     
   ┌──▼──┐  │  ┌─────┐
   │  B  │◄─┴──│  C  │
   └─────┘     └─────┘

Статичні маршрути не знають що лінк впав. Трафік продовжує йти в "чорну діру".

Рішення: Динамічна маршрутизація

Динамічні протоколи роблять це автоматично:

  1. Роутери обмінюються інформацією про свої мережі
  2. Кожен будує карту всієї мережі
  3. При зміні топології — перераховують маршрути
┌──────────────────────────────────────────────────────────┐
│                                                          │
│  Роутер A: "Привіт, я маю мережу 10.1.0.0/24"           │
│  Роутер B: "Привіт, я маю мережу 10.2.0.0/24"           │
│  Роутер C: "Привіт, я маю мережу 10.3.0.0/24"           │
│                                                          │
│  Всі автоматично знають як дістатись до всіх мереж!     │
│                                                          │
└──────────────────────────────────────────────────────────┘

Три головні протоколи

Порівняльна таблиця

Протокол Тип Масштаб Складність Швидкість збіжності
RIP Distance Vector Малий (<15 хопів) Проста Повільна (хвилини)
OSPF Link State Середній-Великий Середня Швидка (секунди)
BGP Path Vector Інтернет Висока Середня (секунди-хвилини)

Коли що використовувати?

┌────────────────────────────────────────────────────────────┐
│                                                            │
│  "У мене 3-5 роутерів, хочу просто"                       │
│     → RIP (або статика + check-gateway)                   │
│                                                            │
│  "У мене корпоративна мережа, 10-100 роутерів"           │
│     → OSPF                                                 │
│                                                            │
│  "Я з'єдную різні організації / маю декілька ISP"        │
│     → BGP                                                  │
│                                                            │
│  "У мене mesh VPN на 30+ вузлів"                         │
│     → OSPF або BGP                                         │
│                                                            │
└────────────────────────────────────────────────────────────┘

RIP (Routing Information Protocol)

Як працює

Кожен роутер періодично (кожні 30 сек) надсилає сусідам список своїх маршрутів.

┌─────────────────────────────────────────────────────────┐
│                                                         │
│  Роутер A кожні 30 сек:                                │
│  "10.1.0.0/24 distance=1"                              │
│  "10.2.0.0/24 distance=2" (через B)                    │
│                                                         │
│  Distance = кількість "стрибків" (hops)                │
│  Максимум 15 hops (16 = unreachable)                   │
│                                                         │
└─────────────────────────────────────────────────────────┘

Налаштування в MikroTik

# Увімкнути RIP
/routing rip instance add name=default

# Додати мережі для оголошення
/routing rip interface-template add instance=default interfaces=ether1,ether2

Плюси і мінуси

✅ Дуже простий
✅ Майже немає налаштувань
❌ Повільна збіжність (до 3 хвилин)
❌ Максимум 15 hops
❌ Не враховує швидкість каналів

OSPF (Open Shortest Path First)

Як працює

Кожен роутер:
1. Знаходить сусідів (hello пакети)
2. Обмінюється повною картою мережі (LSA)
3. Рахує найкоротший шлях алгоритмом Дейкстри

┌─────────────────────────────────────────────────────────┐
│                                                         │
│  Link State Database (LSDB):                           │
│                                                         │
│  ┌────┐  cost=10   ┌────┐  cost=5    ┌────┐            │
│  │ A  │───────────▶│ B  │───────────▶│ C  │            │
│  └────┘            └────┘            └────┘            │
│     │                                   ▲               │
│     │           cost=20                 │               │
│     └───────────────────────────────────┘               │
│                                                         │
│  A→C: через B (cost=15) або напряму (cost=20)?         │
│  OSPF обирає: через B!                                 │
│                                                         │
└─────────────────────────────────────────────────────────┘

Області (Areas)

OSPF ділить мережу на області для масштабування:

┌─────────────────────────────────────────────────────────┐
│                                                         │
│                    Area 0 (Backbone)                    │
│              ┌────────────────────────┐                │
│              │         ABR            │                │
│              └────┬──────────────┬────┘                │
│                   │              │                      │
│         ┌─────────▼──┐      ┌───▼──────────┐          │
│         │   Area 1   │      │    Area 2    │          │
│         │ (Офіс Київ)│      │ (Офіс Львів) │          │
│         └────────────┘      └──────────────┘          │
│                                                         │
└─────────────────────────────────────────────────────────┘

Налаштування в MikroTik

# Створити інстанс
/routing ospf instance add name=default router-id=10.10.10.1

# Додати area
/routing ospf area add name=backbone area-id=0.0.0.0 instance=default

# Додати інтерфейси
/routing ospf interface-template add area=backbone interfaces=wg0,ether1

Базовий приклад: Два роутери

┌─────────────────┐         ┌─────────────────┐
│ Router A        │         │ Router B        │
│ ID: 10.10.10.1  │◄───────▶│ ID: 10.10.10.2  │
│ LAN: 10.1.0.0/24│   wg0   │ LAN: 10.2.0.0/24│
└─────────────────┘         └─────────────────┘

Router A:

/routing ospf instance add name=default router-id=10.10.10.1
/routing ospf area add name=backbone area-id=0.0.0.0 instance=default
/routing ospf interface-template add area=backbone interfaces=wg0
/routing ospf interface-template add area=backbone interfaces=bridge1 passive

Router B:

/routing ospf instance add name=default router-id=10.10.10.2
/routing ospf area add name=backbone area-id=0.0.0.0 instance=default
/routing ospf interface-template add area=backbone interfaces=wg0
/routing ospf interface-template add area=backbone interfaces=bridge1 passive

passive — означає "оголошуй цю мережу, але не шукай OSPF сусідів".

Перевірка

# Сусіди
/routing ospf neighbor print

# Маршрути від OSPF
/ip route print where routing-table=main ospf

Плюси і мінуси

✅ Швидка збіжність (секунди)
✅ Враховує "вартість" каналів
✅ Масштабується до сотень роутерів
✅ Стандартизований (працює з Cisco, Juniper, etc)
❌ Складніший за RIP
❌ Потрібно планувати області

BGP (Border Gateway Protocol)

Як працює

BGP — протокол для з'єднання різних автономних систем (AS).

┌─────────────────────────────────────────────────────────┐
│                                                         │
│    AS 65001 (Ваша організація)                         │
│    ┌──────────────────────┐                            │
│    │ 10.1.0.0/24          │                            │
│    │ 10.2.0.0/24          │                            │
│    └──────────┬───────────┘                            │
│               │ eBGP                                    │
│    ┌──────────▼───────────┐                            │
│    │ AS 65002 (Партнер)   │                            │
│    │ 172.16.0.0/16        │                            │
│    └──────────────────────┘                            │
│                                                         │
└─────────────────────────────────────────────────────────┘

Два типи BGP

iBGP (internal) — всередині однієї AS
eBGP (external) — між різними AS

Коли потрібен BGP?

  1. Multi-homing — підключення до кількох ISP
  2. Mesh VPN — коли OSPF не масштабується
  3. Обмін маршрутами між організаціями

Налаштування в MikroTik (базове)

# Створити інстанс
/routing bgp instance add name=default as=65001 router-id=10.10.10.1

# Додати сусіда
/routing bgp peer add name=peer1 instance=default remote.as=65002 \
    remote.address=10.10.10.2

# Оголосити мережі
/routing bgp network add network=10.1.0.0/24

Плюси і мінуси

✅ Масштабується до мільйонів маршрутів
✅ Повний контроль над політиками
✅ Працює через Інтернет (не потребує L2 зв'язності)
❌ Найскладніший протокол
❌ Повільніша збіжність ніж OSPF
❌ Потребує ретельного планування

Порівняння на практиці

Сценарій: 5 офісів через VPN

                    ┌─────────┐
                    │ Центр   │
                    │ (Hub)   │
                    └────┬────┘
                         │
         ┌───────┬───────┼───────┬───────┐
         │       │       │       │       │
    ┌────▼──┐ ┌──▼───┐ ┌─▼────┐ ┌▼─────┐ ┌▼─────┐
    │Київ   │ │Львів │ │Одеса │ │Харків│ │Дніпро│
    └───────┘ └──────┘ └──────┘ └──────┘ └──────┘
Підхід Маршрутів вручну Час на failover Складність
Статика 20 Вручну / хвилини Низька
RIP 0 ~3 хвилини Низька
OSPF 0 ~1-5 секунд Середня
BGP 0 ~30 секунд Висока

Рекомендація: OSPF — найкращий баланс для такої топології.

Сценарій: 30 вузлів WireGuard mesh

        ┌──────────────────────────────────────┐
        │                                      │
        │    ●────●────●────●────●────●        │
        │    │    │    │    │    │    │        │
        │    ●────●────●────●────●────●        │
        │    │    │    │    │    │    │        │
        │    ●────●────●────●────●────●        │
        │    │    │    │    │    │    │        │
        │    ●────●────●────●────●────●        │
        │    │    │    │    │    │    │        │
        │    ●────●────●────●────●────●        │
        │                                      │
        └──────────────────────────────────────┘
Підхід Маршрутів на вузол Масштабування
Статика 29 Погано (O(n²))
OSPF 0 Добре
BGP 0 Відмінно

Рекомендація: BGP для великого mesh (простіше масштабується), OSPF для середнього.

Практичне завдання

Налаштуйте OSPF між двома MikroTik

Топологія:

┌─────────────────┐         ┌─────────────────┐
│ Router A        │         │ Router B        │
│ wg0: 10.10.10.1 │◄───────▶│ wg0: 10.10.10.2 │
│ br0: 10.1.0.1   │         │ br0: 10.2.0.1   │
└─────────────────┘         └─────────────────┘

Крок 1: Router A

/routing ospf instance add name=default router-id=10.10.10.1
/routing ospf area add name=backbone area-id=0.0.0.0 instance=default
/routing ospf interface-template add area=backbone interfaces=wg0
/routing ospf interface-template add area=backbone interfaces=br0 passive

Крок 2: Router B

/routing ospf instance add name=default router-id=10.10.10.2
/routing ospf area add name=backbone area-id=0.0.0.0 instance=default
/routing ospf interface-template add area=backbone interfaces=wg0
/routing ospf interface-template add area=backbone interfaces=br0 passive

Крок 3: Перевірка

# На обох роутерах
/routing ospf neighbor print
# Має показати сусіда в стані "Full"

/ip route print where ospf
# Має показати маршрут до мережі іншого роутера

Словник

Термін Значення
Convergence Процес узгодження маршрутів між роутерами
Distance Vector Протокол що передає "напрямок і відстань"
Link State Протокол що передає "карту мережі"
LSA Link State Advertisement — повідомлення OSPF
Hop Один "стрибок" через роутер
Cost "Вартість" маршруту (менше = краще)
Area Зона в OSPF для масштабування
AS Autonomous System — незалежна мережа

Див. також

Шлях: networking/routing/dynamic-routing-intro.md

UMTC Wiki © 2026 | Ukrainian Military Tactical Communications