Cómo equilibrar la carga de conexiones múltiples de Internet linitx blog ethereum tabla de crecimiento

Un pedido frecuente que recibimos es cómo utilizar un enrutador mikrotik para obtener más ancho de banda al “unir” múltiples fuentes de Internet. Hay varios métodos diferentes, sin embargo, es un buen momento para aclarar que el término “enlace de línea” no es lo mismo que “equilibrio de carga”. Con la vinculación de líneas, en realidad estamos enviando cada paquete en forma de “round robin” hasta varias líneas y al final del ISP se unen nuevamente en un solo circuito. Este es un servicio que solo puede llevarse a cabo en un centro de datos o ISP y todas las líneas deben estar conectadas a una interfaz común que comparta la misma dirección IP. Cualquier dirección IP pública utilizada en el sitio remoto debe ser enrutable a través de cualquiera de las múltiples líneas. No es tan fácil cuando todas las nuevas líneas de música etíope 2018 son posiblemente de proveedores de servicios completamente diferentes.

Por lo tanto, algunos servicios de “enlace de líneas” proporcionados por una tercera parte realmente utilizan vpns para transportar los datos desde el sitio remoto del cliente, que luego terminan en un punto final de VPN común en su centro de datos. El tráfico se “une de nuevo” mediante la conexión de esos vpns y, a medida que el tráfico del sitio remoto deja al enrutador del proveedor en el centro de datos con una única dirección IP común, se garantiza el acceso a Internet. Sin embargo, esto depende de que todos los múltiples proveedores de líneas independientes tengan una latencia casi igual, ya que la falla más grande con este enfoque es “paquetes fuera de orden”. TCP puede hacer frente a una cierta cantidad de paquetes desordenados que llegan, sin embargo, los servicios que operan etherian sobre UDP (e.G. SIP VOIP) no funcionan bien cuando los paquetes llegan desordenados. Por lo tanto, si una línea es más lenta que otra, los paquetes pueden llegar desordenados al centro de datos y en la dirección opuesta, los paquetes enviados desde el proveedor de servicios al cliente a través de las líneas VPN podrían llegar desordenados.

El balanceo de carga usa una idea completamente diferente. En lugar de ‘agregar’ todas las líneas juntas y tener todos los paquetes de cualquier conexión de datos subiendo / bajando las líneas en proporciones iguales, a la manera de turnos, dividimos el tráfico en conexiones diferentes y empujamos todos los paquetes de cualquiera Conexión hasta una sola línea. Cualquier nueva conexión subirá lo que parece ser una línea elegida al azar. Por lo tanto, con el tiempo y con un número suficientemente alto de conexiones, todo el tráfico equilibrará aproximadamente todo el tráfico en todas las líneas. Ahora puede ser que una conexión tenga una cantidad de ancho de banda de tráfico mucho mayor que otra y, por lo tanto, la cantidad de tráfico en las múltiples líneas no se distribuirá por igual entre ellas. Sin embargo, seguiremos distribuyendo la “carga de conexión” a través de todas las líneas, de modo que con suficientes conexiones de una base de usuarios suficientemente grande, en promedio, la carga de tráfico se distribuye de manera muy equitativa entre las múltiples líneas. La gran ventaja de utilizar este método para dividir las conexiones a través de múltiples líneas es que no necesitamos asegurarnos de que todas las líneas sean de aerolíneas etíopes facturen el equipaje del mismo proveedor, ni debemos preocuparnos por la variación de la latencia entre líneas. ¿Entonces cómo podemos hacer esto?

Un sistema que se usa a menudo con los sistemas basados ​​en Linux es ECMP (ruta múltiple de igual costo). Al agregar una puerta de enlace predeterminada a TODAS las líneas múltiples, todas con el mismo costo, las conexiones se distribuirán de manera uniforme entre las múltiples líneas. Parece fácil y de hecho esto parece funcionar. Sin embargo, se ha documentado bien que cada 10 minutos el núcleo de Linux, que es donde reside el motor de enrutamiento, descompone todas las conexiones activamente subiendo una ruta elegida y puede volver a conectar el tráfico en una ruta completamente diferente, cambiando así la dirección de origen si está utilizando NAT. A muchos servidores HTTPS no les gusta eso y pueden quejarse al usuario final de que se haya desconectado debido a un problema de seguridad. ¡No está bien!

Por lo tanto, MikroTik diseñó un nuevo método llamado PCC (por clasificador de conexión) para solucionar este problema que nos permite manipular paquetes y organizarlos para que utilicen diferentes tablas de enrutamiento, una por línea. De esta manera podemos decir tres líneas, con tres rutas predeterminadas, pero las reglas de manipulación de PCC que crearemos obligarán a cada una de las conexiones a utilizar las diferentes tablas de enrutamiento. No se rompen las conexiones. Por lo tanto, mucho más confiable. Bien, vamos a mostrarte cómo hacer esto con algún código …

