Введение: зачем нужны динамические протоколы маршрутизации
Статическая маршрутизация требует ручного обновления таблиц при каждом изменении топологии. В крупной сети с десятками маршрутизаторов и резервными каналами это превращается в источник ошибок: администратор не успевает обновить маршруты при отказе линии, трафик уходит в черную дыру, пользователи теряют доступ к сервисам. OSPF и BGP решают эту задачу автоматически: маршрутизаторы обмениваются информацией о достижимости сетей, пересчитывают пути при сбоях и поддерживают актуальную карту сети без участия человека.
OSPF работает внутри автономной системы (AS), быстро сходится и выбирает путь по суммарной стоимости интерфейсов. BGP предназначен для обмена маршрутами между автономными системами, например, между вашей сетью и провайдером. В этой статье вы получите готовые конфигурации для Cisco IOS, Juniper Junos, FRRouting и Bird, разберете алгоритмы выбора пути, настроите аутентификацию соседей и ускорите сходимость сети с помощью BFD.
Материал основан на практических сценариях внедрения динамической маршрутизации в корпоративных сетях и ЦОД. Если вы только начинаете переход со статической маршрутизации, рекомендуем сначала изучить руководство по маршрутизации Cisco, где разобраны базовые принципы и диагностика.
OSPF или BGP: выбираем протокол для вашей сети
Выбор протокола определяется границами вашей ответственности. OSPF - это IGP (Interior Gateway Protocol), он управляет маршрутизацией внутри вашей автономной системы: офисная сеть, ЦОД, кампус. BGP - это EGP (Exterior Gateway Protocol), он обменивается маршрутами с внешними сетями: провайдерами, партнерами, облачными платформами. В крупных сетях оба протокола работают совместно: OSPF строит внутреннюю связность, BGP анонсирует ваши префиксы наружу и принимает внешние маршруты.
Ключевые различия OSPF и BGP
| Характеристика | OSPF | BGP |
|---|---|---|
| Тип протокола | Link-state | Path-vector |
| Алгоритм выбора пути | SPF (Дейкстра) | Best path selection по атрибутам |
| Метрика | Cost (стоимость интерфейсов) | Атрибуты: weight, local preference, AS path, MED |
| Сходимость | Быстрая (секунды) | Медленная (десятки секунд, зависит от таймеров) |
| Масштабируемость | Средняя, требует иерархии areas | Высокая, рассчитан на глобальный интернет |
| Сложность настройки | Низкая | Высокая, много атрибутов и политик |
OSPF применяйте, когда управляете всей сетью и нужна быстрая реакция на отказы. BGP используйте, когда нужно контролировать входящий и исходящий трафик на стыке с провайдерами или строить крупную распределенную сеть с несколькими ЦОД. Внутри AS BGP также применяется в виде iBGP для масштабирования, но об этом позже.
Подробное сравнение протоколов с примерами топологий вы найдете в статье BGP и OSPF: как работают и обеспечивают отказоустойчивость.
Подготовка к настройке: что нужно знать и проверить
Перед включением OSPF или BGP проверьте базовую IP-связность между соседями. Команда ping до адреса соседа должна проходить без потерь. Убедитесь, что интерфейсы подняты, MTU совпадает на обоих концах, а ACL или файрвол не блокируют протокольные порты: OSPF использует IP-протокол 89, BGP - TCP-порт 179.
Назначьте уникальный router-id на каждом маршрутизаторе. Обычно это loopback-адрес. Дублирующиеся router-id в OSPF приводят к конфликтам соседства, в BGP - к сбросу сессий. Спланируйте IP-адресацию заранее: выделите отдельные подсети для point-to-point линков между маршрутизаторами, используйте loopback для управляющих адресов. Это упростит диагностику и масштабирование.
Обеспечьте резервный доступ к устройствам: консольный сервер, отдельный management-интерфейс или out-of-band доступ. Ошибка в конфигурации BGP может отрезать вас от маршрутизатора по сети, и без резервного канала вы потеряете управление.
Настройка OSPF: пошаговые инструкции для Cisco, Juniper и FRRouting
Базовая настройка OSPF состоит из трех шагов: включить процесс OSPF, объявить сети, проверить соседство. Рассмотрим примеры для трех платформ.
Базовая настройка OSPF на Cisco IOS
router ospf 1
router-id 10.0.0.1
network 10.0.0.0 0.0.0.255 area 0
network 10.0.1.0 0.0.0.255 area 0
passive-interface default
no passive-interface GigabitEthernet0/0Команда router ospf 1 запускает процесс с локальным номером 1. Номер процесса не обязан совпадать между соседями. network с wildcard-маской объявляет интерфейсы, попадающие в диапазон, и включает их в area 0. passive-interface default запрещает отправку hello на всех интерфейсах, кроме явно разрешенных - это снижает нагрузку и повышает безопасность. Проверка: show ip ospf neighbor.
Базовая настройка OSPF на Juniper Junos
set protocols ospf area 0 interface ge-0/0/0.0
set protocols ospf area 0 interface ge-0/0/1.0
set protocols ospf area 0 interface lo0.0 passive
set routing-options router-id 10.0.0.1В Junos интерфейсы добавляются в area напрямую, без wildcard-масок. Интерфейс lo0 помечен как passive, чтобы анонсировать loopback-адрес без установления соседства. Проверка: show ospf neighbor.
Базовая настройка OSPF на FRRouting (FRR)
configure terminal
router ospf
ospf router-id 10.0.0.1
network 10.0.0.0/24 area 0
network 10.0.1.0/24 area 0
passive-interface default
no passive-interface eth0
exit
exit
write memoryFRR использует синтаксис, близкий к Cisco. Конфигурация выполняется в vtysh. Проверка: show ip ospf neighbor. Для multi-area OSPF добавьте сети в другие area: network 10.0.2.0/24 area 1. Area 0 - это backbone, все остальные area должны соединяться с ним через ABR (Area Border Router).
Для Linux-роутеров с FRR и Bird есть отдельное руководство по OSPF на Linux с разбором диагностики.
Настройка BGP: пошаговые инструкции для Cisco, Juniper, FRRouting и Bird
BGP настраивается через указание номера автономной системы, адреса соседа и его AS. Для eBGP сосед находится в другой AS, для iBGP - в той же.
Настройка eBGP на Cisco IOS
router bgp 65001
bgp router-id 10.0.0.1
neighbor 203.0.113.1 remote-as 65002
neighbor 203.0.113.1 description Uplink to provider
network 198.51.100.0 mask 255.255.255.0Команда network анонсирует префикс только в том случае, если он уже присутствует в таблице маршрутизации. Это частая причина, почему BGP не анонсирует сеть: сначала добавьте маршрут через статику или IGP. Проверка: show ip bgp summary.
Настройка eBGP на Juniper Junos
set protocols bgp group external type external
set protocols bgp group external peer-as 65002
set protocols bgp group external neighbor 203.0.113.1
set policy-options policy-statement export-direct term 1 from protocol direct
set policy-options policy-statement export-direct term 1 then accept
set protocols bgp group external export export-directВ Junos для анонса маршрутов требуется policy-statement. Без него BGP-сессия поднимется, но маршруты не будут анонсироваться. Проверка: show bgp summary.
Настройка eBGP на FRRouting
configure terminal
router bgp 65001
bgp router-id 10.0.0.1
neighbor 203.0.113.1 remote-as 65002
address-family ipv4 unicast
network 198.51.100.0/24
exit-address-family
exit
exit
write memoryFRR требует активации address-family для обмена IPv4-маршрутами. Проверка: show bgp summary.
Настройка eBGP на Bird
protocol bgp uplink {
local as 65001;
neighbor 203.0.113.1 as 65002;
ipv4 {
import all;
export where net ~ [198.51.100.0/24];
};
}Bird использует собственный конфигурационный язык. Фильтр export where net ~ [...] анонсирует только указанные префиксы. Проверка: birdc show protocols.
Для iBGP между маршрутизаторами одной AS укажите одинаковый номер AS у обоих соседей. Полная mesh iBGP требует соединения каждого с каждым, что не масштабируется. Решение - route reflector, который мы разберем в разделе о масштабировании.
Алгоритмы выбора оптимального пути: как OSPF и BGP принимают решения
Понимание алгоритмов выбора пути позволяет управлять трафиком и предсказывать поведение сети при отказах.
Метрика OSPF: стоимость пути
OSPF выбирает путь с минимальной суммарной стоимостью интерфейсов. Стоимость по умолчанию вычисляется по формуле: cost = reference bandwidth / interface bandwidth. Reference bandwidth по умолчанию на Cisco - 100 Мбит/с, поэтому интерфейсы 1 Гбит/с и 10 Гбит/с получают одинаковую стоимость 1. Для корректного учета скорости измените reference bandwidth на всех маршрутизаторах: auto-cost reference-bandwidth 10000 (в Мбит/с). Либо задайте стоимость вручную: ip ospf cost 50 на интерфейсе. Меньшая стоимость - более предпочтительный путь.
Атрибуты BGP: порядок выбора лучшего маршрута
BGP выбирает лучший маршрут по строгой последовательности атрибутов. Первые шаги: highest weight (локальный для Cisco), highest local preference, shortest AS path, lowest MED. Для управления исходящим трафиком используйте local preference: маршрут с большим значением предпочтительнее. Для управления входящим трафиком от провайдера используйте MED: меньшее значение предпочтительнее для соседа. Настройка local preference на Cisco: bgp default local-preference 200 или через route-map для конкретного соседа.
Пример настройки MED для анонса маршрута с меньшим значением через резервный канал:
route-map SET-MED permit 10
set metric 50
router bgp 65001
neighbor 203.0.113.1 route-map SET-MED outСосед получит маршрут с MED 50 и будет предпочитать его через этот канал, если другие атрибуты равны.
Безопасность: настройка аутентификации соседей OSPF и BGP
Без аутентификации злоумышленник может установить соседство с вашим маршрутизатором и анонсировать ложные маршруты, перехватывая трафик. Включите MD5-аутентификацию на всех протокольных интерфейсах.
Аутентификация OSPF (MD5)
Cisco IOS:
interface GigabitEthernet0/0
ip ospf authentication message-digest
ip ospf message-digest-key 1 md5 StrongPassword123Juniper Junos:
set protocols ospf area 0 interface ge-0/0/0.0 authentication md5 1 key StrongPassword123FRRouting:
interface eth0
ip ospf authentication message-digest
ip ospf message-digest-key 1 md5 StrongPassword123Ключ и номер key-id должны совпадать на обоих концах линка. После включения аутентификации соседство переустановится.
Аутентификация BGP (TCP MD5)
Cisco IOS:
router bgp 65001
neighbor 203.0.113.1 password StrongPassword123Juniper Junos:
set protocols bgp group external neighbor 203.0.113.1 authentication-key StrongPassword123FRRouting:
router bgp 65001
neighbor 203.0.113.1 password StrongPassword123Bird:
protocol bgp uplink {
neighbor 203.0.113.1 as 65002;
password "StrongPassword123";
}Пароль должен совпадать на обоих концах BGP-сессии. При несовпадении сессия не установится, в логах появится ошибка TCP MD5.
Ускорение сходимости сети: таймеры и BFD
Сходимость - это время от отказа канала до восстановления маршрутизации. В крупных сетях каждая секунда простоя стоит денег, поэтому таймеры по умолчанию часто недостаточны.
Настройка таймеров OSPF для быстрой сходимости
По умолчанию hello-interval - 10 секунд, dead-interval - 40 секунд. Отказ обнаруживается через 40 секунд. Уменьшите таймеры до 1 и 3 секунд:
interface GigabitEthernet0/0
ip ospf hello-interval 1
ip ospf dead-interval 3Таймеры должны совпадать на обоих концах, иначе соседство не установится. Для Juniper: set protocols ospf area 0 interface ge-0/0/0.0 hello-interval 1 dead-interval 3.
Использование BFD для BGP
BGP по умолчанию использует keepalive-таймер 60 секунд и hold-time 180 секунд. BFD (Bidirectional Forwarding Detection) обнаруживает отказ за миллисекунды и мгновенно сбрасывает BGP-сессию. Настройка на Cisco:
router bgp 65001
neighbor 203.0.113.1 fall-over bfdНа Juniper:
set protocols bgp group external neighbor 203.0.113.1 bfd-liveness-detection minimum-interval 300
set protocols bgp group external neighbor 203.0.113.1 bfd-liveness-detection multiplier 3BFD требует поддержки на обоих концах. При настройке BFD для eBGP с провайдером согласуйте параметры с ним.
Типовые ошибки при настройке OSPF и BGP и их решение
Большинство проблем с соседством сводятся к пяти причинам. Первая - несовпадение таймеров hello/dead в OSPF. Симптом: соседство застревает в состоянии INIT или EXSTART. Решение: проверьте таймеры командой show ip ospf interface и приведите их к одинаковым значениям.
Вторая - неправильные network statements. Сеть не попадает в OSPF, хотя интерфейс поднят. Симптом: интерфейс отсутствует в show ip ospf interface. Решение: проверьте wildcard-маску, она инвертирована относительно subnet mask.
Третья - односторонняя аутентификация. На одном конце включен MD5, на другом нет. Симптом: соседство в состоянии DOWN, в логах ошибка authentication. Решение: включите аутентификацию на обоих концах с одинаковым ключом.
Четвертая - несовпадение MTU. OSPF требует одинаковый MTU на линке. Симптом: соседство застревает в EXSTART. Решение: проверьте show interface, установите одинаковый MTU.
Пятая - в BGP не анонсируется сеть. Команда network добавлена, но маршрут отсутствует в таблице. Решение: добавьте статический маршрут или получите его через IGP.
Для диагностики используйте: show ip ospf neighbor, show ip bgp summary, debug ip ospf adj, debug ip bgp updates. Debug-команды включайте осторожно на продуктивных устройствах, они создают нагрузку на CPU.
Масштабирование сети: OSPF areas и BGP route reflector
Крупная сеть с одной area OSPF страдает от большого размера базы данных link-state и частых пересчетов SPF. Разделите сеть на areas: area 0 - backbone, остальные area подключаются к ней через ABR. Суммируйте маршруты на ABR командой area 1 range 10.0.2.0 255.255.254.0, чтобы уменьшить количество анонсов.
Разделение OSPF на зоны (areas)
router ospf 1
network 10.0.0.0 0.0.0.255 area 0
network 10.0.2.0 0.0.0.255 area 1
area 1 range 10.0.2.0 255.255.254.0ABR суммирует маршруты area 1 в один префикс и анонсирует его в area 0. Это снижает нагрузку на маршрутизаторы backbone.
Настройка BGP Route Reflector
Полная mesh iBGP требует N*(N-1)/2 сессий, что не масштабируется. Route reflector позволяет клиентам обмениваться маршрутами через один сервер. Настройка на Cisco:
router bgp 65001
neighbor 10.0.0.2 remote-as 65001
neighbor 10.0.0.2 route-reflector-client
neighbor 10.0.0.3 remote-as 65001
neighbor 10.0.0.3 route-reflector-clientКлиенты route reflector не устанавливают сессии между собой, все маршруты проходят через reflector. Для отказоустойчивости настройте два route reflector с одинаковым cluster-id.
Если вы проектируете сеть с нуля, обратите внимание на полное руководство по маршрутизации для сисадминов и DevOps, где разобраны схемы корпоративных сетей.
Заключение: проверенный путь к надежной динамической маршрутизации
Настройка OSPF и BGP для крупных сетей сводится к последовательности: выберите протокол по границам ответственности, подготовьте адресацию и router-id, включите соседство по готовым шаблонам, защитите сессии аутентификацией, ускорьте сходимость таймерами и BFD. Тестируйте конфигурации в лабораторной среде перед внедрением в продуктивную сеть. Используйте приведенные примеры как основу и адаптируйте под свою топологию. При возникновении проблем с соседством проверяйте пять типовых ошибок: таймеры, network statements, аутентификация, MTU, наличие маршрута для анонса.
Для углубления в тему OSPF на разных платформах используйте гайд по оптимизации OSPF для Cisco, Juniper и MikroTik с чек-листом диагностики.