Onde está armazenada a tabela de adjacência do Cisco Hardware dCEF?

8

Para o Cisco Hardware dCEF, com base em alguns documentos publicados no site da Cisco, na placa / interface de entrada, conceitualmente pesquisa o FIB com o endereço IP dst e obtém um ponteiro para uma entrada da tabela de adjacência, onde as informações de reescrita L2 são armazenadas, por exemplo, nexthop mac, etc.

Mas o que me confunde é que a reescrita L2 não acontece na placa de linha de saída / interface? Em caso afirmativo, por que essa tabela de adjacência é armazenada na entrada? Ou onde a tabela de adjacência está acontecendo? entrada ou saída? Se houver entrada, as informações de reescrita L2 são transferidas da placa de entrada para a placa de linha de saída? Isso não seria um desperdício de largura de banda de tecido?

wei
fonte
11
Pense em: como um pacote pode ser encaminhado para a interface de saída se a interface de ingresso não tiver nenhuma adjacência?
21714 Ricky Beam #:
Bem, você não precisa armazenar a tabela de adjacência who, pode armazenar algum tipo de id de ajacency; em seguida, ao sair, você pode usar esse id de adjacência para procurar a tabela de adjacência e obter as informações de reescrita L2. De fato, se essa tabela de adjacência estiver armazenada no ASIC de entrada, você precisará armazenar as informações de adjacência de todas as placas de linha de saída na placa de linha de entrada, isso não seria um grande desperdício de memória?
wei

Respostas:

9

Mas o que me confunde é que a reescrita L2 não acontece na placa de linha de saída / interface?

Na verdade, a decisão de avançar / descartar, a pesquisa de adjacência L2, o decréscimo de TTL, o cálculo da soma de verificação de IP, etc ... tudo acontece na placa de linha de entrada .

Conceitualmente, é possível dividir o fluxo de informações em um plano de controle e um plano de dados, mesmo dentro do chassi do roteador. Parece que a maior parte da sua confusão gira em torno de como o avião de controle funciona ... este é um diagrama rápido que eu cortei para ilustrar ...

IPC e CEF

  • O Processador de rota cria a tabela CEF a partir de informações de adjacência da camada 2 (incluindo ethernet, ppp, sonet, etc ...), bem como todas as rotas preferidas
  • As informações completas da tabela CEF e da adjacência são compactadas em mensagens IPC, enviadas entre o Processador de rota e todas as placas de linha. Entradas CEF individuais são renderizadas como XDRs na mensagem IPC. Um XDR é apenas uma maneira específica da Cisco de gravar entradas CEF em uma mensagem IPC.
  • As placas de linha individuais descompactam os XDRs das mensagens IPC e constroem (o que deveria ser) uma cópia exata da tabela CEF e adjacência do Processador de Rota na placa de linha.
  • Após a placa de linha concluir as revisões nas tabelas CEF e adjacência, um processo específico da plataforma é executado na placa de linha para calcular as estruturas de dados necessárias para o hardware da plataforma encaminhar e reescrever pacotes na própria placa de linha.

O IPC sincronizado é bastante crítico para a operação do dCEF; se você não mantiver as mensagens sincronizadas entre todas as placas de linha, poderá terminar com inconsistências de prefixo .

A mecânica de como o roteador faz isso é específica da plataforma; portanto, irei referenciar a plataforma que melhor conheço, que é o Catalyst 6500 com Supervisor720 / Supervisor2T. O mecanismo de encaminhamento e reescrita em uma placa de linha Catalyst 6500 dCEF é na verdade uma cópia em miniatura do próprio Supervisor; portanto, todo o processo de encaminhamento e comutação de IP é executado exatamente como se o pacote fosse encaminhado centralmente no supervisor. A placa de linha dCEF de entrada procura as informações necessárias na tabela CAM / CEF e cria um cabeçalho anexado ao pacote.

A placa de linha de saída olha para o cabeçalho e usa as informações de adjacência dentro dele para gravar o pacote na conexão.

Por que essa tabela de adjacência é armazenada na entrada?

Assim, você pode tomar toda a decisão de encaminhamento sobre entrada.

Se houver entrada, as informações de reescrita L2 são transferidas da placa de entrada para a placa de linha de saída?

sim

Isso não seria um desperdício de largura de banda de tecido?

Eu acho que não, mas, novamente, eu poderia ser tendencioso :-)

Mike Pennington
fonte
Muito obrigado pela resposta detalhada! Estou basicamente assumindo que fib de cartão de linha está sincronizado com rp. Minha confusão é, na verdade, em torno do plano de dados, porque eu sei que alguns produtos que não são da Cisco estão fazendo pesquisa de tabela de adjacência na saída, então estou tentando descobrir se a Cisco realmente escolhe fazer isso na entrada e por que, para mim, isso desperdiça memória e largura de banda do tecido.
wei
O desperdício é subjetivo. Você precisa fazer a pesquisa em algum lugar; pode-se argumentar que fazer uma pesquisa no egresso desperdiça recursos e torna o produto mais caro. O debate poderia continuar por muito tempo jogando pedras nos vários ângulos do objeto de sua aversão. Conclusão: a Cisco escolhe gastar uma quantidade modesta de memória na placa de linha de entrada, e as informações de adjacência não são enviadas pela malha no Catalyst6500; os resultados da adjacência são enviados para a placa de linha de saída por meio de um RBUS dedicado.
Mike Pennington
Para mais leitura sobre o RBUS: papel Sup720 Arquitetura
Mike Pennington
3

Quando o Cisco Express Forwarding distribuído é ativado, as placas de linha, como as placas de linha VIP ou as placas de linha do Cisco 12000 Series Internet Router, mantêm uma cópia idêntica das tabelas FIB e adjacência. As placas de linha realizam o encaminhamento expresso entre os adaptadores de porta, aliviando o RP do envolvimento na operação de comutação. O Cisco Express Forwarding distribuído usa um mecanismo de comunicação entre processos (IPC) para garantir a sincronização de tabelas FIB e tabelas de adjacência no RP e nas placas de linha. - Cisco

O RP (executando vários processos do protocolo de roteamento) constrói o FIB e o publica em todas as placas de linha. Há um FIB, mas é replicado em todas as placas de linha. (sim, às vezes eles ficam fora de sincronia.)

Ricky Beam
fonte
Sim, essa parte eu entendo. A parte em que estou confuso é que todos os documentos publicados pela Cisco parecem sugerir que as informações de reescrita de L2 são procuradas na entrada, o que não faz muito sentido para mim.
wei 12/06