Cisco не работает cef

Cisco Express Forwarding

Материал из Xgu.ru

Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, скажите об этом.

Cisco Express Forwarding (CEF) — технология высокоскоростной маршрутизации/коммутации пакетов, использующаяся в маршрутизаторах и коммутаторах третьего уровня фирмы Cisco Systems, и позволяющая добиться более быстрой и эффективной обработки транзитного трафика.

Функционал, который поддерживает CEF:

CEF не работает в следующих случаях:

  • Включен ACL Logging (в конце ACL добавлено слово log, например deny ip any any log)
  • Пакеты предназначены для самого маршрутизатора/коммутатора.
  • Нет L2 Adjacency.

Содержание

[править] FIB

Forwarding Information Base (FIB) или CEF Table — таблица для быстрой пересылки пакетов. Строится на основе Routing Table и Adjacency Table. Adjacency Table в свою очередь строится на основе ARP Table. Различают 2 вида CEF — Software CEF (можно увидеть на ISR G1/G2 и 7200) и Hardware CEF (можно увидеть на 6500/7600, Nexus 7000 и ASR9000). Hardware CEF — это когда построенная FIB хранится в быстрой памяти TCAM (Ternary Content Addressable Memory). Итого FIB — это таблица, содержащая маршрут, исходящий интерфейс и L2 destination.

Вывод и параметры команд, которые относятся к CEF, могут отличаться в зависимости от версии IOS и модели оборудования.

Но, как правило, команды просмотра начинаются на show cef, show ip cef, show adjacency

[править] Adjacency Table

Строка CA0111480008CA00114800080800 читается следующим образом:

  • CA0011480008 — это source мак-адрес интерфейса, через который будет отправляться пакет на 100.0.0.2:
  • CA0111480008 — это destenation мак-адрес ca01.1148.0008:
  • 0800 — это EtherType (в данному случае у нас это IPv4 0x0800).

[править] CEF epoch

В FIB и adjacency table есть понятие версии, которая называется epoch. Диапазон значений epoch от 0 до 255.

Значение epoch увеличивается, при инициации перестроения таблицы. Это можно сделать вручную, очистив информацию CEF.

На практике epoch используется, например, при переключении между supervisor engine в технологии NSF:

  1. Во время переключения, в таблицах CEF увеличивается значение epoch.
  2. После того как протоколы маршрутизации обновили информацию в RIB, соответственно обновляются и записи в таблицах CEF. Обновленным записям назначается новое значение epoch.
  3. После завершения обновления, все записи в FIB и adjacency table, у которых значение epoch меньше текущего, удаляются.

[править] Просмотр значения epoch для FIB

Например, текущее значение epoch равно 0:

При корректной работе, значение epoch для всех префиксов должно быть равным этому глобальному значению. Отображение значения epoch для конкретного префикса на примере маршрута по умолчанию:

Когда в FIB добавляется новая запись, то значение epoch для нее устанавливается равным текущему глобальному значению. То есть, значение epoch не увеличивается, когда добавляется какой-то префикс в FIB:

[править] Обновление значения epoch для FIB

С помощью команды clear cef table ipv4 можно вручную обновить FIB и, соответственно, изменится значение epoch(в некоторых IOS также может быть команда clear ip cef epoch full):

[править] Просмотр значения epoch для adjacency table

Суммарная информация об adjacency table отображает и значение epoch:

В текущей таблице adjacency есть 4 записи со значением epoch 3, которое соответствует глобальной версии таблицы. И одна запись со значением 2.

Также в суммарной информации видно, что одна запись в состоянии incomplete: 1 incomplete adjacency. Посмотрим более подробную информацию о записях в таблице adjacency:

В более подробном выводе можно увидеть значение epoch для каждой записи в adjacency table. А также теперь мы видим у какой записи значение epoch 2:

Эта запись находится в состоянии incomplete, так как не известно какой MAC-адрес соответствует next-hop 10.0.12.10.

[править] Обновление значения epoch для adjacency table

[править] Информация о таблице CEF

[править] Просмотр информации

Очистить Cisco Express Forwarding adjacency table:

На коммутаторе (hardware Layer 3-switching adjacency node):

Источник

ИТ База знаний

Курс по Asterisk

Полезно

— Узнать IP — адрес компьютера в интернете

— Онлайн генератор устойчивых паролей

— Онлайн калькулятор подсетей

