Топологии связности: hub-and-spoke, partial mesh и full mesh

Цикл «Виды связности и SDN», часть 6. Предыдущая часть: «Кто управляет сетью: контроллер, BGP и локальные агенты».
Ось: топология.
Топология отвечает не на вопрос «чем шифруем», а на вопрос «через кого проходит пакет».
Point-to-point
Один туннель между двумя площадками. Простая адресация, понятный маршрут, минимум служебного состояния.
Проблемы начинаются, когда появляется третья, десятая и сотая площадка. Ручное добавление каждой пары быстро превращается в отдельную профессию.
Hub-and-spoke
Все spokes подключаются к центральному хабу. Филиалу нужен один или два туннеля, политики сосредоточены в одном месте, легко организовать общий выход и журналирование.
Недостатки:
- трафик филиал—филиал делает крюк;
- производительность ограничена хабом;
- отказ центра влияет на всех;
- растёт задержка;
- приходится резервировать не только сервер, но и каналы, адреса и маршруты до него.
Два хаба улучшают ситуацию, но добавляют выбор активного маршрута и риск асимметрии.
Full mesh
Каждый узел имеет прямую связь с каждым. Количество пар:
N × (N − 1) / 2.
Для десяти участников — 45, для ста — 4950, для тысячи — 499 500 потенциальных пар.
Это не обязательно означает полмиллиона постоянно активных сокетов. Современный контроллер может выдавать endpoint и ключи по политике, а data plane поднимать связь при появлении трафика.
Но каждому узлу всё равно нужно знать разрешённых участников, их ключи, адреса или способ запроса этой информации. Масштабируется не только трафик, но и состояние.
Partial mesh
Прямые связи создаются только для реально общающихся групп.
Например:
- серверы резервного копирования имеют прямые пути к ЦОДам;
- офисы ходят к приложениям через ближайший региональный хаб;
- администраторы подключаются напрямую к разрешённым узлам;
- случайные филиалы не образуют туннели друг с другом.
Partial mesh часто оказывается практичнее полного: меньше состояния и радиус аварии при сохранении прямых путей там, где они дают пользу.
Региональная иерархия
Несколько локальных хабов соединяются между собой mesh или магистралью. Пользователь подключается к ближайшему региону, а межрегиональный трафик проходит по контролируемому backbone.
Такая схема удобна, когда:
- много филиалов;
- есть несколько ЦОДов;
- Интернет неоднороден;
- нужно локализовать отказ;
- требуется единая точка выхода в конкретном регионе.
Relay не всегда хаб
Relay может использоваться только тогда, когда два участника не установили прямое соединение из-за NAT или firewall. Остальные пары продолжают общаться напрямую.
Поэтому наличие relay не делает всю сеть hub-and-spoke. Но для конкретной проблемной пары relay временно становится транзитной точкой со всеми последствиями: задержкой, ограничением полосы и требованиями к резервированию.
Кольцо
Кольцевая схема знакома по транспортным сетям, но для программных туннелей используется реже. Она экономит число связей и даёт альтернативный путь, однако увеличивает количество транзитных узлов и усложняет быстрое восстановление без протокола маршрутизации.
Если поверх кольца работает BGP/OSPF и корректно выбирает путь, это уже routed overlay с выбором пути.
Как выбирать
Hub-and-spoke хорош для простого удалённого доступа и централизованного выхода.
Full mesh подходит для небольшого числа равноправных узлов с интенсивным взаимным обменом.
Partial mesh — для большинства неоднородных инфраструктур.
Региональная схема — когда узлов и географии уже достаточно, чтобы один центр стал проблемой.
Решение нужно принимать по реальной матрице потоков. Если из ста площадок девяносто девять ходят только к двум ЦОДам, полный mesh существует главным образом ради красивой схемы.
Где это ломается
- Хаб становится единственной точкой отказа и узким местом, хотя «все туннели зелёные».
- Full mesh рисуют для трёх узлов или, наоборот, для тысячи без учёта состояния.
- Relay стоит далеко и тихо превращает проблемные пары в скрытый hub-and-spoke.
- Два хаба без продуманного выбора пути дают асимметрию и обрыв сессий.
- Топологию выбирают по красивой картинке, а не по матрице реальных потоков.
В следующей части добавим NAT, CGNAT и фильтрацию. Именно там выяснится, что нарисованная прямая линия между узлами иногда является пожеланием, а фактический пакет тихо едет через relay.
Предыдущая часть: «Кто управляет сетью: контроллер, BGP и локальные агенты»
Оглавление цикла: «SDN без магии: карта видов связности»
Следующая часть: «NAT, CGNAT и ограниченные сети: где заканчивается прямая связность»
