ѕоддержим в трудное врем€ —пециальное предложение на техническую поддержку вашей »“ - инфраструктуры силами наших экспертов ѕодобрать тариф
ѕоставка оборудовани€ √аранти€ и помощь с настройкой. —кидка дл€ наших читателей по промокоду WIKIMERIONET  упить
»нтерфейс статистики Merion Mertics показывает ключевые диаграммы и графики по звонкам, а также историю звонков в формате, который легко поймет менеджер ѕопробовать бесплатно
¬недрение
офисной телефонии
Ўаг на пути к созданию доступных унифицированных коммуникаций в вашей компании ¬недрить
»нтеграци€ с CRM ѕомогаем навести пор€док с данными
и хранить их в единой экосистеме
ѕодключить
»“ Ѕезопастность ”мна€ информационна€ безопасность дл€ вашего бизнеса «аказать

ѕро CEF (Cisco Express Forwarding)

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

ћерион Ќетворкс

9 минут чтени€

¬озможно, вы уже слышали о термине "wirespeed" раньше. Ёто то, что отдел маркетинга любит использовать, когда речь заходит о продаже сетевого оборудовани€. Ёто означает, что пакеты могут быть переданы без какой-либо заметной задержки.  стати, дл€ остальной части этой статьи слова "многоуровневый коммутатор" и "маршрутизатор" - это одно и то же. ¬се, что € объ€сн€ю о многоуровневых коммутаторах отныне, также относитс€ и к маршрутизаторам. ƒавайте посмотрим на разницу между коммутаторами 2уровн€ и многоуровневыми коммутаторами с точки зрени€ коммутации:

разница между коммутаторами 2уровн€ и многоуровневыми коммутаторами

¬ы знаете, что коммутаторы 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-пакетов:

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

∆изнь коммутатора уровн€ 2 проста

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

“ам нет никакого изменени€ кадра Ethernet!

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

что происходит, когда получает 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-пакеты. Ёти задачи разделены между "плоскостью управлени€" и "плоскостью данных". Ќиже приведен пример:

переслать IP-пакеты

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


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

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

рекурсивна€ маршрутизаци€

¬ приведенном выше примере у нас есть три маршрутизатора. ” R3 есть loopback интерфейс, к которому мы хотим получить доступ из R1. Ѕудем использовать статические маршруты дл€ достижени€ поставленной цели:

R1(config)#ip route 3.3.3.0 255.255.255.0 192.168.23.3
R1(config)#ip route 192.168.23.0 255.255.255.0 192.168.12.2

ѕервый статический маршрут предназначен дл€ достижени€ интерфейса 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 будет соответствовать:

  • 192.168.20.44 /32
  • 192.168.20.0 /24
  • 192.168.0.0 /16

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


ѕример таблицы 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):

CEF (Cisco Express Forwarding)