— Калькулятор инсталляции IP — АТС Asterisk

— Руководство администратора FreePBX на русском языке

— Руководство администратора Cisco UCM/CME на русском языке

— Руководство администратора по Linux/Unix

Серверные решения

Телефония

FreePBX и Asterisk

Настройка программных телефонов

Корпоративные сети

Протоколы и стандарты

Про CEF (Cisco Express Forwarding)

высокоскоростная маршрутизация и коммутация

Возможно, вы уже слышали о термине «wirespeed» раньше. Это то, что отдел маркетинга любит использовать, когда речь заходит о продаже сетевого оборудования. Это означает, что пакеты могут быть переданы без какой-либо заметной задержки. Кстати, для остальной части этой статьи слова «многоуровневый коммутатор» и «маршрутизатор» — это одно и то же. Все, что я объясняю о многоуровневых коммутаторах отныне, также относится и к маршрутизаторам. Давайте посмотрим на разницу между коммутаторами 2уровня и многоуровневыми коммутаторами с точки зрения коммутации:

Полный курс по Сетевым Технологиям

В курсе тебя ждет концентрат ТОП 15 навыков, которые обязан знать ведущий инженер или senior Network Operation Engineer

Вы знаете, что коммутаторы 2 уровня будут переключать только кадры Ethernet в пределах VLAN, и, если мы хотим, мы можем фильтровать трафик на основе уровня 2 (например, с защитой портов). Многоуровневый коммутатор может делать то же самое, но он также способен маршрутизировать между VLAN и фильтровать на уровне 3 или 4 с помощью списков доступа.

Переадресация на уровне 2 основана на конечном MAC-адресе. Наш коммутатор изучает исходные MAC-адреса на входящих кадрах и строит таблицу MAC-адресов. Всякий раз, когда фрейм Ethernet входит в один из наших интерфейсов, мы проверяем таблицу MAC-адресов, чтобы найти конечный MAC-адрес, и отправляем его в правильный интерфейс.

Переадресация на уровне 3 основана на IP-адресе назначения. Переадресация происходит, когда коммутатор получает IP-пакет, где исходный IP-адрес находится в другой подсети, чем конечный IP-адрес.

Когда наш многоуровневый коммутатор получает IP пакет со своим собственным MAC адресом в качестве назначения в заголовке Ethernet есть две возможности:

  • Если конечный IP-адрес является адресом, настроенным многоуровневом коммутаторе, то IP-пакет был предназначен для этого коммутатора.
  • Если конечный IP-адрес — это адрес, который не настроен на многоуровневом коммутаторе, то мы должны действовать как шлюз и «маршрутизировать» пакет. Это означает, что нам придется сделать поиск в таблице маршрутизации, чтобы проверить наличие самого полного совпадения. Кроме того, мы должны проверить, разрешен ли IP-пакет, если вы настроили ACL.

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

Давайте рассмотрим разницу между обработкой кадров Ethernet и IP-пакетов:

Жизнь коммутатора уровня 2 проста

  1. Коммутатор проверит контрольную сумму кадра Ethernet, чтобы убедиться, что он не поврежден или не изменен.
  2. Коммутатор получает кадр Ethernet и добавляет исходный MAC-адрес в таблицу MAC-адресов.
  3. Коммутатор направляет кадр Ethernet к правильному интерфейсу, если он знает конечный MAC-адрес. Если нет,то он будет отброшен (помечен как flood).

Там нет никакого изменения кадра Ethernet!

Теперь давайте посмотрим, что происходит, когда получает IP-пакет многоуровневый коммутатор:

В приведенном выше примере компьютер А посылает IP-пакет к компьютеру В. Обратите внимание, что они находятся в разных подсетях, поэтому нам придется его маршрутизировать. Когда наш многоуровневый коммутатор получит IP-пакет, вот что произойдет:

  1. Коммутатор проверит контрольную сумму кадра Ethernet, чтобы убедиться, что он не поврежден или не изменен.
  2. Коммутатор проверит контрольную сумму IP-пакета, чтобы убедиться, что он не поврежден или не изменен.

Многоуровневый коммутатор проверит таблицу маршрутизации, заметит, что 192.168.20 /24 напрямую подключен, и произойдет следующее:

  1. Провериттаблицу ARP, чтобы увидеть, есть ли сопоставление уровня 2-3 для компьютера B. Если нет сопоставления, многоуровневый коммутатор отправит запрос ARP.
  2. Конечный MAC-адрес изменится с FFF (многоуровневый коммутатор Fa0 / 1) на BBB (компьютер B).
  3. Исходный MAC-адрес изменится с AAA (компьютер A) на GGG (многоуровневый коммутатор Fa0/2).
  4. Поле TTL (time to live) в IP-пакете уменьшится на 1, и из-за этого контрольная сумма IP-заголовка будет пересчитана.
  5. Контрольная сумма фрейма Ethernet должна быть пересчитана заново.
  6. Фрейм Ethernet, несущий IP-пакет, будет отправлен из интерфейса к компьютеру B.

Как вы можете видеть, имеется довольно много шагов, связанных с маршрутизацией IP-пакетов.

Когда мы рассматриваем многоуровневый коммутатор возникает «разделение обязанностей». Мы должны построить таблицу для MAC-адресов, заполнить таблицу маршрутизации, ARP-запросы, проверить, соответствует ли IP-пакет списку доступа и т. д. И нам нужно переслать наши IP-пакеты. Эти задачи разделены между «плоскостью управления» и «плоскостью данных». Ниже приведен пример:

Плоскость управления отвечает за обмен информацией о маршрутизации с использованием протоколов маршрутизации, построение таблицы маршрутизации и таблицы ARP. Плоскость данных отвечает за фактическую пересылку IP-пакетов. Таблица маршрутизации не очень подходит для быстрой переадресации, потому что мы имеем дело с рекурсивной маршрутизацией.

Что такое рекурсивная маршрутизация?

Давайте рассмотрим пример:

В приведенном выше примере у нас есть три маршрутизатора. У R3 есть loopback интерфейс, к которому мы хотим получить доступ из R1. Будем использовать статические маршруты для достижения поставленной цели:

Первый статический маршрут предназначен для достижения интерфейса loopback0 R3 и указывает на интерфейс FastEthernet0/0 R3. Второй статический маршрут необходим для достижения сети 192.168.23.0/24.

Всякий раз, когда R1 хочет достичь 3.3.3.0/ 24, мы должны выполнить 3 поиска:

  • Первый поиск должен проверить запись для 3.3.3.0/24. Он должен быть там и должен быть IP-адрес следующего прыжка-192.168.23.3
  • Второй поиск относится к 192.168.23.3. Есть запись, и IP-адрес следующего прыжка — 192.168.12.2.
  • Третий и последний поиск относится к 192.168.12.2. Там имеется вход, и он напрямую подключен.

R1 должен проверить таблицу маршрутизации 3 раза, прежде чем он будет знать, куда отправлять свой трафик. Звучит не очень эффективно, верно? Выполнение нескольких поисков для достижения определенной сети называется рекурсивной маршрутизацией.

Большую часть времени все входящие и исходящие IP-пакеты будут обрабатываться и пересылаться плоскостью данных, но есть некоторые исключения, давайте сначала рассмотрим картинку ниже:

Большая часть IP-пакетов может быть передана плоскостью данных. Однако есть некоторые «специальные» IP-пакеты, которые не могут быть переданы плоскостью данных немедленно, и они отправляются на плоскость управления, вот некоторые примеры:

  • IP-пакеты, предназначенные для одного из IP-адресов многоуровневый коммутатора.
  • Трафик протокола маршрутизации, такой как OSPF, EIGRP или BGP.
  • IP-пакеты, которые имеют некоторые параметры, заданные в IP-заголовке.
  • IP-пакеты с истекшим сроком действия TTL

Плоскость управления может пересылать исходящие IP-пакеты на плоскость данных или использовать свой собственный механизм пересылки для определения исходящего интерфейса и следующего IP-адреса прыжка. Примером этого является маршрутизация на основе локальной политики.

Наш многоуровневый коммутатор выполняет больше шагов для пересылки пакетов, чем коммутаторы уровня 2, поэтому теоретически он должен работать медленнее, верно?

Одна из причин, по которой многоуровневые коммутаторы могут передавать кадры и пакеты на wirespeed, заключается в том, что в плате данных используется специальное оборудование, называемое ASICs.

Такая информация, как MAC-адреса, таблица маршрутизации или списки доступа, хранится в этих ASIC. Таблицы хранятся в content-addressable memory (Cam) и ternary content addressable memory (TCAM).

