Operaciones CEF en conmutador L3 vs enrutador

21

Entiendo que los conmutadores L3 usan CEF para un reenvío de paquetes más rápido. Sin embargo, CEF no funcionará para los paquetes que necesitan someterse a NAT. ¿Significa esto que los enrutadores de borde y los interruptores de borde L3 no usan CEF? ¿La utilidad de CEF se limita a la LAN?

Michael May
fuente

Respuestas:

8

NAT, por supuesto, puede usar CEF. Esto es de la propia guía de Cisco aquí: 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

Las plataformas más grandes que ejecutan IOS-XR, donde la FIB se distribuye a las tarjetas de línea, también admiten NAT de nivel de operador, por lo que su utilidad no se limita solo a la LAN.

Además, muchos conmutadores L3 de Cisco simplemente no hacen NAT en absoluto

mellowd
fuente
2
Técnicamente, en la ruta CEF desde la entrada hasta la salida, tiene puntos de inserción para características (como NAT). Si existe este punto de inserción, la función funciona con CEF habilitado. Pero a diferencia de la búsqueda L3, es posible que no haya ganancias de rendimiento observables para esta función, ya que CEF simplemente está proporcionando datos para la función, no cambiando la función en sí. Pero sobre todo esto es un detalle sin importancia, un detalle importante es mantener CEF habilitado.
ytti
18

CEF es la palabra de Cisco para su FIB. Cuando en el interruptor L3 haces 'sh ip cef', ninguna de estas informaciones en realidad se utiliza para empujar los paquetes en absoluto, esto es sólo el software trie que se utiliza para rellenar el hardware ASIC.

CEF es solo el término que Cisco usa para describir su código optimizado de almacenamiento / recuperación de datos, no es una tecnología específica con una función específica.

En la mayoría de las plataformas HW no puede simplemente ejecutar el cuadro sin CEF, ya que se necesita la estructura de datos CEF para compilar la información específica de HW.
Algunas características como MPLS también dependen de la estructura de datos CEF y, por lo tanto, no funcionarán sin ella.

La conmutación LAN (L2) no se abstrae a través de CEF, por lo que no depende en absoluto de CEF.

Recomiendo este libro para obtener información bastante actualizada sobre CEF (está escrito después de una importante reescritura de CEF alrededor de 12.2S)

Si restringe la definición CEF de IP Trie FIB, obviamente eso no se puede usar para NAPT, porque no puede predeterminar qué se origina y dónde. Pero como se explicó, CEF no es una tecnología específica, es un concepto más amplio y, por lo tanto, es discutible si CEF es una función NAT o no, me equivocaría al lado de que es una función CEF:

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

Nunca ejecutaría nada sin CEF y probablemente sea solo por razones heredadas, incluso existe la opción de deshabilitarlo. Considere Juniper, no tienen un término específico que usen para describir el mismo concepto, ya que no necesitan diferenciarlo de algún método alternativo, ya que dicha alternativa inferior no existe.

ytti
fuente
55
Solo para agregar a esto: CEF está cambiando la ruta, un árbol de información para reenviar la información, etc., por lo que el nombre 'CEF' se puede usar de muchas maneras y se agrega a la confusión. En realidad, NAT es compatible con la ruta CEF (al igual que miles de otras funciones), pero las tablas creadas por CEF no contienen parte de la información necesaria para cambiar de paquete simplemente al usarlas como señaló Ytti, se deben consultar entradas adicionales (Están construidos y mantenidos por el código NAT). De todos modos, si el paquete se puede cambiar en la ruta CEF sin recurrir al proceso de conmutación, todavía es una característica compatible con CEF.
Łukasz Bromirski
9

¿Significa esto que los enrutadores de borde y los interruptores de borde L3 no usan CEF? ¿La utilidad de CEF se limita a la LAN?

CEF es útil porque permite que un enrutador reescriba rápidamente la información de Layer2 durante las operaciones de reenvío de Layer3. Los enrutadores WAN deben reescribir la información del encabezado Layer2 al igual que los conmutadores LAN ... CEF es extremadamente útil para ambos tipos de enrutadores.

