Operações CEF no switch L3 vs roteador

21

Entendo que os switches L3 usam o CEF para encaminhamento de pacotes mais rápido. No entanto, o CEF não funcionará para pacotes que precisam passar pelo NAT. Isso significa que o CEF não é usado por roteadores de borda e switches L3 de borda? A utilidade do CEF é limitada à LAN?

Michael May
fonte

Respostas:

8

Naturalmente, o NAT pode usar o CEF. Este é do guia da Cisco aqui: 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

As plataformas maiores que executam o IOS-XR, onde o FIB é distribuído nas placas de linha, também suportam NAT de classe de operadora, portanto, sua utilidade não se limita apenas à LAN.

Também muitos comutadores L3 da Cisco simplesmente não executam NAT

maduro
fonte
2
Tecnicamente, no caminho CEF do ingresso ao egresso, você tem pontos de inserção de recursos (como NAT). Se esse ponto de inserção existir, o recurso funcionará com o CEF ativado. Mas, diferentemente da pesquisa L3, pode não haver ganhos de desempenho observáveis ​​para esse recurso, pois o CEF está simplesmente fornecendo dados para o recurso, não alterando o próprio recurso. Mas, principalmente, esses são detalhes sem importância, os detalhes importantes são: mantenha o CEF ativado.
ytti
18

CEF é a palavra da Cisco para seu FIB. Quando switch L3 você faz 'sh ip cef', nenhuma dessas informações é realmente usado para empurrar os pacotes em tudo, este é apenas software trie que é usado para preencher o hardware ASIC.

CEF é apenas um termo usado pela Cisco para descrever seu código otimizado de armazenamento / recuperação de dados; não é uma tecnologia específica com função específica.

Na maioria das plataformas de HW, você não pode simplesmente executar a caixa sem o CEF, pois a estrutura de dados do CEF é necessária para compilar as informações específicas do HW.
Alguns recursos, como o MPLS, também dependem da estrutura de dados do CEF e, portanto, não funcionam sem ela.

A comutação LAN (L2) não é abstraída via CEF, portanto, não depende absolutamente de CEF.

Eu recomendo este livro para obter informações bastante atualizadas sobre o CEF (ele foi escrito após uma grande reescrita do CEF por volta de 12.2S)

Se você restringir a definição CEF de IP Trie FIB, obviamente isso não pode ser usado para o NAPT, porque você não pode pré-determinar o que é natted e onde. Mas, como explicado, o CEF não é uma tecnologia específica, é um conceito mais amplo e, portanto, é discutível se o CEF é um recurso NAT ou não, eu erraria ao lado de ser um recurso do CEF:

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

Eu nunca executaria nada sem o CEF e provavelmente é apenas por motivos legados, a opção de desativá-lo ainda existe. Considere Juniper, eles não têm um termo específico que usam para descrever o mesmo conceito, pois não precisam diferenciá-lo de algum método alternativo, pois essa alternativa inferior não existe.

ytti
fonte
5
Apenas para adicionar isso - o CEF está alternando o caminho, uma árvore de informações para encaminhar as informações e assim por diante, de modo que o nome 'CEF' pode ser usado de várias maneiras e aumenta a confusão. Na verdade, o NAT é suportado no caminho CEF (assim como milhares de outras funções), mas as tabelas criadas pelo CEF não contêm algumas das informações necessárias para alternar pacotes puramente usando-as como ytti apontou, entradas adicionais precisam ser consultadas (eles são criados e mantidos pelo código NAT). De qualquer forma, se o pacote puder ser alternado no caminho CEF sem retornar ao comutador de processos, ele ainda será um recurso suportado pelo CEF.
Łukasz Bromirski
9

Isso significa que o CEF não é usado por roteadores de borda e switches L3 de borda? A utilidade do CEF é limitada à LAN?

O CEF é útil porque permite que um roteador reescreva rapidamente as informações da Camada2 durante as operações de encaminhamento da Camada3. Os roteadores WAN devem reescrever as informações do cabeçalho da Camada 2, exatamente como os switches LAN ... O CEF é extremamente útil para os dois tipos de roteador.