Lo primero que se debe tener en cuenta es que, de manera predeterminada, las interfaces del puente se diseñaron para unir de manera transparente el tráfico de la capa 2 y, por lo tanto, es lógico que el tráfico que pasa entre los puertos del puente y el puente no necesite normalmente procesarse. reglas de firewall. Para forzar que el tráfico de capa 2 en un puente sea procesado por las reglas de firewall de capa 3, debemos habilitarlo explícitamente.

Debemos asegurarnos de que cualquier tráfico que vaya a nuestras interfaces LAN locales e internas en el enrutador omita todas las reglas de “balanceo de líneas”. Este es el tráfico que está destinado a la red interna y no se requerirá que lo manipulen las reglas para dividir las conexiones en las múltiples líneas de backhaul. Por lo tanto, debemos asegurarnos de que inicialmente establecemos una regla de Ethernet Shield 2 para que todo el tráfico interno omita las reglas de Mangle que siguen a continuación. Hacemos esto con una acción de “aceptar”. Asumiendo que todo el tráfico interno está en 192.168.88.0/24 y todas las interfaces internas están en el puente predeterminado ‘puente-local’ usaríamos esto:

El comando CLI anterior se encuentra en la cadena de “enrutamiento previo” y, por lo tanto, se procesa antes de que se lleven a cabo las decisiones de enrutamiento y, por lo tanto, capturará el tráfico al enrutador y el tráfico que reenvíe el enrutador a otra parte. La regla anterior prueba todo el tráfico destinado a la red interna local (192.168.88.0/24) que entra en la interfaz LAN local (en interfaz = local de puente). Esto solo puede ser el tráfico local de L2 que ingresa a la interfaz del enrutador. Como esta es una interfaz de puente, puede ser tráfico destinado a uno de los otros puertos en el puente y, por lo tanto, no debe ser procesado por las siguientes reglas. Por lo tanto, tiene una acción de “aceptar”. De esta manera, la regla “acciones”, pero en realidad no hace nada más que detener cualquier procesamiento adicional de esos tipos de paquetes. Esto se debe a que cuando se acciona una regla de manipulación, no se procesan las reglas adicionales y más bajas. La única excepción es que para ciertos tipos de acciones, el valor “passthrough” se puede habilitar, lo que permitirá que se procesen otras reglas.

Para cada una de las interfaces WAN públicas, el tráfico de la calculadora de etherscan de respuesta para cualquier conexión que se realice directamente desde la WAN pública siempre debe salir de la misma forma en que entró. Este podría ser el tráfico, como Winbox o SSH, en las WIP públicas. No deseamos que el tráfico de respuesta sea potencialmente enviado desde una interfaz completamente diferente a la que se produjo solo debido a nuestras inteligentes reglas de control de PCC. Dado que el tráfico que ingresa al enrutador pasará por la cadena de ‘entrada’ y el tráfico que sale del enrutador pasará por la cadena de ‘salida’, ahora utilizamos dos conjuntos de reglas, una en la cadena de entrada, una en la cadena de salida para cada Interfaz pública con la que estamos balanceando la carga. En este ejemplo, demostraremos el equilibrio de carga en dos líneas.

Primero debemos destruir las conexiones y luego marcar con marcas de enrutamiento. (Esto se debe a que no estamos obligados a destrozar paquetes individuales, sino a toda la conexión). Por lo tanto, para estas reglas mangle, necesitamos identificar el tráfico WAN público entrante y guardar el procesamiento de la CPU, marcar la conexión con 1 ethereum a php una ‘marca de conexión’ solo si no ha sido marcada (la marca de conexión ‘no- mark ‘es un nombre reservado y significa que aún no se ha aplicado una marca de conexión). :

Una vez que tenemos las nuevas conexiones entrantes marcadas con una marca de conexión de WAN1 o WAN2 según corresponda, ahora debemos asegurarnos de que las conexiones salientes volverán a salir de la misma manera. Hacemos esto dando a todas esas conexiones salientes una marca de enrutamiento y serán esas diferentes marcas de enrutamiento las que forzarán al tráfico a usar las diferentes tablas de enrutamiento, una por interfaz WAN.

