Операции CEF на коммутаторе L3 против маршрутизатора

21

Я понимаю, что коммутаторы L3 используют CEF для более быстрой пересылки пакетов. Однако CEF не будет работать для пакетов, которые должны пройти NAT. Означает ли это, что CEF не используется граничными маршрутизаторами и граничными коммутаторами L3? Полезность CEF ограничена локальной сетью?

Майкл Мэй
источник

Ответы:

8

NAT, конечно, может использовать CEF. Это из собственного руководства Cisco здесь: http://www.cisco.com/en/US/tech/tk648/tk361/technologies_q_and_a_item09186a00800e523b.shtml

Q. What kind of routing performance can be expected when using Cisco IOS NAT?

    A. Cisco IOS NAT supports Cisco Express Forwarding switching, fast switching, and process switching. For 12.4T release and later, fast-switching path is no longer supported. For Cat6k platform, the switching order is Netflow (HW switching path), CEF, process path.

    Performance depends on several factors:

        The type of application and its type of traffic

        Whether IP addresses are embedded

        Exchange and inspection of multiple messages

        Source port required

        The number of translations

        Other applications running at the time

        The type of hardware and processor

Большие платформы с IOS-XR, где FIB распределяется между линейными картами, также поддерживают NAT операторского класса, поэтому его полезность не ограничивается только локальной сетью.

Кроме того, многие коммутаторы Cisco L3 просто не выполняют NAT вообще

mellowd
источник
2
Технически на пути CEF от входа до выхода у вас есть точки вставки для функций (таких как NAT). Если эта точка вставки существует, функция работает с включенным CEF. Но в отличие от поиска L3, для этой функции не может быть заметного увеличения производительности, поскольку CEF просто предоставляет данные для функции, а не изменяет саму функцию. Но в основном это не важная деталь, важная деталь: оставьте CEF включенным.
ytti
18

CEF - это слово Cisco для их FIB. Когда в коммутаторе L3 вы делаете 'sh ip cef', на самом деле ни одна из этой информации вообще не используется для проталкивания пакетов, это всего лишь программный три, который используется для заполнения аппаратной ASIC.

CEF - это просто термин, который Cisco использует для описания своего оптимизированного кода хранения / поиска данных, это не конкретная технология с определенной функцией.

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

Коммутация LAN (L2) не отвлекается через CEF, поэтому она вообще не зависит от CEF.

Я рекомендую эту книгу для самой современной информации о CEF (она написана после основной переписки CEF около 12.2S)

Если вы ограничиваете определение CEF для IP Trie FIB, то, очевидно, это не может быть использовано для NAPT, потому что вы не можете заранее определить, что такое natted и где. Но, как пояснил, CEF не конкретные технологии, это более широкое понятие, и, таким образом, это спорно, если CEF является функция NAT или нет, я бы заблуждаться в сторону причем функция CEF:

bu.ip.fi#sh cef features global  | b Local
  Global Local features not attached to a specific interface:
     NAT
bu.ip.fi#

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

ytti
источник
5
Просто добавьте к этому - CEF - это путь переключения, информационное дерево для пересылки информации и т. Д., Поэтому имя «CEF» может использоваться во многих отношениях, что добавляет путаницы. На самом деле, NAT поддерживается в пути CEF (как и тысячи других функций), но таблицы, созданные в CEF, не содержат некоторой информации, необходимой для переключения пакетов просто путем их использования, как указано в ytti, необходимо обратиться к дополнительным записям (они построены и поддерживаются кодом NAT). В любом случае, если пакет может быть переключен по пути CEF без возврата к переключению процесса, он все еще поддерживается CEF.
Лукаш Бромирски
9

Означает ли это, что CEF не используется граничными маршрутизаторами и граничными коммутаторами L3? Полезность CEF ограничена локальной сетью?

CEF полезен, потому что он позволяет маршрутизатору быстро перезаписывать информацию уровня 2 во время операций пересылки уровня 3. Маршрутизаторы WAN должны переписывать информацию заголовка Layer2 так же, как это делают коммутаторы LAN ... CEF чрезвычайно полезен для обоих типов маршрутизаторов.

На высоком уровне CEF выполняет две функции:

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

Пример:

