Ya sea que quieras pasar vlans, compartir dhcp o que tus teléfonos voip estén en el mismo dominio de broadcast que la central vas a necesitar usar un tunnel L2 entre tus sucursales. No es lo más eficiente, no lo recomendaría y muchas veces tampoco lo ideal pero hay casos donde necesitas hacerlo.

Qué es EoIP?

EoIP (Ethernet over IP) es un protocolo propietario desarrollado por MikroTik, cuya primera implementación pública fue alrededor de 2002, cuando los routers con RouterOS versión 2.x ya lo soportaban.

Fue diseñado para extender redes Ethernet sobre una red IP —es decir, permite unir dos redes Ethernet remotas como si estuvieran físicamente conectadas por un cable. Esta técnica es útil para:

  • Unir VLANs entre sucursales.
  • Proveer roaming de CAPsMAN.(para otro artículo)
  • Correr protocolos que requieren capa 2 (como DHCP, PPPoE, VRRP).
  • Replicar redes físicas completas (broadcasts incluidos).

Cómo funciona EoIP?

EoIP encapsula tramas Ethernet completas dentro de paquetes IP usando el protocolo IP n° 47(bien de manual y pregunta de exámen), también conocido como GRE (Generic Routing Encapsulation), aunque EoIP no es igual a GRE.(Tiene su propia implementación del header GRE y no es compatible con otros vendors. De ahí lo «propietario».)

Encapsulado del paquete

Una trama EoIP típica está formada por:

CapaProtocoloTamaño aproximadoDescripción
Capa 3IP Header20 bytesProtocolo IP: 47 (GRE)
Capa 4EoIP Header8 bytesContiene ID del túnel y flags
Capa 2Ethernet Frame64 a 1500 bytes (o más si Jumbo)Trama Ethernet original

El overhead total mínimo de EoIP es de 28 bytes (20 IP + 8 EoIP). Este overhead debe considerarse al definir el MTU.(De vital importancia, si lo sabré).

Me ha pasado en una implementación que el tunnel funciona correctamente pero algunos equipos que salen a internet suman un MSS más grande y hay problemas con el MTU. Paso a detallar.

MTU (Maximum Transmission Unit)

  • El MTU en una interfaz EoIP es el del enlace físico menos 28 bytes del encapsulado.
    • Ejemplo: si la interfaz física tiene un MTU de 1500, el EoIP tendrá un MTU de 1472 bytes.
  • Si vas a pasar VLANs o usar PPPoE adentro del túnel, tenés que considerar también su overhead.(importantísimo)

MSS (Maximum Segment Size)

  • El MSS afecta las conexiones TCP dentro del túnel. Como EoIP baja el MTU, los paquetes TCP podrían fragmentarse si no se ajusta el MSS.
  • Recomendado: usar MSS clamping en los routers para ajustar automáticamente el tamaño máximo de segmento TCP.
    • Valor sugerido: 1412 bytes (1500 – 20 IP – 8 EoIP – 20 TCP – 40 opciones).

Fragmentación

  • Si no se ajusta el MTU/MSS correctamente, los paquetes pueden fragmentarse, afectando performance.
  • EoIP no soporta PMTUD (Path MTU Discovery) por lo que no hay ajuste automático.(De ahí la necesidad de MSS Clamping).

Cómo es el Header EoIP (estructura)?

Un paquete EoIP tiene un header con esta estructura:

CampoBytesDescripción
Version1Versión del protocolo (siempre 0x00 en RouterOS actual)
Type1Tipo de paquete (data, keepalive)
Tunnel ID2Identificador del túnel (debe coincidir en ambos extremos)
Flags4Reservado para control de flags y opciones futuras

Este header se coloca luego del encabezado IP, antes de la trama Ethernet encapsulada. Todo lo demás es práctico.

Vamos al Lab!

Planteo este escenario, 2 redes desde internet, con ips públicas(aunque en este caso no lo sean ) que establecen un enlace L2 para unirlas. El dhcp está en la bridge del R1 que tiene asignada la interfaz ether2 y posteriormente el tunnelEoIP. No hay dhcp en la sucursal de R2.

R1

/system identity
set name=R1
/interface bridge
add name=bridge1
/ip pool
add name=dhcp_pool0 ranges=192.168.10.2-192.168.10.254
/interface bridge port
add bridge=bridge1 interface=ether2
/ip address
add address=192.168.122.51/24 comment=WAN interface=ether1 network=\
    192.168.122.0
add address=192.168.10.1/24 comment=LAN interface=bridge1 network=192.168.10.0
/ip dhcp-server
add address-pool=dhcp_pool0 interface=bridge1 name=dhcp1
/ip dhcp-server network
add address=192.168.10.0/24 dns-server=8.8.8.8 gateway=192.168.10.1
/ip route
add dst-address=0.0.0.0/0 gateway=192.168.122.1

R2

/system identity
set name=R2
/interface bridge
add name=bridge1
/interface bridge port
add bridge=bridge1 interface=ether2
/ip address
add address=192.168.122.52/24 interface=ether1 network=192.168.122.0
add address=192.168.10.2/24 interface=bridge1 network=192.168.10.0
/ip route
add dst-address=0.0.0.0/0 gateway=192.168.122.1 

Esta será nuestra configuración inicial. Los puertos que conectaremos a través del tunnel EoIP serán el ether2 de ambos lados.

Dato a tener en cuenta. Si segurizamos el tunnel con IPSec, la clave deberá ser numérica, si o si. El Tunnel ID también debe ser el mismo de ambos lados y en remote Address obviamente, la ip o dns del otro equipo.

Habilitamos el Clamping mss para evitar problemas con el MTU y sus headers adicionales y si está habilitado ipsec nos pedirá que si o si deshabilitemos el FastPath. IPSec no es algo a negociar, si o si habilitado, sin esto el tunnel estará completamente desprotegido.

R2

/interface eoip
add allow-fast-path=no ipsec-secret=123456 mac-address=02:D7:64:C8:CC:E9 name=\
eoip-tunnel1 remote-address=192.168.122.51 tunnel-id=1

R1

/interface eoip
add allow-fast-path=no ipsec-secret=123456 mac-address=02:D7:64:C8:CC:E9 name=\
eoip-tunnel1 remote-address=192.168.122.52 tunnel-id=1

Y ahora en ambos routers vamos a agregar la interfaz virtual eoip-tunnel1 al bridge existente.

/interface bridge port
add bridge=bridge1 interface=eoip-tunnel1

Comprobamos si el equipo en la red de R2 obtiene ip por dhcp:

Excelente. Podemos hacer pruebas adicionales como ping o encender un teléfono ip pero ya con esto nos basta.

Dónde no recomiendo un tunnel L2?

De por si no es recomendable para unir sucursales a menos que suceda lo antes dicho.

  • NO en redes grandes (el tráfico intensivo puede ser dañino a través de enlaces limitados)
  • NO sino configuraste correctamente STP/RSTP/MSTP. (Cualquier lio de red en capa 2 afectará todas tus sucursales)
  • NO sino vas a pasar tráfico que sea dificilmente routeable. Todo lo que puedas separar por ip hacelo, no hace falta un broadcast tan grande!.

Status del tunnel.

Por Jeremías Palazzesi

Solucionador de Problemas Senior!. No podés con algo?, probá conmigo!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *