Análisis de la detección de la dirección MAC destino

Fecha: marzo del 2020

 

Escenario

 

Cuando estudiamos CCNA, aprendemos la operación AND para determinar la red a la

que pertenece una dirección IP y también aprendemos que cuando una placa de red

recibe una trama ethernet, analiza los primeros 48 bits que pertenecen a la dirección

de destino, si esta coincide con su propia dirección MAC, la trama es aceptada, si no

coincide, la trama es descartada, pero que operación lógica ejecuta ?

 

Este laboratorio analiza la lógica necesaria para tomar esta decisión, no es una disección

de una placa de red real, aqui representamos el proceso de forma sencilla para poder

entender mas que nada la lógica de Boole implicada.

 

 

Fuente: Lund University

 

 

La dirección MAC está compuesta por dos partes de 24 bits cada una, en los 24 bits

superiores (la izquierda de la dirección) es el OUI o fabricante, y los 24 bits del orden

inferior (la mitad derecha) es el número de serie de la placa.

 

Resultado de imagen de MAC address memory space

 

Esto en principio era un número “quemado” en ROM, pero actualmente es modificable

o “flasheable”, e incluso pued ser alterado por ejemplo mediante aplicaciones para

realizar spoofing, ataques de layer 2, etc.

 

Esquema sencillo de 4 bits

 

Comparamos C0 con B0, C1 con B1, etc y cada resultado dará un 0 o un 1, que luego

una compuerta AND dependiendo de las entradas 0 o 1, determinará el resultado

final: 0 o 1 (coincide o no coincide).

 

Tabla XNOR             Tabla AND

0 y 0 = 1 ___            0 y 0 =0

0 y 1 = 0         |          0 y 1= 0

1 y 0 = 0         |          1 y 0= 0  

1 y 1 = 1 ____|___  1 y 1= 1  = la trama coincide y será procesada

 

Esquema con los 48 bits de una MAC address:

 

Ejemplo con la MAC address 00:1B:38:7E:F1:71 contra la MAC address 00:1B:38:7E:F1:71 siendo

el resultado final 1 (coincide). Podemos ver también que la operación AND final se compone

de la salida de 3 bloques que comprenden 16 bits cada uno (16 x 3=48), mas adelante veremos

el motivo.

 

 

Ejemplo con la MAC address 00:1B:38:7E:F1:71 contra  00:1B:38:7E:F1:61, al ser diferentes, la

comparación XNOR devuelve un 0 y por lo tanto todas las AND devolverán 0, determinando

que la dirección no es la propia y la trama ethernet deberá descartarse.

 

 

Esquema analizando 16 bits por vez (en 3 rondas en total):

 

Tratándose de un sistema con chipsets y memorias de 16 bits, las placas de red necesitan

al menos 3 rondas para comparar los 48 bits de una dirección MAC.

 

Esta tarea no la realiza la CPU principal del equipo sino en un procesador aparte incluído en

la placa de red, la operación de comparación se ejecuta en software (firmware) y no con

compuertas lógicas, utilizando memoria y buffers incluídos también en la placa de red.

 

El procedimiento es leer un valor en la memoria donde se encuentra la trama recibida, los

primeros 16 bits, cargarlos en un registro, compararlo con el patrón determinado por la MAC

de la placa de red y cargar un registro (no encontré documentación pero lo llamaremos A),

luego repetir la operación para los siguientes 16 bits y para los últimos 16 bits. Luego se

realiza una operación AND con los tres registros A, B y C, si estos son 1 el resultado será 1

por lo tanto la MAC comparada es igual a la MAC de la placa de red.

Entonces, la trama ethernet pasa a la memoria principal de equipo mediente el canal DMA.

 

 

 

Modo promiscuo de una placa de red:

 

La placa de red puede omitir la comparación antes analizada cuando trabaja en modo

promíscuo, esto es mediante de un driver que anula dicha función y nos sirve para

realizar capturas de trafico por ejemplo con Wireshark o TCPDump, y analizar todo

el tráfico que llega a la placa.

 

 

Tráfico multicast:

 

La placa de red puede configurarse para recibir tráfico multicast, y esta deberá

aceptar direcciones MAC que comiencen con 01005E siendo estos los primeros

24 bits y los siguientes 24 bits dependerán de la dirección multicast que utilice

la aplicación.

La aceptación de direcciones multicast por parte de la placa de red es compleja

y tiene cierta problemática binaria que no cubriremos en este laboratorio.

 

Resultado de imagen de multicast MAC address

Fuente: TCP Guide

 

 

Tráfico broadcast:

 

Todo el tráfico broadcast recibido será admitido y procesado, descartándose o

procesándose en las capas superiores, esto ya  es función del sistema operativo.

 

 

(2020) Low level for lonely people

Rosario, Argentina