Рассмотрим этот маршрутизатор, который имеет канал WAN HDLC на Serial1 / 0 и подключение к локальной сети через FastEthernet0 / 0 ...

R1#show adjacency internal
Protocol Interface                 Address
IP       Serial1/0                 point2point(5)
                                   0 packets, 0 bytes
                                   0F000800             <--------- HDLC Header rewrite info
                                   CEF   expires: 00:02:17
                                         refresh: 00:00:17
                                   Epoch: 0
                                   Fast adjacency disabled
                                   IP redirect enabled
                                   IP mtu 1500 (0x0)
                                   Fixup disabled
                                   Adjacency pointer 0x6663D3E0, refCount 5
                                   Connection Id 0x000000
                                   Bucket 6

Предположим, что пакет IPv4, идущий к 192.0.2.1, поступает в маршрутизатор из FastEthernet0 / 0 в локальной сети и должен выйти из Serial1 / 0 в глобальной сети (тот факт, что он выходит из Serial1 / 0, находится в таблице CEF ... и CEF таблица ссылается на таблицу смежности).

Когда маршрутизатор получает пакет IPv4 от FastEthernet0 / 0, маршрутизатор должен удалить заголовок Ethernet и добавить заголовок HDLC , 0F000800так как это адресат IPv4 ( 0x0800в качестве значения типа «HDLC» для следующего заголовка IPv4).

Если CEF не кэшировал (тривиальную) информацию о перезаписи заголовка для Serial1 / 0, он должен искать информацию вручную на уровне переключения процессов (что очень медленно). Эти значения таблицы смежности не изменятся, пока инкапсуляция в Serial1 / 0 не изменится; поэтому Cisco IOS кэширует информацию о перезаписи смежности в таблице смежности.

Информация о перезаписи становится более сложной, когда вы смотрите на PVC Frame Relay или ATM.

Этот документ о CCO (ID документа: 17812) может объяснить вещи лучше, чем я, перефразируя много контента CCO

Майк Пеннингтон
источник
Разве операции CAM не будут рассматриваться только САМ? Операции уровня 3 будут обращаться к FIB, в которой работает CEF, и, если необходимо провести более глубокую проверку пакетов на уровне 3 (в случае пакета, требующего NAT), не сделает ли это CEF бесполезным для маршрутизаторов WAN?
Майкл Май
1
CEF, в частности, не используется для поиска в / cache / adjacency или l3, это «быстрое переключение» (которое больше не поддерживается). CEF является предварительной сборкой, поэтому все данные, которые вам могут понадобиться для смежности или поиска в l3, уже находятся в структуре, которая оптимальна для поиска с ограничениями, установленными данной платформой.
ytti
@ytti, извините, но CEF делает информацию о смежности кеша, я думаю, вы запутались в том, как заполняется кеш (IMHO, вы предполагаете, что пакет должен быть обработан как кеш, но это не так) ... из существенных различий между CEF и другими методами переключения (например fast-switching) является то, что CEF предварительно вычисляется. Тем не менее, CEF все еще должен кэшировать информацию, в противном случае ее нужно искать на уровне переключения процессов ... очень медленно, и причина в том, что нам нужен CEF для интерфейсов LAN и WAN.
Майк Пеннингтон
Я думаю, что мы просто не согласны с тем, что означает «кэширование», но да, ключевым моментом является то, что это предварительная сборка, и для многих функций (таких как MPLS) это только структура данных, нет хранилища с переключением процессов, которое можно использовать для отката. к.
ytti
@ChristianDelapena, вы путаете аппаратные реализации аппаратной таблицы поиска (память CAM) с программным процессом IOS, который заполняет аппаратные таблицы поиска (то есть CEF). CEF существует, так что вы можете сопоставить запись префикса layer3 с требуемой информацией о перезаписи протокола на layer2 ... однако layer2 может быть многими различными протоколами, такими как frame-relay, atm, packet-over-sonet, hdlc, ppp или ethernet. .. все эти протоколы могут нести IPv4, но им нужны определенные поля, заполненные в их заголовках, прежде чем вы сможете принять этот IP-пакет и инкапсулировать его для обработки следующим маршрутизатором WAN
Майк Пеннингтон,