viernes, 14 de mayo de 2021

Balanceo de Carga usando Paquete (Nth Packet)

 

Balanceo de Carga usando Paquete (Nth Packet)


En el balanceo de carga usando el eNésimo paquete, cada regla tiene su propio contador. Cuando la regla recibe un paquete, el contador de la regla actual se incrementa en uno. Si el contador coincide con el valor de cada paquete será emparejado (match) y el contador se pondrá a cero.


Si el passthrough no se configura, entonces los paquetes se marcarán de la siguiente manera:

  • Primera regla nth=2,1 – En esta regla se emparejará cada primer paquete de 2, por lo tanto, el 50% del tráfico es emparejado por la regla
  • Segunda regla si el passthrough=no – Emparejará únicamente el 25% del tráfico

Ejemplos:

Es posible emparejar (hacer match) el 50% de todo el tráfico solo con una regla:

/ip firewall mangle
add action=mark-packet chain=prerouting new-packet-mark=AAA nth=2,1

Si se necesita más de una regla, entonces existen 2 formas de hacer coincidir los paquetes:

1. La primera regla ve todos los paquetes y hace coincidir (match) el 1/3 de todos. La segunda regla ve los 2/3 restantes de todos los paquetes y hace coincidir 1/2 de los mismos. La tercera regla ve y hace coincidir todos los paquetes que pasaron a través de as 2 reglas anteriores, es decir, el 1/3 de todos los paquetes (los que sobran).

RouterOS v6.38.0.01 –Balanceo de Carga

/ip firewall mangle
add action=mark-packet chain=prerouting new-packet-mark=AAA nth=3,1 passthrough=no
add action=mark-packet chain=prerouting new-packet-mark=BBB nth=2,1 passthrough=no
add action=mark-packet chain=prerouting new-packet-mark=CCC

2. Todas las reglas pueden ver todos los paquetes y cada regla hace coincidir (match) cada tercer paquete

/ip firewall mangle
add action=mark-packet chain=prerouting new-packet-mark=AAA nth=3,1 passthrough=yes;
add action=mark-packet chain=prerouting new-packet-mark=BBB nth=3,2 passthrough=yes;
add action=mark-packet chain=prerouting new-packet-mark=CCC nth=3,3 passthrough=yes;

IP Addresses

En el este ejercicio (Fig. 14-1), el router tiene 2 interfaces WAN con direcciones eth1=10.1.1.2/30 y eth2=10.20.1.2/30.

La interface LAN (ether3) tiene la dirección ether3=192.168.0.1/24

/ip address
add address=192.168.0.1/24 interface=eth3
add address=10.1.1.2/30 interface=eth1
add address=10.20.1.2/30 interface=eth2

Mangle

Todo el tráfico de los clientes cuya Dirección IP coincide con el address-list=impar se marca con las marcas de conexión y marcas de ruteo “impar". Después, el tráfico se excluye del procesamiento de sucesivas reglas de mangle en chain=prerouting

/ip firewall mangle

add chain=prerouting src-address-list=impar in-interface=eth3 action=mark-connection \
new-connection-mark=impar passthrough=yes
add chain=prerouting src-address-list=impar in-interface=eth3 action=mark-routing \
new-routing-mark=impar passthrough=no
Lo mismo sucede con los clientes cuya dirección IP coincide con el address-list=par.

/ip firewall mangle

add chain=prerouting src-address-list=par in-interface=eth3 action=mark-connection \
new-connection-mark=par passthrough=yes
add chain=prerouting src-address-list=par in-interface=eth3 action=mark-routing \
new-routing-mark=par passthrough=no


A continuación, lo que se hará es tomar cada segundo paquete que establece una nueva conexión (connection-state=new),
y se lo marcará como “impar”. Consecuentemente todos los paquetes sucesivos que pertenezcan a la misma sesión llevarán
la marca de conexión “impar”.


Nótese que: 

  • Se pasarán estos paquetes a la segunda y tercera regla (passthrough=yes)
  • La segunda regla añade la dirección IP del cliente al address-listpara habilitarlo para todas las sucesivas sesiones que pasan a través del mismo Gateway.
  •  La tercera regla establece el routing-mark=impar en todos los paquetes que pertenecen a la conexión “impar” y detiene el procesamiento de todas las otras reglas de mangle en chain=prerouting
  •  

RouterOS v6.38.0.01 –Balanceo de Carga
 


/ip firewall mangle
add chain=prerouting in-interface=eth3 connection-state=new nth=2,1 \
action=mark-connection new-connection-mark=impar passthrough=yes
add chain=prerouting in-interface=eth3 action=add-src-to-address-list \
address-list=impar address-list-timeout=1d connection-mark=impar passthrough=yes
add chain=prerouting in-interface=eth3 connection-mark=impar action=mark-routing \
new-routing-mark=impar passthrough=no


Las siguientes reglas hacen lo mismo que el grupo anterior para la mitad restante del tráfico.
El código significa que cada nueva conexión que se inicia a través del router desde la red local será marcada como “impar” o “par” con ambas reglas de marcado de conexión y de ruteo.


/ip firewall mangle
add chain=prerouting in-interface=eth3 connection-state=new nth=2,2 \
action=mark-connection new-connection-mark=par passthrough=yes
add chain=prerouting in-interface=eth3 action=add-src-to-address-list \
address-list=par address-list-timeout=1d connection-mark=par passthrough=yes
add chain=prerouting in-interface=eth3 connection-mark=par action=mark-routing \
new-routing-mark=par passthrough=no


Las reglas funcionan bien, sin embargo, hay algunas situaciones en que la misma dirección IP está listada en ambos addresslist (par e impar). Este comportamiento ocasiona problemas cuando las aplicaciones requieren conexiones persistentes.

Para solucionar este inconveniente se debe agregar la siguiente regla a las reglas de mangle. Esto asegurará que las nuevas conexiones no sean parte del src-address-list=impar. Se tendrá que hacer lo mismo para las reglas de mangle “impar” y de esta forma excluir las direcciones IP que ya son parte del src-address-list=par.

add chain=prerouting in-interface=eth3 connection-state=new nth=2,2 \
src-address-list=!impar action=mark-connection new-connection-mark=par \
passthrough=yes

NAT

Se realiza el NATeo por las interfaces de salida correspondientes

/ip firewall nat
add chain=srcnat out-interface=eth1 action=masquerade

add chain=srcnat out-interface=eth2 action=masquerade

Routing

Todo el tráfico marcado como “impar” saldrá por el Gateway 10.1.1.1, y todo el tráfico marcado como “par” saldrá por el Gateway 10.20.1.1

/ip route

add dst-address=0.0.0.0/0 gateway=10.1.1.1 scope=255 target-scope=10 routing-mark=impar
add dst-address=0.0.0.0/0 gateway=10.20.1.1 scope=255 target-scope=10 routing-mark=par
Finalmente, se agrega una entrada adicional especificando que el tráfico del propio router (tráfico que no tiene routing mark) deberá salir por el Gateway 10.20.1.1

/ip route

add dst-address=0.0.0.0/0 gateway=10.20.1.1 scope=255 target-scope=10

Todo los link están libre de publicidad.

# DESARROLLO:  ING. ROBERTH BARRERA
# CONTACTO: whatsapp = http://bit.ly/2Q1TEAq
# SOPORTE:  https://bit.ly/3jIjUwY
# LINK DE SCRIPT:  https://bit.ly/3mh3vAE
#mikrored #Mtickets #RYCDW
 

0 comentarios:

Publicar un comentario