Em um nível alto, o CEF executa duas funções:

  • Contém uma cópia de sombra da tabela de roteamento, que mapeia o prefixo roteado para um salto seguinte
  • Contém uma referência a uma tabela de adjacência da Camada2, que fornece informações em cache sobre os cabeçalhos da Camada2 necessários para reescrever o pacote IP através do próximo salto de saída mencionado no primeiro marcador.

Exemplo:

Considere este roteador que possui um link WAN HDLC em Serial1 / 0 e uma conexão LAN via 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

Suponha que um pacote IPv4 que vá para 192.0.2.1 entre no roteador do FastEthernet0 / 0 na LAN e precise sair do Serial1 / 0 na WAN (o fato de estar saindo do Serial1 / 0 é encontrado na tabela CEF ... e no CEF A tabela faz referência à tabela de adjacência).

Quando o roteador recebe o pacote IPv4 do FastEthernet0 / 0, o roteador precisa retirar o cabeçalho ethernet e preceder o cabeçalho HDLC , 0F000800já que é um destino IPv4 ( 0x0800existe um valor "tipo" do HDLC para dizer que o próximo cabeçalho é IPv4).

Se o CEF não tiver armazenado em cache as informações de reescrita de cabeçalho (trivial) do Serial1 / 0, ele deverá procurar as informações manualmente no nível da chave de processo (que é muito lenta). Esses valores da tabela de adjacência não serão alterados enquanto o encapsulamento no Serial1 / 0 não for alterado; portanto, o Cisco IOS armazena em cache as informações de reescrita de adjacência na tabela de adjacência.

As informações de reescrita ficam mais envolvidas quando você olha para o PVC de frame-relay ou ATM.

Este documento no CCO (ID do documento: 17812) pode explicar as coisas melhor do que eu, analisando muito conteúdo do CCO

Mike Pennington
fonte
As operações da camada 2 não serão consultadas apenas pelo CAM? As operações da camada 3 consultarão o FIB, onde é onde o CEF opera e, se for necessário uma inspeção mais profunda dos pacotes na camada 3 (no caso de um pacote precisar passar por NAT), isso não tornará o CEF inútil para roteadores WAN?
22613 Michael May
1
O CEF especificamente não é usado para / cache / adjacência ou pesquisas l3, isso é 'troca rápida' (que não é mais suportada). O CEF é pré-compilado, portanto todos os dados que você pode precisar para adjacência ou pesquisa l3 já estão na estrutura ideal para pesquisar com restrições definidas por determinada plataforma.
ytti
@ytti, desculpe, mas o CEF faz cache de informações de adjacência, acho que você está ficando confuso sobre como o cache é preenchido (IMHO, você assume que o pacote deve ser acionado para ser armazenado em cache, mas isso não é verdade) ... Uma das diferenças substanciais entre o CEF e os outros métodos de comutação (como fast-switching) é que o CEF é pré-calculado. No entanto, o CEF ainda deve armazenar em cache as informações, caso contrário, ele deve ser pesquisado no nível da chave de processo ... muito lento, e o motivo pelo qual precisamos do CEF para as interfaces LAN e WAN.
Mike Pennington
Acho que simplesmente discordamos sobre o que significa 'cache', mas sim, o ponto principal é que ele é pré-compilado e, para muitos recursos (como MPLS), é apenas estrutura para dados, não há armazenamento de 'comutação de processo' para voltar atrás para.
usar o seguinte comando
@ChristianDelapena, você está confundindo as implementações de hardware de uma tabela de pesquisa de hardware (memória CAM) com o processo do software IOS que preenche as tabelas de pesquisa de hardware (ou seja, CEF). O CEF existe para que você possa mapear uma entrada de prefixo da camada3 para as informações de reescrita de protocolo necessárias na camada2 ... no entanto, a camada2 pode ter muitos protocolos diferentes, como frame-relay, atm, pacote-sobre-soneto, hdlc, ppp ou ethernet. .. todos esses protocolos pode transportar IPv4, mas eles precisam de campos específicos preenchidos em seus cabeçalhos antes de poder tomar esse pacote IP e compactá-lo para a próxima router WAN para processo
Mike Pennington