Доброго времени! Перед тем как рассматривать тему MPLS, давайте уясним для себя как работает маршрутизатор.
В маршрутизаторе различают два разных процесса, это routing (маршрутизация) и forwarding (коммутация пакетов).
В архитектуре маршрутизатора выделяют две плоскости:
- Control Plane (routing) — получает все маршруты от всех протоколов маршрутизации и далее по специальным алгоритмам лучшие маршруты попадают в таблицу RIB (Route Information Base). Это выполняется на процессоре роутера.
- Data Plane (Forwarding) — из RIB информация попадает в кеш (Data Plane), на cisco это реализовано с помощью CEF (Cisco Express Forwarding).
Data Plane обрабатывается с помощью forwarding engine. В зависимости от платформы, этот forwarding engine может быть централизованным (объединенным с route process) или распределенным (разносятся по процессорам на интерфейсах).
Как происходит передача пакета?
Сначала происходить этап маршрутизации (routing), на этом этапе находится next hop, а так же интерфейс через который нужно передать пакет. Это все делается в Control Plane.
Определение пути коммутации и формирование Layer 2. Этим занимается Data Plane.
Теперь давайте рассмотрим режимы коммутации:
1. Process Switching (процессорная коммутация) — это режим, при котором каждый пакет обрабатывается центральным процессором, тем самым очень сильно нагружая его.
Этот режим на данный момент не используется и по умолчанию выключен. Если вы найдете в конфигурационном файле команды: no ip route-cache и no ip cef , то это скажет нам о том, что режим коммутации Process Switching.
2. Fast Switching — идея этого режима заключается в использовании cache таблиц. Первый пакет потока идет через route process, затем создается кеш и все последующие пакеты этого потока идут путем подставления этого кеша в пакет (вместо того чтоб делать Layer 2 rewrite для каждого пакета потока).
Основной проблемой здесь является то, что каждый новый поток в начале будет «тормозиться», так как первый пакет у нас по прежнему идет через Process Switching.
К слову сказать, если в сети используется Policy Base Routing, то все пакеты идут в режиме Process Switching и тем самым сильно нагружают маршрутизатор. Для того что бы этого избежать, необходимо в route-map для этого PBR прописать: ip route-cache policy.
3. Cisco Express Forwarding — этот режим создан для того чтобы избавиться от недостатков с первым пакетом, как у Fast Switching, засчет того, что роутер сразу создает кеш для каждого маршрута, еще до начала того когда начался поток. И при приходе первого пакета маршрутизатор «достает» сразу заготовку и подставляет ее, минуя Route Process.
В CEF есть две таблицы:
— таблица соседей (adj-table) в ней содержатся готовые заголовки второго уровня.
— FIB (Forwarding Information Base) — таблица в которой указывается то, как происходит коммутация пакета. Эту таблицу можно посмотреть show ip cef.
CEF по умолчанию включен (ip cef).
Если у нас платформа выше 7500, там используется распределенная архитектура, для того чтобы скопировать этот CEF на каждый интерфейс (либо line card), необходимо дать команду ip cef distrebuted.
Это существенно ускоряет процесс коммутации.
Стоит для себя хорошо уяснить, то что, пакеты коммутируются на основании CEF. Значит нам нужно понять, из чего может наполняться этот самый CEF:
— RIB
— PBR (Policy Base Routing)
— TE/FRR
Первые два нам знакомы, последнее мы рассмотрим еще, но позже.
Это знание нам очень хорошо поможет, когда мы будем делать траблшутинг.
Смотрим show ip route, определяем что трафик должен идти через один роутер, смотрим traceroute видим совсем другую картину.
Здесь нам и нужно смотреть то, как коммутируется пакет, сделать это можно так: sh ip cef exact-route {Source IP} {Destination IP}
Так мы сможем четко посмотреть как пакет будет скоммутирован.