En un CEF de alto nivel realiza dos funciones:

  • Contiene una instantánea de la tabla de enrutamiento, que asigna el prefijo enrutado al siguiente salto
  • Contiene una referencia a una tabla de adyacencia de capa 2, que proporciona información almacenada en caché sobre los encabezados de capa 2 necesarios para reescribir el paquete IP a través del siguiente salto de salida mencionado en la primera viñeta.

Ejemplo:

Considere este enrutador que tiene un enlace WAN HDLC en Serial1 / 0 y una conexión LAN a través de 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

Suponga que un paquete IPv4 que va a 192.0.2.1 ingresa al enrutador desde FastEthernet0 / 0 en la LAN y debe salir de Serial1 / 0 en la WAN (el hecho de que está saliendo de Serial1 / 0 se encuentra en la tabla CEF ... y el CEF la tabla hace referencia a la tabla de adyacencia).

Cuando el enrutador recibe el paquete IPv4 de FastEthernet0 / 0, el enrutador tiene que quitar el encabezado de Ethernet y anteponer el encabezado HDLC , 0F000800ya que es un destino IPv4 ( 0x0800está ahí como un valor de "tipo" HDLC para decir que el siguiente encabezado es IPv4).

Si CEF no ha almacenado en caché la información de reescritura del encabezado (trivial) para Serial1 / 0, debe buscar la información manualmente en el nivel de cambio de proceso (que es muy lento). Estos valores de la tabla de adyacencia no cambiarán mientras la encapsulación en Serial1 / 0 no cambie; por lo tanto, Cisco IOS almacena en caché la información de reescritura de adyacencia en la tabla de adyacencia.

La información de reescritura se involucra más cuando observas frame-relay o ATM PVC.

Este documento sobre CCO (Document ID: 17812) puede explicar las cosas mejor de lo que yo podría, al repetir un montón de contenido de CCO

Mike Pennington
fuente
¿Las operaciones de capa 2 no serán consultadas solo por la CAM? Las operaciones de capa 3 consultarán a la FIB, que es donde opera CEF, y si es necesario realizar una inspección más profunda de paquetes en la capa 3 (en el caso de que un paquete necesite someterse a NAT), ¿eso hará que CEF sea inútil para los enrutadores WAN?
Michael May
1
CEF específicamente no se usa para / cache / adyacencia o búsquedas l3, esto es 'cambio rápido' (que ya no es compatible). CEF está precompilado, por lo que todos los datos que pueda necesitar para la adyacencia o la búsqueda de l3 ya están en una estructura que es óptima para buscar con restricciones establecidas por la plataforma dada.
ytti
@ytti, lo siento, pero CEF guarda información de adyacencia de caché, creo que te estás confundiendo acerca de cómo se llena el caché (en mi humilde opinión, asumes que el paquete debe ser marcado para ser almacenado en caché, pero esto no es cierto) ... Uno Una de las diferencias sustanciales entre CEF y los otros métodos de conmutación (como fast-switching) es que CEF se calcula previamente. Sin embargo, CEF todavía debe almacenar en caché la información, de lo contrario, debe buscarse en el nivel de cambio de proceso ... muy lento, y la razón por la que necesitamos CEF para las interfaces LAN y WAN.
Mike Pennington
Creo que simplemente no estamos de acuerdo en lo que significa "almacenamiento en caché", pero sí, el punto clave es que está precompilado y para muchas características (como MPLS) es solo estructura para datos, no hay almacenamiento de "cambio de proceso" para retroceder a.
ytti
@ChristianDelapena, está confundiendo las implementaciones de hardware de una tabla de búsqueda de hardware (memoria CAM) con el proceso del software IOS que llena las tablas de búsqueda de hardware (es decir, CEF). Existe CEF para que pueda asignar una entrada de prefijo de capa3 a la información de reescritura de protocolo requerida en la capa2 ... sin embargo, la capa2 podría ser muchos protocolos diferentes, como frame-relay, atm, packet-over-sonet, hdlc, ppp o ethernet. .. todos estos protocolos pueden llevar IPv4, pero necesitan campos específicos rellenados en sus encabezados antes de que pueda tomar ese paquete IP y encapsularlo para que el próximo enrutador WAN lo procese
Mike Pennington