3.5 Проблемы маршрутизации. Неэффективное использование ресурсов. Перегрузка в сети. Блокировка ресурсов. Схема разрешений. Обнаружение изолированных узлов и участков сети.
Проблемы маршрутизации и методы управления сетевыми потоками
1. Введение: суть проблемы маршрутизации
Маршрутизация — это процесс определения пути, по которому пакет данных следует от источника к получателю. В идеальном мире этот путь является кратчайшим и быстрейшим. Однако в реальных распределенных системах (особенно в больших сетях, таких как Интернет или корпоративные МСП) маршрутизация сталкивается с комплексом взаимосвязанных проблем, возникающих из-за динамичности топологии, ограниченности пропускной способности и децентрализованного принятия решений.
2. Неэффективное использование ресурсов
2.1. Причины неэффективности
- Субоптимальные пути (Routing Loops и Flapping): Из-за задержек конвергенции протоколов (особенно дистанционно-векторных, как RIP) маршрутизаторы могут временно направлять трафик по петлям или длинным обходным путям, даже если существует более прямой канал.
- Асимметричная маршрутизация: Пакет идет туда одним путем, а возвращается другим. Это не всегда плохо, но в некоторых случаях приводит к тому, что промежуточные устройства (файрволы, DPI-системы) теряют контекст соединения, вынужденно обрабатывая трафик дважды.
- Балансировка без учета загрузки: Статические маршруты или протоколы типа OSPF с метрикой на основе “стоимости” (bandwidth) не учитывают текущую загрузку канала. Два линка с равной пропускной способностью могут быть загружены на 10% и 90%, но трафик будет распределяться поровну (поиск по хэшу потоков), что приводит к перегрузке одного и простою другого.
2.2. Последствия
- Потеря пакетов (дроп) на перегруженных интерфейсах.
- Рост джиттера (вариации задержки) для чувствительного трафика (VoIP, видео).
- Увеличение времени доставки (RTT), что снижает производительность TCP-сессий (медленный старт срабатывает позже).
2.3. Пути решения
- Внедрение динамической маршрутизации с учетом нагрузки (например, EIGRP с параметром «задержка» или MPLS TE — Traffic Engineering).
- Использование Policy-Based Routing (PBR), где администратор жестко привязывает критичные приложения к гарантированным каналам.
3. Перегрузка в сети (Congestion)
3.1. Механизм возникновения
Перегрузка — это состояние, при котором скорость поступления пакетов на входной интерфейс маршрутизатора превышает скорость их обработки и отправки в выходной буфер. Это классическая проблема «узкого горлышка».
3.2. Специфика перегрузки в маршрутизации
В отличие от коммутаторов (где перегрузка локальна), на маршрутизаторах перегрузка возникает на стыке высокоскоростных магистралей (10 Gbps) и низкоскоростных клиентских линков (100 Mbps). Это называется проблемой «inbound/outbound»: маршрутизатор обязан буферизировать огромные объемы данных, ожидая освобождения медленного канала.
3.3. Эффект “Bufferbloat”
Современные маршрутизаторы имеют большие очереди (буферы). Если не управлять очередями, буфер заполняется полностью, вызывая:
- Глобальную синхронизацию TCP-потоков (многие отправители одновременно уменьшают окно передачи).
- Экстремальные задержки (сотни миллисекунд) даже при неполной утилизации канала.
3.4. Методы борьбы
- Active Queue Management (AQM): Алгоритмы типа RED (Random Early Detection) или CoDel (Controlled Delay) начинают выборочно дропать пакеты до того, как буфер переполнится, заставляя TCP-отправителей снижать скорость заранее.
- Class-Based Weighted Fair Queuing (CBWFQ) и LLQ: Разбиение трафика на классы с гарантированными полосами пропускания, где голосовой трафик получает приоритетную очередь (Low Latency Queuing).
4. Блокировка ресурсов (Resource Deadlocks)
4.1. Определение
В контексте сетей блокировка — это ситуация, когда группа маршрутизаторов или каналов взаимно ожидает освобождения ресурсов, захваченных друг другом, что останавливает процесс пересылки пакетов. В отличие от компьютерных систем (тупики в БД), в сетях это явление специфично и чаще называется «петля маршрутизации» или «шторм».
4.2. Классический сетевой тупик (Microloop)
Возникает при изменении топологии (падение линка). R1 считает, что путь до сети лежит через R2, а R2 считает, что путь лежит через R1. Пакеты начинают циркулировать по кругу, потребляя процессорное время маршрутизаторов и полосу пропускания, пока не истечет TTL (Time To Live).
4.3. Блокировка на уровне потоков (Flow-level deadlock)
В сетях с жесткой привязкой сессий (например, в балансировщиках нагрузки), если маршрутизатор не может перенаправить пакет, потому что его таблица CAM переполнена, а новый маршрут требует освобождения памяти, которая занята старыми “зависшими” сессиями. Возникает циклическое ожидание, требующее ручной очистки (сброса таблиц).
4.4. Схема разрешений (Prevention & Recovery)
- Механизм TTL: Автоматическое уничтожение “заблудившихся” пакетов через 255 хопов.
- Расщепление горизонта (Split Horizon) и Poison Reverse: Запрет анонсировать маршрут обратно тому интерфейсу, откуда он был получен. Это ломает циклы на уровне протоколов (особенно эффективно в RIP и EIGRP).
- Таймеры задержки (Hold-down timers): При получении информации об изменении маршрута, маршрутизатор игнорирует альтернативные объявления об этом же маршруте в течение определенного времени, давая сети время «успокоиться» и найти стабильный путь.
5. Схема разрешений (Resolving Scheme)
Под этим термином в сетевых технологиях обычно понимается иерархия принятия решений маршрутизатором, когда стандартные алгоритмы дают сбой. Для решения конфликтов приоритетов используется следующая схема (от высшего приоритета к низшему):
- Административное расстояние (AD): Приоритет протокола. Статические маршруты (AD=1) всегда перекрывают динамические (OSPF=110, RIP=120), если они совпадают по сети назначения.
- Длина маски префикса (Longest Prefix Match): Сначала выбирается маршрут с самой длинной маской (наиболее конкретный), даже если у него выше AD.
- Метрика протокола: Если маска и AD равны — выбирается путь с наименьшей метрикой (количество хопов, стоимость OSPF).
- ECMP (Equal Cost Multipath): Если метрики равны, включается балансировка.
- Политика маршрутизации (PBR): Если активна, то правила PBR (по IP-адресу источника, порту) применяются до таблицы маршрутизации, полностью игнорируя стандартную схему.
Эта схема гарантирует предсказуемое поведение даже при нештатных ситуациях.
6. Обнаружение изолированных узлов и участков сети
6.1. Определение проблемы
Изоляция (Partitioning / Split Brain) — это ситуация, когда часть сети теряет связь с остальной инфраструктурой, но внутри себя продолжает функционировать. Это может быть связано с обрывом магистрального кабеля или отказом транзитного роутера.
6.2. Механизмы обнаружения
А. Протоколы “Keepalive” (Hello-пакеты) Базовый механизм всех динамических протоколов (OSPF, ISIS, BGP). Маршрутизаторы обмениваются короткими Hello-сообщениями через фиксированные интервалы (например, 10 секунд). Если 4 пакета подряд потеряны (Dead Interval = 40 сек), маршрутизатор объявляет соседа “мертвым” (Down).
Б. BFD (Bidirectional Forwarding Detection) Это современный “легковесный” протокол, работающий независимо от OSPF/BGP. Он отправляет UDP-пакеты с очень высокой частотой (до 50 мс). Позволяет обнаружить обрыв канала за миллисекунды, а не за десятки секунд. Это критично для триггера переключения на резервный маршрут.
В. Мониторинг уровня L2 (CDP/LLDP) Обнаружение прямых соседей на канальном уровне. Если сосед перестал отвечать на LLDP-запросы, но физический порт “поднят” (up) — это верный признак того, что кабель поврежден или сосед выключен (это помогает дифференцировать логическую изоляцию от физической).
6.3. Действия при обнаружении изоляции
- Вычисление области изоляции: Используется алгоритм Dijkstra (в протоколах состояния каналов, LSDB). Если у маршрутизатора нет LSA (Link State Advertisement) от определенного узла в базе данных — этот узел считается недостижимым.
- Формирование “черных дыр” (Blackholing): Маршрутизатор, обнаруживший, что его транзитный линк упал, анонсирует своим соседям маршрут с большим расстоянием (как бы через себя) или отправляет ICMP-сообщения “Destination Unreachable” источнику.
- Использование резервных туннелей: В MPLS-сетях при обнаружении изоляции срабатывает механизм FRR (Fast Reroute) — трафик мгновенно переключается в заранее просчитанный резервный туннель, минуя упавший участок, еще до того, как вся сеть пересчитает топологию.
7. Заключение
Комплекс проблем маршрутизации (неэффективность, перегрузка, блокировки и изоляция) решается не одним протоколом, а системой взаимодополняющих механизмов:
- На уровне плана управления (Control Plane) — это быстрая конвергенция и алгоритмы предотвращения петель (Split Horizon, Hold-down).
- На уровне плана пересылки (Data Plane) — это умные очереди (QoS) и активное управление буферами (AQM).
- На уровне мониторинга — это переход от статичных таймеров к микросекундным детекторам (BFD).
Понимание этих проблем позволяет администратору не просто “настроить IP”, а спроектировать отказоустойчивую, производительную сеть, способную адаптироваться к авариям без полной остановки сервисов.