Skip to main content

Process Switching

Process switching — это базовый механизм маршрутизации, при котором каждый входящий IP-пакет передаётся на обработку центральному процессору маршрутизатора (CPU), где он пошагово проходит весь цикл принятия маршрутизирующего решения. Это универсальный (поддерживает все протоколы) метод, но медленный.

Process switching


В чём отличие от других методов

МетодКто принимает решениеКак частоГде кэш
Process switchingCPUКаждый пакетНет
Fast switchingCPU → Fast cacheТолько первыйВременный кэш
CEFFIB (precomputed)НикогдаFIB/Punt path

Полный процесс работы process switching

Рассмотрим пошагово.


1. Пакет приходит на интерфейс

Пакет с Ethernet-заголовком приходит, попадает в input queue интерфейса, и драйвер сетевой карты вызывает прерывание.


2. CPU читает пакет и извлекает L3 (IP) заголовок

Переход к IP:

  • Проверяется IP header (TTL, checksum, версия),
  • Извлекается Destination IP.

3. CPU выполняет рекурсивный поиск маршрута

Теперь самое важное — как выбирается маршрут:

a. Поиск записи в RIB (Routing Information Base)

Пример:

10.10.10.0/24 → next-hop 192.168.1.1 via GigabitEthernet0/1

Это не означает напрямую, куда отправлять пакет — это логическая информация (как добраться до next-hop).


b. Рекурсивный поиск next-hop

Теперь маршрутизатор должен понять, а как добраться до 192.168.1.1? Он снова лезет в RIB и ищет:

192.168.1.0/24 → directly connected via Gi0/1

Теперь всё ясно: next-hop 192.168.1.1 можно отправить через Gi0/1.


В результате рекурсивного поиска

  • определяется выходной интерфейс,
  • и MAC-адрес next-hop (через ARP).

4. Проверка ARP / получение MAC-адреса

Если ARP-запись найдена — используется.

Если нет — инициируется ARP-запрос и пакет буферизуется.


5. Изменение заголовка IP

CPU вручную:

  • уменьшает TTL,
  • пересчитывает IP Checksum,
  • меняет Ethernet-заголовок (новый MAC dst),
  • направляет пакет в output queue интерфейса.

Что дальше

На этом этапе:

  • первый обработанный пакет становится шаблоном для fast switching или CEF (если они включены),
  • CPU может сохранить результат поиска в Fast switching cache (если он включён).

Когда каждый пакет идёт через process switching

  • Fast switching и CEF отключены,
  • Пакет неизвестного формата (IP options, multicast),
  • Интерфейс в режиме debug (debug ip packet),
  • Пакет первый в потоке (если fast switching),
  • Используется policy-based routing (PBR) без оптимизаций.

Как запись появляется в таблице маршрутизации

На самом деле, ip route → это RIB. В реальных системах RIB наполняется:

  • статическими маршрутами,
  • маршрутами от протоколов (OSPF, EIGRP, BGP),
  • маршрутами напрямую подключённых интерфейсов.

Маршрутизатор строит FIB (Forwarding Information Base) на основе RIB, но при process switching FIB не участвует вообще — весь поиск идёт по RIB в реальном времени.


Пример (на Cisco)

Router(config)# no ip route-cache
Router(config)# no ip cef

→ Всё идёт через process switching

Router# debug ip packet

→ Все пакеты обрабатываются CPU, можно наблюдать каждый шаг маршрутизации


Почему это плохо

  • Каждый пакет → прерывание, поиск, обработка вручную.
  • CPU загружается до 100% при минимальном трафике.
  • Нет кэширования, нет масштабируемости.
  • Современные скорости (>100Mbps) невозможны без аппаратного ускорения.

Вывод

Process switching:

  • это низкоуровневая, универсальная маршрутизация, где CPU делает всё сам,
  • включает рекурсивный поиск маршрутов по RIB,
  • применяется только для совместимости, отладки, или если всё остальное выключено,
  • основа всех маршрутизирующих механизмов, но в проде почти не используется.

