¿Hay alguna razón particular por la cual los conmutadores Ethernet no cambian la dirección MAC de un paquete?
¿Es para la identificación del host final utilizando la dirección MAC, o cualquier otra cosa?
¿Hay alguna razón particular por la cual los conmutadores Ethernet no cambian la dirección MAC de un paquete?
¿Es para la identificación del host final utilizando la dirección MAC, o cualquier otra cosa?
Respuestas:
Si un conmutador cambiara las direcciones MAC, esto rompería la red por completo.
La dirección MAC es un identificador único que utilizan los hosts en la red local.
Si el conmutador cambiara el MAC de destino, la trama no se entregaría al host apropiado. En los casos en que lo haría, por ejemplo, si el marco se inunda, el host de destino lo descartará porque ya no estará destinado para el host.
Si el conmutador cambiara la dirección MAC de origen, el host de destino usaría esta dirección MAC para cualquier respuesta (incluida la actualización de cualquier entrada ARP con datos incorrectos). Esto daría como resultado la misma situación que ya describí, solo para todo el tráfico de retorno.
Esto podría crear problemas con cosas como 802.1X y otros mecanismos que usan la dirección MAC para identificar / clasificar el dispositivo.
¿Se podrían desarrollar mecanismos para hacer esto? Estoy seguro de que podrían hacerlo. Pero no hay ninguna razón para hacerlo en este momento y esto solo complicaría las redes y agregaría un procesamiento innecesario. No estamos cerca de agotar el conjunto de direcciones MAC disponibles, por lo que no hay necesidad de algo como MAT (no sé si el concepto de traducción de direcciones MAC existe en algún lugar, ¿tal vez acabo de acuñar un término?).
La reescritura de direcciones de datagramas ocurre en la capa 3, por ejemplo, cuando las puertas de enlace (enrutador o firewall) que ejecutan NAT reescribe las direcciones IP de los hosts en la red interna para que todas aparezcan desde una (o algunas) direcciones IP externas en la puerta de enlace.
La razón de que algo similar no suceda en el nivel de capa 2 (donde usamos direcciones MAC para distinguir hosts y conmutadores que hacen el movimiento de datagramas, es decir, marcos) es como se dijo en los comentarios anteriores que realmente no es necesario.
En el caso de la capa tres con NAT, NAT resuelve una serie de problemas:
Entonces, si nos atenemos al ejemplo de NAT, realmente no hay necesidad de una contraparte de NAT de la capa dos.
Espero que esto arroje algo de luz sobre por qué los conmutadores no reescriben las direcciones MAC. El único caso de capa 3 que se me ocurrió desde la parte superior de mi cabeza fue NAT, otros ciertamente pueden proporcionar ejemplos de otros casos de capa 3 en los que se justifica la reescritura de IP (y por qué esas tecnologías realmente no tienen sentido en el nivel de capa 2) .
Reescribir la dirección MAC agregaría una complejidad considerable (el conmutador debería conocer protocolos de nivel superior como arp para poder reescribir la resolución de direcciones), dificultaría la resolución de problemas, evitaría que protocolos como STP funcionen y, en general, sería un PITA. Tampoco se necesita normalmente.
Lo que no quiere decir que no sea posible. ebtables (la contraparte de la capa 2 de iptables) tiene algunas opciones para la traducción de direcciones MAC. Esto puede ser útil si tiene conmutadores que no usan tablas MAC por vlan y desea realizar un filtrado de capa 2.