Ahora debemos realizar la “magia” de PCC que dividirá las conexiones internas por igual entre todas las líneas WAN. Aquí, las siguientes reglas toman el tráfico de LAN interno que es saliente y dividirá las conexiones de tráfico de dos maneras. Cada combinación única de dirección de destino y dirección de origen recibirá una marca de conexión diferente (y www ethiomedia, a su vez, saldrá de una conexión WAN diferente). Hay varios métodos diferentes de PCC para determinar cómo dividir las conexiones. Uno de los más populares es “destino IP y puerto”. Sin embargo, si lo hace, un dispositivo cliente puede abrir muchos hilos de conexiones a un servidor remoto y cada uno saldrá de una conexión WAN saliente diferente. Con las conexiones a sitios web basados ​​en SSL HTTPS, como los sitios bancarios, esto puede llevar a problemas importantes. Vamos a utilizar simplemente la dirección de destino y la fuente para dividir las conexiones entre las dos líneas como nuestro único indicador de que estas son conexiones que podemos detectar y que deben ser empujadas hacia arriba por las múltiples y diferentes líneas WAN. Una vez más, utilizamos la prueba de marca de conexión “sin marca” ya que una vez que se ha marcado la conexión, no hay necesidad de hacerlo nuevamente y esto ahorra energía de la CPU. Solo podemos aplicar marcas de enrutamiento en las cadenas de salida y pre-enrutamiento. Como necesitamos identificar el tráfico que está reenviando el enrutador, no el tráfico destinado a él y la cadena de salida es solo para el tráfico que ha sido generado por el enrutador, la cadena de pre-enrutamiento es la única adecuada. Sin embargo, la cadena de pre-enrutamiento en realidad contiene dos tipos de tráfico, el tráfico reenviado (que queremos capturar) y el tráfico destinado al enrutador (que no queremos capturar para marcar).

Por lo tanto, para marcar solo el tráfico reenviado saliente, podemos usar una regla que pruebe que el “tipo de dirección dst NO sea local”. ES DECIR. Que el tráfico no está destinado a una dirección de red que está en el enrutador. Tenga en cuenta también que la regla de manipulación de PCC establece ‘: 2/0’ o ‘: 2/1’. Esto equivale a “dividir los ejemplos de ética y moral de las conexiones de tráfico entre dos” y eso lo dejará sin resto (la parte “/ 0”) o con 1 como resto (la parte “/ 1”). De esta manera, la regla PCC divide el tráfico en dos conjuntos únicos de conexiones. Si dividiera el tráfico de tres maneras, las 3 reglas tendrían “3/0”, “3/1” y “3/2” en ellas. ES DECIR. 3 dividido entre 3 es uno, resto cero (el ‘3/0’), 2 dividido entre 3 es cero con un resto de dos (el ‘3/2’) y 1 dividido entre 3 es nuevamente cero, pero con un resto de uno (el ‘3/1’).

De forma predeterminada, ‘passthrough = yes’ está habilitado en reglas de gestión como las anteriores. Ahora que hemos marcado la división bidireccional de las conexiones, ahora debemos adjuntar una marca de enrutamiento a esas dos conexiones para que podamos dirigir cada conexión a dos tablas de preguntas y respuestas de macbeth act 1 escena 2 de enrutamiento diferentes en lugar de las habituales ‘tabla de enrutamiento (todavía tenemos que crear dos nuevas tablas de enrutamiento llamadas WAN1 y WAN2 que usarán estas marcas de enrutamiento):

Sin embargo, el tráfico generado por el propio enrutador no tendrá ninguna marca de enrutamiento y, además, los cálculos del ‘próximo salto’ solo son posibles mediante la tabla de enrutamiento ‘principal’, por lo que todavía necesitaremos entradas de la tabla de enrutamiento ‘normales’ para las rutas predeterminadas que salen. Las múltiples conexiones WAN. Necesitamos dos en este caso. Les aplicamos diferentes distancias para que si hay una falla en la línea WAN, el tráfico saldrá de la segunda línea.

Si las puertas de enlace de la tabla de enrutamiento son direcciones IP remotas, en lugar de interfaces pppoe dinámicas como en el ejemplo anterior, asegúrese de agregar también ‘check-gateway = ping’ a cada una de esas rutas para asegurarse de que la tabla de enrutamiento principal pueda calcular el estado del compre la puerta de enlace y cambie la tabla de enrutamiento para que salga de la otra interfaz correctamente en caso de que se caiga una puerta de enlace.

Una vez que se aplican todas las reglas anteriores, debe comenzar a ver que el tráfico se distribuye de manera muy general en las múltiples líneas. Recuerde que como el tráfico se basa en conexiones, en lugar de paquetes sin procesar, el tráfico nunca será completamente parejo. La conexión de cualquier cliente puede tener una alta demanda de tráfico y se verá que aumenta solo la conexión física de una WAN a una cifra de rendimiento mayor en comparación con la otra. Esto es normal y es de esperar. Cuantas más conexiones de clientes se realicen y más líneas WAN se agreguen al conjunto de “balanceo de carga”, se eliminarán estas “irregularidades” a lo largo del tiempo. Además, si una línea tiene una velocidad diferente a otra, cualquier conexión compuesta por un enlace WAN más lento hará que el cliente tenga una experiencia más lenta. Recuerde, esto no es un ‘enlace de línea’ sino un ‘balanceo de carga’. Si es posible, intente unir tipos y velocidades similares de líneas WAN, pero afortunadamente con PCC no es esencial. El siguiente ejemplo muestra cómo la mejor LAN interna para el tratamiento del combustible con etanol está conectada a ether1 y las conexiones WAN en sentido ascendente son pppoe-ou1 y pppoe-out2. La red interna está cargando aproximadamente 838k desde varias conexiones de clientes y la carga está aproximadamente equilibrada en las dos líneas, 401k y 426k cada una:

banner