ACL (Lista de Controle de Acesso) em dispositivos de rede pode ser implementada tanto em hardware quanto em software, ou mais comumente falada como ACL baseada em hardware e em software. E se com ACL baseada em software tudo deve estar claro — trata-se de regras que são armazenadas e processadas na memória RAM (ou seja, no Control Plane), com todas as limitações decorrentes disso, então vamos compreender como as ACLs baseadas em hardware são implementadas e funcionam em nosso artigo. Usaremos como exemplo os switches da série ExtremeSwitching da Extreme Networks.

Como estamos interessados especificamente em ACLs baseadas em hardware, é crucial para nós entender a implementação interna do Data Plane, ou dos chipsets utilizados (ASIC). Os switches de todas as linhas da Extreme Networks são construídos com ASICs da Broadcom, e, portanto, a maior parte das informações a seguir também será válida para outros switches disponíveis no mercado, que utilizam ASICs semelhantes.
Como pode ser visto na figura acima, os motores de ACL no chipset são gerenciados pelo 'Content-Aware Engine', separadamente no 'ingress' e no 'egress'. Arquitetonicamente, eles são iguais, apenas o 'egress' é menos escalável e menos funcional. Fisicamente, ambos os 'Content-Aware Engines' são memória TCAM mais a lógica associada, e cada regra de ACL, seja do usuário ou do sistema, é uma simples máscara de bits (bit-mask) gravada nessa memória. É por isso que o processamento de tráfego pelo chipset é feito pacote a pacote, sem degradação de desempenho.
Fisicamente, a mesma TCAM de Ingress/Egress é logicamente dividida em vários segmentos (dependendo da quantidade de memória e da plataforma), chamados de 'ACL slices'. Por exemplo, isso é semelhante ao que acontece em um único HDD no seu laptop, quando você cria várias unidades lógicas — C:>, D:>. Cada ACL slice consiste em células de memória, na forma de 'linhas' onde as 'rules' (regras/máscaras de bits) são gravadas.

A divisão da TCAM em ACL slices possui uma lógica específica por trás dela. Em cada ACL slice separado, podem ser gravadas apenas 'rules' compatíveis entre si. Se alguma das 'rules' não for compatível com a anterior, ela será gravada na próxima ACL slice, independentemente de quantas linhas livres para 'rules' ainda restam na anterior.
De onde surge, então, essa compatibilidade ou incompatibilidade das regras ACL? A questão é que uma "linha" TCAM, onde as "regras" são gravadas, tem um comprimento de 232 bits e é dividida em vários campos - Fixed, Field1, Field2, Field3. 232 bits ou 29 bytes de memória TCAM são mais do que suficientes para gravar uma máscara de bits de um determinado endereço MAC ou IP, mas muito menos do que o cabeçalho completo de um pacote Ethernet. Em cada slice ACL, o ASIC realiza uma pesquisa independente com base nas máscaras de bits estabelecidas em F1-F3. De modo geral, essa pesquisa pode ser realizada nos primeiros 128 bytes do cabeçalho Ethernet. Na verdade, é devido ao fato de que a pesquisa pode ser feita em 128 bytes, enquanto pode ser gravado apenas 29 bytes, que, para uma pesquisa correta, deve ser definido um deslocamento (offset) relativo ao início do pacote. O deslocamento para cada slice ACL é definido no momento em que a primeira regra é gravada, e se ao gravar a regra subsequente for encontrada a necessidade de um outro deslocamento, essa regra é considerada incompatível com a primeira e gravada no próximo slice ACL.
A tabela abaixo apresenta a ordem de compatibilidade das condições escritas na ACL. Cada linha contém as compatibilidades entre si e as incompatibilidades com outras linhas que formam a máscara de bits.

Cada pacote individual processado pelo ASIC inicia uma pesquisa paralela em cada slice ACL. A verificação é realizada até a primeira correspondência no slice ACL, mas múltiplas correspondências para o mesmo pacote em diferentes slices ACL são permitidas. Cada "regra" individual tem uma ação correspondente que deve ser realizada em caso de correspondência da condição (máscara de bits). Se a correspondência ocorrer em vários slices ACL, a resolução de conflito de ação é baseada na prioridade do slice ACL, decidindo qual ação executar. Se a ACL definir tanto a "ação" (permitir/negá-la), quanto o "modificador de ação" (contar/QoS/log/...), em caso de múltiplas correspondências, será executada apenas a "ação" de maior prioridade, enquanto todos os "modificadores de ação" serão executados.

com informações mais detalhadas sobre o funcionamento da ACL disponíveis no site . Quaisquer dúvidas surgidas ou remanescentes podem ser sempre direcionadas aos funcionários do nosso escritório – .
Fonte: habr.com