ШагЭтапОписание
1Приём пакетаПакет поступает на входной интерфейс, создаётся прерывание для CPU.
2Извлечение IP-заголовкаCPU анализирует IP-заголовок, извлекает адрес назначения (Destination).
3Поиск маршрута в RIBВ таблице маршрутов (RIB) ищется маршрут к целевому адресу.
4Рекурсивный поиск next-hopЕсли указанный next-hop — это другой IP, выполняется повторный поиск.
5Определение выходного интерфейсаОпределяется физический интерфейс, через который пойдёт пакет.
6ARP-резолвингЕсли MAC-адрес next-hop не известен, запускается ARP-запрос.
7Перепись заголовковTTL уменьшается, пересчитывается IP-checksum, меняется MAC-адрес.
8Передача пакетаПакет уходит через выходной интерфейс в output-queue.
ХарактеристикаProcess SwitchingFast SwitchingCEF (Cisco Express Forwarding)
Где принимается решениеCPU (на каждый пакет)CPU (только первый пакет)FIB (аппаратная структура)
КэшированиеНетДа (Fast Cache)Да (FIB/Punt Path)
Производительность❌ Низкая⚠️ Средняя✅ Очень высокая
Масштабируемость❌ Плохо⚠️ Умеренно✅ Отлично
Поддержка всех протоколов✅ Да⚠️ Не всегда⚠️ Требует поддержки
Где используетсяОтладка, исключенияСтарые Cisco, fallbackСовременные маршрутизаторы Cisco
Возможность отладки✅ Полный контроль⚠️ Частичный❌ Почти нет
CPU-нагрузка🟥 Максимальная🟡 Первая передача🟢 Минимальная

Рекурсивный поиск маршрута

рекурсивный поиск маршрута всегда выполняется, вне зависимости от того, какой метод форвардинга используется (Process Switching, Fast Switching, CEF и др.). Но рекурсивный поиск нужен только один раз на этапе построения маршрута, не на каждый пакет.


Подробно: когда и где выполняется рекурсивный поиск

ЭтапПроцессГде происходит рекурсияПример
Построение таблицы маршрутов (RIB)Поступление маршрутов (например, из BGP)Да, CPU выполняет рекурсивный поиск, чтобы определить путь до next-hop10.0.0.0/8 → next-hop 192.168.1.1192.168.1.0/24 → Gi0/1
Построение FIB (CEF)Преобразование RIB → FIB (предвычисленная структура)Да, рекурсивно разрешаются next-hop'ыFIB хранит уже готовый интерфейс + ARP
Форвардинг пакетаCEF или Fast switching❌ Нет, рекурсия уже выполнена заранееFIB указывает сразу: 10.0.0.0/8 → Gi0/1, MAC=aa:bb:cc

Что такое рекурсивный маршрут

Рекурсивный маршрут — это маршрут, в котором next-hop — это не directly connected интерфейс, а другой IP-адрес, требующий дальнейшего разрешения.

Пример

ip route 10.0.0.0/8 192.168.1.1

А 192.168.1.1 сам по себе находится на:

ip route 192.168.1.0/24 via Gi0/1

Нужно «разрешить»

  • Где находится 192.168.1.1?
  • Какой интерфейс? Какой MAC?
  • Это и есть рекурсивный обход.

Но важно

  • При process switching: рекурсивный поиск идёт на каждый пакет.

  • При CEF: рекурсивный поиск делается один раз, при формировании FIB.

    • CPU строит prefix → next-hop → outgoing interface + ARP.
    • Затем этот путь используется во всех пакетах, без участия CPU.

Вывод

ВопросОтвет
Нужен ли рекурсивный обход маршрутов?✅ Да
Происходит ли он при любом методе маршрутизации?✅ Да, но один раз
Выполняется ли он при каждом пакете?❌ Только при process switching
Выполняется ли он при CEF?✅ Но только при генерации FIB