Таблица CAM используется для хранения информации уровня 2, например:

  • Исходный MAC-адрес.
  • Интерфейс, на котором мы узнали MAC-адрес.
  • К какой VLAN относится MAC-адрес.

Поиск таблицы происходит быстро! Всякий раз, когда коммутатор получает кадр Ethernet, он будет использовать алгоритм хэширования для создания «ключа» для целевого MAC-адреса + VLAN, и он будет сравнивать этот хэш с уже хэшированной информацией в таблице CAM. Таким образом, он может быстро искать информацию в таблице CAM.

  • Таблица TCAM используется для хранения информации «более высокого уровня», например:
    • Списки доступа.
    • Информацию о качестве обслуживания.
    • Таблицу маршрутизации.
  • Таблица TCAM может соответствовать 3 различным значениям:
    • 0 = не просматривать.
    • 1 = сравнивать
    • X = любое приемлемое значение.
  • Полезно для поиска, когда нам не нужно точное совпадение. (таблица маршрутизации или ACL, например).

Поскольку существует 3 значения, мы называем его троичным. Так почему же существует 2 типа таблиц?

Когда мы ищем MAC-адрес, нам всегда требуется точное совпадение. Нам нужен точный MAC-адрес, если мы хотим переслать кадр Ethernet. Таблица MAC-адресов хранится в таблице CAM.

Всякий раз, когда нам нужно сопоставить IP-пакет с таблицей маршрутизации или списком доступа, нам не всегда нужно точное соответствие. Например, IP-пакет с адресом назначения 192.168.20.44 будет соответствовать:

По этой причине такая информация, как таблица маршрутизации, хранится в таблице TCAM. Мы можем решить, должны ли совпадать все или некоторые биты.

Пример таблицы TCAM

Если мы хотим сопоставить IP-адрес 192.168.10.22, многоуровневый коммутатор сначала посмотрит, есть ли «самое полное совпадение«. Там ничего нет, что соответствовало бы полностью 192.168.10.22/32, поэтому мы продолжим сравнение на не полное соответствие. В этом случае есть запись, которая соответствует 192.168.10.0/24. Приведенный выше пример относится к поиску таблиц маршрутизации, спискам доступа, а также к качеству обслуживания, спискам доступа VLAN и многим другим.

Теперь вы знаете все шаги, которые должен выполнять многоуровневый коммутатор, когда он должен пересылать IP-пакеты, плоскость управления/данных и, что мы используем разные таблицы, хранящиеся в специальном оборудовании, называемом ASIC. Давайте подробнее рассмотрим фактическую «пересылку» IP-пакетов.

Существуют различные методы коммутации для пересылки IP-пакетов. Вот различные варианты коммутации:

Все пакеты проверяются процессором, и все решения о пересылке принимаются в программном обеспечении. очень медленно!

  • Быстрая коммутация (также известное как кеширование маршрутов):

Первый пакет в потоке проверяется процессором; решение о пересылке кэшируется аппаратно для следующих пакетов в том же потоке. Это более быстрый метод.

  • (CEF) Cisco Express Forwarding (также известный как переключение на основе топологии):

Таблица пересылки, созданная в аппаратном обеспечении заранее. Все пакеты будут коммутироваться с использованием оборудования. Это самый быстрый метод, но есть некоторые ограничения. Многоуровневые коммутаторы и маршрутизаторы используют CEF.

При использовании процессорной коммутации маршрутизатор удалит заголовок каждого кадра Ethernet, ищет IP-адрес назначения в таблице маршрутизации для каждого IP-пакета, а затем пересылает кадр Ethernet с переписанными MAC-адресами и CRC на исходящий интерфейс. Все делается в программном обеспечении, так что это очень трудоемкий процесс.

Быстрая коммутация более эффективна, потому что она будет искать первый IP-пакет, но будет хранить решение о переадресации в кэше быстрой коммутации. Когда маршрутизаторы получают кадры Ethernet, несущие IP-пакеты в том же потоке, он может использовать информацию в кэше, чтобы переслать их к правильному исходящему интерфейсу.

По умолчанию для маршрутизаторов используется CEF (Cisco Express Forwarding):

Онлайн курс по Кибербезопасности

Изучи хакерский майндсет и научись защищать свою инфраструктуру! Самые важные и актуальные знания, которые помогут не только войти в ИБ, но и понять реальное положение дел в индустрии

Источник

Читайте также:  Как отремонтировать подтяжки для брюк
Оцените статью