El IOS de Cisco implementa una lógica interna en las ACL estándar. Como se mencionó anteriormente, una parte de esta lógica evita que las instrucciones de host se configuren después de una instrucción de rango si el host es parte de ese rango, como se muestra en la figura 1.
Otra parte de la lógica interna del IOS es responsable de la secuenciación interna de las ACE estándar. En la figura 2, se muestra la configuración de una lista de acceso estándar. Las instrucciones de rango que deniegan tres redes se configuran primero, y después se configuran cinco instrucciones de host. Las instrucciones de host son todas instrucciones válidas, porque sus direcciones IP host no forman parte de las instrucciones de rango introducidas previamente.
El comando show running-config se utiliza para verificar la configuración de la ACL. Observe que las instrucciones se enumeran en un orden distinto al orden en que se introdujeron. Utilizaremos el comando show access-lists para comprender la lógica detrás de esto.
Como se muestra en la figura 3, el comando show access-lists muestra las ACE junto con sus números de secuencia. Sería de esperar que el orden de las instrucciones en el resultado reflejara el orden en que se introdujeron. Sin embargo, el resultado de show access-lists muestra que este no es el caso.
El orden en que se enumeran las ACE estándar es la secuencia utilizada por el IOS para procesar la lista. Observe que las instrucciones se agrupan en dos secciones: las instrucciones de host seguidas por las instrucciones de rango. El número de secuencia indica el orden en que se introdujo la instrucción, no el orden en que se procesará.
Las instrucciones de host se enumeran primero, pero no necesariamente en el orden en que se introdujeron. El IOS ordena las instrucciones de host mediante una función de hash especial. El orden resultante optimiza la búsqueda de una entrada de ACL de host.
Las instrucciones de rango se muestran después de las instrucciones de host. Estas instrucciones se enumeran en el orden en que se introdujeron.
Recuerde que las ACL estándar y numeradas se pueden editar con números de secuencia. El número de secuencia que se muestra en el resultado del comando show access-lists es el número utilizado para eliminar las instrucciones individuales de la lista. Cuando se introduce una nueva instrucción de ACL, el número de secuencia solo afecta a la ubicación de una instrucción de rango en la lista. Las instrucciones de host siempre se ordenan con la función de hash.
Siguiendo con el ejemplo, una vez que se guarda la configuración en ejecución, el router se vuelve a cargar (se reinicia). Como se muestra en la figura 3, el comando show access-lists muestra la ACL en el mismo orden, sin embargo, las instrucciones se volvieron a numerar. Los números de secuencia ahora están en orden numérico.
Nota: la función de hash se aplica solamente a las instrucciones de host en listas de acceso de IPv4 estándar. El algoritmo no se utiliza para las ACL de IPv4 extendidas ni las ACL de IPv6. Esto se debe a que las ACL extendidas e IPv6 filtran más de una sola dirección de origen. Los detalles de la función de hash exceden el ámbito de este curso.